{"version":3,"sources":["webpack:///./commons/config/strings/localisable.js","webpack:///./commons/components/generic/componentlibrary/components/Components.js","webpack:///./commons/config/constants/Constants.js","webpack:///./commons/components/generic/typography/components/Typography.js","webpack:///./commons/helpers/utils/Formatter.js","webpack:///./commons/theme/MediaQueries.js","webpack:///./commons/helpers/utils/clsx.js","webpack:///./commons/helpers/utils/DataHelpers.js","webpack:///./commons/config/constants/Endpoints.js","webpack:///./commons/helpers/utils/Utils.js","webpack:///./commons/components/generic/icon/components/Icon.js","webpack:///./commons/components/business/bev/config/Enums.js","webpack:///./commons/components/business/bev/config/Constants.js","webpack:///./commons/components/generic/button/components/Button.js","webpack:///./commons/config/constants/StoreKeyStatus.js","webpack:///./commons/redux/postProcessor/BaseProcessor.js","webpack:///./commons/components/generic/textfield/components/TextField.js","webpack:///./commons/components/business/payment/config/Constants.js","webpack:///./commons/helpers/utils/DateTime.js","webpack:///./commons/components/generic/form/config/Enums.js","webpack:///./commons/components/generic/form/config/FormComponentsConfig.js","webpack:///./commons/helpers/hooks/useConstructor.js","webpack:///./commons/config/constants/GridSpacingConstants.js","webpack:///./commons/config/constants/Enums.js","webpack:///./commons/components/business/sortableComponent/utils.js","webpack:///./commons/components/generic/checkboxgroup/components/CheckBoxGroup.js","webpack:///./commons/config/constants/Urls.js","webpack:///./commons/helpers/utils/UrlBuilder.js","webpack:///./commons/config/constants/ScreenWidths.js","webpack:///./commons/config/constants/Validators.js","webpack:///./commons/config/constants/RequestTypes.js","webpack:///./commons/theme/styles/HexOpacity.js","webpack:///./commons/theme/Theme.js","webpack:///./commons/redux/helper/RelationalDataMap.js","webpack:///./commons/components/business/bev/config/Config.js","webpack:///./commons/components/generic/dropdown/components/Dropdown.js","webpack:///./commons/helpers/utils/DeepCopy.js","webpack:///./commons/components/generic/labelwithicon/components/LabelWithIcon.js","webpack:///./commons/components/generic/tooltip/components/Tooltip.js","webpack:///./commons/theme/ColorPalette.js","webpack:///./commons/components/generic/checkbox/components/CheckBox.js","webpack:///./commons/helpers/utils/NameHelper.js","webpack:///./commons/helpers/utils/SDFormatter.js","webpack:///./commons/components/generic/snackbar/config/Enums.js","webpack:///./commons/components/generic/snackbar/config/Constants.js","webpack:///./commons/components/business/bev/utils/Utils.js","webpack:///./commons/helpers/utils/Memoize.js","webpack:///./commons/components/business/filtersAndSorts/components/rangeFilter/components/RangeFilter.js","webpack:///./commons/components/generic/datepicker/components/DatePicker.js","webpack:///./commons/helpers/utils/Round.js","webpack:///./commons/components/generic/deliveryMethodDropdown/config/Constants.js","webpack:///./commons/components/generic/alertdialog/components/AlertDialog.js","webpack:///./commons/components/generic/multiselect/components/MultiSelect.js","webpack:///./commons/components/generic/link/components/Link.js","webpack:///./commons/components/business/user/form/config/RoleSelectionConfig.js","webpack:///./commons/components/business/user/form/config/Enums.js","webpack:///./commons/components/business/user/form/config/Constants.js","webpack:///./commons/components/business/user/config/Constants.js","webpack:///./commons/components/business/smartlist/config/Constants.js","webpack:///./commons/components/generic/treeview/config/Constants.js","webpack:///./commons/redux/config/CookieKey.js","webpack:///./commons/redux/helper/CookieManager.js","webpack:///./commons/components/generic/form/components/Form.js","webpack:///./commons/components/generic/threedotprogress/components/ThreeDotProgress.js","webpack:///./commons/helpers/api/Formatter.js","webpack:///./commons/components/business/payment/config/PermissionKeys.js","webpack:///./commons/components/business/page/components/Page.js","webpack:///./commons/redux/error/ErrorHandler.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/config/Constants.js","webpack:///./commons/components/business/payment/config/ApiRequests.js","webpack:///./commons/components/generic/modal/components/Modal.js","webpack:///./commons/components/generic/chip/components/Chip.js","webpack:///./commons/components/generic/table/components/Constants.js","webpack:///./commons/components/business/bev/config/ApiRequests.js","webpack:///./commons/components/business/baseUserRole/config/RolePermissionsConfig.js","webpack:///./commons/components/business/smartlist/components/SmartList.js","webpack:///./commons/config/CommonPasswords.js","webpack:///./commons/helpers/utils/validator/CardNumberValidator.js","webpack:///./commons/helpers/utils/validator/Validator.js","webpack:///./commons/helpers/api/Queue.js","webpack:///./commons/components/business/appliedFilterContainer/config/Constants.js","webpack:///./commons/components/generic/dropdown/components/SearchableDropdown.js","webpack:///./commons/components/business/baseform/components/BaseForm.js","webpack:///./commons/helpers/hooks/useDidUpdateEffect.js","webpack:///./commons/components/business/filtersAndSorts/components/leadFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/leadFilter/config/Constants.js","webpack:///./commons/components/business/filterOverlay/components/configs/FilterStages.js","webpack:///./commons/helpers/utils/PermissionChecker.js","webpack:///./commons/components/generic/labelwithaddons/components/LabelWithAddons.js","webpack:///./commons/redux/config/StoreKey.js","webpack:///./commons/components/business/filtersAndSorts/components/unitFilter/config/Constants.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/components/BevFormFieldWrapper.js","webpack:///./commons/components/generic/treeview/components/FormTreeView.js","webpack:///./commons/components/business/user/form/config/ApiRequests.js","webpack:///./commons/components/business/baseUserRole/config/PermissionNameLists.js","webpack:///./commons/components/business/footer/components/Footer.js","webpack:///./commons/helpers/utils/AmountHelper.js","webpack:///./commons/components/business/basecomponent/components/BaseComponent.js","webpack:///./commons/components/business/basecomponent/config/Constants.js","webpack:///./commons/components/generic/radiogroup/components/RadioGroup.js","webpack:///./commons/components/business/filterOverlay/components/configs/FilterConfigs.js","webpack:///./commons/components/generic/tabs/config/Constants.js","webpack:///./commons/components/business/formatters/utils/Helper.js","webpack:///./commons/components/generic/snackbar/components/Snackbar.js","webpack:///./commons/components/generic/dropdown/config/Constants.js","webpack:///./commons/helpers/utils/generateUUID.js","webpack:///./commons/helpers/utils/RouteHelpers.js","webpack:///./commons/components/business/payment/utils/BalanceCalculator.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/styles/BevLeftSidebarStyles.js","webpack:///./commons/components/generic/generalPages/config/Config.js","webpack:///./commons/components/business/filtersAndSorts/components/tenantFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/waitingListFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/waitingListFilter/config/Constants.js","webpack:///./commons/components/generic/generalPages/components/GeneralPages.js","webpack:///./commons/components/business/payment/utils/CheckAmount.js","webpack:///./commons/components/business/formcomponents/contact/config/Constants.js","webpack:///./commons/helpers/utils/TextWidthCalculator.js","webpack:///./commons/components/business/autosuggest/components/HighlightSelectedText.js","webpack:///./commons/components/generic/protectedroute/component/ProtectedRoute.js","webpack:///./commons/components/generic/buttontext/components/ButtonText.js","webpack:///./commons/components/generic/tooltip/config/Constants.js","webpack:///./commons/components/business/person/name/components/Name.js","webpack:///./commons/components/business/filterOverlay/components/FilterComponent.js","webpack:///./commons/components/business/provider/useRouter.js","webpack:///./commons/components/business/payment/styles/PaymentMethodStyle.js","webpack:///./commons/helpers/utils/SmartListDataHelper.js","webpack:///./commons/components/business/phoneNumber/config/Constants.js","webpack:///./commons/components/business/insurance/config/ApiRequests.js","webpack:///./commons/components/generic/sectionscroller/config/Constants.js","webpack:///./commons/components/business/smartlistwithform/utils/Utils.js","webpack:///./commons/components/generic/formitem/components/FormItem.js","webpack:///./commons/components/generic/card/components/Card.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLockoutEventsFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLockoutEventsFilter/config/Enums.js","webpack:///./commons/components/business/socket/WebSocket.js","webpack:///./commons/components/business/filtersAndSorts/components/createBatchFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/createBatchFilter/config/Constants.js","webpack:///./commons/helpers/utils/StringHelpers.js","webpack:///./commons/components/business/report/utils/Utils.js","webpack:///./commons/helpers/utils/Phone.js","webpack:///./commons/config/constants/ErrorTracking.js","webpack:///./commons/components/generic/errorboundaries/components/ErrorBoundaries.js","webpack:///./commons/redux/postProcessor/allProcessors.js","webpack:///./commons/helpers/EventEmitters.js","webpack:///./commons/components/generic/popdown/components/Popdown.js","webpack:///./commons/theme/ArrowTheme.js","webpack:///./commons/components/business/userProfile/styles/UserProfileStyles.js","webpack:///./commons/components/business/phoneNumber/config/CountryData.js","webpack:///./commons/components/business/cards/tenantlead/config/Constants.js","webpack:///./commons/components/generic/tablerowcount/TableRowCount.js","webpack:///./commons/components/business/filtersAndSorts/components/conversationListFilter/config/Constants.js","webpack:///./commons/components/business/summaryTable/components/SummaryFormatter.js","webpack:///./commons/helpers/utils/CalendarHelper.js","webpack:///./commons/helpers/api/Config.js","webpack:///./commons/helpers/api/FetchWithTimeout.js","webpack:///./commons/helpers/api/Fetcher.js","webpack:///./commons/redux/helper/Store.js","webpack:///./commons/components/business/filterOverlay/components/SectionLoaders.js","webpack:///./commons/components/business/cards/occupancy/config/Constants.js","webpack:///./commons/components/business/cards/occupancy/config/Utils.js","webpack:///./commons/components/business/page/config/Constants.js","webpack:///./commons/components/business/autosuggest/components/AutoSuggest.js","webpack:///./commons/redux/config/Constants.js","webpack:///./commons/redux/config/enums.js","webpack:///./commons/components/business/dashboard/config/ApiRequests.js","webpack:///./commons/components/business/formcomponents/Label/components/Label.js","webpack:///./commons/components/business/fileUpload/config/Constants.js","webpack:///./commons/components/business/sortableComponent/SortableHandle/index.js","webpack:///./commons/components/business/basecomponent/config/Utils.js","webpack:///./commons/components/business/page/config/PageProps.js","webpack:///./commons/components/business/filtersAndSorts/config/SortConfig.js","webpack:///./commons/components/business/smartlist/config/SmartListProps.js","webpack:///./commons/components/business/payment/utils/DataHandler.js","webpack:///./commons/components/business/user/form/styles/RoleSelectionStyle.js","webpack:///./commons/components/business/dashboard/config/EventListeners.js","webpack:///./commons/components/generic/table/components/Renderers.js","webpack:///./commons/components/business/sidebar/utils/ListItemsUtil.js","webpack:///./commons/components/business/sortableComponent/SortableContainer/props.js","webpack:///./commons/components/business/sortableComponent/SortableContainer/defaultGetHelperDimensions.js","webpack:///./commons/components/business/sortableComponent/SortableContainer/defaultShouldCancelStart.js","webpack:///./commons/components/business/formatters/components/FormatterHOC.js","webpack:///./commons/components/business/actions/components/Actions.js","webpack:///./commons/components/generic/tabs/components/Tabs.js","webpack:///./commons/components/generic/transition/components/Transition.js","webpack:///./commons/components/generic/table/components/Table.js","webpack:///./commons/components/generic/InheritedConfigLabel/components/InheritedConfigLabel.js","webpack:///./commons/contexts/PermissionContext.js","webpack:///./commons/components/generic/pageloader/components/Loader.js","webpack:///./commons/components/business/formatters/components/Formatters.js","webpack:///./commons/helpers/utils/Cryptography.js","webpack:///./commons/components/generic/helpertext/HelperText.js","webpack:///./commons/components/business/user/list/style/UserListFormatterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/reservationFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/reservationFilter/config/Constants.js","webpack:///./commons/redux/config/Config.js","webpack:///./commons/components/business/chips/component/CardChip.js","webpack:///./commons/contexts/HostedFormContext.js","webpack:///./commons/components/business/baseUserRole/styles/BaseUserRoleStyle.js","webpack:///./commons/components/business/timezone/utils/TimezoneHelpers.js","webpack:///./commons/contexts/RouterContext.js","webpack:///./commons/components/generic/dropdown/styles/DropdownStyle.js","webpack:///./commons/contexts/SideBarContext.js","webpack:///./commons/contexts/WSUpdatePropsContext.js","webpack:///./commons/components/business/autosuggest/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/unitFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/creditCardBatchesFilter/styles/CreditCardBatchesFilterStyle.js","webpack:///./commons/components/business/appliedFilterContainer/component/AppliedFilterContainer.js","webpack:///./commons/components/business/payment/styles/SyrapayHostedFormStyle.js","webpack:///./commons/components/business/sidebar/styles/ListItemsStyle.js","webpack:///./commons/components/business/bev/components/common/styles/InfoCardStyles.js","webpack:///./commons/components/business/bev/components/setup/levelManagement/styles/LevelManagementStyles.js","webpack:///./commons/components/business/bev/styles/BevStyles.js","webpack:///./commons/components/generic/treeview/styles/TreeViewStyle.js","webpack:///./commons/components/generic/logo/components/ImageList.js","webpack:///./commons/components/business/filtersAndSorts/utils/utils.js","webpack:///./commons/components/generic/table/components/Utils.js","webpack:///./commons/components/business/report/config/Constants.js","webpack:///./commons/components/business/phoneNumber/components/Item.js","webpack:///./commons/components/business/summaryTable/styles/SummaryFormatterStyle.js","webpack:///./commons/components/business/summaryTable/config/Constants.js","webpack:///./commons/components/business/userProfile/config/ApiRequests.js","webpack:///./commons/components/business/smartlistwithform/config/Constants.js","webpack:///./commons/components/generic/deliveryMethodDropdown/components/DeliveryMethodDropdown.js","webpack:///./commons/components/generic/table/index.js","webpack:///./commons/components/generic/radio/components/Radio.js","webpack:///./commons/components/business/sidebar/utils/Helper.js","webpack:///./commons/components/generic/logo/components/CompanyLogo.js","webpack:///./commons/components/business/user/list/config/Constants.js","webpack:///./commons/components/business/cards/tenantlead/components/TenantLeadCard.js","webpack:///./commons/components/generic/deliveryMethodDropdown/config/ApiRequests.js","webpack:///./commons/theme/Constants.js","webpack:///./commons/components/business/baseform/config/AlertMessage.js","webpack:///./commons/components/generic/stepper/config/Constants.js","webpack:///./commons/components/business/provider/hoc.js","webpack:///./commons/components/business/smartlistActionItemsPanel/components/ActionItem.js","webpack:///./commons/components/generic/secondscountdowntimer/config/Constants.js","webpack:///./commons/components/business/payment/utils/SubmitPreProcessors.js","webpack:///./commons/components/business/payment/utils/ErrorAction.js","webpack:///./commons/components/business/insurance/components/InsuranceBody.js","webpack:///./commons/helpers/Memoize.js","webpack:///./commons/components/generic/colorPicker/config/Constants.js","webpack:///./commons/components/business/smartlistwithform/config/SmartListWithFormProps.js","webpack:///./commons/components/business/section/components/Section.js","webpack:///./commons/components/business/comments/components/Comments.js","webpack:///./commons/components/business/payment/Payment.js","webpack:///./commons/components/business/provider/WithRouterHoc.js","webpack:///./commons/contexts/TenantFormContext.js","webpack:///./commons/components/business/phoneNumber/components/PhoneNumberField.js","webpack:///./commons/contexts/WSChangeGroupContext.js","webpack:///./commons/components/generic/deliveryMethodDropdown/components/DocumentFetcher.js","webpack:///./commons/components/business/formcomponents/contact/styles/ContactStyle.js","webpack:///./commons/components/business/Papers/components/TablePaper.js","webpack:///./commons/helpers/utils/PrinterHelper.js","webpack:///./commons/helpers/FieldsCache.js","webpack:///./commons/helpers/utils/FormDataHelper.js","webpack:///./commons/components/business/formatters/config/Constants.js","webpack:///./commons/components/business/tenantAlertDialog/components/TenantAlertDialog.js","webpack:///./commons/components/generic/usertypeaccessible/components/StandardUserAccessible.js","webpack:///./commons/components/business/report/config/Api.js","webpack:///./commons/helpers/utils/RandomNumberGenerator.js","webpack:///./commons/helpers/utils/ApiBuildVersionManager.js","webpack:///./commons/helpers/deviceFingerprint.js","webpack:///./commons/assets/images/SyrasoftConnectMini.svg","webpack:///./commons/assets/images/SyrasoftConnectTaglineWhite.svg","webpack:///./commons/assets/images/SyrasoftConnectTaglineBlack.svg","webpack:///./commons/helpers/utils/VerifyUser.js","webpack:///./commons/contexts/StandaloneAppDownloadContext.js","webpack:///./commons/components/business/filtersAndSorts/FiltersAndSorts.js","webpack:///./commons/components/business/filtersAndSorts/components/configurationFilter/components/ConfigurationFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/inventoryListFilter/components/InventoryListFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/maintenanceEventFilter/components/MaintenanceEventFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/reservationFilter/components/ReservationFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/waitingListFilter/components/WaitingListFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/tenantFilter/components/TenantFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/unitFilter/components/UnitFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/userFilter/components/UserFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/vendorFilter/components/VendorFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyFilter/components/DelinquencyFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/leadFilter/components/LeadFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/pendingOverlockUnlock/components/PendingOverlockUnlockFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/pendingOverlockUnlock/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/conversationListFilter/components/ConversationListFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/allAchBatchesFilter/components/AllAchBatchesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/rentAdjustmentFilter/components/RentAdjustmentFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/automaticCreditCardDeclines/components/AutomaticCreditCardDeclinesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/automaticCreditCardDeclines/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/rentassessmenthistoryfilter/components/RentAssessmentHistoryFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/rentAdjustmentSummaryFilter/components/RentAdjustmentSummaryFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/components/SavedDocumentsListFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/migrationFilter/components/MigrationStagesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/vehicleFilter/components/VehicleFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/emailAuditFilter/components/EmailAuditFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/ledgerReviewFilter/components/LedgerReviewFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/facilityfilter/components/facilityfilter.js","webpack:///./commons/components/business/filtersAndSorts/components/creditCardBatchesFilter/components/CreditCardBatchesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/createBatchFilter/components/CreateBatchFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentFilter/components/SavedDocumentFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingOverviewFilter/components/DelinquencyTrackingOverviewFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingLateEventFilter/components/DelinquencyTrackingLateEventFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingLockoutEventFilter/components/DelinquencyTrackingLockoutEventFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingSchedulerFilter/components/DelinquencyTrackingSchedulerFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingWrongEntriesFilter/components/DelinquencyTrackingWrongEntriesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/journalConfigurationChangesFilter/components/JournalConfigurationChangesFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLockoutEventsFilter/components/JournalLockoutEventFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserRoleFilter/components/JournalUserRoleFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserManagementFilter/components/JournalUserManagementFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLateEventFilter/components/JournalLateEventFilter.js","webpack:///./commons/components/business/filtersAndSorts/components/otherBatchesFilter/components/OtherBatchesFilter.js","webpack:///./commons/components/business/smartlistActionItemsPanel/components/SmartListActionItemsPanel.js","webpack:///./commons/components/business/payment/components/CreditCard.js","webpack:///./commons/components/business/payment/components/ACH.js","webpack:///./commons/components/business/payment/components/SyrapayHostedForm.js","webpack:///./commons/components/business/report/components/ViewReport.js","webpack:///./commons/components/business/expansionPanel/components/ExpansionPanel.js","webpack:///./commons/components/business/sidebar/components/Copyright.js","webpack:///./commons/components/business/deleteOverlay/components/DeleteOverlay.js","webpack:///./commons/components/business/filterOverlay/components/FilterOverlay.js","webpack:///./commons/components/business/sortableComponent/SortableContainer/index.js","webpack:///./commons/components/business/filtersAndSorts/components/migrationFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/migrationFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/maintenanceEventFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/maintenanceEventFilter/config/Constants.js","webpack:///./commons/components/generic/link/styles/LinkStyle.js","webpack:///./commons/components/generic/labelwithicon/styles/LabelWithIconStyle.js","webpack:///./commons/components/generic/typography/styles/TypographyStyle.js","webpack:///./commons/components/generic/generalPages/styles/GeneralPagesStyles.js","webpack:///./commons/assets/images/NotFound.svg","webpack:///./commons/assets/images/ServerError.svg","webpack:///./commons/assets/images/UnderMaintenance.svg","webpack:///./commons/assets/images/Unauthorised.svg","webpack:///./commons/helpers/utils/md5.js","webpack:///./commons/components/generic/errorboundaries/styles/ErrorBoundariesStyle.js","webpack:///./commons/redux/reducers/reducers.js","webpack:///./commons/components/generic/pageloader/styles/LoaderStyle.js","webpack:///./commons/helpers/Loaders.js","webpack:///./commons/components/generic/icon/styles/IconStyle.js","webpack:///./commons/components/generic/labelwithaddons/styles/LabelWithAddonsStyle.js","webpack:///./commons/theme/styles/BaseStyle.js","webpack:///./commons/components/generic/transition/styles/TransitionStyle.js","webpack:///./commons/components/generic/buttontext/styles/ButtonTextStyles.js","webpack:///./commons/components/generic/button/styles/ButtonStyle.js","webpack:///./commons/components/generic/form/styles/FormStyle.js","webpack:///./commons/components/generic/form/utils/utils.js","webpack:///./commons/components/generic/textfield/styles/TextFieldStyle.js","webpack:///./commons/components/generic/alertdialog/styles/AlertDialogStyle.js","webpack:///./commons/components/generic/checkbox/styles/CheckBoxStyle.js","webpack:///./commons/components/generic/popdown/styles/PopdownStyle.js","webpack:///./commons/components/generic/tooltip/styles/TooltipStyle.js","webpack:///./commons/components/generic/snackbar/components/SnackMessage.js","webpack:///./commons/components/generic/snackbar/styles/SnackbarStyles.js","webpack:///./commons/components/business/dashboard/styles/DashboardStyle.js","webpack:///./commons/components/business/dashboard/LegalAgreement.js","webpack:///./commons/components/generic/chip/style/ChipStyle.js","webpack:///./commons/components/generic/chip/config/ChipColorMapping.js","webpack:///./commons/components/generic/menu/styles/MenuStyle.js","webpack:///./commons/components/business/autosuggest/styles/AutoSuggestStyle.js","webpack:///./commons/components/business/autosuggest/styles/HighlightSelectedTextStyle.js","webpack:///./commons/components/generic/card/styles/CardStyle.js","webpack:///./commons/components/business/cards/tenantlead/styles/TenantLeadCardStyle.js","webpack:///./commons/components/business/chips/styles/CardChipStyle.js","webpack:///./commons/components/business/cards/occupancy/components/OccupancyCard.js","webpack:///./commons/components/business/cards/occupancy/styles/OccupanyCardStyles.js","webpack:///./commons/components/business/cards/unit/components/UnitCard.js","webpack:///./commons/components/business/cards/unit/styles/unitCardStyles.js","webpack:///./commons/components/generic/threedotprogress/styles/ThreeDotProgressStyle.js","webpack:///./commons/components/business/footer/styles/FooterStyle.js","webpack:///./commons/components/generic/modal/styles/ModalStyle.js","webpack:///./commons/components/generic/breadcrumb/components/BreadCrumb.js","webpack:///./commons/components/generic/breadcrumb/styles/BreadCrumbStyle.js","webpack:///./commons/components/business/page/styles/PageStyle.js","webpack:///./commons/components/generic/tablerowcount/styles/TableRowCountStyle.js","webpack:///./commons/components/business/filtersAndSorts/styles/FiltersAndSortsStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/index.js","webpack:///./commons/components/generic/checkboxgroup/styles/CheckboxGroupStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/configurationFilter/styles/ConfigurationFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/inventoryListFilter/styles/InventoryListFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/maintenanceEventFilter/styles/MaintenanceEventFilterStyle.js","webpack:///./commons/components/generic/dropdown/config/ActionConfig.js","webpack:///./commons/components/generic/multiselect/styles/MultiSelectStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/reservationFilter/styles/ReservationFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/reservationFilter/config/ApiRequests.js","webpack:///./commons/components/generic/datepicker/styles/DatePickerStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/rangeFilter/styles/RangeFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/rangeFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/waitingListFilter/styles/WaitingListFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/waitingListFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/tenantFilter/styles/TenantFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/unitFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/unitFilter/styles/UnitFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/userFilter/styles/UserFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/vendorFilter/styles/VendorFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyFilter/styles/DelinquencyFilterStyles.js","webpack:///./commons/components/business/filtersAndSorts/components/leadFilter/styles/LeadFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/pendingOverlockUnlock/styles/PendingOverlockUnlockFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/conversationListFilter/styles/ConversationListFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/allAchBatchesFilter/styles/AllAchBatchesFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/rentAdjustmentFilter/styles/RentAdjustmentFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/automaticCreditCardDeclines/styles/AutomaticCreditCardDeclinesFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/rentAdjustmentSummaryFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/rentAdjustmentSummaryFilter/styles/RentAdjustmentSummaryFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/styles/SavedDocumentsListFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/migrationFilter/styles/MigrationStagesStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/vehicleFilter/styles/VehicleFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/ledgerReviewFilter/styles/LedgerReviewFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/facilityfilter/styles/facilityFilterStyle.js","webpack:///./commons/components/generic/radiogroup/styles/RadioGroupStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/createBatchFilter/styles/createBatchStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingOverviewFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingOverviewFilter/styles/delinquencyTrackingOverviewFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingLateEventFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingLateEventFilter/styles/DelinquencyTrackingLateEventFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingLockoutEventFilter/styles/DelinquencyTrackingLockoutEventFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingSchedulerFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingSchedulerFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingSchedulerFilter/styles/DelinquencyTrackingSchedulerFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/delinquencyTrackingWrongEntriesFilter/styles/DelinquencyTrackingWrongEntriesFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/journalConfigurationChangesFilter/styles/journalConfigurationChangesFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLockoutEventsFilter/styles/JournalLockoutEventFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLockoutEventsFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserRoleFilter/styles/JournalUserRoleFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserRoleFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserManagementFilter/styles/JournalUserManagementFilterStyle.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserManagementFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLateEventFilter/config/ApiRequests.js","webpack:///./commons/components/business/filtersAndSorts/components/journalLateEventFilter/styles/JournalLateEventFilterStyle.js","webpack:///./commons/components/business/smartlistActionItemsPanel/styles/SmartListActionItemsPanelStyle.js","webpack:///./commons/components/business/smartlistActionItemsPanel/styles/ActionItemStyle.js","webpack:///./commons/components/generic/table/components/HeaderOrFooterCell.js","webpack:///./commons/components/generic/table/styles/TableStyle.js","webpack:///./commons/components/business/Papers/styles/TablePaperStyle.js","webpack:///./commons/components/generic/filterchip/components/FilterChip.js","webpack:///./commons/components/generic/filterchip/style/FilterChipStyle.js","webpack:///./commons/components/business/appliedFilterContainer/styles/AppliedFilterContainerStyle.js","webpack:///./commons/components/business/quickfilters/components/QuickFilters.js","webpack:///./commons/components/business/quickfilters/styles/QuickFilterStyle.js","webpack:///./commons/components/business/smartlist/config/ActionConfig.js","webpack:///./commons/components/business/smartlist/utils/utils.js","webpack:///./commons/components/business/formatters/styles/FormattersStyles.js","webpack:///./commons/components/business/actions/styles/ActionsStyle.js","webpack:///./commons/assets/images/PrinterUnavailable.svg","webpack:///./commons/assets/images/PrinterAvailable.svg","webpack:///./commons/assets/images/PrinterAvailableWhite.svg","webpack:///./commons/assets/images/PrinterUnavailableWhite.svg","webpack:///./commons/components/generic/InheritedConfigLabel/styles/InheritedConfigLabelStyle.js","webpack:///./commons/components/generic/deliveryMethodDropdown/styles/DeliveryMethodDropdownStyles.js","webpack:///./commons/components/generic/deliveryMethodDropdown/styles/DocumentFetcherStyles.js","webpack:///./commons/components/business/payment/utils/Footer.js","webpack:///./commons/components/business/payment/components/BillAhead.js","webpack:///./commons/components/generic/radio/styles/RadioStyle.js","webpack:///./commons/components/business/payment/styles/BillAheadStyle.js","webpack:///./commons/components/business/payment/config/BillAheadColumns.js","webpack:///./commons/components/business/payment/config/Formatters.js","webpack:///./commons/components/generic/switch/styles/SwitchStyle.js","webpack:///./commons/components/generic/formitem/styles/FormItemStyle.js","webpack:///./commons/components/business/payment/styles/PaymentStyle.js","webpack:///./commons/components/business/payment/components/TenantInformation.js","webpack:///./commons/components/business/payment/styles/TenantInformationStyle.js","webpack:///./commons/components/business/payment/components/PaymentType.js","webpack:///./commons/components/business/tenantAlertDialog/styles/TenantAlertDialogStyles.js","webpack:///./commons/components/generic/secondscountdowntimer/SecondsCountdownTimer.js","webpack:///./commons/components/business/payment/styles/PaymentTypeStyle.js","webpack:///./commons/components/business/payment/components/Check.js","webpack:///./commons/components/business/payment/components/MoneyOrder.js","webpack:///./commons/components/business/payment/components/PaymentInformation.js","webpack:///./commons/components/business/payment/styles/PaymentInformationStyle.js","webpack:///./commons/components/business/payment/components/Header.js","webpack:///./commons/components/business/payment/styles/HeaderStyle.js","webpack:///./commons/components/business/payment/config/HeaderConfig.js","webpack:///./commons/components/business/payment/components/PromoPlan.js","webpack:///./commons/components/business/payment/styles/PromoPlanStyle.js","webpack:///./commons/components/business/section/styles/SectionStyle.js","webpack:///./commons/components/business/formcomponents/address/config/ApiRequests.js","webpack:///./commons/components/business/formcomponents/address/styles/AddressStyles.js","webpack:///./commons/components/business/formcomponents/Label/styles/LabelStyle.js","webpack:///./commons/components/business/timezone/config/ApiRequests.js","webpack:///./commons/components/business/confirmationAlert/styles/ConfirmationAlertStyles.js","webpack:///./commons/components/generic/tabs/styles/TabStyle.js","webpack:///./commons/components/business/triangle/config/Enums.js","webpack:///./commons/components/business/triangle/styles/TriangleStyle.js","webpack:///./commons/components/business/report/styles/ReportStyle.js","webpack:///./commons/components/business/expansionPanel/styles/ExpansionPanelStyle.js","webpack:///./commons/components/business/insurance/styles/InsuranceStyle.js","webpack:///./commons/components/business/accesscode/styles/AccessCodeFieldStyle.js","webpack:///./commons/components/business/sidebar/components/ListItems.js","webpack:///./commons/components/business/sidebar/styles/SideBarStyle.js","webpack:///./commons/components/business/phoneNumber/styles/PhoneNumberStyles.js","webpack:///./commons/components/business/formcomponents/name/styles/NameStyles.js","webpack:///./commons/components/business/formcomponents/contact/components/Phone.js","webpack:///./commons/components/business/deleteOverlay/styles/DeleteOverlayStyle.js","webpack:///./commons/components/business/fileUpload/styles/DragAndDropStyles.js","webpack:///./commons/components/business/fileUpload/styles/UploadStatusStyles.js","webpack:///./commons/components/business/section/styles/OnDemandStyle.js","webpack:///./commons/components/generic/form/styles/FormikFormWrapperStyle.js","webpack:///./commons/components/business/summaryTable/styles/SummaryTableStyle.js","webpack:///./commons/components/business/summaryTable/components/SummaryTableConfig.js","webpack:///./commons/components/business/user/form/utils/Helpers.js","webpack:///./commons/components/business/user/form/components/Header.js","webpack:///./commons/components/business/user/form/styles/HeaderStyle.js","webpack:///./commons/components/business/user/form/components/BasicInformation.js","webpack:///./commons/components/business/user/form/styles/BasicInformationStyle.js","webpack:///./commons/components/business/user/form/components/Preview.js","webpack:///./commons/components/generic/listrenderer/components/ListRenderer.js","webpack:///./commons/components/generic/listrenderer/style/ListRendererStyle.js","webpack:///./commons/components/business/user/form/styles/PreviewStyle.js","webpack:///./commons/components/business/user/form/components/RoleSelection.js","webpack:///./commons/components/business/user/form/styles/UserFormStyle.js","webpack:///./commons/components/business/user/form/utils/previewDataPreProcessor.js","webpack:///./commons/components/business/overlay/components/Overlay.js","webpack:///./commons/components/business/overlay/styles/OverlayStyle.js","webpack:///./commons/components/business/filterOverlay/styles/FilterOverlayStyle.js","webpack:///./commons/components/business/filterOverlay/components/FilterTypes.js","webpack:///./commons/components/business/filterOverlay/styles/FilterTypesStyle.js","webpack:///./commons/components/generic/customtitlebar/styles/CustomTitleBarStyles.js","webpack:///./commons/components/generic/colorPicker/styles/ColorPickerStyle.js","webpack:///./commons/components/business/sortableComponent/Manager/index.js","webpack:///./commons/components/business/sortableComponent/AutoScroller/index.js","webpack:///./commons/components/business/userProfile/components/ResetPassword.js","webpack:///./commons/components/business/userProfile/components/UserDetails.js","webpack:///./commons/components/business/bev/components/common/components/CanvasHeader.js","webpack:///./commons/components/business/bev/components/common/components/LevelSelector.js","webpack:///./commons/components/business/bev/components/common/styles/LevelSelectorStyles.js","webpack:///./commons/components/business/bev/components/common/styles/CanvasHeaderStyles.js","webpack:///./commons/components/business/bev/components/common/components/ScrollActionItems.js","webpack:///./commons/components/business/bev/components/common/components/infoCard/InfoCard.js","webpack:///./commons/components/business/bev/components/common/components/infoCard/KeyboardShortcuts.js","webpack:///./commons/components/business/bev/components/common/components/infoCard/ColorLegend.js","webpack:///./commons/components/business/bev/components/common/styles/ColorLegendStyles.js","webpack:///./commons/components/business/bev/components/setup/levelManagement/components/LevelManagement.js","webpack:///./commons/components/business/bev/components/setup/levelManagement/components/Level.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/BevLeftSideBar.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/components/Toolbox.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/components/UnitFormComponent.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/components/PlaceholderFormComponent.js","webpack:///./commons/components/business/bev/components/setup/bevLeftSideBar/components/Add.js","webpack:///./commons/components/business/bev/components/setup/BevSetup.js","webpack:///./commons/assets/images/RotateIcon.svg","webpack:///./commons/components/business/bev/components/view/BevView.js","webpack:///./commons/components/business/bev/components/view/styles/BevViewStyles.js","webpack:///./commons/components/business/baseUserRole/components/UserRoleSideBar.js","webpack:///./commons/components/business/baseUserRole/components/UserRoleMainTab.js","webpack:///./commons/components/business/baseUserRole/config/UserRoleTabsConfig.js","webpack:///./commons/components/generic/treeview/components/TreeView.js","webpack:///./commons/components/generic/treeview/styles/SearchableTreeViewStyle.js","webpack:///./commons/components/generic/calendar/styles/CalendarStyle.js","webpack:///./commons/components/generic/calendar/components/Month.js","webpack:///./commons/components/generic/calendar/components/Week.js","webpack:///./commons/components/generic/calendar/components/Day.js","webpack:///./commons/components/generic/calendar/styles/DayStyle.js","webpack:///./commons/components/generic/calendar/styles/WeekStyle.js","webpack:///./commons/components/generic/calendar/styles/MonthStyle.js","webpack:///./commons/components/generic/calendar/components/Header.js","webpack:///./commons/components/generic/calendar/styles/CalendarHeaderStyle.js","webpack:///./commons/components/business/sideIcon/styles/SideIconStyles.js","webpack:///./commons/components/business/smartlistwithform/styles/SmartListWithFormStyle.js","webpack:///./commons/components/generic/stepper/styles/StepperStyle.js","webpack:///./commons/components/business/user/list/config/UserListConfig.js","webpack:///./commons/components/business/filterOverlay/components/sections/styles/DateRangeStyle.js","webpack:///./commons/components/business/filterOverlay/components/sections/styles/NumberRangeStyle.js","webpack:///./commons/components/business/provider/calculatePriority.js","webpack:///./commons/redux/config/AccountContextConfig.js","webpack:///./commons/components/business/provider/BatchProcessor.js","webpack:///./commons/components/business/provider/getConfig.js","webpack:///./commons/components/business/provider/config/GlobalStoreKeys.js","webpack:///./commons/components/business/provider/ConfigLoader.js","webpack:///./commons/components/business/filtersAndSorts/components/userFilter/config/Enums.js","webpack:///./commons/components/business/filtersAndSorts/components/userFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserRoleFilter/config/Constants.js","webpack:///./commons/components/business/filtersAndSorts/components/journalUserRoleFilter/config/Enums.js","webpack:///./commons/components/business/user/form/UserForm.js","webpack:///./commons/components/business/dashboard/Dashboard.js","webpack:///./commons/components/business/logout/components/Logout.js","webpack:///./commons/components/business/sidebar/components/SideBar.js","webpack:///./commons/components/business/userProfile/components/UserProfile.js","webpack:///./commons/components/business/bev/Bev.js","webpack:///./commons/components/business/filterOverlay/components/sections/components/DateRange.js","webpack:///./commons/components/business/filterOverlay/components/sections/components/NumberRange.js","webpack:///./commons/components/generic/switch/components/Switch.js","webpack:///./commons/components/generic/customtitlebar/components/CustomTitleBar.js","webpack:///./commons/components/business/formcomponents/address/components/Address.js","webpack:///./commons/components/generic/customRoute/components/CustomRoute.js","webpack:///./commons/components/business/formcomponents/address/utils/Utils.js","webpack:///./commons/components/generic/form/components/FormikFormWrapper.js","webpack:///./commons/contexts/FormikContext.js","webpack:///./commons/components/business/smartlistwithform/components/SmartListWithForm.js","webpack:///./commons/components/business/accesscode/components/AccessCodeField.js","webpack:///./commons/contexts/InventoryContext.js","webpack:///./commons/helpers/utils/StoreUpdater.js","webpack:///./commons/helpers/utils/WSHandlers.js","webpack:///./commons/components/generic/menu/components/Menu.js","webpack:///./commons/components/business/timezone/components/TimezoneDropdown.js","webpack:///./commons/components/generic/usertypeaccessible/components/SyrasoftUserAccessible.js","webpack:///./commons/components/business/confirmationAlert/components/ConfirmationAlert.js","webpack:///./commons/components/business/triangle/components/Triangle.js","webpack:///./commons/components/business/formcomponents/name/components/Name.js","webpack:///./commons/components/business/fileUpload/components/DragAndDrop.js","webpack:///./commons/components/generic/colorPicker/components/ColorPicker.js","webpack:///./commons/contexts/PointOfSaleContext.js","webpack:///./commons/contexts/RouteContext.js","webpack:///./commons/contexts/AchContext.js","webpack:///./commons/components/business/sortableComponent/SortableElement/index.js","webpack:///./commons/components/business/passwordField/components/PasswordField.js","webpack:///./commons/components/business/report/components/ReportViewer.js","webpack:///./commons/components/business/insurance/components/Insurance.js","webpack:///./commons/contexts/VehicleModalContext.js","webpack:///./commons/components/business/fileUpload/components/UploadStatus.js","webpack:///./commons/components/generic/sectionscroller/components/SectionScroller.js","webpack:///./commons/components/business/scanBarcodeButton/components/ScanBarcodeButton.js","webpack:///./commons/components/business/summaryTable/components/NewSummaryTable.js","webpack:///./commons/contexts/CustomMergeFieldContext.js","webpack:///./commons/components/business/payment/components/SyrapayMerchantPortal.js","webpack:///./commons/components/business/baseUserRole/BaseUserRole.js","webpack:///./commons/contexts/LetterTemplateContext.js","webpack:///./commons/components/generic/link/components/LinkList.js","webpack:///./commons/components/business/formcomponents/contact/components/Contact.js","webpack:///./commons/components/business/formcomponents/otherinformation/components/OtherInformation.js","webpack:///./commons/components/business/section/components/OnDemandSection.js","webpack:///./commons/components/generic/link/components/DocumentLink.js","webpack:///./commons/components/business/payment/utils/Permissions.js","webpack:///./commons/components/generic/treeview/components/SearchableTreeView.js","webpack:///./commons/components/business/fileUpload/components/AddMoreFilesButton.js","webpack:///./commons/components/business/fileUpload/config/utils.js","webpack:///./commons/components/generic/calendar/components/Calendar.js","webpack:///./commons/components/business/sideIcon/components/SideIcon.js","webpack:///./commons/assets/icons/ArrowPending.svg","webpack:///./commons/components/generic/stepper/components/Stepper.js","webpack:///./commons/components/business/user/list/components/UserList.js","webpack:///./commons/components/fieldwithediticon/config/enums.js","webpack:///./commons/components/fieldwithediticon/config/Constants.js"],"names":["localisable","admin","listStatus","clone","between","and","from","to","atLeastOneRequired","reverse","undo","markedForDeletionNew","markedForDeletionExisting","noPermissions","noActionPermission","syrasoftConnect","sales","support","copyright","allRightReserved","createdBy","setupStatus","softwareAdoptionStatus","softwareAdoptionStatusHeading","recurring","now","once","recur","all","before","warnings","resolved","affectedUnits","pleaseEnterAValueInTheTextfield","std","frequency","savedDocuments","noSavedDocuments","link","writeOff","id","na","messages","defaultNoContent","loadingMoreResults","noMoreResults","keepChanges","reserve","activate","deactivate","save","saving","applyFilters","clearBalance","cancel","discardChangesCaps","discard","yes","no","separator","nbsp","somethingWentWrong","couldNotLoadLink","takingLongerThanExpected","search","noResultFound","noDataFound","key","reset","failedToSave","view","dismiss","dismissed","dismissing","formSaveNote","saveConfirmation","discardConfirmation","unitActivateConfirmation","unitDeactivateConfirmation","unitDisplayName","unitCreate","unitListLabel","unitListType","unitListRented","unitListStatus","unitListRate","unitListTenantName","unitListNextRentAssessmentDate","unitListComments","unitListActions","unitListEmpty","unitListLoading","unitCardComments","unitCardType","unitFormError","unitFormLoading","unitSettingDisplayName","vendorFormError","vendorFormLoading","tenantCardUnits","tenantCardBalance","tenantCardComments","tenantCardLedger","tenantCardLedgers","tenantCardAlternateContact","alternateContactInformation","reservationCardCode","vacant","noUnitsVacant","whatDoYouWantToDo","tenantTitle","tenantListAddress","tenantListContact","tenantListAlternateContactName","tenantListUnits","tenantListBalance","tenantListActions","tenantListEmpty","tenantListLedger","tenantSectionCap","tenantFormError","tenantFormLoading","tenantFormMinimumLedgerMessage","tenantFormAddLedger","tenantFormDiscardLedger","tenantFormAddPhone","tenantFormAddAuthorizedPeople","tenantFormAddIdProof","tenantActivateConfirmation","tenantDeactivateConfirmation","duplicatePhones","duplicateNumber","tenantCreated","tenantUpdated","tenantNotFound","tenantDisplayName","sections","requiredFieldsMissing","missingFields","showCredentials","hideCredentials","sendLink","reSendLink","tenantName","tenantNameSalutation","tenantNamePreferredName","tenantNameBusinessName","tenantNameSuffix","fax","address","city","state","country","zipCode","addressLine1","addressLine2","enableText","enablePrimaryNumber","enableEmail","phone","primaryPhone","cellPhone","homePhone","businessPhone","chooseSpecificPhone","faxNumber","emailId","collectAnyPhone","selectPhone","enterPhone","enterFax","textEnabled","anyPhone","faxPhone","messagingService","tooltipInfoMessage","conversationsTooltipMessage","notSupportedText","tenantLanguage","tenantDob","idProof","idProofCaps","idProofDriverLicense","idProofLicenseExpiryDate","idProofStateId","idProofSsn","collectAnyId","idProofResidentId","idProofVoterId","idProofPassportId","chooseSpecificId","anyId","ids","ledgerActivateConfirmation","ledgerDeactivateConfirmation","ledgerLabel","ledgerDelayedBy","ledgerDays","ledgerExemptFromSurcharge","generateDeclinedLetter","ledgerPrintReceipt","deleteTransaction","reverseTransaction","reverseComments","deleteComments","preferredPaymentType","achAccountNumber","achRoutingNumber","achBankName","creditCardNumber","creditCardNo","creditCardExpiry","creditCardBillingName","creditCardCvv","monthFormat","yearFormat","selectCardProcessor","militaryInfoId","militaryInfoType","militaryInfoDeployedUntil","militaryInfoBranch","militaryInfoDivision","militaryInfoCommandingOfficer","militaryInfoCOPhone","seasonalContactFrom","seasonalContactTo","seasonalInformation","employerInformation","taxExempted","taxExempt","taxExemptNumber","taxExemptCategory","ok","accessNumber","unitNumber","relationship","aap","okInCapitals","noImagesYet","clickButtonToAddPhoto","addPhoto","chooseAFile","orDragItHere","acceptedFormats","accessWebcam","uploadStatus","uploadPending","successful","unsuccessful","addMorePhotos","yesDiscardChangesCaps","noKeepChangesCaps","photosNotSavedYet","unableToAccessWebcam","photoUpload","orCaps","upload","exitPhotoUpload","yesExit","noContinueUpload","capture","reCapture","markAsPrimary","deletePhoto","exampleName","exampleFirstName","exampleLastName","exampleBusinessName","exampleRelation","exampleAccessNumber","exampleUnitNumber","exampleEmail","examplePhone","exampleCreditCardNumber","tenantAddress","militaryInformation","idProofTab","tax","photos","otherAddress","alternateContact","seasonalContact","employerContact","ledgers","paymentInfo","additionalAuthorizedPeople","lead","leadName","leadInfo","leadListName","leadListContactDetails","leadListInterestedUnitTypes","leadListLastContactedDate","leadListAppointmentDate","leadListExpectedMoveInDate","leadListUserHandlingTheLead","leadListEmpty","leadActiveStatusChipLabel","leadFormError","leadFormLoading","newLead","leadUpdated","leadCreated","leadStatus","leadActivateConfirmation","leadDeactivateConfirmation","initialContact","selectDate","selectTime","appointmentDate","interestedUnitType","estimateCodeCreatedOn","validTill","movedIn","estimateCreatedFor","estimateCode","reservationCreatedFor","reservationCode","clickOnLink","vendorUpdated","vendorCreated","inventoryUpdated","inventoryCreated","leaseSignStatus","LeaseExpired","leaseSignComplete","leaseSignPending","leaseSignStatusUpdatedSuccess","leaseSignExpired","eSignPending","leadDisplayName","financialListLabel","manualCharge","charge","arListID","arTransactionType","description","amount","arAmountRemaining","arStatus","arReversalID","arTaxID","arPaymentID","arListActions","category","cashID","cashFromAR","cashToAR","cashStatus","cashAmount","cashCategory","cashReversal","chargeAddedSuccessfully","makeAnotherCharge","listName","userListEmail","userListFirstName","userListLastName","userListHasTwoFactor","userListPhoneNumber","userListUserType","userListAccountNumber","userListDefaultFacilityId","userDisplayName","userListEmpty","userListLoading","unlockUser","failedToUnlockUser","failedToForcePasswordReset","anEmailWillBeSentTo","forUnlock","resetPassword","forcePasswordReset","forcePasswordResetConfirmation","mailSentToUserSuccessfully","userActivateConfirmation","userDeactivateConfirmation","accountNameOrNumber","userEmail","userName","searchUserEmail","searchUserName","scheduleDisplayName","scheduleListEmpty","scheduleListLoading","scheduleName","scheduleStartDate","scheduleEndDate","scheduleLastExecutionDate","scheduleRunCount","scheduleDescription","scheduleEnable","scheduleFacilityNumber","scheduleFacilityName","scheduledDate","facilityListNumber","facilityListAbbreviation","facilityListAddress","facilityListTimezone","facilityListTenantDefaultAddress","facilityListFaxNumber","facilityListNumbers","facilityLicenseEndDate","facilityCreated","facilityUpdated","accountListNumber","accountListName","accountListAddress","accountListContact","accountCreated","accountUpdated","rentAssessmentHistory","dailySummary","ledgerId","unitId","unitTypeId","blockedAutoPayWindow","balanceAtThatTime","for","on","rentAssessmentHistoryListDisplayName","rentAssessmentHistoryListEmpty","rentAssessmentHistoryListLoading","rentAssessmentHistoryListFacilityNumber","rentAssessmentHistoryListFacilityName","rentAssessmentHistoryListMode","rentAssessmentHistoryListType","rentAssessmentHistoryListCreatedDate","rentAssessmentHistoryListActionDate","rentAssessmentHistoryListUser","rentAssessmentHistoryListStatus","rentAssessmentHistoryListDuration","rentAssessmentHistoryListSummary","rentAssessmentHistoryListActions","invoiceDate","autoInvoicing","asyncTaskListDisplayName","asyncTaskListEmpty","asyncTaskListLoading","asyncTaskList","asyncTaskListTaskId","asyncTaskListStatus","asyncTaskListResult","asyncTaskListDateDone","asyncTaskListTaskName","asyncTaskListWorker","asyncTaskListDateCreated","actions","invalidValue","isAlphanumeric","isEmail","invalidEmailAddress","duplicateEntry","isMaxLength","isNumeric","minLength","isValidPasswords","isValidAccessCode","isRequired","isValidFacilityAbbreviation","isValidAmount","invalidDate","twoDecimalPlaces","enterInteger","isPositiveNumeric","isValidAngle","noCommonPassword","noContextualString","invalidPastDate","lessThanMoveInDate","greaterThanExpectedMoveOutDate","createTenant","createLedger","createLead","createVendor","createInventory","editFacility","facilityManagementSubtitle","vendorActivateConfirmation","vendorDeactivateConfirmation","inventoryActivateConfirmation","inventoryDeactivateConfirmation","sectionScrollerTitle","collapseAll","expandAll","autoSuggestMinChars","basicInformation","contact","otherInfo","noUnitRented","oops","serverError","serverErrorTitle","serverErrorDetail","underMaintenanceTitle","underMaintenanceDetail","notFound","notFoundTitle","notFoundDetail","unauthorised","noAccess","noOptions","searchTenantOrLead","goToHomePage","reportIssue","validating","movingIn","movingOut","noFiltersApplied","filtersApplied","savePreferredPayment","paymentSuccessful","selectTenantLedger","makeAnotherPayment","payment","pay","makePayment","makeRefund","doNotProcessCard","makingPayment","disableAutoPay","enableAutoPay","rentalInformation","rentalInformationLabel","tenantAndUnit","noNotificationPenaltyAmount","prorateMoveOut","tenantAndUnitSummary","recentUnpaidARCharges","notificationPenaltyAmount","rate","daysLate","documentation","documentationLabel","shouldProcessLateFee","process","skipNow","reProcess","reProcessing","prepayNextPeriodAmount","passwordUpdate","createUser","editUser","copyRoleFrom","roleSelection","roleSelectionName","roleSelectionCity","roleSelectionID","roleSelectionAbbreviation","roleSelectionAppliedRoles","rolePreview","account","noComments","noUnits","total","paymentComment","configuration","chargeCategoryEmpty","paymentVsRefund","cardProcessorEmpty","processor","taxExemptListEmpty","taxCodeEmpty","paymentMethodListEmpty","noUnitTypeFound","type","secure","status","taxes","general","chargeCategory","facility","unitType","paymentMethod","paymentLabel","taxCode","taxExemptList","exemptType","customExemptList","modifier","discountRate","surcharge","dimension","dimensionLabel","amountByPeriod","width","depth","setupFee","rentalDeposit","monthly","unitGeneral","rentalGeneral","rental","tenantDeposit","showOnlyOneUnavailableStatus","allowNonRentChargeCategoryType","skipDuplicateTenantCheck","configurationCreated","configurationUpdated","customer","customerGeneral","facilityGeneral","financialGeneral","businessType","currency","identifier","userEmailConflict","emailConflictMessage","customerSupportNumber","customerSupportMail","callSupport","emailSupport","promoPlan","promoPlans","billUpto","recurringPlan","oneTimePlan","prepayRequired","noOf","periods","copyPlans","promoPlanPeriod","noPromoPlanFound","noPromoPlanTemplateFound","promoPlanTitle","promoPlanActions","promoPlanValidity","promoPlanOccupancy","enterPercentage","promoPlanRecurringLabel","promoPlanPrepaymentLabel","promoPlanAddBill","promoPlanBillType","promoPlanCalculationStyle","promoPlanFlatRate","promoPlanPercentageRate","promoPlanStartPeriod","promoPlanEndPeriod","prorateAsFirst","untilMoveOut","promoPlanSeasonal","promoPlanPeriodic","promoPlanFeatureAccessibility","promoPlanDeviceAccessibility","selectBillType","selectCalculationStyle","promoPlanDetails","selectPromoPlans","selectArea","selectDevice","removePromoPlans","addNewPromoPlan","addPromoPlan","chargeOrDiscount","promoPlanStartDate","promoPlanEndDate","markedForDelete","promoPlansUpdated","chargeDetails","planVisibility","showSummary","promoPlanTemplate","dashboard","internalDashboard","externalDashboard","backToDashboard","settings","businessGroup","selectBusinessType","selectCurrency","selectIdentifier","allocationOrder","modifyAllocationOrder","selectAllocationOrder","selectChargeCategory","chargeCategoryInfo","selectTaxType","selectCategory","selectDays","selectPeriod","selectPeriods","selectStatus","selectBillingType","selectLeaseStyle","selectActionType","selectLease","selectCalcType","selectDepositType","selectCancellationType","select","selectSource","enterDays","enterDescription","enterNumber","enterDepth","enterWidth","enterUnitRate","selectExemptType","selectTaxCodes","selectChargeCategoryType","selectAccountType","selectAccount","selectAccounts","selectPaymentMethodType","selectPaymentMethod","selectModifierType","selectChargeStyle","selectDeliveryMethod","validateChargesOver","depositLog","charges","letter","letterLabel","nsf","period","periodLabel","feeAndDeposit","rateCalculation","includeCharges","resolveCharges","balanceResolution","deposit","modifierCalculation","prepayment","pendingTaskNotificationDismissal","receiveEmailNotifications","promptForAddressChange","contactLogCategory","language","demographics","generateLetter","assessment","prorate","cancellation","rentSlider","nsfAmount","enterAmount","enterAccountNumber","enterDeposit","enterSetupFee","enterEmailId","accountNumber","chooseLetter","calculateFlatFirst","daysForProrateCalc","isAnniversary","standard","availableAtSim","availableAtKiosk","numDaysEarly","assessAutomatically","overbookBy","leaseStyle","unitRate","rentSliderEnabled","rentSliderDiscount","premiumRate","rentSliderCalcStyle","thresholdCalcStyle","highThreshold","lowThreshold","moveIn","editReservation","reservationUpdated","reservation_mode","moveOut","finish","enableSyncWithExistingUnits","isEnabled","billingType","days","previewLeaseAgreement","generateWelcomeLetter","welcomeLetter","vacateNotificationInDays","actionWhileResolvingCharges","numberOfDaysElapsed","actionOnBalanceDue","actionOnCreditDue","generateMoveOutDocument","numberOfCopies","printCopies","contactHistory","ledgerHistory","generateThankYouLetter","reservation","reservedBy","maxDaysBeforeMoveIn","promptForReviewAfter","lease","calculation","calculationType","value","depositType","cancellationType","printDocument","chargeCategoryType","generalLedgerAccountNumber","financialExportAccountType","isSecureCategory","matchTaxSignatureOfUnit","paymentMethodType","alternateExportDescription","showPaymentNumber","paymentNumberMandatory","modifierType","chargeStyle","flatAmount","percentAmount","requireCredentials","requireComment","refuseCheckFromFlaggedTenants","advancedPaidToDate","forceRentAssessment","allowPartialCredit","generateReceipt","numCopies","deliveryMethod","generatePartialPaymentLetter","hstNumber","gstNumber","pstNumber","chargeCategoryMapping","notificationPenaltyFee","prepay","tenantRefund","tenantChangeTracking","tenantAccountType","tenantSections","tenantEngagement","tenantChanges","payments","generateAddressChangeLetter","defaultAccountType","manual","source","showAt","addAmountByPeriod","addRentSlider","rentSliderCalculation","required","preferred","optional","showOptionalFields","accountCamel","name","firstName","lastName","phoneNumber","primary","comments","defaultFacility","scrollToSections","enableTwoFactorAuthentication","userFormUpdated","userFormCreated","searchReservationOrEstimate","searchEstimate","searchReservation","estimate","estimates","createEstimate","estimateDetails","estimateValidity","estimateExpiresAfter","estimateCreatedOn","expiryDate","create","unitAndMoveInDetails","selectUnitType","unit","selectUnit","moveInDate","selectMoveInDate","rentalInfo","billToDate","setRate","resetBackToOriginalRate","selectBillToDate","prorateAmount","expectedMoveOutDate","selectMoveOutDate","cannotIncrease","cannotDecrease","breakDown","totalAmount","createTenantOrLead","selectTenantOrLead","selectTenantLead","selectTenant","ledger","addLedger","selectLedger","ledgerBalance","includeInactiveTenants","syncBillingDate","greaterAmount","lesserAmount","back","next","summary","particulars","currentCharges","upcomingCharges","date","debit","credit","loading","pleaseSelectTenant","newAmount","error","syncWithExistingUnits","is","true","false","willLoseData","warning","switchingTo","tenantLead","after","lockReservationRates","unitReservedOn","lastDayMonth","leadConvertedToTenantSuccessfully","createReservation","editUnitNumber","level","selectLevel","keypadZone","selectKeypadZone","overlockStatus","selectOverlockStatus","accessCode","enterAccessCode","accessCodeType","accessCodeSent","rentalStatus","availabilityStatus","available","unavailable","inventoryReport","enterComments","enterRate","nextRentAssessmentRate","nextRentAssessmentDate","selectNextRateAssessmentDate","nextAmountPayable","paidToDate","selectPaidToDate","expectedDepartureDate","selectExpectedDepartureDate","notificationReceived","selectNotificationReceived","unitCreated","unitUpdated","unitDetails","dateChangeWarning","activePromoPlansWillBeAffected","changeInNrad","createCharges","waiveCharges","smallFrom","smallTo","promoPlansWillBeAffected","expectedMoveOut","rateHistoryLabel","scheduleRentAdjustment","excludeFromRentAdjustmentWizard","newRate","expectedNewRate","oldRate","waivedOrReversedBy","waiveMessage","showTenantActivity","rented","futureNRADChange","changeTheDateAndAvoidCharges","wantToAssessRent","or","assessRent","justChangeDate","takeAction","pastNRADChange","reverseOrDeleteFollowingCharges","rentCharges","insuranceCharges","promoPlanCharges","verifyFollowingData","changeDate","doNotChangeDate","password","newPassword","charactersLength","atLeastOneCapital","atLeastOneNumber","atLeastOneSpecialCharacter","noCommonWords","noUsername","email","oldPassword","confirmPassword","continue","enterYourMail","signingIn","signIn","enterAccessCodeSent","forgotPassword","goToAccount","resendCode","copy","createRole","hasActiveAdminSessions","yesLogin","noRetainSessions","passwordAdherence","passwordLength","passwordContents","contentNumber","contentCapital","contentSpecialCharacter","notSamePassword","noCommonWordPassword","noUsernameOrEmailPassword","access","add","remove","edit","delete","bgManagement","split","merge","modifyPayOrder","editChargeCategories","modifyChargeCategory","secureCategory","secureChargeCategory","modifyPromoPlanRules","configurationCapitalise","editConfig","refundsConfig","recurringCharge","UnitType","tenantRequiredFields","tenantRequired","leaseManagement","bgReservation","standardCategories","reportsGeneral","auditReports","auditReportsPermission","incomeReports","incomeReportsPermission","userMoveIn","userPayment","tenantInformation","secureInformation","corporateReports","corporateReportsPermission","managementReportsTitle","managementReports","customCategories","addOrEdit","unitsGeneral","generalDetails","unitsCurrentRate","NextRentAssessmentDate","NextRentAssessmentDateLabel","PaidToDate","PaidToDateLabel","unitsUnitType","unitTypeDimension","unitsDimension","unitsInventoryReport","unitsMoveInDate","occupancy","tenant","setup","setupLabel","tenantsGeneral","tenantsAllowSecureInfo","lateExemption","AllowLateExemption","AllowGateExemption","gateExemption","tenantsStatus","modifyActiveStatus","modifyDeposit","tenantsDeposit","facilityManagement","tenantsContactLog","composeCustomEmail","composeEmailText","viewSecureInfo","unitsRentalStatus","performMoveIn","rentAssessment","rentAssessmentText","editMoveInDate","modifyBillTodate","increaseCurrentRate","unitRateUp","decreaseCurrentRate","unitRateDown","waiveSetupFeeLabel","waiveSetupFee","editSetupFee","waiveDeposits","waiveDepositLabel","editDeposits","waiveProrate","LicenseManagement","nonStandardPeriods","noPromoPlan","userRole","accountManagement","performMoveOut","moveOutDate","waiveNotificationPenaltyLabel","waiveNotificationPenalty","overrideResolveChargesLabel","overrideResolveCharges","userManagement","rentAdjustment","schedule","rentAdjustmentApply","rentAdjustmentWaive","rentAdjustmentLease","financials","businessGroupManagement","reservationSubtitle","reservationWaiveDeposit","chargeAccessScreen","PaymentAccessScreen","paymentNeedCredentials","paymentModifyEffectiveDate","paymentNegativeAmount","paymentDelete","paymentDeleteLabel","paymentReverse","paymentReverseLabel","paymentNsfEntry","paymentBatchProcessing","paymentCreditCards","AchPpd","payOffBalance","chargeManualCharge","chargeDelete","chargeReverse","chargeDeletePermission","chargeReversePermission","chargeAccess","chargeNegativeAmount","chargeSecureCategory","chargeReverseSecureCategory","chargeDeleteSecureCategory","retailSale","retailSaleSell","sellInventory","retailSaleNegativeSale","negativeInventory","retailSaleEditInventory","modifyInventory","retailSaleReplenishment","retailSaleNegativeReplenishment","retailSaleRestock","retailSaleAudit","retailSaleAuditNegative","utilityMeteringData","utilityMetering","reprintReceipts","reprintReceiptsPermission","roleCreated","roleUpdated","roleUpdateError","enterOldPassword","enterNewPassword","successPassword","passwordChanged","reNewPassword","reEnterNewPassword","userRoleActivateConfirmation","userRoleDeactivateConfirmation","userManagementSubTitle","userManagementSubTitle2","setPermissionAt","system","disableUiAccess","systemConfigManagement","reportManagement","esManagement","indexManagement","dataManagement","accessLetterMigrationConsole","startOfDay","accessLiveData","modifyRestrictions","deleteSandbox","systemConfigManagementLabel","disableUiAccessLabel","bev","bevSetup","bevView","bevViewTitle","bevViewModeLinkText","bevSetupModeLinkText","bevToolBox","bevLeftAlignTooltip","bevRightAlignTooltip","bevTopAlignTooltip","bevBottomAlignTooltip","bevHorizontalCenterTooltip","bevVerticalCenterTooltip","bevRotateTooltip","bevDeleteTooltip","bevCreateEdit","bevUnitNumberField","bevWidthFieldLabel","bevDepthFieldLabel","bevCountRadioLabel","bevCountFieldPlaceholder","bevIncrementRadioLabel","bevDecrementRadioLabel","bevIncrementFieldLabel","bevDecrementFieldLabel","bevAngleFieldLabel","bevAngleFieldPlaceholder","bevDirectionButtonsDescription","bevKeyboardShortcutsCardTitle","bevKeyboardShortcutLabel1","bevKeyboardShortcutDescription1","bevKeyboardShortcutLabel2","bevKeyboardShortcutDescription2","bevKeyboardShortcutLabel3","bevKeyboardShortcutDescription3","bevKeyboardShortcutLabel4","bevKeyboardShortcutDescription4","bevUnitDataSaved","bevPlaceholderDataSaved","bevSetupDataSaved","bevUnitDataPartiallySaved","bevSetupDataPartiallySaved","bevUnitDataSaveFailed","setupBev","bevColorSetup","bevColorSetupConfigure","bevColorSetupBoard1","bevColorSetupBoard1Item1","bevColorSetupBoard1Item2","bevColorSetupBoard1Item3","bevColorSetupBoard1Item4","bevColorSetupBoard1Item5","bevColorSetupBoard2","bevColorSetupBoard2Item1","bevColorSetupBoard2Item2","bevColorSetupBoard2Item3","bevColorSetupBoard3","bevColorSetupBoard4","bevSortableBoardDescription","enableBEV","refreshColor","levelManagement","unitsInTheLevel","levelDeleteTooltip","chooseADifferentName","confirm","discardChangesButton","levelsSaved","levelsSaveFailed","unitAlreadyExists","changeUnitNumber","moveToCurrentLocation","shouldSetThisAsDefault","zoomValueSaveFailed","zoomValueSaved","bevRefreshColorErrorMsg","colorRefreshInitiatedMsg","scroll","placeholder","selectPlaceholder","selectPlaceholderType","editPlaceholderName","unitComments","nextBillingDate","tenantBalance","walkAround","sortingOrderType","defaultSortOrder","selectSortingOrderType","selectDefaultSortOrder","reviewUnitSortOrder","customSortOrder","dragAndDropUnits","saveChanges","bulkSelection","changeStatusTo","deselectAll","failedToUpdateStatus","overLockStatusSuccess","maintenanceEvent","noMaintenanceEventsFound","createOn","selectCreateOnType","markThisUnitAsUnavailable","shouldChargeTenant","selectChargeWhenType","chargeWhenEventIs","generateWorkOrder","generateInvoice","printWorkOrder","printWorkOrderInvoice","chooseColorToDisplayOnBEV","colorConflictErrorMessage","selectWorkOrderNumber","maintenanceEvents","maintenanceEventsListEmpty","maintenanceEventsListCreatedOnAndTenant","maintenanceEventsListEndDate","maintenanceEventsListStatus","maintenanceEventsListComments","chargeWhen","tenantInfo","noChargeLabel","scheduleEvent","scheduling","selectEvent","editMaintenanceEvent","editEvent","markAsPending","completeEvent","completeAndCloseEvent","completeEventAlertMessage","closeEvent","closeEventAlertMessage","cancelEvent","cancelEventAlertMessage","unitWillBeMarkedUnavailable","maintenanceEventStartDate","maintenanceEventEndDate","eventScheduleWithCharge","eventSchedulingFailed","eventClosedWithCharge","unitIsMarkedUnavailable","failedToMarkUnitUnavailable","maintenanceEventCreated","maintenanceEventUpdated","maintenanceEventClosePermissionDesc","maintenanceEventCancelPermissionDesc","vendorListVendorName","vendorListContactPerson","vendorListAddress","vendorListEmail","vendorListPhone","vendorListFax","vendorListActions","vendorCreate","vendors","vendorDisplayName","vendorListEmpty","vendorName","contactName","phoneOrFax","allAccounts","accountDisplayName","accountListEmpty","accountListLoading","facilityDisplayName","facilityListEmpty","facilityListLoading","always","onDemand","neverShow","showAllBelowFieldsInTenant","markAllFieldAs","emailAddress","emailEnabled","reservationListCode","reservationListTenant","reservationListLedger","reservationListUnitType","reservationListUnit","reservationListReservationDate","reservationListExpectedMoveInDate","reservationListActions","reservationListEmpty","cancelReservationConfirmation","reservationCancelMessage","reservationDetails","reservationDeposit","reservationDate","reservationExpectedMoveInDate","pendingReservation","viewReservation","inventory","inventoryDisplayName","inventoryListEmpty","inventoryListLoading","inventoryListProductId","inventoryListProductDescription","inventoryListVendorId","inventoryListRetailPrice","inventoryListAvailableQuantity","inventoryListReorderPoint","inventoryListActions","sellAndPay","pointOfSale","pointOfSaleLower","clearCartItems","itemNotFound","clear","addToInventory","addItem","updateProductQuestion","selectTenantToMakePayment","sellNegativeInventoryError","negativeInventoryConfigMessage","customerName","productsList","availableQuantityInPos","dateOfPurchase","cart","clearCartAlert","selectAll","unSelectAll","sellAndPayLater","inventoryAuditName","inventoryAuditAvailableQuantity","inventoryAuditDescription","inventoryAuditProductId","inventoryAddRemoveQuantity","inventoryUpdatedQuantity","inventoryComment","inventoryAuditSubTitle","negativeInventorySubtitle","inventoryUpdateQuantity","update","inventoryUpdate","goToVendor","emptyInventoriesAlert","alert","inventoryRestockName","restockQuantity","editInventory","comesFromQuantity","totalSaving","totalTax","sellAndPaid","printPurchaseOrder","taxExemptQuestion","sellAndPaidLater","restock","nothingToRestock","retailSaleConfigure","usePreferredPrice","allowNegativeInventory","mandateComments","copiesPrint","exempted","vendor","contactPerson","upc","productId","retailPrice","preferredPrice","wholesalePrice","availableQuantity","reorderPoint","preferredReorderQuantity","showAtKiosk","subTotal","addInventory","scanBarcode","scanningBarcode","fromBarcodeScanner","productDescription","selectVendor","sellingPrice","userPrice","wholesaleCost","productQuantity","stockLow","reorderPlaceholder","enterProductId","cartProductsAdded","cartProductQuantity","cartPrice","cartTotal","emptyCart","remainingQuantity","retailSaleNegativeSell","retailSaleAddInventoryPOS","allReports","reports","consolidatedManagementReports","consolidatedReports","deliverReport","deliveringReport","selectedReports","clearSelection","searchCategories","searchReports","addCustomCategory","createCategory","updateCategory","assignPrinter","reportDescription","noDescription","previewReport","enterReceiptNumber","enterInvoiceNumber","receiptNotFound","invoiceNotFound","reportWorkCenter","consolidatedReportWorkCenter","consolidatedReportAccess","fetchingReport","buildingReport","convertingToPdf","openingFile","thisIsAPermanentAction","continueConfirmation","categoryDeleted","yesDeliverLink","noExitCaps","filterPresets","effectiveDate","effectiveDateRange","fromToDate","numberRange","depositLogCapitalized","batchScheduling","startDay","endDay","startDate","endDate","processTime","print","printTable","copies","generateBy","emailAddressListPlaceholder","editPermission","switchToRoles","switchToUsers","roles","users","syrasoftUserRoles","allow","restrict","noUsersFound","noRolesFound","requestSubmitted","attemptingDelivery","categoryCreated","categoryUpdated","updatingCategory","creatingCategory","sort","groupBy","filters","selectSortOrder","selectedGroupBy","insertTable","insertRowAbove","insertRowBelow","insertColumnLeft","insertColumnRight","deleteRow","deleteColumn","deleteTable","tableOperations","rows","columns","cancelLabel","done","mergeFieldCategory","insertMergeFields","exitWithoutSaving","bottomRight","bottomCenter","bottomLeft","noPageNumber","addPageNumberAt","pageNumber","customMergeFields","mergeFieldName","egMergeFieldValue","egMergeFieldName","onlyTenFields","customMergeFieldSaved","customMergeFieldUpdated","subCategory","letterConfiguration","customerEngagement","viewableAt","noLetterFound","paperSize","descriptionLabel","showThisLetterAt","printingPaperSize","textFriendly","enableTextFriendlyVersion","enableTextFriendly","composeLetter","composeTextVersionLetter","editLetter","editTextVersionLetter","emptyTemplateLink","operation","operationsLabel","failures","noOperationsFound","defaultOperationText","rentAssessmentStarted","rentAssessmentRan","processRent","searchTenant","searchUnit","allTenants","singleTenant","singleUnit","errorInRentAssessment","successfulRentAssessment","inProgressRentAssessment","alreadyProcessedRentAssessment","rentAssessmentType","rentAssessmentDate","selectRentAssessmentDate","manualRentAssessment","licenseExpired","hasExpired","notificationMessage","secondMessage","thirdMessage","salesSupportNumber","techSupportNumber","customerSupportEmail","salesSupport","techSupport","supportEmail","signOut","configurationActivateConfirmation","configurationDeactivateConfirmation","printSettings","selectPrinter","paperType","printOn","paperSource","setPrinterForReport","setPrinter","selectDefaultPrinter","defaultPrinter","noteForDefaultPrinter","noteForSetupPrinter","printerWarning","here","editTenant","viewTenant","ledgerInfo","autoPayEnabled","autoPay","balance","lastPaid","paidTill","paid","nextDueLedger","nextDue","unitDeposit","noUnitsRented","quickPay","ledgerReview","crm","gateControls","exemptFrom","gateLockout","overlock","unlock","otherLateEvents","taxExemptLabel","websiteAccess","noEmailConfigured","noTenantWebsiteUrl","exemptNumber","noTaxExemptRecord","noAuthorizedPeople","additionalAuthorizedPeopleLabel","unpaidBills","unpaidBillsForPrimaryLedger","unpaidBillsFor","amountCharged","amountUnpaid","noBillsGenerated","totalUnpaid","noReservation","mode","saveConfirmationWarning","actionsLower","expectedMoveInDate","missingRequiredFields","overlockAndUnlock","allUnits","someUnitsFailedToUpdate","unitsSuccessfully","saveAndContinue","dontSave","movingToUnitForm","leaseLetterNotConfigured","incompleteTenantDetails","fillTenantDetails","createInvoice","documentsIssuedBetween","tenants","leads","units","reservations","birdsEyeView","facilities","accounts","schedules","configurations","user","noUpdatedData","home","tenantAlerts","createTenantAlert","updateTenantAlert","noAlerts","severityLevel","fromDate","toDate","buttonLoadingAlertText","createAlert","alertDetails","alertType","alertConfigurationPlaceholder","alertConfigurationLabel","tenantAlertsSuccessSnackbarCreation","tenantAlertsSuccessSnackbarUpdation","contactLog","createContactLog","noContactLog","createdOn","by","addEntry","editEntry","message","discardMessage","saveMessage","composeEmail","composeTextMessage","review","transactions","transactionList","transactionNumber","createdDate","toConjunction","amountPaid","chargeAndComment","reverseMessage","reversePromoPlanMessage","deleteMessage","deletePromoPlanMessage","otherActions","showTransactionNumber","ledgerReviewAction","merchantPortal","searchByTransactionNumber","noTransactionsFound","manualCharges","addCharge","manualChargeCreated","amountMoreThanConfiguredAlertMessagePart1","amountMoreThanConfiguredAlertMessagePart2","yesCreateCharge","noEditAmount","yesPay","demographicLetter","leaseLetter","invoice","leaseAddendumLetter","vehicleAddendumLetter","addFromRS","movedInto","with","successfully","totalPayableTenant","sell","inclusiveMessage","autoGenerate","moveOutDetails","searchUnitOrTenant","moveOutDateLabel","tenantAndUnitDetail","unitLabel","unitDescription","billing","lateNotificationPenaltyAmount","commentsForUnit","reasonForVacating","moveOutResolveCharges","totalUnpaidAr","unpaidAr","expectedNoticePeriod","noticePeriodReceivedDate","fullPeriods","prorateOutDays","setProrate","noBreakUpMessage","postMoveOut","hasMovedOut","tenantRelatedActions","doNotRent","postMoveOutSuccessfully","resolveRefunds","resolveBalance","refund","refunds","retryRefund","cancelMoveOut","exitPostMoveOut","moveOutStepZeroOnExitAlertMessage","moveOutStepZeroOnNavigationAlertMessagePart1","moveOutStepZeroOnNavigationAlertMessagePart2","moveOutStepTwoOnNavigationAlertMessagePart1","moveOutStepTwoOnNavigationAlertMessagePart2","paymentRefund","deliveringDocuments","changeTheTenantStatus","moveOutNextStepWithoutPaymentSnackbarMessage","products","postMoveInPos","confirmChanges","confirmOrder","payAheadFor","billAhead","receiptDeliverBy","cardProcessor","flaggedTenant","ignore","changePayment","checkNumber","checkPlaceHolder","moneyOrderNumber","successPayment","successRefund","unitFetched","tenantFetched","ledgerUpdated","clickHereForMoreDetails","enterCardDetails","useCardOnFile","swipeCard","payUsing","signUpForAutoPay","signUpLink","signUpLinkDelivered","sendSignUpLink","saveThisForFuturePayments","clickOn","andSwipeTheCard","negativeAmount","negativeAmountLabel","nonZeroPositiveAmount","enterValidCardNumber","takingMoreTime","refundInProgress","paymentInProgress","waitingForPaymentConfirmation","waitingForRefundConfirmation","sec","cancelPayment","cancelRefund","noWait","paymentIsCancelled","refunding","paymentFailed","reason","rejectionCode","tryDifferentMethod","exitCaps","resetAmount","prePayNotAllowed","viaSyrapay","partialPaymentNotAllowedForDelinquentTenant","delinquentEvent","delinquency","delinquent","eventType","calculationStyle","viewDelinquencyWc","viewDelinquencyWcSubtitle","assessLateCharges","assessLateChargesSubtitle","waiveLateCharges","waiveLateChargesSubtitle","lateEventType","noOfDaysLate","graceAmount","trigger","tenantPortal","overlockOutdoorUnits","colorOnBev","graceAmountDescription","tenantPortalViewDescription","tenantPortalView","tenantPortalRestrictLogin","resetOnGraceAmount","waiveForAdditionalUnits","selectLetter","sendToAlternateContact","sendCurrentChargesDueDocument","higherOfFlatAndPercent","performBilling","applyUntil","percentage","configureTiers","ceilingPointOfTier","lateEvent","lateFeePerUnitType","active","anErrorOccurred","percentPerUnitType","enterCardProcessorName","selectProcessor","acceptorId","accountId","enterAcceptorId","enterAccountId","accountToken","enterAccountToken","terminalId","enterTerminalId","showOn","deviceInformation","activationCode","enterActivationCode","laneID","deleteConfirmation","cardProcessorCreated","willConnectDevice","exit","waitingForDeviceToReboot","saveFirst","generateSecureToken","enablingSecureTokenOption","merchant","enterMerchantId","contactTechSupportForMerchantId","openMerchantPortal","noMerchantPortalPermission","addDevice","deviceId","deviceName","enterDeviceId","selectDeviceName","checkAmountPrompt","amountGreaterThan","prepayCategory","prepayMessage","assessNsfCharges","generateLetterNsf","configureGeneral","quickbooks","configureQuickbooks","ratePercentage","chargeCategoryLabel","percent","paymentMethodListHeader","paymentType","surchargeDiscount","paymentMethodList","paymentTypeForm","enableModifier","enableSurcharge","enableDiscount","taxesAttached","accountType","exportOptions","secureCategoryLabel","isThisSecureCategory","associatedTaxes","matchTenantTaxExemptStatus","noFieldsCanBeModified","noTaxesAreConfigured","exemptList","taxCodeExemptCategory","exemptedTaxes","atLeastOneTaxCode","nonRentalChargeCategoryAllowance","finalMonthProrateToDepartureDate","default","standardPeriod","tenantFacingWebsites","thirdPartyVendors","selectAllowedPeriod","alwaysAssess","daysEarly","daysProrateCalculation","consider","roundingType","roundingTypeForProrate","syrasoftFacilitate","rentalConfigRemoveWarningHeading","rentalConfigRemoveWarning","configureReservation","reserveUpto","reviewReservations","reservationCharge","isTheReservationDeposit","howToChargeReservationDeposit","wouldCancellationBe","deactivateTenantOrLedger","reservationDepositInfo","lockReservationRatesInfo","configureMoveOut","noticeBeforeMoveOut","noticeDays","balanceOrRefundResolution","resolveChargesBy","balanceDue","creditDue","deactivateTenantAfterMoveOut","chargeOnMoveOut","websites","kiosk","refresh","override","keepCurrentChanges","wsUpdateMessage","wsCreateMessage","rtnsBlockedSave","moveInConfigure","anniversary","prorateFirst","billNextPeriod","prorateSecond","selectLetterTemplate","chargeOnMoveIn","tenantDepositCategory","rentalDepositCategory","payTill","amountToBePaid","billAheadError","generating","generateBills","successfulBillGeneration","noBills","paymentConfigurationLabel","validatePaymentsOver","allowPrepay","billFutureDates","receipts","facilityCopy","tenantCopy","showOnReceipt","enterHstNumber","enterPstNumber","enterGstNumber","deliverBy","tenantFacing","userFacing","depositLogLabel","autoPaySwitchLabel","dontSendReceiptsDuringAutoPay","allowReceiptGeneration","acceptPPFromDelinquentTenants","taxIntegrationWithReceipt","showGst","showHst","showPst","allowGenerationOfReceipts","applied","events","apply","clearAll","noManualLateEvent","waive","unwaive","lateSince","eventDescription","lateFee","action","noFiltersFound","processEvents","eventsToBeProcessed","eventsToBeWaived","eventsProcessed","eventsFailed","eventsWaived","processingEvents","errorProcessingEvents","sortBy","advancedFilter","atleastOneUnit","moveInBetween","appointmentBetween","clearDate","autopayEnabledWithoutToken","categoryLabel","setupFeeLabel","unitTypeHeader","monthLabel","moveInCharges","depositLabel","configurePeriod","rentSliderNote","rentedUnits","lowerLimit","higherLimit","setLimitBasedOn","limitInfo","overbookByInfo","premiumRateInfo","discountRateInfo","cannotIncreaseDiscount","periodRate","systemConfigs","normalConfigs","systemFacility","systemBusinessGroup","revertChanges","deliveredDocuments","delivering","reDelivering","deliver","issuedDate","delivered","noDocuments","generateDocuments","style","tillDate","reDeliver","deliveredLabel","wsUserRoleCreateMessage","wsUserRoleUpdateMessage","delinquencyListEmpty","delinquencyListNumberOfDaysLate","delinquencyListLastContacted","delinquencyListDaysAgo","delinquencyListLastContactedVia","delinquencyStatus","balanceOwed","viewStatusHistory","statusHistory","eventStatus","noOfDaysLateDesc","noOfDaysLateAsc","tenantNameAsc","tenantNameDesc","notProcessed","viewHistory","currentStatus","daysAgo","delinquencyContactLogErrorMessage","enterStartDay","enterEndDay","minimumAmount","maximumAmount","enterNumbers","lastContacted","clearAmount","clearDays","contactedVia","valueMustBeLessThan","valueMustBeMoreThan","lastContactedDetails","levelAdded","levelDeleted","levelNameChanged","unitAdded","unitLayoutChanged","unitStatusChanged","reservationMade","ledgerChanged","wsConfigurationUpdateMessage","wsConfigurationCreateMessage","wsPaymentUpdateMessage","wsTenantInfoUpdateMessage","wsPaymentMethodUpdateMessage","wsPromoPlanUpdateMessage","wsViewTenantUpdateMessage","wsBalanceUpdatingMessage","wsReservationRentedMessage","wsMoveInRentedMessage","changeUnit","wsConfigUpdateMessage","wsUnitAvailabilityMessage","wsTenantUpdatedMessage","wsUnitDeactivatedMessage","wsRentalInfoUpdateMessage","wsBillingInfoUpdateMessage","wsUnitMovedOutMessage","updateProrate","recalculateTotal","updateNextPayableAmount","result","results","found","leaseGeneral","nextLeaseNumber","leaseDocument","renewalPeriod","months","deliveryOption","addendum","leaseRenewal","delivery","document","facilityId","facilityName","managerName","abbreviation","enableMessaging","areaCodeThreeDigits","areaCode","timezone","otherPhone","facilityIdentification","enterEmail","tenantDefaultAddress","enterName","enterAddressLine1","enterAddressLine2","enterCity","enterState","enterZip","enterPhoneNumber","enterFaxNumber","enterOtherPhone","enterManagerName","selectTimezone","enterAbbreviation","enterAreaCode","enterEmailHere","registerNumber","verifyEmail","preEmailVerification","emailVerification","emailVerificationDelivered","emailVerificationResend","emailSent","pendingWarning","emailVerificationExpired","reRegisterNumber","cityName","facilityNameOption","sureWillCheck","clickHere","toResend","emailPrefixTooltip","facilityEmail","companyVertical","enterCompanyWebsite","einSlashTaxId","enterEinSlashTaxId","einIssuingCountry","legalEntityType","enterLegalEntityType","textRegistrationFormTitle","textRegisterDisabledMessage","textNumberNotYetVerified","textNumberVerified","pendingTasks","todoList","hurray","printFailures","printFailuresSubtitle","pendingInvoiceDelivery","pendingInvoiceDeliverySubtitle","nothingPendingForCurrentDay","pendingOverlockUnlock","pendingOverlockUnlockTaskSubtitle","restockInventory","restockInventoryTaskSubtitle","inventoryAuditTaskSubtitle","applyLateEvents","applyLateEventsTaskSubtitle","pastDueReservation","pastDueReservationTaskSubtitle","noPendingOverlockUnlockUnits","automaticCreditCardDeclines","noAutomaticCreditCardDeclines","numberOfTimesReprocessed","emailVerificationPending","emailVerificationPendingHeader","emailVerificationPendingBody","emailVerificationStepOne","emailVerificationStepTwo","emailVerificationStepThree","emailVerificationStepFour","resendVerificationEmail","creditCardsAboutToExpire","invalidGateAccessCode","ledgersWithInvalidAccessCode","unitsWithInvalidAccessCode","noLedgersFound","noUnitsFound","oldAccessCode","autoGenerateCode","rtnsFacilityConfigMessage","reminder","reminders","createReminder","editReminder","reminderDate","recurringStatus","rCode","addTitle","reminderCreated","reminderUpdated","reminderDeleted","reminderEmptyDayViewText","reminderEmptyDayViewCreateText","reminderEndDateInfoText","externalActivity","comingSoon","unitsProcessedSuccessfully","someUnitsProcessingFailed","processing","invoicing","enableAutoInvoicing","nextInvoiceNumber","daysBeforeRentAssessment","invoiceMailing","feeForMailing","partialPayment","chargesDueReport","wantToGenerate","forPartialPayment","reportStyle","sortOrder","report","min0","max30","sendInvoice","invoiceForZeroBalance","noOfDaysAheadOfRentAssessment","invoiceToDate","invoiceTo","selectInvoiceToDate","sendInvoiceBefore","daysOfRentAssessment","invoiceAlreadyScheduled","wantToCancelScheduled","wantToCancelScheduledAndSendNew","sendNewInvoice","doNotCancelSchedule","cancelScheduledInvoice","okay","greaterThanZero","sendNotice","invoiceAlreadySent","invoiceDeliveryType","nsfSuccess","isNsfRequired","gates","label","selection","performInitialLoad","downloadUnitList","downloadUnitListMessage","archiveGateUpdateFiles","product","digiGate","PTIGate","PTIFalconGate","openTechGate","doorKingGate","nokeGate","spiderDoor","kpc","storGuard","gateSpecifications","minCodeLength","maxCodeLength","validRange","allowCodeReuse","siteKey","siteCode","operUsername","operPassword","apiKey","apiSecret","siteId","note","gateCodeReuse","tenantShouldNotHaveAccessCode","gateCodeClear","zoneSettings","openTechCloudCredentials","ptiCloudCredentials","spiderDoorCredentials","doorKingCredentials","defaultTimeZone","nokeGateCredentials","defaultKeypadZone","keypadZoneRange","notValidRange","invalidMinRangeLength","invalidMaxRangeLength","initiated","clearNewLedger","switchToAnotherLedger","discardLedger","keepLedger","notInRange","duplicateAccessCode","gateAccessCode","outOfRange","invalidCodeLength","invalidCodeType","gate","gateLockedOut","gateLocked","gateUnlocked","gateCodeActive","shouldProvideAccess","lockAccess","maximumLimitReached","invalidRange","recurringCharges","recurringChargeDescription","enterDate","chargeType","addRecurringCharge","recurringChargesUpdated","noRecurringCharges","exceeds100Percent","percentageOfUnitRate","ach","achConfiguration","selectAchProvider","achProvider","bankName","enterBankName","bankAccountNumber","enterOnlyNumbers","bankRoutingNumber","immediateDestinationId","immediateDestinationName","enterImmediateDestinationName","immediateOriginId","immediateOriginName","enterImmediateOriginName","useRouting","downloadFilePath","egFilePath","routingNumberPlaceHolder","useAchOnFile","conversations","textMessages","searchOnCustomerNameNumber","searchOnCustomerNameEmail","compose","display","dateRange","unreadMessages","readMessages","yesterday","replyHere","composeNewMessage","lessThan1024","lessThan160","retry","viewThread","reply","subject","send","sending","noOfSubject","recentSubject","attachment","sentTo","successfullySent","unreadTextOrEmail","transfer","chargeFeeOnTransfer","transferFee","transferDocument","additionalCopies","unitTransfer","achOperations","currentBatch","allBatch","submitBatch","transactionId","achEffectiveDate","batchSubmitted","yesDownload","notNow","batchNumber","batchCreatedDate","downloadFile","batchTransactions","batchBetween","occupancyHistory","useTenantAddress","batchPayment","creditCardBatch","creditCardBatchListEmpty","achBatchListEmpty","selectMode","batchCreatedBetween","otherBatches","otherBatchListEmpty","achBatch","openLedgerReview","noStayHere","yesSell","chargeCategoryCaps","dateCaps","amountCaps","showAllAccounts","deleteAccount","searchBy","working","liveData","beCautious","deleteFacility","editAccount","createFacility","unitSelection","moveOutOf","moveInTo","transferDate","additionalRent","totalTransferCost","proratedRent","netChange","newUnit","transferredFrom","postUnitTransfer","unitRentAssessmentPending","noOfDaysLeft","ratePerDay","billsUpdated","updating","backToOverview","accountName","businessGroupCreateError","businessGroupCreateSuccess","businessGroupUpdateError","businessGroupUpdateSuccess","businessGroupPermissions","tenantWebsites","origin","enabled","deliverSignUpLink","deliverTenantSignUpLink","sendActionToAllEnabledTenants","pleaseEnableTextOrEmail","signUpLinksDeliveredSuccessfully","paymentMethodOptions","autoPayManagement","allowCreditCardPayment","allowAchPayment","allowSignUpForAutoPay","allowTenantsToOptOutForAutoPay","balanceManagement","allowPartialPayment","allowPrePayment","enterWebsiteUrl","generalSettings","unitTypes","currentRate","currentRateDescription","webRate","unitTypeDisplayLabel","enterLabel","enterWebRate","selectGroup","webRentalPeriod","refundable","emailNotConfigured","noteForTFWAccountAlreadyExists","viewRates","productionWebsiteUrl","stagingWebsiteUrl","creditCardPaymentNotConfigured","achNotConfigured","autoPayNotEnabledForFacility","prepaymentNotEnabledForFacility","emailForTenantSignUp","emailBody","customizeEmailTemplate","customizeEmail","internalApp","standaloneAppDownloadLink","gateServiceDownload","shouldInstallGateService","noThanks","download","printer","reinstall","syrasoftCloudAssist","printerSetupDownload","gateSetupDownload","serviceAlreadySetup","syrasoftCloudAssistDownload","shouldReinstallService","gateServiceNote","internalAppMainDescription","internalImportantHeading","internalImportantList1","internalImportantList2","internalPleaseReadPara","internalPrinterSetupHeading","internalPrinterSetupDescription","internalGateSetupHeading","internalGateSetupBody","appDownloadLabel","quickPayTooltip","ledgerReviewTooltip","transferTooltip","overlockOrUnlockTooltip","editTenantTooltip","moveOutTooltip","moveInTooltip","pointOfSaleTooltip","documentationTooltip","unlockUnitTooltip","lockUnitTooltip","adjustments","autoRentAdjustment","rentAdjustmentListEmpty","stopRentAdjustment","viewRentAdjustment","stoppingAdjustment","stopConfirmationMessage","stopConfirmButtonText","stopDeclineButtonText","failedToStopRentAdjustment","rentAdjustmentStoppedSuccessfully","tenantNotification","doYouWantToNotifyTheTenant","sendNotificationToAlternateContact","deliveryOptionForTenant","scheduleDelivery","daysBeforeTheAdjustmentTakesPlace","whenDoYouWantToScheduleDelivery","selectDeliveryOptionForTenant","invalidDaysToDeliverBefore","selectionCriteria","schedulingRentAdjustment","byUnits","byTenants","rentalPeriod","selectRentalPeriod","basedOnLastAdjustment","basedOnOccupancyOver","adjustmentRate","effectiveDateForRentAdjustment","rounding","unitTypeRateSet","unitsAffected","standardRate","netChangeInIncome","rentAdjustmentsScheduled","rentAdjustmentScheduledSuccessfully","resolveWarnings","dontResolveWarnings","resolveWarningsConfirmMessage","rentAdjustmentIsAlreadyScheduled","increaseInRateExceeds","percentOfCurRate","invoicedToDateIsAfterRentAdjustmentDate","newRateExceedsStdRate","unresolvedUnits","resolutionOptions","resolveAffected","resolveAllBy","resolveBy","nextInvoicedDate","adjustmentDate","adjustmentAmount","nextEffectiveRate","unitsSelected","unitsToBeAffected","tenantDetails","effectiveRate","nextRecurringCharge","nextAdjustedRate","lastIncreaseDate","nextIncreaseDate","childId","parentId","timeWindow","scheduled","tenantAndUnitInformation","schedulingInformation","lastAdjustmentDate","rentAdjustmentAlreadyScheduled","exitRentAdjustment","returns","refundToTenantBalance","returnAndRefund","purchaseOrder","receiptNumber","purchaseDate","howDoYouWantToProceedWithRefund","selectATenantToMakeRefunds","selectDateForPurchaseOrderTableData","noPurchasesMadeForSelectedDate","pleaseEnterPurchaseOrderNumberForTableData","purchaseOrderSelectionTableEmptyMsgForCustomer","purchaseOrderSelectionTableMsgForCustomerNotSelected","orderDetailsTableEmptyMsg","failedToActivate","activatedSuccessfully","quantityPurchased","purchasePrice","returnQuantity","refundAmount","tenantIsDeactivated","ledgerIsDeactivated","vendorDeactivated","inventoryDeactivated","invalidQuantity","failedReturns","returnedOn","refundCancelSuccessful","refundCancelFailed","returnInventory","returnInventoryLabel","returnAndRefundToTenantBalanceSuccess","returnAndRefundToTenantBalanceFailed","returnOnlySuccess","returnAndRefundSuccess","refundFailed","refundFailedTitle","insurance","monthlyPremium","coverageAmount","proratePremium","skipFirstPeriod","shouldProrate","the","first","second","policyNumber","planName","insuranceSaved","seasonalDateFormat","insuranceCancelled","lateEventConfigId","lateEvents","event","lastApplied","nextApplicable","dayLate","noLateEventConfigured","invalidAreaCode","invalidPhoneNumber","invalidCountry","totalNumberCheck","reprintBatch","printDocuments","selectBatch","filterList","selectFilter","letterTemplate","letterSelection","approvedCcPayments","declinedCcPayments","rateAdjustmentDate","ccAboutToExpire","oneTenant","reservationPending","deletedTenants","tenantsWithUnits","tenantsWithoutUnits","emailEnabledTenants","filterOptions","paymentVia","minimum","maximum","optionDaysLate","invoiceBatch","batch","batchInformation","documentType","subDocumentType","ledgerName","documentName","preferredDelivery","printOnly","emailOnly","showAll","emailAndPrint","documentsAreSentForReprint","documentsAreSentForGeneration","purchaseOrderSDPlaceholder","customerNameSDPlaceholder","customiseEmail","customiseTextMessage","emailAlertSubtitle","addMessage","viewMessage","emailWillBeSentToEmailEnabled","mailingLabel","documentGeneratedSuccess","textAlertSubtitle","configureInsurance","allowInsurance","enableSecondMonthProrate","insuranceProvider","selectProvider","insuranceSetup","insuranceProviderNumber","insuranceAgencyCode","insuranceAgencyCodePlaceholder","insuranceProviderNumberPlaceholder","requirePolicyId","printAddendum","printAddendumNoPolicy","ratePlan","selectPlan","scheduleReport","sendReport","selectReportRecurrence","insuranceProviderEmail","insuranceProviderEmailPlaceholder","setupAdvanceOptions","coverageEndDate","coverageStartDate","enterStartDate","enterEndDate","enterCoverageAmount","enterMonthlyPremium","advanceOptions","selectPlansAdvanceOptions","advanceOptionsSuccessful","advanceOptionsFailed","paymentLoginLabel","refundLoginLabel","invalidFutureDate","syrapayMerchantPortal","transactionSearch","transactionSearchSubtitle","reverseOpenTransactions","reverseOpenTransactionsSubtitle","reverseSettledTransactions","reverseSettledTransactionsSubtitle","reporting","reportingSubtitle","virtualTerminal","virtualTerminalSubtitle","terminalManagement","terminalManagementSubtitle","pciManagement","pciManagementSubtitle","nMatchesFound","n","createDifferentTenant","editThisTenant","validUrlError","agreement","termsAndConditions","proceed","tenantChangesExternalActivity","currentEmail","newEmail","currentPhone","newPhone","tenantChangesUpdatedSuccess","addressChanges","emailChanges","phoneChanges","alternateContactChanges","markAsRead","approve","decline","noAddressChangesRequested","noAlternateContactChangesRequested","noExternalActivity","tenantChangesTitle","previousAddress","updatedAddress","previousAlternateContact","updatedAlternateContact","newValue","oldValue","deactivateNotAllowed","chargeCategoryDeactivateWithDeps","chargeCategoryDeactivateWithoutDeps","paymentMethodDeactivateWithDeps","paymentMethodDeactivateWithoutDeps","taxCodeDeactivateWithDeps","taxCodeDeactivateWithoutDeps","promoPlanDeactivate","maintenanceEventDeactivate","generalDeactivateAlertMsgWithDeps","unitTypeDeactivateWithDeps","unitTypeDeactivateWithoutDeps","taxExemptCategoryDeactivateWithDeps","taxExemptCategoryDeactivateWithoutDeps","allManualTriggerLateEvents","allManualTriggersLateEventExitMsg","automaticEventRecurringOrLockoutMsg","automaticEventOneTimeMsg","automaticEventDollarPerDayMsg","waitingListOptionalMsg","moveToWaitingList","informTenantsUnitNotAvailable","waitingList","customerType","requestedOn","cancelWaitingListConfirmation","reject","waitingListEmpty","waitingListRejectedMessage","noExit","acceptWaitingReject","enquiredOn","addToWaitList","editWaiting","waiting","addToWaiting","editWaitListEntry","enquiryDetails","enquiryDate","enquiryComments","waitingCreated","waitingModified","waitingListAlert","unitTypeAvailableMessage","customersWaitingOnUnitType","changeTracking","showNotificationsForMoveIn","showNotificationsForReservation","showNotificationsForPayment","changeTrackingNote","paidOn","emailForMoveIn","emailForReservation","emailForPayment","emailForTenantChanges","notifyViaEmail","commaSeparatedEmailNote","letterUtility","letterSpecifications","mergeFields","previewLetter","deliverLetter","attemptingLetterDelivery","previewing","generateNow","generateLease","generateNewLease","leaseGenerationSuccess","leaseGenerationFailed","generateLeaseNote","unitsRented","selectFailedBatch","printFailure","reprintDocumentSuccess","printing","emptyLetterTemplate","pdfViewerNotSupported","documentDownloadError","failedToFetch","wsUpdatePrintFailures","contactInformation","isMoveInTenantDepositChargedLabel","isReservationDepositChargedLabel","billTenantsEveryMonthLabel","moveOutChargesLabel","depositAmount","isRentTaxable","isRetailItemsTaxable","facilitySetup","unitAndTenantAssociation","taxCodeSetupSuccessful","unitTypeSetupSuccessful","taxCodeSetupFailed","facilitySetupFailed","facilitySetupSuccessful","basicInfoUpdated","onboardingSetupComplete","goOverOtherConfigurations","stateTaxDescription","retailTaxDescription","unitTypeDetails","createExistingUnitTypes","deleteUnitDetail","createExistingTenant","tenantDetailsSetup","createUnits","slNo","unitSize","unitCategory","unitRateMo","tenantFirstName","tenantLastName","tenantEmail","tenantPhone","unitCategoryList","sandbox","pullToSandbox","mySandbox","pullNewData","selectFacility","pulledBy","dateAndTime","data","liveDataLabel","sandboxData","pullData","pullingData","sandboxCreatedSuccessfully","doNotBringForward","tenantMobileNumbers","tenantEmailIds","idProofDetails","ccTokens","preparingToPull","pullFailed","tablesPulled","tryAgain","fetching","noDoNotPull","yesOverride","sandboxExists","doYouWishToOverride","fetchingDocuments","configurationSetupIsPending","facilityInformation","facilityStatus","facilityNumber","facilityAbbreviation","facilityAddress","setUpFacilityName","setUpStatus","setupConfigurations","thereAreNoUsersTaggedToThisFacility","userSetUp","userList","accountDetails","setUpStatusPending","setUpStatusCompleted","activateFacilityConfirmation","deactivateFacilityConfirmation","yesDeactivate","yesActivate","facilityActive","facilityExpired","createNewAccount","createNewFacility","userCreate","userEdit","previewNewDepositLog","createNewDepositLog","selectPreviouslyGeneratedLogs","generate","previewLog","createNewDepositLogAlert","generateNewLog","noLogsWereGeneratedPreviously","reGenerate","please","noNewData","companyName","qbSyncMessage","lastSynced","editCompany","qbSyncStarted","connectToQuickbooks","noKeepIt","yesRemove","removeConnectionText","areYouSureText","removeConnection","removedConnectionSuccess","tenantDetailSuccess","tenantDetailError","migration","migrationListEmpty","migrationStage","createMigration","version","dumpDate","customComments","migrationServerStatus","migrationServer","accountSelection","viewMigrationStatus","startMigration","deleteMigratedData","preMigrate","editMigration","migrationDeleteConfirmation","migrationConfirmation","deleteYesButton","deleteNoButton","migrateYesButton","migrateNoButton","searchFacility","format","validate","migrate","verify","viewDownload","repair","searchAccountNoOrName","searchFacilityNoOrName","unitOccupancy","revenue","occupancyTrends","averageRentalDuration","revenueComparison","viewList","noOfMonths","noOfUnits","errorLoadingInfo","tryAgainPlease","activeReservations","totalUnit","unitsLateEvent","unitsMaintenance","totalLeadConverted","website","referral","walkIn","deposits","totalRentCollected","totalTaxCollected","lateCharges","services","others","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","activeTenant","delinquentTenant","autopayEnabledTenant","peopleWaiting","currentRevenue","expectedRevenue","vehicle","vehicleInformation","make","model","year","licensePlate","registrationNumber","registrationExpiryDate","registerExpiryDate","enterRegisterDate","vin","vehicles","notifyTenantInsurance","notifyTenantRegistration","insuranceExpiration","registrationExpiration","notifyBefore","priorToExpiry","addendumLetter","generateAddendumLetter","generateAddendumOnAddOrEdit","generateAddendumOnUnitTransfer","showMore","showLess","noRefundAmount","return","unitAssociation","associated","notAssociated","editVehicle","vehiclesListEmpty","openVehiclesAssociated","openTenantVehicle","addVehicle","noVehiclesAdded","titleHolder","titleNumber","lienHolder","photo","associateUnit","vehicleId","vehicleType","enterVehicleType","vehicleMake","enterBrandName","vehicleModel","enterModelName","vehicleLaunchYear","enterlaunchYear","enterLicensePlateNumber","engineNumber","mileage","vehicleLength","vehicleHeight","vehicleWidth","vehicleColor","carrier","enterCarrierName","enterPolicyNumber","coverageLevel","vehicleValue","vehiclePolicyNumber","close","tenantInfoSaved","removeVehicle","transferToNewUnit","weHaveVehicleAssociatedWith","doYouWantToTransferVehicleTo","orRemoveFrom","deactivateVehiclesAssociated","export","exportFailed","selectBatchType","creditCard","batchId","totalLedgersProcessed","batchPaymentMode","viewBatchDetails","successfulTransactions","failedTransactions","balanceThatTime","creditCardType","declineCode","creditCardBatchPayment","achBatchPayment","createCCBatch","paymentPreference","surchargeOrDiscount","receipt","ccDeclinedLetter","processBatchPayment","batchProcessingStarted","paymentMode","importSampleLetters","sampleLetters","sampleLetter","import","importing","sampleLettersAddedSuccessfully","sampleLettersImportedSuccessfully","searchLetterTemplate","mergeFieldFetchFailed","fetchingLetter","sampleLetterAddedSuccessfully","enterUpcId","preview","vehicleDeactivateConfirmation","vehicleActivateConfirmation","nextArrow","accessPointContactHeader","accessPointContactHotlineHeader","accessPointContactCustomerSupportEmailHeader","accessPointContactTeamViewerHeader","accessPointContactPhoneNumberLabel","accessPointContactTechSupportLabel","accessPointContactCustomerSupportLabel","accessPointContactTeamViewerLabel1","accessPointContactTeamViewerLabel2","financialExport","classDescription","accountingMethod","transactionGrouping","incomeCategorization","transactionConfiguration","alternateDescriptions","accountReceivables","undepositedFunds","exportMethod","downloadingFile","exportNote","bulkUpdateUnitType","bulkUpdate","leaseStyleUpdatedSuccessfully","overview","otherFeatures","documents","communications","deliquentTenant","list","reprintDocument","consolidated","changePrinter","printerDetails","printerLabel","printerSelectionNoteUnavailable","printerSelectionNoteAvailable","changeTenant","markOptionalField","overrideCCWarning","removeEntry","dateOfFailure","reasonForFailure","paymentAttempts","attempt","filter","declinedCardRemovedSuccessfully","unableToRemoveDeclinedCardEntry","removeDeclinedCardEntry","removeCardEntryFromList","viewDeclinedLetter","letterWasnotGenerated","noDeclinedCreditCards","acceptedCsvFormat","importTenants","importUnits","unitDetailSuccess","unitDetailError","enterEmailHerePrefix","enterEmailPrefix","importFailedHeaderValidation","manuallyImport","configurationDeactivatePermission","configurationDeactivatePermissionLabel","createOrEditConfigs","createOrEditConfigsLabel","financialsConfigLevel","financialGrouping","financialGroupingLabel","unitTypeConfigLabel","tfwConfigPerm","tfwConfigPermLabel","custRelatedPerm","custRelatedPermLabel","occupancyPermLabel","delinquencyAndGates","delinquencyAndGatesLabel","letterPermLabel","letterConfigPerm","delinquencyTracking","selectFacilityToProceed","chargedDate","arID","delinquencyEvents","facilityType","selectGateVendors","nonAnniversary","searchFor","delinquencyOverview","noDaysLate","lateBillSince","eventApplied","appliedDate","automatic","syncEvents","schedulerCreate","configuredEvents","exemptedFrom","selectExemptedFrom","tenantStatus","tenantInactiveReservationCancellation","next30Days","searchTenantForScheduling","schedulerCreateInfo","lateBillSinceDate","eventTrigger","daysLeftAndGraceAmount","schedulersCreationFailed","schedulersCreationSuccess","scheduleMissingSchedulers","editSchedule","deleteScheduledEvent","schedulerUpdatedSuccessfully","schedulerDeletedSuccessfully","syncingLateEvents","editEffectiveDate","nachaUpdatedSuccessfully","willNotify","uploadFiles","viewFiles","uploadOrViewFiles","acceptedPdfFormat","fileName","uploadedDate","fileSize","deletePhotoMessage","yesDelete","addDocuments","exceededFileLimit","exceededFileSize","mb","emailAudit","backToConversations","emptyEmailAudit","timeStamp","hasAttachment","journal","modifiedEffectiveDate","searchConfiguration","config","modifiedBy","newValueJournal","oldValueJournal","journalListEmpty","searchDescription","delinquencyId","unitOverlock","selectUserRole","selectUser","roleUpdatedText","additionalEmails","additionalEmailConfiguredMsg","additionalEmailCommunicationMsg","additionalEmailDuplicateCheckMsg","primaryEmailInAdditionalEmailErrorMsg","cc","viewEmail","billingAndAllocation","thirdPartySupport","billingSettings","selectRentAdjustmentId","showApiKey","hideApiKey","regenerateApiKey","apiKeyRegeneratedSuccessfully","violations","violationConfiguration","noViolationFound","processViolations","violationCreated","configureViolations","selectViolations","bulkDepositUpdate","currentDeposit","updatedDeposit","enterNewDeposit","depositsUpdated","searchForUnit","searchForTenant","otherBatchPaymentFormTitle","amountPaying","payInFull","registrationExpiresBetween","insuranceExpiresBetween","eligibleDocumentsToBeDelivered","noDocumentsToDeliver","deliverDocuments","deliverRegistrationExpiryLetter","deliverInsuranceExpiryLetter","insuranceExpiryDate","CURRENCY_MAP","Usd","Inr","PRIMARY_PHONE","mapEnum","enums","TIMEOUT","SESSION_TIMEOUT","VIEW","STATUS","RENT_ASSESSMENT_MODE","rentAssessmentMode","SOURCE","INTERNAL_SOURCE","internalSource","CONFIG_RESOURCE","createEnumMap","configResource","replace","match","toUpperCase","SEARCH_DOCUMENT_SOURCE","AUTO_SUGGEST_RESOURCE","UNIT","TENANT_LEAD","TENANT","LEAD","OCCUPANCY","MOVE_OUT","GLOBAL","YES_NO_LIST","SUFFIX","nameSuffix","SALUTATIONS","nameSalutation","CLIENT_HEIGHT","browsers","CLIENT_WIDTH","VERTICAL_PADDING","HORIZONTAL_PADDING","VERTICAL_PADDING_FOR_TABLET_UP","HORIZONTAL_PADDING_FOR_TABLET_UP","VERTICAL_PADDING_FOR_LAPTOP_UP","HORIZONTAL_PADDING_FOR_LAPTOP_UP","DATE_FORMAT","DATETIME_FORMAT","DB_DATETIME_FORMAT","TWELVE_HOUR_DATETIME_FORMAT","PRETTY_DATE_FORMAT","FULL_DATE_FORMAT","FULL_DATE_TIME_FORMAT","FULL_DATE_HYPHEN_FORMAT","FULL_YEAR_FORMAT","SHORT_YEAR_FORMAT","EXPORT_DATE_FORMAT","DETAILED_DATETIME_FORMAT","ACTIVATE","DEACTIVATE","EMPTY_FIELD_TEXT","EMPTY_DATE_TEXT","FEATURE","feature","ACTION_TYPE","actionType","DASHBOARD_TYPE","dashboardType","ENCRYPTED_ID_LENGTH","FORM_MODE","formMode","SLIDE_DIRECTION","slideDirection","TRANSITION_VARIANT","transitionVariant","INSURANCE_SOURCE","insuranceSource","TABLE_ROW_HEIGHT_VARIANT","ONE_LINER","TWO_LINER","THREE_LINER","FOUR_LINER","HEADER_ONE_LINER","HEADER_ONE_LINER_RESPONSIVE","HEADER_TWO_LINER","HEADER_TWO_LINER_RESPONSIVE","RESERVATION_STATUS","reservationStatus","DELINQUENCY_STATUS","DELINQUENCY_SCHEDULED_STATUS","delinquencySchedulerStatus","TABLE_STATE","ENTITY_LEVEL","entityLevel","LOCKOUT_TYPE","lockoutType","DELETE_OVERLAY_ACTION","DELETE_OVERLAY_DELETION_STATUS","USER_TYPE","userType","LETTER_EDITOR_SOURCE","letterEditorSource","WS_EVENT_TYPE","wsEventType","WS_EVENT_SOURCE","wsEventSource","EMPTY_FUNC","EMPTY_STRING","EMPTY_OBJECT","EMPTY_LIST","SEARCH_DATE_FORMAT","SEARCH_MAX_SIZE","COMPARISON_OPERATION","comparisonOperation","UNIT_AGGREGATION","unitAggregation","TIME_WINDOW","MILITARY_TYPE","militaryType","MILITARY_BRANCH","militaryBranch","NONE_OPTION","REPORT_TYPE","reportType","TRANSACTION_TYPE","transactionType","RENT_ASSESSMENT_STATUS","ALL_ROUNDING_TYPES","ONE_MINUTE","FIVE_SECONDS","FIVE_MINUTES","NUMBER_OF_DAYS_IN_WEEK","MAX_WEEKS_IN_MONTH","TOKEN_TYPE","tokenType","DOCUMENT_TYPE","TENANT_CHANGE_TRACKING_STATUS","tenantChangeTrackingStatus","TENANT_CHANGE_TYPE","tenantChangeType","OTHER_EXTERNAL_ACTIVITY_TRACKING_STATUS","otherExternalActivityTrackingStatus","CARD_PROCESSOR_TRANSACTION_STATUS","cardProcessorTransactionStatus","SETUP_STATUS","RENT_TAXABLE_YES_OR_NO_LIST","OCCUPANCY_CHARGE_OPTION_LIST","MOVE_IN_BILL_EVERY_MONTH_OPTIONS_LIST","MOVE_OUT_CHARGES_OPTIONS_LIST","ACTIONS","Prorate_Out","Do_Nothing","RETAIL_ITEMS_TAXABLE_YES_OR_NO_LIST","SMALL_TEXTFIELD_WIDTH","DROPDOWN_MAX_HEIGHT","DEMO_FACILITY_ID_LIST","OS_LIST","osList","MAC_PLATFORMS","IOS_PLATFORMS","BATCH_PAYMENT_MODE","BATCH_PAYMENT_TASKS","batchPaymentTasks","BATCH_DETAIL_TYPES","summaryStatus","CHARGE_STYLE_CONFIG","chargeStyleConfig","FACILITY_ACTION_TYPE","facilityActionType","DELINQUENCY_ACTION_TYPE","delinquencyActionType","CONFIGURATION_STORE_TYPE","configurationStoreType","FACILITY_LICENSE_STATUS","facilityLicenseStatus","DOCUMENT_STATUS","documentStatus","CONFIGURATION_TYPE","configurationType","MODE","icon","CALENDAR_VIEW_TYPE","calendarViewType","useStyles","makeStyles","typographyStyle","Typography","props","fontStyle","fontFamily","className","disabled","classes","clsx","propTypes","PropTypes","oneOf","string","bool","defaultProps","labelFormatter","valueFormatter","enumList","formatter","valueTransformer","enumMap","forEach","keyFormatter","underScoreFormatter","val","enumMapToReturn","enumKey","pathFormatter","path","replacementChar","media","smallMobile","screenMinWidth","screenMaxWidth","mobile","mobileUp","phablet","phabletUp","tablet","tabletPortrait","tabletLandscape","tabletUp","laptop","laptopUp","desktop","desktopUp","toVal","mix","k","y","str","push","length","call","args","x","i","getRegexPattern","RegExp","processTouchedKeys","flattenedObject","keyToPush","processedTouchedObject","Object","keys","flattenedKey","exec","matchedPath","flattenObject","ob","toReturn","hasOwnProperty","flatObject","isValidValue","isPureObject","object","constructor","getFieldName","includes","isValidObject","obj","isObjWithKeys","isNonEmptyArray","array","Array","isArray","isEmptyArray","getObjWithKeys","undefined","setValue","property","localObj","fieldNames","lastField","pop","traversedObject","fieldName","element","index","prop","getValue","TypeError","objToTraverse","deepCopy","hasValue","isPrimitiveType","getDiffProperties","src","dest","options","excludeNullUndefinedOnly","properties","diffSrc","excludeProperties","keysList","noOfKeys","diffObj","allFlattenedKeys","flattenedKeys","valueAgainstKey","objToCheck","otherObj","objToCheckValue","isValidObjToCheckValue","otherObjValue","isValidOtherObjValue","flattenedTouchObject","keysToWhitelist","whiteListedTouchedKeys","keyToWhiteList","excludedKey","splitKeys","join","getBaseRegexPathAndKey","getWhitelistTouchedKeys","pathMatched","unflatten","removeEmptyElementsFromArray","arr","ele","extractValueFromObject","firstKey","setObjectValueWithDefault","objCopy","toObject","reduce","dict","capitalize","global","charAt","slice","deCapitalize","toLowerCase","pascalCaseWithUnderscore","camelCase","convertCamelCaseToWords","text","isNumber","isNaN","parseFloat","isFunction","prototype","toString","Function","b64Decode","window","atob","b64Encode","btoa","extendListToSize","size","defaultValue","fill","map","compareArray","array1","array2","arrayObject","item","every","sortArray","sortKeys","ensureArray","a","b","startsWith","realKey","substring","aValue","getIn","bValue","comparison","localeCompare","removeFalseKeys","entries","getEditEndpoints","sourceToUpdate","AUTH_ENDPOINTS","UPDATE_SESSION_TIMEOUT","TFW_AUTH_ENDPOINTS","decryptApiKey","configId","DAILY_SUMMARY_ENDPOINTS","viewBatch","BATCH_PAYMENT_ENDPOINTS","ledgerSearch","aggregation","RENT_ASSESSMENT_ENDPOINTS","history","ACCOUNT_ENDPOINTS","FACILITY_ENDPOINTS","searchAll","regenerateInvalidCodes","fid","acceptLegalAgreement","BUSINESS_GROUP_ENDPOINTS","MOVE_IN_ENDPOINTS","RENTAL_ENDPOINTS","prerequisite","UNIT_ENDPOINTS","createUnit","getNextAmountPayable","bulk","nradChange","count","rateHistorySearch","rateHistoryReverse","rateHistoryId","rateHistoryWaive","chargesAfterAdjustment","insuranceInfo","saveInsurance","cancelInsurance","syncColor","autoSuggest","TX_ENDPOINTS","token","mergeAndGenerate","info","CONFIG_ENDPOINTS","taxCodeBulk","chargeCategoryBulk","placeholderBulk","getDependencies","configType","UNIT_CONFIGURATION_ENDPOINTS","unitBulk","TENANT_ENDPOINTS","tenantAlertSearch","contactLogSearch","tenantAlertBulk","contactLogBulk","bulkSendSignUpLink","tenantId","tenantVehicleBulk","tenantVehicleSearch","tenantDocumentUpload","invalidCodeLedgerCount","RETAIL_SALE_ENDPOINTS","getOrderInfo","vendorSearch","inventoryCount","purchaseOrderSearch","orderDetailForPurchaseOrder","purchaseOrderId","returnsCount","RESERVATION_ENDPOINTS","PAYMENT_ENDPOINTS","ESTIMATE_ENDPOINTS","REPORT_WC_ENDPOINTS","reportId","FINANCIAL_ENDPOINTS","arSearch","createManualCharge","arAggregation","nsfCharge","calculateRefundAmount","authenticateCardProcessorIntegrator","getSyrapayDevices","deleteUnusedTokens","stripeIntent","createViolation","DOCUMENT_ENDPOINTS","searchForInternalConsole","docType","redeliver","bulkDeliver","generateDocument","ACH_ENDPOINTS","searchTransactions","generateNacha","downloadNacha","updateNacha","MOVE_OUT_ENDPOINTS","POST_MOVE_OUT_ENDPOINTS","complete","OPERATIONS_ENDPOINTS","MAINTENANCE_OPERATION_ENDPOINTS","getUpdateEndpoint","eventId","getStatusChangeEndpoint","MAINTENANCE_EVENT_ACTION_ITEM","Mark_as_pending","Complete_Event","Close_Event","CONVERSATION_ENDPOINTS","listText","searchText","searchEmail","unreadCount","sendText","sendEmail","listEmail","selectedConversation","LEAD_ENDPOINTS","DELINQUENCY_ENDPOINTS","wcSearch","wrongEntries","updateSchedulers","searchSchedulers","createMissingSchedulers","syncDelinquencySystem","searchMissingSchedulers","PENDING_TASKS_ENDPOINTS","applyLateEventsCount","printFailuresCount","pendingInvoiceDeliveryCount","vehicleAboutToExpiryCount","REMINDER_ENDPOINTS","UNIT_TRANSFER_ENDPOINTS","STANDALONE_APP_ENDPOINTS","createAndDownload","ONBOARDING_ENDPOINTS","occupancyConfigs","saveTenant","saveUnit","RENT_ADJUSTMENT_ENDPOINTS","getStopEndpoint","rentAdjustmentId","fetchWarningData","fetchRentAdjForUnits","GATE_ENDPOINTS","CARD_PROCESSOR_TRANSACTION_ENDPOINTS","ZIP_CODE_ENDPOINTS","TENANT_CHANGE_TRACKING_ENDPOINTS","WAITING_LIST_ENDPOINTS","OCCUPANCY_HISTORY_ENDPOINTS","DEPOSIT_LOG_ENDPOINTS","SANDBOX_ENDPOINTS","DASHBOARD_ENDPOINTS","PRINTER_ENDPOINTS","VEHICLE_ENDPOINTS","USER_ENDPOINTS","checkIfEmailExists","PRINT_FAILURES_ENDPOINTS","reprint","JOURNAL_ENDPOINTS","getSnackbarProps","isSnackbarOpen","title","variant","VARIANT","success","subtitle","onSnackbarMount","isPrintDeliveryMethod","DELIVERY_METHOD","Print","Print_And_Email","isTextDeliveryMethod","Text","isEmailDeliveryMethod","Email","isBetween","min","max","debounce","func","timeout","inDebounce","clearTimeout","setTimeout","maskCharacters","stringToMask","noOfCharsToRemainUnmasked","character","regex","removeWhiteSpaceAndSpecialChars","convertToNumber","Number","trimmedValue","trim","NaN","isExternalDashboard","url","location","pathname","isInternalDashboard","isSettings","isLiveSettings","isPulledSettings","isConfiguration","isReports","isLiveData","isPulledData","isNegative","setDifference","set1","set2","Set","has","setUnion","union","isKeyPrefixForField","field","fieldKeys","eachKey","isStaging","isProduction","getJsonFromUrl","query","substr","indexOf","part","decodeURIComponent","getPlatformOs","navigator","userAgent","userAgentData","platform","macosPlatforms","iosPlatforms","os","WINDOWS","MAC","IOS","test","ANDROID","LINUX","restrictInputToNumericKeys","e","keyCode","preventDefault","isValidNumber","number","isSyrasoftUser","savedUserType","Standard","isSyrasoftAdminOrDevLead","Admin","Dev_Lead","isMigrationUser","Migration","isMigrationUserId","userId","isSyrasoftSales","Sales","Icon","PureComponent","renderIcon","this","renderCustomIcon","color","fullWidth","noCursorPointer","iconProps","cpIcon","cy-id","renderFontIcon","children","renderSvgIcon","d","render","node","withStyles","iconStyle","modes","positions","trianglePositions","triangleTypes","directions","defaultLevelLabels","eventTriggerTypes","entityType","placeholderType","KEY_CODES","LEFT","UP","RIGHT","DOWN","DELETE","SPACE_BAR","ENTER","ROTATE_BY","LEFT_RIGHT","NINETY_DEG","COUNT_TYPE","INCREMENT","DECREMENT","COUNT_RADIO_LIST","RENTAL_STATUS","bevEnums","DEFAULT_RENTAL_STATUS","VACANT","BEV_MODES","POSITIONS","TRIANGLE_POSITIONS","TRIANGLE_TYPES","DIRECTIONS","STATUS_TO_UPDATE_ON","LOADED","UPDATED","UNLOADED","INVALID","DEFAULT_LEVEL_LABEL","EVENT_TRIGGERED_BY_TYPE","TYPE_OF_ENTITY","PLACEHOLDER_TYPE","COLORED_SQUARE_BORDER_SHOW_TOLERANCE","Button","renderButton","renderBasicButton","light","buttonColor","forwardedRef","buttonProps","basicClassName","button","backgroundForErrorText","ref","renderIconButton","IconProps","iconType","iconColor","onClick","iconClassName","renderUploadButton","accept","multiple","displayNone","htmlFor","component","ButtonWithRef","React","forwardRef","buttonStyle","TOKEN_EXPIRED","LOADING","UPDATING","ERROR","PAGINATE_ERROR","QUEUED","RESOLVED","postProcess","apiResult","callback","dispatch","localReqOptions","err","response","timestamp","skipCustomPostProcessor","storeData","isQueued","curQueue","console","log","handleError","handleStatusError","textFieldStyle","TextField","trackValue","onChange","onRef","readOnly","stateValue","setStateValue","useState","textFieldRef","useRef","textFieldContainerRef","useEffect","current","useImperativeHandle","addon","form","multiline","dynamicMultiline","minWidth","typographyVariant","inputProps","inputClassName","otherInputProps","InputProps","textFieldInputProps","additionalIcon","left","right","overriddenClasses","InputLabelProps","inputLabelClasses","rateField","addonClassName","disableUnderline","alwaysShowError","onBlur","_ignore","inputInputClassName","otherInputInputProps","addOnProps","position","inputAdornment","defaultCursor","underline","inputRoot","marginTop","getInputProps","isNumberField","INPUT_TYPE","INTEGER","container","wrap","alignment","rightMarginIcon","textField","textFieldWidth","lightTextField","NUMBER","target","targetValue","shouldUpdateValue","splitValue","onKeyDown","input","onBlurCbProp","fixedValue","round","handleRateFields","root","labelRoot","shrink","leftMarginIcon","shape","start","end","autoComplete","oneOfType","SEARCH","StyledTextField","memo","displayName","FORM_COMPONENTS","TEXT_FIELD","FormTextField","Form","ITEM","MODIFIER_TYPE","PAYMENT_METHOD","REDUCER_ACTION","commonEnums","chargeStyles","PAYMENT_ACTION","BILLS_TABLE_LEFT_AND_RIGHT_PADDING","BILLS_TABLE_TOP_AND_BOTTOM_PADDING","BILLS_TABLE_MIN_HEIGHT","BILLS_TABLE_RESPONSIVE_HEIGHT","BILLS_TABLE_RESPONSIVE_WIDTH","FAILED_CVV_CODES","FAILED_AVS_CODES","HOSTED_FORM_ID","TRANSACTION_ID","ACCOUNT_TOKEN","HOSTED_FORM_DATA","HOSTED_PAYMENTS_RESPONSE","AUTHENTICATION_KEY","HOSTED_FORM_AUTH_TYPE","HOSTED_FORM_OPERATION","HOSTED_FORM_PAYMENT_SOURCE_TYPE","HOSTED_FORM_CARD_ENTRY_CONTEXT","ERROR_TYPE","setDefaultTimezone","moment","tz","setDefault","isValidDate","isValid","dateFormatter","removeTimeZoneAwareness","dateObj","utc","getDayName","noOfChars","getDay","getMonth","month","getYear","getMinOrMaxDate","dates","needsMin","filteredDates","getMinDate","getMaxDate","handleRequiredDateDataType","convertToString","addToDate","numberOfDeltas","timeDelta","DAYS","subtractFromDate","subtract","dateDiff","date2","date1","diff","getCurrentDate","getStartOfMonth","startOf","getStartOfYear","getStartOfLastMonth","getEndOfLastMonth","endOf","convertToMomentObj","compareDatesOrDatetime","compareOperation","EQ","granularity","dateObj1","dateObj2","isSame","NE","LT","isBefore","LTE","isSameOrBefore","GT","isAfter","GTE","isSameOrAfter","getFirstDateOfMonth","day","getLastDateOfMonth","createFormattedDate","getMonthStartingDayIndex","getStartOfWeek","getEndOfWeek","getDate","calculateWeeksInMonth","monthIndex","startDayOfWeek","firstDayOfWeek","firstOfMonth","numberOfDaysInMonth","used","Math","ceil","formComponents","inputType","useConstructor","isInitialRender","memoizedFuncValue","SM_FALSE","sm","SM_2","SM_3","SM_4","SM_5","SM_6","SM_7","SM_8","SM_9","SM_10","SM_11","SM_12","XS_3","xs","XS_6","MD_2","md","MD_4","MD_6","XS_12","XS_4","XS_8","XL_4","xl","XL_8","XL_9","SM_2_XS_4","SM_3_XS_4","SM_3_XS_6","SM_4_XS_8","SM_4_XS_6","SM_4_XS_12","SM_4_LG_5_XL_5_XS_6","lg","SM_5_XS_6","SM_5_XS_8","SM_6_XS_6","SM_6_XS_8","SM_6_XS_9","SM_6_XS_12","SM_8_XS_11","SM_8_XS_12","SM_3_LG_4_XL_3","SM_7_XS_12","SM_12_XS_12","SM_6_MD_3","SM_12_MD_6_LG_6","XS_6_MD_6_XL_4","XS_12_XL_6","XS_12_XL_4","XS_10","XS_5","XS_9","XS_6_MD_4","XS_8_MD_4","XS_6_MD_5","XS_6_MD_6","XS_12_MD_6","XS_12_MD_7","XS_12_MD_5","XS_12_MD_8","XS_5_XL_4","XS_FALSE","LG_12_MD_8_XS_12","SM_4_LG_6_XL_4","XS_4_LG_6_XL_4","XS_6_LG_8_XL_6","XS_12_XL_5","XS_10_MD_4_LG_4","XS_4_MD_2","XS_10_MD_6_LG_4","XS_6_MD_3_LG_2","XS_8_MD_4_LG_3","XS_12_SM_6_XL_5","XS_12_MD_6_LG_4","XS_12_SM_6","XS_12_LG_6","XS_9_LG_6","XS_4_MD_4_LG_2","XS_5_MD_3_LG_4","XS_9_MD_6_LG_10","XS_12_SM_12_MD_7_LG_6","auto_suggest_resource","omit","keysToOmit","acc","move","vendorPrefix","styles","getComputedStyle","documentElement","pre","OLink","setInlineStyles","setTranslate3d","translate","setTransitionDuration","duration","closest","el","fn","parentNode","limit","getPixelValue","stringValue","getElementMargin","bottom","marginBottom","marginLeft","marginRight","top","provideDisplayName","prefix","Component","componentName","getScrollAdjustedBoundingClientRect","scrollDelta","boundingClientRect","getBoundingClientRect","getPosition","touches","pageX","pageY","changedTouches","isTouchEvent","getEdgeOffset","parent","offset","nodeOffset","offsetLeft","offsetTop","getTargetIndex","newIndex","prevIndex","oldIndex","getLockPixelOffset","lockOffset","height","offsetX","offsetY","getLockPixelOffsets","offsets","minLockOffset","maxLockOffset","getScrollingParent","HTMLElement","computedStyle","overflowRegex","find","isScrollable","getContainerGridGap","gridColumnGap","gridRowGap","KEYCODE","TAB","ESC","SPACE","NodeType","Anchor","Canvas","Input","Option","Textarea","Select","cloneNode","selector","fields","querySelectorAll","clonedNode","tagName","getContext","drawImage","CheckboxGroup","super","propValue","itemIndex","checked","splice","setState","FormControlProps","otherProps","checkBoxProps","checkBoxValue","indexByValue","accumulator","getDerivedStateFromProps","nextProps","prevState","indexedList","arrayOf","setFieldValue","CheckoxGroupWithStyle","checkboxGroupStyle","CHECKOX_GROUP","FormCheckboxGroup","urls","onboarding","baseUrl","tenantCreate","tenantEdit","inventoryList","normalConfig","systemConfig","userRoleEdit","selectedId","userRoleCreate","INTERNAL_ROUTES","SYRASOFT_USER_ROLES","syrasoftUserRoleEdit","selectedUserType","accountsList","ACCOUNT_LIST","dailySummaryList","DAILY_SUMMARY_LIST","autoPayTaskSummary","summaryId","INTERNAL_PATHS","AUTO_PAYMENT","rentAssessmentTaskSummary","RENT_ASSESSMENT","autoInvoicingTaskSummary","AUTO_INVOICING","delinquencyTaskSummary","DELINQUENCY","tenantView","reservationList","unitEdit","reservationId","createWaiting","waitingId","leadEdit","mainEdit","settingsEdit","createNormalConfigForm","selectedLevel","selectedEntity","formName","createSystemConfigForm","editNormalConfigForm","targetId","editSystemConfigForm","normalConfigSubForm","subFormName","configSelection","configTarget","targetConfig","configTargetView","facilitySelect","configurationSelect","facilityFeatures","facilityCreateFeature","facilityListFeature","facilityPos","maintenanceEventForm","maintenanceEventFormEdit","reportSelect","selectedEntityId","userProfile","autoRentAdjustmentCreate","manualRentAdjustmentCreate","retailSaleReturns","setUpUserList","facilityView","facilityList","accountFacilityEdit","migrationDetails","migrationId","accountFacilityList","createCreditCardBatch","viewCreditCardBatch","viewAchBatch","singleUnitRentAdjustment","createOtherBatchPayment","createAchBatch","getBaseUrl","sandboxId","pathnameWithSandboxId","getSandboxIdIfExistsInPath","SETTINGS","INTERNAL","INTERNAL_MAIN","EXTERNAL","buildUrl","IS_MAX_LENGTH_5","IS_MAX_LENGTH_9","IS_MAX_LENGTH_10","IS_MAX_LENGTH_12","IS_MAX_LENGTH_15","IS_MAX_LENGTH_17","IS_MAX_LENGTH_20","IS_MAX_LENGTH_22","IS_MAX_LENGTH_23","IS_MAX_LENGTH_25","IS_MAX_LENGTH_30","IS_MAX_LENGTH_50","IS_MAX_LENGTH_254","IS_MAX_LENGTH_1024","IS_MAX_LENGTH_100","IS_MIN_LENGTH_3","isMinLength","IS_EMAIL","IS_VALID_ACCESS_CODE","IS_VALID_PASSWORDS","IS_ALPHANUMERIC","IS_VALID_FACILITY_ABBREVIATION","IS_INTEGER","isInteger","IS_POSITIVE_NUMERIC","ZIP_CODE_VALIDATOR","IS_NOT_EMPTY_STRING","isNotEmptyString","IS_NON_ZERO_POSITIVE_NUMERIC","isNonZeroPositiveNumeric","IS_VALUE_LESS_THAN_10","isGreaterThan","errorMessage","IS_COMMON_PASSWORD","isCommonPassword","IS_MAX_LENGTH_4","IS_MAX_LENGTH_11","IS_MAX_LENGTH_250","IS_VALID_EMAIL_PREFIX","TAX_RECEIPT_CODE_VALIDATOR","TYPES","INIT","REFRESH","PAGINATE","UPDATE","HEX_OPACITY","Theme","createMuiTheme","breakpoints","values","palette","typography","fontWeightLight","fontWeightRegular","fontWeightMedium","h2","letterSpacing","lineHeight","fontSize","h3","h4","h5","fontWeight","h6","caption","subtitle1","subtitle2","body1","body2","elements","helperText","hint","secondary","activeOrSelected","main","buttonOutlined","border","tooltip","common","black","hover","components","globalSearch","tenantCard","rightLabel","textAlign","badge","backgroundColor","white","leadCard","Name","unitCard","leftLabel","topNavAction","activeLink","sideNav","sideBar","contentColor","contentColoronHover","sidePanel","highlight","lineSeperator","footerContent","overlay","header","minHeight","actionItems","globalClasses","childrenPadding","paddingRight","paddingLeft","overflow","visible","overflowVisible","inner","subsectionPadding","innerSubsectionPadding","padding","subsectionChildrenPadding","multilineEllipsis","boxOrient","lineClamp","whiteSpace","textOverflow","deactivatedOverlay","opacity","zIndex","deactivateConfirmationFooter","spacing","hexWithOpacity","hexValue","boxShadows","overrides","MuiFormLabel","MuiFormControlLabel","MuiFormHelperText","PrivateSwitchBase","MuiIconButton","MuiButton","textTransform","outlined","outlinedPrimary","outlinedSecondary","dark","contained","textPrimary","MuiPickersDatePickerRoot","toolbar","flexDirection","alignItems","justifyContent","MuiPickersModal","dialog","MuiPickersToolbarText","toolbarTxt","MuiPickersYear","yearSelected","MuiPickersDay","MuiInputAdornment","MuiInput","borderBottomStyle","borderBottomColor","borderBottom","MuiInputBase","MuiAvatar","MuiTreeItem","content","MuiButtonBase","disableRipple","getRelationalDataMappedById","relationalData","relationalDataPerKey","nestedAcc","dataPerKey","mapRelationalData","processedData","isRelationalDataAlreadyMappedById","mappedData","nestedData","updatedRelationalData","eachData","dataKey","relationalDataKey","keyToReplace","accData","CENTER","TOP","CANVAS_CONFIG","selectionKey","selectionFullyContained","hoverCursor","preserveObjectStacking","theme","selectionColor","renderOnAddRemove","DEFAULT_VIEWPORT_TRANSFORM","CANVAS_DIMENSIONS","setupModeDimensions","viewModeDimensions","CANVAS_BOUNDARY_CONFIG","selectable","OBJECT_CONFIG","hasBorders","perPixelTargetFind","cornerSize","_controlsVisibility","bl","br","ml","mr","mt","tl","tr","mtr","UNIT_CONFIG","getMagnification","isFacilityMigrated","DEFAULT_BACKGROUND","defaultUnitBackground","PADDING","TOP_BOTTOM_TOOLTIP_PADDING","LEFT_RIGHT_TOOLTIP_PADDING","TOOLTIP_OFFSET_FROM_POINTER","RECT_CONFIG","stroke","originX","originY","strokeUniform","LABEL_CONFIG","TRIANGLE_CONFIG","TOOLTIP_TEXT_CONFIG","TOOLTIP_BODY_CONFIG","shadow","TOOLTIP_CONFIG","getLabelOverflowTolerance","ERRED_COLOR","erredUnit","ZOOM_BY","IN","OUT","ZOOM_LIMITS","UPPER","LOWER","ZOOM_VALUE_DISPLAY_OFFSET","shortcuts","defaultNewObjXY","INITIAL_REQUIRED_FIELDS_CONFIG","Dropdown","onClickAway","open","getDefaultValue","multiselect","onChangeMultiSelect","unshift","onChangeSingleSelect","prevValue","newState","renderValue","singleSelectValue","curValue","renderLabel","optionalFormatter","isListEmpty","componentDidMount","componentWillUnmount","maxHeight","PopdownProps","textFieldClasses","noOptionsMessage","inputRootClasses","inputDisabledClasses","inputClasses","ListItemProps","listItemClassName","dropdownClassName","clearable","restProps","dropdown","stopPropagation","iconArrowDown","paper","TextFieldClasses","PaperProps","square","align","listItem","isDisabled","onClickProp","selected","formControlLabel","control","DropdownComponent","dropdownStyle","DROPDOWN","FormDropdown","isMergeableObject","cloneIfNecessary","optionsArgument","deepMerge","defaultArrayMerge","destination","arrayMerge","mergeObject","JSON","parse","stringify","LabelWithIcon","enablePointerEventsWithoutOnClick","labelWithIcon","noPointerEvent","addonStart","addonEnd","labelWithIconStyle","tooltipStyle","Tooltip","onOpen","onClose","disablePortal","tooltipTargetClassName","_","deviceInfo","isDesktop","isOpen","setIsOpen","isEventOnClick","useMemo","EVENT","ON_CLICK","handleOpen","handleClose","eventProp","listenersToDisable","DISABLED_LISTENERS","renderTooltip","arrow","interactive","popper","arrowShadow","lightTooltip","PopperProps","TransitionProps","DEFAULT_TRANSITION","tooltipTarget","mouseEvent","ON_HOVER","colorPalette","pieColorRange","horizontalBarColorRange","verticalBarColorRange","bar","graphLoading","tertiary","section","pulledData","100","information","rtns","slider","background","chip","reserved","expired","inactive","created","locked","cancelled","upcoming","leadDuplicate","leadLost","moveout","rolesGroup","gradient","direction","color1","colorStop1","color2","colorStop2","200","300","400","500","600","700","800","textHighlight","disabledTextHighlight","red","inheritedConfig","reminderCard","setUp","pending","offWhite","notStarted","dumpGenerationSuccess","inProgress","completed","errored","deleted","serverActive","serverInactive","transparent","ribbon","checkBoxStyle","Checkbox","formLabelClassName","FormControlLabelProps","formLabelClass","otherLabelProps","checkboxClasses","propOnChange","currentValue","renderCheckbox","checkedIcon","indeterminateIcon","formLabel","InheritedConfigLabel","CHECKBOX","FormCheckbox","getName","suffix","businessName","salutation","lastNameFirst","optionsFormatter","restValues","getOptionProps","POSITION","SNACKBAR_POSITION","TOP_CENTER","vertical","horizontal","AUTO_HIDE_DURATION","convertWH","getConvertedWH","reconvertWH","getReconvertedWH","getActualAngle","angle","actualAngle","floor","getEntitiesDataFromCanvas","entity","fabricCanvas","entities","getObjects","singleEntity","tempId","_objects","rectObj","textObj","isEntityUnit","Unit","isEntityPlaceholder","Placeholder","additionalInfo","includeInRentableInventoryCount","getProcessedBevValues","unprocessedBevValues","setTextAngleToZero","actObject","selectionAngle","rectObjAngle","angleToSet","set","setCoords","getTooltip","fabricInstance","tooltipBody","Rect","tooltipText","Group","getFontSize","zoomValue","numericZoomValue","getEllipsesTextObj","ellipsedText","zoomToSet","getActualCanvasCoords","cornerCoord","unitCoords","getCoordinate","axis","getReducedActualLabelCanvasCoords","allLabelCornerCoords","amountToReduce","actualCanvasCoords","getEllipsedText","fabricCanvasInstance","overflowing","originalTextWidth","__charBounds","characterBoundsArray","_text","originalTextArray","individualCharWidths","char","minCharWidth","widthToReduce","some","reducedActualCornerCoord","isTargetTransparent","allowedWidth","addedWidth","calculateYIQRatio","hexColor","unitBackgroundColor","hex","parseInt","getAppropriateTextColor","backgroundHexColor","calcTriangleDimension","unitWidth","unitHeight","dimensionValue","getNextLabel","formValues","isActiveObjectAvailable","countType","oldLabel","change","splitOldLabel","alphaPart","numberPart","newNumber","padLength","padStart","getUnitDetails","unitTypeData","unitBevData","unitIdTenantMapper","unitIdReservationMapper","Month","standardMonthlyRate","unitBevObj","gateAccess","unitGateAccessStatus","unitAvailabilityStatus","ledgerIdCurrent","categoryResult","totalBalance","filteredLedgerArray","entry","lastPaidDate","lastPaidAmount","reservedFirstName","reservedLastName","memoize","resolver","cache","Map","get","RangeFilterStyle","RangeFilter","isDateRange","fromAndToPlaceholder","disableFuture","disablePast","classesProp","formProps","componentProps","clearLabel","FormDatePicker","DATE_RANGE_WIDTH","dateRangeLabel","restLabel","justify","noGrid","noIndicatorWrapper","autoWidth","fromRange","toRange","DatePicker","componentMounted","formatDate","dataType","setFieldTouchedOnChanged","setFieldTouched","setOpen","anchorEl","createRef","keyboard","PopoverProps","isClickable","openPickerOnInputFieldFocus","other","MuiDatePicker","MuipKeyboardDatePicker","MuipDatePicker","popoverProps","role","utils","MomentUtils","rootRef","datePickerContainer","TextFieldComponent","allowKeyboardControl","datePickerIcon","autoOk","instanceOf","Date","StyledDatePicker","datePickerStyle","DATE_PICKER","DatePickerForm","isDate","isPastDate","isFutureDate","roundingTypeToMathFuncMap","Nearest_Cent","Round_To_Nearest_Dollar","Round_Up_To_Nearest_Dollar","Round_Down_To_Nearest_Dollar","precision","returnAsString","multiplier","modifiedValue","innerMathFunc","roundedValue","toFixed","DROPDOWN_PRINTER_SELECTION_TYPES","ADDITIONAL_DELIVERY_METHOD","PRINT_COPIES_TEXTFIELD_WIDTH","RETRY","INTERVAL","alertDialogStyle","AlertDialog","hideCloseButton","useContentText","dialogClasses","DialogTitleProps","DialogContentProps","DialogContentTextProps","DialogActionProps","disableBackdropClick","transitionDuration","aria-labelledby","aria-describedby","BackdropProps","backdrop","positionRelative","dialogTitle","closeButton","iconSize","multiSelectStyle","MultiSelect","onSelect","onRemove","initiallySelectedValues","selectedValuesInitialState","componentContainerLabel","chipContainerLabel","showComponent","emptyValueMessage","containerProps","allowDelete","chipProps","tooltipProps","showRequiredIcon","apiConfig","selectedValues","setSelectedValues","selectedValue","setSelectedValue","mappedListData","isOfflineSearchableDropdown","searchableDropdownProps","inputValueFormatter","keyToMatch","updatedData","listData","mappedInitiallySelectedValues","onSelectValue","updatedSelectedValues","onRemoveChip","__","idToRemove","renderInputComponent","InputContainer","indicatorWrapper","indicator","chipWrapper","tooltipContainer","placement","ellipsis","tooltipDisabled","noWrap","tooltipLabel","onDelete","chipLabel","SmartSearchableDropdown","SearchableDropdown","Link","LabelWithIconProps","activeClassName","isActive","linkProps","isRouteActive","reactlink","abbr","appliedRoles","RowSelector","AppliedRole","Ellipsis","commentsFormatter","useFormatter","formattersRequested","stylesheet","roleSelectionStyle","ENTITY_TYPE","renderLabelCheckbox","listType","checkbox","getFacilityColumns","getBusinessGroupColumns","getAccountColumns","userActionItem","errorCode","storeKeyToEntityTypeMapping","USER_ACTION_ITEM","ERROR_CODE","BAD_REQUEST_STATUS_CODE","USER_MANAGEMENT_PERMISSION_KEY","BUSINESS_GROUP_MANAGEMENT_PERMISSION_KEY","FACILITY_MANAGEMENT_PERMISSION_KEY","MAIN_CONTENT_PADDING","MAIN_PADDING","DESKTOP_UP","MOBILE_MAIN_CONTENT_PADDING","DEFAULT","TABLET_MAIN_CONTENT_PADDING","TABLET_UP","SIDEBAR_OPEN_EXTRA_SPACE","SIDEBAR_CLOSE_EXTRA_SPACE","PAGE_TOP_MARGIN","LAPTOP_PAGE_TOP_MARGIN","MOBILE_PAGE_TOP_MARGIN","TABLE_HEADER_CONTENT_MARGIN","CAN_I_SHOW_CONFIG","appliedFilter","isMobile","isTablet","isPhablet","SEARCH_TYPE","FILTERS_AND_SORTS_HEIGHT","ACTION_ITEMS_PANEL_HEIGHT","NODE_STATE","UNCHECKED","INTERMEDIATE","CHECKED","TEXTFIELD_ADDON","CHECKBOX_PROPS","useField","COOKIE_KEY","TOKEN","DEFAULT_FACILITY_ID","BUILD_VERSION","PAYMENT_TOKEN","setCookie","cookieName","cookieValue","exDate","cookie","toUTCString","getCookie","ca","c","deleteCookie","cname","setTime","getTime","expires","toGMTString","extraProps","requestedProps","FormHOC","getError","errors","initialValues","validateFields","componentValidate","allValidators","nonRequiredFieldErrors","validateFunctions","validateFuncName","validateFunc","validators","validatorParams","customErrorMessage","validateFunArgs","additionalArg","errMsg","isSectionVisible","previousValues","formStatus","editGeneralPermission","Inactive","Inactive_For_Future_Use","setFieldAsRequiredOrPreferred","requiredPath","requiredFields","preferredFields","renderIndicator","hidden","renderComponent","propsRequested","errorText","formikOnChange","formikOnBlur","otherFieldProps","GridProps","componentClasses","skipValueSet","containerClassName","formVariant","hideErrorText","validateOnMount","formControl","errorTextPadding","touched","getFieldValue","nativeEvent","shouldRender","renderRequired","renderPreferred","renderOptional","FormikField","Field","FastField","variantToClassMapping","spacingFormGrid","INLINE","inlineField","LAST_INLINE","lastInlineField","FIRST_INLINE","firstInlineField","NO_PADDING","noPadding","NO_LEFT_RIGHT_PADDING","noLeftRightPadding","validateField","itemClasses","gridClasses","gridClassName","updatedAccumulator","Consumer","fieldsVisibilityConfig","sectionState","sectionId","sectionConfig","sectionName","formikKey","visibility","any","formStyle","ThreeDotProgress","spinner","bounce1","bounce2","bounce3","threeDotProgressStyle","emptyCallback","isFirstLetterUppercase","camelize","strToConvert","decamelize","getPrimitiveValue","execFunc","allowNull","deepTraverse","request","deepCamelize","deepDecamelize","processValue","booleansMap","PAYMENT_PERMISSION_KEYS","pageStyle","Page","footer","getHeaderRef","getBodyRef","getFooterRef","headerClassName","bodyClassName","footerClassName","fullHeight","headerVariant","loaderClassName","headerContainerProps","showBreadCrumb","breadCrumbList","headerRef","bodyRef","footerRef","defaultTitle","getPageTitle","page","pageHeader","HEADER_VARIANT","WITH_CONTENT","withContent","pageBody","pageFooter","PageProps","PageDefaultProps","body","subStatus","requestType","SUBSTATUS_CODES","INVALID_TOKEN","eventEmitter","emit","REQUEST_TYPES","isFieldArray","firstField","formatErrors","raiseErrorCodeForFiveHundreds","__all__","integrityError","responseErrors","errorFields","SUB_DOCUMENT_TYPE","callApi","onAction","endPoint","method","STANDARD","api","methodType","customHeaderOptions","fetchTenant","detail","terms","Active","fetchUnits","isRefund","cardInfo","cardNumber","cardProcessorId","PAY_VALIDATED_AMOUNT","fetchTenantDetailsFromLedger","fetchTenantAlert","fetchLedgerBalance","fetchPaymentMethod","entityId","getPaymentMethodApiConfig","fetchPendingDelinquency","LATE_TYPE","Dollar_Per_Day","processLateEvent","idList","processSynchronously","updatedPromoPlans","promoPlanData","getPaymentInfo","apiBody","Modal","renderCloseButton","closeIcon","renderExpandButton","onExpand","isExpanded","expandButton","expandIcon","divider","bodyContainerProps","showExpandButton","BackdropComponent","Backdrop","modal","modalGrid","modalHeader","modalDivider","modalBody","modalFooter","modalStyle","Chip","child","renderChip","deleteChip","elementIndex","parentIndex","labelTypographyProps","onSelectChip","labelTypographyPropsExtract","mappedColor","CHIP_COLOR_MAPPING","leftIcon","clickable","frontCloseIcon","labelText","labelPadding","nestedChipPadding","deleteIcon","ChipStyle","PERCENTAGE","PIXEL","OVERSCAN_COLUMN_COUNT","OVERSCAN_ROW_COUNT","ALIGN","VALIGN","sendCustomHeaderOptions","getUnitTypeApiConfig","dynamic","sendCustomHeader","getSearchConfig","defaultApiConfig","fetchLazy","RequestTypes","mini","fetchInBatch","updatedIdList","currentIndex","batchSize","fetchNextTenantBatch","remainingIds","unit_list","apiError","fetchUnitCountByLevelData","aggregation_name","ALL_UNITS_COUNT_BY_LEVEL","fetchReservation","fetchNextReservationBatch","unit_id","Reserved","order","fetchPlaceholders","CONFIG_TYPE","PLACEHOLDER","store","STORE_KEY","saveUnitsData","savePlaceholdersData","saveLevelData","levels","LEVEL","saveZoomValue","bevZoomValue","FACILITY_GENERAL","accountData","isModeCreate","isStandardUser","subTitle","subLabel","isVisible","permissionLevel","configurationData","facilityConfig","businessGroupConfig","reportsData","shallOmit","tenantData","isHeadingOnly","unitData","occupancyData","isMoveInDisabled","isMoveOutDisabled","performReservation","headlabel","financialsData","ispayment","isManualCharge","isReverse","isDelete","retailSaleData","isSell","isInventoryAudit","maintenanceEventData","systemData","SmartList","BaseComponent","handleWsMessage","wsMessage","resourceName","listConfig","clearStoreKeys","storesToNotClearSilently","getStoreKeyToClear","onWebSocketMessage","rtnsSnackbarProps","shouldSetRTNSSnackbarFunc","createMessage","updateMessage","setSnackbarProps","CREATED","SNACKBAR_VARIANT","receivedWSMessage","onRefresh","getInitialSort","sortInApiCall","initialSortConfig","allSortConfig","onApplyFilter","clearStoreKey","appliedFilters","fetchData","resetRefetchOnUnload","clearFiltersFromApi","defaultSort","getListConfig","searchValue","initialSearchValue","sortConfig","initialSort","canIShow","curComponentConfig","curDevice","getFilters","useInitialFilters","defaultFilters","initialFilters","cleansFilter","cleanseTheFilters","setIn","autoSuggestKey","searchType","subProcessor","isDataReversed","searchUrl","includeRestricted","useAccountContext","actualRows","postProcessOnAction","resultantFilter","AUTOSUGGEST","PAGINATION","__includeRestricted","onActionConfig","getConfig","updatedConfig","fetchMoreRows","onFetchMoreRows","totalCount","shouldTableUpdate","listConfigChanged","listStoreStatus","emptyBodyRenderer","emptyBodyText","loadingBodyRenderer","loadingBodyText","errorRenderer","emptyOrLoadingBodyRenderer","createListForm","formatterProps","openForm","createUrl","setFilterOverlay","showFilterOverlay","getTablePaperHeaderRef","tablePaperHeaderRef","forceUpdate","calculateTableWidthAndHeight","isSidebarOpen","tablePaperHeaderHeight","clientHeight","innerWidth","innerHeight","topMargin","mainContentPadding","actionItemsPanelProps","showBackToDashBoardActionItem","actionItemsConfig","actionItemsPanelConfig","footerHeight","tableProps","showListPageRibbon","isConfigurationList","showActionItemsPanel","originalTableHeight","tableHeight","tableWidth","tableHeaderWidth","getTablePaperTitle","titleFontFamily","disableAdd","createName","typographyProps","openFilterOverlay","getTablePaperProps","filterProps","tablePaperProps","searchPlaceHolder","onFilterClick","showFilter","getSectionByFilter","availableFilters","onFilterChange","updatedFilters","apiCall","filtersActive","onFilterClicked","sectionsConfig","sectionClicked","refetchOnUnload","onAutosuggest","inputValue","onAutoSuggestTextFieldChange","disableDebouncing","prevInputValue","onSortChange","areFiltersApplied","filteredFilters","currentFacility","currentListConfig","getResetFilter","resetFilters","handleOnBackToDashboard","autoSuggestKeys","allFilters","appliedAutoSuggest","getAppliedAutoSuggest","filtersKey","setCurDevice","withProvider","SmartFilterOverlay","fetchList","setOnWebSocketMessage","setOnRefresh","clearStoreKeyOnUnmount","preProcessInitialFilters","applyInitialFilter","curDeviceConfig","componentDidUpdate","getAutosuggest","renderError","renderLoading","renderFilterOverlay","stateFiltersActive","createFilterRequest","constructFilterRequest","device","permission","getCustomData","showFinancialTable","filtersAndSortsProps","prefilledSearchValue","showFilterAndSorts","showCount","quickFilters","quickFilterProps","headerRowHeight","cleansedFilters","storeOuterData","tableData","defaultTablePaperProps","dataGetter","rowCount","recalculate","resetScrollPosition","onSearchChange","onBackToDashboardClick","applyFilter","totalRowsInTable","showTotalCount","SmartListProps","SmartListDefaultProps","validateCardNumber","trimmedCardNumber","cardNumberLength","isCardLengthEven","sum","cardDigitIndex","cardDigit","isValidEmail","COMMON_PASSWORDS","isValidUrl","supportWildChard","isUrl","isContextualString","username","nameInEmail","contextualStrings","subName","contextualString","maxLength","isValidCardNumber","isExpiryLessThanToday","today","dateToCompare","isTwoDecimalPlaces","maxValue","isLessThan","minValue","isGreaterAndEquals","isLesserAndEquals","isLevelLabelDuplicate","existingValues","levelLabelToLevelKeyMap","levelKey","thisLevelKey","levelKeyOfCurrentLabel","getWhiteSpaceTrimmedString","isPhoneNumberDuplicate","samePhoneNumbersCount","getCleanPhoneNumber","getPlainPhoneNumber","isUnitLabelDuplicate","selectedUnitId","labelToIdMap","idOfAlreadyExistingUnit","isValidGateAccessCode","reusePolicy","accessCodesMap","unitsMapOfSameTenant","isLedgerBasedGate","String","validateRangeAndLength","code","ACCESS_CODE_TYPE","Alphanumeric","Numeric","validateAccessCodeType","ACCESS_CODE_REUSE","Always","doesAccessCodeBelongToADifferentTenant","Same_Tenant_only","accessCodeMapWithOutCurrentResource","Never","isDaysToDeliverBeforeValidForEffectiveDate","daysBetweenTodayAndEffDate","minDate","maxDate","isValidPhone","countryCode","bestGuess","countryData","allCountries","iso2","numberLength","validateCommaSeparatedEmail","additionalEmailsToCheck","errorMsg","emailList","emailSet","concat","queue","pendingQueue","reqAction","findIndex","currentTimeStamp","reqOptions","shift","FILTER_LABEL_LEFT_MARGIN","SHOW_MORE_BUTTON_RIGHT_MARGIN","EXTRA_SPACE_NEEDED_IN_CHIP","EXTRA_SPACE_NEEDED_IN_NESTED_CHIP","CHIP_RIGHT_MARGIN","EXTRA_SPACE_FOR_DROPPED_NESTED_CHIP","NESTED_CHIP_RIGHT_MARGIN","SHOW_MORE_BUTTON_LEFT_MARGIN","getInputRef","fetchInitial","isStoreUpdate","optionFormatter","offlineSearchKey","getAutoSuggestKey","autoSuggestKeySetter","resetValueOnConfigChange","initialPropOptions","fetchOnce","searchConfig","autoSuggestConfig","routeList","onMountConfig","currentAccountId","supportTextField","getOpenFunc","propOptionsRef","propOptions","setOptions","initialFetchedData","setInitialFetchedData","optionsCount","setOptionsCount","inputRef","isOfflineFilterEnabled","hasData","optionsList","getCurrentOption","valueToFind","option","getInputValue","newInputValue","currentOption","setError","setLoading","setInputValue","isOnline","openDropdown","focus","setOptionsData","inputData","onClear","activeElement","onFetchData","userInput","apiOptions","autoSuggestKeyToSend","payload","passedConfig","pattern","row","useDidUpdateEffect","fetch","currentInputValue","lowerCaseInputValue","searchKey","filteredOptions","filterOffline","filterOnline","onInputChange","renderText","searchIcon","disableShrink","handleValue","onScroll","scrollHeight","scrollTop","scrollPosition","disablePadding","itemClassName","listItemProps","onOptionClick","pagination","initialValue","SearchableDropdownComponent","SEARCHABLE_DROPDOWN","SMART_SEARCHABLE_DROPDOWN","FormSearchableDropdown","FormSmartSearchableDropdown","BaseForm","touchedKeys","editFormData","positiveButtonToolTipMessage","allowNavigation","unblockedPaths","params","block","nextLocation","targetLocation","routeState","targetFacilityId","getRouteParams","shouldChangeRoute","isPathUnblocked","handleErrors","formError","shouldShowSnackbar","formattedErrors","setStatus","setErrors","resetTouchedFields","setTouched","handleNo","handleYes","closeModal","processBeforeUnmount","goBack","handleFormSubmit","beforeSubmit","onCancel","dirty","FooterProps","positiveButtonProps","negativeButtonProps","getFooter","hidePositiveButton","hideNegativeButton","isButtonLoading","buttonToolTipMessage","submitForm","loadingText","transformToReserved","originalKeyName","newKeyName","originalData","isFormActive","getCustomHeaderForStatusChange","handleStatusChangeYes","apiActionOptions","onStatusChange","isFormUpdated","showAlertDialog","shouldShowAlert","getAlertMessage","ALERT_MESSAGE","onAlertYesAction","onAlertClose","receivedWsMessageForCurrentForm","shouldConsiderCreateEvent","resourceId","isCurrentResourceUpdated","isCreated","RESOURCE_NAME_TO_STORE_KEY","updateStoreConfig","preProcessValues","processedValues","propertiesToCheck","createEditFormData","handleSubmit","onReset","clearStore","prevPath","handleIsSubmitDisabled","disableFormSubmit","setWasFormSubmissionCancelled","shouldDisable","isSubmitDisabled","wasCancelled","wasFormSubmissionCancelled","getWasFormSubmissionCancelled","reEvaluateEditFormDataIfRequired","shouldReEvaluateEditFormData","deps","LEAD_STATUS","DATE_FIELD_WIDTH","MOBILE_DATE_FIELD_WIDTH","FILTER_STAGES","FILTER_TYPES_LIST","FILTER_SECTION","APPLIED_FILTERS","hasPermission","permissionKey","permissionKeys","require","permissionData","flattenKey","labelWithAddonsStyle","LabelWithAddons","startClassName","endClassName","classesProps","labelClassName","stopLabelInteraction","AVAILABILITY_STATUS","INVENTORY_REPORT_STATUS","categories","BevFormField","treeViewStyles","flattenInitialValues","getNodeState","totalChildren","childrenChecked","getMyParentId","nodeId","lastIndexOf","initializeState","initialConfig","treeItem","expanded","defaultExpanded","currentNodeState","searchField","effectiveChildren","childrenItem","childConfig","treeState","childState","childrenExpanded","getNodesInitialState","getChildrenExpanded","restConfig","finalConfig","TreeView","masterConfig","TreeItemProps","CheckboxProps","nodeState","setNodeState","setExpanded","markParentsChecked","nodeName","modifyChildrenCount","markChildrenChecked","childNodeId","headLabel","hasChildren","checkboxClass","ComponentProps","disabledFromChild","restOthers","disabledFromParent","restCheckboxProps","isCheckboxDisabled","gridCheckBoxChildren","noCheckbox","indeterminate","checkboxRoot","renderNodeList","itemList","toggleIcon","processTreeItem","renderUserRole","totalItemList","childItem","checkboxRenderList","textItem","parentAndChildList","Fragment","gridPadding","gridContainer","gridStyle","fontClass","childClass","innerBox","idx","sublabel","sublabelChild","renderTreeNodes","isSourceUserRole","mainContainer","headerWrapper","permissionHeader","selectAllPadding","gridCheckBox","permissionStyle","selectionHeader","configItem","parentCheckBox","permissionsBody","onNodeToggle","nodeIds","getCustomHeaderOptions","context","saveNewUserAction","saveEditedUserAction","userAssociation","permissions","userSearch","userPermissionSearch","getUserData","sync","include_relations","User_Auth_Details","headers","configurationBgPermissions","configurationFacilityPermissions","financialsPaymentPermissions","financialsManualChargePemissions","financialsReverseAccessPermissions","financialsDeleteAccessPermissions","occupancyMoveInPermissions","occupancyMoveOutPermissions","occupancyReservationPermissions","retailSaleSellInventoryPermissions","retailSaleInventoryAuditPermissions","unitGeneralPermissions","footerStyle","FooterButton","buttonClassName","buttonClasses","otherButtonClasses","buttonTextProps","otherButtonProps","buttonWidth","isMobileOrPhablet","Footer","backButtonProps","backButtonLabel","buttonCount","negativeButton","positiveButton","buttonNegative","buttonPositive","renderNegativePositiveButton","buttonBack","buttonWrapper","getFormattedAmount","performAdditionalActionOnGlobalMessage","getSnackbarVariant","isError","EXCEPTION_ERROR_CODE","NO_DATA_ERROR","handleGlobalWsMessage","displayMessage","globalWsResource","receiveWSMessage","isGlobal","storeKey","rtnsWithAutoClose","snackbarProps","getSnackbarActions","isForm","onKeepCurrentChanges","hideSnackbar","updateSnackbarActionsFor","nonOverridableFields","DEFAULT_CALLBACK_FOR_SNACKBAR_ACTION_UPDATE","noActionItem","snackbarActions","isNonOverridableFieldChanged","eachField","remountComponent","postProcessRefresh","otherStoresToClear","storesToClear","isLoading","hasError","hasAccess","renderLoader","renderUnauthorise","rest","updateWsProps","isRefUpdated","messageCallback","updatedSnackbarActions","onExit","user_role","account_receivables","ar","saved_document","SAVED_DOCUMENT","CONFIGURATION_RESOURCE_NAME_MAPPING","customer_configuration","CUSTOMER_CONFIGURATION","financial_configuration","FINANCIAL_CONFIGURATION","facility_configuration","FACILITY_CONFIGURATION","RadioGroup","defaultValueWhenNull","RadioProps","FormLabelProps","radioButtonGroup","paddingTop","radioLabel","radioValue","disabledOption","radioProps","formControlLabelRoot","sizeIcon","withStyleRadioGroup","radioGroupStyle","RADIO_GROUP","FormRadioGroup","FilterTypes","MinSections","HIGHLIGHT_TYPE","belongsToAnyOfGivenSources","irrelevantSources","getTruncatedTitle","shouldTruncateTitle","truncateTitleLength","Snackbar","enqueueSnackbar","closeSnackbar","useSnackbar","isRealTimeNotification","snackbarKey","preventDuplicate","autoHideDuration","anchorOrigin","LARGE_SD_HEIGHT","NORMAL_SD_HEIGHT","MEDIUM_SD_HEIGHT","EXTRA_SMALL_SD_HEIGHT","Uint32Array","getSeed","crypto","getRandomValues","randomIndex","random","getUUID","md5","valueOf","matchPath","subPaths","subPath","regexToUpdate","getRegexForRouteParams","getMinIndexOfCharsFromString","stringToSearchIn","charsToFind","minIndex","MAX_URL_LENGTH","indexOfCharInString","routeParams","splittedPaths","textBeforeParam","pathToProcess","paramEndIndexInPath","paramEndIndexInPathname","routeKey","routeValue","remainingWasteInPath","isBaseUrlAlpha","HomePageWithLocation","useRouter","getRouter","isUserLoggedIn","newProps","redirectTo","HomePage","setUserLoginState","createBrowserRouter","userLoggedIn","loggedIn","redirectPathName","calculateNextAmountPayable","unitList","skipCalculatingNextAmountPayable","bevLeftSidebarStyles","leftPanelContainer","flexWrap","borderRadius","sideBarTopMargin","sideBarTopMarginForDirections","sectionContainer","addButtonsContainer","radioGroupMarginRight","appearance","margin","maxWidth","borderColor","addButton","keepButtonActive","alertDialogButton","inputField","NOT_FOUND","SERVER_ERROR","UNDER_MAINTENANCE","UNAUTHORISED","variantConfig","ServerError","imgAlt","UnderMaintenance","NotFound","Unauthorised","EXEMPT_FROM_LIST","waitingStatus","waitingSource","WAITING_STATUS","CUSTOMER_TYPE","WAITING_SOURCE","GeneralPages","renderPageLink","pageLinkButton","pageLink","useAnchorTag","defaultPageUrl","pageContainer","imageContainer","image","alt","linkContainer","href","GeneralPagesStyles","shouldModifyNegativeAmount","TEXT_SUPPORTED_COUNTRIES","DEFAULT_PHONE","calculateTextWidth","fontVariant","createElement","font","measureText","highlightSelectedTextStyle","HighlightAutoSuggestText","autoSuggestText","textsToHighlight","textArray","regExp","regExpToSplitTextByTextsToHighlight","useCallback","searchedText","shouldHighLightText","highlighted","renderChildren","ProtectedRoute","prevLocation","buttonTextStyles","ButtonText","loader","disableFocusListener","disableHoverListener","disableTouchListener","enter","preferredName","nameArray","renderNameArray","FilterComponent","renderComponentTitle","componentLabel","onBack","mobileSectionHeader","getRoutePath","paramName","paramValue","navigate","useNavigate","useLocation","useParams","router","useContext","RouterContext","isExact","navigateRoute","pathArg","shouldBlock","blockerId","getBlocker","deleteBlocker","paymentMethodStyle","expiryCvvContainer","angledLine","transform","largeFont","placeholderAlign","placeholderFontSize","numberFields","verticalAlign","paymentField","leftAlignText","cvvContainer","cvvError","convertAppliedFiltersToValues","filtersActiveKeys","newFilterValues","MULTI_SELECT","filterKeys","filterValue","cleanedObject","currentFilters","currentFiltersKeys","newSearchRequest","range","newFiltersApplied","apiMapping","NUMBER_RANGE","DATE_RANGE","SINGLE_SELECT","searchRequest","PHONE_FIELDS","PREFERRED_COUNTRIES_LIST","shouldSendCustomHeader","fetchInsuranceConfiguration","INSURANCE","FACILITY","fetchInsuranceCoverage","planId","coverageId","provider","ADVANCE_OPTIONS_ID","INSURANCE_COVERAGE","SYSTEM_FACILITY","INSURANCE_PROVIDER","fetchInsuranceInfo","saveInsuranceInfo","SCROLL_TIME","DEFAULT_SECTION_ID","geUpdatedTouchedOnAdd","touchedData","touchedKey","shiftKeysUponDelete","indexToDeleteFrom","shiftedValues","editedKey","intTouchedKey","getValuesAndTouchedUponDelete","editedValues","cleanedEditedValues","updatedValues","resetFormValue","assign","setInitialValuesTouched","currentParentKey","invalidData","currentKey","resetInvalidRows","indexes","formItemStyle","FormItem","onlyPadding","separatorClassName","resultantPadding","formPadding","formItem","Card","elevation","card","cardContent","addonDirection","topLeft","topRight","cardStyle","GATE_ACCESS_TYPE","EVENTS_TYPE_LIST","Ledger_Gate_Access","Unit_Overlock_Status","WebSocketService","instance","connect","socketRef","socketId","prevFacility","WebSocket","onopen","updateChannelsGroup","onmessage","socketNewMessage","onclose","disConnect","getSocketId","parsedData","onMessage","currFacility","sendMessage","command","discardChannelsGroup","addCallback","readyState","WebSocketInstance","getInstance","BATCH_PAYMENT_FILTER_TYPE","isStringEmpty","getValidEmailsFromString","emailsString","stringifyEmailList","convertToPdfUrl","buf","Buffer","blob","Blob","URL","createObjectURL","renderInPdf","pdfUrl","openInNewWindow","windowDimension","WINDOW_SCALE_FACTOR","pdfWindow","onload","querySelector","rel","getElementsByTagName","appendChild","FAVICON_LOC","phoneFormatter","environment","ROLLBAR_CONFIG","accessToken","env","ROLLBAR_ACCESS_TOKEN","captureUncaught","captureUnhandledRejections","client","javascript","source_map_enabled","code_version","CODE_VERSION","guess_uncaught_frames","AIRBRAKE_CONFIG","projectId","projectKey","SENTRY_CONFIG","dsn","integrations","BrowserTracing","Sentry","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","ErrorBoundaries","airbrake","Notifier","componentDidCatch","notify","scope","setExtras","getRollbarFromContext","contextType","Context","ErrorBoundariesStyle","customProcessors","getPostProcessor","postProcessorName","basePostProcessor","eventName","eventsList","subscribe","eventFn","popdownStyle","Popdown","selectRef","selectContainerRef","shouldAutoFocus","propInputRef","paperClassName","useContainerRef","popperClassName","parentRef","propdown","containerRef","modifiers","preventOverflow","boundariesElement","hide","paperHeight","anchorWidth","getPaperStyle","arrowTheme","userProfileStyles","shadows","boxShadow","checkBoxRoot","checkboxLabel","userDetailsContainer","paddingBottom","userInfoFieldContainer","editPhoneNumber","expansionPanelSummary","expansionPanelSummaryContent","allCountryCodes","regions","dialCode","priority","areaCodes","countryItem","hasAreaCodes","areaItems","addCountryCode","module","exports","LIST_ITEMS_FONT_SIZE","LIST_ITEMS_FONT_WEIGHT","tableRowCountStyle","TableRowCount","totalRows","leftAndRightPadding","DISPLAY","Description","argument","isResponsive","DescriptionFormatter","SummaryFormatterStyle","DateFormatterComponent","DateFormatter","Balance","balanceToShow","BalanceFormatter","balanceFormatter","descriptionFormatter","addDatePadding","currentDay","rearrangeWeekdays","weekdays","WEEKDAYS_SUNDAY_FIRST","getCompleteDate","getDataForDay","completeDate","OPTIONS","RETRIES","RETRY_DELAY","RETRY_ON","REPORT_OPTIONS","HTTP_HEADER_SOURCE","fetchWithTimeout","async","controller","AbortController","abort","signal","queryParams","endsWith","queryString","getQueryString","isUserAuthorized","paymentToken","PAYMENT","getHeaders","isFormData","httpHeaders","Headers","append","SANDBOX","apiBuildVersion","getApiBuildVersion","getBody","decamalize","parseAPIResponse","Promise","resolve","catch","then","responseBody","parsedJSON","makeApiCall","defaultOptions","retries","retryDelay","retryOn","wrappedFetch","noOfRetries","FormData","requestOptions","credentials","getOptions","dispatchAction","dispatchProp","promise","updateStore","isStoreOnlyUpdate","actionKey","requestApi","postProcessor","updateViaAPIOnly","processCustomHeaders","ApiResult","storeApiUpdate","updateStoreKeyToLoading","DateRange","Loadable","NumberRange","TenantStatusFilter","UnitStatusFilter","UnitRentalStatusFilter","CARD_TYPE","CARD_LABEL","isEstimateExpired","expirationDate","getCardType","isExpired","EXPIRED","ESTIMATE","RESERVED","getCardLabel","EXPIRED_ESTIMATE","RESERVATION","getUnitTypeDescription","unitTypeList","getUnitDescription","AutoSuggest","clearAutosuggest","cards","renderCard","resource","defaultConfig","processData","onSelectCard","highlightInputTextInCard","reservationData","estimateData","cardData","line1","primaryContact","tenantLeadType","primaryNumber","selectCard","cardType","CardProps","autoSuggestCard","unitListpadding","labelRenderer","dataToReturn","getAddOn","endIconProps","defaultAddon","autoSuggestStyle","SmartAutoSuggest","CRUD_METHODS","DEFAULT_EXTERNAL_ROUTE","DEFAULT_INTERNAL_ROUTE","updateFacilityStore","FACILITY_STORE_KEY","storeMethod","updateSessionTimeout","updateFacility","labelStyle","Label","FormItemProps","labelItem","FILE_UPLOAD_STATUS","sortableHandle","WrappedComponent","withRef","findDOMNode","isSortableHandle","PLAIN","tenantNameAscSort","tenantNameDescSort","lastContactedDate","pendingOverlockUnlockList","unitDepositUpdate","tenantDepositUpdate","filterSearchUrl","setFormValuesForUseCardOnFile","isAutoPayEnabled","saveCardForFutureTransactions","rootClass","flexContainer","dropDownGrid","tablePadding","onHoverRole","paperPadding","listRenderer","overflowY","iconPadding","FOCUS_EVENT_LISTENER","BLUR_EVENT_LISTENER","getEventListeners","onFocus","listener","EmptyOrLoadingTable","rowHeight","noContentTable","TableFooterOrHeader","verticalScrollSize","isHeader","tableFooter","atBottom","TableLoading","TableNoMoreRows","StatusIndicator","activeLabel","inactiveLabel","tableGrid","rowBorder","activeInactiveSettingsPage","activeInactiveListPage","activeStatusContainer","coloredSquare","activeStatusColor","activeInactiveLabel","inactiveStatusContainer","inactiveStatusColor","externalRouteEntityMapping","0","ROUTE","PENDING_TASKS","1","TENANT_LIST","CREATE_TENANT","EDIT_TENANT","VIEW_TENANT","LEDGER_REVIEW","LEAD_LIST","CREATE_LEAD","EDIT_LEAD","CONVERSATIONS","DELINQUENCY_LIST","2","UNIT_LIST","CREATE_UNIT","EDIT_UNIT","BEV_VIEW","BEV_SETUP","RESERVATION_LIST","WAITING_LIST","3","DOCS_GD","DOCS_RB","REPORT","REPORT_WC","4","OPERATIONS","OPERATIONS_PATHS","POINT_OF_SALE","INVENTORY_LIST","VENDOR_LIST","RETAIL_SALE_RETURNS","VEHICLE","FINANCIAL_LIST","CREATE_AR","DEPOSIT_UPDATE","externalSettingsRouteEntityMapping","USER_LIST","USER_ROLE","CONSOLIDATED_REPORT","excludeEntities","findMatchingParentEntityIndex","routeEntityMapping","matchedEntity","routes","route","getMatchingEntity","contentWindow","disableAutoscroll","distance","getContainer","getHelperDimensions","helperClass","helperContainer","hideSortableGhost","keyboardSortingTransitionDuration","lockAxis","lockToContainerEdges","onSortEnd","onSortMove","onSortOver","onSortStart","pressDelay","pressThreshold","keyCodes","lift","drop","up","down","shouldCancelStart","updateBeforeSortStart","useDragHandle","useWindowAsScrollContainer","defaultKeyCodes","offsetHeight","offsetWidth","contentEditable","omittedProps","allRequestedFormatters","Formatters","Error","Formatter","withRouter","formattersStyle","actionsVisibility","isMoveInVisible","moveInVisible","isMoveOutVisible","moveOutVisible","isPaymentVisible","paymentVisible","isPromoPlanVisible","promoPlanVisible","Actions","eventHandler","actionStyle","tabsStyle","Separator","TabPanel","Tabs","tabsData","childClasses","highlightType","activeTab","tabsClasses","getActiveTab","separatorPadding","tabClasses","TabIndicatorProps","tabIndicatorClassName","flexContainerClass","selectedTab","setSelectedTab","TabsDataRenderer","mountAlways","disabledTab","getClasses","tabs","halfBottomAlways","HALF","halfBottomOnHover","HALF_ON_HOVER","tabsRoot","defaultIndicator","textColorInherit","tabOpacity","disabledPadding","transitionStyle","transitionComponents","SLIDE","Slide","FADE","Fade","GROW","Grow","Transition","needRef","GenericTable","prevResetScrollPositionPropValue","noMoreRows","lastPaginationStart","noMoreRowsTimeout","tableContainerRef","clientWidth","horizontalScrollSize","getFixedGridWidth","fixedColumns","columnWidthFinder","columnIndex","gridWidth","defaultColumnWidth","columnWidthUnit","onLoadMoreRows","scrollToRow","showLoader","loadMoreRows","numOfRows","nextPaginationStart","scrollbarChanged","getSize","prevSize","hasScrollbar","prevHorizontalScrollSize","prevVerticalScrollSize","recomputeGridSize","renderRightGridBodyCell","rowIndex","renderBodyCell","renderRightGridHeaderCell","isFooter","renderHeaderOrFooterCell","getColumnStyle","flex","getHeaderHeight","headerVariantMapping","needFirstColumnPadding","marginalsBorderTop","marginalsBorder","valign","firstColumn","noLeftPadding","firstColumnDefaultHeader","lastColumn","convertedTableRows","showLastColumnOnHover","rowDivider","getRowProps","rowClassName","restRowProps","currentRow","responseStatus","responseValueStatus","ribbonClassName","activeRibbon","inactiveRibbon","bodyRow","formFieldInfo","firstColumnDefaultPadding","hiddenColumn","cell","disabledCell","renderFixedHeaderOrFooter","heightPropInitial","fixedGridWidth","fixedGridContainer","cellRenderer","headerGrid","columnWidth","columnCount","renderHeaderOrFooter","scrollLeft","autoContainerWidth","marginalsGrid","overscanColumnCount","calculateRowHeight","getHeaderVariantMapping","hasFooter","startFromBottom","showErrorOrLoadingInMiddle","overscanIndicesGetter","scrollToRowProp","renderTotalCount","ribbonProps","hasDataBeenLoaded","contentBoxWidth","lastScrollAt","headerHeight","calculatedTableHeight","modifiedTableHeight","table","gridContainerHeight","getGridHeightValues","overscanRowCount","fixedGrid","gridColumn","bodyGrid","scrollWidth","computedScrollHeight","isAtEnd","onScrollbarPresenceChange","noContentRenderer","dataConverter","footerRowHeight","tableStyle","InheritedConfigLabelStyle","PermissionContext","createContext","loaderStyle","Loader","isUnit","rateHistory","isLead","isTenant","isDashboard","isDelinquency","isUser","isVendor","isInventory","isManualLateEvent","manualLateEvent","LabelFormatter","isEditDisabled","subtext","configPath","hasTwoFactor","SETTINGS_MAIN","SETTINGS_LIVE","unitDetail","labelWrapper","faPadding","LinkListWithShowMore","selectedConfigType","selectedFacilityId","selectedAccountId","paramsAccountId","staticContext","column","maxVisibleContent","MAX_VISIBLE_CONTENT","containerGridProps","requireTooltip","inline","showStatusIcon","onClickMoreItems","onClickMoreItemsParams","isLabelClickable","valueList","CONFIG_LEVEL_TYPE","NORMAL_CONFIG","childConfiguration","selectedConfig","childEntityType","disabledText","typographyClassName","INACTIVE","contentList","initialListContentsToDisplay","getListContents","listContentsToDisplay","contentStatus","Container","getLabel","isTooltip","dot","moreItems","isDelinquent","NIL_BALANCE","chipData","Ledger","LedgerGrid","Grid","Tenant","GridListWithShowMore","UnitGrid","DelinquencyInlineRows","getComponentProps","eachLedger","updatedArgument","DelinquencyLedgerBalanceFormatter","DelinquencyTrackingLedgerBalanceFormatter","DelinquencyUnitListFormatter","componentGridProps","DelinquencyLedgerFormatter","DelinquencyTenantNameFormatter","NameFormatter","additionalComponentProps","NameFormatterGrid","overflowHidden","Address","rowData","addressline1","line2","addressline2","customAddress","cursorDefault","ContactDetails","CONVERTED","isRetailSaleReturns","DatetimeFormatter","FullDatetimeFormatter","comment","cursorPointer","isFeatureDisabled","movein","Vacant","VACANT_AVAILABILITY_STATUS","Unavailable","Rented","Action","showPayment","setShowPayment","paymentToggler","PaymentComponent","accountInt","facilityInt","userInt","Payment","isPaymentDisabled","isTransferDisabled","SETTINGS_PULLED","COPY","activeStep","getActionConfig","prefilled","TooltipTypography","tooltipTile","AlternateContact","hasName","alternateContactNumber","Contact","leaseSign","leaseStatus","rentalStatusToShow","LEASE_STATUS","Pending","Status","chipStatus","statusLabel","statusColor","statusColorPrefix","chipClasses","Rejected","MovedIn","MAINTENANCE_EVENT_STATUS","ACTIVE","ESTIMATE_STATUS","RATE_HISTORY_STATUS","Stopped","Waived","chipFixedWidth","RENT_ADJUSTMENT_STATUS_LIST","DelinquencyStatusFormatter","OverlockStatus","OVERLOCK_STATUS","Unlocked","Unlock_Pending","Overlocked","Overlock_Pending","overlockStatusChip","PromoPlanConfigTextFormatter","bills","promoPlanDescription","v","isPromoPlanTemplate","isTemplateViewedOrCloned","ConfigDescription","violationChargeCategoryFormatter","TenantNameFormatter","argumentCopy","unitTypeFormatter","LinkWithToolTip","descriptionValue","ConfigTextFormatter","PAYMENT_METHOD_TYPE","No_Modifier","ListFormatter","roleId","BoolRepresentor","isTrue","recurringEmptyFieldText","TooltipFormatter","PhoneAndFaxFormatter","LedgerLink","UnitTypeLink","TenantLink","UnitTypeGrid","GridWithToolTip","AvailableQuantityFormatter","availableQuantityColumnValue","EventFormatter","lateOrLockoutType","AmountFormatter","PhoneFormatter","alternatePhoneNumber","FormFieldFormatter","formFieldOnChange","restFieldProps","fieldValue","HasAttachmentFormatter","curLabel","stringToArrayBuffer","ArrayBuffer","bufView","Uint8Array","strLen","charCodeAt","encryptWithPublicKey","plainText","publicKey","encodeBase64","publicKeyContent","binaryString","publicKeyBuffer","dataBuffer","encrypted","subtle","importKey","hash","importedKey","encrypt","encryptedString","arrayBuffer","fromCharCode","HelperText","userListFormattersStyle","actionLabel","headerCell","listTypeConfigs","CardChip","customChip","cardChipStyle","HostedFormContext","baseUserRoleStyle","flexOne","sideBarContainer","mainTab","buttons","sideBarIcons","flexFlow","searchBar","tabIndicator","statusButton","tabPanel","nameTextField","createIcon","tabsContainer","DEPRECATED_TIME_ZONES","getTimezoneLabel","getTimezoneList","deprecatedTimeZonesRegex","offsetTmz","names","labelWithOffset","region","sortedTimeZones","timezoneA","timezoneB","labelA","labelB","ahh","amm","bhh","bmm","dropDownStyle","wordWrap","cursor","boxSizing","textFieldInput","pointerEvents","SideBarContext","WSUpdatePropsContext","CreditCardBatchesFilterStyle","toDateField","alignSelf","StyledBadge","Badge","AppliedFilterContainer","getRenderableData","renderableData","widthNeededForLabel","valueToRender","getDataForNestedChips","getDataForRangeTypeChips","getDataForNormalChips","presentShowMoreButton","labelWidth","isInModal","nestedValues","widthNeeded","nestedChipWidth","availableSpace","isShowMoreButtonVisible","hideShowMoreButton","onDeleteChip","indexOfNestedChip","modifiedData","chipSelected","onShowMore","onClearAll","renderAppliedFilterLabel","showMoreButton","clearAllButton","isClearAllButtonVisible","showMoreButtonWidth","appliedFilterLabelWidth","renderChips","renderedChips","dataToRender","filterName","renderNoFilters","renderSectionTitle","listItemContainer","badgeContent","showZero","rootContainer","normalContainerInModal","normalContainer","objectOf","AppliedFilterContainerStyle","syrapayHostedFormStyle","listItemsStyle","topSection","overflowX","listItems","companyLogo","footerTextDiv","footerText","copyrightIcon","entityRoot","parentEntityPadding","childEntityPadding","childEntityItem","iconColorWhite","labelWithIconSpacing","noDivider","childListItems","selectedEntityIndicator","borderLeft","labelWithIconMargin","stickyItems","textEllipsis","iconCenter","collapsePadding","infoCardStyles","cardTopMargin","infoCardContainer","showInfoCard","transition","infoContainer","canvasGridHeight","infoCardCloseButton","infoCardShow","cardTitle","levelManagementStyles","listContainer","listHeader","listColumnHeading","lastColumnPadding","lastColumnValuePadding","levelsContainer","deleteButton","unitsOnLevel","rightPadding","bevStyles","canvasGrid","viewCanvasGrid","canvasWrapper","outline","canvasHeader","borderBottomLeftRadius","viewCanvasHeader","levelManagementButton","canvasMask","fullPageLoader","flexBasis","group","checkBoxContainer","calculateFilters","fixedFiltersKeys","valuesToIgnoreInCount","filterSize","valuesToIgnore","filteredFilterValue","columnKeys","getColumnKeys","gridContentHeight","newGridContainerHeight","Item","localization","itemRef","native","data-dial-code","data-country-code","FlagComponent","Flags","Boolean","MIN_TABLE_WIDTH_FOR_SINGLE_LINE_ROW","MIN_TABLE_WIDTH_FOR_DOUBLE_LINE_ROW","MIN_TABLE_WIDTH_FOR_RESPONSIVE_VERSION","changePassword","changeUserDetails","userDetails","getUserDetails","includeRelations","VERTICAL_SPACING_SMART_LIST","HORIZONTAL_SPACING_SMART_LIST","AUTO_SAVE_INTERVAL","DeliveryMethodDropdownStyles","DeliveryMethodDropdown","letterId","recipientEmailEnabled","recipientTextEnabled","shouldShowDropdown","allowEsign","isWebsiteAccess","useForm","dropdownProps","showPrintCopies","inlinePrintComponents","previewProps","printOrPreviewProps","printCopiesFieldName","printCopiesFieldUseForm","printOrPreviewInitialValue","printContainerClassName","onChangePrintCopies","otherPrintProps","showPreview","standaloneApps","letterConfigs","facilityGeneralConfig","currentPrinter","printerSelectionProps","show","printerSelectionContainerProps","gridProps","printerSelectionGridProps","exclude","hasMailingLabel","deliveryMethodValues","filteredMethodForMailingLabel","allDeliveryMethodList","deliveryMethodList","setDeliveryMethodList","noOfCopies","setNoOfCopies","setDeliveryMethod","PrintCopies","modeEnabled","isTextFriendly","isLetterFetched","printerInstalled","setIsPrinterInstalled","txToken","setTxToken","isModalOpen","previewLetterLink","setLetter","previewTemplateLink","setPreviewTemplateLink","previewLetterId","setPreviewLetterId","isPreviewLoading","setIsPreviewLoading","letterIdTemplate","setLetterIdTemplate","showPrinterSelectionDialog","setShowPrinterSelectionDialog","printerSelectedStatus","setPrinterSelectedStatus","selectedEntityAndLevel","fetchPrinter","Popover","currentPrinterId","curPrinter","getPrinterAvailabilityStatus","onDeliveryMethodChange","onStandaloneAppFetch","installedStandaloneApps","onLetterFetch","Letter","letters","Facility_General","isEmailEnabled","isPhoneEnabled","isTextFriendlyContent","fetchStandaloneApp","mapOfLetterIdTemplate","templateLink","PrintCopiesComponent","printCopiesinput","onTxtTokenFetch","onFetchRentalGeneral","Lease_Style","allLeaseStyles","fetchLetter","getTxtToken","fetchConfiguration","LEASE_STYLE","applicableDeliveryMethodList","MOVE_IN_DOCUMENTS","Lease_Agreement","Save_Document","Email_Lease_For_Esign","filterDeliveryMethodList","onPreviewLetterFetch","letterBody","onFetchDocument","previewMergeFields","previewTemplateResponse","onPreviewLetter","fetchDocument","onShowPrinterSelectionAlert","onCloseAlert","onPrinterSelected","currentFacilityId","extraContainerProps","mobileContainer","changePrinterLabel","lastInline","printCopiesContainer","previewLabel","paperWidthSm","printAlertDialogContainerSm","printerAlertNote","leaseStyleConfigs","Inline","SmartDeliveryMethodDropdown","radioStyle","Radio","radioClasses","processedValue","renderRadio","RADIO","FormRadio","doesUrlBelongsToAnyGivenPath","paths","CompanyLogo","syrasoftConnectFull","SyrasoftConnectTaglineWhite","SyrasoftConnectTaglineBlack","SyrasoftConnectMini","USER_DEFAULT_SORT","USER_DEFAULT_FILTER","TenantLeadCard","itemsContainerRef","itemsContainerWidth","isResourceTenantLead","renderItems","items","tenantOrLeadId","textWidth","fullWidthMax","currentId","showChip","alternateContactFirstName","alternateContactLastName","showBalanceWithZero","primaryContactFirstName","primaryContactLastName","CardChipProps","NameContainerProps","nameContainerClasses","nameContainerProps","disabledClassName","topMarginClassName","topMarginClassNameForAddress","topMarginForAddress","commonTypographyPropsForContactAndAddress","tenantImage","dataContainer","textWithChip","labelsContainer","zeroMinWidth","cardChip","tenantLeadCardStyle","fetchConfigs","configTypes","LETTER","GLOBAL_SCROLL_WIDTH","GLOBAL_SCROLL_HEIGHT","STEPPER_ORIENTATION","Provider","ComponentName","shouldWrapWithErrorBoundaries","SmartComponent","LazyComponents","configLoader","ConfigLoader","batchProcessor","BatchProcessor","ProviderHOC","syncProcessActions","asyncProcessActions","processAction","onActionAPIQueue","allKeys","nextBatch","processActionCb","res","pendingOptions","componentCb","initialize","resolveDependency","componentConfig","routeProps","init","clearKeys","storeKeys","lazy","onMount","getRouteList","SmartElement","ownProps","pathList","urlList","initialized","getPropsForState","actionItemsStyle","ActionItem","labelWithIconProps","labelProps","disabledAction","THOUSAND_MILI_SECONDS","creditCardPreProcessor","cardProcessorData","extra","cardDetails","paymentDetails","processorType","updatedPaymentDetails","billingInfo","requestDetails","zip","address1","nameOnAccount","PROCESSOR_TYPE","Syrapay","tokenToSave","authType","achPreProcessor","achInfo","achDetails","displayAccountNumber","encryptedAccountNumber","getErrorActionList","errorType","onTryDifferentMethod","onEditAmount","onDelinquentTenantAlertClose","onPaymentAlertYesAction","exitConfig","exitButton","PREPAY","DELINQUENT_TENANT","OTHER_ERROR","getErrorType","isPrepayError","isDelinquentTenantError","isOtherError","InsuranceBody","insuranceCoverage","insuranceCoverageById","initialCoverageId","policyRequired","onChangeSkipFirstPeriod","facilityProrateInfo","isProrateEnabledFacility","isProrateApplicable","BILLING_TYPE","Prorate_Second","proratePremiumLabel","periodNumber","Prorate_First","getCoverageDetails","policyPremium","policyPremiumMoveIn","heading","amountField","getSkipFirstPeriodDetails","formFieldMargin","getProrateDetails","getCoverageDropdown","getPolicyDetails","fitHeight","coverageDetails","DEFAULT_COLOR_PICKER_COLOR","SmartListWithFormProps","onSubmit","getAddRowFunc","getDeleteRowFunc","FormikProps","updateDeletedRow","ContainerProps","formConfigForColumns","elementType","getFormProps","autoSave","handleEditFormData","pageKey","SmartListWithFormDefaultProps","sectionHeaderStyle","Section","openProp","updateStateOfOpenInParent","controlled","titleVariant","subHeaderVariant","getChildrenContainerRef","childrenContainerRef","openState","setOpenState","renderSectionHeaderOrSubHeader","startElement","subHeader","shouldShowCursorPointer","elementStyleClass","DividerProps","cardHeader","collapsable","subsection","CollapseProps","collapseIcon","onDemandSection","subsectionLeftPadding","onAddOrRemoveSection","shouldApplyPadding","shouldApplyLeftPadding","sectionChildren","collapsedSection","in","Comments","setFetchingAmountField","fetchingField","fetchingAmountField","handleInheritanceForPaymentMethod","paymentMethods","mergeChildConfigWithParent","snackbarId","mapCardProcessorData","mappedCardProcessorData","cardProcessorDetail","CARD_PROCESSOR_SHOW_ON","Refund","mapPromoPlanData","allPromoPlans","getFuncToOpenPaymentMethod","funcToOpenPaymentMethod","openPaymentMethod","updateIgnoreWsMessage","ignoreWsMessage","isLedgerChanged","isLedgerInfoChanged","isLedgerBalanceChanged","isPaymentMethodChanged","RESOURCE_NAME_TO_CONFIG_MAPPING","PAYMENT_METHOD_LIST","isTenantChanged","showTenantInformation","arePromoPlansUpdated","PROMO_PLAN_LIST","getWsMessageDetails","paymentMethodChanged","promoPlansChanged","tenantChanged","handleTenantInfoChange","showRTNS","onTenantFetch","autoSuggestRef","ledgerListWithLabelValue","refreshed","onPaymentMethodFetch","initializeData","isRoute","isPrefilled","tenantOrUnitDetail","paymentProps","shouldLeave","toggleAlertState","onExternalSubmit","isExternalSubmit","setPrefilledFalse","toggleBillAhead","isBillAheadOpen","isUnpaidBillsOpen","toggleUnpaidBills","onShowUnpaidBills","closeBillAheadOrUnpaidBillsModal","toggleLoadingState","extraStates","showAlert","getPaymentDetails","responseCallback","hostedFormData","modifierValue","amountWithoutModifier","selectedPaymentMethod","CREDIT_CARD","DEBIT_CARD","ACH","restPaymentDetails","referenceNumber","CANCEL_TRANSACTION","timeOutMessage","isValidPayment","financialPayment","paymentValidation","validatePayment","prePayIsEnabled","showPaymentOverAlert","posCartTotal","statusLedgerBalance","prePayError","onAuthenticationResponse","errorDetails","authenticationKey","formActions","externalSubmit","printerId","isPaymentTokenAvailable","stateToUpdate","onPaymentResponse","amountToPay","receiptDeliveryMethod","delinquentTenantError","updatedBalance","cvvMessage","cvvResponseCode","avsResponseCode","avsMessage","expressResponseCode","onSuccessfulPayment","responseCode","updatedState","getUpdatedBalanceAfterPayment","updateForm","initialCardInfo","initialAchInfo","paymentNumber","initialPaymentNumber","setFetchedBalance","resetIsAmountWithoutModifierTouched","initialStatus","clearStoreData","clearArStoreKey","storeKeysToClear","onDocumentFetch","resetForm","onPaymentSuccess","documentsWithPreview","getIsAmountWithoutModifierTouched","isAmountWithoutModifierTouched","getResetIsAmountWithoutModifierTouched","resetIsAmountWithoutModifierTouchedFunc","onUpdateLedgerResponse","getBillAhead","onLedgerBalance","setReFetchTenantBalance","setPaymentSnackbarProps","paymentRef","getUnpaidBillsList","transitionComplete","selectedLedger","unpaidBillsCloseButton","unpaidBillsListContainer","unpaidBillsContainerRef","clickHereForMoreButtonContainer","clickHereForMoreButton","renderBillAheadOrUnpaidBills","selectedLedgerId","sideContainer","billAheadContainer","unpaidBillsContainer","onClosePayment","prefilledProp","getOnLedgerBalance","getAutoSuggestRef","reFetchTenantBalance","getPaymentFooter","getFooterProps","getErrorMessage","errorAlertContainer","infoIcon","setSellAndPayLoading","ledgerBalanceTemp","getAlertActions","actionList","closeHostedForm","onPaymentLoginSuccess","isLoginRequired","enableFooterButtons","renderLogin","currentAccountNumber","shouldFocusPayment","paymentLoginContainer","visibleLoginContainer","loginContainer","submitHostedForm","onShouldShowAlertClose","onPaymentOverAlertClose","togglePromoPlan","isPromoPlanOpen","onUpdatePromoPlanResponse","tenantInformationComponentKey","pageLoading","submitPromoPlansData","getCurrentStatus","updateCurrentStatus","currencyName","Receipt","shouldGoBack","unblock","WALK_IN_CUSTOMER_ID","waiveSurchargeOrDiscount","prevSelectedPaymentMethodId","PROMO_PLAN","AR","getSubmit","shouldClearCallbacks","prevProps","prevRefundAmount","paymentMethodId","prevLedgerId","showFooter","isMaskVisible","showOnlyTenantName","pageTitle","fitPage","showHeader","loaderComponent","showModal","selectedTenantId","unitUpdateTime","paymentComponent","fitPageBillAheadOpen","relativePosition","mask","whiteBackground","noDisplay","onApiError","ledgerDetails","parentSize","showAlerts","onSubmitHostedForm","mountOnEnter","unmountOnExit","onEntered","billAheadOrUnpaidBillsModal","modalGridBillAheadOpen","PaymentComp","PaymentStyle","SmartPaymentComp","CustomWithRouter","TenantFormContext","MaterialUiPhoneNumber","flags","guessSelectedCountry","inputNumber","onlyCountries","defaultCountry","isInitial","secondBestGuess","selectedCountry","getProbableCandidate","getOnlyCountries","onlyCountriesArray","filteredCountries","excludeCountries","selectedCountries","excludedCountries","selCountry","filterRegions","deleteAreaCodes","isAreaCode","updateDefaultCountry","disableCountryCode","newSelectedCountry","formattedNumber","scrollTo","dropdownContainerRef","formatNumber","patternArg","enableLongNumbers","autoFormat","formattedObject","remainingText","formattedText","formattedChar","cursorToEnd","isModernBrowser","len","setSelectionRange","getElement","getCountryData","receivedSelectedCountry","countryCodeWithoutAreaCode","areaCodeLength","handleInput","freezeSelection","oldFormattedText","countryCodeEditable","updatedInput","returnValue","caretPosition","selectionStart","handleFormFields","getAreaCode","countryAndAreaData","countryCodeLength","digits","onValidCallback","unformattedNumber","enteredNumberLength","COUNTRY_CODE","AREA_CODE","COUNTRY","handleRefInput","refProp","handleInputClick","handleFlagItemClick","currentSelectedCountry","nextSelectedCountry","newFormattedNumber","handleInputFocus","handleInputBlur","phoneTouched","phoneFields","getHighlightCountryIndex","highlightCountryIndex","oldHighlightCountryIndex","preferredCountries","searchCountry","probableCandidate","probableCandidateIndex","handleKeydown","debouncedQueryStingSearcher","moveHighlight","which","A","Z","handleInputKeyDown","onEnterKeyPress","checkIfValid","updateFormattedNumber","countryGuess","getDropdownProps","showAllCountries","dropdownClass","keepCountries","localizedA","localizedB","isSelected","startAdornment","positionStart","nativeRoot","nativeSelect","IconComponent","flagButton","aria-owns","aria-label","currentTarget","aria-haspopup","flagIcon","disableAreaCodes","preferredCountry","countryGuessIndex","addEventListener","clearValuesOnEmpty","removeEventListener","statePlaceholder","disableDropdown","baseFieldName","PLUS","StyledPhoneNumber","PhoneNumberStyles","PhoneNumberForm","FormPhoneNumberField","WSChangeGroupContext","DocumentFetcherStyles","DocumentFetcher","retryCount","intervalCount","dialogContentRoot","isFetching","setIsFetching","endPreviewing","previewCount","documentUrl","interval","setInterval","clearInterval","contactStyle","phoneContainer","indicatorPadding","iconOrder","showAlways","phoneTopMargin","tooltipRoot","leftAlign","smallLeftMargin","additionalEmailAddress","TablePaper","showClearButton","shouldShow","searchButtonOpen","inputLength","isInputEmpty","onClickAwayPaper","isMoreIconClickedOnClickAway","moreIconRef","showOptions","componentOnClickHandler","renderActionItems","tablePaperComponents","componentLink","actionItemLabel","renderSearch","openSearchTextField","hideSearch","getSearchTextField","hoverIcon","searchPlaceholder","searchTextFieldPosition","searchTextField","searchInputField","getMoreOptions","getHeader","renderHeader","showMoreOption","headerProps","actionIcons","autoFocus","renderPopper","optionsStyle","tableContainer","keepSearchOpen","SearchTextFieldProps","tablePaperStyle","getPrinterUnavailableIcon","requireWhite","PrinterUnavailableWhite","PrinterUnavailable","getPrinterIcon","renderWhite","PrinterAvailableWhite","PrinterAvailable","getPrinterLabel","printerName","metaInfo","printerAlias","addIcon","getPrinterInfo","defaultPrinterId","printerList","printerObject","printerInfo","isDefault","customHeader","ENTITY_LEVEL_MAPPING","getRequestHeaders","FieldsCache","isEmpty","encryptPasswords","globalEncryptionKey","formValuesWithEncryptedPasswords","TenantAlertDialogStyles","TenantAlertDialog","isTenantAlertOpen","changeText","changeTextFunc","onAlertIgnore","ignoreText","severity","SEVERITY_LEVEL","alignCenter","StandardUserAccessible","generateReport","reportIdOrType","deleteCategory","generateRandomNumber","minRange","maxRange","numbersToAvoid","randomNumber","setApiBuildVersion","currentApiVersion","UAParser","Uaparser","getScreenInfo","availHeight","availWidth","colorDepth","orientation","pixelDepth","screen","getDeviceInfo","connection","cookieEnabled","doNotTrack","plugins","maxTouchPoints","deviceMemory","getNavigatorInfo","getDeviceOSInfo","getResult","validateForm","ERROR_MESSAGES","SAME_AS_PREVIOUS","NEW_PASSWORD_MATCH","StandaloneAppDownloadContext","FiltersAndSorts","sortLabel","filterCount","openFilter","filtersRef","isFilterComponentOpen","setFilterCount","closeFilter","toggleSearchButton","toggleIsSortOpen","isSortOpen","closeSearch","setValues","onSearch","setSort","selectedSort","onSort","onChangeFilter","renderSearchTextField","hideSort","searchBorder","searchBottomMargin","renderSearchIcon","renderFilter","showFilterText","hideFilter","filterText","disableElevation","filtersAppliedBtn","renderSortDropdown","sortDropdown","TEXT_FIELD_WIDTH","renderSort","sortModal","sortBody","extraFilterHeight","additionalFilterProps","Filter","Filters","filterComponent","setClearFilter","setFilterCountFunc","getTotalCount","prevFilterCount","renderAddOns","filterContainerProps","searchBarJustification","filterContainerClassName","renderFilterEnd","bottomPadding","filterContainer","FiltersAndSortsStyle","ConfigurationFilterStyle","ConfigurationFilter","includeInactiveForFutureUseStatus","firstLabel","InventoryListFilterStyle","useStyle","MaintenanceEventFilterStyle","ReservationFilterStyle","ReservationFilter","unitTypeIds","unitTypeApiConfig","onSelectOrRemoveUnitType","selectedUnitTypes","WaitingListFilterStyle","WaitingListFilter","Cancelled","TenantFilterStyle","TenantFilter","isAutoPayEnabledChecked","exemptFromEvent","isTaxExempt","setInitiallySelectedValues","GATE_LOCKOUT","OVERLOCK","OTHER_LATE_EVENTS","TAX_EXEMPT","getInitialValues","exemptFromList","isNoTokenFilterEnabled","setIsNoTokenFilterEnabled","resetNoTokenFilter","onSelectOrRemoveExemptItems","selectedEvents","withoutTokenCheckbox","updatedSelectedOptions","UnitFilterStyle","UnitFilter","acceptableAvailableStatus","Available","Unavailable_On_Move_Out","isAvailable","setIsAvailable","isUnavailable","setIsUnavailable","UserFilterStyle","VendorFilterStyle","filterStyle","FromToFilterTextField","toName","toLabel","fromName","fromLabel","clearText","toPlaceHolder","fromPlaceholder","toTextFieldProps","fromTextFieldProps","fromValue","toValue","getValidator","isFieldNoOfDaysLate","isFieldLedgerBalance","commonValidators","filterTextField","buttonLabel","getModeLabel","DelinquencyFilter","modeList","filterSection","leadFilterStyle","LeadFilter","marginForLeadStatus","unitTypeTopMargin","formField","isSourceFilter","PendingOverlockUnlockFilterStyle","OVERLOCK_UNLOCK_PENDING_STATUS","ConversationListFilterStyle","ConversationListFilter","UNREAD","READ","NA","AllAchBatchesFilterStyle","AllAchBatchesFilter","RentAdjustmentFilterStyle","rentAdjustmentStatusList","AutomaticCreditCardDeclinesFilterStyle","AutomaticCreditCardDeclinesFilter","restLabels","NUMBER_OF_TIMES_REPROCESSED","One_Attempt","Two_Attempts","Three_Plus_Attempts","Automatic","Manual","RentAdjustmentSummaryFilterStyle","RentAdjustmentSummaryFilter","selectedFacility","selectedUnits","unitApiConfig","getUnitApiConfig","selectedUnitIds","unitMultiSelect","SavedDocumentsListFilterStyle","SavedDocumentsListFilter","selectedTenants","tenantApiConfig","getTenantApiConfig","onSelectOrRemoveTenant","selectedTenantsIds","documentTypeList","subDocumentTypeList","documentStatusList","tenantOptionFormatter","tenantMultiSelect","MigrationStagesStyle","filterLabel","MIGRATION_STAGES","accountSearch","accountLabel","VehicleFilterStyle","VehicleFilter","EmailAuditFilter","LedgerReviewFilterStyle","LedgerReviewFilter","rangeFilterClasses","paymentMethodApiConfig","chargeCategoryApiConfig","justifyRight","getApiConfig","optionsChargeCategoryFormatter","optionsPaymentMethodFormatter","FacilityFilterStyle","SOFTWARE_ADOPTION_STATUS","CreditCardBatchesFilter","labelWithIconClass","CreateBatchStyle","CreateBatchFilter","filterRadioList","Saved_Cards_With_Balance_Due","Saved_Accounts_With_Balance_Due","Autopay_Enabled_Tenants","SavedDocumentFilter","DelinquencyTrackingFilterStyle","DelinquencyTrackingOverviewFilter","gateIds","gateConfigList","configs","GATE_VENDOR","onSelectOrRemoveGateType","selectedGates","selectedGateValues","FACILITY_TYPE","DelinquencyTrackingLateEventFilterStyle","DelinquencyTrackingLateEventFilter","extraFilters","lateEventApiConfig","getLateEventApiConfig","ALLOWED_LATE_EVENT_STATUS","Processed","Skipped","DelinquencyTrackingLockoutEventFilterStyle","DelinquencyTrackingLockoutEventFilter","DelinquencyTrackingSchedulerFilterStyle","DelinquencyTrackingSchedulerFilter","DelinquencyTrackingWrongEntriesFilterStyle","DelinquencyTrackingWrongEntriesFilter","JournalConfigurationChangesFilterStyle","JournalConfigurationChangesFilter","configurationIdList","configList","Retail_Sale_Configuration","onSelectOrRemoveConfigType","selectedConfigs","selectedConfigValues","JournalLockoutEventFilterStyle","JournalLockoutEventFilter","changeType","selectedEventList","metaInfo__tenantId","Unit_Gate_Access","JournalUserRoleFilterStyle","JournalUserRoleFilter","categodyId","selectedUserRoles","metaInfo__category","selecteUserRoleCategories","userRoleApiConfig","getUserRoleApiConfig","userRoleCategoryList","USER_ROLE_CATEGORY_TYPE","userRoleOptionFormatter","onSelectOrRemoveUserRole","selectedUserRoleIds","onSelectOrRemoveCategoryType","selectedCategories","JournalUserManagementFilterStyle","JournalUserManagementFilter","metaInfo__user_id","selectedUserIds","userApiConfig","getUserApiConfig","onSelectOrRemoveUser","selectedUsersIds","userOptionFormatter","JournalLateEventFilterStyle","selectedTenant","setSelectedTenant","ledgerIds","OtherBatchesFilter","smartListActionItemsPanelStyle","SmartListActionItemsPanel","actionItemProps","backToDashboardActionItemProps","actionItemsContainer","remainingConfig","actionItem","backToDashboardActionItem","LeftLabel","CreditCard","ledgerIndex","baseFormFieldName","needCVV","isInEditMode","skipFieldsValidation","initialMonth","initialYear","editedMonth","editedYear","cvvOrPin","cvvTouched","monthTouched","yearTouched","cvvErrorText","monthErrorText","yearErrorText","expirationYearRef","currentExpirationDate","monthOfExpiration","yearOfExpiration","monthError","yearError","setErrorState","hideError","expirationYearInputProps","cardNumberValidator","formFieldPrefix","zipCodeInputProps","cvvValidator","inputClassesToApply","accountNumberValidator","routingNumberValidator","SyrapayHostedForm","paymentAmount","shouldSaveCard","shouldUseTenantAddress","tokenOnly","formId","submitButtonRef","isCaptureEnabled","onCompletion","getElementById","onLoadFullSteamForm","setupFullsteamHostedPayments","showZip","showAddress1","showNameOnAccount","showCountry","includeToken","completionCallback","cancellationCallback","paymentSourceType","CARD","cardEntryContext","WEB_MERCHANT_ENTERED_PHONE_ORDER","operationType","AUTHORIZATION","click","addJQueryScriptOfHostedForm","currentForm","hostedFormScript","TEST_HOSTED_FORM_URL","jQuery","jQueryModule","hostedFormScriptElement","ViewReport","reportTitle","requestBody","openModal","setOpenModal","onReportGenerate","getReport","Facility","ExpansionPanelStyle","ExpansionPanel","onCloseOrOpen","isPanelOpen","openPanel","panel","panelOpen","panelClose","panelSummary","panelSummaryAdjustment","panelSummaryIcon","panelDetails","Copyright","deleteOverlayStyle","DeleteOverlay","deleteStatus","isNew","NEW","deletionOverlay","overlayMessage","OK","overlayMessageOk","UNDO","overlayMessageCancelStart","EXISTING","FilterOverlay","filterHeader","initSections","sectionsList","curSectionSelected","changeCurSectionSelected","updateFilterStage","onChipSelect","curFiltersApplied","initialAppliedFilters","filtersUpdated","filterData","onFilterApplied","newValues","updateFilters","stateFiltersApplied","curFilters","filterRemoved","convertAppliedFiltersToInitialValues","stage","handleReset","FooterErrorProps","handleBackButton","apiResponse","activeFilters","setSubmitting","renderMobile","renderFilterTypes","renderAppliedFilters","renderDesktop","filterTypesPaper","changeStage","curSection","onSectionClicked","renderStage","enableReinitialize","overlayHeader","hideActionHeader","ModalProps","modalClasses","FilterOverlayStyle","sortableContainer","handleStart","sorting","manager","sortableInfo","nodeIsChild","collection","handlePress","pressTimer","handleMove","_awaitingUpdateBeforeSortStart","delta","combinedDelta","abs","cancelTimer","handleEnd","getActive","customGetEdgeOffset","isKeySorting","gridGap","containerBoundingRect","scrollContainer","dimensions","marginOffset","offsetEdge","initialOffset","initialScroll","initialWindowScroll","pageXOffset","pageYOffset","helper","sortableGhost","minTranslate","maxTranslate","containerTop","containerLeft","containerWidth","containerHeight","containerBottom","containerRight","classList","listenerNode","handleKeyEnd","handleKeyDown","handleSortMove","handleSortEnd","sortingIndex","nodes","getOrderedRefs","keyMove","updateHelperPosition","animateNodes","autoscroll","removeChild","edgeOffset","autoScroller","scrollX","scrollY","onAutoScroll","customKeyCodes","isValidSortingTarget","keyLift","keyDrop","initialFocusedNode","lastIndex","targetIndex","targetNode","containerScrollDelta","targetBoundingClientRect","targetTranslate","targetPosition","shouldAdjustForSize","sizeAdjustment","ignoreTransition","Manager","getChildContext","containerNode","ownerDocument","_contentWindow","defaultView","scrollingElement","AutoScroller","minOffset","maxOffset","windowScrollDelta","sortingOffset","mustShiftBackward","mustShiftForward","nextNode","prevNode","getWrappedInstance","refs","wrappedInstance","childContextTypes","migrationStages","maintenanceEventStatus","linkStyles","textDecoration","MD5","RotateLeft","lValue","iShiftBits","AddUnsigned","lX","lY","lX8","lY8","lX4","lY4","lResult","FF","s","ac","z","F","GG","G","HH","H","II","I","WordToHex","lByte","lCount","WordToHexValue","WordToHexValue_temp","AA","BB","CC","DD","lWordCount","lMessageLength","lNumberOfWords_temp1","lNumberOfWords","lWordArray","lBytePosition","lByteCount","ConvertToWordArray","utftext","Utf8Encode","define","getLoadingStatus","processPayload","localPayload","payloadData","payloadStatus","reduxData","concatData","getLoadingData","reducer","processedPayload","keyData","keyStatus","singlePayload","processStorePayload","permissionRoles","Dashboard","Header","DailySummary","RentAssessmentHistory","AutoPaymentHistory","AutoInvoicingHistory","RentAdjustmentSummary","DelinquencySummary","TaskSummary","SavedDocumentsList","ScheduleList","AsyncTaskList","HeaderInt","Main","MainSettings","MainInt","DelinquencyOverview","LateEventsTracking","LockoutEventsTracking","ScheduledEventsTracking","WrongEntriesTracking","JournalConfigurationChanges","JournalLockoutEvents","JournalUserRoles","JournalUserManagements","JournalLateEvents","FacilityForm","AccountForm","UserForm","UserList","Logout","UnitForm","SideBar","TenantForm","TenantList","LeadForm","VendorForm","InventoryAudit","InventoryForm","UnitListFormatter","MoveIn","MoveOut","UserFormExt","Configuration","FacilityGeneral","FinancialGeneral","FinancialExport","CardProcessor","GateConfiguration","CustomerGeneral","RentalGeneral","InsuranceConfiguration","UnitTypeForm","LateEventForm","MoveInConfiguration","MoveOutConfiguration","ReservationConfiguration","PromoPlanForm","ChargeCategory","RetailSaleConfiguration","BevColorSetup","MaintenanceEventForm","PaymentMethod","TaxCode","TaxExemptCategory","PaymentConfiguration","ChargeCategoryMapping","TenantChangeTracking","TenantAccountType","LetterConfiguration","ViolationConfiguration","TenantSections","WaitingList","ReservationAction","loaded","waitingListAction","ManualChargesForm","ManualCharge","ViolationForm","UserProfile","Bev","PointOfSale","RetailSaleReturns","Operations","UserRole","ReportWorkCenter","InventoryList","VendorList","InventoryBulkRestock","InventoryIndividualRestock","TenantInvalidAccessCodeList","UnitInvalidAccessCodeList","ViewTenant","TenantAlerts","Documentation","UnpaidBills","ReservationCRM","ContactLog","LedgerReview","ArActions","AchOperations","LetterUtil","ManualLateEvent","DepositLog","DepositUpdate","UnitDepositUpdate","TenantDepositUpdate","TenantWebsites","LeaseGeneral","LeaseStyleForm","PendingTasks","ExternalDashboard","Docs","PendingOverlockUnlockList","WrappedInventoryAudit","WrappedInventoryBulkRestock","Invoicing","Conversations","Ach","TransferConfiguration","AllBatches","CurrentBatch","TextList","EmailList","TextOrEmailSelection","ListOrCompose","SyrasoftUserRoles","AccountManagement","FacilityView","UserSetup","UserSetupAction","FacilityList","AccountList","UnitTransfer","BusinessGroupManagement","RentAdjustmentList","AutoRentAdjustment","ViewRentAdjustment","ManualRentAdjustment","RateHistory","LateEvents","RateHistoryAction","InternalAppConfiguration","AutomaticCreditCardDeclines","FailedReturns","TenantChanges","OtherExternalActivity","TenantEmailChanges","TenantDeposit","TenantPhoneChanges","TenantAddressChanges","TenantAlternateContactChanges","GenerateLeaseAgreement","Sandbox","Onboarding","FacilitySetup","OccupancySetup","TaxCodeSetup","Quickbooks","MigrationList","MigrationForm","MigrationServerModal","MigrationDetails","AccountFacilityForm","VehicleConfig","VehicleList","WalkAroundConfig","WalkAround","BatchPayment","FinancialExportOperation","BatchList","BatchDetails","BatchForm","LetterTemplateList","ReservationList","UnitTypeBulk","LeaseStyleBulk","SingleUnitRentAdjustment","DelinquencyTracking","Journal","PrintFailuresList","PendingInvoiceDelivery","DelinquencyList","CCAboutToExpireList","SchedulerCreation","EmailAudit","OtherBatches","OtherMethodsBatchPaymentForm","fontDisplay","primaryicon","secondaryicon","erroricon","speak","small","medium","large","labelWithAddOnsStyle","baseStyle","bottomLeftSnackbarContainer","scrollBehavior","html","formComponent","isFalsyValue","doesValueExists","borderBottomWidth","endAdornment","h5Input","h6Input","subtitle1Input","popdown","snackbarStyles","SnackMessage","isErrorVariant","messageContainer","titleContainer","titleContainerItem","rtnsContainer","actionButton","refreshButton","errorColorIcon","wordBreak","dashboardStyle","flexGrow","mainContent","alertMinWidth","LegalAgreement","agreementLink","setChecked","setIsButtonLoading","onAcceptAgreement","bgrentalStatusVacant","bgrentalStatusRented","bgrentalStatusUnavailable","bgerror","bgstatusError","bgstatusActive","bgstatusInactive","bgstatusLocked","bgstatusCreated","bgrolesPrimary","bgrolesSecondary","bgrolesTertiary","iconstatusActive","iconstatusInactive","iconstatusLocked","iconstatusCreated","iconrolesPrimary","iconrolesSecondary","iconrolesTertiary","bglight","bgstatusReserved","bgstatusCancelled","bgmaintenanceeventstatusUpcoming","bgmaintenanceeventstatusPending","bgmaintenanceeventstatusCompleted","bgmaintenanceeventstatusClosed","bgmaintenanceeventstatusCancelled","bgdelinquencyScheduled","bgautoPayment","bgbatchPayment","bgleadstatusActive","bgleadstatusInactive","bgleadstatusConverted","bgleadstatusCold","bgleadstatusLost","bgleadstatusDuplicate","bgratehistoryWaived","bgratehistoryMovedOut","bghighlight","bgestimatestatusActive","bgestimatestatusMovedIn","bgestimatestatusExpired","bgsetUpPending","bgmigrationDumpGenerationSuccess","bgmigrationNotStarted","bgmigrationProgress","bgmigrationCompleted","bgmigrationErrored","bgmigrationDeleted","bgmigrationServerActive","bgmigrationServerInactive","bgtransparent","bgdelinquencystatusProcessed","bgdelinquencystatusNotProcessed","bgrentAdjustmentPending","bgrentAdjustmentCompleted","bgrentAdjustmentStopped","bgemailAuditYes","bgemailAuditNo","ratehistorystatusPending","ratehistorystatusApplied","ratehistorystatusReversed","ratehistorystatusMovedIn","ratehistorystatusMovedOut","ratehistorystatusWaived","ratehistorystatusReversedTo","ratehistorystatusUnknown","menuStyle","anchorElDiv","autoSuggestUnitCard","borderSizing","objectFit","icons","listItemsFont","estimateStatusActive","estimateStatusMovedIn","estimateStatusExpired","occupancyCardStyles","OccupancyCard","customerId","customerFirstName","customerLastName","UnitCard","fonts","singleLineEllipsis","unitCardStyles","animation","animationDelay","breadCrumbStyle","Breadcrumb","pageHeading","breadCrumb","FilterAndSortsStyle","borderRight","passedEndpoint","sendHeader","storeConfig","initConfig","UNIT_TYPE","isAutoSuggest","migrationStagesStyle","migrationLabel","createBatchStyle","DelinquencyTrackingOverviewFilterStyle","contextId","HeaderOrFooterCell","headerFooterCell","willChange","borderTop","alignLeft","alignRight","vAlignTop","vAlignBottom","vAlignCenter","alignContent","isNested","rootInModal","labelInModal","iconRoot","nestedChipContainerExpanded","nestedChips","nestedChipRoot","nestedChipRootInModal","renderNestedChips","nestedChip","noOfFiltersContainer","noOfFiltersText","quickFiltersStyle","QuickFilters","formPropsRef","filledChipClasses","filledChip","checkboxContainer","keyParts","curr","j","currentVal","disabledIcon","previewLoader","customLink","printerIcon","menuPopper","myShadow","printerSelectionPopover","footerProps","onCloseFunction","isPositiveButtonDisabled","positiveButtonLabelSuffix","BUTTON","BillAheadStyle","BillAhead","initialState","arList","gettingBillsSuccess","useEffectiveDate","useReducer","ON_GENERATE_BILLS","ON_GET_BILLS_SUCCESS","PRE_GET_BILLS","effectiveDateOrPeriod","ON_GET_BILLS_ERROR","ON_PERIOD_TOGGLE","isListLoading","setIsListLoading","onBillFetch","onBillGenerate","getBills","ledgerChange","dataTableHeight","modalHeight","heightToCompare","calculateTableWidth","getBillAheadColumns","billAheadHeader","onChangeOfEffectiveDate","formattedDate","dateAndAmountSection","totalAmountSection","dollarSymbol","periodsSection","EXTRA_SMALL_TEXTFIELD_WIDTH","unitsSection","MONTHS","submit","lastColumnList","BillAheadDateFormatter","switchStyle","TenantInformation","ledgerList","tName","preSelectedTenantId","preSelectedLedgerId","changeToRefundIfNegativeBalance","setUnitList","openAlert","setOpenAlert","setTenantName","lateFeeInfo","setLateFeeInfo","ledgerRef","tenantRef","ledgerIdRef","tenantIdRef","tenantInfoBalance","setTenantInfoBalance","onUnitResponse","resultantBalance","onPendingDelinquency","lateEventConfig","lateEventConfigMap","totalLateFee","idListToProcess","fee","late","PERFORM_BILLING","Daily","At_Payment","setCardInfoFromLedger","restCardInfo","updateLedgerDetails","preferredPaymentMethodId","achPpd","setAchInfoFromLedger","preferredMethod","updatedStatus","onTenantAlertResponse","paymentRelatedAlerts","CHECK","paymentSpecificAlerts","nonPaymentSpecificAlerts","paymentSpecificAlert","alertStatus","visibleAt","paymentRelatedAlert","onSelectTenant","newTenantName","onTenantResponse","onSelectLedger","useNextAmountPayable","iconName","itemName","shouldShowPrepayButton","COMMENT","unitName","TENANT_NAME","LEDGER_NAME","BALANCE","rightContentTopMargin","ledgerPrefilled","marginFromIconInRightContainer","itemLabelContainer","prepayButton","onProcessLateEvent","updatedLedgerInfo","onClickProcess","tenantInfoContainer","leftContainer","iconAlignment","tenantAutosuggest","rightContainer","TenantInformationStyle","PaymentTypeStyle","PaymentType","autoPayEnabledForAch","onAlertYes","refuseCheck","defaultCardProcessor","shouldGenerateReceipt","isFlagged","previousPaymentId","paymentMethodDropdownRef","refundPeriodExpiredDisabled","setRefundPeriodExpiredDisabled","mounted","setMounted","paymentMethodsList","setPaymentMethodsList","paymentMethodsObject","setPaymentMethods","generalAlertShown","setGeneralAlertShown","alerts","setAlerts","makeUseOfTenantAddress","balanceUpdated","amountWithoutModifierUpdated","formControlClasses","deliveryMethodContainerProps","smallFont","noRightMargin","receiptDropDownContainer","shouldEnterCardDetails","shouldShowCardComponent","refundPeriodExpired","doesPaymentMethodUseCard","doesPaymentMethodSavesInfo","doesPaymentMethodUsePaymentNumber","MONEY_ORDER","receiptGridProps","shouldShowPrintCopies","payTypeAndCardProcessorContainer","payUsingOptions","lanes","laneId","payOptions","setTodaysDate","methodListWithLabelValue","paymentMethodStatus","mappedPaymentMethods","selectedMethod","alertArray","processedAlerts","cardProcessorList","cardProcessorIdToSet","processorId","onSelectPayType","selectedPaymentMethodId","onAlertYesArgument","onChangePayUsing","payUsingValue","changeAutoPayValue","saveCard","onChangeUseAchOnFile","payUsingAchOnFile","saveAchForFutureTransactions","saveAch","onEnableOrDisableCardProcessing","enableProcessing","openPaymentMethodDropdown","paymentMethodDropdown","paymentTypeContainer","payTypeContainer","payTypeContainerwithCard","noBorderBottom","noBorderBottomDisabled","dropDown","SMALL_DROPDOWN_MAX_HEIGHT","cardProcessorBottomMargin","receiptDropDown","receiptTopMargin","defaultTopMargin","shortTopMargin","radioGroup","errorButton","waitButton","GET_TRANSACTION_STATUS","maxSeconds","creditCardInfo","renderPaymentMethod","autoPayValue","onEnableOrDisableAutoPay","scrollPaper","renderAlert","SecondsCountdownTimer","seconds","setSeconds","secondsValue","secondaryColor","actionsContainer","noBorder","dropDownWidth","printCopy","Check","mapping","numberVisibility","numberProps","FormHelperTextProps","MoneyOrder","PaymentInformation","extraAmount","extraAmountWithoutModifier","exemptFromSurcharge","isLedgerExemptedFromSurcharge","disableAmountEdit","showUnpaidBills","isWaived","setIsWaived","paymentInfoArguments","isUpdatingAmountWithoutModifier","setIsUpdatingAmountWithoutModifier","canModifyEffectiveDate","setEffectiveDatePermission","amountValidator","setAmountValidator","isViewUnpaidBillsVisible","getPlusMinusSymbol","DISCOUNT","getDollarIcon","dollarIcon","amountWithoutModifierAddon","modifierAddon","totalAmountAddon","shouldShowModifiers","NO_MODIFIER","SURCHARGE","EFFECTIVE_DATE","NEGATIVE_PAYMENT","updatePaymentFields","changedAmountWithoutModifier","touchedValue","isOnChange","onPaymentInfo","onWaiveDiscountOrSurcharge","waived","onChangeAmountWithoutModifier","onChangeAmount","debounceAmountWithoutModifierChange","onChangeAmountField","onBlurAmountField","currentAmountValue","onChangeAmountWithoutModifierField","renderModifierField","textAlignCenter","modifierCheckbox","formControlCheckbox","paymentInfoContainer","dateAndReceipt","datePickerWidth","renderEffectiveDatePicker","amountContainer","viewIconContainer","viewIcon","PaymentInformationStyle","processCard","headerStyle","ledgerOfUnit","unitsByLedger","selectedPromoPlansRef","canApplyPromoPlans","setApplyPromoPlanState","allPromoPlansForUnits","validChargeCategories","rentChargeCategoryId","accessibility","features","isPromoPlanValid","isCurrentPathUnitTransfer","TRANSFER","isBillAheadDisabled","isPromoPlanDisabled","headerActionItems","getPaymentHeaderActionItems","selectedPromoPlans","paymentHeader","alertAction","cancelButton","selectedPromoPlansCopy","addList","setSelectedPromoPlans","PromoPlanStyle","PromoPlan","initiallySelectedPromoPlans","inlineFlex","childPadding","noMarginBottom","fetchZipCodeData","AddressStyles","threeDotProgressSpinner","timezoneApiConfig","confirmationAlertStyles","noBtn","invoiceAlert","transformOrigin","primaryBorder","secondaryBorder","tertiaryBorder","rolesGroupPrimaryBorder","rolesGroupSecondaryBorder","rolesGroupTertiaryBorder","variants","triangleStyle","triangle","borderStyle","borderWidth","triangleContainer","statusActive","statusInactive","statusLocked","statusUnavailable","statusLeadActive","statusLeadCold","statusLeadLost","statusLeadConverted","statusLeadDuplicate","noCloseButton","reportProgressModal","backgroundImage","InsuranceStyle","accessCodeFieldStyle","SideBarListItems","updateConfig","getHomeUrlDetails","defaultFacilityId","handleCompanyLogoOnClick","currentParentEntityIndex","parentEntitiesIndex","locationUrl","initialExpandedIndex","currentUrl","legalAgreement","isAccepted","licenseStatus","homeUrlDetails","configArgs","matchUrl","isConversationEnabled","parentUrl","workCenterPaths","parentWorkCenterPaths","isCurrentWCPath","handleEntityExpandOrCollapse","isInternalDashBoard","parentEntityIndex","isChildEntitySelected","classNames","getListItemClasses","disableGutters","childAddon","childAddonEnd","elementUrl","childLabel","isChildVisible","isCurrentChildWCPath","renderSideNavItems","sideBarStyle","drawerPaper","transitions","easing","sharp","enteringScreen","drawerPaperClose","leavingScreen","firstItem","nameStyles","PhoneItem","arrayHelpers","isAnyPhoneRequired","onPhoneOrEmailValid","phoneExtrasIndex","isAnyPhonePreferred","textEnabledCellNumber","phoneNumberList","phoneId","isPrimaryNumberRequired","isTextEnabledRequired","isPhoneTypeRequired","touchedPhone","isNumberTouched","totalRequiredFieldTypeOnScreen","totalPhoneOnScreen","phoneObj","phoneType","__action_type","cleanedPhoneNumber","messagingEnabled","onNumberChange","enteredNumber","cleanedPhone","Cell_Phone","textEnabledNumber","onCommentChange","enteredComment","isPhoneNumberValid","Phone","phoneInitialValues","requiredFieldsObj","Any_Phone","preferredFieldsObj","eachPhone","isMessagingEnabled","structuredPhoneObj","fieldsToRemove","phones","phoneToRemove","newPrimaryNumberIndex","newPrimaryNumPhoneObj","firstPhoneNumber","isAnyExistingFieldTouched","phoneNumbers","phonesList","newPhonesList","onAdd","overlayMessageCancel","dragAndDropStyles","localDriveIcon","dragOrCreate","dragOrCreateContainer","acceptedFormatText","uploadStatusStyle","photosToUpload","uploadModalGrid","uploadSuccess","uploadError","photoName","marginTop8","onDemandSectionStyle","borderSolid","openHeader","closedHeader","FormikFormWrapperStyle","SummaryTableStyle","singleTableHeader","doubleTableHeader","headerText","columnHeader","rightAlign","leftCell","getColumns","currencySign","isResponsiveScreen","isUserLocked","lockedUntil","SECONDS","userStatus","userProfileId","isUserSelf","hasUserManagementPermission","getIsVisible","baseChecks","UNLOCK","FORCE_PASSWORD_RESET","renderHeaderTitle","statusButtonSource","statusChangeButton","actionItemConfig","actionItemIcon","actionItemButton","renderActionItem","basicInformationStyle","BasicInformation","defaultFacilityList","openAlertModal","setAlertModalStatus","emailErrors","onEmailVerification","not_unique","handleEmailValidation","initialEmailValue","handleModalClose","headerTitle","footerEnclosure","buttonText","TECH_SUPPORT_PHONE_NUMBER","SUPPORT_EMAIL","bodyEnclosure","bodyText","customerSupportEnclosure","customerSupport","customerSupportBold","gap","previewStyles","Preview","deleteAll","previewData","onDeleteRole","updatedPreviewData","permissionName","permissionId","entityNumber","roleBlockPadding","ListRenderer","chipContainer","listRendererStyle","previewStyle","roleTitle","RoleSelection","selectAllPreviewData","onApplyRole","userPermissions","onCopyClick","fetchSelectedUserPermission","onCopyUser","roleSelectionContainerRef","selectedRoleData","setSelectedRoleData","selectedRoleId","selectedRolePermission","userSelected","setUserSelected","setanchorEl","roleList","showEntityListToCopy","entityList","showUserList","onClickOfUser","tabName","getRespectedTableData","ACCOUNT","BUSINESSGROUP","onRoleSelect","selectedRole","createCustomDataForRequiredTab","entityData","onSelectRow","appliedRoleData","hideLastColumn","getTableData","selectedRolePostProcess","renderPermissionTabs","facilityData","businessGroupData","userFormStyle","componentContainer","roleSelectionContainer","basicInfoContainer","roleUpdater","currentRoleId","customRoleData","preProcessPreviewData","facilityObject","accountObject","businessGroupObject","initialUserRoleData","Overlay","getChildren","getKey","toggleForm","onActionItemClick","selectedActionItem","renderActionHeader","getDesktopActionHeader","getMobileActionHeader","renderModal","sectionScroller","disableOverlay","backdropShadow","overlayBody","overlayFooter","getSectionScroller","activeItem","cloneElement","sectionBar","sectionTitle","propName","overlayStyle","gridItem","isCurrentSectionActive","filterSections","filteredSections","searchResult","isFiltered","showAppliedFilters","renderSectionHeader","mobileSectionFilters","sectionHeader","searchFieldContainer","renderList","stateSectionsList","sectionsRef","renderListItem","renderListForDevice","sectionsContainer","renderSectionForDevice","renderSectionComponent","CUSTOM","FilterEnums","CustomComponent","DefaultComponent","restOfComponentProps","SectionLoaders","sectionComponent","filterTypesContainer","FilterTypesStyle","customTitleBarStyle","auto","colorPickerStyle","sortByIndex","index1","index2","getIndex","onScrollCallback","speed","acceleration","isTop","isBottom","isLeft","isRight","isAutoScrolling","ResetPassword","oldPassIconChange","setOldPassVisibility","newPassIconChange","setNewPassVisibility","confirmPassIconChange","setConfirmPassVisibility","renderViewHidePasswordIcon","setStateFunc","UserDetails","userData","renderInfo","componentToRender","canvasHeaderStyles","CanvasHeader","levelsList","canvasRef","isSetupMode","onLevelChange","defaultZoomValue","saveCurrentZoomAsDefault","zoomCanvas","setShowInfoCard","setShowFullPageLoader","setScrollToIndex","searchedUnit","setSearchedUnit","searchedUnitLabel","scrollCanvas","findAndSetUnitIndex","currentUnitId","colorRefreshApiResponse","zoomValueToDisplay","canvasHeaderContainer","zoomButtonContainer","zoomButton","zoomOutButton","zoomButtonDisabled","zoom","zoomPercentage","zoomInButton","textButton","resetButton","textFontSize","setAsDefaultContainer","setDefaultButton","searchableUnitDropdownGrid","searchedUnitLevel","searchableUnitDropdown","infoButton","levelSelectorStyles","LevelSelector","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","scrollActionItems","directionBtn","DIRECTION_ICON","ScrollActionItems","getFabricCanvasInstance","InfoCard","colorLegendData","canvasGridRef","KeyboardShortcut","KeyboardShortcuts","colorLegendStyles","SingleColorEntry","borderRequired","coloredSquareAndDescriptionContainer","coloredSquareBorder","LegendBoardEntry","legendBoardEntry","ColorLegend","BOARD","RENTAL_AVAILABILITY_STATUS","LOCK_OVERLOCK_STATUS","MAINTENANCE_ACTIVITY","board","boardItems","getTitle","LevelManagement","handleLevelsSave","openLevelManagementModal","closeLevelManagementModal","initialLevelsObj","initialLevelsList","erredLevelsList","remainingErrors","fetchUnitCountData","setShowAlertDialog","idOfLevelBeingEdited","setIdOfLevelBeingEdited","idOfLevelBeingAdded","setIdOfLevelBeingAdded","isUnitCountDataLoading","setIsUnitDataCountLoading","unitCountData","setUnitCountData","hasSomethingBeenEdited","onFetchUnitCountData","setHasSomethingBeenEdited","cleanUpBeforeDiscardOrClose","onLevelEdit","onLevelDelete","onCancelAdd","onDiscardChanges","onSaveClick","levelsLength","newLevelKey","newLabel","UNTITLED","LEVEL_1","onLevelAdd","renderBody","isThisLevelBeingEdited","isThisLevelBeingAdded","levelData","isEditMode","isAddMode","renderLevels","Level","actionsConfig","isDeleteAction","BevLeftSideBar","setupModeCanvasRef","labelError","activeDirection","onDirectionChange","requiredFieldsConfig","addToUnitTypeMap","modifyLabelToIdMap","setUnitLabelBeforeDuplicateError","handleMoveToCurrentLocation","showDuplicateUnitLabelAlert","setShowDuplicateUnitLabelAlertDialog","shouldDisableToolBox","handleAddingEntityOnPlusButtonClick","setRequiredFieldsConfig","entityTypeRadioList","getActiveObject","handleChangeUnitNumberOrAlertClose","discardActiveObject","renderAll","switchComponentForm","shouldDisableMoveToCurrentLocationButton","IconButtonWithTooltip","Toolbox","BOTTOM","HCENTER","VCENTER","rotate","defaultProp","UnitFormComponent","isLabelRequired","isWidthRequired","isDepthRequired","isUnitTypeRequired","handleFieldChange","prevLabel","idOfSelectedUnit","modifyEntityData","requiredFieldsConfigLength","isNewlyAddedUnit","validatorsForWidthDepthAndAngleFields","unitTypePermissions","UNIT_PERMISSION_KEYS","isReadOnly","PlaceholderFormComponent","isTypeRequired","placeholderTypeList","Others","Add","activeDirectionInParent","setActiveDirection","onDirectionClick","newDirection","BevSetup","modifyFabricCanvasAndObjectPrototype","fabric","objectCaching","util","extend","_drawControl","ctx","isControlVisible","customIconImage","Image","rotateIcon","_getActionFromCorner","corner","ROTATE","DRAG","getCornerCursor","actionIsDisabled","notAllowedCursor","rotationCursor","attachListenersToCanvasWrapper","handleKeyUp","canvasWrapperRef","addListener","clearFormValues","additionalBevValues","bevInitialValues","currentLevel","handleActiveSelectionType","attachEventsToCanvas","canvasInstance","handlePanning","handleMouseMove","handleCanvasMouseUp","addToLabelToIdMap","setUnitTypeList","controlObjectShadow","loadEntityDataIntoForm","handleRotation","eventActionType","eventToSend","handleObjectModification","triggeredBy","MANUAL","currentlyActObjLabel","currentActObjTempId","labelTooltip","attachEventsToGroup","handleEntityMouseOver","handleEntityMouseOut","moveTooltipWithPointer","transformCoordsAndUpdateEntityData","addToNewAndUpdatedEntitiesList","matrix","calcTransformMatrix","getActiveObjects","activeObject","objectPosition","Point","transformPoint","objectWasRestricted","restrictObjToCanvas","checkAndHandleLabelOverflow","objectsInActiveSelection","selectionType","xFromEvent","yFromEvent","activeObj","xFromObject","yFromObject","objectsInSelection","propertyModified","ActiveSelection","canvas","setActiveObject","isSourceDuplicateUnitNumberAlertDialog","propertyAndValueObject","numericValue","setShadow","saveState","deselected","setOrUnsetRedStrokeOnObject","shouldUnset","shouldCallRenderAll","defaultStrokeColor","strokeColorToSet","controlEntityHighlighting","erredEntities","entityTypeToHighlight","canvasObjects","selectedObject","childObjects","restricted","objLeft","objTop","objWidth","objHeight","getBoundingRect","leftBoundary","topBoundary","boundaryWidth","boundaryHeight","canvasBoundary","_stateProperties","degree","currentAngle","objectInSelection","newAngle","fire","handleDeletionOfEntityFromCanvas","shouldMaskCanvas","activeObjects","getNewShiftedCoordinates","selectionProperties","selectionWidthHalf","selectionHeightHalf","objInitialX","objInitialY","getPointByOrigin","objBoundingBoxWidth","objBoundingBoxHeight","coords","selectionWidth","selectionHeight","forEachObject","newCoords","setPositionByOrigin","increment","shouldReset","getNewObjectXY","getActiveDirection","getZoom","selectedObjWidth","selectedObjHeight","positiveOrNegative","newX","newY","createClass","setDimensions","drawCanvas","prevErrorsInBev","prevLabelError","errorsInBev","setShouldDisableToolBox","dispose","addEntity","isAddByClick","bevWidth","bevHeight","cHeight","getHeight","cWidth","getWidth","rect","strokeWidth","entityLabel","entityObj","stateProperties","boundaryRect","bringToFront","setZoom","tabIndex","bevViewStyles","Triangle","entityBevData","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","BOTTOMRIGHT","TOPLEFT","TOPRIGHT","triangleType","TriangleMemoized","Entity","handleUnitClick","isSearchedUnit","bevX","bevY","lockOverlockBoard","maintenanceActivityBoard","delinquencyStatusBoard","bottomRightColor","topRightColor","topLeftColor","unitDoubleStrokeEffect","entityLabelContainer","GATE_STATUS","Locked","tooltipChipRoot","RENTED","triangles","commonProps","renderTriangles","BevView","setShowLoader","unitBev","scrollToIndex","collectionRef","EntityComponent","collectionRefObj","recomputeCellSizesAndPositions","itemId","reservedColorItemId","isUnitReserved","RENTAL_AVAILABILITY_STATUS_BOARD_RESERVED_ITEM_ID","restReservationData","cellCount","scrollToCell","cellSizeAndPositionGetter","getTriangleStyle","trianglePosition","triangleSideDimension","mainColor","WebkitTransform","WebkitTransformOrigin","bottomRightTriangle","arg","topRightTriangle","topLeftTriangle","selectedRoleKey","copyRoleName","onRoleSelection","userRoles","clearSearch","isSourceInternalDashboard","isSearchbarOpened","openSearchbar","roleIdOrUserType","userTypeLabel","onActivateOrDeactivate","deleteAccess","reverseAccess","createEdit","facilityEdit","inventoryAudit","businessGroupEdit","curUserPermRoleIdForCurFacility","setMoveInDisable","setMoveOutDisable","occupancyConfig","updateOccupancyConfig","financialsConfig","updateFinancialsConfig","retailSaleConfig","updateRetailSaleConfig","unitConfig","updateUnitConfig","updateConfiguration","isUserEditingOwnRole","setFieldValueAndTouched","permissionArray","roleDisplay","userRoleTabsConfig","indicatorColor","userRoleTabs","commonCheckBoxProps","onNodeSelect","searchableTreeViewStyle","treeActions","treeView","clearButton","calendarStyle","monthStyle","calendarWeekStartingDay","numberOfWeeksToDisplay","daysOfWeek","numberOfDays","startingDay","prevMonthLastDay","currentDate","renderInRows","dayComponentProps","shouldTruncateTitleForSixWeekMonth","truncateTitleLengthForSixWeekMonth","shouldTruncateTitleValue","truncateTitleLengthValue","weekDays","weekDayContainer","weekStyle","Week","yearNumber","displayDay","dataForDay","colIndex","monthStartingDayIndex","calendarsWeekStartingDay","monthStartingDay","monthStartingDayAndCalendarStartDayAreSame","dayNumber","isWithinMonth","isPrevMonth","isNextMonth","selectedMonthFirstDate","getDisplayDayInfo","dayContainer","dayStyle","Day","isLaptop","currentDateStr","isDateToday","dateBadge","singleDayData","renderSingleDayData","laptopAndMobile","desktopAndTablet","calendarHeaderStyle","displayedDate","selectedView","viewTypeList","handleViewChange","onDateSeek","datePickerDateFormat","onDateChange","createButtonText","onCreateButtonClick","getDisplayText","renderDateSeekButton","seekDirection","DATE_SEEK_DIRECTION","BACKWARD","headerContainer","dateTextFieldInputMarginTop","dateTextFieldInput","disabledDatePickerOverride","inputComponent","FORWARD","views","titleSpacing","skipSort","createButtonGrid","ICON_CONTAINER_WIDTH","ICON_CONTAINER_HEIGHT","sideIconStyles","iconContainer","sideIcon","smartListWithFormStyle","stepperStyle","stepText","actionFormatter","statusFormatter","userListFormatterStyle","getUserColumns","DateRangeStyle","dateContainer","NumberRangeStyle","groupPriorities","priorities","prioritiesListByIndex","prioritiesIndex","indexByPriorities","calculatePriority","critical","criticalKeys","dependency","newPriority","prev","cur","calculate","accountContextRequiredConfig","getAccountContext","curStoreKeys","componentRouteProps","getGroupedBatch","regularBatch","configBatch","getStoreConfig","storeDetail","nextBatchToProcess","statusToKeyMap","batchedCriticalKeys","dependencyConfig","resolveCustomHeaderFromStore","CustomHeaderStoreConfig","StoreCustomHeaders","getCustomHeaderConfigByStoreKey","getCustomHeader","contextHeaders","getRequestOptions","getStoreKeyFromAction","apiFetchConfig","getRequestConfigForKey","groupStoreKeysToDispatch","criticalKeysBatches","calculateRequestQ","configRequest","configBatchApiRequests","requestAPIQueue","configRequestApi","initialFilter","configFilter","configHeaders","restOptions","mergedApi","singleRequest","storeOptions","bind","localBatchedCriticalKeys","batchToProcess","getRequestQ","apiQueue","dispatchAPIQueueActions","actionApiConfig","batchOptions","localState","indexKeyByStatus","checkAndResetBatch","resolvedKeys","processResolvedKeys","dynamicConfig","localDynamicConfig","actionConfigRequest","ActionConfig","dynamicConfigForMount","actionConfig","onMountConfigs","funcName","getOnMountConfig","getDynamicConfigFromOnMount","localSingleRequest","currentState","criticals","criticalKey","currentUnloadedKeys","batchIndex","currentBatchIndex","unloadedKey","resetBatch","areCriticalsResolved","areCriticalKeysValid","updateBatch","indexOfResolvedKey","resolvedKey","Dependency","TYPE","initializeDependency","initializeType","initializeConfig","initializeConfigByComponentName","initializeConfigByRoute","flattenStoreKeys","currentRoute","getCurrentPath","GLOBAL_STORE_KEYS","parentPath","getPathList","setFacilityObject","convertArrayToObject","getBreadCrumbList","fetchUser","getUserActionBreadCrumb","isDataUpdated","getRoleSelectionContainerRef","roleSelectionContainerRefSet","Created","getRoleList","rolesData","onUserFetch","preProcessPermissions","remainingRoleMappings","otherValues","isUserFetch","userInfo","userAuthDetails","isUserLockedValue","initialFormStatus","initialPreviewData","initialPermissions","getPreviewData","dataUpdated","facilityPermissions","restNestedPermissions","restPermissionData","getDefaultFacilitiesList","selectedRoleLabel","onRowSelect","roleData","updateUserPermissions","indexOfUpdatedRole","roleToUpdate","permissionsData","getRespectiveData","getRespectedData","tabKey","getUserFooter","typeOfDeleteData","deletedId","deleteAllRoles","setUserListData","onUserSearch","copyUserList","copiedList","onCopy","tempObj","renderMask","getComponents","accountBelongsToUser","getRoleSelectionData","saveNewUser","shouldAssignRoles","otherUserData","account_id_list","onNewUserSave","onUserAssociate","onEditedUserSave","getPermission","getAssignedRoles","updatedRoles","deletedRoles","onAssociateUser","createdUserId","saveEditedUser","handleUnlockUserOrForcePasswordResetResponse","actionItemSource","isSuccess","handlePositiveAlertButtonClick","defaultAlertDialogConfig","alertDialogConfig","alertMessage","renderAlertDialog","JSZip","resolveQuickbooksUrl","qbInfo","qbError","realmId","resolveCurrentFacilityDetails","stateFid","stateFacilityId","changeFacilityRequest","facilityMap","preProcessData","connectWebsocket","resolveAppropriateRoute","stateToSet","checkAndUpdateRoute","doesFacilityBelongToCurrentAccount","updateCurrentRouteIfInvalid","dashboardUrl","initializeInternalDashboardComponents","initializeExternalDashboardComponents","isSystemAccount","setUpdateTimeoutInterval","isUserActive","manageEventListeners","shouldAddEventListeners","updateTimeoutInterval","eventListeners","addOrRemoveEventListener","onFocusOrBlur","checkAndUpdateSessionTimeout","onSessionTimeoutUpdate","tokenExpiry","CURRENT_FACILITY_STORE_KEY","updateFacilityStoreWithLicenseStatus","updatedFacilityId","updatedFacilityData","eachFacility","updatedFacility","Expired","headerKey","handleFacilityStatusRTNSMessage","handleUnitAvailabilityForWaiting","unitTypeMessage","childrenToNotify","notifyChild","wsProps","changeWebSocketGroup","initializeDashboardComponents","initializeSettingsDashboardComponents","toggleDrawer","closeDrawer","setFinishedDownloadCallback","onDownloadFinish","updateStandaloneAppDownloadingStartDetails","standaloneAppDownloadDetails","downloadStarted","contentLength","receivedLength","addFilesToFolder","folder","files","file","getExeFile","chunks","standaloneInstallerFile","chunk","getConfigFile","configData","downloadZippedFolder","zippedContent","zippedData","revokeObjectURL","postDownloadStandaloneApp","additionalFiles","generateAsync","downloadInstaller","additionalDownloadedFiles","s3Response","reader","getReader","read","downloadStandaloneApp","fileToDownload","getAgreementDetails","renderAlertMessage","isOnboarding","alertTitle","logout","onLogout","resp","sidebar","fetchUserProfile","Global_Encryption_Key","responseData","onUserProfileFetch","saveUserDetails","requestsInQueue","onEditUserDetails","hasErrors","showSnackbar","savePassword","valuesWithEncryptedPassword","onChangeUserPassword","validateFormForSamePassword","newErrors","passwordErrors","LoadBev","isDataLoaded","isView","setCanvasGridRef","levelConfigId","wsLevelsObj","mockResponseWs","isMockResponseWs","onLevelsSave","UNIT_BEV_MINI","wsBev","formLevels","levelDiff","msg","defaultLevel","fetchOrRefreshEntitiesData","clearStoreOnUnmount","newAndUpdatedUnits","newAndUpdatedPlaceholders","areNewEntitiesAddedOrUpdated","SETUP","getLevelsListFromLevelsObj","levelsObj","getLevelsObjFromLevelsList","setLevelInForm","bulkRequestErredUnitsMap","bulkRequestErredPlaceholdersMap","unitLabelBeforeDuplicateError","initialLabelToIdMap","shouldReMapUnitTypeIds","onFetchTenant","tenantBevData","unitIdTenantMapping","dependentDataFetched","onFetchReservation","reservationBevData","unitIdReservationMapping","reservedUnitId","levelToFetch","unitDataReqType","placeholderDataReqType","unitBevMini","unitBevArray","unitIds","levelToFetchFor","setSetupModeCanvasRef","setPanningMode","panningMode","shouldClearList","shouldClearFormField","unitTypeMap","showFullPageLoader","newKeyToReplaceOldKeyWith","oldKey","valueOfOldKey","changeMode","incrementValue","currentZoomValue","prevZoomToSet","ellipsesTextObj","viewportTransform","facilityGeneralConfigId","onSaveCurrentZoomAsDefault","shouldClearStore","clientX","clientY","setCursor","isDragging","_previousPointer","repeat","labelTooltipInstance","pointer","getPointer","restrictPanning","hasLabelOverflowed","tooltipRectObj","tooltipTextObj","tooltipWidth","tooltipHeight","dx","dy","lastPos","gridHeight","canvasWidth","canvasHeight","coord","templateX","templateY","originalZoom","originalViewportTransform","setViewportTransform","isOverflowing","ellipsedLabel","newEllipsesTextObj","getNewAndUpdatedEntityDataVarNameByType","getBulkErredEntitiesMapVarName","isUpdate","updatedPropertyAndValue","shouldClearPrevValues","newAndUpdatedEntityDataVarName","prevBev","restPrevValues","placeholderStatus","restUpdatedProperties","restData","bulkErredEntitiesMapVarName","removeSuccessfulEntitiesAndGetErredEntities","responseUnitsList","responsePlaceholdersList","idListOfUnitsInRequest","idListOfPlaceholdersInRequest","valueAtTempId","placeholderId","highlightErredEntities","bulkRequestErredEntitiesMap","getFormattedPlaceholderReqBody","newAndUpdatedPlaceholdersParam","restPlaceholderData","handleOnSubmit","entitiesBulkSaveAwaitResponseCount","unitBulkReqBody","placeholderBulkReqBody","onEntityBulkSaveResponse","checkAndCallOnEntitiesSave","unitBulkSaveResponse","placeholderBulkSaveResponse","onEntitiesSave","initialExtraValues","prevInitialBevValues","unitApiError","unitBulkSaveResponseBody","placeholderApiError","placeholderBulkSaveResponseBody","unitResponseData","placeholderResponseData","UNIT_BEV","shouldDataUpdate","unitDataStatus","STORE_KEY_STATUS","placeholders","placeholderDataStatus","isUnitBevDataLoaded","isPlaceholderDataLoaded","shouldUpdate","unitBevStoreStatus","placeholderStoreStatus","getEntitiesData","getPlaceholders","onLevelManagementClick","processedLevelsData","restCurrentBevValues","firstLevel","extraValueObj","getCanvasObjectOfExistingUnit","idOfExistingUnit","canvasObjectOfDuplicateUnit","canvasObjectOfExistingUnit","propertyToValueMap","centerCoordsOfDuplicateUnit","getCenterPoint","initialLabelOfDuplicateUnit","initialLabel","labelBeforeDuplicateError","renderFooter","isFormValid","areThereErredEntities","checkForDuplicateUnitLabelError","newEntity","handleAddingUnitOnEnter","bevColors","bevData","boards","migrated","firstLevelKey","colorLegendDataUpdated","savedUnitsData","BEV_COLORS","LATE_EVENT","MAINTENANCE_EVENT","prevMode","lateEventData","board3Items","board4Items","areSomeUnitTypeIdsNotInMap","isBoard3ItemsEmpty","CREATE_ON_TYPE","Switch","renderSwitch","stateChecked","SwitchComponent","SWITCH","FormSwitch","customTitleBarStyles","CustomTitleBar","headerActions","statusButtonProps","configFormClassRef","renderStatusButton","addressLine1Visibility","addressLine1Props","addressLine2Visibility","addressLine2Props","stateFieldName","stateVisibility","isStateDisabled","stateProps","countryFieldName","countryVisibility","isCountryDisabled","countryProps","cityFieldName","cityVisibility","isCityDisabled","cityProps","zipCodeFieldName","zipVisibility","zipProps","addressLabelVisibility","zipCodeFromValues","cityFromValues","stateFromValues","countryFromValues","threeDotProgressClasses","zipRelatedFieldsAddon","prevZipCode","defaultZipRelatedFieldsObject","allZipRelatedFieldNames","zipRelatedFieldsNotFilled","zipRelatedFieldsNotEditedByUser","zipRelatedFieldsEditedByUser","zipRelatedFieldsDisabledAndLoadingStatus","setZipRelatedFieldsDisabledAndLoadingStatus","isZipRelatedFieldDisabledAndLoading","isDisabledAndLoading","shouldFetchZipCodeData","isAnyFieldNotFilled","isEditedByUser","isAnyFieldNotEditedByUser","setCityField","setStateField","setCountryField","setOrUnsetAddressFields","isReset","isCityEditedByUser","isStateEditedByUser","isCountryEditedByUser","setIsZipCodeDataBeingFetched","isZipCodeDataBeingFetched","onZipCodeDataFetch","zipRelatedFieldsOnChange","getZipRelatedFieldAddon","relatedTarget","innerText","setRelevantZipRelatedFieldsDisabledAndLoadingStatus","SUBMIT","setConfig","withoutSection","CustomRoute","removeRefOfUnmountedComponent","keyProp","checkZipCodeDataFetchStatus","classRef","FormikFormWrapper","FormikContext","SmartListWithForm","setAutoSaveInterval","autoSaveIntervalId","autoSaving","unsetAutoSaveInterval","getDefaultTableProps","customHorizontalSpacing","customVerticalSpacing","updateListConfig","listConfigToUpdate","handleAddRowInternally","importSource","addRow","updatedColumns","isImporting","getFormValues","indexToInsertOn","initialList","valueToSet","listValues","getPageBodyRef","modifiedListConfig","isListConfigOfFuncType","toggleButtonLoadingState","indexesToSet","toggleCallback","isAutoSaving","onImport","importedData","preProcessImportedData","currentTouched","processedImportedData","importedTouched","dirtyTouched","updatedTouched","onImpostClose","isInitialValid","onImportSuccess","getFormRef","formRef","prevAutoSave","AccessCodeField","hideAutoGenerateText","allAccessCodes","currentAccessCode","labelWithIconClassName","excludeFromValidation","hideAutoGenerateButton","labelWithIconTooltipClassName","gateConfig","NONE","gateType","allowReuse","validator","relationalAccessCodeData","GATE_TYPE","Ledger_Based","regenerateAccessCode","regeneratedAccessCode","InventoryContext","additionalKeysToClear","clearLead","isUnitUpdated","isConfigurationChanged","isTenantInfoUpdated","Menu","onOpenOrClose","contains","leaveMenu","mouseOverMenu","enterMenu","leaveAnchor","mouseOverAnchor","enterAnchor","handleArrowRef","arrowRef","anchorElProps","anchorElClassName","otherAnchorElProps","otherPopperProps","MenuListProps","MenuItemProps","LinkProps","onClickOpen","onMouseEnter","onMouseLeave","paperHoverProps","TimezoneDropdown","timezoneList","SyrasoftUserAccessible","ConfirmationAlert","onClickNo","onClickYes","noButtonLabel","noButtonProps","yesButtonProps","yesButtonLabel","triangleClassName","titleClassName","NameFields","firstNameVisibility","firstNameProps","lastNameVisibility","lastNameProps","salutationVisibility","salutationProps","suffixVisibility","suffixProps","preferredNameVisibility","preferredNameProps","businessNameVisibility","businessNameProps","reverseLastNameAndSuffix","isSalutationTouched","isSuffixTouched","renderLastNameAndSuffix","DragAndDrop","onDrop","getRootProps","useDropzone","rootProps","ColorPicker","disableAlpha","coloredSquareRef","isColorPickerOpen","openColorPicker","setColor","handleOpenClose","handleChange","newColor","rgbColorValue","rgb","alphaInHex","hexWithAlpha","renderColorPicker","flip","presetColors","COLOR_PICKER","FormColorPicker","PointOfSaleContext","RouteContext","AchContext","SortableElement","register","unregister","contextTypes","PasswordField","showPassword","setShowPassword","ReportViewer","viewReport","setViewReport","eventProps","Insurance","fetchRentalInfo","setInsuranceUpdated","MOVE_IN","insurancePremiumProrateAmount","policyId","setCoverageById","isCancelling","setIsCancelling","setInsuranceCoverage","initialInsuranceDetails","setInitialInsuranceDetails","initialPolicyId","isInsuranceEnabled","setInsuranceConfigs","isComponentMounted","onInsuranceCoverageFetch","Insurance_Coverage","Insurance_Provider","plans","planDescription","coverageList","coverageById","isStartValid","isExpirationValid","onInsuranceConfigFetch","insuranceConfig","pId","mandatePolicyId","providerId","onInsuranceInfo","insuranceProrateAmount","RENTAL_INFO_FIELDS","getInsuranceInfo","onInsuranceSave","onCancelInsurance","handleInsuranceCancel","skip","resetProratePremium","getInsuranceBody","getInsuranceHeader","VehicleModalContext","FileItem","onRetry","nameClassName","SUCCESS","uploading","getStatusConfig","isErrored","UploadStatus","fileList","uploadSummary","sectionRefMap","sectionsOffset","isScrolling","isScrollListenerDisabled","initializeList","SectionScroller","DropdownProps","setList","currentSectionId","setCurrentSectionId","getActiveId","pos","mid","trunc","midExists","midPlusOneExists","handleScroll","scrolledActiveId","selectedSection","scrollIntoView","behavior","updateSectionPosition","getUpdateScrollPositionFunc","ScanBarcodeButton","SummaryTable","isAnotherTablePresent","tableWidthFromParent","tableWidthFromSelf","CustomMergeFieldContext","SyrapayMerchantPortal","TEST_MERCHANT_PORTAL_URL","BaseUserRole","areChangesMade","isCreateRole","preProcessRoles","handleInitialRouteChange","userTypeFromParams","urlBuilderName","urlBuilderNameForCreate","urlBuilderNameForEdit","isBasePath","createOrUpdateUserRole","nextIdToSelect","selectOrCopyRole","resetCurrentForm","onCreateRole","allRoles","filteredRoles","lowerValue","onUserRoleUpdate","updatedRole","shouldClearStoreKey","onUserRoleCreate","baseURL","idOrUserType","isCopying","formStatusToSet","selectedIdToSet","shouldUpdateRTNSSnackbarActions","pageTitlePrefix","permissionRoleId","roleName","formDirty","flattenValues","LetterTemplateContext","LinkList","renderLink","showGrid","paymentHandler","initialEmailAddress","formType","isAdditionalEmailOpen","setIsAdditionalEmailOpen","FORM_TYPE","OtherInformation","commentsVisibility","commentsProps","dateOfBirth","dateOfBirthVisibility","dateOfBirthProps","doesSectionContainValue","sectionObj","OnDemandSection","fieldsCache","onSectionClick","defaultValues","onDemandClasses","isAnySectionFieldVisible","existInTheForm","markedForDeletion","setSectionStatus","sectionValue","sectionHasValue","deletedValues","setDeletedValues","sectionTouched","setSectionTouched","newSectionStatus","ADD","updatedValue","updatedInitialValues","DocumentLink","intervalDuration","isLinkReady","setIsLinkReady","setRetry","getPaymentPermissions","paymentPermissions","SearchableTreeView","keyToClear","TextFieldProps","showActionItem","useFormTreeView","TreeViewComponent","FormTreeView","TreeViewProps","treeViewItems","setTreeViewItems","inputText","filteredTreeItems","AddMoreFilesButton","startIcon","addMoreButton","responseType","fileUrl","getCalendarData","calculateValue","showFixedNumberOfWeeks","firstDayOfMonth","numberOfWeeksInMonth","Calendar","onChangeSelectedViewType","onpropDateChange","WEEKDAYS_LIST","setSelectedView","setDisplayedDate","calenderDataValue","setCalenderDataValue","viewTypeValue","selectedDateValue","newDate","nextDate","renderCalendar","SideIcon","iconComponent","Stepper","steps","onStepChange","stepCompletionConfig","detachStepperBody","StepperProps","StepProps","StepLabelProps","StepBodyProps","unmountStepContentOnExit","updateStepCompletionConfig","currentStep","setCurrentStep","onClickStepLabel","onNextStep","stepValue","renderStepBody","stepIndex","isCompleted","isTargetStepCompleted","isPrevStepCompleted","isActiveStepCompleted","onClickStepIcon","nonLinear","connector","alternativeLabel","HORIZONTAL","VERTICAL","last","StepIconProps","stepIconComponent","slotProps","componentsProps","getUserListConfig","prevStatus","fieldState","FIELD_STATE"],"mappings":"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ErBlD,eAAgB,CACZwF,aACAriC,qBACG68B,GAEP2B,WAAYA,EACZmF,eAAgBhB,IAAcD,GAC1BxE,MAO/BjB,IAAqBgC,GAAenuD,KAAKkxD,sBAEtCntK,IAAWu0F,IAAOotB,gBAEd,gBAAC,IAAD,CACI9L,QAAQ,QACRD,MAAOn5H,IAAY6D,yBAa3DgjL,EAAUxjE,UAAYivE,IAEtBzL,EAAUnjE,aAAe6uE,IAEV1L,a,u2DC70BA,MAAIxqD,IAAI,CAAC,SACpB,WACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,SACA,SACA,SACA,aACA,SACA,UACA,aACA,UACA,SACA,QACA,WACA,WACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WACA,WACA,SACA,OACA,UACA,SACA,SACA,SACA,SACA,SACA,WACA,UACA,SACA,SACA,UACA,WACA,WACA,UACA,SACA,OACA,SACA,SACA,WACA,SACA,UACA,SACA,OACA,OACA,SACA,SACA,SACA,SACA,WACA,SACA,SACA,SACA,SACA,OACA,SACA,OACA,SACA,UACA,SACA,UACA,SACA,UACA,YACA,SACA,SACA,UACA,SACA,SACA,UACA,WACA,QACA,SACA,UACA,SACA,SACA,SACA,UACA,WACA,SACA,SACA,SACA,SACA,WACA,UACA,SACA,OACA,SACA,aACA,UACA,WACA,UACA,SACA,QACA,SACA,SACA,UACA,WACA,SACA,SACA,UACA,WACA,SACA,UACA,SACA,SACA,WACA,UACA,SACA,OACA,SACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,SACA,YACA,UACA,SACA,SACA,UACA,WACA,SACA,SACA,WACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,OACA,SACA,SACA,WACA,UACA,UACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,SACA,UACA,SACA,SACA,SACA,UACA,UACA,QACA,SACA,WACA,SACA,SACA,UACA,SACA,QACA,SACA,QACA,SACA,SACA,SACA,WACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,WACA,SACA,QACA,SACA,UACA,SACA,WACA,UACA,WACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,OACA,SACA,UACA,WACA,SACA,SACA,WACA,SACA,OACA,QACA,OACA,SACA,UACA,SACA,QACA,SACA,SACA,UACA,SACA,SACA,WACA,WACA,QACA,WACA,SACA,SACA,OACA,UACA,SACA,SACA,QACA,WACA,WACA,YACA,SACA,SACA,SACA,YACA,SACA,WACA,YACA,SACA,OACA,OACA,QACA,WACA,WACA,UACA,UACA,UACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,WACA,SACA,UACA,UACA,SACA,UACA,SACA,OACA,YACA,SACA,SACA,WACA,SACA,UACA,SACA,SACA,WACA,SACA,UACA,UACA,SACA,UACA,SACA,SACA,SACA,OACA,SACA,WACA,SACA,UACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,UACA,aACA,SACA,UACA,SACA,WACA,QACA,SACA,OACA,WACA,OACA,UACA,SACA,UACA,SACA,OACA,SACA,UACA,SACA,SACA,WACA,SACA,SACA,SACA,OACA,QACA,SACA,SACA,SACA,WACA,SACA,SACA,WACA,OACA,WACA,SACA,QACA,aACA,WACA,UACA,SACA,QACA,UACA,SACA,SACA,SACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,OACA,UACA,WACA,UACA,SACA,OACA,UACA,SACA,WACA,WACA,SACA,WACA,OACA,SACA,WACA,OACA,SACA,SACA,WACA,QACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,SACA,SACA,WACA,SACA,OACA,SACA,SACA,QACA,WACA,OACA,OACA,WACA,SACA,WACA,SACA,WACA,UACA,SACA,SACA,WACA,WACA,QACA,OACA,QACA,YACA,UACA,SACA,SACA,WACA,SACA,WACA,QACA,SACA,QACA,WACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,WACA,SACA,UACA,UACA,WACA,OACA,WACA,UACA,UACA,SACA,SACA,SACA,WACA,SACA,UACA,UACA,OACA,WACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,WACA,SACA,UACA,OACA,WACA,SACA,WACA,SACA,SACA,UACA,UACA,SACA,YACA,SACA,WACA,OACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,SACA,WACA,UACA,UACA,YACA,SACA,SACA,UACA,QACA,WACA,QACA,SACA,WACA,SACA,OACA,SACA,UACA,SACA,SACA,WACA,OACA,WACA,SACA,UACA,SACA,SACA,SACA,UACA,SACA,OACA,UACA,WACA,SACA,OACA,WACA,WACA,SACA,SACA,SACA,SACA,WACA,QACA,SACA,QACA,UACA,SACA,aACA,UACA,SACA,OACA,UACA,SACA,SACA,OACA,WACA,UACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,YACA,WACA,SACA,WACA,UACA,OACA,QACA,UACA,SACA,WACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,SACA,WACA,SACA,SACA,WACA,SACA,SACA,OACA,WACA,QACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,UACA,SACA,OACA,OACA,UACA,UACA,WACA,SACA,OACA,QACA,SACA,WACA,UACA,SACA,WACA,SACA,QACA,QACA,SACA,QACA,OACA,aACA,SACA,QACA,SACA,UACA,WACA,WACA,OACA,SACA,SACA,SACA,WACA,OACA,UACA,UACA,WACA,SACA,SACA,SACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,aACA,UACA,SACA,SACA,aACA,UACA,WACA,UACA,UACA,cACA,SACA,SACA,UACA,OACA,UACA,UACA,QACA,OACA,UACA,QACA,QACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,UACA,SACA,UACA,SACA,SACA,OACA,UACA,WACA,OACA,SACA,WACA,SACA,SACA,OACA,SACA,UACA,QACA,SACA,UACA,WACA,OACA,WACA,UACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,SACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,SACA,WACA,OACA,UACA,SACA,OACA,SACA,WACA,QACA,QACA,SACA,UACA,SACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,UACA,SACA,WACA,WACA,OACA,WACA,QACA,SACA,QACA,SACA,WACA,SACA,WACA,SACA,SACA,QACA,UACA,OACA,UACA,OACA,UACA,WACA,SACA,SACA,SACA,OACA,UACA,QACA,SACA,SACA,UACA,QACA,UACA,UACA,SACA,SACA,WACA,SACA,SACA,QACA,UACA,SACA,SACA,UACA,OACA,WACA,SACA,UACA,WACA,UACA,QACA,UACA,WACA,WACA,UACA,QACA,OACA,OACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,OACA,UACA,QACA,SACA,WACA,UACA,SACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,UACA,QACA,WACA,UACA,SACA,SACA,YACA,UACA,WACA,UACA,QACA,UACA,QACA,WACA,WACA,SACA,SACA,SACA,SACA,OACA,WACA,WACA,SACA,WACA,UACA,SACA,WACA,SACA,SACA,UACA,SACA,SACA,SACA,OACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,SACA,SACA,YACA,aACA,UACA,SACA,SACA,OACA,UACA,SACA,WACA,QACA,WACA,QACA,SACA,WACA,YACA,SACA,QACA,OACA,WACA,SACA,SACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,SACA,SACA,WACA,YACA,QACA,OACA,UACA,SACA,SACA,OACA,SACA,UACA,OACA,SACA,QACA,UACA,SACA,QACA,WACA,WACA,OACA,UACA,UACA,SACA,SACA,WACA,UACA,SACA,WACA,SACA,QACA,SACA,SACA,YACA,OACA,WACA,UACA,SACA,aACA,UACA,OACA,SACA,SACA,QACA,SACA,QACA,OACA,UACA,SACA,OACA,WACA,UACA,SACA,WACA,a,iBCt+BJ,MAKMm2D,EAAsB/T,IACxB,MAAMgU,EAAoB13D,YAAgC0jD,GAC1D,GAAIzjD,YAAgBy3D,GAAoB,CACpC,MAAMC,EAAmBD,EAAkBzsE,OAC3C,GAAI0sE,EATiB,GAUjB,OAAO,EAEX,MAAMC,EAAmBD,EAAmB,GAAM,EAClD,IAAIE,EAAM,EACV,IAAK,IAAIC,EAAiBH,EAAmB,EAAGG,GAAkB,EAAGA,GAAkB,EAAG,CACtF,IAAIC,EAAY93D,YAAgBy3D,EAAkBxmE,OAAO4mE,KACrDF,EAAoBE,EAAiB,GAAM,EAAMA,EAAiB,GAAM,GACxED,GAAOE,GAEPA,GAAa,EAETF,GAD+BE,EAlBQ,EAmB/BjhD,KAAK0tB,MAAMuzB,EAAY,IAAOA,EAAY,GAG3CA,GAInB,OAAOF,EAAM,IAAO,EAExB,OAAO,GAGIJ,I,QCNf,MAAMO,EAAevhK,GAAS,6CAA6CwsG,KAAKxsG,GAE1E9U,EAAa8U,KAAYA,SAAmD,KAAVA,IAAkB63F,YAAgB73F,IACpGm1F,OAAOC,KAAKp1F,GAAOw0F,UAAmBhmH,IAAY0c,WAElDR,EAAUsV,GAAWA,IAAUuhK,EAAavhK,GAAUxxB,IAAYkc,aAAUksG,EAE5E9rG,EAAYkV,GAAWA,IAAW,mBAAmBwsG,KAAKxsG,GAAWxxB,IAAYs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C,UACD,KACA,MACA,kBAEJ,CACI,YACA,CAAC,UACD,KACA,MACA,mBAEJ,CACI,aACA,CAAC,WACD,KACA,OAEJ,CACI,UACA,CAAC,UACD,KACA,MACA,sBAEJ,CACI,SACA,CAAC,UACD,KACA,OAEJ,CACI,WACA,CAAC,QACD,KACA,OAEJ,CACI,aACA,CAAC,UACD,KACA,OAEJ,CACI,aACA,CAAC,UAAW,aACZ,KACA,QAEJ,CACI,UACA,CAAC,SAAU,gBACX,KACA,MACA,kBAEJ,CACI,aACA,CAAC,UACD,KACA,MACA,mBAEJ,CACI,UACA,CAAC,QACD,KACA,MAEJ,CACI,UACA,CAAC,UACD,KACA,OAEJ,CACI,QACA,CAAC,UACD,KACA,OAEJ,CACI,QACA,CAAC,QACD,KACA,OAEJ,CACI,cACA,CAAC,SAAU,kBACX,KACA,KACA,mBAEJ,CACI,gBACA,CAAC,WACD,KACA,OAEJ,CACI,cACA,CAAC,WACD,KACA,KACA,oBAEJ,CACI,YACA,CAAC,UAAW,mBACZ,KACA,OAEJ,CACI,QACA,CAAC,UACD,KACA,MACA,oBAEJ,CACI,UACA,CAAC,UACD,KACA,OAEJ,CACI,OACA,CAAC,QACD,KACA,OAEJ,CACI,iBACA,CAAC,WACD,KACA,OAEJ,CACI,cACA,CAAC,QACD,KACA,OAEJ,CACI,2BACA,CAAC,WACD,KACA,QAEJ,CACI,SACA,CAAC,UACD,KACA,KACA,kBAEJ,CACI,OACA,CAAC,eACD,KACA,OAEJ,CACI,WACA,CAAC,QACD,KACA,KACA,mBAEJ,CACI,QACA,CAAC,WACD,KACA,OAEJ,CACI,YACA,CAAC,eACD,KACA,OAEJ,CACI,SACA,CAAC,UAAW,mBACZ,KACA,OAEJ,CACI,mBACA,CAAC,WACD,KACA,OAEJ,CACI,WACA,CAAC,UAAW,iBACZ,KACA,OAEJ,CACI,OACA,CAAC,UAAW,iBACZ,KACA,MAEJ,CACI,cACA,CAAC,QACD,KACA,KACA,oBAEJ,CACI,SACA,CAAC,SAAU,kBACX,KACA,KACA,mBAEJ,CACI,WACA,CAAC,SAAU,kBACX,KACA,OAEJ,CACI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","file":"common.8db17146cac5fbb7a90a.js","sourcesContent":["const localisable = {\r\n // Commons\r\n admin: 'Admin',\r\n listStatus: 'STATUS',\r\n clone: 'Clone',\r\n between: 'Between',\r\n and: 'And',\r\n from: 'From',\r\n to: 'To',\r\n atLeastOneRequired: '(At-least one option has to be selected)',\r\n reverse: 'Reverse',\r\n undo: 'Undo',\r\n markedForDeletionNew: 'Do You Want To Remove?',\r\n markedForDeletionExisting: 'Marked For Deletion',\r\n noPermissions: 'User does not have permissions to view this.',\r\n noActionPermission: 'User does not have permission to perform this action',\r\n syrasoftConnect: 'Syrasoft Connect',\r\n sales: 'Sales',\r\n support: 'Support',\r\n copyright: 'Copyrights Reserved @ Syrasoft',\r\n allRightReserved: 'All right reserved @ Syrasoft',\r\n createdBy: 'Created By',\r\n setupStatus: 'Setup Status',\r\n softwareAdoptionStatus: 'Software Adoption Status',\r\n softwareAdoptionStatusHeading: 'S/W Status',\r\n recurring: 'Recurring',\r\n now: 'Now',\r\n once: 'Once',\r\n recur: 'Recur',\r\n all: 'All',\r\n before: 'before',\r\n warnings: 'Warnings',\r\n resolved: 'Resolved',\r\n affectedUnits: 'Affected Units',\r\n pleaseEnterAValueInTheTextfield: 'Please enter a value in the textfield',\r\n std: 'Std',\r\n frequency: 'Frequency',\r\n savedDocuments: 'Saved Documents',\r\n noSavedDocuments: 'No Saved Documents',\r\n link: 'Link',\r\n writeOff: 'Write Off',\r\n id: 'ID',\r\n na: 'NA',\r\n\r\n // All long texts which provides user a detailed information\r\n messages: { defaultNoContent: 'The list is empty.' },\r\n\r\n // All short texts such as button label etc\r\n loadingMoreResults: 'Loading More Results',\r\n noMoreResults: 'No More Results',\r\n keepChanges: 'Keep Changes',\r\n reserve: 'Reserve',\r\n\r\n activate: 'Activate',\r\n deactivate: 'Deactivate',\r\n save: 'Save',\r\n saving: 'Saving',\r\n applyFilters: 'Apply',\r\n clearBalance: 'Clear Balance',\r\n cancel: 'Cancel',\r\n discardChangesCaps: 'DISCARD CHANGES',\r\n discard: 'Discard',\r\n yes: 'Yes',\r\n no: 'No',\r\n separator: ' | ',\r\n nbsp: '\\u00A0',\r\n somethingWentWrong: 'Something Went Wrong',\r\n couldNotLoadLink: 'Could not load link !',\r\n takingLongerThanExpected: 'The process is experiencing an extended duration compared to the norm. We suggest completing the task and subsequently verifying the reservation quote within the saved documents of the tenants.',\r\n search: 'Search',\r\n noResultFound: 'No Results Found',\r\n noDataFound: 'No Data Found',\r\n key: 'Key',\r\n reset: 'Reset',\r\n failedToSave: 'Failed to save',\r\n view: 'View',\r\n dismiss: 'Dismiss',\r\n dismissed: 'Dismissed',\r\n dismissing: 'Dismissing',\r\n\r\n formSaveNote: 'Note: Please Save Change before navigating to any other page',\r\n saveConfirmation: 'Are you sure you want to save it?',\r\n discardConfirmation: 'Are you sure you want to discard changes?',\r\n\r\n unitActivateConfirmation: 'Are you sure you want to activate unit?',\r\n unitDeactivateConfirmation: 'Are you sure you want to deactivate unit?',\r\n unitDisplayName: 'UNIT LIST',\r\n unitCreate: 'Create Unit',\r\n\r\n unitListLabel: 'UNIT NUMBER',\r\n unitListType: 'UNIT TYPE',\r\n unitListRented: 'RENTAL STATUS',\r\n unitListStatus: 'UNIT STATUS',\r\n unitListRate: 'RATE',\r\n unitListTenantName: 'TENANT NAME',\r\n unitListNextRentAssessmentDate: 'NEXT RENT\\nASSESSMENT DATE',\r\n unitListComments: 'COMMENTS',\r\n unitListActions: 'ACTIONS',\r\n unitListEmpty: 'No Units Found',\r\n unitListLoading: 'Units Loading...',\r\n unitCardComments: 'Comments',\r\n unitCardType: 'Unit Type',\r\n\r\n unitFormError: 'Unit Form Error',\r\n unitFormLoading: 'Unit Form Loading...',\r\n\r\n unitSettingDisplayName: 'Unit',\r\n\r\n vendorFormError: 'Vendor Form Error',\r\n vendorFormLoading: 'Vendor Form Loading...',\r\n\r\n tenantCardUnits: 'Units',\r\n tenantCardBalance: 'Balance',\r\n tenantCardComments: 'Comments',\r\n tenantCardLedger: 'Ledger',\r\n tenantCardLedgers: 'Ledgers',\r\n tenantCardAlternateContact: 'Alternate Contact',\r\n alternateContactInformation: 'Alternate Contact Information',\r\n\r\n reservationCardCode: 'Reservation',\r\n vacant: 'Vacant',\r\n noUnitsVacant: 'No Units Vacant',\r\n\r\n whatDoYouWantToDo: 'What do you want to do ?',\r\n\r\n // Tenant Localises\r\n\r\n tenantTitle: 'TENANT',\r\n tenantListAddress: 'ADDRESS',\r\n tenantListContact: 'CONTACT',\r\n tenantListAlternateContactName: 'ALTERNATE CONTACT',\r\n tenantListUnits: 'UNITS',\r\n tenantListBalance: 'BALANCE',\r\n tenantListActions: 'ACTIONS',\r\n tenantListEmpty: 'No Tenants Found',\r\n tenantListLedger: 'LEDGER',\r\n tenantSectionCap: 'TENANT SECTION',\r\n\r\n tenantFormError: 'Tenant Form Error',\r\n tenantFormLoading: 'Tenant Form Loading...',\r\n tenantFormMinimumLedgerMessage: 'Please enter at least one ledger',\r\n tenantFormAddLedger: 'ADD LEDGER',\r\n tenantFormDiscardLedger: 'Discard Ledger',\r\n tenantFormAddPhone: 'Add Phone',\r\n tenantFormAddAuthorizedPeople: 'Add Additional Authorized People',\r\n tenantFormAddIdProof: 'Add ID Proof',\r\n tenantActivateConfirmation: 'Are you sure you want to activate tenant?',\r\n tenantDeactivateConfirmation: 'Are you sure you want to deactivate tenant?',\r\n duplicatePhones: 'Multiple phone types with same number',\r\n duplicateNumber: 'Duplicate Number',\r\n\r\n tenantCreated: 'Tenant Created Successfully',\r\n tenantUpdated: 'Tenant Updated Successfully',\r\n\r\n tenantNotFound: 'Tenant Not Found',\r\n\r\n tenantDisplayName: 'TENANT LIST',\r\n\r\n sections: 'Sections',\r\n\r\n requiredFieldsMissing: 'Required fields missing! ',\r\n missingFields: 'Please add the missing details of the tenant.',\r\n\r\n showCredentials: 'Show Credentials',\r\n hideCredentials: 'Hide Credentials',\r\n\r\n sendLink: 'Send Link',\r\n reSendLink: 'Resend Link',\r\n\r\n // Name\r\n tenantName: 'Tenant Name',\r\n tenantNameSalutation: 'Salutation',\r\n tenantNamePreferredName: 'Preferred Name',\r\n tenantNameBusinessName: 'Business Name',\r\n tenantNameSuffix: 'Suffix',\r\n\r\n fax: 'Fax',\r\n\r\n // Address\r\n address: 'Address',\r\n city: 'City',\r\n state: 'State',\r\n country: 'Country',\r\n zipCode: 'Zip Code',\r\n addressLine1: 'Address Line 1',\r\n addressLine2: 'Address Line 2',\r\n\r\n // Contact\r\n enableText: 'Enable Text',\r\n enablePrimaryNumber: 'Enable this as Primary Phone',\r\n enableEmail: 'Enable Email',\r\n phone: 'Phone',\r\n primaryPhone: 'Primary Phone',\r\n cellPhone: 'Cell Phone',\r\n homePhone: 'Home Phone',\r\n businessPhone: 'Business Phone',\r\n chooseSpecificPhone: 'Choose Specific Phone',\r\n faxNumber: 'Fax Number',\r\n emailId: 'Email ID',\r\n collectAnyPhone: 'Collect any Phone',\r\n selectPhone: 'Select Phone',\r\n enterPhone: 'Enter Phone',\r\n enterFax: 'Enter Fax Number',\r\n textEnabled: 'Text Enabled',\r\n anyPhone: 'Any Phone',\r\n faxPhone: 'Fax Phone',\r\n messagingService: 'Messaging service is not enabled for the facility',\r\n tooltipInfoMessage: 'Text message service is only available for cell phone',\r\n conversationsTooltipMessage: 'Text message service is not enabled for this facility',\r\n notSupportedText: 'Messaging service is not supported for this country',\r\n\r\n // Other Info\r\n tenantLanguage: 'Language',\r\n tenantDob: 'Date of Birth',\r\n\r\n // ID Proof\r\n idProof: 'Id Proof',\r\n idProofCaps: 'ID PROOF',\r\n idProofDriverLicense: 'Driver\\'s License',\r\n idProofLicenseExpiryDate: 'Expiry Date',\r\n idProofStateId: 'State ID',\r\n idProofSsn: 'SSN',\r\n collectAnyId: 'Collect Any ID',\r\n idProofResidentId: 'Resident ID',\r\n idProofVoterId: 'Voter ID',\r\n idProofPassportId: 'Passport ID',\r\n chooseSpecificId: 'Choose Specific Id',\r\n anyId: 'Any Id',\r\n ids: 'ID\\'s',\r\n\r\n // Ledger\r\n ledgerActivateConfirmation: 'Are you sure you want to activate ledger?',\r\n ledgerDeactivateConfirmation: 'Are you sure you want to deactivate ledger?',\r\n ledgerLabel: 'Ledger Label',\r\n ledgerDelayedBy: 'Delayed By',\r\n ledgerDays: 'days',\r\n ledgerExemptFromSurcharge: 'Exempt From Surcharge / Discount',\r\n generateDeclinedLetter: 'Generate Declined Letter',\r\n ledgerPrintReceipt: 'Print Receipt',\r\n deleteTransaction: 'Delete Transaction',\r\n reverseTransaction: 'Reverse Transaction',\r\n reverseComments: 'Reason for reversal',\r\n deleteComments: 'Reason for deletion',\r\n\r\n // Payment Information\r\n preferredPaymentType: 'Preferred Payment Type',\r\n achAccountNumber: 'Account Number',\r\n achRoutingNumber: 'Routing Number',\r\n achBankName: 'Bank Name',\r\n creditCardNumber: 'Credit Card Number',\r\n creditCardNo: 'Credit Card No.',\r\n creditCardExpiry: 'Expiry',\r\n creditCardBillingName: 'Name on Card',\r\n creditCardCvv: 'CVV',\r\n monthFormat: 'MM',\r\n yearFormat: 'YY',\r\n selectCardProcessor: 'Select Card Processor',\r\n\r\n // MilitaryInfo\r\n militaryInfoId: 'Military ID',\r\n militaryInfoType: 'Military Type',\r\n militaryInfoDeployedUntil: 'Deployed Until',\r\n militaryInfoBranch: 'Branch',\r\n militaryInfoDivision: 'Division',\r\n militaryInfoCommandingOfficer: 'Commanding Officer',\r\n militaryInfoCOPhone: 'C.O. Phone',\r\n\r\n // Seasonal Contact\r\n seasonalContactFrom: 'From Date',\r\n seasonalContactTo: 'To Date',\r\n seasonalInformation: 'Seasonal Information',\r\n employerInformation: 'Employer Information',\r\n\r\n // Tax\r\n taxExempted: 'Tax Exempted',\r\n taxExempt: 'Tax Exempt',\r\n taxExemptNumber: 'Tax Exempt Number',\r\n taxExemptCategory: 'Tax Exempt Category',\r\n\r\n // Additional Authorized People\r\n ok: 'Ok',\r\n accessNumber: 'Access Number',\r\n unitNumber: 'Unit Number',\r\n relationship: 'Relationship',\r\n aap: 'Additional Authorized People',\r\n okInCapitals: 'OK',\r\n\r\n // Photos\r\n noImagesYet: 'You don\\'t have any images yet.',\r\n clickButtonToAddPhoto: 'Click the \"Add Photo\" button below to add photos.',\r\n addPhoto: 'Add Photo',\r\n chooseAFile: 'Choose a file',\r\n orDragItHere: 'or drag it here',\r\n acceptedFormats: 'Accepted formats .jpeg and .png only and image size should be lesser than {} mb',\r\n accessWebcam: 'Access Webcam',\r\n uploadStatus: 'Upload Status',\r\n uploadPending: 'upload pending',\r\n successful: 'successful',\r\n unsuccessful: 'unsuccessful',\r\n addMorePhotos: 'Add More Photos',\r\n yesDiscardChangesCaps: 'YES, DISCARD CHANGES',\r\n noKeepChangesCaps: 'NO, KEEP CHANGES',\r\n photosNotSavedYet: 'Photos have not been saved yet',\r\n unableToAccessWebcam: 'Unable to access webcam, please allow \"{}\" to access your camera',\r\n photoUpload: 'Photo Upload',\r\n orCaps: 'OR',\r\n upload: 'Upload',\r\n exitPhotoUpload: 'Are you sure you want to exit photo upload?',\r\n yesExit: 'YES, EXIT',\r\n noContinueUpload: 'NO, CONTINUE UPLOAD',\r\n capture: 'Capture',\r\n reCapture: 'Recapture',\r\n markAsPrimary: 'Mark as Primary',\r\n deletePhoto: 'Delete Photo',\r\n\r\n // Global Placeholder Examples\r\n exampleName: 'e.g.: John Doe',\r\n exampleFirstName: 'e.g.: John',\r\n exampleLastName: 'e.g.: Doe',\r\n exampleBusinessName: 'e.g.: Syrasoft LLC',\r\n exampleRelation: 'e.g.: Relation',\r\n exampleAccessNumber: 'e.g.: 0000',\r\n exampleUnitNumber: 'e.g.: A001, A002',\r\n exampleEmail: 'e.g.: abc@xyz.com',\r\n examplePhone: 'e.g.: +1-132-879654',\r\n exampleCreditCardNumber: '0000 - 0000 - 0000 - 0000',\r\n\r\n // Sections\r\n tenantAddress: 'Tenant Address',\r\n militaryInformation: 'Military Information',\r\n idProofTab: 'ID\\'s',\r\n tax: 'Tax',\r\n photos: 'Photos',\r\n otherAddress: 'Other Address',\r\n alternateContact: 'Alternate Contact',\r\n seasonalContact: 'Seasonal Address',\r\n employerContact: 'Employer Details',\r\n ledgers: 'Ledgers',\r\n paymentInfo: 'Payment Information',\r\n additionalAuthorizedPeople: 'Authorized People',\r\n\r\n // Lead related\r\n lead: 'Lead',\r\n leadName: 'Lead Name',\r\n leadInfo: 'LEAD INFO',\r\n leadListName: 'NAME',\r\n leadListContactDetails: 'CONTACT DETAILS',\r\n leadListInterestedUnitTypes: 'INTERESTED UNIT\\nTYPES',\r\n leadListLastContactedDate: 'LAST CONTACTED\\nDATE',\r\n leadListAppointmentDate: 'APPOINTMENT DATE',\r\n leadListExpectedMoveInDate: 'EXPECTED MOVE IN\\nDATE',\r\n leadListUserHandlingTheLead: 'USER HANDLING\\nTHE LEAD',\r\n leadListEmpty: 'No Leads Found',\r\n leadActiveStatusChipLabel: 'Lead',\r\n leadFormError: 'Lead Form Error',\r\n leadFormLoading: 'Lead Form Loading...',\r\n newLead: 'New Lead',\r\n leadUpdated: 'Lead Updated Successfully',\r\n leadCreated: 'Lead Created Successfully',\r\n leadStatus: 'Lead Status',\r\n leadActivateConfirmation: 'Are you sure you want to activate lead?',\r\n leadDeactivateConfirmation: 'Are you sure you want to deactivate lead?',\r\n initialContact: 'Initial Contact',\r\n selectDate: 'Select Date',\r\n selectTime: 'Select Time',\r\n appointmentDate: 'Appointment Date',\r\n interestedUnitType: 'Interested Unit Type',\r\n\r\n // Estimate table in lead form\r\n estimateCodeCreatedOn: 'Estimate Code/\\nCreated On',\r\n validTill: 'Valid Till',\r\n movedIn: 'Moved In',\r\n estimateCreatedFor: 'Estimate Created for',\r\n estimateCode: 'ESTIMATE CODE',\r\n reservationCreatedFor: 'Reservation Created for',\r\n reservationCode: 'RESERVATION CODE',\r\n clickOnLink: 'Click on link to view the',\r\n\r\n\r\n vendorUpdated: 'Vendor Updated Successfully',\r\n vendorCreated: 'Vendor Created Successfully',\r\n\r\n inventoryUpdated: 'Inventory Updated Successfully',\r\n inventoryCreated: 'Inventory Created Successfully',\r\n\r\n leaseSignStatus: 'Lease Sign Status',\r\n LeaseExpired: 'Lease sign link has expired',\r\n leaseSignComplete: 'Note: The Lease sign status is \"complete\" indicates that the tenant has finished signing the required documents.',\r\n leaseSignPending: 'Note: The Lease sign status is pending as we are awaiting the tenant\\'s signature via Esign.',\r\n leaseSignStatusUpdatedSuccess: 'Lease sign status has been updated successfully.',\r\n leaseSignExpired: 'Note: Please generate and sign a new lease ( from Generate New Lease) to complete the process as the Lease sign link has expired.',\r\n eSignPending: 'E-sign Pending',\r\n leadDisplayName: 'LEAD LIST',\r\n\r\n // NOTE: Below strings are temporary for financial List\r\n financialListLabel: 'Financial',\r\n\r\n manualCharge: 'Create Manual Charges',\r\n charge: 'Charge $ ',\r\n\r\n arListID: 'ID',\r\n arTransactionType: 'Transaction Type',\r\n description: 'Description',\r\n amount: 'Amount',\r\n arAmountRemaining: 'Amount Remaining',\r\n arStatus: 'Status',\r\n arReversalID: 'Reversal',\r\n arTaxID: 'Tax',\r\n arPaymentID: 'Payment',\r\n arListActions: 'Action',\r\n category: 'Category',\r\n\r\n cashID: 'ID',\r\n cashFromAR: 'From ar_id',\r\n cashToAR: 'To ar_id',\r\n cashStatus: 'Status',\r\n cashAmount: 'Amount',\r\n cashCategory: 'Category',\r\n cashReversal: 'Reversal',\r\n\r\n chargeAddedSuccessfully: 'Charge Added Successfully',\r\n makeAnotherCharge: 'Make Another Charge',\r\n // NOTE: Above strings are temporary for financial List\r\n\r\n // User related\r\n listName: 'NAME',\r\n userListEmail: 'EMAIL',\r\n userListFirstName: 'FIRST NAME',\r\n userListLastName: 'LAST NAME',\r\n userListHasTwoFactor: 'HAS TWO FACTOR?',\r\n userListPhoneNumber: 'PHONE NUMBER',\r\n userListUserType: 'USER TYPE',\r\n userListAccountNumber: 'ACCOUNT NUMBER',\r\n userListDefaultFacilityId: 'DEFAULT FACILITY ID',\r\n userDisplayName: 'USER LIST',\r\n userListEmpty: 'No Users Found',\r\n userListLoading: 'Users Loading...',\r\n unlockUser: 'Unlock User',\r\n failedToUnlockUser: 'Failed to unlock user',\r\n failedToForcePasswordReset: 'Failed to force password reset',\r\n anEmailWillBeSentTo: 'An email will be sent to',\r\n forUnlock: 'for Unlock',\r\n resetPassword: 'Reset Password',\r\n forcePasswordReset: 'Force Password Reset',\r\n forcePasswordResetConfirmation: 'Send email to force the user to reset the password?',\r\n mailSentToUserSuccessfully: 'Mail sent to user successfully!',\r\n userActivateConfirmation: 'Are you sure you want to activate this user?',\r\n userDeactivateConfirmation: 'Are you sure you want to deactivate this user?',\r\n accountNameOrNumber: 'Account Name/Number',\r\n userEmail: 'User Email',\r\n userName: 'User Name',\r\n searchUserEmail: 'Search User Email',\r\n searchUserName: 'Search User Name',\r\n\r\n scheduleDisplayName: 'SCHEDULED TASKS',\r\n scheduleListEmpty: 'No schedules Found',\r\n scheduleListLoading: 'Schedules Loading...',\r\n scheduleName: 'Task Name',\r\n scheduleStartDate: 'Start Date',\r\n scheduleEndDate: 'End Date',\r\n scheduleLastExecutionDate: 'Last Execution Date',\r\n scheduleRunCount: 'Total Execution Count',\r\n scheduleDescription: 'Description',\r\n scheduleEnable: 'Enabled',\r\n scheduleFacilityNumber: 'Facility Number',\r\n scheduleFacilityName: 'Facility Name',\r\n scheduledDate: 'Scheduled Date',\r\n\r\n facilityListNumber: 'FACILITY NUMBER',\r\n facilityListAbbreviation: 'ABBREVIATION',\r\n facilityListAddress: 'ADDRESS',\r\n facilityListTimezone: 'TIMEZONE',\r\n facilityListTenantDefaultAddress: 'TENANT DEFAULT ADDRESS',\r\n facilityListFaxNumber: 'FAX NUMBER',\r\n facilityListNumbers: 'PHONE NUMBERS',\r\n facilityLicenseEndDate: 'LICENSE END DATE',\r\n facilityCreated: 'Facility Created Successfully',\r\n facilityUpdated: 'Facility Updated Successfully',\r\n\r\n accountListNumber: 'ACCOUNT NUMBER',\r\n accountListName: 'NAME',\r\n accountListAddress: 'ADDRESS',\r\n accountListContact: 'CONTACT',\r\n accountCreated: 'Account Created Successfully',\r\n accountUpdated: 'Account Updated Successfully',\r\n\r\n rentAssessmentHistory: 'RA History',\r\n dailySummary: 'Daily Summary',\r\n ledgerId: 'Ledger Id',\r\n unitId: 'Unit Id',\r\n unitTypeId: 'Unit Type Id',\r\n blockedAutoPayWindow: 'Blocked window',\r\n balanceAtThatTime: 'Balance at that time',\r\n for: 'for',\r\n on: 'on',\r\n rentAssessmentHistoryListDisplayName: 'Rent-Assessment History List',\r\n rentAssessmentHistoryListEmpty: 'No Rent-Assessments Processed',\r\n rentAssessmentHistoryListLoading: 'Rent-Assessment History Loading...',\r\n rentAssessmentHistoryListFacilityNumber: 'Facility Number',\r\n rentAssessmentHistoryListFacilityName: 'Facility Name',\r\n rentAssessmentHistoryListMode: 'Mode',\r\n rentAssessmentHistoryListType: 'Type',\r\n rentAssessmentHistoryListCreatedDate: 'Date Started',\r\n rentAssessmentHistoryListActionDate: 'Assessment Date',\r\n rentAssessmentHistoryListUser: 'User',\r\n rentAssessmentHistoryListStatus: 'Status',\r\n rentAssessmentHistoryListDuration: 'Time Taken',\r\n rentAssessmentHistoryListSummary: 'Summary',\r\n rentAssessmentHistoryListActions: 'Actions',\r\n invoiceDate: 'Invoice Date',\r\n autoInvoicing: 'Auto Invoicing',\r\n\r\n asyncTaskListDisplayName: 'Async Tasks List',\r\n asyncTaskListEmpty: 'No Async-Tasks Executed',\r\n asyncTaskListLoading: 'Async-Tasks Loading...',\r\n asyncTaskList: 'Async-Task History',\r\n asyncTaskListTaskId: 'Task Id',\r\n asyncTaskListStatus: 'Status',\r\n asyncTaskListResult: 'Result',\r\n asyncTaskListDateDone: 'Completion Date',\r\n asyncTaskListTaskName: 'Task Name',\r\n asyncTaskListWorker: 'Worker Host',\r\n asyncTaskListDateCreated: 'Date Started',\r\n\r\n actions: 'ACTIONS',\r\n invalidValue: 'Please enter a valid value',\r\n isAlphanumeric: 'Please Enter Letters and Numbers Only',\r\n isEmail: 'Please Enter A Valid Email',\r\n invalidEmailAddress: '{} is not a valid email address',\r\n duplicateEntry: '{} is a duplicate entry',\r\n isMaxLength: 'Text entered exceeds max length of ',\r\n isNumeric: 'Please Enter Numbers Only',\r\n minLength: 'Please Enter A Min Length Of:',\r\n isValidPasswords: 'Please Enter A Valid Password',\r\n isValidAccessCode: 'Please Enter A Valid Access Code',\r\n isRequired: 'This field cannot be blank',\r\n isValidFacilityAbbreviation: 'Please Enter A Valid Facility Abbreviation(3 Letters)',\r\n isValidAmount: 'Please Enter Positive Amount',\r\n invalidDate: 'Invalid Date Format',\r\n twoDecimalPlaces: 'Please Enter the value till two decimal places',\r\n enterInteger: 'Please enter integer value',\r\n isPositiveNumeric: 'Please enter a positive value',\r\n isValidAngle: 'Please enter a value below 360',\r\n noCommonPassword: 'Please do not use a common Password',\r\n noContextualString: 'Please do not use organization name or user name',\r\n invalidPastDate: 'Past Date not allowed',\r\n lessThanMoveInDate: 'Date cannot be less than Move In date',\r\n greaterThanExpectedMoveOutDate: 'Date cannot be more than Expected Move Out date',\r\n\r\n createTenant: 'Create Tenant',\r\n createLedger: 'Create Ledger',\r\n createLead: 'Create Lead',\r\n\r\n createVendor: 'Create Vendor',\r\n createInventory: 'Create Inventory',\r\n\r\n editFacility: 'Edit Facility',\r\n facilityManagementSubtitle: 'User can change facility general information apart from facility ID for the facilities they have access to',\r\n\r\n\r\n vendorActivateConfirmation: 'Are you sure you want to activate vendor?',\r\n vendorDeactivateConfirmation: 'Are you sure you want to deactivate vendor?',\r\n\r\n inventoryActivateConfirmation: 'Are you sure you want to activate inventory?',\r\n inventoryDeactivateConfirmation: 'Are you sure you want to deactivate inventory?',\r\n\r\n sectionScrollerTitle: 'SECTIONS',\r\n collapseAll: 'Collapse All',\r\n expandAll: 'Expand All',\r\n autoSuggestMinChars: 'Enter at least 3 characters',\r\n\r\n basicInformation: 'Basic Information',\r\n contact: 'Contact',\r\n otherInfo: 'Other Information',\r\n\r\n noUnitRented: 'No Unit Rented',\r\n\r\n oops: 'Oops!',\r\n serverError: 'Server Error',\r\n serverErrorTitle: 'Sorry, It’s not you. It’s us',\r\n serverErrorDetail: 'We are experiencing an internal server problem. Please try again later',\r\n underMaintenanceTitle: 'Under Maintenance',\r\n underMaintenanceDetail: 'We will be here shortly',\r\n notFound: 'Page Not Found',\r\n notFoundTitle: 'Sorry',\r\n notFoundDetail: 'Page Not Found !',\r\n unauthorised: 'Unauthorised',\r\n noAccess: 'You don’t have access to this area of application.',\r\n noOptions: 'No Options Found',\r\n searchTenantOrLead: 'Search Tenant or Lead',\r\n goToHomePage: 'Go to home page',\r\n reportIssue: 'Report Issue',\r\n\r\n\r\n validating: 'Validating',\r\n movingIn: 'Moving in',\r\n movingOut: 'Moving out',\r\n // Filters Related\r\n noFiltersApplied: 'No Filters Applied',\r\n filtersApplied: 'Filters Applied',\r\n // Payment Related\r\n savePreferredPayment: 'Save as preferred payment',\r\n paymentSuccessful: 'Payment Successful',\r\n selectTenantLedger: 'Select Tenant Ledger',\r\n makeAnotherPayment: 'Make Another Payment',\r\n payment: 'Payment',\r\n pay: 'Pay',\r\n makePayment: 'Payment',\r\n makeRefund: 'Refund',\r\n doNotProcessCard: 'Don\\'t process Card',\r\n makingPayment: 'Making Payment',\r\n disableAutoPay: 'Disable Auto Pay',\r\n enableAutoPay: 'Enable Auto Pay',\r\n\r\n rentalInformation: 'RENTAL INFORMATION',\r\n rentalInformationLabel: 'Rental Information',\r\n\r\n tenantAndUnit: 'TENANT AND UNIT',\r\n\r\n noNotificationPenaltyAmount: 'No Notification Penalty Amount',\r\n prorateMoveOut: 'Prorate Move Out',\r\n tenantAndUnitSummary: 'Tenant And Unit Summary',\r\n recentUnpaidARCharges: 'Recent Unpaid AR Charges',\r\n notificationPenaltyAmount: 'Notification Penalty Amount',\r\n rate: 'Rate',\r\n daysLate: 'No. of Days Late',\r\n documentation: 'Documentation',\r\n documentationLabel: 'DOCUMENTATION',\r\n\r\n shouldProcessLateFee: 'Late fee of :fee is pending. Do you want to process this now?',\r\n process: 'Process',\r\n skipNow: 'Skip Now',\r\n reProcess: 'Reprocess',\r\n reProcessing: 'Reprocessing',\r\n prepayNextPeriodAmount: 'Prepay next period amount?',\r\n\r\n // User Form\r\n passwordUpdate: 'Password Update',\r\n createUser: 'Create User',\r\n editUser: 'Edit User',\r\n copyRoleFrom: 'Copy Role From',\r\n roleSelection: 'Role Selection',\r\n roleSelectionName: 'NAME',\r\n roleSelectionCity: 'CITY',\r\n roleSelectionID: 'ID',\r\n roleSelectionAbbreviation: 'ABBR',\r\n roleSelectionAppliedRoles: 'APPLIED ROLES',\r\n rolePreview: 'Role Preview',\r\n account: 'ACCOUNT',\r\n noComments: 'No Comments',\r\n noUnits: 'No Units',\r\n total: 'Total',\r\n paymentComment: 'Payment Comment',\r\n configuration: 'CONFIGURATION',\r\n chargeCategoryEmpty: 'No Charge Categories Found',\r\n paymentVsRefund: 'PAYMENT/REFUND',\r\n cardProcessorEmpty: 'No Card Processors Found',\r\n processor: 'Processor',\r\n taxExemptListEmpty: 'No Tax Exempt List Found',\r\n taxCodeEmpty: 'No Tax codes found',\r\n paymentMethodListEmpty: 'No Payment Method Found',\r\n noUnitTypeFound: 'No Unit Types Found',\r\n type: 'Type',\r\n secure: 'Secure',\r\n status: 'Status',\r\n taxes: 'Taxes',\r\n general: 'General',\r\n chargeCategory: 'Charge Category',\r\n facility: 'Facility',\r\n unitType: 'Unit Type',\r\n paymentMethod: 'Payment Method',\r\n paymentLabel: 'Payment',\r\n taxCode: 'Tax Code',\r\n taxExemptList: 'Tax Exempt',\r\n exemptType: 'Exempt Type',\r\n customExemptList: 'Custom Exempt List',\r\n modifier: 'Modifier',\r\n discountRate: 'Discount Rate',\r\n surcharge: 'Surcharge',\r\n dimension: 'Dimensions',\r\n dimensionLabel: 'DIMENSION',\r\n amountByPeriod: 'Amount By Period',\r\n width: 'Width',\r\n depth: 'Depth',\r\n setupFee: 'Setup Fee',\r\n rentalDeposit: 'Rental Deposit',\r\n monthly: 'Monthly',\r\n unitGeneral: 'Unit General',\r\n rentalGeneral: 'Configure General',\r\n rental: 'Rental',\r\n tenantDeposit: 'Tenant Deposit',\r\n showOnlyOneUnavailableStatus: 'Show only one unavailable status',\r\n allowNonRentChargeCategoryType: 'Allow non rent charge category type',\r\n skipDuplicateTenantCheck: 'Skip Duplicate Tenant Check',\r\n configurationCreated: 'Configuration created',\r\n configurationUpdated: 'Configuration updated',\r\n customer: 'Customer',\r\n customerGeneral: 'Customer General',\r\n facilityGeneral: 'General Settings',\r\n financialGeneral: 'Financial general',\r\n businessType: 'Business Type',\r\n currency: 'Currency',\r\n identifier: 'Identifier',\r\n userEmailConflict: 'User Email Conflict!',\r\n emailConflictMessage: 'A user with this email address is already associated with another account. If you wish to include this user in the current account, kindly get in touch with our support team for further assistance.',\r\n customerSupportNumber: 'Customer Support Number',\r\n customerSupportMail: 'Customer Support Email',\r\n callSupport: 'Call Support',\r\n emailSupport: 'Email Support',\r\n\r\n // Promo Plan\r\n promoPlan: 'Promo Plan',\r\n promoPlans: 'Promo Plans',\r\n billUpto: 'Bill upto',\r\n recurringPlan: 'This is a recurring plan',\r\n oneTimePlan: 'This is a one-time plan',\r\n prepayRequired: 'This plan requires prepayment',\r\n noOf: 'No. of',\r\n periods: 'Periods',\r\n copyPlans: 'Copy Plans From',\r\n promoPlanPeriod: 'Promo Plan Period',\r\n noPromoPlanFound: 'No Promo Plans Found',\r\n noPromoPlanTemplateFound: 'No Promo Plan Templates Found',\r\n promoPlanTitle: 'PLAN NAME',\r\n promoPlanActions: 'ACTION ITEMS',\r\n promoPlanValidity: 'Promo Plan Validity',\r\n promoPlanOccupancy: 'If Occupancy goes below',\r\n enterPercentage: 'Percentage value',\r\n promoPlanRecurringLabel: 'Is this a one time promo plan?',\r\n promoPlanPrepaymentLabel: 'Do you require pre-payment for the plan?',\r\n promoPlanAddBill: 'Add Additional Charge/Discount',\r\n promoPlanBillType: 'Charge/Discount',\r\n promoPlanCalculationStyle: 'Calculation Style',\r\n promoPlanFlatRate: 'Flat Rate',\r\n promoPlanPercentageRate: 'Percentage Rate',\r\n promoPlanStartPeriod: 'Start Period',\r\n promoPlanEndPeriod: 'End Period',\r\n prorateAsFirst: 'Pro-Rate period as 1st Period',\r\n untilMoveOut: 'Until Move-Out',\r\n promoPlanSeasonal: 'Seasonal Between',\r\n promoPlanPeriodic: 'Periodic',\r\n promoPlanFeatureAccessibility: 'Feature Accessibility',\r\n promoPlanDeviceAccessibility: 'Device Accessibility',\r\n selectBillType: 'Select Bill Type',\r\n selectCalculationStyle: 'Select Calculation Style',\r\n promoPlanDetails: 'Promo Plans',\r\n selectPromoPlans: 'Select Promo Plan',\r\n selectArea: 'Select Area',\r\n selectDevice: 'Select Device',\r\n removePromoPlans: 'This action will remove all the applied Promo Plans!',\r\n addNewPromoPlan: 'Add New Promo Plan',\r\n addPromoPlan: 'Add Promo Plan',\r\n chargeOrDiscount: 'Charge/Discount',\r\n promoPlanStartDate: 'Start Date',\r\n promoPlanEndDate: 'End Date',\r\n markedForDelete: 'This plan is marked for Deletion',\r\n promoPlansUpdated: 'Promo Plans are updated for this unit',\r\n chargeDetails: 'Charge Details',\r\n planVisibility: 'Plan Visibility',\r\n showSummary: 'Show Summary',\r\n promoPlanTemplate: 'Promo Plan Templates',\r\n\r\n dashboard: 'Dashboard',\r\n internalDashboard: 'Internal Dashboard',\r\n externalDashboard: 'External Dashboard',\r\n backToDashboard: 'Back to dashboard',\r\n settings: 'Settings',\r\n businessGroup: 'Business Group',\r\n\r\n selectBusinessType: 'Select Business Type',\r\n selectCurrency: 'Select Currency',\r\n selectIdentifier: 'Select Identifier',\r\n allocationOrder: 'Allocation Order',\r\n modifyAllocationOrder: 'Users can modify allocation order',\r\n selectAllocationOrder: 'Select Allocation Order',\r\n selectChargeCategory: 'Select Charge Category',\r\n chargeCategoryInfo: 'This charge won\\'t take effect if the charge category is not a part of the unit bill',\r\n selectTaxType: 'Select the type of tax',\r\n selectCategory: 'Select Category',\r\n selectDays: 'Select Days',\r\n selectPeriod: 'Select Period',\r\n selectPeriods: 'Select Periods',\r\n selectStatus: 'Select Status',\r\n selectBillingType: 'Select billing type',\r\n selectLeaseStyle: 'Select Lease Style',\r\n selectActionType: 'Select Action Type',\r\n selectLease: 'Select Lease',\r\n selectCalcType: 'Select Calculation Type',\r\n selectDepositType: 'Select Deposit Type',\r\n selectCancellationType: 'Select Cancellation Type',\r\n select: 'Select',\r\n selectSource: 'Select Source',\r\n enterDays: 'Enter Days',\r\n enterDescription: 'Enter Description',\r\n enterNumber: 'Enter a number',\r\n enterDepth: 'Enter Depth',\r\n enterWidth: 'Enter Width',\r\n enterUnitRate: 'Enter Unit Rate',\r\n selectExemptType: 'Select Exempt Type',\r\n selectTaxCodes: 'Select Tax Codes',\r\n selectChargeCategoryType: 'Select Charge Category Type',\r\n selectAccountType: 'Select Account type',\r\n selectAccount: 'Select Account',\r\n selectAccounts: 'Select Account(s)',\r\n selectPaymentMethodType: 'Select Payment Method Type',\r\n selectPaymentMethod: 'Select Payment Method',\r\n selectModifierType: 'Select Modifier Type',\r\n selectChargeStyle: 'Select Charge Style',\r\n selectDeliveryMethod: 'Select Delivery Method',\r\n validateChargesOver: 'Validate Charges Over',\r\n depositLog: 'Deposit Log',\r\n charges: 'Charges',\r\n letter: 'LETTER',\r\n letterLabel: 'Letter',\r\n nsf: 'Non Sufficient Funds',\r\n period: 'PERIOD',\r\n periodLabel: 'Period',\r\n feeAndDeposit: 'FEE AND DEPOSIT',\r\n rateCalculation: 'RATE CALCULATION',\r\n includeCharges: 'INCLUDE CHARGES',\r\n resolveCharges: 'RESOLVE CHARGES',\r\n balanceResolution: 'BALANCE RESOLUTION',\r\n deposit: 'DEPOSIT',\r\n modifierCalculation: 'MODIFIER CALCULATION',\r\n prepayment: 'Pre-Payment Options',\r\n pendingTaskNotificationDismissal: 'PENDING TASK NOTIFICATION DISMISSAL',\r\n receiveEmailNotifications: 'RECEIVE EMAIL NOTIFICATIONS',\r\n promptForAddressChange: 'PROMPT FOR ADDRESS CHANGE',\r\n contactLogCategory: 'CONTACT LOG CATEGORY',\r\n language: 'LANGUAGE',\r\n demographics: 'DEMOGRAPHICS',\r\n generateLetter: 'Generate Letter',\r\n assessment: 'Assessment',\r\n prorate: 'PRORATE',\r\n cancellation: 'Cancellation',\r\n rentSlider: 'Rent Slider',\r\n nsfAmount: 'Amount to be assessed',\r\n enterAmount: 'Enter Amount',\r\n enterAccountNumber: 'Enter Account Number',\r\n enterDeposit: 'Enter Deposit',\r\n enterSetupFee: 'Enter Setup Fee',\r\n enterEmailId: 'Enter e-mail Id',\r\n accountNumber: 'Account Number',\r\n chooseLetter: 'Select Letter Template',\r\n calculateFlatFirst: 'Calculate Flat First For Multiple Recurring',\r\n daysForProrateCalc: 'Days For Prorate Calc',\r\n isAnniversary: 'Is Anniversary',\r\n standard: 'Standard',\r\n availableAtSim: 'Available at sim',\r\n availableAtKiosk: 'Available at kiosk',\r\n numDaysEarly: 'Num Days Early',\r\n assessAutomatically: 'Assess Automatically',\r\n overbookBy: 'Overbook by',\r\n leaseStyle: 'Lease Style',\r\n unitRate: 'Unit Rate',\r\n rentSliderEnabled: 'Rent slider enabled',\r\n rentSliderDiscount: 'Rent slider discount',\r\n premiumRate: 'Premium Rate',\r\n rentSliderCalcStyle: 'Rate Calculation Style',\r\n thresholdCalcStyle: 'Threshold Calc Style',\r\n highThreshold: 'High Threshold',\r\n lowThreshold: 'Low Threshold',\r\n moveIn: 'Move In',\r\n editReservation: 'Edit Reservation',\r\n reservationUpdated: 'You have successfully updated the reservation!',\r\n reservation_mode: 'reservation',\r\n moveOut: 'Move Out',\r\n finish: 'Finish',\r\n enableSyncWithExistingUnits: 'Enable sync with existing units',\r\n isEnabled: 'Is Enabled',\r\n billingType: 'Billing Type',\r\n days: 'Days',\r\n previewLeaseAgreement: 'Preview Lease Agreement',\r\n generateWelcomeLetter: 'Generate Welcome Letter',\r\n welcomeLetter: 'Welcome Letter',\r\n vacateNotificationInDays: 'Vacate Notification In Days',\r\n actionWhileResolvingCharges: 'Action To Take While Resolving Charges',\r\n numberOfDaysElapsed: 'Number Of Days Elapsed',\r\n actionOnBalanceDue: 'Action To Take On Due Balance',\r\n actionOnCreditDue: 'Action To Take On Due Credit',\r\n generateMoveOutDocument: 'Generate Move Out Document',\r\n numberOfCopies: 'Number Of Copies',\r\n printCopies: 'Print Copies',\r\n contactHistory: 'Contact History',\r\n ledgerHistory: 'Ledger History',\r\n generateThankYouLetter: 'Generate Thank You Letter',\r\n reservation: 'Reservation',\r\n reservedBy: 'Reserved By',\r\n maxDaysBeforeMoveIn: 'Max Days Before Move In',\r\n promptForReviewAfter: 'Prompt For Review After',\r\n lease: 'Lease',\r\n calculation: 'Calculation',\r\n calculationType: 'Calculation Type',\r\n value: 'Value',\r\n depositType: 'Deposit Type',\r\n cancellationType: 'Cancellation Type',\r\n printDocument: 'Print Document',\r\n chargeCategoryType: 'Charge Category Type',\r\n generalLedgerAccountNumber: 'General Ledger account Number',\r\n financialExportAccountType: 'Financial Export Account Type',\r\n isSecureCategory: 'Is Secure Category',\r\n matchTaxSignatureOfUnit: 'Match Tax Signature Of Unit',\r\n paymentMethodType: 'Payment Method Type',\r\n alternateExportDescription: 'Alternate Export Description',\r\n showPaymentNumber: 'Show Payment Number',\r\n paymentNumberMandatory: 'Mandate Payment Number',\r\n modifierType: 'Modifier Type',\r\n chargeStyle: 'Charge Style',\r\n flatAmount: 'Flat Amount',\r\n percentAmount: 'Percent Amount',\r\n requireCredentials: 'Require Password for accessing Payments',\r\n requireComment: 'Require Comment',\r\n refuseCheckFromFlaggedTenants: 'Refuse Check From Flagged Tenants',\r\n advancedPaidToDate: 'Advanced Paid To Date according to prepayment amount',\r\n forceRentAssessment: 'Force Rent Assessment',\r\n allowPartialCredit: 'Allowed paying partially for the Unit',\r\n generateReceipt: 'Generate Receipt',\r\n numCopies: 'Number Of Copies',\r\n deliveryMethod: 'Delivery Method',\r\n generatePartialPaymentLetter: 'Partial Payment Letter',\r\n hstNumber: 'HST',\r\n gstNumber: 'GST',\r\n pstNumber: 'PST',\r\n chargeCategoryMapping: 'Charge Category Mapping',\r\n notificationPenaltyFee: 'Notification Penalty Fee',\r\n prepay: 'Prepay',\r\n tenantRefund: 'Tenant Refund',\r\n tenantChangeTracking: 'Tenant Change Tracking',\r\n tenantAccountType: 'Tenant Account Type',\r\n tenantSections: 'Tenant Sections',\r\n tenantEngagement: 'Tenant Engagement',\r\n tenantChanges: 'Tenant Changes',\r\n payments: 'Payments',\r\n generateAddressChangeLetter: 'Generate Address Change Letter',\r\n defaultAccountType: 'Default Account Type',\r\n manual: 'Manual',\r\n source: 'Source',\r\n showAt: 'Show At',\r\n addAmountByPeriod: 'Add Amount By Period',\r\n addRentSlider: 'Add Rent Slider',\r\n rentSliderCalculation: 'Rent Slider Calculation',\r\n required: 'Required',\r\n preferred: 'Preferred',\r\n optional: 'Optional',\r\n showOptionalFields: 'Show Optional Fields',\r\n accountCamel: 'Account',\r\n name: 'Name',\r\n firstName: 'First Name',\r\n lastName: 'Last Name',\r\n phoneNumber: 'Phone Number',\r\n primary: 'Primary',\r\n comments: 'Comments',\r\n defaultFacility: 'Default Facility',\r\n scrollToSections: 'Scroll To Sections',\r\n enableTwoFactorAuthentication: 'Enable Two Factor Authentication',\r\n userFormUpdated: 'User Form Updated Successfully.',\r\n userFormCreated: 'User Form Created Successfully.',\r\n searchReservationOrEstimate: 'Search Reservation / Estimate Code',\r\n searchEstimate: 'Search Estimate Code',\r\n searchReservation: 'Search Reservation Code',\r\n estimate: 'Estimate',\r\n estimates: 'Estimates',\r\n createEstimate: 'Create Estimate',\r\n estimateDetails: 'Estimate Details',\r\n estimateValidity: 'Estimate Validity',\r\n estimateExpiresAfter: 'Estimate expire after',\r\n estimateCreatedOn: 'Estimate Created On:',\r\n expiryDate: 'Expiry Date',\r\n create: 'Create',\r\n unitAndMoveInDetails: 'Unit and Move in Details',\r\n selectUnitType: 'Select Unit Type',\r\n unit: 'Unit',\r\n selectUnit: 'Select Unit',\r\n moveInDate: 'Move in Date',\r\n selectMoveInDate: 'Select Move in Date',\r\n rentalInfo: 'Rental Info',\r\n billToDate: 'Bill to Date',\r\n setRate: 'Set Rate',\r\n resetBackToOriginalRate: 'Reset Back to Original Rate',\r\n selectBillToDate: 'Select Bill to Date',\r\n prorateAmount: 'Prorate Amount',\r\n expectedMoveOutDate: 'Expected Move out Date',\r\n selectMoveOutDate: 'Select Move out Date',\r\n cannotIncrease: 'Do not have permission to increase the amount',\r\n cannotDecrease: 'Do not have permission to decrease the amount',\r\n breakDown: 'Break Down',\r\n totalAmount: 'Total Amount',\r\n createTenantOrLead: 'Create Tenant Or Lead',\r\n selectTenantOrLead: 'Select Tenant Or Lead',\r\n selectTenantLead: 'Select Tenant/Lead',\r\n selectTenant: 'Select Tenant',\r\n ledger: 'Ledger',\r\n addLedger: 'Add Ledger',\r\n selectLedger: 'Select Ledger',\r\n ledgerBalance: 'Ledger Balance',\r\n includeInactiveTenants: 'Include Inactive Tenants',\r\n syncBillingDate: 'Sync Billing Date',\r\n greaterAmount: 'Amount is greater than its maximum value',\r\n lesserAmount: 'Amount is lesser than its minimum value',\r\n back: 'Back',\r\n next: 'Next',\r\n summary: 'Summary',\r\n particulars: 'Particulars',\r\n currentCharges: 'Current Charges',\r\n upcomingCharges: 'Upcoming Charges',\r\n date: 'Date',\r\n debit: 'Debit',\r\n credit: 'Credit',\r\n loading: 'Loading',\r\n pleaseSelectTenant: 'Please Select a Tenant/Lead',\r\n newAmount: 'New amount is',\r\n error: 'Error',\r\n syncWithExistingUnits: 'Sync billing date',\r\n is: 'is',\r\n true: 'on',\r\n false: 'off',\r\n willLoseData: 'Any changes made will be lost. Are you sure you want to continue?',\r\n warning: 'Warning',\r\n switchingTo: 'Switching to',\r\n tenantLead: 'Tenant/Lead',\r\n after: 'after',\r\n lockReservationRates: 'Lock Reservation rates',\r\n unitReservedOn: 'Unit Reserved On:',\r\n lastDayMonth: 'Last Day Of The Month',\r\n leadConvertedToTenantSuccessfully: 'Lead converted to Tenant successfully',\r\n\r\n // Create Reservation\r\n createReservation: 'Create Reservation',\r\n\r\n // Unit related\r\n editUnitNumber: 'Edit Unit Number',\r\n level: 'Level',\r\n selectLevel: 'Select Level',\r\n keypadZone: 'Keypad Zone',\r\n selectKeypadZone: 'Select Keypad Zone',\r\n overlockStatus: 'Overlock Status',\r\n selectOverlockStatus: 'Select Overlock Status',\r\n accessCode: 'Access Code',\r\n enterAccessCode: 'Enter Access Code',\r\n accessCodeType: 'Access Code Type',\r\n accessCodeSent: 'Access Code Sent To Your E-mail.',\r\n rentalStatus: 'Rental Status',\r\n availabilityStatus: 'Availability Status',\r\n available: 'Available',\r\n unavailable: 'Unavailable',\r\n inventoryReport: 'Inventory Report',\r\n enterComments: 'Enter Comments',\r\n enterRate: 'Enter Rate',\r\n nextRentAssessmentRate: 'Next Rent Assessment Rate',\r\n nextRentAssessmentDate: 'Next Rent Assessment Date',\r\n selectNextRateAssessmentDate: 'Select Next Rate Assessment Date',\r\n nextAmountPayable: 'Next Amount Payable',\r\n paidToDate: 'Paid To Date',\r\n selectPaidToDate: 'Select Paid To Date',\r\n expectedDepartureDate: 'Expected Departure Date',\r\n selectExpectedDepartureDate: 'Select Expected Departure Date',\r\n notificationReceived: 'Notification Received',\r\n selectNotificationReceived: 'Select Notification Received',\r\n unitCreated: 'Unit Created Successfully',\r\n unitUpdated: 'Unit Updated Successfully',\r\n unitDetails: 'Unit Details',\r\n dateChangeWarning: 'DATE CHANGE WARNING',\r\n activePromoPlansWillBeAffected: 'Any active promo plans will be affected.',\r\n changeInNrad: 'Change in Next Rent Assessment Date will assess a prorated charge of',\r\n createCharges: 'CREATE CHARGES',\r\n waiveCharges: 'WAIVE CHARGES',\r\n smallFrom: 'from',\r\n smallTo: 'to',\r\n promoPlansWillBeAffected: 'Promo plans will be affected.',\r\n expectedMoveOut: 'Expected Move Out',\r\n rateHistoryLabel: 'Rate History',\r\n scheduleRentAdjustment: 'Schedule Rent Adjustment',\r\n excludeFromRentAdjustmentWizard: 'Exclude From Rent Adjustment Wizard',\r\n newRate: 'New Rate',\r\n expectedNewRate: 'Expected New Rate',\r\n oldRate: 'Old Rate',\r\n waivedOrReversedBy: 'Waived/Reversed By',\r\n waiveMessage: 'Are you sure you want to waive?',\r\n showTenantActivity: 'Show Tenant Activity',\r\n rented: 'Rented',\r\n futureNRADChange: 'You are pushing the next rent assessment date to a future date.',\r\n changeTheDateAndAvoidCharges: 'Do you wish to change the date and not create charges',\r\n wantToAssessRent: 'do you want to assess rent ?',\r\n or: 'or',\r\n assessRent: 'ASSESS RENT',\r\n justChangeDate: 'JUST CHANGE DATE',\r\n takeAction: 'Take Action',\r\n pastNRADChange: 'You are moving the Next Rent Assessment Date to a past date. Please ensure the following',\r\n reverseOrDeleteFollowingCharges: 'Reverse / Delete following charges (if any) on Ledger Review for the period Modified NRAD to Current NRAD',\r\n rentCharges: 'Rent Charges',\r\n insuranceCharges: 'Insurance Charges',\r\n promoPlanCharges: 'Promo Plan Charges',\r\n verifyFollowingData: 'Verify following data on Unit',\r\n changeDate: 'CHANGE DATE',\r\n doNotChangeDate: 'DON\\'T CHANGE DATE',\r\n\r\n // Login\r\n password: 'Password',\r\n newPassword: 'New Password',\r\n charactersLength: '8-12 characters',\r\n atLeastOneCapital: 'At least one capital letter',\r\n atLeastOneNumber: 'At least one number',\r\n atLeastOneSpecialCharacter: 'At least one special character',\r\n noCommonWords: 'No common words',\r\n noUsername: 'Should not be same as username',\r\n email: 'Email',\r\n oldPassword: 'Old Password',\r\n confirmPassword: 'Confirm Password',\r\n continue: 'Continue',\r\n enterYourMail: 'Enter Your Mail',\r\n signingIn: 'Signing In',\r\n signIn: 'Sign In',\r\n enterAccessCodeSent: 'Enter Access Code sent to your email',\r\n forgotPassword: 'Forgot Password?',\r\n goToAccount: 'Go to account',\r\n resendCode: 'Resend Code?',\r\n\r\n copy: 'Copy',\r\n createRole: 'Create Role',\r\n hasActiveAdminSessions: 'There is already an active session. Do you want to start a new session ?',\r\n yesLogin: 'Yes, Login',\r\n noRetainSessions: 'No, Retain existing sessions',\r\n\r\n passwordAdherence: 'Adhere to password policy:',\r\n passwordLength: 'Password length should be in between 8-20 characters.',\r\n passwordContents: 'Password should contain at least one,',\r\n contentNumber: 'Number.',\r\n contentCapital: 'Capital Letter.',\r\n contentSpecialCharacter: 'Special Character.',\r\n notSamePassword: 'Password shouldn\\'t be same as previous 5 passwords.',\r\n noCommonWordPassword: 'Password shouldn\\'t contain any common words.',\r\n noUsernameOrEmailPassword: 'Password shouldn\\'t contain username or email ID.',\r\n\r\n // User role treeview\r\n access: 'Access',\r\n add: 'Add',\r\n remove: 'Remove',\r\n edit: 'Edit',\r\n delete: 'Delete',\r\n bgManagement: 'BG Management',\r\n split: 'Split',\r\n merge: 'merge',\r\n modifyPayOrder: 'User can modify pay order',\r\n editChargeCategories: 'Edit Charge Categories',\r\n modifyChargeCategory: 'Users can modify charge categories',\r\n secureCategory: 'Users can Modify Secure Charge Category',\r\n secureChargeCategory: 'Secure Charge Category',\r\n modifyPromoPlanRules: 'User can modify Promo Plan Rules',\r\n configurationCapitalise: 'Configuration',\r\n editConfig: 'Users can modify most configurations',\r\n refundsConfig: 'Users can perform refunds',\r\n recurringCharge: 'Users can modify recurring charge for a unit',\r\n UnitType: 'Users can modify unit type details including rent slider',\r\n tenantRequiredFields: 'Tenant Required Fields',\r\n tenantRequired: 'Users can modify required/preferred/optional configuration for tenant',\r\n leaseManagement: 'Lease Management',\r\n bgReservation: 'Users can change the configured charge amount for a reservation',\r\n standardCategories: 'Standard Categories',\r\n reportsGeneral: 'Users can access standard report categories except audit, income, management',\r\n auditReports: 'Audit Reports',\r\n auditReportsPermission: 'Users can access reports listed under audit reports',\r\n incomeReports: 'Income Reports',\r\n incomeReportsPermission: 'Users can access reports listed under income reports',\r\n userMoveIn: 'User can perform Move In',\r\n userPayment: 'User can perform payments',\r\n tenantInformation: 'Tenant Information and ledger',\r\n secureInformation: 'Secure Information',\r\n corporateReports: 'Corporate Reports',\r\n corporateReportsPermission: 'Users can access corporate reports',\r\n managementReportsTitle: 'Management Reports',\r\n managementReports: 'Users can view summary, units- rented by type, units- non-standard rent, units- square footage, tenants- auto credit cards ',\r\n customCategories: 'Custom Categories',\r\n addOrEdit: 'Users can add or edit custom categories',\r\n unitsGeneral: 'Users can modify all unit related details',\r\n generalDetails: 'General Details',\r\n unitsCurrentRate: 'Users can modify the current rate of a Unit',\r\n NextRentAssessmentDate: 'Users can modify Next Rent Assessment Date on a Unit',\r\n NextRentAssessmentDateLabel: 'Next Rent Assessment Date',\r\n PaidToDate: 'Users can change the Paid To Date while editing a Unit',\r\n PaidToDateLabel: 'Paid To date',\r\n unitsUnitType: 'Users can modify unit type, dimensions and BEV level of a unit',\r\n unitTypeDimension: 'Unit Type / Dimension',\r\n unitsDimension: 'Users can modify width, depth and level of the unit',\r\n unitsInventoryReport: 'Users can add or remove Units from Inventory Reports',\r\n unitsMoveInDate: 'Users can modify move in date on a unit',\r\n occupancy: 'Occupancy',\r\n tenant: 'Tenant',\r\n setup: 'SETUP',\r\n setupLabel: 'Setup',\r\n tenantsGeneral: 'Users can modify Tenant and Ledger details except Ledger Balance',\r\n tenantsAllowSecureInfo: 'Users can modify secure information like ID proof, Credit card details',\r\n lateExemption: 'Late Exemption',\r\n AllowLateExemption: 'Users can modify late exemption on a tenant',\r\n AllowGateExemption: 'Users can modify gate exemption on a tenant',\r\n gateExemption: 'Gate Exemption',\r\n tenantsStatus: 'Users can change whether Tenants are Active or Inactive',\r\n modifyActiveStatus: 'Modify Active Status',\r\n modifyDeposit: 'Modify Deposit',\r\n tenantsDeposit: 'Users can change the deposit amounts held in the Tenant Profile',\r\n facilityManagement: 'Facility Management',\r\n tenantsContactLog: 'Users can modify manual entry logged at contact log',\r\n composeCustomEmail: 'Users can compose custom emails/text to tenants from conversation work center',\r\n composeEmailText: 'Compose Email/Text',\r\n viewSecureInfo: 'Users can view secure information',\r\n unitsRentalStatus: 'Users can modify Rental Status on a unit',\r\n performMoveIn: 'Users can move tenants into a unit',\r\n rentAssessment: 'Rent Assessment',\r\n rentAssessmentText: 'Users can process manual rent assessment',\r\n editMoveInDate: 'Users can modify move in date while performing move in',\r\n modifyBillTodate: 'User can modify bill to date during move in',\r\n increaseCurrentRate: 'Increase Current Rate',\r\n unitRateUp: 'Users can modify the units Current rate to be Higher than the configured amount only during Move in and reservation',\r\n decreaseCurrentRate: 'Decrease Current Rate',\r\n unitRateDown: 'Users can modify the units Current rate to be lower than the configured amount only during Move in and reservation',\r\n waiveSetupFeeLabel: 'Waive Setup Fee',\r\n waiveSetupFee: 'Users can waive the Setup Fee during a move-in',\r\n editSetupFee: 'Users can modify the Setup Fee during a move-in',\r\n waiveDeposits: 'Users can waive Tenant/Rental Deposit during a move-in',\r\n waiveDepositLabel: 'Waive Deposit',\r\n editDeposits: 'Users can modify Tenant/Rental Deposit during a move-in',\r\n waiveProrate: 'Users can modify prorate amount during move in',\r\n LicenseManagement: 'License Management',\r\n nonStandardPeriods: 'Users can choose any available period as the Unit rent period during a move-in',\r\n noPromoPlan: 'Users can perform a Move-in without being required to choose a Promo Plan',\r\n userRole: 'User Role',\r\n accountManagement: 'Account Management',\r\n performMoveOut: 'Users can move perform move out',\r\n moveOutDate: 'Users can modify the effective move-out date during moving out',\r\n waiveNotificationPenaltyLabel: 'Waive Notification Penalty',\r\n waiveNotificationPenalty: 'Users can waive the notification penalty amount during move-out',\r\n overrideResolveChargesLabel: 'Override Resolve Charges',\r\n overrideResolveCharges: 'Users can override the selection on Resolve Charges',\r\n userManagement: 'User Management',\r\n rentAdjustment: 'Rent Adjustment',\r\n schedule: 'Users can schedule new rent adjustments',\r\n rentAdjustmentApply: 'Users can apply rent adjustments',\r\n rentAdjustmentWaive: 'Users can waive existing rent adjustments',\r\n rentAdjustmentLease: 'Users can modify lease on rent adjustments',\r\n financials: 'Financials',\r\n businessGroupManagement: 'Business Group Management',\r\n reservationSubtitle: 'User can perform reservation',\r\n reservationWaiveDeposit: 'Users can waive reservation deposit during a reservation',\r\n chargeAccessScreen: 'Access Screen',\r\n PaymentAccessScreen: 'Users can access payment screen',\r\n paymentNeedCredentials: 'Users are required to re enter credentials while taking payment',\r\n paymentModifyEffectiveDate: 'Users can modify date of payment while taking a payment',\r\n paymentNegativeAmount: 'Users can enter negative payment amount',\r\n paymentDelete: 'Users can delete a payment (These payments will not show up on most reports)',\r\n paymentDeleteLabel: 'Delete Payment',\r\n paymentReverse: 'Users can reverse a payment',\r\n paymentReverseLabel: 'Reverse Payment',\r\n paymentNsfEntry: 'Users can access NSF screen',\r\n paymentBatchProcessing: 'Batch Processing',\r\n paymentCreditCards: 'Users can process credit cards signed up for auto pay in batches',\r\n AchPpd: 'Users can process ACH in Batches',\r\n payOffBalance: 'Users can click pay off balances on the batch process screen',\r\n chargeManualCharge: 'Manual Charge',\r\n chargeDelete: 'Delete Charge',\r\n chargeReverse: 'Reverse Charge',\r\n chargeDeletePermission: 'Users can delete a charge on ledger review screen',\r\n chargeReversePermission: 'Users can reverse a charge on ledger review screen',\r\n chargeAccess: 'Users can create manual charges',\r\n chargeNegativeAmount: 'Users can create manual charges with negative amount',\r\n chargeSecureCategory: 'Users can create manual charges for charge categories marked as secure',\r\n chargeReverseSecureCategory: 'Users can reverse a charge that is marked as a secured charge category',\r\n chargeDeleteSecureCategory: 'Users can delete a charge that is marked as a secured charge category',\r\n retailSale: 'Retail Sale',\r\n retailSaleSell: 'Users can sell items through Point of sale',\r\n sellInventory: 'Sell Inventory',\r\n retailSaleNegativeSale: 'Users can sell negative amounts of items if \"Allow negative inventory\" is true in configuration',\r\n negativeInventory: 'Negative Inventory',\r\n retailSaleEditInventory: 'Users can add / modify items in the Inventory management',\r\n modifyInventory: 'Modify Inventory',\r\n retailSaleReplenishment: 'Users have the ability to replenish items into Inventory subsystem',\r\n retailSaleNegativeReplenishment: 'Users can enter negative replenish amounts into Inventory subsystem',\r\n retailSaleRestock: 'Users can Restock Items into Inventory',\r\n retailSaleAudit: 'Users can Audit Inventory',\r\n retailSaleAuditNegative: 'Users can enter negative amounts into Inventory Audit',\r\n utilityMeteringData: 'Users can assess charges through the Utility Metering Function',\r\n utilityMetering: 'Utility Metering',\r\n reprintReceipts: 'Reprint Receipts',\r\n reprintReceiptsPermission: 'Users can reprint receipts from report & documentation work centers and from tenant documentation',\r\n roleCreated: 'User Role Created Successfully',\r\n roleUpdated: 'Updated Successfully',\r\n roleUpdateError: 'Error In Updating Roles',\r\n enterOldPassword: 'Enter Old Password',\r\n enterNewPassword: 'Enter New Password',\r\n successPassword: 'User profile changed successfully',\r\n passwordChanged: 'Password Changed Successfully',\r\n reNewPassword: 'Re-Enter New Password',\r\n reEnterNewPassword: 'Re-Enter New Password',\r\n userRoleActivateConfirmation: 'Are you sure you want to activate User Role?',\r\n userRoleDeactivateConfirmation: 'Are you sure you want to deactivate User Role?',\r\n userManagementSubTitle: 'User can create/modify/assign roles to a user within the account',\r\n userManagementSubTitle2: 'User can create/modify user roles within the account',\r\n setPermissionAt: 'Set Permission at',\r\n\r\n system: 'System',\r\n disableUiAccess: 'Disable UI Access',\r\n systemConfigManagement: 'System Config Management',\r\n reportManagement: 'Report Management',\r\n esManagement: 'ES Management',\r\n indexManagement: 'Index Management',\r\n dataManagement: 'Data Management',\r\n accessLetterMigrationConsole: 'Access Letter Migration Console',\r\n startOfDay: 'Start Of Day',\r\n accessLiveData: 'Access Live Data',\r\n modifyRestrictions: 'Modify Restrictions',\r\n deleteSandbox: 'Delete Sandbox',\r\n systemConfigManagementLabel: 'If this is turned on users will be having access to create or modify the system configs',\r\n disableUiAccessLabel: 'Users with this permission turned on won’t be having permission to access the UI',\r\n\r\n // BEV Related\r\n bev: 'BEV',\r\n bevSetup: 'BEV SETUP',\r\n bevView: 'BIRDS EYE VIEW',\r\n bevViewTitle: 'Bird\\'s Eye View',\r\n bevViewModeLinkText: 'Switch to View Mode',\r\n bevSetupModeLinkText: 'Switch to Setup Mode',\r\n bevToolBox: 'Tool Box',\r\n bevLeftAlignTooltip: 'Left Align',\r\n bevRightAlignTooltip: 'Right Align',\r\n bevTopAlignTooltip: 'Top Align',\r\n bevBottomAlignTooltip: 'Bottom Align',\r\n bevHorizontalCenterTooltip: 'Horizontal Center',\r\n bevVerticalCenterTooltip: 'Vertical Center',\r\n bevRotateTooltip: 'Rotate 90°',\r\n bevDeleteTooltip: 'Delete',\r\n bevCreateEdit: 'Create New/Edit',\r\n bevUnitNumberField: 'Enter Unit Number',\r\n bevWidthFieldLabel: 'Width',\r\n bevDepthFieldLabel: 'Depth',\r\n bevCountRadioLabel: 'Count',\r\n bevCountFieldPlaceholder: 'Enter Count',\r\n bevIncrementRadioLabel: 'Increment',\r\n bevDecrementRadioLabel: 'Decrement',\r\n bevIncrementFieldLabel: 'Count Increment',\r\n bevDecrementFieldLabel: 'Count Decrement',\r\n bevAngleFieldLabel: 'Angle',\r\n bevAngleFieldPlaceholder: 'Enter Angle',\r\n bevDirectionButtonsDescription: 'Click on arrow for direction and plus to add Units',\r\n bevKeyboardShortcutsCardTitle: 'Keyboard Shortcuts',\r\n bevKeyboardShortcutLabel1: 'Multi-Select:',\r\n bevKeyboardShortcutDescription1: 'Hold control and select required units',\r\n bevKeyboardShortcutLabel2: 'Direction:',\r\n bevKeyboardShortcutDescription2: 'Use arrow keys to change the directions',\r\n bevKeyboardShortcutLabel3: 'Delete:',\r\n bevKeyboardShortcutDescription3: 'Select and press delete',\r\n bevKeyboardShortcutLabel4: 'Scroll:',\r\n bevKeyboardShortcutDescription4: 'Hold space and move the screen to scroll',\r\n bevUnitDataSaved: 'Units data saved successfully',\r\n bevPlaceholderDataSaved: 'Units data saved successfully',\r\n bevSetupDataSaved: 'Setup saved successfully',\r\n bevUnitDataPartiallySaved: 'Some units could not be created/updated',\r\n bevSetupDataPartiallySaved: 'Some units/placeholder could not be created/updated',\r\n bevUnitDataSaveFailed: 'Failed to Save',\r\n setupBev: 'Setup Bird\\'s Eye View',\r\n bevColorSetup: 'Color Setup',\r\n bevColorSetupConfigure: 'Configure Color Setup',\r\n bevColorSetupBoard1: 'Unit Status',\r\n bevColorSetupBoard1Item1: 'Vacant',\r\n bevColorSetupBoard1Item2: 'Rented',\r\n bevColorSetupBoard1Item3: 'Unavailable',\r\n bevColorSetupBoard1Item4: 'Reserved',\r\n bevColorSetupBoard1Item5: 'Gate Locked',\r\n bevColorSetupBoard2: 'Lock / Overlock Status',\r\n bevColorSetupBoard2Item1: 'Overlock Pending',\r\n bevColorSetupBoard2Item2: 'Overlocked',\r\n bevColorSetupBoard2Item3: 'Unlock Pending',\r\n bevColorSetupBoard3: 'Maintenance Activity',\r\n bevColorSetupBoard4: 'Delinquency Status',\r\n bevSortableBoardDescription: 'Highest priority is at the top',\r\n enableBEV: 'Enable BEV',\r\n refreshColor: 'Refresh Color',\r\n levelManagement: 'Level Management',\r\n unitsInTheLevel: 'Units in the level',\r\n levelDeleteTooltip: 'Move units to a different level to delete this level',\r\n chooseADifferentName: 'Choose a different name',\r\n confirm: 'Confirm',\r\n discardChangesButton: 'Discard Changes',\r\n levelsSaved: 'Levels saved successfully',\r\n levelsSaveFailed: 'Failed to save levels',\r\n unitAlreadyExists: 'Unit Already exists',\r\n changeUnitNumber: 'Change Unit Number',\r\n moveToCurrentLocation: 'Move To Current Location',\r\n shouldSetThisAsDefault: 'Set this as default?',\r\n zoomValueSaveFailed: 'Failed to set current zoom as default',\r\n zoomValueSaved: 'Current zoom set as default',\r\n bevRefreshColorErrorMsg: 'Failed to refresh colors',\r\n colorRefreshInitiatedMsg: 'Color refresh initiated. This may take upto a minute',\r\n scroll: 'Scroll',\r\n placeholder: 'Placeholder',\r\n selectPlaceholder: 'Select Placeholder',\r\n selectPlaceholderType: 'Select Placeholder Type',\r\n editPlaceholderName: 'Edit Placeholder Name',\r\n unitComments: 'Unit comments',\r\n nextBillingDate: 'Next billing date',\r\n tenantBalance: 'Tenant balance',\r\n\r\n // Walk Around config related\r\n walkAround: 'Walk Around',\r\n sortingOrderType: 'Sorting Order Type',\r\n defaultSortOrder: 'Default Sort Order',\r\n selectSortingOrderType: 'Select Sorting Order Type',\r\n selectDefaultSortOrder: 'Select Default Sort Order',\r\n reviewUnitSortOrder: 'Review Unit Sort Order',\r\n customSortOrder: 'Custom Unit Order',\r\n dragAndDropUnits: 'Drag and drop units in the preferred order',\r\n saveChanges: 'Save Changes',\r\n bulkSelection: 'Bulk Selection',\r\n changeStatusTo: 'Change status to',\r\n deselectAll: 'Deselect All',\r\n failedToUpdateStatus: 'Failed to update status',\r\n overLockStatusSuccess: 'Overlock Status updated successfully',\r\n\r\n // Maintenance Event Config Related\r\n maintenanceEvent: 'Maintenance Event',\r\n noMaintenanceEventsFound: 'No Maintenance Event Configurations Found',\r\n createOn: 'Create On',\r\n selectCreateOnType: 'Select Create On Type',\r\n markThisUnitAsUnavailable: 'Mark this unit as unavailable',\r\n shouldChargeTenant: 'Do you want to charge the tenant',\r\n selectChargeWhenType: 'Select Charge When Type',\r\n chargeWhenEventIs: 'Charge when event is',\r\n generateWorkOrder: 'Generate Work Order',\r\n generateInvoice: 'Generate Invoice',\r\n printWorkOrder: 'Print work order on status change',\r\n printWorkOrderInvoice: 'Print work order invoice on status change',\r\n chooseColorToDisplayOnBEV: 'Choose color to display on BEV',\r\n colorConflictErrorMessage: 'Please choose a color different from the ones chosen for \\'Rental Availability Status\\' in BEV Color Setup Configuration',\r\n selectWorkOrderNumber: 'Select Work Order Number',\r\n\r\n // Operations - Maintenance Events Related\r\n maintenanceEvents: 'Maintenance Events',\r\n maintenanceEventsListEmpty: 'No Maintenance Events Scheduled',\r\n maintenanceEventsListCreatedOnAndTenant: 'CREATED ON /\\nTENANT',\r\n maintenanceEventsListEndDate: 'EXPECTED COMPLETION\\nDATE',\r\n maintenanceEventsListStatus: 'STATUS',\r\n maintenanceEventsListComments: 'COMMENTS',\r\n chargeWhen: 'Charge when',\r\n tenantInfo: 'Tenant Info',\r\n noChargeLabel: 'No charge will be created as there’s no tenant associated with this unit',\r\n scheduleEvent: 'Schedule Event',\r\n scheduling: 'Scheduling',\r\n selectEvent: 'Select Event',\r\n editMaintenanceEvent: 'Edit Maintenance Event',\r\n editEvent: 'Edit Event',\r\n markAsPending: 'Mark as pending',\r\n completeEvent: 'Complete Event',\r\n completeAndCloseEvent: 'Complete & Close Event',\r\n completeEventAlertMessage: 'Are you sure you want to mark this event as complete ?',\r\n closeEvent: 'Close Event',\r\n closeEventAlertMessage: 'Are you sure you want to close this event ?',\r\n cancelEvent: 'Cancel Event',\r\n cancelEventAlertMessage: 'Are you sure you want to cancel this event ?',\r\n unitWillBeMarkedUnavailable: 'Unit will be marked as unavailable',\r\n maintenanceEventStartDate: 'Start Date',\r\n maintenanceEventEndDate: 'Expected completion date',\r\n eventScheduleWithCharge: 'Event is scheduled with a charge of ',\r\n eventSchedulingFailed: 'Event scheduling failed',\r\n eventClosedWithCharge: 'Event is closed with a charge of ',\r\n unitIsMarkedUnavailable: 'Unit is marked as unavailable !',\r\n failedToMarkUnitUnavailable: 'Failed to mark unit as unavailable',\r\n maintenanceEventCreated: 'Event Created Successfully',\r\n maintenanceEventUpdated: 'Event Updated Successfully',\r\n maintenanceEventClosePermissionDesc: 'Users can close a maintenance event',\r\n maintenanceEventCancelPermissionDesc: 'Users can cancel a maintenance event',\r\n\r\n\r\n // Vendor Related\r\n vendorListVendorName: 'VENDOR NAME',\r\n vendorListContactPerson: 'CONTACT PERSON',\r\n vendorListAddress: 'ADDRESS',\r\n vendorListEmail: 'EMAIL',\r\n vendorListPhone: 'PHONE',\r\n vendorListFax: 'FAX',\r\n vendorListActions: 'ACTION',\r\n vendorCreate: 'Add Vendor',\r\n vendors: 'Vendors',\r\n\r\n vendorDisplayName: 'Vendor Management',\r\n vendorListEmpty: 'No Vendors Found',\r\n\r\n vendorName: 'Vendor Name',\r\n contactName: 'Contact Person',\r\n phoneOrFax: 'Phone / Fax',\r\n\r\n allAccounts: 'All Accounts',\r\n accountDisplayName: 'Accounts List',\r\n accountListEmpty: 'No Accounts Found',\r\n accountListLoading: 'Accounts Loading...',\r\n\r\n facilityDisplayName: 'Facility List',\r\n facilityListEmpty: 'No Facilities Found',\r\n facilityListLoading: 'Facilities Loading...',\r\n\r\n // Tenant Section configuration\r\n always: 'Always',\r\n onDemand: 'On Demand',\r\n neverShow: 'Never Show',\r\n showAllBelowFieldsInTenant: 'Show all below Fields in Edit/Create Tenant',\r\n markAllFieldAs: 'Mark All fields as',\r\n emailAddress: 'Email Address',\r\n emailEnabled: 'Email Enabled',\r\n // Reservation Related\r\n reservationListCode: 'RESERVATION CODES',\r\n reservationListTenant: 'TENANT',\r\n reservationListLedger: 'LEDGER',\r\n reservationListUnitType: 'UNIT TYPE',\r\n reservationListUnit: ' UNIT',\r\n reservationListReservationDate: 'RESERVATION DATE',\r\n reservationListExpectedMoveInDate: 'EXPECTED MOVE IN DATE',\r\n reservationListActions: 'ACTIONS',\r\n reservationListEmpty: 'No Reservations Found',\r\n cancelReservationConfirmation: 'Are you sure you want to cancel Reservation?',\r\n reservationCancelMessage: 'Reservation cancelled successfully',\r\n reservationDetails: 'Reservation Details',\r\n reservationDeposit: 'Reservation Deposit',\r\n reservationDate: 'Reservation Date',\r\n reservationExpectedMoveInDate: 'Expected Move in Date',\r\n pendingReservation: 'Pending Reservation',\r\n viewReservation: 'View Reservation',\r\n\r\n // inventory details\r\n inventory: 'Inventory',\r\n inventoryDisplayName: 'Inventory Management',\r\n inventoryListEmpty: 'No Inventories Found',\r\n inventoryListLoading: 'Inventories Loading...',\r\n\r\n inventoryListProductId: 'ID',\r\n inventoryListProductDescription: 'DESCRIPTION',\r\n inventoryListVendorId: 'VENDOR',\r\n inventoryListRetailPrice: 'RETAIL PRICE',\r\n inventoryListAvailableQuantity: 'AVAILABLE\\nQUANTITY',\r\n inventoryListReorderPoint: 'REORDER POINT',\r\n inventoryListActions: 'ACTIONS',\r\n\r\n sellAndPay: 'Sell And Pay',\r\n pointOfSale: 'POINT OF SALE',\r\n\r\n pointOfSaleLower: 'Point Of Sale',\r\n clearCartItems: 'Clear Cart',\r\n itemNotFound: 'Item not found',\r\n clear: 'CLEAR',\r\n addToInventory: 'ADD TO INVENTORY',\r\n addItem: 'Do you want to add this item?',\r\n updateProductQuestion: 'This Product Id already exists. Do you want to update the product?',\r\n selectTenantToMakePayment: 'Select a tenant to make payments',\r\n\r\n sellNegativeInventoryError: 'You don\\'t have permission to sell into negative inventory',\r\n negativeInventoryConfigMessage: 'Negative Inventory is not configured',\r\n\r\n customerName: 'Customer Name',\r\n productsList: 'Product List',\r\n availableQuantityInPos: 'Available Qty',\r\n dateOfPurchase: 'Date Of Purchase',\r\n cart: 'Cart',\r\n clearCartAlert: 'Are you sure you want\\n to Clear Cart Items?',\r\n selectAll: 'Select All',\r\n unSelectAll: 'Unselect All',\r\n sellAndPayLater: 'Sell and Pay later',\r\n inventoryAuditName: 'Inventory Audit',\r\n inventoryAuditAvailableQuantity: 'Available Quantity',\r\n inventoryAuditDescription: 'Description',\r\n inventoryAuditProductId: 'Product ID',\r\n inventoryAddRemoveQuantity: 'Add/Remove Quantity',\r\n inventoryUpdatedQuantity: 'Updated Quantity',\r\n inventoryComment: 'Comments',\r\n inventoryAuditSubTitle: 'User can edit available quantity in the audit',\r\n negativeInventorySubtitle: 'User can edit the available quantity to a negative amount',\r\n\r\n inventoryUpdateQuantity: 'Update Quantity',\r\n\r\n update: 'Update',\r\n inventoryUpdate: 'Inventory Updated Successfully',\r\n\r\n goToVendor: 'GO TO VENDOR MANAGEMENT',\r\n emptyInventoriesAlert: 'Please Add A Vendor first before you add a product',\r\n alert: 'Alert',\r\n\r\n inventoryRestockName: 'Restock',\r\n restockQuantity: 'Restock Quantity',\r\n editInventory: 'Edit Inventory',\r\n comesFromQuantity: 'Comes from Preferred Reorder Quantity',\r\n totalSaving: 'Total Savings',\r\n totalTax: 'Total Tax',\r\n sellAndPaid: 'Products in Cart are Sold and Paid For',\r\n printPurchaseOrder: 'Print Purchase Order',\r\n taxExemptQuestion: 'Tax Exempt?',\r\n sellAndPaidLater: 'Products in Cart are Sold',\r\n restock: 'Restock',\r\n nothingToRestock: 'Nothing To Restock',\r\n retailSaleConfigure: 'CONFIGURE RETAIL SALE',\r\n usePreferredPrice: 'Use preferred price by default',\r\n allowNegativeInventory: 'Allow negative inventory',\r\n mandateComments: 'Mandate comments',\r\n copiesPrint: 'Copies to be printed',\r\n exempted: 'Exempted',\r\n vendor: 'Vendor',\r\n contactPerson: 'Contact Person',\r\n\r\n // inventory form\r\n upc: 'UPC ID',\r\n productId: 'Product ID',\r\n retailPrice: 'Retail Price',\r\n preferredPrice: 'Preferred Price',\r\n wholesalePrice: 'Wholesale Cost',\r\n availableQuantity: 'Available Quantity',\r\n reorderPoint: 'Reorder Point',\r\n preferredReorderQuantity: 'Preferred Reorder Quantity',\r\n showAtKiosk: 'Show at Kiosk',\r\n subTotal: 'Subtotal',\r\n\r\n addInventory: 'Add Inventory',\r\n scanBarcode: 'Scan Barcode',\r\n scanningBarcode: 'Reading Barcode',\r\n fromBarcodeScanner: 'From Bar Code Reader',\r\n productDescription: 'Product Description',\r\n selectVendor: 'Select Vendor',\r\n sellingPrice: 'Selling price of Product',\r\n userPrice: 'User set price',\r\n wholesaleCost: 'Price at wholesale cost',\r\n productQuantity: 'Product quantity in facility',\r\n stockLow: 'Quantity when stock is low',\r\n reorderPlaceholder: 'User set quantity',\r\n enterProductId: 'Enter Product ID',\r\n\r\n\r\n cartProductsAdded: 'Products Added',\r\n cartProductQuantity: 'Quantity',\r\n cartPrice: 'Price',\r\n cartTotal: 'Amount',\r\n emptyCart: 'Cart is Empty. Please Add To Cart By Clicking on Products',\r\n remainingQuantity: 'Remaining',\r\n retailSaleNegativeSell: 'Users can sell into negative inventory',\r\n retailSaleAddInventoryPOS: 'Users can add inventories at point of sale',\r\n\r\n // Report Work Center\r\n allReports: 'All Reports',\r\n reports: 'Reports',\r\n consolidatedManagementReports: 'Consolidated Management Reports',\r\n consolidatedReports: 'Consolidated Reports',\r\n deliverReport: 'Deliver Report',\r\n deliveringReport: 'Delivering Report',\r\n selectedReports: 'Selected Reports',\r\n clearSelection: 'Clear Selection',\r\n searchCategories: 'Search Categories',\r\n searchReports: 'Search Reports',\r\n addCustomCategory: 'Add Custom Category',\r\n createCategory: 'Create Category',\r\n updateCategory: 'Update Category',\r\n assignPrinter: 'Assign Printer',\r\n reportDescription: 'Report Description',\r\n noDescription: 'No Description',\r\n previewReport: 'Preview Report',\r\n enterReceiptNumber: 'Enter Receipt Number',\r\n enterInvoiceNumber: 'Enter Invoice Number',\r\n receiptNotFound: 'Receipt Not Found',\r\n invoiceNotFound: 'Invoice Not Found',\r\n reportWorkCenter: 'ReportWorkCenter',\r\n consolidatedReportWorkCenter: 'consolidatedReportWorkCenter',\r\n consolidatedReportAccess: 'Can Access Consolidated Management Summary Report',\r\n\r\n // Report WC Status\r\n fetchingReport: 'Fetching Report...',\r\n buildingReport: 'Building Report...',\r\n convertingToPdf: 'Converting to PDF',\r\n openingFile: 'Opening File',\r\n thisIsAPermanentAction: 'This is a Permanent Action',\r\n continueConfirmation: 'Are you sure you want to continue?',\r\n categoryDeleted: 'Category Deleted Successfully',\r\n yesDeliverLink: 'YES, DELIVER LINK',\r\n noExitCaps: 'NO, EXIT',\r\n\r\n filterPresets: 'Filter Presets',\r\n effectiveDate: 'Effective Date',\r\n effectiveDateRange: 'Effective Date Range',\r\n fromToDate: 'From / To Date',\r\n numberRange: 'Number Range',\r\n depositLogCapitalized: 'Deposit Log',\r\n\r\n batchScheduling: 'Batch Scheduling',\r\n startDay: 'Start Day',\r\n endDay: 'End Day',\r\n startDate: 'From Date',\r\n endDate: 'To Date',\r\n processTime: 'Process Time',\r\n print: 'Print',\r\n printTable: 'Print Table',\r\n copies: 'Copies',\r\n\r\n generateBy: 'Generate By',\r\n emailAddressListPlaceholder: 'Email Ids entered above will show up here',\r\n\r\n editPermission: 'Edit Permission',\r\n switchToRoles: 'Switch To Roles',\r\n switchToUsers: 'Switch To Users',\r\n roles: 'Roles',\r\n users: 'Users',\r\n syrasoftUserRoles: 'Syrasoft User Roles',\r\n allow: 'Allow',\r\n restrict: 'Restrict',\r\n\r\n noUsersFound: 'No Users Found',\r\n noRolesFound: 'No Roles Found',\r\n\r\n requestSubmitted: 'Request Submitted Successfully',\r\n attemptingDelivery: 'Attempting to deliver report. It could take a few seconds.',\r\n categoryCreated: 'Category is Successfully Created',\r\n categoryUpdated: 'Category is Updated Created',\r\n updatingCategory: 'Updating Category',\r\n creatingCategory: 'Creating Category',\r\n\r\n // Report Filter and sorts\r\n sort: 'Sort',\r\n groupBy: 'Group By',\r\n filters: 'Filters',\r\n selectSortOrder: 'Select Sort Order',\r\n selectedGroupBy: 'Select Group By',\r\n\r\n // Letter Editor\r\n insertTable: 'Insert Table',\r\n insertRowAbove: 'Insert Row Above',\r\n insertRowBelow: 'Insert Row Below',\r\n insertColumnLeft: 'Insert Column Left',\r\n insertColumnRight: 'Insert Column Right',\r\n deleteRow: 'Delete Row',\r\n deleteColumn: 'Delete Column',\r\n deleteTable: 'Delete Table',\r\n tableOperations: 'Table Operations',\r\n rows: 'Rows',\r\n columns: 'Columns',\r\n cancelLabel: 'CANCEL',\r\n done: 'DONE',\r\n mergeFieldCategory: 'Merge Field Category',\r\n insertMergeFields: 'Insert Merge Fields',\r\n exitWithoutSaving: 'Exit Without Saving',\r\n bottomRight: 'Bottom - right',\r\n bottomCenter: 'Bottom - center',\r\n bottomLeft: 'Bottom - left',\r\n noPageNumber: 'No Page number',\r\n addPageNumberAt: 'Add page number at',\r\n pageNumber: 'Page Number',\r\n customMergeFields: 'Custom Merge Fields',\r\n mergeFieldName: 'Merge Field Name',\r\n egMergeFieldValue: 'eg . : Thank you for being a part of our family.',\r\n egMergeFieldName: 'eg . : Welcome',\r\n onlyTenFields: 'Only 10 merge fields can be added',\r\n customMergeFieldSaved: 'Custom Merge Field Created Successfully',\r\n customMergeFieldUpdated: 'Custom Merge Field Updated Successfully',\r\n subCategory: 'Sub Category',\r\n\r\n // Letter Configuration\r\n letterConfiguration: 'Letter Configuration',\r\n customerEngagement: 'Customer Engagement',\r\n viewableAt: 'VIEWABLE AT',\r\n noLetterFound: 'No Letters Found',\r\n paperSize: 'PAPER SIZE',\r\n descriptionLabel: 'DESCRIPTION',\r\n showThisLetterAt: 'Show this letter at',\r\n printingPaperSize: 'Printing Paper Size',\r\n textFriendly: 'Text Friendly',\r\n enableTextFriendlyVersion: 'Enable text friendly version',\r\n enableTextFriendly: 'Do you want to enable text friendly version for this letter template?',\r\n composeLetter: 'Compose Letter',\r\n composeTextVersionLetter: 'Compose Text Version of Letter',\r\n editLetter: 'Edit Letter',\r\n editTextVersionLetter: 'Edit Text Version of Letter',\r\n emptyTemplateLink: 'Template link can not be empty',\r\n\r\n // Operations:\r\n operation: 'Operation',\r\n operationsLabel: 'Operations',\r\n failures: 'Failures',\r\n noOperationsFound: 'No operations available',\r\n defaultOperationText: 'Select an operation to proceed',\r\n rentAssessmentStarted: 'Rent Assessment is in progress. Started at',\r\n rentAssessmentRan: 'Rent Assessment last ran on',\r\n processRent: 'Process Rent',\r\n searchTenant: 'Search Tenant',\r\n searchUnit: 'Search Unit',\r\n allTenants: 'All Tenants',\r\n singleTenant: 'Single Tenant',\r\n singleUnit: 'Single Unit',\r\n errorInRentAssessment: 'Error Processing Rent',\r\n successfulRentAssessment: 'Rent Assessment was successfully processed',\r\n inProgressRentAssessment: 'Processing Rent',\r\n alreadyProcessedRentAssessment: 'Rent already processed for the',\r\n rentAssessmentType: 'Assessment Type',\r\n rentAssessmentDate: 'Assessment Date',\r\n selectRentAssessmentDate: 'Select Assessment Date',\r\n manualRentAssessment: 'Manual Rent Assessment',\r\n licenseExpired: 'Your License Expired on',\r\n hasExpired: 'Has Expired',\r\n notificationMessage: 'Your access to this facility is temporarily restricted because your subscription for Syrasoft Facilitate has expired. To continue using our service, please renew now. If you have active facilities, you can still access them by selecting the facility from the list above. Contact Support for further assistance.',\r\n secondMessage: 'To continue using our service, please renew now. If you have active facilities, you can still access them by',\r\n thirdMessage: 'selecting the facility from the list above. Contact Support for further assistance.',\r\n salesSupportNumber: 'Sales Support Number :',\r\n techSupportNumber: 'Tech Support Number :',\r\n customerSupportEmail: 'Customer Support Email :',\r\n salesSupport: '1(800) 817-7706',\r\n techSupport: '1(800) 559-5942',\r\n supportEmail: 'support@syrasoft.com',\r\n signOut: 'Sign Out',\r\n\r\n // Configuration\r\n configurationActivateConfirmation: 'Are you sure you want to activate the configuration?',\r\n configurationDeactivateConfirmation: 'Are you sure you want to deactivate the configuration?',\r\n // Print Settings\r\n printSettings: 'Print Settings',\r\n selectPrinter: 'Select Printer',\r\n paperType: 'Paper Type',\r\n printOn: 'Print On',\r\n paperSource: 'Paper Source',\r\n setPrinterForReport: 'Set Printer for Report',\r\n setPrinter: 'Set Printer',\r\n selectDefaultPrinter: 'Select Default Printer',\r\n defaultPrinter: 'Default Printer',\r\n noteForDefaultPrinter: 'Note: The default printer is the printer that is automatically selected when a user logs in to the application',\r\n noteForSetupPrinter: 'Note: Please set up a printer in the Syrasoft cloud assist to access this feature.',\r\n printerWarning: 'Syrasoft cloud assist is not setup for this facility. Please download and install the \\n app ',\r\n here: 'here',\r\n\r\n // View tenant\r\n editTenant: 'Edit Tenant',\r\n viewTenant: 'View Tenant',\r\n ledgerInfo: 'Ledger Info',\r\n autoPayEnabled: 'Autopay Enabled',\r\n autoPay: 'Autopay',\r\n balance: 'Balance',\r\n lastPaid: 'Last Paid',\r\n paidTill: 'Paid Till',\r\n paid: 'Paid',\r\n nextDueLedger: 'Next Due (Ledger)',\r\n nextDue: 'Next Due',\r\n unitDeposit: 'Unit Deposit',\r\n noUnitsRented: 'No Units Rented',\r\n quickPay: 'Quick Pay',\r\n ledgerReview: 'Ledger Review',\r\n crm: 'CRM',\r\n gateControls: 'Gate Controls',\r\n exemptFrom: 'Exempt From',\r\n gateLockout: 'Gate Lockout',\r\n overlock: 'Overlock',\r\n unlock: 'Unlock',\r\n otherLateEvents: 'Other Late Events',\r\n taxExemptLabel: 'Tax Exempt',\r\n websiteAccess: 'Website Access',\r\n noEmailConfigured: 'There’s no email or phone configured with this tenant. Please add one of the information to send the sign up link.',\r\n noTenantWebsiteUrl: 'There’s no website url present on the configurations of the facility.',\r\n exemptNumber: 'Exempt Number',\r\n noTaxExemptRecord: 'No Tax Exempts Record found',\r\n noAuthorizedPeople: 'No Additional Authorized People configured',\r\n additionalAuthorizedPeopleLabel: 'Additional Authorized People',\r\n unpaidBills: 'Unpaid Bills',\r\n unpaidBillsForPrimaryLedger: 'Unpaid Bills for Primary Ledger',\r\n unpaidBillsFor: 'Unpaid Bills for',\r\n amountCharged: 'Charged',\r\n amountUnpaid: 'Unpaid',\r\n noBillsGenerated: 'No Bills Generated',\r\n totalUnpaid: 'Total Unpaid',\r\n noReservation: 'No Reservations made. To create one, please click \\'+\\' icon',\r\n mode: 'Mode',\r\n saveConfirmationWarning: 'Your current changes will be saved first',\r\n actionsLower: 'Actions',\r\n expectedMoveInDate: 'Expected Move In Date',\r\n missingRequiredFields: ' Some of the required fields are empty. Please fill them before continuing',\r\n overlockAndUnlock: 'Overlock And Unlock Units',\r\n allUnits: 'All Units',\r\n someUnitsFailedToUpdate: 'Some Units Failed To Update',\r\n unitsSuccessfully: 'Unit(s) Successfully',\r\n saveAndContinue: 'Save & Continue',\r\n dontSave: 'Don\\'t Save',\r\n movingToUnitForm: 'You have unsaved changes in the current form. You\\'ll be moving to the edit unit form',\r\n leaseLetterNotConfigured: 'Lease letter is not configured',\r\n incompleteTenantDetails: 'Tenant details are incomplete',\r\n fillTenantDetails: 'Fill in the following fields to complete tenant information.',\r\n createInvoice: 'Create Invoice',\r\n documentsIssuedBetween: 'Document Issued Between',\r\n\r\n // Side Bar\r\n tenants: 'Tenants',\r\n leads: 'Leads',\r\n units: 'Units',\r\n reservations: 'Reservations',\r\n birdsEyeView: 'Bird\\'s Eye View',\r\n facilities: 'Facilities',\r\n accounts: 'Accounts',\r\n schedules: 'Scheduled Tasks',\r\n configurations: 'Configurations',\r\n user: 'User',\r\n noUpdatedData: 'Data has not been updated',\r\n home: 'Home',\r\n\r\n // TenantAlerts\r\n tenantAlerts: 'Tenant Alerts',\r\n createTenantAlert: 'Create Tenant Alert',\r\n updateTenantAlert: 'Update Tenant Alert',\r\n noAlerts: 'No alerts configured. To configure them, please click \\'+\\' icon',\r\n severityLevel: 'Severity Level',\r\n fromDate: 'From Date',\r\n toDate: 'To Date',\r\n buttonLoadingAlertText: 'Creating alert',\r\n createAlert: 'Create alert',\r\n alertDetails: 'Alert details',\r\n alertType: 'Alert type',\r\n alertConfigurationPlaceholder: 'Select module',\r\n alertConfigurationLabel: 'Module',\r\n tenantAlertsSuccessSnackbarCreation: 'Tenant alert has been successfully created',\r\n tenantAlertsSuccessSnackbarUpdation: 'Tenant alert has been successfully updated',\r\n\r\n // Contact Log\r\n contactLog: 'Contact Log',\r\n createContactLog: 'Create Contact Log',\r\n noContactLog: 'No contact records registered. To configure them, please click \\'+\\' icon.',\r\n createdOn: 'Created On',\r\n by: 'by',\r\n addEntry: 'Add Entry',\r\n editEntry: 'Edit Entry',\r\n message: 'Message',\r\n discardMessage: 'DISCARD MESSAGE',\r\n saveMessage: 'SAVE MESSAGE',\r\n composeEmail: 'Compose Email',\r\n composeTextMessage: 'Compose Text Message',\r\n\r\n // Ledger Review\r\n review: 'Review',\r\n transactions: 'Transactions',\r\n transactionList: 'Transaction List',\r\n transactionNumber: 'Transaction Number',\r\n createdDate: 'Created Date',\r\n toConjunction: 'to',\r\n amountPaid: 'Paid',\r\n chargeAndComment: 'Charge/Comment',\r\n reverseMessage: 'Are you sure you want to reverse?',\r\n reversePromoPlanMessage: 'This reversal does not affect any promo plan applied. You will have to manually reverse the promo plan.',\r\n deleteMessage: 'Are you sure you want to delete?',\r\n deletePromoPlanMessage: 'This deletion does not affect any promo plan applied. You will have to manually delete the promo plan.',\r\n otherActions: 'Other Actions',\r\n showTransactionNumber: 'Show Transaction Number',\r\n ledgerReviewAction: 'Actions',\r\n merchantPortal: 'Merchant Portal',\r\n searchByTransactionNumber: 'Search by Transaction Number',\r\n noTransactionsFound: 'No Transactions Found',\r\n\r\n // Manual Form\r\n manualCharges: 'Manual Charge',\r\n addCharge: 'Add Charge',\r\n manualChargeCreated: 'Manual Charge Created Successfully',\r\n amountMoreThanConfiguredAlertMessagePart1: 'The amount that you’ve entered is more than expected.',\r\n amountMoreThanConfiguredAlertMessagePart2: 'Are you sure you’ve entered the right amount ?',\r\n yesCreateCharge: 'Yes, Create Charge',\r\n noEditAmount: 'No, Edit Amount',\r\n yesPay: 'Yes, Pay',\r\n\r\n\r\n // Move In Summary\r\n demographicLetter: 'Demographic Letter',\r\n leaseLetter: 'Lease Letter',\r\n invoice: 'Invoice',\r\n leaseAddendumLetter: 'Lease Addendum Letter',\r\n vehicleAddendumLetter: 'Vehicle Addendum Letter',\r\n addFromRS: 'Add Items ?',\r\n movedInto: 'moved into',\r\n with: 'with',\r\n successfully: 'successfully!!',\r\n totalPayableTenant: 'Total Payable by Tenant',\r\n sell: 'Sell',\r\n inclusiveMessage: '(Inclusive Of Sale)',\r\n autoGenerate: 'Auto Generate',\r\n\r\n // Move Out\r\n moveOutDetails: 'Move Out Details',\r\n searchUnitOrTenant: 'Search Tenant / Unit',\r\n moveOutDateLabel: 'Move Out Date',\r\n tenantAndUnitDetail: 'Tenant And Unit Details',\r\n unitLabel: 'Unit Label',\r\n unitDescription: 'Unit Description',\r\n billing: 'Billing',\r\n lateNotificationPenaltyAmount: ' Late Notification Penalty Amount',\r\n commentsForUnit: 'Comments for Unit while vacating',\r\n reasonForVacating: 'Reason for Vacating',\r\n moveOutResolveCharges: 'Resolve Charges',\r\n totalUnpaidAr: 'Total Unpaid AR',\r\n unpaidAr: 'Unpaid AR',\r\n expectedNoticePeriod: 'Expected Notice Period',\r\n noticePeriodReceivedDate: 'Notice Period Received Date',\r\n fullPeriods: 'Full Period(s)',\r\n prorateOutDays: 'Day(s)',\r\n setProrate: 'Set Prorate',\r\n noBreakUpMessage: 'Breakup won\\'t be shown when changed',\r\n postMoveOut: 'Post Move Out',\r\n hasMovedOut: 'has been moved out of',\r\n tenantRelatedActions: 'Tenant Related Actions',\r\n doNotRent: 'Do Not Rent',\r\n postMoveOutSuccessfully: 'successfully',\r\n resolveRefunds: 'How do you want to resolve refunds ?',\r\n resolveBalance: 'How do you want to resolve balance ?',\r\n refund: 'Refund',\r\n refunds: 'Refunds',\r\n retryRefund: 'Retry Refund',\r\n cancelMoveOut: 'CANCEL MOVEOUT',\r\n exitPostMoveOut: 'EXIT POST MOVEOUT',\r\n moveOutStepZeroOnExitAlertMessage: 'Are you sure you want to cancel moveout ?',\r\n moveOutStepZeroOnNavigationAlertMessagePart1: 'Are you sure you want to discard all the changes ?',\r\n moveOutStepZeroOnNavigationAlertMessagePart2: 'This would result in loss of entered data !',\r\n moveOutStepTwoOnNavigationAlertMessagePart1: 'Are you sure you want to skip post moveout ?',\r\n moveOutStepTwoOnNavigationAlertMessagePart2: 'Following have to be done manually :',\r\n paymentRefund: 'Payment/ Refunds',\r\n deliveringDocuments: 'Delivering documents',\r\n changeTheTenantStatus: 'Change the tenant status',\r\n moveOutNextStepWithoutPaymentSnackbarMessage: 'Ledger Balance Exists ! Change balance resolution to move to next step',\r\n\r\n // POS RESPONSIVE\r\n products: 'Products',\r\n postMoveInPos: 'POST MOVE-IN RETAIL SALE',\r\n confirmChanges: 'Please confirm changes in the order',\r\n confirmOrder: 'Confirm Order',\r\n\r\n // payment\r\n payAheadFor: 'Pay ahead for',\r\n billAhead: 'Bill Ahead',\r\n receiptDeliverBy: 'Deliver Receipts By',\r\n cardProcessor: 'Card Processor',\r\n flaggedTenant: 'Don\\'t accept check from this tenant !',\r\n ignore: 'IGNORE',\r\n changePayment: 'CHANGE PAYMENT',\r\n checkNumber: 'Check Number',\r\n checkPlaceHolder: '012345678912',\r\n moneyOrderNumber: 'Money Order Number',\r\n successPayment: 'Payment was Successful',\r\n successRefund: 'Refund was Successful',\r\n unitFetched: 'Units Fetched Successfully',\r\n tenantFetched: 'Tenant Fetched Successfully',\r\n ledgerUpdated: 'Ledger Updated Successfully',\r\n clickHereForMoreDetails: 'Click here for more details',\r\n enterCardDetails: 'Enter card details',\r\n useCardOnFile: 'Use card on file',\r\n swipeCard: 'Swipe card',\r\n payUsing: 'Pay using',\r\n signUpForAutoPay: 'Sign up for auto pay',\r\n signUpLink: 'Deliver Sign up Link By',\r\n signUpLinkDelivered: 'Tenant Sign Up Link sent Successfully',\r\n sendSignUpLink: 'Send Sign up Link',\r\n saveThisForFuturePayments: 'Save this for future payments',\r\n clickOn: 'Click on',\r\n andSwipeTheCard: 'and swipe the card',\r\n negativeAmount: 'Amount cannot be positive',\r\n negativeAmountLabel: 'Negative Amount',\r\n nonZeroPositiveAmount: 'Amount cannot be 0 or negative',\r\n enterValidCardNumber: 'Enter valid card number',\r\n takingMoreTime: 'It\\'s taking more time than expected. Do you want to restart',\r\n refundInProgress: 'Refund in progress',\r\n paymentInProgress: 'Payment in progress',\r\n waitingForPaymentConfirmation: 'Waiting for payment confirmation',\r\n waitingForRefundConfirmation: 'Waiting for refund confirmation',\r\n sec: 'sec',\r\n cancelPayment: 'Cancel Payment',\r\n cancelRefund: 'Cancel Refund',\r\n noWait: 'No, Wait',\r\n paymentIsCancelled: 'Payment is cancelled',\r\n refunding: 'Refunding',\r\n paymentFailed: 'Payment Failed',\r\n reason: 'Reason',\r\n rejectionCode: 'Rejection code',\r\n tryDifferentMethod: 'TRY DIFFERENT METHOD',\r\n exitCaps: 'EXIT',\r\n resetAmount: 'RESET AMOUNT',\r\n prePayNotAllowed: 'Prepay not allowed',\r\n viaSyrapay: 'via Syrapay',\r\n partialPaymentNotAllowedForDelinquentTenant: 'Partial payment is not allowed for a delinquent tenant',\r\n\r\n // Delinquency Configuration\r\n delinquentEvent: 'Delinquent Event',\r\n delinquency: 'Delinquency',\r\n delinquent: 'Delinquent',\r\n eventType: 'Event Type',\r\n calculationStyle: 'Calculation Style',\r\n\r\n // Late Events\r\n viewDelinquencyWc: 'View Delinquency WC',\r\n viewDelinquencyWcSubtitle: 'User can view the delinquency WC',\r\n assessLateCharges: 'Assessing Late Charges',\r\n assessLateChargesSubtitle: 'User can assess late events and/ or print related documents',\r\n waiveLateCharges: 'Waive Late Charges',\r\n waiveLateChargesSubtitle: 'User can waive late events from manual late events screen',\r\n\r\n lateEventType: 'Late Event Type',\r\n noOfDaysLate: 'No. of Days Late',\r\n graceAmount: 'Grace Amount',\r\n trigger: 'Trigger',\r\n tenantPortal: 'Tenant Portal',\r\n overlockOutdoorUnits: 'Overlock Outdoor Units',\r\n colorOnBev: 'Choose color to display on BEV',\r\n graceAmountDescription: 'Late Event won\\'t occur if balance is less than or equal to grace amount',\r\n tenantPortalViewDescription: 'Can sign in and view basic information and balance',\r\n tenantPortalView: 'View Only',\r\n tenantPortalRestrictLogin: 'Restrict Login',\r\n resetOnGraceAmount: 'Reset on Grace Amount',\r\n\r\n waiveForAdditionalUnits: 'Waive this event for additional units?',\r\n selectLetter: 'Select Letter',\r\n sendToAlternateContact: 'Send to Alternate Contact',\r\n sendCurrentChargesDueDocument: 'Attach due document in addition to late letter',\r\n higherOfFlatAndPercent: 'Choose higher of % amount and flat amount',\r\n performBilling: 'Perform Billing',\r\n applyUntil: 'Apply Until',\r\n percentage: 'Percentage',\r\n configureTiers: 'CONFIGURE TIERS',\r\n ceilingPointOfTier: 'Ceiling point of the tier',\r\n lateEvent: 'Late Events',\r\n lateFeePerUnitType: 'LATE FEE PER UNIT TYPE',\r\n active: 'Active',\r\n anErrorOccurred: 'An error occurred.',\r\n percentPerUnitType: '% Per Unit Type',\r\n\r\n // Card Processor Configuration\r\n enterCardProcessorName: 'Enter Name of Processor',\r\n selectProcessor: 'Select Processor',\r\n acceptorId: 'Acceptor ID',\r\n accountId: 'Account ID',\r\n enterAcceptorId: 'Enter Acceptor ID',\r\n enterAccountId: 'Enter Account ID',\r\n accountToken: 'Account Token',\r\n enterAccountToken: 'Enter Account Token',\r\n terminalId: 'Terminal ID',\r\n enterTerminalId: 'Enter Terminal ID',\r\n showOn: 'Show on',\r\n deviceInformation: 'Device Information',\r\n activationCode: 'Activation Code',\r\n enterActivationCode: 'Enter the code that came with your device',\r\n laneID: 'Lane ID',\r\n deleteConfirmation: 'Are you sure you want to delete it?',\r\n cardProcessorCreated: 'Card Processor Created Successfully!',\r\n willConnectDevice: 'Device connection will take some time!',\r\n exit: 'Exit',\r\n waitingForDeviceToReboot: 'Waiting for the device to Reboot',\r\n saveFirst: 'Save current changes before adding new one',\r\n generateSecureToken: 'Generate Secure Token',\r\n enablingSecureTokenOption: 'Enabling this option provides utmost security during payments. Additional charges may apply',\r\n merchant: 'Merchant',\r\n enterMerchantId: 'Enter Merchant ID',\r\n contactTechSupportForMerchantId: 'Please contact tech support if you don’t have merchant ID',\r\n openMerchantPortal: 'Open merchant portal',\r\n noMerchantPortalPermission: 'User does not have permissions to open merchant portal',\r\n addDevice: 'Add Device',\r\n deviceId: 'Device ID',\r\n deviceName: 'Device Name',\r\n enterDeviceId: 'Enter Device ID',\r\n selectDeviceName: 'Select Device Name',\r\n\r\n // Financial General Configuration\r\n checkAmountPrompt: 'Prompt users to check amount',\r\n amountGreaterThan: 'Amount greater than',\r\n prepayCategory: 'Prepay Category',\r\n prepayMessage: 'The unallocated payment or negative charge is pushed to prepay charge category.\\n This can be refunded.',\r\n assessNsfCharges: 'Do you want to assess charges for nsf?',\r\n generateLetterNsf: 'Do you want to generate letter for nsf?',\r\n configureGeneral: 'Configure General',\r\n quickbooks: 'Quickbooks',\r\n configureQuickbooks: 'Configure QuickBooks',\r\n\r\n // Tax Code Configuration\r\n ratePercentage: 'RATE (%)',\r\n chargeCategoryLabel: 'CHARGE CATEGORY',\r\n percent: '%',\r\n\r\n // Payment Method Configuration\r\n paymentMethodListHeader: 'PAYMENT METHOD',\r\n paymentType: 'PAYMENT TYPE',\r\n surchargeDiscount: 'SURCHARGE/DISCOUNT',\r\n paymentMethodList: 'PAYMENT METHOD CONFIGURATION',\r\n paymentTypeForm: 'Payment Type',\r\n enableModifier: 'Enable Surcharge/Discount',\r\n enableSurcharge: 'Enable Surcharge',\r\n enableDiscount: 'Enable Discount',\r\n\r\n // Charge Category Configuration\r\n taxesAttached: 'TAXES ATTACHED',\r\n accountType: 'Account Type',\r\n exportOptions: 'Export Options',\r\n secureCategoryLabel: 'Secure Category',\r\n isThisSecureCategory: 'Is this a Secure Category ?',\r\n associatedTaxes: 'Associated taxes',\r\n matchTenantTaxExemptStatus: 'Match tenant\\'s tax exempt status',\r\n noFieldsCanBeModified: 'No Fields can be modified without the permission',\r\n noTaxesAreConfigured: 'No taxes are configured',\r\n\r\n // Tax Code Exempt Configuration\r\n exemptList: 'Exempt List',\r\n taxCodeExemptCategory: 'Tax Code Exempt Category',\r\n exemptedTaxes: 'Exempted Taxes',\r\n atLeastOneTaxCode: 'Add at least one tax code',\r\n\r\n // Rental general Configuration\r\n nonRentalChargeCategoryAllowance: 'Do you want to allow non-rental charge-category for unit? ',\r\n finalMonthProrateToDepartureDate: 'Assess rent till the expected move out date for the final month',\r\n default: 'Default',\r\n standardPeriod: 'Standard Period',\r\n tenantFacingWebsites: 'Tenant Facing Websites',\r\n thirdPartyVendors: 'Third Party Vendors',\r\n selectAllowedPeriod: 'Select allowed periods for',\r\n alwaysAssess: 'Always assess',\r\n daysEarly: 'days early',\r\n daysProrateCalculation: 'Days For Prorate Calculation',\r\n consider: 'Consider',\r\n roundingType: 'Rounding Type',\r\n roundingTypeForProrate: 'Rounding Type for Prorate',\r\n syrasoftFacilitate: 'Syrasoft Facilitate',\r\n rentalConfigRemoveWarningHeading: 'Changes made to the periods supported.',\r\n rentalConfigRemoveWarning: 'We will be removing the unsupported period rates if already configured by any unit type. Are you sure about the changes?',\r\n\r\n // Rental Configuration\r\n configureReservation: 'Configure Reservation',\r\n reserveUpto: 'User/Tenant can reserve upto',\r\n reviewReservations: 'Review reservations that have past expected move in dates',\r\n reservationCharge: 'Reservation Charge',\r\n isTheReservationDeposit: 'Is the Reservation Deposit:',\r\n howToChargeReservationDeposit: 'How do you want to charge Reservation Deposit?',\r\n wouldCancellationBe: 'Would Cancellation be:',\r\n deactivateTenantOrLedger: 'De-activate Tenant and/or Ledger',\r\n reservationDepositInfo: 'Charged on Reservation with the system defined charge category. This is refundable.',\r\n lockReservationRatesInfo: 'The following will be locked at the time of reservation',\r\n configureMoveOut: 'Configure Move out',\r\n noticeBeforeMoveOut: 'Notice Before Move Out',\r\n noticeDays: 'Notice Days:',\r\n balanceOrRefundResolution: 'Balance/ Refund Resolution',\r\n resolveChargesBy: 'Resolve Charges By',\r\n balanceDue: 'Balance Due',\r\n creditDue: 'Credit Due',\r\n deactivateTenantAfterMoveOut: 'Do you want to deactivate tenant on moveout ?',\r\n chargeOnMoveOut: 'Charged on Move out with the charge category mapped to this field.This is not refundable.',\r\n websites: 'Websites',\r\n kiosk: 'Kiosk',\r\n\r\n // RTNS Snackbar\r\n refresh: 'Refresh',\r\n override: 'OVERRIDE',\r\n keepCurrentChanges: 'Keep Current Changes',\r\n wsUpdateMessage: 'Some Content of this resource has been modified by another client, What would you like to do?',\r\n wsCreateMessage: 'A new record has been created, please refresh to see the changes',\r\n rtnsBlockedSave: 'Some other client modified the critical information, please click on the refresh button',\r\n\r\n // move in configuration\r\n moveInConfigure: 'Configure Move In',\r\n anniversary: 'Anniversary',\r\n prorateFirst: 'Prorate first period',\r\n billNextPeriod: 'Bill the next period after',\r\n prorateSecond: 'Prorate second period',\r\n selectLetterTemplate: 'Select Letter Template',\r\n chargeOnMoveIn: 'Charged on Move in with the charge category mapped to this field. This is not refundable.',\r\n tenantDepositCategory: 'Tenant Deposit Category',\r\n rentalDepositCategory: 'Rental Deposit Category',\r\n\r\n // pay till\r\n payTill: 'Pay Till',\r\n amountToBePaid: 'Amount to be paid',\r\n billAheadError: 'There is an error from our side in creating all the charges, Please contact tech support',\r\n generating: 'Generating',\r\n generateBills: 'Generate Bill',\r\n successfulBillGeneration: 'Bills were successfully generated',\r\n noBills: 'No Bills To Be Generated',\r\n\r\n // Payment Configuration\r\n paymentConfigurationLabel: 'Payment General Configuration',\r\n validatePaymentsOver: 'Show warning if payments are over',\r\n allowPrepay: 'Allow Prepay',\r\n billFutureDates: 'Generate bill for future dates',\r\n receipts: 'Receipts',\r\n facilityCopy: 'Facility Copy',\r\n tenantCopy: 'Tenant Copy',\r\n showOnReceipt: 'Show on Receipt',\r\n enterHstNumber: 'Enter HST number',\r\n enterPstNumber: 'Enter PST number',\r\n enterGstNumber: 'Enter GST number',\r\n deliverBy: 'Deliver By',\r\n tenantFacing: 'Tenant Facing Receipts',\r\n userFacing: 'User Facing Receipts',\r\n depositLogLabel: 'Account number to be shown on the deposit log',\r\n autoPaySwitchLabel: 'Do you want to allow autopay ?',\r\n dontSendReceiptsDuringAutoPay: 'Don\\'t send receipts during autopay',\r\n allowReceiptGeneration: 'Allow Generation of Receipt',\r\n acceptPPFromDelinquentTenants: 'Accept partial payment from delinquent tenants',\r\n taxIntegrationWithReceipt: 'Tax integration with receipt',\r\n showGst: 'Show GST',\r\n showHst: 'Show HST',\r\n showPst: 'Show PST',\r\n allowGenerationOfReceipts: 'Allow generation of receipts to utilise this feature',\r\n\r\n\r\n // Manual Late Event\r\n applied: 'applied',\r\n events: 'Events',\r\n apply: 'Apply',\r\n clearAll: 'Clear All',\r\n noManualLateEvent: 'No Late Events Found',\r\n waive: 'Waive',\r\n unwaive: 'Unwaive',\r\n lateSince: 'Late Since',\r\n eventDescription: 'Event Description',\r\n lateFee: 'Late Fee',\r\n action: 'Action',\r\n noFiltersFound: 'No Filters Found',\r\n processEvents: 'Process Events',\r\n eventsToBeProcessed: 'Events to be processed',\r\n eventsToBeWaived: 'Events to be waived',\r\n eventsProcessed: 'Events Processed',\r\n eventsFailed: 'Events Failed',\r\n eventsWaived: 'Events Waived',\r\n processingEvents: 'Processing Events',\r\n errorProcessingEvents: 'Error Processing Events',\r\n\r\n // Filters And Sorts\r\n sortBy: 'Sort By',\r\n advancedFilter: 'Advanced Filter',\r\n atleastOneUnit: 'Show Rented Tenants',\r\n moveInBetween: 'Expected Move In Date Between',\r\n appointmentBetween: 'Appointment Date Between',\r\n clearDate: 'Clear Dates',\r\n autopayEnabledWithoutToken: 'Without Saved Card',\r\n\r\n // Unit type\r\n categoryLabel: 'CATEGORY',\r\n setupFeeLabel: 'SETUP FEE',\r\n unitTypeHeader: 'Unit Type',\r\n monthLabel: 'Month',\r\n moveInCharges: 'Move In Charges',\r\n depositLabel: 'Deposit',\r\n configurePeriod: 'Configure Period',\r\n rentSliderNote: 'NOTE: Enabling rent slider will help facility to change rates of the unit automatically based on the number of',\r\n rentedUnits: 'rented Units',\r\n lowerLimit: 'Lower Limit',\r\n higherLimit: 'Higher Limit',\r\n setLimitBasedOn: 'Set Limit Based On',\r\n limitInfo: 'Defined the occupation stats that triggers the rental rates to change.',\r\n overbookByInfo: 'The limit upto which reservations can be overbooked.',\r\n premiumRateInfo: 'The premium rental rates are added to the actual rate when the occupancy stats goes above the higher limit.',\r\n discountRateInfo: 'The discount rental rates are subtracted from the actual rate when the occupancy stats goes below the lower limit.',\r\n cannotIncreaseDiscount: 'Discount cannot be more than',\r\n periodRate: 'Period Rate',\r\n\r\n // configuration inheritance\r\n systemConfigs: 'SYSTEM CONFIGS',\r\n normalConfigs: 'NORMAL CONFIGS',\r\n systemFacility: 'System facility',\r\n systemBusinessGroup: 'System Business Group',\r\n revertChanges: 'Revert Changes',\r\n\r\n // Tenant Documentation\r\n deliveredDocuments: 'Delivered Documents',\r\n delivering: 'Delivering',\r\n reDelivering: 'Re-Delivering',\r\n deliver: 'Deliver',\r\n issuedDate: 'Issued Date',\r\n delivered: 'Documents are re-delivered Successfully',\r\n noDocuments: 'No Documents Found',\r\n generateDocuments: 'Generate Documents',\r\n style: 'Style',\r\n tillDate: 'Till Date',\r\n reDeliver: 'Re-Deliver',\r\n deliveredLabel: 'Delivered',\r\n\r\n // User Role RTNS\r\n wsUserRoleCreateMessage: 'There are updates to User Roles list',\r\n wsUserRoleUpdateMessage: 'There are updates to this role',\r\n\r\n // Delinquency List\r\n delinquencyListEmpty: 'No Delinquency Found',\r\n delinquencyListNumberOfDaysLate: 'NO OF DAYS LATE',\r\n delinquencyListLastContacted: 'LAST CONTACTED',\r\n delinquencyListDaysAgo: '(DAYS AGO)',\r\n delinquencyListLastContactedVia: 'CONTACTED VIA',\r\n delinquencyStatus: 'STATUS',\r\n balanceOwed: 'Balance Owed',\r\n viewStatusHistory: 'View status history',\r\n statusHistory: 'Status history',\r\n eventStatus: 'Event status',\r\n noOfDaysLateDesc: 'No. of Days Late (Descending)',\r\n noOfDaysLateAsc: 'No. of Days Late (Ascending)',\r\n tenantNameAsc: 'Tenant Name (Ascending)',\r\n tenantNameDesc: 'Tenant Name (Descending)',\r\n notProcessed: 'Not Processed',\r\n viewHistory: 'View history',\r\n currentStatus: 'Current status',\r\n daysAgo: 'days ago',\r\n delinquencyContactLogErrorMessage: 'Failed to retrieve last contacted details',\r\n\r\n // Delinquency Filter\r\n enterStartDay: 'Enter Start Day',\r\n enterEndDay: 'Enter End Day',\r\n minimumAmount: 'Minimum Amount',\r\n maximumAmount: 'Maximum Amount',\r\n enterNumbers: 'Enter Number',\r\n lastContacted: 'Last Contacted',\r\n clearAmount: 'Clear Amount',\r\n clearDays: 'Clear Days',\r\n contactedVia: 'Contacted Via',\r\n valueMustBeLessThan: 'Value must be less than',\r\n valueMustBeMoreThan: 'Value must be more than',\r\n lastContactedDetails: 'Last contacted details',\r\n\r\n // BEV RTNS\r\n levelAdded: 'A new level has been added',\r\n levelDeleted: 'A level has been deleted',\r\n levelNameChanged: 'A level\\'s name has been changed',\r\n unitAdded: 'New Unit have been added',\r\n unitLayoutChanged: 'There was some changes made to the unit layouts',\r\n unitStatusChanged: 'Some of the unit\\'s status have been updated',\r\n reservationMade: 'A reservation has been made',\r\n ledgerChanged: 'Ledger updated',\r\n\r\n // Configuration RTNS\r\n wsConfigurationUpdateMessage: 'There are updates to this config !',\r\n wsConfigurationCreateMessage: 'There are updates to this list !',\r\n\r\n // Payment RTNS\r\n wsPaymentUpdateMessage: 'There are updates to the ledger balance.',\r\n wsTenantInfoUpdateMessage: 'There are updates to the tenant information',\r\n wsPaymentMethodUpdateMessage: 'There are updates to the payment method.',\r\n wsPromoPlanUpdateMessage: 'There are updated to promo plan configuration',\r\n\r\n // Tenant/Ledger RTNS\r\n wsViewTenantUpdateMessage: 'There are updates in the tenant information',\r\n wsBalanceUpdatingMessage: 'Updating Ledger Balance',\r\n\r\n // Reservation RTNS\r\n wsReservationRentedMessage: 'This unit got rented. Do you want still continue reservation',\r\n\r\n // Move-In RTNS\r\n wsMoveInRentedMessage: 'Unit is rented',\r\n changeUnit: 'Change Unit',\r\n wsConfigUpdateMessage: 'There has been some changes to the config',\r\n wsUnitAvailabilityMessage: 'Unit is unavailable. Cannot move in to this unit',\r\n wsTenantUpdatedMessage: 'Tenant information updated',\r\n wsUnitDeactivatedMessage: 'Unit has been deactivated !',\r\n\r\n // Move-Out RTNS\r\n wsRentalInfoUpdateMessage: 'Rental Information is updated',\r\n wsBillingInfoUpdateMessage: 'There were changes to billing information',\r\n wsUnitMovedOutMessage: 'This unit is already moved out ',\r\n\r\n // Reload Text\r\n updateProrate: 'Update Prorate',\r\n recalculateTotal: 'Recalculate Total',\r\n updateNextPayableAmount: 'Update Next Amount Payable',\r\n\r\n result: 'Result',\r\n results: 'Results',\r\n found: 'Found',\r\n\r\n // Lease Configuration\r\n leaseGeneral: 'Lease General',\r\n nextLeaseNumber: 'Next Lease Number',\r\n leaseDocument: 'Lease Document',\r\n renewalPeriod: 'Renewal Period',\r\n months: 'Months',\r\n deliveryOption: 'Delivery Option',\r\n addendum: 'Addendum',\r\n leaseRenewal: 'Lease Renewal',\r\n delivery: 'Delivery',\r\n document: 'Document',\r\n\r\n // Facility General Config\r\n facilityId: 'Facility ID',\r\n facilityName: 'Name',\r\n managerName: 'Manager\\'s Name',\r\n abbreviation: 'Abbreviation for Facility',\r\n enableMessaging: 'Enable Messaging Service number',\r\n areaCodeThreeDigits: 'Area Code should be at most 3 digits',\r\n areaCode: 'Area Code',\r\n timezone: 'Timezone',\r\n otherPhone: 'Other Phone',\r\n facilityIdentification: 'Identify Facility As',\r\n enterEmail: 'Enter Email Address',\r\n tenantDefaultAddress: 'Tenant\\'s Default Address',\r\n enterName: 'Enter Name Here',\r\n enterAddressLine1: 'Enter Address Line 1 Here',\r\n enterAddressLine2: 'Enter Address Line 2 Here',\r\n enterCity: 'Enter City Here',\r\n enterState: 'Enter State Here',\r\n enterZip: 'Enter Zip Here',\r\n enterPhoneNumber: 'Enter Phone Number Here',\r\n enterFaxNumber: 'Enter Fax Number Here',\r\n enterOtherPhone: 'Enter Other Phone Number Here',\r\n enterManagerName: 'Enter Manager\\'s Name Here',\r\n selectTimezone: 'Select TimeZone Here',\r\n enterAbbreviation: 'Enter Abbreviation Here',\r\n enterAreaCode: 'Enter Area Code Here',\r\n enterEmailHere: 'Enter Email Address Here',\r\n registerNumber: 'Register Number',\r\n verifyEmail: 'Verify Email',\r\n preEmailVerification: 'Please verify the email to utilise email \\nservices',\r\n emailVerification: 'Email Verification',\r\n emailVerificationDelivered: 'Verification email has been \\ndelivered',\r\n emailVerificationResend: 'Resend Verification Email',\r\n emailSent: 'A verification email has been sent to the mentioned email address. Please verify in order to start the email service.',\r\n pendingWarning: 'Email verification pending for this email',\r\n emailVerificationExpired: 'Verification link has expired. Please \\nretry verification',\r\n reRegisterNumber: 'Re-Register Number',\r\n cityName: 'City Name',\r\n facilityNameOption: 'Facility Name',\r\n sureWillCheck: 'Sure, will check',\r\n clickHere: 'Click Here ',\r\n toResend: 'to resend',\r\n emailPrefixTooltip: 'Email will be sent using the prefix entered below with @syrasoft.com as the domain name',\r\n facilityEmail: 'Facility Email',\r\n companyVertical: 'Company Vertical',\r\n enterCompanyWebsite: 'Enter the company website',\r\n einSlashTaxId: 'EIN/Tax ID',\r\n enterEinSlashTaxId: 'Enter EIN/Tax ID',\r\n einIssuingCountry: 'EIN Issuing Country',\r\n legalEntityType: 'Legal Entity Type',\r\n enterLegalEntityType: 'Enter the legal entity type',\r\n textRegistrationFormTitle: 'Please fill in the required information to complete the registration process',\r\n textRegisterDisabledMessage: 'Facility phone and email are required for number registration',\r\n textNumberNotYetVerified: 'Number is not yet verified from the vendor. It might take few more days.',\r\n textNumberVerified: 'Number is now verified for messaging.',\r\n\r\n // Pending Tasks Related\r\n pendingTasks: 'Pending Tasks',\r\n\r\n // To Do List Related\r\n todoList: 'To Do List',\r\n hurray: 'Hurray !',\r\n printFailures: 'Print Failures',\r\n printFailuresSubtitle: 'Captures all document which failed to print.',\r\n pendingInvoiceDelivery: 'Pending Invoice Delivery',\r\n pendingInvoiceDeliverySubtitle: 'Invoice that were generated but not delivered',\r\n nothingPendingForCurrentDay: 'Nothing pending for the current day',\r\n pendingOverlockUnlock: 'Pending Overlock/ Unlock',\r\n pendingOverlockUnlockTaskSubtitle: 'Captures all the units with pending statuses of overlock / unlock',\r\n restockInventory: 'Restock Inventory',\r\n restockInventoryTaskSubtitle: 'Captures all the inventory items which need to be restocked',\r\n inventoryAuditTaskSubtitle: 'Captures all the pending inventory audits',\r\n applyLateEvents: 'Apply Late Events',\r\n applyLateEventsTaskSubtitle: 'Captures all the tenants who’ve been late to pay the rent',\r\n pastDueReservation: 'Past Due Reservations',\r\n pastDueReservationTaskSubtitle: 'Captures all past reservations that are not converted to a move in',\r\n noPendingOverlockUnlockUnits: 'No Pending Overlock/ Unlock Units',\r\n automaticCreditCardDeclines: 'Automatic Credit Card Declines',\r\n noAutomaticCreditCardDeclines: 'No Automatic Credit Card Declines',\r\n numberOfTimesReprocessed: 'No. of times re-processed',\r\n emailVerificationPending: 'Email Verification Pending',\r\n emailVerificationPendingHeader: 'Using the product without verifying your email may lead to potential issues and limitations in accessing certain functionalities.',\r\n emailVerificationPendingBody: 'How to Verify Your Email:',\r\n emailVerificationStepOne: 'Check your inbox for an email from us with the verification link.',\r\n emailVerificationStepTwo: 'Click on the provided link to confirm your email address.',\r\n emailVerificationStepThree: 'If you haven\\'t received the verification email, please check your spam folder or request a new verification email by clicking on',\r\n emailVerificationStepFour: 'If you don’t want to utilise the email service remove Email.',\r\n resendVerificationEmail: 'Resend Verification Email',\r\n creditCardsAboutToExpire: 'Credit cards about to expire',\r\n invalidGateAccessCode: 'Invalid Gate Access Code',\r\n ledgersWithInvalidAccessCode: 'Ledgers with Invalid Gate Access Code',\r\n unitsWithInvalidAccessCode: 'Units with Invalid Gate Access Code',\r\n noLedgersFound: 'No Ledgers Found',\r\n noUnitsFound: 'No Units Found',\r\n oldAccessCode: 'OLD ACCESS CODE',\r\n autoGenerateCode: 'Auto Generate Code',\r\n rtnsFacilityConfigMessage: 'Gate configuration has been updated. Please click on refresh.',\r\n\r\n // Reminders Related\r\n reminder: 'Reminder',\r\n reminders: 'Reminders',\r\n createReminder: 'Create Reminder',\r\n editReminder: 'Edit Reminder',\r\n reminderDate: 'Reminder Date',\r\n recurringStatus: 'Recurring status',\r\n rCode: 'Rcode',\r\n addTitle: 'Add Title',\r\n reminderCreated: 'Reminder Created Successfully',\r\n reminderUpdated: 'Reminder Updated Successfully',\r\n reminderDeleted: 'Reminder Deleted Successfully',\r\n reminderEmptyDayViewText: 'You don\\'t have reminders set for today.',\r\n reminderEmptyDayViewCreateText: 'To get started, simply use the \\'Create Reminder\\' button at the top.',\r\n reminderEndDateInfoText: 'Date till when reminder will be active',\r\n\r\n // External Activity Related\r\n externalActivity: 'External Activity',\r\n comingSoon: 'Coming Soon!',\r\n\r\n unitsProcessedSuccessfully: 'Units Processed Successfully',\r\n someUnitsProcessingFailed: 'Some Units Could Not Be Processed',\r\n processing: 'Processing',\r\n\r\n // Invoicing\r\n invoicing: 'Invoicing',\r\n enableAutoInvoicing: 'Enable Auto Invoicing',\r\n nextInvoiceNumber: 'Next Invoice Number',\r\n daysBeforeRentAssessment: 'No of days ahead of rent assessment',\r\n invoiceMailing: 'Invoice Mailing',\r\n feeForMailing: 'Fee for Mailing',\r\n partialPayment: 'Partial Payment',\r\n chargesDueReport: 'charges due report ',\r\n wantToGenerate: 'Do you want to generate ',\r\n forPartialPayment: 'for the partial payment?',\r\n reportStyle: 'Report Style',\r\n sortOrder: 'Sort Order',\r\n report: 'Report',\r\n min0: 'Value must be more than 0',\r\n max30: 'Value must be less than 30',\r\n sendInvoice: 'Send Invoice',\r\n invoiceForZeroBalance: 'invoice for zero balance?',\r\n noOfDaysAheadOfRentAssessment: 'No of days ahead of rent assessment ',\r\n invoiceToDate: 'Invoice To Date',\r\n invoiceTo: 'Invoice To',\r\n selectInvoiceToDate: 'Select Invoice To Date',\r\n sendInvoiceBefore: 'Send Invoice Before',\r\n daysOfRentAssessment: 'days of rent assessment',\r\n invoiceAlreadyScheduled: 'Invoice is already scheduled for delivery.',\r\n wantToCancelScheduled: 'Do you want to cancel the scheduled one?',\r\n wantToCancelScheduledAndSendNew: 'Do you want to cancel the scheduled one and send the new one?',\r\n sendNewInvoice: 'SEND NEW INVOICE',\r\n doNotCancelSchedule: 'DON\\'T CANCEL SCHEDULE',\r\n cancelScheduledInvoice: 'CANCEL SCHEDULED INVOICE',\r\n okay: 'Okay',\r\n greaterThanZero: 'This should be greater than zero',\r\n sendNotice: 'Send Notice',\r\n invoiceAlreadySent: 'Invoice has already been sent to the tenant. You cannot make this change now.',\r\n invoiceDeliveryType: 'Invoice Delivery Type',\r\n\r\n // NSF\r\n nsfSuccess: 'NSF Fees applied successfully',\r\n isNsfRequired: 'Do you want to apply NSF fees for this AR?',\r\n\r\n // Gate Config\r\n gates: 'Gates',\r\n label: 'Label',\r\n selection: 'Selection',\r\n performInitialLoad: 'Perform Initial Load',\r\n downloadUnitList: 'Download Unit List',\r\n downloadUnitListMessage: `Download the CSV containing unit list and email it to shawn.neily@janusintl.com to \r\n complete the onboarding process. Also mention UNIQUE_SITE_ID = v11 facility id in the email`,\r\n archiveGateUpdateFiles: 'Archive Gate Update Files',\r\n product: 'Product',\r\n digiGate: 'Digi Gate',\r\n PTIGate: 'PTI Gate',\r\n PTIFalconGate: 'PTI Falcon Gate',\r\n openTechGate: 'Open Tech Gate',\r\n doorKingGate: 'Door King Gate',\r\n nokeGate: 'Noke Gate',\r\n spiderDoor: 'Spider Door',\r\n kpc: 'KPC',\r\n storGuard: 'StorGuard',\r\n gateSpecifications: 'Gate specifications',\r\n minCodeLength: 'Minimum Code Length',\r\n maxCodeLength: 'Maximum Code Length',\r\n validRange: 'Valid Range',\r\n allowCodeReuse: 'Allow Code Reuse',\r\n siteKey: 'Site Key',\r\n siteCode: 'Site Code',\r\n operUsername: 'Operator Username',\r\n operPassword: 'Operator Password',\r\n apiKey: 'API Key',\r\n apiSecret: 'API Secret',\r\n siteId: 'Site Id',\r\n note: 'Note',\r\n gateCodeReuse: '1. Gate codes should only be reused with a FOB device or similar process.',\r\n tenantShouldNotHaveAccessCode: `After move-out previous tenants should not have access to the \r\n facility using their old access code.`,\r\n gateCodeClear: '2. We\\'ll always clear access code as part of move out',\r\n zoneSettings: 'Zone Settings',\r\n openTechCloudCredentials: 'Open Tech Cloud Credentials',\r\n ptiCloudCredentials: 'PTI Cloud Credentials',\r\n spiderDoorCredentials: 'Spider Door Credentials',\r\n doorKingCredentials: 'Door King Credentials',\r\n defaultTimeZone: 'Default Time Zone',\r\n nokeGateCredentials: 'Noke Gate Credentials',\r\n defaultKeypadZone: 'Default Keypad Zone',\r\n keypadZoneRange: 'Keypad Zone Range',\r\n notValidRange: 'Not valid range',\r\n invalidMinRangeLength: 'Invalid min range length',\r\n invalidMaxRangeLength: 'Invalid max range length',\r\n initiated: 'Initiated',\r\n\r\n clearNewLedger: 'Clear newly created Ledger?',\r\n switchToAnotherLedger: 'Switching to another ledger, do you want to clear the newly created ledger?',\r\n discardLedger: 'DISCARD LEDGER',\r\n keepLedger: 'KEEP LEDGER',\r\n notInRange: 'Not in range',\r\n duplicateAccessCode: 'Duplicate Access Code',\r\n gateAccessCode: 'Gate Access Code',\r\n outOfRange: 'Out of Range',\r\n invalidCodeLength: 'Invalid Code Length',\r\n invalidCodeType: 'Invalid Code Type',\r\n gate: 'Gate',\r\n gateLockedOut: 'Gate Locked Out',\r\n gateLocked: 'Gate Locked',\r\n gateUnlocked: 'Gate Unlocked',\r\n gateCodeActive: 'Gate Code Active',\r\n shouldProvideAccess: 'Do you want to give gate access to this tenant ?',\r\n lockAccess: 'Do you want to gate lockout this tenant ?',\r\n maximumLimitReached: 'Maximum limit reached',\r\n invalidRange: 'Invalid Range',\r\n\r\n recurringCharges: 'Recurring Charges',\r\n recurringChargeDescription: 'Enter the description for the charge',\r\n enterDate: 'Enter Date',\r\n chargeType: 'Charge Type',\r\n addRecurringCharge: 'Add Recurring Charge',\r\n recurringChargesUpdated: 'Recurring Charges are updated for this unit',\r\n noRecurringCharges: 'There are no recurring charges for this unit',\r\n exceeds100Percent: 'Cannot exceed 100%',\r\n percentageOfUnitRate: 'Percentage of Unit Rate',\r\n\r\n // ACH configuration\r\n ach: 'Ach',\r\n achConfiguration: 'ACH Configuration',\r\n selectAchProvider: 'Select ACH provider',\r\n achProvider: 'ACH provider',\r\n bankName: 'Bank Name',\r\n enterBankName: 'Enter name of the bank for the Facility',\r\n bankAccountNumber: 'Bank Account Number',\r\n enterOnlyNumbers: 'Enter only numbers',\r\n bankRoutingNumber: 'Bank Routing Number',\r\n immediateDestinationId: 'Immediate Destination ID',\r\n immediateDestinationName: 'Immediate Destination Name',\r\n enterImmediateDestinationName: 'Enter Immediate Destination Name',\r\n immediateOriginId: 'Immediate Origin Id',\r\n immediateOriginName: 'Immediate Origin Name',\r\n enterImmediateOriginName: 'Enter Immediate Origin Name',\r\n useRouting: 'Use Routing for header',\r\n downloadFilePath: 'Download File Path',\r\n egFilePath: 'Eg: C:/Users/Downloads/',\r\n routingNumberPlaceHolder: '012345678',\r\n useAchOnFile: 'Use ACH On File',\r\n\r\n // conversations\r\n conversations: 'Conversations',\r\n textMessages: 'Text Messages',\r\n searchOnCustomerNameNumber: 'search for customer name/ number',\r\n searchOnCustomerNameEmail: 'search for customer name/ email',\r\n compose: 'Compose',\r\n display: 'Display',\r\n dateRange: 'Date Range',\r\n unreadMessages: 'Unread Messages',\r\n readMessages: 'Read Messages',\r\n yesterday: 'Yesterday',\r\n replyHere: 'Reply to the text here',\r\n composeNewMessage: 'Compose New Message',\r\n lessThan1024: 'Text entered should be between 3 and 1024 characters',\r\n lessThan160: 'Text entered should be between 3 and 160 characters',\r\n retry: 'Retry',\r\n viewThread: 'View Thread',\r\n reply: 'Reply',\r\n subject: 'Subject',\r\n send: 'Send',\r\n sending: 'Sending',\r\n noOfSubject: 'No. of subjects',\r\n recentSubject: 'Recent subject',\r\n attachment: 'Attachment',\r\n sentTo: 'Sent to',\r\n successfullySent: 'Message sent successfully.',\r\n unreadTextOrEmail: 'Unread Email / Text Message',\r\n\r\n // Transfer Config\r\n transfer: 'Transfer',\r\n chargeFeeOnTransfer: 'Do you want to charge fee on transfer?',\r\n transferFee: 'Transfer Fee',\r\n transferDocument: 'Transfer Document',\r\n additionalCopies: 'Additional Copies',\r\n unitTransfer: 'Unit Transfer',\r\n\r\n // Ach Operation\r\n achOperations: 'ACH Operations',\r\n currentBatch: 'VIEW CURRENT BATCH',\r\n allBatch: 'VIEW ALL BATCHES',\r\n submitBatch: 'Submit Batch',\r\n transactionId: 'TRANSACTION ID',\r\n achEffectiveDate: 'EFFECTIVE DATE',\r\n batchSubmitted: 'Batch has been submitted successfully\\nDo you want to download it?',\r\n yesDownload: 'YES, Download',\r\n notNow: 'NOT NOW',\r\n batchNumber: 'BATCH NUMBER',\r\n batchCreatedDate: 'BATCH CREATED DATE',\r\n downloadFile: 'Download file',\r\n batchTransactions: 'Batch Transactions',\r\n batchBetween: 'Batch Created Date Between',\r\n occupancyHistory: 'Occupancy History',\r\n useTenantAddress: 'USE TENANT ADDRESS',\r\n\r\n // Batch Payment\r\n batchPayment: 'Batch Payment',\r\n creditCardBatch: 'Credit Card Batch',\r\n creditCardBatchListEmpty: 'No Credit card batches found.',\r\n achBatchListEmpty: 'No ACH batches found.',\r\n selectMode: 'Select mode',\r\n batchCreatedBetween: 'Batch created between',\r\n otherBatches: 'Cash/Check/Money order Batch',\r\n otherBatchListEmpty: 'No batch payments found.',\r\n achBatch: 'ACH Batch',\r\n\r\n openLedgerReview: 'Do you want to sell the items in the cart before moving\\nto the ledger review ?',\r\n noStayHere: 'No, Stay here',\r\n yesSell: 'YES, Sell',\r\n chargeCategoryCaps: 'CHARGE CATEGORY',\r\n dateCaps: 'DATE',\r\n amountCaps: 'AMOUNT',\r\n\r\n // Account Management\r\n showAllAccounts: 'Show All Accounts',\r\n deleteAccount: 'Delete Account',\r\n searchBy: 'Search By',\r\n working: 'You are working with',\r\n liveData: 'LIVE DATA',\r\n beCautious: 'Be cautious!',\r\n deleteFacility: 'Delete Facility',\r\n editAccount: 'Edit Account',\r\n createFacility: 'Create Facility',\r\n\r\n // Unit Transfer\r\n unitSelection: 'Unit Selection',\r\n moveOutOf: 'Move Out Of',\r\n moveInTo: 'Move In To',\r\n transferDate: 'Transfer Date',\r\n additionalRent: 'Additional Rent',\r\n totalTransferCost: 'Total Transfer Cost',\r\n proratedRent: 'Prorated Rent',\r\n netChange: 'Net Change',\r\n newUnit: 'New Unit',\r\n transferredFrom: 'transferred from',\r\n postUnitTransfer: 'POST UNIT TRANSFER',\r\n unitRentAssessmentPending: 'This unit has pending rent assessment',\r\n noOfDaysLeft: 'No. of days left',\r\n ratePerDay: 'Rate / Day',\r\n billsUpdated: 'There are updates to the bills',\r\n updating: 'Updating',\r\n\r\n // Business Group Management Related\r\n backToOverview: 'Back to overview',\r\n accountName: 'Account Name',\r\n businessGroupCreateError: 'Business Group Create Failed',\r\n businessGroupCreateSuccess: 'Business Group Created Successfully',\r\n businessGroupUpdateError: 'Business Group Update Failed',\r\n businessGroupUpdateSuccess: 'Business Group Updated Successfully',\r\n businessGroupPermissions: 'Users can create, edit business groups and move facilities between business groups',\r\n\r\n // Tenant Facing Websites\r\n tenantWebsites: 'Tenant Websites',\r\n origin: 'Origin',\r\n enabled: 'Is Enabled',\r\n deliverSignUpLink: 'Deliver Sign Up Link',\r\n deliverTenantSignUpLink: 'Deliver Tenant Sign Up Link',\r\n sendActionToAllEnabledTenants: 'This action will send the sign-up link to all {} enabled tenants. ',\r\n pleaseEnableTextOrEmail: 'Please enable email or text to utilize this feature',\r\n signUpLinksDeliveredSuccessfully: 'Tenant sign up link delivered successfully.',\r\n paymentMethodOptions: 'Payment Method Options',\r\n autoPayManagement: 'Auto Pay Management',\r\n allowCreditCardPayment: 'Allow credit card payment',\r\n allowAchPayment: 'Allow ACH payment',\r\n allowSignUpForAutoPay: 'Allow sign up for autopay',\r\n allowTenantsToOptOutForAutoPay: 'Allow tenants to opt out for autopay',\r\n balanceManagement: 'Balance Management',\r\n allowPartialPayment: 'Allow partial payment',\r\n allowPrePayment: 'Allow pre-payment',\r\n enterWebsiteUrl: 'Enter website URL',\r\n generalSettings: 'General Settings',\r\n unitTypes: 'Unit Types',\r\n currentRate: 'Current Rate',\r\n currentRateDescription: 'User can modify the current rate of a unit',\r\n webRate: 'Web Rate',\r\n unitTypeDisplayLabel: 'Unit Type Display Label',\r\n enterLabel: 'Enter Label',\r\n enterWebRate: 'Enter Web Rate',\r\n selectGroup: 'Select Group',\r\n webRentalPeriod: 'Web Rental Period',\r\n refundable: 'Refundable',\r\n emailNotConfigured: 'Email not configured for Tenant',\r\n noteForTFWAccountAlreadyExists: 'Tenant already has an account',\r\n viewRates: 'View Rates',\r\n productionWebsiteUrl: 'Production Website URL',\r\n stagingWebsiteUrl: 'Staging Website URL',\r\n creditCardPaymentNotConfigured: 'Credit card payment is not configured for this facility',\r\n achNotConfigured: 'Please configure ACH settings to use this',\r\n autoPayNotEnabledForFacility: 'Autopay is not enabled for this facility',\r\n prepaymentNotEnabledForFacility: 'Prepayment is not enabled for this facility',\r\n emailForTenantSignUp: 'Email for Tenant sign up',\r\n emailBody: 'Email body',\r\n customizeEmailTemplate: 'Customize email template',\r\n customizeEmail: 'Customize email?',\r\n\r\n // Internal App Configuration\r\n internalApp: 'Syrasoft Cloud Assist',\r\n standaloneAppDownloadLink: 'Standalone App Download Link',\r\n gateServiceDownload: 'Gate Service Download',\r\n shouldInstallGateService: 'Do you want to download and install gate service provided by Connect?',\r\n noThanks: 'No, Thanks',\r\n download: 'Download',\r\n printer: 'Printer',\r\n reinstall: 'Re-Install',\r\n syrasoftCloudAssist: 'Syrasoft Cloud Assist',\r\n printerSetupDownload: 'Printer Setup Download',\r\n gateSetupDownload: 'Gate Setup Download',\r\n serviceAlreadySetup: 'service is already setup',\r\n syrasoftCloudAssistDownload: 'Syrasoft Cloud Assist Download',\r\n shouldReinstallService: 'Do you want to delete the existing app and re-install again?',\r\n gateServiceNote: 'Note: Please open this configuration where gate software is setup and then download this file',\r\n internalAppMainDescription: 'Enjoy effortless communication with your printers and gates using the Syrasoft Cloud Assist App!With this app, you can access your printers from anywhere, making printing a breeze.\\nIf you have multiple networks in your facility, you can install the app on multiple systems for easy access to all your hardware.',\r\n internalImportantHeading: 'Important',\r\n internalImportantList1: 'For optimal performance, ensure the system(s) where you\\'re installing the Syrasoft Cloud Assist App are always up and running.',\r\n internalImportantList2: 'The app is currently only supported on Windows systems',\r\n internalPleaseReadPara: 'Please read through the following information carefully',\r\n internalPrinterSetupHeading: 'Printer Set-up',\r\n internalPrinterSetupDescription: `Streamline your “print from anywhere” experience with the Syrasoft Cloud Assist App.\r\n The app allows you to easily set up the printers you want to access through Syrasoft Connect software. \r\n Simply install the app and get started with your printer setup.`,\r\n internalGateSetupHeading: 'Gate Set-up',\r\n internalGateSetupBody: `If you have a gate that's compatible with Syrasoft Connect software, simply ,\r\n download the Syrasoft Cloud Assist App on the system where your gate software is set up.\\n\r\n After installation, you'll be able to easily configure your gate and enjoy seamless integration with the Syrasoft Connect software.`,\r\n appDownloadLabel: 'Download the app',\r\n\r\n // Tooltip Info\r\n quickPayTooltip: 'Open quick pay to accept payments',\r\n ledgerReviewTooltip: 'Open ledger review to view AR',\r\n transferTooltip: 'Transfer tenant to another unit',\r\n overlockOrUnlockTooltip: 'Overlock or Unlock a unit depending on payment',\r\n editTenantTooltip: 'Edit tenant details',\r\n moveOutTooltip: 'Move tenant out of a unit',\r\n moveInTooltip: 'Move tenant into a unit',\r\n pointOfSaleTooltip: 'Open Point of Sale to sell to tenant',\r\n documentationTooltip: 'Open Documentation for this tenant',\r\n unlockUnitTooltip: 'Unlock Unit',\r\n lockUnitTooltip: 'Lock Unit',\r\n\r\n\r\n // Rent Adjustment\r\n adjustments: 'Adjustments',\r\n autoRentAdjustment: 'Auto Rent Adjustment',\r\n rentAdjustmentListEmpty: 'No Rent Adjustments Scheduled',\r\n stopRentAdjustment: 'Stop Adjustment',\r\n viewRentAdjustment: 'View Adjustment',\r\n stoppingAdjustment: 'Stopping Adjustment',\r\n stopConfirmationMessage: 'Are you sure you want to stop the adjustment?',\r\n stopConfirmButtonText: 'Yes, stop the adjustment',\r\n stopDeclineButtonText: 'No, I want to keep it',\r\n failedToStopRentAdjustment: 'Failed to stop rent adjustment',\r\n rentAdjustmentStoppedSuccessfully: 'Rent adjustment stopped successfully',\r\n tenantNotification: 'Tenant Notification',\r\n doYouWantToNotifyTheTenant: 'Do you want to notify the tenant?',\r\n sendNotificationToAlternateContact: 'Send the notification to alternate contact as well',\r\n deliveryOptionForTenant: 'Delivery Option for Tenant',\r\n scheduleDelivery: 'Schedule Delivery',\r\n daysBeforeTheAdjustmentTakesPlace: 'Days before the adjustment takes place',\r\n whenDoYouWantToScheduleDelivery: 'When do you want to schedule the delivery',\r\n selectDeliveryOptionForTenant: 'Select a delivery option for the Tenant',\r\n invalidDaysToDeliverBefore: 'Invalid number of days to deliver before',\r\n selectionCriteria: 'Selection Criteria',\r\n schedulingRentAdjustment: 'Scheduling Rent Adjustment',\r\n byUnits: 'By Units',\r\n byTenants: 'By Tenants',\r\n rentalPeriod: 'Rental Period',\r\n selectRentalPeriod: 'Select Rental Period',\r\n basedOnLastAdjustment: 'Tenants who have not been adjusted before',\r\n basedOnOccupancyOver: 'Tenants who have rented over',\r\n adjustmentRate: 'Adjustment Rate',\r\n effectiveDateForRentAdjustment: 'Effective Date For Rent Adjustment',\r\n rounding: 'Rounding',\r\n unitTypeRateSet: 'Unit Type Rate Set',\r\n unitsAffected: 'Units Affected',\r\n standardRate: 'Standard Rate',\r\n netChangeInIncome: 'Net Change In Income',\r\n rentAdjustmentsScheduled: 'Rent adjustments scheduled',\r\n rentAdjustmentScheduledSuccessfully: 'Rent adjustment scheduled successfully',\r\n resolveWarnings: 'Resolve Warnings',\r\n dontResolveWarnings: 'Don\\'t Resolve Warnings',\r\n resolveWarningsConfirmMessage: 'This action cannot be undone. Are you sure you want to continue?',\r\n rentAdjustmentIsAlreadyScheduled: 'Rent Adjustment is already scheduled',\r\n increaseInRateExceeds: 'Increase in rate exceeds',\r\n percentOfCurRate: '% of current rate',\r\n invoicedToDateIsAfterRentAdjustmentDate: 'Invoiced to date is after adjustment date',\r\n newRateExceedsStdRate: 'New Rate exceeds standard rate',\r\n unresolvedUnits: 'Unresolved Units',\r\n resolutionOptions: 'Resolution Options',\r\n resolveAffected: 'Resolve Affected',\r\n resolveAllBy: 'Resolve All By',\r\n resolveBy: 'Resolve By',\r\n nextInvoicedDate: 'Next Invoiced Date',\r\n adjustmentDate: 'Adjustment Date',\r\n adjustmentAmount: 'Adjustment Amount',\r\n nextEffectiveRate: 'Next Effective Rate',\r\n unitsSelected: 'Units Selected',\r\n unitsToBeAffected: 'Units to be affected',\r\n tenantDetails: 'Tenant Details',\r\n effectiveRate: 'Effective Rate',\r\n nextRecurringCharge: 'Next Recurring Charge',\r\n nextAdjustedRate: 'Next Adjusted Rate',\r\n lastIncreaseDate: 'Last Increase Date',\r\n nextIncreaseDate: 'Next Increase Date',\r\n childId: 'Child Id',\r\n parentId: 'Parent Id',\r\n timeWindow: 'Time window',\r\n scheduled: 'Scheduled',\r\n tenantAndUnitInformation: 'Tenant and Unit Information',\r\n schedulingInformation: 'Scheduling Information',\r\n lastAdjustmentDate: 'Last Adjustment Date',\r\n rentAdjustmentAlreadyScheduled: 'There is already a pending adjustment. Do you want to schedule a new adjustment?',\r\n exitRentAdjustment: 'Exit Rent Adjustment',\r\n\r\n\r\n // Retail Sale - Returns\r\n returns: 'Returns',\r\n refundToTenantBalance: 'Refund to Tenant Balance',\r\n returnAndRefund: 'Return and Refund',\r\n purchaseOrder: 'Purchase order',\r\n receiptNumber: 'Receipt number',\r\n purchaseDate: 'Purchase Date',\r\n howDoYouWantToProceedWithRefund: 'How do you want to proceed with refund?',\r\n selectATenantToMakeRefunds: 'Select a tenant to make refunds',\r\n selectDateForPurchaseOrderTableData: 'Please, enter a date to populate the table',\r\n noPurchasesMadeForSelectedDate: 'No Purchases were made on the selected date',\r\n pleaseEnterPurchaseOrderNumberForTableData: 'Please, enter a purchase order number to populate the table',\r\n purchaseOrderSelectionTableEmptyMsgForCustomer: 'No Purchases were made by the selected tenant',\r\n purchaseOrderSelectionTableMsgForCustomerNotSelected: 'Please select a customer to populate the table',\r\n orderDetailsTableEmptyMsg: 'Returns table is empty. Please, select one of the options above to populate the table',\r\n failedToActivate: 'Failed to activate',\r\n activatedSuccessfully: 'Activated successfully',\r\n quantityPurchased: 'Quantity Purchased',\r\n purchasePrice: 'Purchase Price',\r\n returnQuantity: 'Return Quantity',\r\n refundAmount: 'Refund Amount',\r\n tenantIsDeactivated: 'Tenant is deactivated',\r\n ledgerIsDeactivated: 'Ledger is deactivated',\r\n vendorDeactivated: 'Vendor deactivated',\r\n inventoryDeactivated: 'Inventory deactivated',\r\n invalidQuantity: 'Invalid quantity',\r\n failedReturns: 'Returns - Failed Refunds',\r\n returnedOn: 'Returned On',\r\n refundCancelSuccessful: 'Refund cancelled successfully',\r\n refundCancelFailed: 'Refund cancellation Failed',\r\n returnInventory: 'Users can process returns',\r\n returnInventoryLabel: 'Return Inventory',\r\n\r\n // Refund to tenant balance\r\n returnAndRefundToTenantBalanceSuccess: 'Refund has been successfully added to the tenant balance',\r\n returnAndRefundToTenantBalanceFailed: 'Refund to the tenant balance failed',\r\n // Return and refund\r\n returnOnlySuccess: 'Items have been returned to the inventory successfully',\r\n returnAndRefundSuccess: 'Refund completed successfully',\r\n refundFailed: 'Failed to perform refund. Please, try again.',\r\n refundFailedTitle: 'Refund Failed',\r\n\r\n // insurance\r\n insurance: 'Insurance',\r\n monthlyPremium: 'Monthly Premium',\r\n coverageAmount: 'Coverage Amount',\r\n proratePremium: 'Prorate In',\r\n skipFirstPeriod: 'Skip insurance for first period?',\r\n shouldProrate: 'Do you want to prorate',\r\n the: 'The',\r\n first: 'First',\r\n second: 'Second',\r\n policyNumber: 'Policy ID',\r\n planName: 'Plan Name',\r\n insuranceSaved: 'Insurance Saved Successfully',\r\n seasonalDateFormat: 'MM-DD',\r\n insuranceCancelled: 'Insurance Cancelled Successfully',\r\n\r\n // late Events\r\n lateEventConfigId: 'Late Event Config Id',\r\n lateEvents: 'Late Events',\r\n event: 'Event',\r\n lastApplied: 'Last applied',\r\n nextApplicable: 'Next Applicable',\r\n dayLate: 'Days Late',\r\n noLateEventConfigured: 'No late events configured',\r\n\r\n // Phone Numbers\r\n invalidAreaCode: 'Invalid Area Code',\r\n invalidPhoneNumber: 'Invalid Phone Number',\r\n invalidCountry: 'Invalid Country Code',\r\n totalNumberCheck: 'Total number of digits should be',\r\n\r\n // documentation Field\r\n reprintBatch: 'Reprint Batch',\r\n printDocuments: 'Print Documents',\r\n selectBatch: 'Select Batch',\r\n filterList: 'Filter List',\r\n selectFilter: 'Select Filter',\r\n letterTemplate: 'Letter Template',\r\n letterSelection: 'Letter Selection',\r\n approvedCcPayments: 'Approved CC Payments',\r\n declinedCcPayments: 'Declined CC Payments',\r\n rateAdjustmentDate: 'Rate Adjustment Date',\r\n ccAboutToExpire: 'CC About to expire',\r\n oneTenant: 'One Tenant',\r\n reservationPending: 'Reservation Pending',\r\n deletedTenants: 'Deleted Tenants',\r\n tenantsWithUnits: 'Tenants with Units',\r\n tenantsWithoutUnits: 'Tenants without Units',\r\n emailEnabledTenants: 'Email Enabled Tenants',\r\n filterOptions: 'Filter Options',\r\n paymentVia: 'Payment Via',\r\n minimum: 'Minimum',\r\n maximum: 'Maximum',\r\n optionDaysLate: 'Days Late',\r\n invoiceBatch: 'Invoice Batch',\r\n batch: 'Batch',\r\n batchInformation: 'Batch Information',\r\n documentType: 'Document Type',\r\n subDocumentType: 'Sub Document Type',\r\n ledgerName: 'Ledger Name',\r\n documentName: 'Document Name',\r\n preferredDelivery: 'Preferred Delivery',\r\n printOnly: 'Print Only',\r\n emailOnly: 'Email Only',\r\n showAll: 'Show All',\r\n emailAndPrint: 'Email and Print',\r\n documentsAreSentForReprint: 'Documents Are Sent For Reprint',\r\n documentsAreSentForGeneration: 'Documents Are Sent For Generation',\r\n purchaseOrderSDPlaceholder: 'eg;1890123456',\r\n customerNameSDPlaceholder: 'Search Name',\r\n customiseEmail: 'Customise Email',\r\n customiseTextMessage: 'Customise Text Message',\r\n emailAlertSubtitle: '(When you customise your email message, your recipients will receive both the message and the selected letter.)',\r\n addMessage: 'Add Message',\r\n viewMessage: 'View Message',\r\n emailWillBeSentToEmailEnabled: 'NOTE: Email will be sent to all email enabled tenants.',\r\n mailingLabel: 'Mailing Label',\r\n documentGeneratedSuccess: 'Document generated successfully',\r\n textAlertSubtitle: '(When you customise your Text message, your recipients will receive both the message and their respective document.)',\r\n\r\n\r\n // Insurance Configuration\r\n configureInsurance: 'Configure Insurance',\r\n allowInsurance: 'Allow Insurance options from software',\r\n enableSecondMonthProrate: 'Enable second month prorate',\r\n insuranceProvider: 'Insurance Provider',\r\n selectProvider: 'Select a provider',\r\n insuranceSetup: 'Insurance Setup',\r\n insuranceProviderNumber: 'Insurance Provider Number',\r\n insuranceAgencyCode: 'Insurance Agency Code',\r\n insuranceAgencyCodePlaceholder: 'Enter Agency Code',\r\n insuranceProviderNumberPlaceholder: 'Enter Provider Number',\r\n requirePolicyId: 'Do you require policy id?',\r\n printAddendum: 'Do you want to print the addendum?',\r\n printAddendumNoPolicy: 'Do you want to print the addendum for no policy?',\r\n ratePlan: 'Rate Plan',\r\n selectPlan: 'Select a plan',\r\n scheduleReport: 'Schedule Report',\r\n sendReport: 'Send Report',\r\n selectReportRecurrence: 'Select a report recurrence',\r\n insuranceProviderEmail: 'Insurance Provider Email',\r\n insuranceProviderEmailPlaceholder: 'Enter Provider Email',\r\n setupAdvanceOptions: 'Setup Advance Options',\r\n coverageEndDate: 'Coverage End Date',\r\n coverageStartDate: 'Coverage Start Date',\r\n enterStartDate: 'Enter Start Date',\r\n enterEndDate: 'Enter End Date',\r\n enterCoverageAmount: 'Enter Coverage Amount',\r\n enterMonthlyPremium: 'Enter Monthly Premium',\r\n advanceOptions: 'Advance Options',\r\n selectPlansAdvanceOptions: 'Select Plans for advance setup',\r\n advanceOptionsSuccessful: 'Advance options saved successfully',\r\n advanceOptionsFailed: 'Advance options save failed',\r\n paymentLoginLabel: 'Enter user credentials to proceed with payment',\r\n refundLoginLabel: 'Enter user credentials to proceed with refund',\r\n invalidFutureDate: 'Future date not allowed.',\r\n\r\n // Permissions\r\n syrapayMerchantPortal: 'Syrapay Merchant Portal',\r\n transactionSearch: 'Transaction Search',\r\n transactionSearchSubtitle: 'User should be able to search for transaction on merchant portal',\r\n\r\n reverseOpenTransactions: 'Reverse Open Transactions',\r\n reverseOpenTransactionsSubtitle: 'User should be able to reverse open transactions',\r\n\r\n reverseSettledTransactions: 'Reverse Settled Transactions',\r\n reverseSettledTransactionsSubtitle: 'User should be able to reverse settled transactions',\r\n\r\n reporting: 'Reporting',\r\n reportingSubtitle: 'User should be able to access reporting on the merchant portal',\r\n\r\n virtualTerminal: 'Virtual Terminal',\r\n virtualTerminalSubtitle: 'User should be able to access virtual terminal on the merchant portal',\r\n\r\n terminalManagement: 'Terminal Management',\r\n terminalManagementSubtitle: 'User should be able to access terminal management on the merchant portal',\r\n\r\n pciManagement: 'PCI Management',\r\n pciManagementSubtitle: 'User should be able to access PCI Management on the merchant portal',\r\n\r\n // Duplicate Tenant\r\n nMatchesFound: n => `${n} match${n > 1 ? 'es' : ''} found!`,\r\n createDifferentTenant: 'CREATE DIFFERENT TENANT',\r\n editThisTenant: 'EDIT CURRENT TENANT',\r\n\r\n validUrlError: 'Please enter a valid URL',\r\n agreement: 'Agreement',\r\n termsAndConditions: 'Click here to accept Terms and Conditions',\r\n proceed: 'PROCEED',\r\n tenantChangesExternalActivity: 'External Activity - Tenant Changes',\r\n currentEmail: 'Current Email',\r\n newEmail: 'New Email',\r\n currentPhone: 'Current Phone No.',\r\n newPhone: 'New Phone No.',\r\n tenantChangesUpdatedSuccess: 'Tenant Changes updated successfully.',\r\n addressChanges: 'Address Changes',\r\n emailChanges: 'Email Changes',\r\n phoneChanges: 'Phone Changes',\r\n alternateContactChanges: 'Alternate Contact',\r\n markAsRead: 'Mark as Read',\r\n approve: 'Approve',\r\n decline: 'Decline',\r\n noAddressChangesRequested: 'No Address changes requested.',\r\n noAlternateContactChangesRequested: 'No alternate contact changes requested.',\r\n noExternalActivity: 'No external activity to track',\r\n tenantChangesTitle: 'tenant changes',\r\n previousAddress: 'Previous Address',\r\n updatedAddress: 'Updated Address',\r\n previousAlternateContact: 'Previous Alternate Contact',\r\n updatedAlternateContact: 'Updated Alternate Contact',\r\n newValue: 'newValue',\r\n oldValue: 'oldValue',\r\n\r\n // Config deactivate alert message\r\n deactivateNotAllowed: 'Deactivating this configuration is not allowed',\r\n chargeCategoryDeactivateWithDeps: 'We are unable to deactivate this charge category because it is being used by other configurations',\r\n chargeCategoryDeactivateWithoutDeps: 'If deactivated, this charge category can’t be used in future.\\nAre you sure you want to deactivate this charge category?',\r\n paymentMethodDeactivateWithDeps: 'This payment method is being used as default payment method by some tenants.\\nPlease remove this payment method as default method before deactivating this configuration',\r\n paymentMethodDeactivateWithoutDeps: \"If deactivated, this payment method can't be used in future.\\nAre you sure you want to deactivate the payment method?\",\r\n taxCodeDeactivateWithDeps: \"This tax code is already in use. Please remove the tax code from the charge category that's in use before deactivating this tax code\",\r\n taxCodeDeactivateWithoutDeps: \"If deactivated, this tax code can't be used in future.\\nAre you sure you want to deactivate this tax code?\",\r\n promoPlanDeactivate: \"If deactivated, this promo plan can't be used in future.\\nAll the existing ones will continue until they're completed. Are you sure you want to deactivate this plan?\",\r\n maintenanceEventDeactivate: \"If deactivated, this maintenance event can't be used in future. All the existing ones will continue until they're completed. Are you sure you want to deactivate this maintenance event?\",\r\n generalDeactivateAlertMsgWithDeps: 'We are unable to deactivate this config because it is being used by other configurations',\r\n unitTypeDeactivateWithDeps: 'We are unable to deactivate this unit type because it contains active units',\r\n unitTypeDeactivateWithoutDeps: \"If deactivated this unit type can't be used in future. \\nAre you sure you want to deactivate this unit type?\",\r\n taxExemptCategoryDeactivateWithDeps: 'We are unable to deactivate this tax exempt category because some tenants are still using it.',\r\n taxExemptCategoryDeactivateWithoutDeps: \"If deactivated, this exempt category can't be used in future. \\nAre you sure you want to deactivate this exempt category\",\r\n // Config Deactivate Late Event Messages\r\n allManualTriggerLateEvents: 'There might be events which are yet to be processed.\\nDeactivating the event results in removing those ledgers from processing.\\nDo you want to deactivate the event?',\r\n allManualTriggersLateEventExitMsg: 'NO, WILL PROCESS FIRST',\r\n automaticEventRecurringOrLockoutMsg: 'If deactivated, this event can\\'t be used in future.\\nThere won’t be any changes for already implemented ones.',\r\n automaticEventOneTimeMsg: 'If deactivated, this event can\\'t be used in future.There won\\'t be any changes for those already implemented. Are you sure you want to deactivate this event?',\r\n automaticEventDollarPerDayMsg: 'If deactivated, this event can\\'t be used in future.\\n - If the billing was every day, then it would stop from the time you deactivate.\\n - If the billing was marked as \\'on payment\\', then please create the charges and then consider deactivating otherwise the charges wouldn\\'t be created.\\nAre you sure you want to deactivate?',\r\n // waitingList\r\n waitingListOptionalMsg: 'If units are not available, do you want to automatically move the tenants to the waiting list ?',\r\n moveToWaitingList: 'Move to waiting list',\r\n informTenantsUnitNotAvailable: 'Inform tenants that unit is not available',\r\n waitingList: 'Waiting List',\r\n customerType: 'Customer Type',\r\n requestedOn: 'Requested On',\r\n cancelWaitingListConfirmation: 'Are you sure you want to reject this unit request?',\r\n reject: 'Reject',\r\n waitingListEmpty: 'No Waiting Found',\r\n waitingListRejectedMessage: 'Waiting Rejected Successfully',\r\n noExit: 'No, Exit',\r\n acceptWaitingReject: 'YES, REJECT REQUEST',\r\n enquiredOn: 'Enquired On',\r\n addToWaitList: 'Add To Wait List',\r\n editWaiting: 'Edit Waiting',\r\n waiting: 'Waiting',\r\n addToWaiting: 'Add To Waiting',\r\n editWaitListEntry: 'Edit Wait List Entry',\r\n enquiryDetails: 'Enquiry Details',\r\n enquiryDate: 'Enquiry Date',\r\n enquiryComments: 'Enquiry Comments',\r\n waitingCreated: 'Customer has been added to waiting list successfully',\r\n waitingModified: 'Waiting entry has been modified successfully',\r\n waitingListAlert: 'Waiting List Alert!',\r\n unitTypeAvailableMessage: 'A unit of type UNIT_TYPE is available for renting.',\r\n customersWaitingOnUnitType: 'You have customers waiting on this unit type.',\r\n\r\n // tfw change tracking\r\n changeTracking: 'Change Tracking',\r\n showNotificationsForMoveIn: 'Show notifications for Move-in',\r\n showNotificationsForReservation: 'Show notifications for Reservation',\r\n showNotificationsForPayment: 'Show notifications for Payment',\r\n changeTrackingNote: '(Approve last Name, address, email, phone number and alternate contact)',\r\n paidOn: 'Paid On',\r\n emailForMoveIn: 'Email for online Move-in',\r\n emailForReservation: 'Email for online Reservation',\r\n emailForPayment: 'Email for online Payment',\r\n emailForTenantChanges: 'Email for Tenant Changes',\r\n notifyViaEmail: 'Notify via Email',\r\n commaSeparatedEmailNote: 'Use commas to separate emails',\r\n\r\n // letter utility\r\n letterUtility: 'Letter Utility',\r\n letterSpecifications: 'Letter Specifications',\r\n mergeFields: 'Merge Fields',\r\n previewLetter: 'Preview Letter',\r\n deliverLetter: 'Deliver Letter',\r\n attemptingLetterDelivery: 'Attempting to deliver letter. It could take a few seconds.',\r\n previewing: 'Previewing',\r\n generateNow: 'Generate Now',\r\n generateLease: 'Generate Lease',\r\n generateNewLease: 'Generate New Lease',\r\n leaseGenerationSuccess: 'Lease document sent successfully.',\r\n leaseGenerationFailed: 'Lease generation failed. You can re-generate the lease again from unit or tenant.',\r\n generateLeaseNote: 'Note: You can always generate the lease later from unit or tenant',\r\n unitsRented: 'Rented Units',\r\n selectFailedBatch: 'Select Failed Batch',\r\n printFailure: 'Print Failure',\r\n reprintDocumentSuccess: 'Documents sent for reprint',\r\n printing: 'Printing',\r\n emptyLetterTemplate: 'Letter template is empty',\r\n pdfViewerNotSupported: 'PDF viewer not supported in this browser. You can still download the PDF.',\r\n documentDownloadError: 'Error downloading the letter:',\r\n failedToFetch: 'Failed to fetch',\r\n\r\n // ws print-failures\r\n wsUpdatePrintFailures: 'There has been update to this list.',\r\n contactInformation: 'Contact Information',\r\n isMoveInTenantDepositChargedLabel: 'Do you charge deposits for tenants when they move in for the first time?',\r\n isReservationDepositChargedLabel: 'Do you charge reservation deposit?',\r\n billTenantsEveryMonthLabel: 'Do you bill tenants on first of every month?',\r\n moveOutChargesLabel: 'What do you want to do with the charges when moving out?',\r\n depositAmount: 'Deposit Amount',\r\n\r\n isRentTaxable: 'Is your rent taxable?',\r\n isRetailItemsTaxable: 'Do you charge tax on retail items?',\r\n\r\n // Onboarding\r\n facilitySetup: 'Facility Setup',\r\n unitAndTenantAssociation: 'Unit & Tenant Association',\r\n taxCodeSetupSuccessful: 'Tax Code saved successfully',\r\n unitTypeSetupSuccessful: 'Unit types saved successfully',\r\n taxCodeSetupFailed: 'Tax Code save failed',\r\n facilitySetupFailed: 'Facility Setup failed!',\r\n facilitySetupSuccessful: 'Facility setup successful.',\r\n basicInfoUpdated: 'Basic information updated successfully',\r\n onboardingSetupComplete: 'ONBOARDING SETUP COMPLETE !!!',\r\n goOverOtherConfigurations: 'Please go over all the configurations wherever its feasible',\r\n stateTaxDescription: 'State Tax Rent',\r\n retailTaxDescription: 'State Tax Retail',\r\n unitTypeDetails: 'Unit Type Details',\r\n createExistingUnitTypes: 'Create Existing Unit Types',\r\n deleteUnitDetail: 'Delete Unit',\r\n createExistingTenant: 'Create Existing Tenant',\r\n tenantDetailsSetup: 'Tenant Details',\r\n createUnits: 'Create Units',\r\n slNo: 'SL NO.',\r\n unitSize: 'Unit Size',\r\n unitCategory: 'Unit Category',\r\n unitRateMo: 'Unit Rate/Mo',\r\n tenantFirstName: 'FIRST NAME',\r\n tenantLastName: 'LAST NAME',\r\n tenantEmail: 'EMAIL',\r\n tenantPhone: 'PHONE',\r\n unitCategoryList: 'Unit Category List',\r\n\r\n // Sandbox\r\n sandbox: 'Sandbox',\r\n pullToSandbox: 'Pull to Sandbox',\r\n mySandbox: 'My Sandbox',\r\n pullNewData: 'Pull New Data',\r\n selectFacility: 'Select Facility',\r\n pulledBy: 'Pulled by',\r\n dateAndTime: 'Date & Time',\r\n data: 'Data',\r\n liveDataLabel: 'Live Data',\r\n sandboxData: 'Sandbox Data',\r\n pullData: 'Pull Data',\r\n pullingData: 'Pulling Data',\r\n sandboxCreatedSuccessfully: 'Sandbox created successfully',\r\n doNotBringForward: 'Do not Bring Forward',\r\n tenantMobileNumbers: 'Tenant mobile numbers',\r\n tenantEmailIds: 'Tenant email ids',\r\n idProofDetails: 'ID Proof details',\r\n ccTokens: 'Credit card details. Rather bring forward with test card information',\r\n preparingToPull: 'Preparing to pull',\r\n pullFailed: 'Data Puling Failed',\r\n tablesPulled: 'tables pulled',\r\n tryAgain: 'Try again',\r\n fetching: 'Fetching',\r\n noDoNotPull: \"No, Don't pull\",\r\n yesOverride: 'Yes, override',\r\n sandboxExists: 'There is already a copy of this facility on your sandbox',\r\n doYouWishToOverride: 'Do you wish to override?',\r\n fetchingDocuments: 'Generating Documents',\r\n\r\n // Setup Internal console\r\n configurationSetupIsPending: 'Configuration setup is pending.',\r\n facilityInformation: 'Facility Information',\r\n facilityStatus: 'Facility Status',\r\n facilityNumber: 'Facility Number',\r\n facilityAbbreviation: 'Facility Abbreviation',\r\n facilityAddress: 'Facility Address',\r\n setUpFacilityName: 'Facility Name',\r\n setUpStatus: 'Setup Status:',\r\n setupConfigurations: 'Setup Configurations',\r\n thereAreNoUsersTaggedToThisFacility: 'There are no users tagged to this facility.',\r\n userSetUp: 'User Setup',\r\n userList: 'User List',\r\n accountDetails: 'Account Details:',\r\n setUpStatusPending: 'Pending',\r\n setUpStatusCompleted: 'Completed',\r\n activateFacilityConfirmation: 'Are you sure you want to activate this facility?',\r\n deactivateFacilityConfirmation: 'Are you sure you want to deactivate this facility?',\r\n yesDeactivate: 'YES, DEACTIVATE',\r\n yesActivate: 'YES, ACTIVATE',\r\n facilityActive: 'Active',\r\n facilityExpired: 'Expired',\r\n createNewAccount: 'Create New Account',\r\n createNewFacility: 'Create New Facility',\r\n userCreate: 'Create User',\r\n userEdit: 'Edit User',\r\n\r\n // Deposit Log\r\n previewNewDepositLog: 'Preview New Deposit Log',\r\n createNewDepositLog: 'Create New Deposit Log',\r\n selectPreviouslyGeneratedLogs: 'Select Previously Generated Logs',\r\n generate: 'Generate',\r\n previewLog: 'Preview Log',\r\n createNewDepositLogAlert: 'Please make sure all your financials in place! Are you sure you want to create a new deposit log with current date and time?',\r\n generateNewLog: 'GENERATE NEW LOG',\r\n noLogsWereGeneratedPreviously: 'No logs were generated previously',\r\n reGenerate: 'Regenerate',\r\n please: 'please',\r\n noNewData: 'There is no new data to be shown',\r\n\r\n // Quickbooks\r\n companyName: 'Company Name',\r\n qbSyncMessage: \"Note: Software will automatically sync with QuickBooks before business hours. For synchronizing during work hours, simply click the 'Sync' button on this page\",\r\n lastSynced: 'Last synced',\r\n editCompany: 'Edit Company',\r\n qbSyncStarted: 'Transactions onboarding started.',\r\n connectToQuickbooks: 'Connect to Quickbooks',\r\n noKeepIt: 'No, Keep It.',\r\n yesRemove: 'Yes, Remove',\r\n removeConnectionText: 'Removing connection will stop sending financial transactions to the quickbooks.',\r\n areYouSureText: 'Are you sure you want to remove the existing connection with the quickbooks?',\r\n removeConnection: 'Remove Connection',\r\n removedConnectionSuccess: 'Connection removed successfully.',\r\n\r\n // Tenant Details\r\n tenantDetailSuccess: 'Tenant Details Saved Successfully',\r\n tenantDetailError: 'Failed to Save Tenant Details',\r\n\r\n // Migration\r\n migration: 'Migration',\r\n migrationListEmpty: 'No Migrations Found',\r\n migrationStage: 'Migration Stage',\r\n\r\n // Migration-Form\r\n createMigration: 'Create New Migration',\r\n version: 'Version',\r\n dumpDate: 'Dump Date',\r\n customComments: 'Custom Comments',\r\n\r\n // Migration-Server\r\n migrationServerStatus: 'Migration Server Status',\r\n migrationServer: 'Migration Server',\r\n accountSelection: 'Account Selection',\r\n\r\n // Migration Actions\r\n viewMigrationStatus: 'View Migration Status',\r\n startMigration: 'Start Migration',\r\n deleteMigratedData: 'Delete Migrated Data',\r\n preMigrate: 'Pre-Migrate',\r\n editMigration: 'Edit Migration',\r\n migrationDeleteConfirmation: 'Are you sure want to delete the migration request ?',\r\n migrationConfirmation: 'Are you sure you want to migrate Account ?',\r\n deleteYesButton: 'YES, DELETE',\r\n deleteNoButton: 'NO, KEEP IT',\r\n migrateYesButton: 'YES, MIGRATE',\r\n migrateNoButton: 'NO, EXIT',\r\n\r\n searchFacility: 'Search Facility',\r\n\r\n // Migration details Actions\r\n format: 'Format',\r\n validate: 'Validate',\r\n migrate: 'Migrate',\r\n verify: 'Verify',\r\n viewDownload: 'View / Download',\r\n repair: 'Repair',\r\n\r\n // Account and Facility List pages\r\n searchAccountNoOrName: 'Search Account No / Name',\r\n searchFacilityNoOrName: 'Search Facility No / Name',\r\n\r\n // Dashboard\r\n unitOccupancy: 'Unit Occupancy',\r\n revenue: 'Revenue',\r\n occupancyTrends: 'Occupancy Trends',\r\n averageRentalDuration: 'Average Rental Duration',\r\n revenueComparison: 'Revenue Comparison',\r\n viewList: 'View List',\r\n noOfMonths: 'Number of Months',\r\n noOfUnits: 'Number of units',\r\n errorLoadingInfo: 'Error Loading Information.',\r\n tryAgainPlease: 'Please wait a moment and try refreshing.',\r\n activeReservations: 'Active Reservations',\r\n totalUnit: 'Total Unit',\r\n unitsLateEvent: 'Units having late events',\r\n unitsMaintenance: 'Units under maintenance',\r\n totalLeadConverted: 'Total Lead Converted',\r\n website: 'Website',\r\n referral: 'Referral',\r\n walkIn: 'Walk-In',\r\n deposits: 'Deposits',\r\n totalRentCollected: 'Total Rent Collected',\r\n totalTaxCollected: 'Total Tax Collected',\r\n lateCharges: 'Late Charges',\r\n services: 'Services',\r\n others: 'Others',\r\n jan: 'Jan',\r\n feb: 'Feb',\r\n mar: 'Mar',\r\n apr: 'Apr',\r\n may: 'May',\r\n jun: 'Jun',\r\n jul: 'Jul',\r\n aug: 'Aug',\r\n sep: 'Sep',\r\n oct: 'Oct',\r\n nov: 'Nov',\r\n dec: 'Dec',\r\n activeTenant: 'Active Tenant',\r\n delinquentTenant: 'Delinquent Tenant',\r\n autopayEnabledTenant: 'Autopay Enabled Tenant',\r\n peopleWaiting: 'People in Waiting List',\r\n currentRevenue: 'Current Revenue',\r\n expectedRevenue: 'Expected Revenue',\r\n\r\n // Vehicle Config - Tenant Sections\r\n vehicle: 'Vehicle',\r\n vehicleInformation: 'Vehicle Information',\r\n make: 'Make',\r\n model: 'Model',\r\n year: 'Year',\r\n licensePlate: 'License Plate',\r\n registrationNumber: 'Registration Number',\r\n registrationExpiryDate: 'Registration Expiry Date',\r\n registerExpiryDate: 'Register Expiry Date',\r\n enterRegisterDate: 'Enter Register Date',\r\n vin: 'VIN',\r\n\r\n // Vehicles Configuration - Vehicles\r\n vehicles: 'Vehicles',\r\n notifyTenantInsurance: 'Do you want to notify the tenant if their insurance is about to expire?',\r\n notifyTenantRegistration: 'Do you want to notify the tenant if their registration is about to expire?',\r\n insuranceExpiration: 'Insurance about to expire',\r\n registrationExpiration: 'Registration about to expire',\r\n notifyBefore: 'Notify before',\r\n priorToExpiry: 'Prior to expiry date',\r\n addendumLetter: 'Addendum Letter',\r\n generateAddendumLetter: 'Do you want to to generate a vehicles addendum letter?',\r\n generateAddendumOnAddOrEdit: 'Generate addendum letter when adding/ editing a vehicle',\r\n generateAddendumOnUnitTransfer: 'Generate addendum letter On Unit Transfer',\r\n\r\n showMore: 'Show More',\r\n showLess: 'Show Less',\r\n\r\n noRefundAmount: 'Refund is not applicable for this purchase.\\nPlease proceed with return option.',\r\n return: 'Return',\r\n\r\n // Vehicles WC\r\n unitAssociation: 'Unit Association',\r\n associated: 'Associated',\r\n notAssociated: 'Not Associated',\r\n editVehicle: 'Edit Vehicle',\r\n vehiclesListEmpty: 'No Vehicles Found',\r\n openVehiclesAssociated: 'Open vehicle(s) associated to this tenant',\r\n\r\n // Vehicle component\r\n openTenantVehicle: 'Open vehicle associated to this tenant',\r\n addVehicle: 'Add Vehicle',\r\n noVehiclesAdded: 'No vehicles have been added to this tenant yet',\r\n titleHolder: 'Title Holder',\r\n titleNumber: 'Title Number',\r\n lienHolder: 'Lien Holder',\r\n photo: 'Photo',\r\n associateUnit: 'Associate Unit',\r\n vehicleId: 'Vehicle ID',\r\n vehicleType: 'Vehicle Type',\r\n enterVehicleType: 'Enter Vehicle Type',\r\n vehicleMake: 'Vehicle Make',\r\n enterBrandName: 'Enter Brand Name',\r\n vehicleModel: 'Vehicle Model',\r\n enterModelName: 'Enter Model Name',\r\n vehicleLaunchYear: 'Vehicle Launch Year',\r\n enterlaunchYear: 'Enter Launch Year',\r\n enterLicensePlateNumber: 'Enter License Plate Number',\r\n engineNumber: 'Engine Number',\r\n mileage: 'Mileage',\r\n vehicleLength: 'Vehicle Length',\r\n vehicleHeight: 'Vehicle Height',\r\n vehicleWidth: 'Vehicle Width',\r\n vehicleColor: 'Vehicle Color',\r\n carrier: 'Carrier',\r\n enterCarrierName: 'Enter Carrier Name',\r\n enterPolicyNumber: 'Enter Policy Number',\r\n coverageLevel: 'Coverage Level',\r\n vehicleValue: 'Vehicle Value',\r\n vehiclePolicyNumber: 'Policy Number',\r\n close: 'Close',\r\n\r\n tenantInfoSaved: 'Tenant info Saved Successfully',\r\n\r\n // vehicle Integration- Unit transfer\r\n removeVehicle: 'Remove Vehicle',\r\n transferToNewUnit: 'Transfer to New Unit',\r\n weHaveVehicleAssociatedWith: 'We have a vehicle associated with',\r\n doYouWantToTransferVehicleTo: 'Do you want to transfer vehicle to',\r\n orRemoveFrom: 'or remove from',\r\n\r\n deactivateVehiclesAssociated: 'Deactivate vehicles associated with the unit',\r\n\r\n export: 'Export',\r\n exportFailed: 'Export Failed, Please Try Again',\r\n selectBatchType: 'Select Batch Type',\r\n\r\n // credit card batch payment\r\n creditCard: 'Credit Card',\r\n batchId: 'BATCH ID',\r\n totalLedgersProcessed: 'LEDGERS PROCESSED',\r\n batchPaymentMode: 'MODE',\r\n viewBatchDetails: 'VIEW DETAILS',\r\n successfulTransactions: 'SUCCESSFUL TRANSACTIONS',\r\n failedTransactions: 'FAILED TRANSACTIONS',\r\n balanceThatTime: 'BALANCE AT THAT TIME ($)',\r\n creditCardType: 'CREDIT CARD TYPE',\r\n declineCode: 'DECLINE CODE',\r\n creditCardBatchPayment: 'Credit card batch payment',\r\n achBatchPayment: 'ACH batch payment',\r\n createCCBatch: 'Create CC Batch',\r\n paymentPreference: 'Payment Preference',\r\n surchargeOrDiscount: 'Surcharge/Discount ($)',\r\n receipt: 'Receipt',\r\n ccDeclinedLetter: 'CC Declined Letter',\r\n processBatchPayment: 'Proces Batch Payment',\r\n batchProcessingStarted: 'Payment processing started successfully',\r\n paymentMode: 'Payment Mode',\r\n\r\n // System letter templates\r\n importSampleLetters: 'Import Sample Letters',\r\n sampleLetters: 'Sample Letters',\r\n sampleLetter: 'Sample Letter',\r\n import: 'Import',\r\n importing: 'Importing',\r\n sampleLettersAddedSuccessfully: 'Sample letters added successfully',\r\n sampleLettersImportedSuccessfully: 'Sample letters imported successfully',\r\n searchLetterTemplate: 'Search Letter Template',\r\n mergeFieldFetchFailed: 'Merge field fetch failed',\r\n\r\n fetchingLetter: 'Fetching Letter...',\r\n sampleLetterAddedSuccessfully: 'Sample letter added successfully',\r\n\r\n enterUpcId: 'Enter UPC ID',\r\n preview: 'Preview',\r\n vehicleDeactivateConfirmation: 'Are you sure you want to deactivate vehicle?',\r\n vehicleActivateConfirmation: 'Are you sure you want to activate vehicle?',\r\n nextArrow: '->',\r\n\r\n // Access Point Contact\r\n accessPointContactHeader: 'Help',\r\n accessPointContactHotlineHeader: 'Call our support hotline at:',\r\n accessPointContactCustomerSupportEmailHeader: 'Customer Support Email:',\r\n accessPointContactTeamViewerHeader: 'Request remote assistance through TeamViewer:',\r\n accessPointContactPhoneNumberLabel: 'Sales Phone Number: ',\r\n accessPointContactTechSupportLabel: 'Tech Support Phone Number: ',\r\n accessPointContactCustomerSupportLabel: 'Send an email to: ',\r\n accessPointContactTeamViewerLabel1: 'Download TeamViewer ',\r\n accessPointContactTeamViewerLabel2: ', and share your TeamViewer ID and password when prompted ',\r\n\r\n // Financial Export\r\n financialExport: 'Financial Export',\r\n classDescription: 'Class Description',\r\n accountingMethod: 'Accounting Method',\r\n transactionGrouping: 'Transaction Grouping',\r\n incomeCategorization: 'Income Categorization',\r\n transactionConfiguration: 'Transaction Configuration',\r\n alternateDescriptions: 'Alternate Descriptions',\r\n accountReceivables: 'Account Receivables',\r\n undepositedFunds: 'Undeposited Funds',\r\n exportMethod: 'Export Method',\r\n downloadingFile: 'Downloading File',\r\n exportNote: 'Note: Quickbooks Desktop was last exported on ',\r\n bulkUpdateUnitType: 'Bulk Update Unit Type',\r\n bulkUpdate: 'Bulk Update',\r\n leaseStyleUpdatedSuccessfully: 'Lease style updated successfully.',\r\n\r\n // sidebar nav\r\n overview: 'Overview',\r\n otherFeatures: 'Other Features',\r\n documents: 'Documents',\r\n communications: 'Communications',\r\n deliquentTenant: 'Deliquent Tenant',\r\n list: 'List',\r\n reprintDocument: 'Reprint Document',\r\n consolidated: 'Consolidated',\r\n\r\n // Printer\r\n changePrinter: 'Change Printer',\r\n printerDetails: 'Printer Details',\r\n printerLabel: 'Select Printer',\r\n printerSelectionNoteUnavailable: 'Note: Selected printer is unavailable select a different one to proceed',\r\n printerSelectionNoteAvailable: 'Note: Selected printer is available.',\r\n\r\n changeTenant: 'Change Tenant',\r\n markOptionalField: '(Mark show optional fields checkbox inorder to see the fields in this section.)',\r\n\r\n overrideCCWarning: 'You are overriding a System Level Charge Category, Updated values will be applied everywhere this Charge Category is consumed',\r\n\r\n removeEntry: 'Remove Entry',\r\n dateOfFailure: 'Date of Failure',\r\n reasonForFailure: 'Reason For Failure',\r\n paymentAttempts: 'Payment Attempts',\r\n attempt: 'Attempt',\r\n filter: 'Filter',\r\n declinedCardRemovedSuccessfully: 'Declined Card(/s) removed successfully!',\r\n unableToRemoveDeclinedCardEntry: 'Unable to remove declined card entry!',\r\n removeDeclinedCardEntry: 'Remove Declined Card Entry',\r\n removeCardEntryFromList: `Are you sure you want to remove the following card entry \r\n from the list of failed automatic credit card declines?`,\r\n viewDeclinedLetter: 'View Declined Letter',\r\n letterWasnotGenerated: \"Letter wasn't generated!\",\r\n noDeclinedCreditCards: 'There are no declined credit cards.',\r\n acceptedCsvFormat: 'Accepted formats .csv and file size should be lesser than {} mb',\r\n importTenants: 'Import Tenants',\r\n importUnits: 'Import Units',\r\n unitDetailSuccess: 'Units Details Saved Successfully',\r\n unitDetailError: 'Failed to Save Tenant Details',\r\n\r\n enterEmailHerePrefix: 'Enter Email Prefix Here',\r\n enterEmailPrefix: 'Customize email prefix',\r\n importFailedHeaderValidation: 'Headers are not valid, Please pass valid headers',\r\n manuallyImport: 'Manually add',\r\n\r\n configurationDeactivatePermission: 'Users can deactivate configs',\r\n configurationDeactivatePermissionLabel: 'If this is turned on users will be able to view the deactivate buttons in the configurations wherever applicable.',\r\n createOrEditConfigs: 'Create Or Edit General Configurations',\r\n createOrEditConfigsLabel: 'Users should be able to modify facility general/ financial general/ quick books/ tax exempt category/ insurance/ maintenance events/ retail sale related configurations.',\r\n financialsConfigLevel: 'Users can create/ modify card processor, payment, invoice and allocation order related configurations.',\r\n financialGrouping: 'Financial Grouping',\r\n financialGroupingLabel: 'Users can create/ modify charge category, payment method, tax code related configurations.',\r\n unitTypeConfigLabel: 'Users can create/modify unit type and bulk updated related configurations',\r\n tfwConfigPerm: 'Tenant facing website configs',\r\n tfwConfigPermLabel: 'Users can create/ modify tfw related configurations.',\r\n custRelatedPerm: 'Customer related information',\r\n custRelatedPermLabel: 'Users can update the tenant required fields and customer deposits',\r\n occupancyPermLabel: 'Users can update rental general, move in, move out, reservation, transfer and promo plan related configurations',\r\n delinquencyAndGates: 'Delinquency & Gates',\r\n delinquencyAndGatesLabel: 'Users can create/ modify delinquency and gate related configurations',\r\n letterPermLabel: 'Users can add/update letter modifications',\r\n letterConfigPerm: 'Letter',\r\n delinquencyTracking: 'Delinquency Tracking',\r\n selectFacilityToProceed: 'Please select a facility to proceed',\r\n chargedDate: 'Charged Date',\r\n arID: 'AR ID',\r\n delinquencyEvents: 'Delinquency Events',\r\n facilityType: 'Facility Type',\r\n selectGateVendors: 'Select gate vendors',\r\n nonAnniversary: 'Non-Anniversary',\r\n searchFor: 'Search For',\r\n delinquencyOverview: 'Delinquency Overview',\r\n noDaysLate: 'No. Days Late',\r\n lateBillSince: 'Late Bill Since',\r\n eventApplied: 'Event Applied',\r\n appliedDate: 'Applied Date',\r\n automatic: 'Automatic',\r\n syncEvents: 'Sync Events',\r\n schedulerCreate: 'Create Scheduler',\r\n configuredEvents: 'Configured Events',\r\n exemptedFrom: 'Exempted From',\r\n selectExemptedFrom: 'Select Exempted From',\r\n tenantStatus: 'Tenant Status',\r\n tenantInactiveReservationCancellation: 'Mark tenant active to cancel',\r\n next30Days: 'next 30 days',\r\n searchTenantForScheduling: 'Select tenant for scheduling',\r\n schedulerCreateInfo: 'Scheduler will be created only if the charges are created on the unit',\r\n lateBillSinceDate: 'Late Bill Since Date',\r\n eventTrigger: 'Event / Trigger',\r\n daysLeftAndGraceAmount: 'No. Days Left / Grace Amount',\r\n schedulersCreationFailed: 'Scheduler creation failed',\r\n schedulersCreationSuccess: 'Schedulers created successfully',\r\n scheduleMissingSchedulers: 'Schedule',\r\n editSchedule: 'Edit Schedule',\r\n deleteScheduledEvent: 'Are you sure you want to delete the scheduled event?',\r\n schedulerUpdatedSuccessfully: 'Scheduler updated successfully',\r\n schedulerDeletedSuccessfully: 'Scheduler deleted successfully',\r\n syncingLateEvents: 'Syncing late events... This may take few minutes to refresh.',\r\n\r\n editEffectiveDate: 'Edit Effective Date',\r\n nachaUpdatedSuccessfully: 'Effective Date edited successfully',\r\n\r\n willNotify: \"This process will take some time, we'll notify once done\",\r\n // tenant file upload\r\n uploadFiles: 'Upload Files',\r\n viewFiles: 'View Files',\r\n uploadOrViewFiles: 'Upload/View Files',\r\n acceptedPdfFormat: 'Accepted format is .pdf only and file must be lesser than {} mb',\r\n fileName: 'FILE NAME',\r\n uploadedDate: 'UPLOADED DATE',\r\n fileSize: 'FILE SIZE',\r\n deletePhotoMessage: 'Are you sure you want to delete the file?',\r\n yesDelete: 'YES, DELETE',\r\n addDocuments: 'Add documents',\r\n exceededFileLimit: 'Exceeded file limit. A maximum of 10 files can be uploaded for a tenant.',\r\n exceededFileSize: 'File size too large. Please upload file(s) of size smaller than {} mb',\r\n mb: 'Mb',\r\n emailAudit: 'Email Audit',\r\n backToConversations: 'Back to conversations',\r\n emptyEmailAudit: 'No Emails Found',\r\n timeStamp: 'Time Stamp',\r\n hasAttachment: 'Has Attachment',\r\n journal: 'Journal',\r\n modifiedEffectiveDate: 'Modified Effective Date',\r\n searchConfiguration: 'Search Configuration',\r\n config: 'Config',\r\n modifiedBy: 'Modified By',\r\n newValueJournal: 'New Value',\r\n oldValueJournal: 'Old Value',\r\n journalListEmpty: 'No Journal Found',\r\n searchDescription: 'Search Description',\r\n delinquencyId: 'Delinquency ID',\r\n unitOverlock: 'Unit Overlock',\r\n selectUserRole: 'Select User Role',\r\n selectUser: 'Select User',\r\n roleUpdatedText: 'Role Updated',\r\n additionalEmails: 'Additional Emails',\r\n additionalEmailConfiguredMsg: 'Additional emails would be sent only if enable email is configured',\r\n additionalEmailCommunicationMsg: 'Except lease every other communication emails would be sent to all the configured emails',\r\n additionalEmailDuplicateCheckMsg: 'Duplicates check will be skipped for the additional emails',\r\n primaryEmailInAdditionalEmailErrorMsg: 'Primary email address can\\'t be used as an additional email',\r\n cc: 'Cc',\r\n viewEmail: 'View Email',\r\n\r\n // Configuration Tabs\r\n billingAndAllocation: 'Billing & Allocation',\r\n thirdPartySupport: '3rd Party Support',\r\n billingSettings: 'Billing settings',\r\n selectRentAdjustmentId: 'select Rent Adjustment Id',\r\n\r\n // API key related\r\n showApiKey: 'Show API Key',\r\n hideApiKey: 'Hide API Key',\r\n regenerateApiKey: 'Regenerate API Key',\r\n apiKeyRegeneratedSuccessfully: 'API Key regenerated successfully',\r\n\r\n violations: 'Violations',\r\n violationConfiguration: 'Violation Configuration',\r\n noViolationFound: 'No Violation Found',\r\n processViolations: 'Process violations',\r\n violationCreated: 'Violation Created',\r\n configureViolations: 'Please Configure Violations',\r\n selectViolations: 'Select the relevant violations',\r\n\r\n // Bulk deposits update\r\n bulkDepositUpdate: 'Bulk Deposit Update',\r\n currentDeposit: 'Current Deposit',\r\n updatedDeposit: 'Updated Deposit',\r\n enterNewDeposit: 'Enter New Deposit',\r\n depositsUpdated: 'Deposits have been updated',\r\n searchForUnit: 'Search for unit',\r\n searchForTenant: 'Search for tenant',\r\n\r\n // otherbatchpaymentmethods\r\n otherBatchPaymentFormTitle: 'Batch Payment',\r\n amountPaying: 'Amount Paying($)',\r\n payInFull: 'Pay in full for selected tenants',\r\n\r\n // vehicle\r\n registrationExpiresBetween: 'Registration Expires between',\r\n insuranceExpiresBetween: 'Insurance Expires between',\r\n eligibleDocumentsToBeDelivered: 'Eligible Documents to be Delivered',\r\n noDocumentsToDeliver: 'No documents to deliver',\r\n deliverDocuments: 'Deliver documents',\r\n deliverRegistrationExpiryLetter: 'Deliver Registration Expiry Letter',\r\n deliverInsuranceExpiryLetter: 'Deliver Insurance Expiry Letter',\r\n insuranceExpiryDate: 'Insurance Expiry Date',\r\n};\r\n\r\nexport default localisable;\r\n","export { createMuiTheme, withStyles, makeStyles, useTheme } from '@material-ui/core/styles';\r\n\r\nexport {\r\n AppBar,\r\n Avatar,\r\n Breadcrumbs,\r\n Button,\r\n Badge,\r\n Box,\r\n Card,\r\n CardContent,\r\n Checkbox,\r\n ClickAwayListener,\r\n Chip,\r\n CircularProgress as Loader,\r\n Collapse,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n DialogContentText,\r\n DialogActions,\r\n Divider,\r\n Drawer,\r\n FormControl,\r\n FormControlLabel,\r\n FormGroup,\r\n FormHelperText,\r\n FormLabel,\r\n Grid,\r\n Icon,\r\n IconButton,\r\n InputAdornment,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n LinearProgress,\r\n MenuItem,\r\n MenuList,\r\n Paper,\r\n Popper,\r\n Radio,\r\n RootRef,\r\n Toolbar,\r\n Modal,\r\n MuiThemeProvider,\r\n RadioGroup,\r\n SvgIcon,\r\n Switch,\r\n TextField,\r\n Tooltip,\r\n Typography,\r\n Stepper,\r\n StepLabel,\r\n StepIcon,\r\n StepConnector,\r\n StepContent,\r\n Step,\r\n Backdrop,\r\n ExpansionPanel,\r\n ExpansionPanelSummary,\r\n ExpansionPanelDetails,\r\n Slide,\r\n Tabs,\r\n Tab,\r\n Fade,\r\n Grow,\r\n Slider,\r\n NativeSelect,\r\n Menu,\r\n} from '@material-ui/core';\r\n\r\n\r\n// TODO: Modify import when material-ui moves following to core\r\nexport {\r\n TreeView,\r\n TreeItem,\r\n} from '@material-ui/lab';\r\n\r\nexport {\r\n BarGroupHorizontal,\r\n Bar,\r\n Pie,\r\n BarGroup,\r\n} from '@visx/shape';\r\n\r\n\r\nexport {\r\n scaleBand,\r\n scaleLinear,\r\n scaleOrdinal,\r\n} from '@visx/scale';\r\n\r\n\r\nexport { LinearGradient } from '@visx/gradient';\r\n\r\nexport {\r\n AxisLeft,\r\n AxisBottom,\r\n} from '@visx/axis';\r\n\r\nexport { GridRows } from '@visx/grid';\r\n\r\nexport { Group } from '@visx/group';\r\n\r\nexport { useTooltip, Tooltip as GraphTooltip, defaultStyles } from '@visx/tooltip';\r\n\r\nexport {\r\n RouterProvider,\r\n Navigate,\r\n createBrowserRouter,\r\n useNavigate,\r\n useLocation,\r\n useParams,\r\n NavLink,\r\n Route,\r\n BrowserRouter,\r\n Routes,\r\n} from 'react-router-dom';\r\n","import { ACTIONS } from 'External/containers/rentalConfiguration/config/RentalFormConfigs';\r\nimport enums from './Enums';\r\nimport { createEnumMap, mapEnum } from '../../helpers/utils/Formatter';\r\n\r\nconst formatter = key => (key.replace(/([A-Z])/g, match => `_${match.toUpperCase()}`)).toUpperCase();\r\n\r\nconst CURRENCY_MAP = {\r\n Usd: '$',\r\n Inr: '₹',\r\n};\r\nconst PRIMARY_PHONE = mapEnum(enums.primary);\r\nconst TIMEOUT = 500;\r\nconst SESSION_TIMEOUT = 1740000; // 29 minutes\r\nconst VIEW = mapEnum(enums.view);\r\nconst STATUS = mapEnum(enums.status);\r\nconst RENT_ASSESSMENT_MODE = mapEnum(enums.rentAssessmentMode);\r\nconst SOURCE = mapEnum(enums.source);\r\nconst INTERNAL_SOURCE = mapEnum(enums.internalSource);\r\nconst CONFIG_RESOURCE = createEnumMap(enums.configResource, formatter);\r\nconst SEARCH_DOCUMENT_SOURCE = createEnumMap(['Pending_Invoice_Delivery']);\r\nconst AUTO_SUGGEST_RESOURCE = {\r\n UNIT: 0,\r\n TENANT_LEAD: 1,\r\n TENANT: 2,\r\n LEAD: 3,\r\n OCCUPANCY: 4,\r\n MOVE_OUT: 5,\r\n GLOBAL: 6,\r\n};\r\nconst YES_NO_LIST = [\r\n {\r\n label: 'Yes',\r\n value: 'true',\r\n },\r\n {\r\n label: 'No',\r\n value: 'false',\r\n },\r\n];\r\nconst SUFFIX = mapEnum(enums.nameSuffix);\r\nconst SALUTATIONS = mapEnum(enums.nameSalutation);\r\nconst TAXES = createEnumMap(enums.taxes, key => key.replace(/_/, ' '));\r\nconst NO_OF_COLUMNS_FORM = 2;\r\nconst BROWSERS_LIST = createEnumMap(enums.browsers);\r\nconst HEADER_HEIGHT = 64;\r\nconst CLIENT_HEIGHT = 500;\r\nconst CLIENT_WIDTH = 500;\r\nconst VERTICAL_PADDING = 230;\r\nconst HORIZONTAL_PADDING = 0;\r\nconst VERTICAL_PADDING_FOR_TABLET_UP = 148;\r\nconst HORIZONTAL_PADDING_FOR_TABLET_UP = 8;\r\nconst VERTICAL_PADDING_FOR_LAPTOP_UP = 188;\r\nconst HORIZONTAL_PADDING_FOR_LAPTOP_UP = 40;\r\nconst SAFARI_ADDRESS_BAR_HEIGHT = 120;\r\nconst DATE_FORMAT = 'MM-DD-YYYY';\r\nconst DATETIME_FORMAT = 'MM-DD-YYYY HH:mm:ss.SSS';\r\nconst DB_DATETIME_FORMAT = 'YYYY-MM-DD HH:mm:ss.SSS';\r\nconst TWELVE_HOUR_DATETIME_FORMAT = 'hh:mm A';\r\nconst PRETTY_DATE_FORMAT = 'MMMM DD, YYYY';\r\nconst FULL_DATE_FORMAT = 'MM/DD/YYYY, hh:mm A';\r\nconst FULL_DATE_TIME_FORMAT = 'MM/DD/YYYY, hh:mm:ss A';\r\nconst FULL_DATE_HYPHEN_FORMAT = 'MM-DD-YYYY, hh:mm A';\r\nconst FULL_YEAR_FORMAT = 'YYYY';\r\nconst SHORT_YEAR_FORMAT = 'YY';\r\nconst EXPORT_DATE_FORMAT = 'MM-DD-YYYY [at] hh:mm:ss A';\r\nconst DETAILED_DATETIME_FORMAT = 'MM-DD-YYYY hh:mm:ss.SSS A';\r\nconst ACTIVATE = 'activate';\r\nconst DEACTIVATE = 'deactivate';\r\nconst EMPTY_FIELD_TEXT = '--';\r\nconst EMPTY_DATE_TEXT = '--/--';\r\nconst FEATURE = mapEnum(enums.feature);\r\nconst ACTION_TYPE = createEnumMap(enums.actionType);\r\nconst DASHBOARD_TYPE = createEnumMap(enums.dashboardType);\r\nconst ENCRYPTED_ID_LENGTH = 68;\r\nconst FORM_MODE = createEnumMap(enums.formMode);\r\nconst SLIDE_DIRECTION = createEnumMap(enums.slideDirection);\r\nconst TRANSITION_VARIANT = createEnumMap(enums.transitionVariant);\r\nconst INSURANCE_SOURCE = createEnumMap(enums.insuranceSource);\r\nconst TABLE_ROW_HEIGHT_VARIANT = {\r\n ONE_LINER: 52,\r\n TWO_LINER: 64,\r\n THREE_LINER: 72,\r\n FOUR_LINER: 80,\r\n HEADER_ONE_LINER: 38,\r\n HEADER_ONE_LINER_RESPONSIVE: 35,\r\n HEADER_TWO_LINER: 59,\r\n HEADER_TWO_LINER_RESPONSIVE: 53,\r\n};\r\nconst RESERVATION_STATUS = createEnumMap(enums.reservationStatus, key => key.replace(/-/g, ''));\r\nconst DELINQUENCY_STATUS = mapEnum(enums.delinquencyStatus);\r\nconst DELINQUENCY_SCHEDULED_STATUS = mapEnum(enums.delinquencySchedulerStatus);\r\nconst TABLE_STATE = createEnumMap(enums.state);\r\nconst ENTITY_LEVEL = mapEnum(enums.entityLevel);\r\nconst LOCKOUT_TYPE = mapEnum(enums.lockoutType);\r\n\r\nconst DELETE_OVERLAY_ACTION = createEnumMap(['add', 'ok', 'undo', 'delete']);\r\nconst DELETE_OVERLAY_DELETION_STATUS = createEnumMap(['new', 'existing']);\r\n\r\nconst USER_TYPE = mapEnum(enums.userType);\r\n\r\nconst LETTER_EDITOR_SOURCE = createEnumMap(enums.letterEditorSource);\r\n\r\nconst WS_EVENT_TYPE = createEnumMap(enums.wsEventType);\r\nconst WS_EVENT_SOURCE = createEnumMap(enums.wsEventSource);\r\n\r\nconst EMPTY_FUNC = () => { };\r\n\r\nconst EMPTY_STRING = '';\r\n\r\nconst EMPTY_OBJECT = {};\r\n\r\nconst EMPTY_LIST = [];\r\n\r\nconst SEARCH_DATE_FORMAT = 'YYYY-MM-DD';\r\nconst SEARCH_MAX_SIZE = 10000;\r\nconst COMPARISON_OPERATION = createEnumMap(enums.comparisonOperation);\r\n\r\nconst UNIT_AGGREGATION = createEnumMap(enums.unitAggregation);\r\nconst TIME_WINDOW = createEnumMap(enums.timeWindow);\r\n\r\nconst MILITARY_TYPE = mapEnum(enums.militaryType);\r\nconst MILITARY_BRANCH = mapEnum(enums.militaryBranch);\r\n\r\nconst NONE_OPTION = { label: 'None', value: null };\r\nconst REPORT_TYPE = createEnumMap(enums.reportType);\r\nconst TRANSACTION_TYPE = mapEnum(enums.transactionType);\r\n\r\nconst rentAssessmentStatus = ['In_Progress', 'Completed', 'Killed', 'Scheduled'];\r\nconst RENT_ASSESSMENT_STATUS = createEnumMap(rentAssessmentStatus);\r\n\r\nconst ALL_ROUNDING_TYPES = mapEnum(enums.roundingType);\r\n\r\nconst ONE_MINUTE = 60000; // in ms\r\n\r\nconst FIVE_SECONDS = 5000; // in ms\r\n\r\nconst FIVE_MINUTES = 300000; // in ms\r\n\r\nconst NUMBER_OF_DAYS_IN_WEEK = 7;\r\n\r\nconst MAX_WEEKS_IN_MONTH = 6;\r\n\r\nconst TOKEN_TYPE = createEnumMap(enums.tokenType);\r\n\r\nconst DOCUMENT_TYPE = createEnumMap(enums.documentType);\r\nconst TENANT_CHANGE_TRACKING_STATUS = createEnumMap(enums.tenantChangeTrackingStatus, key => key.replace(/-/g, ''));\r\nconst TENANT_CHANGE_TYPE = createEnumMap(enums.tenantChangeType, key => key.replace(/-/g, ''));\r\nconst OTHER_EXTERNAL_ACTIVITY_TRACKING_STATUS = createEnumMap(enums.otherExternalActivityTrackingStatus, key => key.replace(/-/g, ''));\r\n\r\n\r\nconst CARD_PROCESSOR_TRANSACTION_STATUS = createEnumMap(enums.cardProcessorTransactionStatus,\r\n key => key.replace(/-/g, ''));\r\nconst setupStatus = ['Complete', 'Incomplete'];\r\nconst SETUP_STATUS = createEnumMap(setupStatus);\r\nconst RENT_TAXABLE_YES_OR_NO_LIST = [\r\n {\r\n label: 'Yes, it is taxable',\r\n value: 'true',\r\n },\r\n {\r\n label: 'No, we don\\'t charge tax on rent',\r\n value: 'false',\r\n },\r\n];\r\n\r\nconst OCCUPANCY_CHARGE_OPTION_LIST = [\r\n {\r\n label: 'Yes, we do',\r\n value: 'true',\r\n },\r\n {\r\n label: 'Nope, we don\\'t charge',\r\n value: 'false',\r\n },\r\n];\r\n\r\nconst MOVE_IN_BILL_EVERY_MONTH_OPTIONS_LIST = [\r\n {\r\n label: 'Yes, we bill on first of the month',\r\n value: 'true',\r\n },\r\n {\r\n label: 'No, we will bill based on move in date',\r\n value: 'false',\r\n },\r\n];\r\n\r\nconst MOVE_OUT_CHARGES_OPTIONS_LIST = [\r\n {\r\n label: 'Prorate Out',\r\n value: ACTIONS.Prorate_Out.value,\r\n },\r\n {\r\n label: 'Do nothing',\r\n value: ACTIONS.Do_Nothing.value,\r\n },\r\n];\r\n\r\nconst RETAIL_ITEMS_TAXABLE_YES_OR_NO_LIST = [\r\n {\r\n label: 'Yes, it is taxable',\r\n value: 'true',\r\n },\r\n {\r\n label: 'No, we don\\'t charge tax on retail sale',\r\n value: 'false',\r\n },\r\n];\r\n\r\nconst SMALL_TEXTFIELD_WIDTH = 200;\r\nconst DROPDOWN_MAX_HEIGHT = 300;\r\n\r\nconst DEMO_FACILITY_ID_LIST = [1, 2, 11];\r\nconst OS_LIST = createEnumMap(enums.osList);\r\nconst MAC_PLATFORMS = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K', 'macOS'];\r\nconst WINDOWS_PLATFORMS = ['Win32', 'Win64', 'Windows', 'WinCE'];\r\nconst IOS_PLATFORMS = ['iPhone', 'iPad', 'iPod'];\r\nconst BATCH_PAYMENT_MODE = createEnumMap(enums.batchPaymentMode);\r\nconst BATCH_PAYMENT_TASKS = mapEnum(enums.batchPaymentTasks);\r\nconst BATCH_DETAIL_TYPES = mapEnum(enums.summaryStatus);\r\nconst CHARGE_STYLE_CONFIG = createEnumMap(enums.chargeStyleConfig);\r\nconst FACILITY_ACTION_TYPE = createEnumMap(enums.facilityActionType);\r\nconst DELINQUENCY_ACTION_TYPE = createEnumMap(enums.delinquencyActionType);\r\nconst CONFIGURATION_STORE_TYPE = createEnumMap(enums.configurationStoreType);\r\nconst FACILITY_LICENSE_STATUS = mapEnum(enums.facilityLicenseStatus);\r\nconst DOCUMENT_STATUS = mapEnum(enums.documentStatus);\r\nconst CONFIGURATION_TYPE = mapEnum(enums.configurationType);\r\n\r\nconst MODE = [\r\n { icon: 'cp-email-outlined', value: 'Email' },\r\n { icon: 'cp-phone', value: 'Phone' },\r\n { icon: 'cp-text-outlined', value: 'Text' },\r\n];\r\n\r\nconst CALENDAR_VIEW_TYPE = mapEnum(enums.calendarViewType);\r\n\r\nexport {\r\n CURRENCY_MAP, PRIMARY_PHONE, TIMEOUT, VIEW, STATUS, YES_NO_LIST, NO_OF_COLUMNS_FORM, BROWSERS_LIST,\r\n HEADER_HEIGHT, CLIENT_HEIGHT, CLIENT_WIDTH, VERTICAL_PADDING, HORIZONTAL_PADDING, VERTICAL_PADDING_FOR_TABLET_UP,\r\n HORIZONTAL_PADDING_FOR_TABLET_UP, VERTICAL_PADDING_FOR_LAPTOP_UP, HORIZONTAL_PADDING_FOR_LAPTOP_UP, SAFARI_ADDRESS_BAR_HEIGHT,\r\n ACTIVATE, DEACTIVATE, SUFFIX, SALUTATIONS, DATE_FORMAT, SOURCE, DOCUMENT_STATUS, MODE, SEARCH_MAX_SIZE,\r\n EMPTY_FIELD_TEXT, EMPTY_DATE_TEXT, AUTO_SUGGEST_RESOURCE, FEATURE, ACTION_TYPE, DASHBOARD_TYPE,\r\n ENCRYPTED_ID_LENGTH, FORM_MODE, SLIDE_DIRECTION, TRANSITION_VARIANT, TABLE_ROW_HEIGHT_VARIANT, TRANSACTION_TYPE,\r\n RESERVATION_STATUS, TABLE_STATE, ENTITY_LEVEL, DELETE_OVERLAY_ACTION, DELETE_OVERLAY_DELETION_STATUS,\r\n USER_TYPE, WS_EVENT_TYPE, WS_EVENT_SOURCE, SEARCH_DATE_FORMAT, EMPTY_FUNC, UNIT_AGGREGATION, EMPTY_STRING,\r\n DATETIME_FORMAT, TIME_WINDOW, MILITARY_TYPE, MILITARY_BRANCH, EMPTY_OBJECT, NONE_OPTION, REPORT_TYPE,\r\n COMPARISON_OPERATION, TWELVE_HOUR_DATETIME_FORMAT, RENT_ASSESSMENT_STATUS, CONFIG_RESOURCE, PRETTY_DATE_FORMAT,\r\n INTERNAL_SOURCE, SESSION_TIMEOUT, FULL_DATE_FORMAT, FULL_DATE_TIME_FORMAT, LETTER_EDITOR_SOURCE, ALL_ROUNDING_TYPES,\r\n CARD_PROCESSOR_TRANSACTION_STATUS, INSURANCE_SOURCE, ONE_MINUTE, FIVE_MINUTES, TOKEN_TYPE, DOCUMENT_TYPE,\r\n DB_DATETIME_FORMAT, SETUP_STATUS, TENANT_CHANGE_TRACKING_STATUS, TENANT_CHANGE_TYPE,\r\n EMPTY_LIST, RENT_ASSESSMENT_MODE, OTHER_EXTERNAL_ACTIVITY_TRACKING_STATUS, OCCUPANCY_CHARGE_OPTION_LIST,\r\n MOVE_IN_BILL_EVERY_MONTH_OPTIONS_LIST, MOVE_OUT_CHARGES_OPTIONS_LIST, FULL_DATE_HYPHEN_FORMAT,\r\n TAXES, RENT_TAXABLE_YES_OR_NO_LIST, RETAIL_ITEMS_TAXABLE_YES_OR_NO_LIST, SMALL_TEXTFIELD_WIDTH,\r\n DROPDOWN_MAX_HEIGHT, OS_LIST, MAC_PLATFORMS, WINDOWS_PLATFORMS, IOS_PLATFORMS, BATCH_PAYMENT_MODE,\r\n BATCH_PAYMENT_TASKS, BATCH_DETAIL_TYPES, CHARGE_STYLE_CONFIG, FACILITY_ACTION_TYPE,\r\n FACILITY_LICENSE_STATUS, CONFIGURATION_STORE_TYPE, FIVE_SECONDS, DEMO_FACILITY_ID_LIST,\r\n DELINQUENCY_STATUS, DELINQUENCY_ACTION_TYPE, LOCKOUT_TYPE, DELINQUENCY_SCHEDULED_STATUS, CALENDAR_VIEW_TYPE,\r\n NUMBER_OF_DAYS_IN_WEEK, MAX_WEEKS_IN_MONTH, FULL_YEAR_FORMAT, SHORT_YEAR_FORMAT,\r\n EXPORT_DATE_FORMAT, CONFIGURATION_TYPE, DETAILED_DATETIME_FORMAT, SEARCH_DOCUMENT_SOURCE,\r\n};\r\n","import { Typography as MuiTypography, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport typographyStyle from '../styles/TypographyStyle';\r\n\r\nconst useStyles = makeStyles(typographyStyle, { name: 'Typography' });\r\n\r\nconst Typography = (props) => {\r\n const { fontStyle, fontFamily, className, disabled, ...others } = props;\r\n const classes = useStyles(props);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nTypography.propTypes = {\r\n fontStyle: PropTypes.oneOf(['normal', 'italic', 'oblique']),\r\n fontFamily: PropTypes.string,\r\n className: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nTypography.defaultProps = {\r\n className: '',\r\n fontStyle: 'normal',\r\n};\r\n\r\nexport default Typography;\r\n","export const labelFormatter = label => label.replace(/_/g, ' ');\r\n\r\nexport const valueFormatter = value => value;\r\n\r\n// TODO - Make formatter an object parameter where the structure would be something like:\r\n// formatter = { label: formatter1, value: formatter2 }\r\nexport const mapEnum = (enumList, formatter = labelFormatter, valueTransformer = valueFormatter) => {\r\n const enumMap = {};\r\n enumList.forEach((value) => {\r\n enumMap[value] = {\r\n label: formatter(value),\r\n value: valueTransformer(value),\r\n };\r\n });\r\n return enumMap;\r\n};\r\n\r\nconst keyFormatter = key => key.replace(/ /g, '_').toUpperCase();\r\n\r\nexport const underScoreFormatter = val => val.replace(/ /g, '_');\r\n\r\n/**\r\n * @name createEnumMap\r\n * @description Given a list of objects, creates a map\r\n * @param {Array} enums Array of enums\r\n */\r\nexport const createEnumMap = (enums = [], formatter = keyFormatter) => {\r\n const enumMapToReturn = {};\r\n enums.forEach((enumKey = '') => {\r\n enumMapToReturn[formatter(enumKey)] = enumKey;\r\n });\r\n return enumMapToReturn;\r\n};\r\n\r\nexport const pathFormatter = (path, replacementChar = ' - ') => path.replace(/\\./g, replacementChar);\r\n","import { screenMinWidth, screenMaxWidth } from '../config/constants/ScreenWidths';\r\n\r\nconst media = {\r\n smallMobile: `@media only screen and (min-width: ${screenMinWidth.smallMobile}px) and (max-width: ${screenMaxWidth.smallMobile}px)`,\r\n mobile: `@media only screen and (min-width: ${screenMinWidth.mobile}px) and (max-width: ${screenMaxWidth.mobile}px)`,\r\n mobileUp: `@media only screen and (min-width: ${screenMinWidth.mobile}px)`,\r\n phablet: `@media only screen and (min-width: ${screenMinWidth.phablet}px) and (max-width: ${screenMaxWidth.phablet}px)`,\r\n phabletUp: `@media only screen and (min-width: ${screenMinWidth.phablet}px)`,\r\n tablet: `@media only screen and (min-width: ${screenMinWidth.tablet}px) and (max-width: ${screenMaxWidth.tablet}px)`,\r\n tabletPortrait: `@media only screen and (min-width: ${screenMinWidth.tablet}px) and (max-width: ${screenMaxWidth.tablet}px) and (orientation: portrait)`,\r\n tabletLandscape: `@media only screen and (min-width: ${screenMinWidth.tablet}px) and (max-width: ${screenMaxWidth.tablet}px) and (orientation: landscape)`,\r\n tabletUp: `@media only screen and (min-width: ${screenMinWidth.tablet}px)`,\r\n laptop: `@media only screen and (min-width: ${screenMinWidth.laptop}px) and (max-width: ${screenMaxWidth.laptop}px)`,\r\n laptopUp: `@media only screen and (min-width: ${screenMinWidth.laptop}px)`,\r\n desktop: `@media only screen and (min-width: ${screenMinWidth.desktop}px)`,\r\n desktopUp: `@media only screen and (min-width: ${screenMaxWidth.desktop}px)`,\r\n};\r\nexport default media;\r\n","/* eslint-disable no-unused-expressions */\r\n/* eslint-disable no-restricted-syntax */\r\n/* eslint-disable no-cond-assign */\r\nfunction toVal(mix) {\r\n let k; let y; let\r\n str = '';\r\n if (mix) {\r\n if (typeof mix === 'object') {\r\n if (mix.push) {\r\n for (k = 0; k < mix.length; k += 1) {\r\n if (mix[k] && (y = toVal(mix[k]))) {\r\n str && (str += ' ');\r\n str += y;\r\n }\r\n }\r\n } else {\r\n for (k in mix) {\r\n if (mix[k] && (y = toVal(k))) {\r\n str && (str += ' ');\r\n str += y;\r\n }\r\n }\r\n }\r\n } else if (typeof mix !== 'boolean' && !mix.call) {\r\n str && (str += ' ');\r\n str += mix;\r\n }\r\n }\r\n return str;\r\n}\r\n\r\n/**\r\n * @description An utility for constructing strings conditionally.\r\n */\r\nconst clsx = (...args) => {\r\n let i = 0; let x; let\r\n str = '';\r\n while (i < args.length) {\r\n // eslint-disable-next-line no-plusplus\r\n if (x = toVal(args[i++])) {\r\n str && (str += ' ');\r\n str += x;\r\n }\r\n }\r\n return str;\r\n};\r\n\r\nexport default clsx;\r\n\r\nexport { clsx };\r\n","import { isPrimitiveType } from 'Commons/helpers/api/Formatter';\r\nimport * as unflatten from 'unflatten';\r\nimport { getIn } from 'formik';\r\nimport { deepCopy, deepMerge, deepMergeAll } from './DeepCopy';\r\nimport { ensureArray } from './Utils';\r\n/* eslint-disable no-continue */\r\n/* eslint-disable no-prototype-builtins */\r\n/* eslint-disable no-restricted-syntax */\r\n\r\nconst getRegexPattern = value => new RegExp(value.replace(/\\*/g, '[a-zA-Z0-9]+'), 'g');\r\n\r\nconst processTouchedKeys = (flattenedObject = {}, { key = '', path = '' }) => {\r\n let keyToPush = '';\r\n const processedTouchedObject = { ...flattenedObject };\r\n Object.keys(flattenedObject).forEach((flattenedKey) => {\r\n const result = getRegexPattern(path).exec(flattenedKey);\r\n if (result) {\r\n const [matchedPath = ''] = result;\r\n if (matchedPath) {\r\n keyToPush = `${matchedPath}.${key}`;\r\n processedTouchedObject[keyToPush] = true;\r\n }\r\n }\r\n });\r\n return processedTouchedObject;\r\n};\r\n\r\nconst getBaseRegexPathAndKey = (excludedKey = '') => {\r\n if (excludedKey) {\r\n const splitKeys = excludedKey.split('.');\r\n return {\r\n key: splitKeys.pop(),\r\n path: splitKeys.join('.'),\r\n };\r\n }\r\n return null;\r\n};\r\n\r\nconst getWhitelistTouchedKeys = (flattenedTouchObject = {}, keysToWhitelist = []) => {\r\n let whiteListedTouchedKeys = {};\r\n if (keysToWhitelist) {\r\n keysToWhitelist.forEach((keyToWhiteList) => {\r\n const { key, path } = getBaseRegexPathAndKey(keyToWhiteList);\r\n // Appending for other excluded keys\r\n whiteListedTouchedKeys = { ...whiteListedTouchedKeys, ...processTouchedKeys(flattenedTouchObject, { key, path }) };\r\n });\r\n }\r\n return { ...whiteListedTouchedKeys };\r\n};\r\n\r\n\r\nconst isArrayOfJSONs = (arr = []) => {\r\n if (arr.length > 0) {\r\n for (const item in arr) {\r\n if (typeof arr[item] === 'object') continue;\r\n return false;\r\n }\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst flattenObject = (ob, formatter) => {\r\n const toReturn = {};\r\n for (const i in ob) {\r\n if (!ob.hasOwnProperty(i)) continue;\r\n\r\n if ((typeof ob[i]) === 'object' && ob[i] !== null) {\r\n const flatObject = flattenObject(ob[i], formatter);\r\n for (const x in flatObject) {\r\n if (!flatObject.hasOwnProperty(x)) continue;\r\n\r\n toReturn[`${i}.${x}`] = flatObject[x];\r\n }\r\n } else {\r\n toReturn[i] = (formatter ? formatter(ob[i]) : ob[i]);\r\n }\r\n }\r\n return toReturn;\r\n};\r\n\r\nconst isValidValue = value => (value !== undefined && value !== null); // NOTE: It will allow empty strings, 0 and boolean false\r\n\r\nconst areTheseObjectsEqual = (ob1, ob2) => JSON.stringify(ob1) === JSON.stringify(ob2);\r\n\r\nconst isPureObject = object => object instanceof Object && object.constructor === Object;\r\n\r\nconst getFieldName = (name) => {\r\n const delimiter = '.';\r\n return name.includes(delimiter) ? name.split(delimiter) : name;\r\n};\r\n\r\nconst isValidObject = obj => (typeof obj === 'object' && obj !== null);\r\n\r\nconst isObjWithKeys = obj => (isValidObject(obj) ? Object.keys(obj).length > 0 : false);\r\n\r\nconst isNonEmptyArray = array => !!(array && Array.isArray(array) && array.length);\r\n\r\nconst isEmptyArray = array => !isNonEmptyArray(array);\r\n\r\nconst getObjWithKeys = obj => (isObjWithKeys(obj) ? obj : undefined);\r\n\r\nconst setValue = (obj, property, value) => {\r\n const localObj = obj;\r\n const fieldNames = getFieldName(property);\r\n if (Array.isArray(fieldNames)) {\r\n const lastField = fieldNames.pop();\r\n let traversedObject = {};\r\n fieldNames.forEach((fieldName) => {\r\n traversedObject = traversedObject && typeof traversedObject[fieldName] !== 'undefined'\r\n ? traversedObject[fieldName]\r\n : localObj[fieldName];\r\n if (!traversedObject) {\r\n traversedObject = { [fieldName]: {} };\r\n }\r\n });\r\n // Traversed n-1 fields\r\n if ((Array.isArray(traversedObject[lastField]) && isValidObject(traversedObject[lastField]))) {\r\n const curTraversedArray = traversedObject[lastField];\r\n curTraversedArray.forEach((element, index) => {\r\n if (isValidObject(element)) {\r\n // Iterate through the value property to set\r\n for (const prop in value) {\r\n if (element.hasOwnProperty(prop)) {\r\n // If property exists set value\r\n // eslint-disable-next-line no-param-reassign\r\n element[prop] = value[prop];\r\n }\r\n }\r\n } else {\r\n traversedObject[lastField][index] = value[index];\r\n }\r\n });\r\n } else {\r\n traversedObject[lastField] = value;\r\n }\r\n } else {\r\n localObj[property] = value;\r\n }\r\n};\r\n\r\n\r\nconst getValue = (obj, name) => {\r\n if (!obj || !name) {\r\n throw new TypeError('Invalid Parameter Values');\r\n }\r\n\r\n const objToTraverse = deepCopy(obj); // To avoid reference issue\r\n let traversedObject;\r\n const fieldNames = getFieldName(name);\r\n if (Array.isArray(fieldNames)) {\r\n traversedObject = objToTraverse[fieldNames[0]] || {};\r\n for (let index = 1; index < fieldNames.length; index += 1) {\r\n traversedObject = traversedObject[fieldNames[index]];\r\n if (!traversedObject) {\r\n break; // Can't traverse deeper\r\n }\r\n }\r\n } else {\r\n traversedObject = obj && obj[fieldNames];\r\n }\r\n return traversedObject;\r\n};\r\n\r\n/**\r\n * @description Determines if the key has a truthy value in the given object.\r\n * This returns false for empty object and empty array as well.\r\n * @param {Object} object\r\n * @param {string} key\r\n */\r\nconst hasValue = (object, key) => {\r\n const value = getValue(object, key);\r\n return !!(isPrimitiveType(value) ? value : Object.keys(value).length);\r\n};\r\n\r\n\r\n/**\r\n * @name getDiffProperties\r\n * @description Returns an object with properties are different in ob2 when compared to ob1\r\n * @param {*} src The source object\r\n * @param {*} dest The destination object\r\n * @param {Object} options The additional options\r\n * @param {Object} options.properties The subset of properties to test for equality\r\n * @param {Object} options.excludeProperties These properties need not be compared, just copy from dest Ex: [ 'prop1.d.f.*.j', 'prop1.r' ]\r\n * @param {Boolean} options.updateActionType Will append action type\r\n * @param {Boolean} options.diffSrc Will store the value from source object if value\r\n * @param {Boolean} excludeNullUndefinedOnly Will include all falsy values except null and undefined\r\n * is different, by default the destination object value is stored in diff object\r\n */\r\nconst getDiffProperties = (src, dest, options = {}, excludeNullUndefinedOnly = false) => {\r\n const { properties: keys = {}, diffSrc = false, excludeProperties = {} } = options;\r\n let keysList = Object.keys(keys);\r\n const noOfKeys = keysList.length;\r\n const diffObj = {};\r\n // If no optional keys passed, comparing all object properties\r\n const allFlattenedKeys = (noOfKeys > 0) ? flattenObject(keys) : flattenObject(dest);\r\n const flattenedKeys = {};\r\n // If any of the flattened keys are undefined, delete it, to avoid keys in arrays getting touched\r\n Object.keys(allFlattenedKeys).forEach((flattenedKey) => {\r\n const valueAgainstKey = allFlattenedKeys[flattenedKey];\r\n const includeValue = excludeNullUndefinedOnly\r\n ? valueAgainstKey !== undefined && valueAgainstKey !== null\r\n : valueAgainstKey;\r\n if (includeValue) {\r\n flattenedKeys[flattenedKey] = valueAgainstKey;\r\n }\r\n });\r\n keysList = Object.keys(flattenedKeys);\r\n const objToCheck = diffSrc ? src : dest; // src\r\n const otherObj = diffSrc ? dest : src; // dest\r\n let objToCheckValue;\r\n let isValidObjToCheckValue;\r\n let otherObjValue;\r\n let isValidOtherObjValue;\r\n const processedKeysList = (excludeProperties && Object.keys(excludeProperties).length > 0) ? Object.keys(getWhitelistTouchedKeys(flattenedKeys, excludeProperties)) : keysList;\r\n processedKeysList.forEach((key) => {\r\n objToCheckValue = getValue(objToCheck, key); // dest value\r\n isValidObjToCheckValue = isValidValue(objToCheckValue); // Holds if it is a valid value (Not Undefined/null)\r\n otherObjValue = getValue(otherObj, key); // src value\r\n isValidOtherObjValue = isValidValue(otherObjValue); // Holds if it is a valid value (Not Undefined/null)\r\n if (isValidObjToCheckValue && isValidOtherObjValue) {\r\n // If both src & dest have truthy value\r\n if (otherObjValue !== objToCheckValue) {\r\n // Append only if those values are not same\r\n diffObj[key] = objToCheckValue;\r\n } else if (excludeProperties && excludeProperties.length > 0) {\r\n // If it is excluded\r\n excludeProperties.forEach((property) => {\r\n const regexPattern = getRegexPattern(property);\r\n const result = regexPattern.exec(key);\r\n if (result) {\r\n const [pathMatched] = result;\r\n if (pathMatched && isValidValue(objToCheckValue) && objToCheckValue !== '') {\r\n diffObj[key] = objToCheckValue;\r\n }\r\n }\r\n });\r\n }\r\n } else if (!isValidOtherObjValue && isValidOtherObjValue) {\r\n // If there was a falsey source value\r\n // became a truthy value\r\n diffObj[key] = objToCheckValue;\r\n } else if (isValidOtherObjValue && !isValidOtherObjValue) {\r\n // If there was a source value and dest value\r\n // became falsey\r\n diffObj[key] = typeof objToCheckValue !== 'boolean'\r\n ? undefined\r\n : objToCheckValue;\r\n } else if (isValidObjToCheckValue) {\r\n diffObj[key] = objToCheckValue;\r\n } else if (!isValidObjToCheckValue && isValidOtherObjValue) {\r\n diffObj[key] = objToCheckValue;\r\n }\r\n });\r\n return unflatten(diffObj) || diffObj;\r\n};\r\n\r\nconst isPropertyAList = (ob, propName = '') => {\r\n const objValue = getValue(ob, propName);\r\n return Array.isArray(objValue);\r\n};\r\n\r\n\r\n/**\r\n * @name removeEmptyElementsFromArray\r\n * @description Returns an array with empty elements like - (null, undefined, {}) - removed.\r\n * @param {Array} arr The array to be processed\r\n *\r\n * - Eg - removeEmptyElementsFromArray([1, '0', 0, 'null', 'undefined', undefined, null, '1', {}]) -> [1, '0', 0, 'null', 'undefined', '1']\r\n */\r\nconst removeEmptyElementsFromArray = (arr = []) => {\r\n if (Array.isArray(arr)) {\r\n return arr.filter((ele) => {\r\n if (ele === null) return false;\r\n if (typeof ele === 'object') return isObjWithKeys(ele);\r\n return ele !== undefined;\r\n });\r\n }\r\n // If not array just return the object\r\n return arr;\r\n};\r\n\r\nconst extractValueFromObject = (obj) => {\r\n if (typeof obj === 'object') {\r\n // Currently works for first key\r\n const flattenedObject = flattenObject(obj);\r\n const [firstKey] = Object.keys(flattenedObject);\r\n return flattenedObject[firstKey];\r\n }\r\n return obj;\r\n};\r\n\r\n\r\n/**\r\n * @description Helper function to set values for nested keys and sets the empty object value if key does not exist\r\n */\r\nconst setObjectValueWithDefault = (obj, key, value) => {\r\n let objCopy = obj;\r\n const fieldNames = getFieldName(key);\r\n let lastField = key;\r\n\r\n if (Array.isArray(fieldNames)) {\r\n lastField = fieldNames.pop();\r\n fieldNames.forEach((fieldName) => {\r\n objCopy[fieldName] = typeof objCopy[fieldName] !== 'undefined' ? objCopy[fieldName] : {};\r\n objCopy = objCopy[fieldName];\r\n });\r\n }\r\n objCopy[lastField] = value;\r\n};\r\n\r\nconst toObject = (list = []) => list.reduce((dict, { id } = {}, index) => ({ ...dict, [id]: index }), {});\r\n\r\nconst capitalize = (str = '', global = false) => (\r\n global ? str.replace(/\\b\\w/g, match => match.toUpperCase())\r\n : str.charAt(0).toUpperCase() + str.slice(1)\r\n);\r\n\r\nconst deCapitalize = (str = '') => str.charAt(0).toLowerCase() + str.slice(1);\r\n\r\nconst pascalCaseWithUnderscore = key => capitalize(key.replace(/([A-Z])/g, match => `_${match.toUpperCase()}`));\r\n\r\nconst camelCase = key => capitalize(key.replace(/_\\w/g, match => match[1].toUpperCase()));\r\n\r\nconst deleteValue = (obj, name) => {\r\n if (!obj || !name) {\r\n return;\r\n }\r\n let objCopy = obj;\r\n let fieldNames;\r\n if (typeof name === 'string') {\r\n fieldNames = name.split('.');\r\n }\r\n\r\n for (let i = 0; i < fieldNames.length - 1; i += 1) {\r\n objCopy = objCopy[fieldNames[i]];\r\n if (typeof objCopy === 'undefined') {\r\n return;\r\n }\r\n }\r\n\r\n delete objCopy[fieldNames.pop()];\r\n};\r\n\r\nconst convertCamelCaseToWords = (text) => {\r\n const result = text.replace(/([A-Z])/g, ' $1');\r\n return result.charAt(0).toUpperCase() + result.slice(1);\r\n};\r\n\r\n// eslint-disable-next-line no-restricted-globals\r\nconst isNumber = value => !isNaN(parseFloat(value)) && !isNaN(value - 0);\r\n\r\nconst isFunction = value => value && (\r\n Object.prototype.toString.call(value) === '[object Function]'\r\n || typeof value === 'function'\r\n || value instanceof Function\r\n);\r\n\r\nconst b64Decode = str => window.atob(str);\r\n\r\nconst b64Encode = str => window.btoa(str);\r\n\r\n// TODO: Remove usage of unescape\r\nconst b64EncodeUnicode = str => str && b64Encode(unescape(encodeURIComponent(str)));\r\n\r\nconst b64DecodeUnicode = str => str && b64Decode(decodeURIComponent(str));\r\n\r\nconst extendListToSize = (list, size, defaultValue = {}) => ([\r\n ...list,\r\n ...Array(size - list.length).fill(0).map(() => ({ ...defaultValue }))]\r\n);\r\n\r\nconst compareArray = (array1 = [], array2 = []) => {\r\n const arrayObject = {};\r\n array1.forEach((item) => { arrayObject[item] = true; });\r\n return array1.length === array2.length && array2.every(value => arrayObject[value]);\r\n};\r\n\r\n/**\r\n * Sorts an array (in-place) of objects based on the provided keys with support for ascending or descending order.\r\n *\r\n * @param {Array} data - The array of objects to be sorted.\r\n * @param {Array} keys - The list of keys to sort by. Use \"-\" prefix to indicate descending order for a specific key.\r\n * @returns {Array} The sorted array of objects.\r\n */\r\nconst sortArray = (data, keys) => {\r\n const sortKeys = ensureArray(keys);\r\n const compareFunction = (a, b) => {\r\n for (let i = 0; i < sortKeys.length; i += 1) {\r\n const key = sortKeys[i];\r\n const sortOrder = key.startsWith('-') ? -1 : 1;\r\n const realKey = key.startsWith('-') ? key.substring(1) : key;\r\n // We are using getIn instead of getValue to avoid circular JSON issues\r\n const aValue = getIn(a, realKey);\r\n const bValue = getIn(b, realKey);\r\n\r\n if (typeof aValue === 'string' && typeof bValue === 'string') {\r\n const comparison = aValue.localeCompare(bValue);\r\n if (comparison !== 0) {\r\n return sortOrder * comparison;\r\n }\r\n } else {\r\n if (aValue < bValue) {\r\n return -sortOrder;\r\n }\r\n if (aValue > bValue) {\r\n return sortOrder;\r\n }\r\n }\r\n }\r\n return 0;\r\n };\r\n return data.sort(compareFunction);\r\n};\r\n\r\nconst removeFalseKeys = obj => Object.entries(obj).reduce((result, [key, value]) => {\r\n if (value) {\r\n return { ...result, [key]: value };\r\n }\r\n return result;\r\n}, {});\r\n\r\nconst containsFalseValue = (obj) => {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (obj[key] === false) {\r\n return true;\r\n } if (typeof obj[key] === 'object') {\r\n if (containsFalseValue(obj[key])) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n return false;\r\n};\r\n\r\nexport {\r\n containsFalseValue,\r\n flattenObject,\r\n areTheseObjectsEqual,\r\n getDiffProperties,\r\n getFieldName,\r\n setValue, // Can be used in future\r\n getValue,\r\n deepMerge,\r\n deepMergeAll,\r\n isArrayOfJSONs, // Can be used in future\r\n isPropertyAList, // Can be used in future\r\n getWhitelistTouchedKeys,\r\n removeEmptyElementsFromArray,\r\n getRegexPattern,\r\n isValidValue,\r\n extractValueFromObject,\r\n isPureObject,\r\n isObjWithKeys,\r\n getObjWithKeys,\r\n toObject,\r\n capitalize,\r\n deleteValue,\r\n pascalCaseWithUnderscore,\r\n camelCase,\r\n deCapitalize,\r\n hasValue,\r\n isNumber,\r\n setObjectValueWithDefault,\r\n convertCamelCaseToWords,\r\n isNonEmptyArray,\r\n isEmptyArray,\r\n b64Encode,\r\n b64Decode,\r\n b64EncodeUnicode,\r\n b64DecodeUnicode,\r\n extendListToSize,\r\n compareArray,\r\n isValidObject,\r\n isFunction,\r\n sortArray,\r\n removeFalseKeys,\r\n};\r\n\r\nexport { getIn, setIn } from 'formik';\r\n","import { MAINTENANCE_EVENT_ACTION_ITEM } from 'External/containers/operations/components/maintenanceEvents/config/Constants';\r\n\r\nconst getEditEndpoints = (id, source, status) => {\r\n const sourceToUpdate = source === 'userRole' ? 'user-role' : source;\r\n return status ? `${sourceToUpdate}/${id}/${status}` : `${sourceToUpdate}/${id}`;\r\n};\r\n\r\nconst AUTH_ENDPOINTS = { UPDATE_SESSION_TIMEOUT: 'auth/session/update-timeout' };\r\n\r\nconst TFW_AUTH_ENDPOINTS = {\r\n decryptApiKey: apiKey => `auth/tfw/decrypt-key/${apiKey}`,\r\n regenerateApiKey: (configId, apiKey) => `auth/tfw/regenerate-key/${configId}/${apiKey}`,\r\n};\r\n\r\nconst DAILY_SUMMARY_ENDPOINTS = {\r\n search: 'scheduler/daily-summary',\r\n viewBatch: batchId => `scheduler/daily-summary/${batchId}`,\r\n};\r\n\r\nconst BATCH_PAYMENT_ENDPOINTS = {\r\n ledgerSearch: 'payment/batch-payment/search',\r\n aggregation: 'payment/batch-payment/aggregation',\r\n processBatchPayment: 'payment/batch-payment',\r\n};\r\n\r\nconst RENT_ASSESSMENT_ENDPOINTS = { history: 'rental/assessment/history/search' };\r\n\r\nconst ACCOUNT_ENDPOINTS = { search: 'account/search' };\r\n\r\nconst FACILITY_ENDPOINTS = {\r\n create: 'facility',\r\n search: 'facility/search',\r\n searchAll: 'facility/search/all',\r\n regenerateInvalidCodes: 'facility/regenerate-access-codes',\r\n update: fid => `facility/${fid}`,\r\n acceptLegalAgreement: fid => `facility/${fid}/accept-agreement`,\r\n};\r\n\r\nconst BUSINESS_GROUP_ENDPOINTS = {\r\n create: 'businessgroup',\r\n search: 'businessgroup/search',\r\n};\r\n\r\nconst MOVE_IN_ENDPOINTS = {\r\n validate: 'occupancy/move-in/validate',\r\n moveIn: 'occupancy/move-in',\r\n};\r\n\r\nconst RENTAL_ENDPOINTS = {\r\n rentalInfo: 'rental/info',\r\n prerequisite: 'rental/prerequisite',\r\n promoPlans: 'rental/promo-plans',\r\n billAhead: 'rental/bill-ahead',\r\n};\r\n\r\nconst UNIT_ENDPOINTS = {\r\n search: 'unit/search',\r\n createUnit: 'unit',\r\n getNextAmountPayable: 'unit/get-next-amount-payable',\r\n aggregation: 'unit/aggregation',\r\n bulk: 'unit/bulk',\r\n nradChange: 'unit/next-rent-assessment-date-change',\r\n count: 'unit/count',\r\n rateHistorySearch: 'unit/rate-history/search',\r\n rateHistoryReverse: rateHistoryId => `unit/rate-history/${rateHistoryId}/reverse`,\r\n rateHistoryWaive: rateHistoryId => `unit/rate-history/${rateHistoryId}/waive`,\r\n chargesAfterAdjustment: 'unit/get-charges-after-adjustment',\r\n insuranceInfo: unitId => `unit/${unitId}/insurance/info`,\r\n saveInsurance: unitId => `unit/${unitId}/insurance`,\r\n cancelInsurance: unitId => `unit/${unitId}/insurance/cancel`,\r\n lateEvents: 'unit/late-event/search',\r\n syncColor: 'unit/sync-color-cache',\r\n autoSuggest: 'unit/autosuggest',\r\n};\r\n\r\nconst TX_ENDPOINTS = {\r\n token: 'oauth/token',\r\n mergeAndGenerate: 'documentprocessing/document/merge',\r\n info: 'documentprocessing/document/info',\r\n};\r\n\r\nconst CONFIG_ENDPOINTS = {\r\n search: 'configuration/search',\r\n taxCodeBulk: 'configuration/Tax_Code/bulk',\r\n chargeCategoryBulk: 'configuration/Charge_Category/bulk',\r\n placeholderBulk: 'configuration/Placeholder/bulk',\r\n getDependencies: (configType, configId) => `configuration/${configType}/${configId}/get-dependencies`,\r\n deactivate: (configType, configId) => `configuration/${configType}/${configId}/deactivate`,\r\n};\r\n\r\nconst UNIT_CONFIGURATION_ENDPOINTS = { unitBulk: 'configuration/Unit_Type/bulk' };\r\n\r\nconst TENANT_ENDPOINTS = {\r\n search: 'tenant/search',\r\n autoSuggest: 'tenant/autosuggest',\r\n tenantAlertSearch: 'tenant/alert/search',\r\n contactLogSearch: 'tenant/contact-log/search',\r\n tenantAlertBulk: 'tenant/alert/bulk',\r\n contactLogBulk: 'tenant/contact-log/bulk',\r\n sendSignUpLink: 'tenant/auth/send-sign-up-link',\r\n bulkSendSignUpLink: 'tenant/auth/sign-up-link/bulk-send',\r\n promoPlan: 'tenant/promo-plan',\r\n update: tenantId => `tenant/${tenantId}`,\r\n activate: tenantId => `tenant/${tenantId}/activate`,\r\n tenantVehicleBulk: tenantId => `tenant/${tenantId}/vehicle/bulk`,\r\n tenantVehicleSearch: tenantId => `tenant/${tenantId}/vehicle/search`,\r\n tenantDocumentUpload: (tenantId, documentType) => `tenant/${tenantId}/document/${documentType}/upload`,\r\n invalidCodeLedgerCount: 'tenant/invalid-code-ledger/count',\r\n bulk: 'tenant/bulk',\r\n};\r\n\r\nconst RETAIL_SALE_ENDPOINTS = {\r\n search: 'inventory/search',\r\n getOrderInfo: 'retail-sale/order-info',\r\n sellAndPay: 'retail-sale/sell-and-pay',\r\n sell: 'retail-sale/sell',\r\n vendorSearch: 'vendor/search',\r\n inventoryCount: 'inventory/count',\r\n purchaseOrderSearch: 'purchase-order/search',\r\n return: 'retail-sale/return',\r\n returnAndRefund: 'retail-sale/return-and-refund',\r\n orderDetailForPurchaseOrder: purchaseOrderId => `retail-sale/get-order-details-for-purchase-order/${purchaseOrderId}`,\r\n returnsCount: 'purchase-order/count',\r\n cancelRefund: purchaseOrderId => `retail-sale/refund/${purchaseOrderId}/cancel`,\r\n refund: 'retail-sale/refund',\r\n};\r\n\r\nconst RESERVATION_ENDPOINTS = {\r\n search: 'reservation/search',\r\n validate: 'reservation/validate',\r\n createReservation: 'reservation',\r\n count: 'reservation/count',\r\n bulk: 'reservation/bulk',\r\n editReservation: 'reservation/:reservationId',\r\n};\r\n\r\nconst PAYMENT_ENDPOINTS = {\r\n search: 'payment/search',\r\n count: 'payment/count',\r\n bulk: 'payment/bulk',\r\n};\r\n\r\nconst ESTIMATE_ENDPOINTS = {\r\n validate: 'estimate/validate',\r\n createEstimate: 'estimate',\r\n search: 'estimate/search',\r\n};\r\n\r\nconst REPORT_WC_ENDPOINTS = {\r\n category: {\r\n search: 'category/search',\r\n create: 'category',\r\n update: id => `category/${id}`,\r\n delete: id => `category/${id}`,\r\n },\r\n report: {\r\n search: 'report/search',\r\n generate: reportId => `report/${reportId}/generate`,\r\n },\r\n deliver: 'report/deliver',\r\n};\r\n\r\nconst FINANCIAL_ENDPOINTS = {\r\n unpaidAr: 'financial/get-unpaid-charges',\r\n pay: 'financial/pay',\r\n refund: 'financial/refund',\r\n arSearch: 'financial/ar/search',\r\n createManualCharge: 'financial/manual-charge',\r\n reverse: 'financial/reverse',\r\n delete: 'financial/delete',\r\n arAggregation: 'financial/ar/aggregation',\r\n nsfCharge: 'financial/generate-nsf-charge',\r\n calculateRefundAmount: 'financial/calculate-refund-amount',\r\n authenticateCardProcessorIntegrator: 'financial/auth/card-processor',\r\n getSyrapayDevices: 'financial/syrapay/get-devices',\r\n deleteUnusedTokens: 'financial/syrapay/delete-unused-tokens',\r\n stripeIntent: 'financial/stripe/payment-intent',\r\n paymentInfo: 'payment/info',\r\n financialExport: 'financial/export',\r\n createViolation: 'financial/violations',\r\n};\r\n\r\nconst LETTER_ENDPOINTS = { generate: 'document/Letter' };\r\n\r\nconst DOCUMENT_ENDPOINTS = {\r\n search: 'document/saved-document/search',\r\n searchForInternalConsole: 'document/saved-document-for-ic/search',\r\n upload: docType => `document/${docType}/upload`,\r\n redeliver: 'document/saved-document/redeliver',\r\n bulkDeliver: 'document/saved-document/deliver/bulk',\r\n generateDocument: 'document/generate-document',\r\n};\r\n\r\nconst ACH_ENDPOINTS = {\r\n searchTransactions: 'financial/ach-transactions',\r\n generateNacha: 'financial/generate-nacha',\r\n downloadNacha: 'financial/download-nacha',\r\n updateNacha: 'financial/update-nacha',\r\n};\r\n\r\nconst MOVE_OUT_ENDPOINTS = {\r\n info: 'occupancy/move-out/info',\r\n validate: 'occupancy/move-out/validate',\r\n moveOut: 'occupancy/move-out',\r\n};\r\n\r\n\r\nconst POST_MOVE_OUT_ENDPOINTS = {\r\n info: 'occupancy/post-move-out/resolve-balance/info',\r\n resolveBalance: 'occupancy/post-move-out/resolve-balance',\r\n complete: 'occupancy/post-move-out/complete',\r\n};\r\n\r\nconst OPERATIONS_ENDPOINTS = { lateEvent: 'delinquency/search' };\r\n\r\nconst MAINTENANCE_OPERATION_ENDPOINTS = {\r\n search: 'maintenance-operation/search',\r\n schedule: 'maintenance-operation',\r\n getUpdateEndpoint: eventId => `maintenance-operation/${eventId}`,\r\n getStatusChangeEndpoint: (eventId, source) => ([MAINTENANCE_EVENT_ACTION_ITEM.Mark_as_pending.value, MAINTENANCE_EVENT_ACTION_ITEM.Complete_Event.value].includes(source) ? `maintenance-operation/${eventId}/status` : `maintenance-operation/${eventId}/${source === MAINTENANCE_EVENT_ACTION_ITEM.Close_Event.value ? 'close' : 'cancel'}`),\r\n};\r\n\r\nconst CONVERSATION_ENDPOINTS = {\r\n listText: 'conversation/text/list',\r\n searchText: 'conversation/text/search',\r\n searchEmail: 'conversation/email/search',\r\n unreadCount: 'conversation/get-unread-count',\r\n sendText: 'conversation/text/send',\r\n sendEmail: 'conversation/email/send',\r\n listEmail: 'conversation/email/list',\r\n markAsRead: (selectedConversation, identifier) => `conversation/${selectedConversation.toLowerCase()}/mark-as-read/${identifier}`,\r\n};\r\n\r\nconst LEAD_ENDPOINTS = { search: 'lead/search' };\r\n\r\nconst DELINQUENCY_ENDPOINTS = {\r\n overview: 'delinquency/overview',\r\n wcSearch: 'delinquency/wc/search',\r\n wrongEntries: 'delinquency/wrong-entries',\r\n updateSchedulers: 'delinquency/scheduler/bulk',\r\n searchSchedulers: 'delinquency/scheduler/search',\r\n createMissingSchedulers: 'delinquency/missing-scheduler',\r\n syncDelinquencySystem: 'delinquency/sync-delinquency-system',\r\n searchMissingSchedulers: 'delinquency/missing-scheduler/search',\r\n};\r\n\r\nconst PENDING_TASKS_ENDPOINTS = {\r\n applyLateEventsCount: 'unit/count-ledgers-which-are-late',\r\n printFailuresCount: 'document/saved-document/print/count',\r\n pendingInvoiceDeliveryCount: 'document/saved-document/print/count',\r\n vehicleAboutToExpiryCount: 'vehicle/about-to-expiry/count',\r\n};\r\n\r\nconst SCHEDULER_ENDPOINTS = {\r\n search: 'scheduler/search',\r\n ledgerSearch: 'scheduler/ledgers',\r\n};\r\n\r\nconst REMINDER_ENDPOINTS = { search: 'reminder/search' };\r\n\r\nconst UNIT_TRANSFER_ENDPOINTS = {\r\n transfer: 'occupancy/transfer',\r\n info: 'occupancy/transfer/info',\r\n};\r\n\r\nconst STANDALONE_APP_ENDPOINTS = {\r\n createAndDownload: 'standalone-app/create-and-download',\r\n search: 'standalone-app/search',\r\n};\r\n\r\nconst ONBOARDING_ENDPOINTS = {\r\n search: 'onboarding/search',\r\n occupancyConfigs: 'onboarding/occupancy-configs',\r\n saveTenant: 'onboarding/save/tenant',\r\n saveUnit: 'onboarding/save/unit',\r\n};\r\n\r\nconst RENT_ADJUSTMENT_ENDPOINTS = {\r\n search: 'rental/rent-adjustment/search',\r\n getStopEndpoint: rentAdjustmentId => `rental/rent-adjustment/${rentAdjustmentId}/stop`,\r\n schedule: 'rental/rent-adjustment/schedule',\r\n fetchWarningData: 'rental/rent-adjustment/fetch-warning-data',\r\n fetchRentAdjForUnits: 'rental/rent-adjustment/fetch-rent-adjustments-for-units',\r\n};\r\n\r\nconst GATE_ENDPOINTS = { performInitialLoad: 'gate/initial-load' };\r\n\r\nconst CARD_PROCESSOR_TRANSACTION_ENDPOINTS = {\r\n search: 'payment-card/transactions/search',\r\n count: 'payment-card/transactions/count',\r\n reProcess: 'payment-card/transactions/re-process',\r\n bulk: 'payment-card/transactions/bulk',\r\n};\r\n\r\nconst ZIP_CODE_ENDPOINTS = { search: 'zip-code/search' };\r\n\r\nconst TENANT_CHANGE_TRACKING_ENDPOINTS = {\r\n count: 'journal/tenant/count',\r\n search: 'journal/tenant/search',\r\n update: 'journal/tenant/bulk',\r\n aggregation: 'journal/tenant/aggregation',\r\n};\r\n\r\nconst WAITING_LIST_ENDPOINTS = {\r\n search: 'waiting-list/search',\r\n cancel: id => `waiting-list/${id}/cancel`,\r\n create: 'waiting-list',\r\n edit: id => `waiting-list/${id}`,\r\n};\r\n\r\nconst OCCUPANCY_HISTORY_ENDPOINTS = {\r\n count: 'occupancy/history/count',\r\n search: 'occupancy/history/search',\r\n bulk: 'occupancy/history/bulk',\r\n};\r\n\r\nconst DEPOSIT_LOG_ENDPOINTS = {\r\n create: 'financial/deposit-log',\r\n search: 'financial/deposit-log/search',\r\n};\r\n\r\nconst SANDBOX_ENDPOINTS = {\r\n create: 'sandbox',\r\n search: 'sandbox/search',\r\n};\r\n\r\nconst DASHBOARD_ENDPOINTS = { info: 'dashboard/get-info' };\r\n\r\nconst PRINTER_ENDPOINTS = {\r\n search: 'printer/search',\r\n update: id => `printer/${id}`,\r\n};\r\n\r\nconst VEHICLE_ENDPOINTS = {\r\n bulk: 'vehicle/bulk',\r\n search: 'vehicle/search',\r\n};\r\n\r\nconst USER_ENDPOINTS = {\r\n checkIfEmailExists: 'user/check-if-email-exists',\r\n searchAll: 'user/search/all',\r\n};\r\n\r\nconst PRINT_FAILURES_ENDPOINTS = {\r\n search: 'document/saved-document/print-failures/search',\r\n reprint: 'document/saved-document/reprint',\r\n};\r\n\r\nconst JOURNAL_ENDPOINTS = { search: 'journal/search' };\r\n\r\nexport {\r\n MOVE_IN_ENDPOINTS, TENANT_ENDPOINTS, UNIT_ENDPOINTS, CONFIG_ENDPOINTS, RENTAL_ENDPOINTS,\r\n RESERVATION_ENDPOINTS, getEditEndpoints, REPORT_WC_ENDPOINTS, RETAIL_SALE_ENDPOINTS,\r\n FINANCIAL_ENDPOINTS, ESTIMATE_ENDPOINTS, LETTER_ENDPOINTS, MOVE_OUT_ENDPOINTS, POST_MOVE_OUT_ENDPOINTS,\r\n OPERATIONS_ENDPOINTS, MAINTENANCE_OPERATION_ENDPOINTS, DOCUMENT_ENDPOINTS, DELINQUENCY_ENDPOINTS,\r\n PENDING_TASKS_ENDPOINTS, SCHEDULER_ENDPOINTS, REMINDER_ENDPOINTS, CONVERSATION_ENDPOINTS,\r\n ACH_ENDPOINTS, FACILITY_ENDPOINTS, BUSINESS_GROUP_ENDPOINTS, AUTH_ENDPOINTS, UNIT_TRANSFER_ENDPOINTS,\r\n RENT_ADJUSTMENT_ENDPOINTS, STANDALONE_APP_ENDPOINTS, GATE_ENDPOINTS, CARD_PROCESSOR_TRANSACTION_ENDPOINTS,\r\n ZIP_CODE_ENDPOINTS, TENANT_CHANGE_TRACKING_ENDPOINTS, WAITING_LIST_ENDPOINTS, DAILY_SUMMARY_ENDPOINTS,\r\n RENT_ASSESSMENT_ENDPOINTS, OCCUPANCY_HISTORY_ENDPOINTS, PAYMENT_ENDPOINTS, TX_ENDPOINTS, DEPOSIT_LOG_ENDPOINTS,\r\n SANDBOX_ENDPOINTS, ONBOARDING_ENDPOINTS, UNIT_CONFIGURATION_ENDPOINTS, LEAD_ENDPOINTS, PRINTER_ENDPOINTS,\r\n DASHBOARD_ENDPOINTS, ACCOUNT_ENDPOINTS, VEHICLE_ENDPOINTS, BATCH_PAYMENT_ENDPOINTS, USER_ENDPOINTS, PRINT_FAILURES_ENDPOINTS,\r\n JOURNAL_ENDPOINTS, TFW_AUTH_ENDPOINTS,\r\n};\r\n","import { IOS_PLATFORMS, MAC_PLATFORMS, OS_LIST, TIMEOUT, USER_TYPE } from 'Commons/config/constants/Constants';\r\nimport { DELIVERY_METHOD } from 'Commons/components/generic/deliveryMethodDropdown/config/Constants';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\n\r\nconst getSnackbarProps = (isSnackbarOpen = false, title = '', variant = VARIANT.success.value,\r\n subtitle = '', onSnackbarMount, classes = {}) => ({\r\n isSnackbarOpen,\r\n title,\r\n variant: isSnackbarOpen ? variant : '',\r\n subtitle,\r\n onSnackbarMount,\r\n classes,\r\n});\r\n\r\nconst isPrintDeliveryMethod = deliveryMethod => [DELIVERY_METHOD.Print.value, DELIVERY_METHOD.Print_And_Email.value].includes(deliveryMethod);\r\nconst isTextDeliveryMethod = deliveryMethod => [DELIVERY_METHOD.Text.value].includes(deliveryMethod);\r\nconst isEmailDeliveryMethod = deliveryMethod => [DELIVERY_METHOD.Email.value, DELIVERY_METHOD.Print_And_Email.value].includes(deliveryMethod);\r\n\r\nconst isBetween = (value, min, max) => value >= min && value <= max;\r\n\r\nconst debounce = (func, timeout = TIMEOUT) => {\r\n let inDebounce;\r\n return (...args) => {\r\n clearTimeout(inDebounce);\r\n inDebounce = setTimeout(() => func(...args), timeout);\r\n };\r\n};\r\n\r\nconst maskCharacters = (stringToMask, noOfCharsToRemainUnmasked = 4, character = '*') => {\r\n if (!stringToMask) return '';\r\n\r\n const regex = new RegExp(`.(?=.{${noOfCharsToRemainUnmasked}})`, 'g');\r\n return stringToMask.replace(regex, character);\r\n};\r\n\r\nconst removeWhiteSpaceAndSpecialChars = (string = '') => string.replace(/[^A-Z0-9]/ig, '');\r\n\r\nconst convertToNumber = (value) => {\r\n if (typeof value === 'number' && !Number.isNaN(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const trimmedValue = value.trim();\r\n if (trimmedValue) {\r\n return Number(trimmedValue);\r\n }\r\n }\r\n\r\n return NaN;\r\n};\r\n\r\nconst isExternalDashboard = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/a/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/a/g);\r\n};\r\n\r\nconst isInternalDashboard = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/i/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/i/g);\r\n};\r\n\r\nconst isSettings = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/a\\/s/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/a\\/s/g);\r\n};\r\n\r\nconst isLiveSettings = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/l\\/s/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/l\\/s/g);\r\n};\r\n\r\nconst isPulledSettings = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/p\\/s/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/p\\/s/g);\r\n};\r\n\r\nconst isConfiguration = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/a\\/s\\/c/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/a\\/s\\/c/g);\r\n};\r\n\r\nconst isReports = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/a\\/s\\/report/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/a\\/s\\/report/g);\r\n};\r\n\r\nconst isLiveData = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/l/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/l/g);\r\n};\r\n\r\nconst isPulledData = (url) => {\r\n if (url) {\r\n return !!url.match(/^\\/p/g);\r\n }\r\n const { location: { pathname } } = window;\r\n return !!pathname.match(/^\\/p/g);\r\n};\r\n// TODO: Above functions can be merged using a config, it will avoid code duplication.\r\n\r\nconst isNegative = value => convertToNumber(value) < 0;\r\n\r\n/**\r\n * @description Computes diff of set1 and set2 i.e. set1 - set2\r\n * @param set1\r\n * @param set2\r\n * @return {Set} Diff resultant set\r\n */\r\nconst setDifference = (set1, set2) => {\r\n if (!set1 || !set2) return new Set();\r\n return new Set(Array.from(set1).filter(x => !set2.has(x)));\r\n};\r\n\r\n/**\r\n * @description Computes union of set1 and set2 i.e. set1 + set2\r\n * @param set1\r\n * @param set2\r\n * @return {Set} Union resultant set\r\n */\r\nconst setUnion = (set1, set2) => {\r\n const union = new Set(set1);\r\n set2.forEach(ele => union.add(ele));\r\n return union;\r\n};\r\n\r\nconst isKeyPrefixForField = (key = '', field = '') => {\r\n const keys = key.split('.');\r\n const fieldKeys = field.split('.');\r\n return keys.every(eachKey => fieldKeys.includes(eachKey));\r\n};\r\n\r\nconst isStaging = () => process.env.MODE === 'STAGING';\r\n\r\nconst isProduction = () => process.env.MODE === 'PROD';\r\nconst getJsonFromUrl = (url) => {\r\n const query = url.substr(url.indexOf('?') + 1);\r\n if (query) {\r\n const result = {};\r\n query.split('&').forEach((part) => {\r\n const item = part.split('=');\r\n result[item[0]] = decodeURIComponent(item[1]);\r\n });\r\n return result;\r\n }\r\n return {};\r\n};\r\n\r\nconst getPlatformOs = () => {\r\n const { navigator: { userAgent = '', userAgentData = {} } = {}, navigator = {} } = window;\r\n const platform = userAgentData.platform || navigator.platform || '';\r\n const macosPlatforms = new Set(MAC_PLATFORMS);\r\n const iosPlatforms = new Set(IOS_PLATFORMS);\r\n let os = OS_LIST.WINDOWS;\r\n\r\n if (macosPlatforms.has(platform)) {\r\n os = OS_LIST.MAC;\r\n } else if (iosPlatforms.has(platform)) {\r\n os = OS_LIST.IOS;\r\n } else if (/Android/.test(userAgent)) {\r\n os = OS_LIST.ANDROID;\r\n } else if (/Linux/.test(platform)) {\r\n os = OS_LIST.LINUX;\r\n }\r\n\r\n return os;\r\n};\r\n\r\n/**\r\n * @description Restricts input to numeric keys and allows backspace, left arrow, right arrow and delete\r\n * @param e Event\r\n * @return {void}\r\n */\r\nconst restrictInputToNumericKeys = (e) => {\r\n // 48 to 57: Top row numeric keys 0 to 9\r\n // 96 to 105: Numpad numeric keys 0 to 9\r\n // 8: Backspace\r\n // 9: Tab\r\n // 37: Left Arrow\r\n // 39: Right Arrow\r\n // 46: Delete\r\n if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)\r\n || [8, 9, 37, 39, 46].includes(e.keyCode)) return;\r\n e.preventDefault();\r\n};\r\n\r\nconst isValidNumber = (value) => {\r\n const number = convertToNumber(value);\r\n return typeof number === 'number' && !Number.isNaN(number);\r\n};\r\n\r\n/**\r\n * @description Checks if a userType is of Syrasoft type or not. If given an argument, it'll check that otherwise compare the saved userType in window object\r\n * @param userType String\r\n * @return {boolean}\r\n */\r\nconst isSyrasoftUser = (userType = '') => {\r\n const { userType: savedUserType } = window;\r\n return (userType || savedUserType) !== USER_TYPE.Standard.value;\r\n};\r\n\r\nconst isSyrasoftAdminOrDevLead = (userType) => {\r\n const { userType: savedUserType } = window;\r\n return [USER_TYPE.Admin.value, USER_TYPE.Dev_Lead.value].includes(userType || savedUserType);\r\n};\r\n\r\nconst isMigrationUser = (userType) => {\r\n const { userType: savedUserType } = window;\r\n return (userType || savedUserType) === USER_TYPE.Migration.value;\r\n};\r\n\r\nconst isMigrationUserId = userId => (userId || '').toString() === '2';\r\n\r\nconst isSyrasoftSales = (userType) => {\r\n const { userType: savedUserType } = window;\r\n return [USER_TYPE.Sales.value].includes(userType || savedUserType);\r\n};\r\n\r\nconst ensureArray = (value) => {\r\n if (!Array.isArray(value)) {\r\n return [value];\r\n }\r\n return value;\r\n};\r\n\r\nexport {\r\n getSnackbarProps, isBetween, debounce, convertToNumber, isSettings, isLiveData, isNegative,\r\n maskCharacters, removeWhiteSpaceAndSpecialChars, isInternalDashboard, isExternalDashboard,\r\n setDifference, setUnion, isKeyPrefixForField, isConfiguration, isReports, isPulledData,\r\n isLiveSettings, isPulledSettings, isStaging, isProduction, getJsonFromUrl, getPlatformOs, isPrintDeliveryMethod,\r\n restrictInputToNumericKeys, isValidNumber, isSyrasoftUser, ensureArray, isSyrasoftAdminOrDevLead,\r\n isSyrasoftSales, isMigrationUser, isEmailDeliveryMethod, isTextDeliveryMethod, isMigrationUserId,\r\n};\r\n","import { PureComponent } from 'react';\r\nimport { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { Icon as MaterialUiIcon, SvgIcon, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport iconStyle from '../styles/IconStyle';\r\n\r\nclass Icon extends PureComponent {\r\n renderIcon(type) {\r\n return this[`render${capitalize(type)}Icon`]();\r\n }\r\n\r\n renderCustomIcon() {\r\n const {\r\n className, icon, classes, style, path, display, disabled, color, size, fullWidth, noCursorPointer,\r\n ...iconProps\r\n } = this.props;\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderFontIcon() {\r\n const {\r\n classes, children, icon, path, className, display, size, disabled, fullWidth, noCursorPointer,\r\n ...iconProps\r\n } = this.props;\r\n return (\r\n \r\n { icon || children }\r\n \r\n );\r\n }\r\n\r\n renderSvgIcon() {\r\n const { classes, children, path, className, size, disabled, fullWidth, ...iconProps } = this.props;\r\n return (\r\n \r\n { }\r\n \r\n );\r\n }\r\n\r\n /* renderThemedIcon() {\r\n const { classes, children, icon, className, variant, path, ...iconProps } = this.props;\r\n const getIcon = () => {\r\n const camelizedIcon = camelize(`${icon}_${variant}`);\r\n return `${camelizedIcon.charAt(0).toUpperCase()}${camelizedIcon.slice(1)}`;\r\n };\r\n const ThemedIcon = MaterialUiIcons[getIcon()];\r\n return (\r\n \r\n );\r\n } */\r\n\r\n render() {\r\n const { type } = this.props;\r\n return this.renderIcon(type);\r\n }\r\n}\r\nIcon.propTypes = {\r\n className: PropTypes.string,\r\n type: PropTypes.oneOf(['font', 'svg', 'custom', 'themed']),\r\n variant: PropTypes.oneOf(['outlined', 'rounded', 'two_tone', 'sharp']),\r\n children: PropTypes.node,\r\n path: PropTypes.string,\r\n icon: PropTypes.string,\r\n classes: PropTypes.object,\r\n style: PropTypes.object,\r\n display: PropTypes.oneOf(['inline', 'block', 'inline-block']),\r\n disabled: PropTypes.bool,\r\n color: PropTypes.string,\r\n size: PropTypes.oneOf(['small', 'medium', 'default', 'large']),\r\n fullWidth: PropTypes.bool,\r\n noCursorPointer: PropTypes.bool,\r\n};\r\nIcon.defaultProps = {\r\n className: '',\r\n type: 'font',\r\n children: null,\r\n path: '',\r\n icon: '',\r\n display: 'inline',\r\n disabled: false,\r\n size: 'default',\r\n noCursorPointer: false,\r\n};\r\nexport default withStyles(iconStyle)(Icon);\r\n","const enums = {\r\n modes: ['setup', 'view'],\r\n positions: ['left', 'right', 'top', 'bottom', 'vCenter', 'hCenter', 'center'],\r\n trianglePositions: ['bottom_right', 'top_right', 'top_left'],\r\n triangleTypes: ['bottomRight', 'topRight', 'topLeft'],\r\n actions: ['drag', 'rotate'],\r\n directions: ['up', 'right', 'down', 'left'],\r\n rentalStatus: ['Vacant', 'Rented'],\r\n defaultLevelLabels: ['Level 1', 'Untitled'],\r\n eventTriggerTypes: ['manual'],\r\n entityType: ['Unit', 'Placeholder'],\r\n placeholderType: ['Office', 'Road', 'Lift', 'Others'],\r\n};\r\n\r\nexport default enums;\r\n","import { createEnumMap, mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport STATUS from 'Commons/config/constants/StoreKeyStatus';\r\nimport bevEnums from './Enums';\r\n\r\nconst KEY_CODES = {\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46,\r\n SPACE_BAR: 32,\r\n ENTER: 13,\r\n};\r\n\r\nconst ROTATE_BY = {\r\n LEFT_RIGHT: 10,\r\n NINETY_DEG: 90,\r\n};\r\n\r\nconst COUNT_TYPE = {\r\n INCREMENT: 1,\r\n DECREMENT: -1,\r\n};\r\n\r\nconst COUNT_RADIO_LIST = [\r\n {\r\n value: COUNT_TYPE.INCREMENT,\r\n label: localisable.bevIncrementRadioLabel,\r\n },\r\n {\r\n value: COUNT_TYPE.DECREMENT,\r\n label: localisable.bevDecrementRadioLabel,\r\n },\r\n];\r\n\r\nconst RENTAL_STATUS = createEnumMap(bevEnums.rentalStatus);\r\n\r\nconst DEFAULT_RENTAL_STATUS = RENTAL_STATUS.VACANT;\r\n\r\nconst BEV_MODES = createEnumMap(bevEnums.modes);\r\n\r\nconst POSITIONS = createEnumMap(bevEnums.positions);\r\n\r\nconst TRIANGLE_POSITIONS = createEnumMap(bevEnums.trianglePositions);\r\n\r\nconst TRIANGLE_TYPES = createEnumMap(bevEnums.triangleTypes);\r\n\r\nconst ACTIONS = createEnumMap(bevEnums.actions);\r\n\r\nconst DIRECTIONS = createEnumMap(bevEnums.directions);\r\n\r\nconst STATUS_TO_UPDATE_ON = [STATUS.LOADED, STATUS.UPDATED, STATUS.UNLOADED, STATUS.INVALID];\r\n\r\nconst EMPTY_LIST = [];\r\n\r\nconst DEFAULT_LEVEL_LABEL = createEnumMap(bevEnums.defaultLevelLabels);\r\n\r\nconst EVENT_TRIGGERED_BY_TYPE = createEnumMap(bevEnums.eventTriggerTypes);\r\n\r\nconst TYPE_OF_ENTITY = mapEnum(bevEnums.entityType);\r\n\r\nconst PLACEHOLDER_TYPE = mapEnum(bevEnums.placeholderType);\r\n\r\nconst COLORED_SQUARE_BORDER_SHOW_TOLERANCE = 228;\r\n\r\nexport {\r\n ACTIONS,\r\n KEY_CODES,\r\n ROTATE_BY,\r\n BEV_MODES,\r\n POSITIONS,\r\n COUNT_TYPE,\r\n DIRECTIONS,\r\n EMPTY_LIST,\r\n RENTAL_STATUS,\r\n TRIANGLE_TYPES,\r\n COUNT_RADIO_LIST,\r\n TRIANGLE_POSITIONS,\r\n EVENT_TRIGGERED_BY_TYPE,\r\n STATUS_TO_UPDATE_ON,\r\n DEFAULT_LEVEL_LABEL,\r\n DEFAULT_RENTAL_STATUS,\r\n COLORED_SQUARE_BORDER_SHOW_TOLERANCE,\r\n TYPE_OF_ENTITY,\r\n PLACEHOLDER_TYPE,\r\n};\r\n","import { PureComponent } from 'react';\r\nimport { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Icon from '../../icon/components/Icon';\r\nimport { Button as MaterialUiButton, IconButton, withStyles } from '../../componentlibrary/components/Components';\r\nimport buttonStyle from '../styles/ButtonStyle';\r\n\r\nclass Button extends PureComponent {\r\n renderButton(variant) {\r\n if (['text', 'fab', 'contained', 'outlined'].includes(variant)) {\r\n return this.renderBasicButton();\r\n }\r\n return this[`render${capitalize(variant)}Button`]();\r\n }\r\n\r\n renderBasicButton() {\r\n const {\r\n icon, className, children, classes, light, color: buttonColor = 'secondary',\r\n forwardedRef, variant, ...buttonProps\r\n } = this.props;\r\n const color = buttonColor !== 'error' ? buttonColor : 'inherit';\r\n const basicClassName = clsx(className, classes.button, classes[buttonColor], light && classes.light,\r\n buttonColor === 'error' && variant === 'text' && classes.backgroundForErrorText);\r\n return (\r\n \r\n <>\r\n { !(buttonProps.variant === 'fab') && children }\r\n { icon && {icon} }\r\n \r\n \r\n );\r\n }\r\n\r\n renderIconButton() {\r\n const {\r\n icon, className, classes, IconProps, light, iconType,\r\n color: iconColor, forwardedRef, onClick, ...buttonProps\r\n } = this.props;\r\n let color = iconColor !== 'textPrimary' ? iconColor : 'primary';\r\n if (onClick && !color) {\r\n color = 'primary';\r\n }\r\n const iconClassName = clsx(className, classes[iconColor]);\r\n return (\r\n \r\n {icon && }\r\n \r\n );\r\n }\r\n\r\n renderUploadButton() {\r\n const {\r\n icon, accept, multiple, children, className, light,\r\n classes, forwardedRef, ...buttonProps\r\n } = this.props;\r\n const basicClassName = `${className} ${classes.button}`;\r\n return (\r\n
\r\n \r\n {\r\n (children\r\n && (\r\n \r\n ))\r\n || (\r\n \r\n )\r\n }\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const { variant } = this.props;\r\n return this.renderButton(variant);\r\n }\r\n}\r\nButton.propTypes = {\r\n className: PropTypes.string,\r\n variant: PropTypes.oneOf(['outlined', 'text', 'contained', 'fab', 'icon', 'upload']),\r\n type: PropTypes.oneOf(['button', 'submit']),\r\n icon: PropTypes.node,\r\n accept: PropTypes.string,\r\n multiple: PropTypes.bool,\r\n children: PropTypes.node,\r\n classes: PropTypes.object,\r\n IconProps: PropTypes.object,\r\n light: PropTypes.bool,\r\n iconType: PropTypes.string,\r\n color: PropTypes.string,\r\n forwardedRef: PropTypes.object,\r\n onClick: PropTypes.func,\r\n};\r\n\r\nButton.defaultProps = {\r\n className: '',\r\n icon: '',\r\n variant: 'text',\r\n accept: '',\r\n multiple: true,\r\n children: null,\r\n type: 'button',\r\n light: false,\r\n};\r\n\r\n// eslint-disable-next-line react/no-multi-comp\r\nconst ButtonWithRef = React.forwardRef((props, ref) => \r\n \r\n ) : null);\r\n\r\n return (\r\n buttonToolTipMessage\r\n ? (\r\n \r\n {renderButton()}\r\n \r\n )\r\n : renderButton()\r\n\r\n );\r\n};\r\n\r\nFooterButton.propTypes = {\r\n index: PropTypes.number,\r\n buttonProps: PropTypes.object,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n};\r\n\r\nconst { deviceInfo: { isMobile, isPhablet } } = window;\r\nconst isMobileOrPhablet = isMobile || isPhablet;\r\n\r\nconst Footer = ({\r\n className,\r\n message,\r\n backButtonProps,\r\n backButtonProps: { label: backButtonLabel },\r\n classes: classesProp,\r\n positiveButtonProps,\r\n negativeButtonProps,\r\n spacing,\r\n ...props\r\n}) => {\r\n const buttonCount = [backButtonProps, positiveButtonProps, negativeButtonProps]\r\n .filter(({ label }) => !!label).length;\r\n\r\n const classes = useStyles({ classes: classesProp });\r\n\r\n const justify = (backButtonLabel || message || (isMobileOrPhablet && buttonCount > 1))\r\n ? 'space-between' : 'flex-end';\r\n\r\n let negativeButton = null;\r\n let positiveButton = null;\r\n if (Object.keys(negativeButtonProps).length) {\r\n negativeButton = (\r\n \r\n );\r\n }\r\n if (Object.keys(positiveButtonProps).length) {\r\n positiveButton = Array.isArray(positiveButtonProps) ? (\r\n positiveButtonProps.map((buttonProps, index) => (\r\n \r\n ))\r\n ) : (\r\n \r\n );\r\n }\r\n\r\n const renderNegativePositiveButton = () => (\r\n negativeButton || positiveButton\r\n ? (\r\n <>\r\n {negativeButton}\r\n {positiveButton}\r\n \r\n )\r\n : null\r\n );\r\n return (\r\n \r\n {\r\n message\r\n || (\r\n \r\n )\r\n }\r\n\r\n {\r\n isMobileOrPhablet\r\n ? renderNegativePositiveButton()\r\n : (\r\n \r\n {renderNegativePositiveButton()}\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nFooter.propTypes = {\r\n backButtonProps: PropTypes.object,\r\n positiveButtonProps: PropTypes.any,\r\n negativeButtonProps: PropTypes.object,\r\n className: PropTypes.string,\r\n classes: PropTypes.object,\r\n message: PropTypes.node,\r\n spacing: PropTypes.number,\r\n};\r\n\r\nFooter.defaultProps = {\r\n backButtonProps: {},\r\n negativeButtonProps: {},\r\n positiveButtonProps: { label: localisable.save, isButtonLoading: false, loadingText: localisable.saving },\r\n};\r\n\r\n\r\nexport default Footer;\r\n\r\nexport { FooterButton };\r\n","import round from 'Commons/helpers/utils/Round';\r\n\r\n/**\r\n * @param {number | string} amount The amount to be formatted\r\n * @param {number} precision number of decimal places\r\n * @return {string}\r\n */\r\nconst getFormattedAmount = (amount, precision = 2) => round(amount, precision, true);\r\n\r\nexport default getFormattedAmount;\r\n","import { Component } from 'react';\r\nimport { Loader, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Snackbar from 'Generic/snackbar/components/Snackbar';\r\nimport { getSnackbarProps } from 'Commons/helpers/utils/Utils';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport CONFIG_TYPE from 'External/containers/configuration/config/ConfigRequestType';\r\nimport { camelCase, deCapitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport localisable from '../../../../config/strings/localisable';\r\nimport { DEFAULT_CALLBACK_FOR_SNACKBAR_ACTION_UPDATE, EXCEPTION_ERROR_CODE } from '../config/Constants';\r\nimport { getStoreKeyToClear } from '../config/Utils';\r\n\r\n\r\nclass BaseComponent extends Component {\r\n /**\r\n * @description Override this method to show snackbar when websocket sends a message\r\n * @param {Object} data Websocket message\r\n * @param {string} data.eventType Created or Updated\r\n * @param {string} data.resourceName Created or Updated resource name\r\n * @param {Number} data.resourceName Created or Updated resource id\r\n * @param {Object} data.fields Updated Fields (only if event type is updated otherwise empty)\r\n * */\r\n\r\n onWebSocketMessage = () => { };\r\n\r\n performAdditionalActionOnGlobalMessage = () => { };\r\n\r\n getSnackbarVariant = (errorCode, isError) => {\r\n if (errorCode === EXCEPTION_ERROR_CODE.NO_DATA_ERROR) {\r\n return VARIANT.info.value;\r\n }\r\n if (isError) {\r\n return VARIANT.error.value;\r\n }\r\n return VARIANT.success.value;\r\n }\r\n\r\n handleGlobalWsMessage = (message) => {\r\n const { displayMessage, isError, resourceName = '', errorCode = '' } = message;\r\n if (!resourceName || resourceName === this.globalWsResource) {\r\n const variant = this.getSnackbarVariant(errorCode, isError);\r\n this.setSnackbarProps(true,\r\n errorCode === EXCEPTION_ERROR_CODE.NO_DATA_ERROR ? localisable.noNewData : displayMessage,\r\n variant);\r\n // eslint-disable-next-line react/no-unused-state\r\n this.setState({ receivedWSMessage: false });\r\n }\r\n this.performAdditionalActionOnGlobalMessage(message);\r\n };\r\n\r\n receiveWSMessage = (message = {}) => {\r\n const { isGlobal } = message;\r\n if (isGlobal) {\r\n this.handleGlobalWsMessage(message);\r\n } else {\r\n this.handleWsMessage(message);\r\n }\r\n };\r\n\r\n handleWsMessage = (message = {}) => {\r\n /** Clearing store keys silently. Override this method in only if store key should not be\r\n * cleared silently (in list) or performing any other operation before showing RTNS message\r\n */\r\n const { resourceName } = message;\r\n const { props: { clearStoreKeys = EMPTY_FUNC }, storesToNotClearSilently = [] } = this;\r\n if (resourceName) {\r\n const storeKey = getStoreKeyToClear(message, storesToNotClearSilently);\r\n if (storeKey) clearStoreKeys([storeKey]);\r\n }\r\n this.onWebSocketMessage(message);\r\n };\r\n\r\n setSnackbarProps = (isSnackbarOpen, title, variant, subtitle, onSnackbarMount, classes, rtnsWithAutoClose) => {\r\n const { snackbarProps = {} } = this;\r\n this.snackbarProps = {\r\n ...snackbarProps,\r\n ...getSnackbarProps(isSnackbarOpen, title, variant, subtitle, onSnackbarMount, classes),\r\n rtnsWithAutoClose,\r\n };\r\n };\r\n\r\n getSnackbarActions = (isForm = false, message = {}) => {\r\n const { onRefresh, onKeepCurrentChanges } = this;\r\n return [\r\n ...isForm ? [{ label: localisable.keepCurrentChanges, onClick: onKeepCurrentChanges }] : [],\r\n { label: localisable.refresh, onClick: () => onRefresh(message) },\r\n ];\r\n };\r\n\r\n hideSnackbar = () => {\r\n this.setSnackbarProps();\r\n };\r\n\r\n /**\r\n * Removes the \"Keep Current Changes\" button from the WS snackbar when the user is forced to refresh\r\n * the component on change of certain fields which was triggered by some other client.\r\n * @param {Array} nonOverridableFields Fields for which user is forced to refresh\r\n * @param {Object} wsMessage Websocket message received\r\n */\r\n updateSnackbarActionsFor = (nonOverridableFields = [],\r\n wsMessage = {},\r\n callback = DEFAULT_CALLBACK_FOR_SNACKBAR_ACTION_UPDATE,\r\n noActionItem = false) => {\r\n const { snackbarProps, snackbarProps: { snackbarActions = [] } = {}, getSnackbarActions } = this;\r\n if (noActionItem) {\r\n this.snackbarProps = { ...snackbarProps, snackbarActions: [] };\r\n } else {\r\n let isNonOverridableFieldChanged = callback(wsMessage);\r\n const { fields } = wsMessage;\r\n\r\n if (!isNonOverridableFieldChanged) {\r\n nonOverridableFields.some((eachField) => {\r\n if (fields[eachField] !== undefined) { // Checking for undefined values only, because field value can have 0 or false as well\r\n isNonOverridableFieldChanged = true;\r\n }\r\n return isNonOverridableFieldChanged;\r\n });\r\n }\r\n\r\n if (isNonOverridableFieldChanged) {\r\n this.positiveButtonToolTipMessage = localisable.rtnsBlockedSave;\r\n this.snackbarProps = { ...snackbarProps, snackbarActions: getSnackbarActions(false, wsMessage) };\r\n } else if (snackbarActions.length === 1) {\r\n this.snackbarProps = { ...snackbarProps, snackbarActions: getSnackbarActions(true, wsMessage) };\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Override this method to handle the refresh of rtns snackbar differently\r\n * */\r\n onRefresh = (message = {}) => {\r\n const { props: { remountComponent, clearStoreKeys = EMPTY_FUNC } = {}, postProcessRefresh } = this;\r\n const { resourceName, otherStoresToClear = [] } = message;\r\n this.positiveButtonToolTipMessage = '';\r\n if (remountComponent) {\r\n remountComponent();\r\n }\r\n if (resourceName || otherStoresToClear) {\r\n const storeKey = getStoreKeyToClear(message);\r\n const storesToClear = (otherStoresToClear || []).map((store = '') => {\r\n if (CONFIG_TYPE[store.toUpperCase()]) return deCapitalize(camelCase(store));\r\n return store;\r\n }) || [];\r\n clearStoreKeys((storeKey ? [storeKey] : []).concat(storesToClear));\r\n }\r\n postProcessRefresh(message);\r\n };\r\n\r\n postProcessRefresh = () => { };\r\n\r\n onKeepCurrentChanges = () => {\r\n // eslint-disable-next-line react/no-unused-state\r\n this.setState({ receivedWSMessage: false });\r\n };\r\n\r\n /**\r\n * evaluates if component is loaded\r\n * return true/false\r\n * */\r\n isLoading() {\r\n const { loading } = this.props;\r\n return loading;\r\n }\r\n\r\n /**\r\n * evaluates if any error exists\r\n * return true/false\r\n * */\r\n hasError() {\r\n const { isError } = this.props;\r\n return isError;\r\n }\r\n\r\n\r\n /**\r\n * evaluates if user has access to the component\r\n * return true/false\r\n * */\r\n hasAccess() {\r\n const { unauthorised } = this.props;\r\n return !unauthorised;\r\n }\r\n\r\n /**\r\n * default spinner on load\r\n * */\r\n renderLoader() {\r\n return ;\r\n }\r\n\r\n /**\r\n * default message on error\r\n * */\r\n renderError() {\r\n return Something went wrong!! ;\r\n }\r\n\r\n /**\r\n * default access violation message\r\n * */\r\n renderUnauthorise() {\r\n return (\r\n \r\n \r\n {localisable.noPermissions}\r\n \r\n \r\n );\r\n }\r\n\r\n\r\n /**\r\n *\r\n * */\r\n renderComponent() {\r\n return
Test
;\r\n }\r\n\r\n render() {\r\n const {\r\n snackbarProps: { title, variant, isSnackbarOpen, snackbarActions, ...rest } = {},\r\n hideSnackbar, props: { updateWsProps = () => { } } = {}, receiveWSMessage,\r\n formProps, snackbarProps = {}, getSnackbarActions,\r\n } = this;\r\n\r\n\r\n if (this.isLoading()) {\r\n return this.renderLoader();\r\n }\r\n\r\n if (this.hasError()) {\r\n return this.renderError();\r\n }\r\n\r\n if (!this.hasAccess()) {\r\n return this.renderUnauthorise();\r\n }\r\n\r\n if (!this.isRefUpdated) {\r\n updateWsProps({ messageCallback: receiveWSMessage });\r\n this.isRefUpdated = true;\r\n }\r\n\r\n if (!snackbarActions) {\r\n if (formProps) {\r\n this.snackbarProps = { ...snackbarProps, snackbarActions: getSnackbarActions(true) };\r\n } else {\r\n this.snackbarProps = { ...snackbarProps, snackbarActions: getSnackbarActions() };\r\n }\r\n }\r\n\r\n const { snackbarProps: { snackbarActions: updatedSnackbarActions = [] } = {} } = this;\r\n\r\n return (\r\n <>\r\n {this.renderComponent()}\r\n {\r\n isSnackbarOpen\r\n && (\r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nBaseComponent.propTypes = {\r\n loading: PropTypes.bool,\r\n isError: PropTypes.bool,\r\n unauthorised: PropTypes.bool,\r\n clearStoreKeys: PropTypes.func,\r\n updateWsProps: PropTypes.func,\r\n};\r\n\r\nBaseComponent.defaultProps = {\r\n loading: false,\r\n isError: false,\r\n unauthorised: false,\r\n};\r\n\r\nexport default BaseComponent;\r\n","import { CONFIG_RESOURCE, SOURCE } from 'Commons/config/constants/Constants';\r\nimport STORE_KEY from 'Commons/redux/config/StoreKey';\r\nimport { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst RESOURCE_NAME_TO_STORE_KEY = {\r\n user_role: SOURCE.userRole.value,\r\n unit: SOURCE.unit.value,\r\n ledger: SOURCE.ledger.value,\r\n tenant: SOURCE.tenant.value,\r\n account_receivables: SOURCE.ar.value,\r\n saved_document: STORE_KEY.SAVED_DOCUMENT,\r\n};\r\n\r\nconst CONFIGURATION_RESOURCE_NAME_MAPPING = {\r\n customer_configuration: CONFIG_RESOURCE.CUSTOMER_CONFIGURATION,\r\n financial_configuration: CONFIG_RESOURCE.FINANCIAL_CONFIGURATION,\r\n facility_configuration: CONFIG_RESOURCE.FACILITY_CONFIGURATION,\r\n};\r\n\r\nconst DEFAULT_CALLBACK_FOR_SNACKBAR_ACTION_UPDATE = () => false;\r\n\r\nconst EXCEPTION_ERROR_CODE = createEnumMap(['No_Data_Error']);\r\n\r\nexport {\r\n RESOURCE_NAME_TO_STORE_KEY, DEFAULT_CALLBACK_FOR_SNACKBAR_ACTION_UPDATE,\r\n CONFIGURATION_RESOURCE_NAME_MAPPING, EXCEPTION_ERROR_CODE,\r\n};\r\n","import { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { FORM_COMPONENTS } from 'Generic/form/config/FormComponentsConfig';\r\nimport Form from '../../form/components/Form';\r\nimport { FormControlLabel, Radio, RadioGroup as MaterialUiRadioGroup, withStyles, FormLabel }\r\nfrom '../../componentlibrary/components/Components';\r\nimport Icon from '../../icon/components/Icon';\r\nimport radioGroupStyle from '../styles/RadioGroupStyle';\r\nimport { processValue } from '../../../../helpers/api/Formatter';\r\n\r\n\r\nclass RadioGroup extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n const { trackValue } = this.props;\r\n if (trackValue) {\r\n const { value } = props;\r\n this.state = { value };\r\n }\r\n }\r\n\r\n onChange = (event) => {\r\n const { onChange, dataType, trackValue } = this.props;\r\n if (trackValue) {\r\n this.setState({ value: event.target.value });\r\n }\r\n const value = processValue(event.target.value, dataType);\r\n onChange(event, value);\r\n }\r\n\r\n getValue = (value) => {\r\n const { defaultValueWhenNull } = this.props;\r\n return ((value != null) ? `${value}` : defaultValueWhenNull);\r\n }\r\n\r\n render() {\r\n const {\r\n form, onChange, value, list, trackValue, RadioProps, classes, label, dataType, defaultValueWhenNull,\r\n FormLabelProps, preferred, FormControlLabelProps, required, disabled, className, readOnly, ...props\r\n } = this.props;\r\n const { value: stateValue } = this.state;\r\n return (\r\n <>\r\n {label && {label}}\r\n \r\n {\r\n list.map(({ label: radioLabel, value: radioValue, disabled: disabledOption, ...radioProps }) => (\r\n }\r\n checkedIcon={}\r\n required={required}\r\n {...radioProps}\r\n />\r\n )}\r\n className={clsx(readOnly && classes.InheritedConfigLabel)}\r\n {...FormControlLabelProps}\r\n />\r\n ))\r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nRadioGroup.propTypes = {\r\n form: PropTypes.object,\r\n onChange: PropTypes.func,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\r\n trackValue: PropTypes.bool,\r\n list: PropTypes.array.isRequired,\r\n classes: PropTypes.object.isRequired,\r\n label: PropTypes.node,\r\n preferred: PropTypes.bool,\r\n dataType: PropTypes.oneOf(['string', 'number', 'boolean']),\r\n name: PropTypes.string,\r\n required: PropTypes.bool,\r\n RadioProps: PropTypes.object,\r\n FormLabelProps: PropTypes.object,\r\n FormControlLabelProps: PropTypes.object,\r\n disabled: PropTypes.bool,\r\n className: PropTypes.string,\r\n readOnly: PropTypes.bool,\r\n defaultValueWhenNull: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\r\n};\r\n\r\nRadioGroup.defaultProps = {\r\n form: { setFieldValue: () => { } },\r\n onChange: () => { },\r\n trackValue: true,\r\n value: null,\r\n preferred: false,\r\n dataType: 'boolean',\r\n RadioProps: {},\r\n FormLabelProps: {},\r\n FormControlLabelProps: {},\r\n disabled: false,\r\n readOnly: false,\r\n defaultValueWhenNull: null,\r\n};\r\n\r\nconst withStyleRadioGroup = withStyles(radioGroupStyle)(RadioGroup);\r\nwithStyleRadioGroup.displayName = FORM_COMPONENTS.RADIO_GROUP;\r\nconst FormRadioGroup = Form(withStyleRadioGroup);\r\n\r\nexport {\r\n withStyleRadioGroup as RadioGroup,\r\n FormRadioGroup,\r\n};\r\n","// import { createEnumMap } from '../../../../../helpers/utils/Formatter'; // Issue while importing directly\r\n\r\n/**\r\n * @name createEnumMap\r\n * @description Given a list of objects, creates a map\r\n * @param {Array} enums Array of enums\r\n */\r\nexport const createEnumMap = (enums = []) => {\r\n const enumMapToReturn = {};\r\n enums.forEach((enumKey = '') => {\r\n enumMapToReturn[(enumKey.replace(/ /g, '_')).toUpperCase()] = enumKey;\r\n });\r\n return enumMapToReturn;\r\n};\r\n\r\n\r\nconst FilterTypes = createEnumMap(['DATE RANGE', 'NUMBER RANGE', 'SINGLE SELECT', 'MULTI SELECT', 'CUSTOM']);\r\n\r\nconst FiltersAvailable = ['reservationDate', 'reservationStatus', 'tenantType', 'depositRange'];\r\n\r\nconst MinSections = { isDesktop: 1 };\r\n\r\nexport {\r\n FilterTypes,\r\n FiltersAvailable,\r\n MinSections,\r\n};\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nexport const HIGHLIGHT_TYPE = createEnumMap(['half', 'half_on_hover', 'default'], key => key.toUpperCase());\r\n\r\nexport const EMPTY_LIST = [];\r\n","/* eslint-disable import/prefer-default-export */\r\nconst belongsToAnyOfGivenSources = (source, irrelevantSources = []) => irrelevantSources.includes(source);\r\n\r\nconst getTruncatedTitle = (\r\n title,\r\n shouldTruncateTitle = false,\r\n truncateTitleLength = 10,\r\n) => (shouldTruncateTitle\r\n ? `${title.substring(0, truncateTitleLength)}${title.substring(truncateTitleLength) && '...'}`\r\n : title);\r\n\r\nexport { belongsToAnyOfGivenSources, getTruncatedTitle };\r\n","import { useSnackbar } from 'notistack';\r\nimport { useEffect, useRef } from 'react';\r\nimport { VARIANT, SNACKBAR_POSITION, AUTO_HIDE_DURATION } from '../config/Constants';\r\nimport SnackMessage from './SnackMessage';\r\n\r\n\r\n// TODO for new-base-style: Incoming transition is too fast\r\nconst Snackbar = ({\r\n variant, title, subtitle, actions,\r\n onSnackbarMount, classes, rtnsWithAutoClose = false,\r\n ...props\r\n}) => {\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\r\n const { current: isRealTimeNotification } = useRef(variant === VARIANT.rtns.value);\r\n // At present, we are not supporting the auto-closing feature for rtns as we also use it for error notifications.\r\n // For some rtns notification where we want auto-closing we will be passing duration of Warning variant.\r\n const getAutoHideDuration = () => {\r\n if (variant === VARIANT.rtns.value && rtnsWithAutoClose) {\r\n return AUTO_HIDE_DURATION[VARIANT.warning.value];\r\n }\r\n return AUTO_HIDE_DURATION[variant];\r\n };\r\n\r\n const snackbarKey = useRef({});\r\n\r\n useEffect(() => {\r\n enqueueSnackbar(title, {\r\n variant: isRealTimeNotification ? VARIANT.default.value : variant,\r\n preventDuplicate: true,\r\n autoHideDuration: getAutoHideDuration(),\r\n content: (key) => {\r\n snackbarKey.current = key;\r\n return (\r\n \r\n );\r\n },\r\n ...(isRealTimeNotification && { anchorOrigin: SNACKBAR_POSITION.TOP_CENTER }),\r\n ...props,\r\n });\r\n return () => {\r\n const { current: key } = snackbarKey;\r\n if (variant === VARIANT.error.value) {\r\n closeSnackbar(key);\r\n }\r\n };\r\n }, []);\r\n\r\n return null;\r\n};\r\nexport default Snackbar;\r\n","/* eslint-disable import/prefer-default-export */\r\nconst ERROR = 2;\r\n\r\nconst LARGE_SD_HEIGHT = 300;\r\nconst NORMAL_SD_HEIGHT = 250;\r\nconst MEDIUM_SD_HEIGHT = 200;\r\nconst SMALL_SD_HEIGHT = 150;\r\nconst EXTRA_SMALL_SD_HEIGHT = 100;\r\n\r\nexport { ERROR, LARGE_SD_HEIGHT, MEDIUM_SD_HEIGHT, NORMAL_SD_HEIGHT, SMALL_SD_HEIGHT, EXTRA_SMALL_SD_HEIGHT };\r\n","/* eslint-disable no-plusplus */\r\nimport md5 from './md5';\r\n\r\nconst array = new Uint32Array(10);\r\n\r\nconst generateRandomNumber = () => Math.random() * 10000;\r\n/* const testUUID = () => {\r\n const ids = {};\r\n let duplicates = 0;\r\n for (let index = 0; index < 10000; index += 1) {\r\n const uuid = getUUID();\r\n ids[uuid] = ids[uuid] ? ids[uuid] + 1 : 1;\r\n if (ids[uuid] > 1) {\r\n duplicates += 1;\r\n }\r\n }\r\n console.log('No of dupes:', duplicates);\r\n console.log('IDs:', JSON.stringify(ids));\r\n}; */\r\n\r\nconst getSeed = () => {\r\n if (window.crypto) {\r\n window.crypto.getRandomValues(array);\r\n const randomIndex = Math.floor(Math.random() * 10);\r\n return array[randomIndex];\r\n }\r\n return `${generateRandomNumber()}`;\r\n};\r\n\r\nconst getUUID = () => `${md5(`${Date.valueOf()}-${getSeed()}`)}`;\r\nexport default getUUID;\r\n","/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-useless-escape */\r\n\r\nimport { Navigate, createBrowserRouter } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport GeneralPages from 'Generic/generalPages/components/GeneralPages';\r\nimport ProtectedRoute from 'Commons/components/generic/protectedroute/component/ProtectedRoute';\r\nimport useRouter from 'Commons/components/business/provider/useRouter';\r\n\r\nconst MAX_URL_LENGTH = 1024;\r\n\r\nconst getRegexForRouteParams = (regex) => {\r\n let regexToUpdate = regex;\r\n regexToUpdate += '((?:[^\\\\/]+?))';\r\n return regexToUpdate;\r\n};\r\n\r\n\r\n/**\r\n * @description The matchPath() method checks whether a pathname belongs to a path or not\r\n * @param {String} pathname similar to route pathname\r\n * @param {Object} '' object containing raw path\r\n */\r\nconst matchPath = (pathname = '', { path = '' }) => {\r\n const subPaths = path.split('/') || [];\r\n let regex = path ? '^' : '';\r\n subPaths.forEach((subPath) => {\r\n let suffix = '';\r\n if (subPath.charAt(subPath.length - 1) === '?') {\r\n regex += '(?:\\\\/';\r\n suffix += ')?';\r\n } else if (subPath) {\r\n regex += '\\\\/';\r\n }\r\n if (subPath.charAt(0) === ':') {\r\n regex = getRegexForRouteParams(regex);\r\n } else if (subPath) { regex += subPath; }\r\n regex += suffix;\r\n });\r\n regex += '(?:\\\\/(?=$))?|$/i';\r\n regex = RegExp(regex);\r\n return regex.exec(pathname);\r\n};\r\n\r\n/**\r\n * @description The getMinIndexOfCharsFromString() method returns the min index of chars in a given string,\r\n * returns undefined if chars are not present in the string.\r\n * @param {String} stringToSearchIn string to find min index in\r\n * @param {Array} charsToFind characters whose min index we need to find\r\n */\r\nconst getMinIndexOfCharsFromString = (stringToSearchIn = '', charsToFind = []) => {\r\n let minIndex = MAX_URL_LENGTH + 1;\r\n charsToFind.forEach((char) => {\r\n const indexOfCharInString = stringToSearchIn.indexOf(char);\r\n if (indexOfCharInString >= 0 && indexOfCharInString < minIndex) {\r\n minIndex = indexOfCharInString;\r\n }\r\n });\r\n return minIndex === (MAX_URL_LENGTH + 1) ? undefined : minIndex;\r\n};\r\n\r\n/**\r\n * @description The getRouteParams() method returns the route params as an object..\r\n * @param {String} pathname similar to pathname of route location (it has param values)\r\n * @param {String} path raw path, similar to path of route match (it has param keys)\r\n */\r\nconst getRouteParams = (pathname, path) => {\r\n const routeParams = {};\r\n if (pathname && path) {\r\n const splittedPaths = path.split(':');\r\n const textBeforeParam = splittedPaths.shift(); // Since everything before first colon is useless\r\n pathname = pathname.replace(textBeforeParam, ''); // Removing everything before first param from pathname\r\n while (splittedPaths.length) {\r\n const pathToProcess = splittedPaths.shift();\r\n\r\n // Before ?, / or end of string will be the key of route param\r\n const paramEndIndexInPath = getMinIndexOfCharsFromString(pathToProcess, ['?', '/']) || pathToProcess.length;\r\n // Before ? or end of string will be the value of route param\r\n const paramEndIndexInPathname = getMinIndexOfCharsFromString(pathname, ['/']) || pathname.length;\r\n\r\n const routeKey = pathToProcess.slice(0, paramEndIndexInPath);\r\n const routeValue = pathname.slice(0, paramEndIndexInPathname);\r\n routeParams[routeKey] = routeValue;\r\n\r\n const remainingWasteInPath = pathToProcess.slice(paramEndIndexInPath, pathToProcess.length - 1);\r\n pathname = pathname.replace(`${routeValue}${remainingWasteInPath}`, '');\r\n\r\n // Since route value can be optional and it may or may not have a / at the start after trimming\r\n if (pathname.startsWith('/')) {\r\n pathname = pathname.slice(1);\r\n }\r\n }\r\n }\r\n return routeParams;\r\n};\r\n\r\nconst isBaseUrlAlpha = () => window.location.origin === process.env.ALPHA_FE_URL;\r\n\r\nconst HomePageWithLocation = ({ Component, ...props }) => {\r\n const { location, match, history } = useRouter();\r\n return ;\r\n};\r\n\r\nHomePageWithLocation.propTypes = { Component: PropTypes.any };\r\n\r\nconst getRouter = (isUserLoggedIn, newProps, redirectTo, HomePage, setUserLoginState) => createBrowserRouter([\r\n {\r\n path: '/',\r\n element: !isUserLoggedIn\r\n ? (\r\n \r\n )\r\n : ,\r\n },\r\n {\r\n path: '/blog',\r\n element: ,\r\n },\r\n {\r\n path: '/contactus',\r\n element: ,\r\n },\r\n {\r\n path: '/faq',\r\n element: ,\r\n },\r\n {\r\n path: '/logout',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/a/facility/:fid?/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/l/:accountId?/facility/:fid?/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/p/:sandboxId?/:accountId?/facility/:fid?/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/a/s/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/l/s/:accountId?/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/p/s/:sandboxId?/:accountId?/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '/i/*',\r\n element: (\r\n \r\n ),\r\n },\r\n {\r\n path: '*',\r\n element: ,\r\n },\r\n]);\r\n\r\nexport { matchPath, getRouteParams, isBaseUrlAlpha, getRouter };\r\n","const calculateNextAmountPayable = (unitList, id, skipCalculatingNextAmountPayable = true) => {\r\n let nextAmountPayable = 0;\r\n /* TODO: Next line check is just a hacky centralized fix for not using nextAmountPayable automatically, it'll be calculated on button click,\r\n remove it when redesigning Payment, remove this third parameter from the function as well. */\r\n if (skipCalculatingNextAmountPayable) return nextAmountPayable;\r\n unitList.forEach((unit) => {\r\n const { ledger: { id: ledgerId = '' } = {} } = unit;\r\n if (id === ledgerId) {\r\n nextAmountPayable += Number(unit.nextAmountPayable);\r\n }\r\n });\r\n return nextAmountPayable;\r\n};\r\n\r\n\r\nexport { calculateNextAmountPayable };\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst bevLeftSidebarStyles = theme => ({\r\n leftPanelContainer: {\r\n padding: theme.spacing(2, 2, 2, 4),\r\n backgroundColor: theme.palette.common.white,\r\n flexWrap: 'nowrap',\r\n overflow: 'auto',\r\n borderRadius: 4,\r\n width: '18%',\r\n [media.laptop]: { padding: theme.spacing(1, 1, 1, 2) },\r\n },\r\n sideBarTopMargin: {\r\n marginTop: theme.spacing(2),\r\n [media.laptop]: { marginTop: theme.spacing(1) },\r\n },\r\n sideBarTopMarginForDirections: {\r\n marginTop: theme.spacing(4),\r\n [media.laptop]: { marginTop: theme.spacing(2) },\r\n },\r\n sectionContainer: {\r\n marginTop: theme.spacing(4),\r\n [media.laptop]: { marginTop: theme.spacing(2) },\r\n },\r\n addButtonsContainer: { [media.laptop]: { paddingTop: theme.spacing(1) } },\r\n radioGroupMarginRight: { '&>:last-child': { marginRight: 0 } },\r\n number: {\r\n '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {\r\n appearance: 'none',\r\n background: 'url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAASCAYAAABit09LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACLSURBVHgB5ZIhDoAwDEVHkFMY5vFo8FwFj8fDgfB45jnFFAZPm/ySrYKApslPl+ytTftnTBolaUJOIlfQTKpILWkjnRoUSCpZDecKCqQBYB3DDI5oF3Dm7PFQ4OVxAFTvzK/j1Xpk4YkLCmIzVgZ3UkNyEdwDEreOTLV3qGhNaun9e/jSo3KhoU+DXWxIJFoIWlIqAAAAAElFTkSuQmCC\")no-repeat center center',\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n width: '1em',\r\n },\r\n },\r\n button: {\r\n margin: theme.spacing(0.25),\r\n padding: 0,\r\n maxWidth: 32,\r\n maxHeight: 32,\r\n minWidth: 32,\r\n minHeight: 32,\r\n color: theme.palette.black[600],\r\n borderColor: theme.palette.black[600],\r\n '&:hover': {\r\n color: theme.palette.black[600],\r\n backgroundColor: theme.palette.button.hover,\r\n borderColor: theme.palette.button.hover,\r\n },\r\n },\r\n addButton: { '&, &:hover': { color: theme.palette.text.primary } },\r\n keepButtonActive: {\r\n color: theme.palette.black[600],\r\n backgroundColor: theme.palette.button.hover,\r\n borderColor: theme.palette.button.hover,\r\n },\r\n alertDialogButton: { fontSize: 14 },\r\n inputField: { textAlign: 'left' },\r\n});\r\n\r\nexport default bevLeftSidebarStyles;\r\n","import NotFound from 'Commons/assets/images/NotFound.svg';\r\nimport ServerError from 'Commons/assets/images/ServerError.svg';\r\nimport UnderMaintenance from 'Commons/assets/images/UnderMaintenance.svg';\r\nimport Unauthorised from 'Commons/assets/images/Unauthorised.svg';\r\n\r\nimport localisable from 'Commons/config/strings/localisable';\r\n\r\nconst VARIANT = {\r\n NOT_FOUND: -1,\r\n SERVER_ERROR: 0,\r\n UNDER_MAINTENANCE: 1,\r\n UNAUTHORISED: 2,\r\n};\r\n\r\nconst variantConfig = {\r\n [VARIANT.SERVER_ERROR]: {\r\n source: ServerError,\r\n header: localisable.serverErrorTitle,\r\n title: localisable.serverErrorDetail,\r\n imgAlt: localisable.serverError,\r\n },\r\n [VARIANT.UNDER_MAINTENANCE]: {\r\n source: UnderMaintenance,\r\n header: localisable.underMaintenanceTitle,\r\n title: localisable.underMaintenanceDetail,\r\n imgAlt: localisable.underMaintenanceTitle,\r\n },\r\n [VARIANT.NOT_FOUND]: {\r\n source: NotFound,\r\n header: localisable.notFoundTitle,\r\n title: localisable.notFoundDetail,\r\n imgAlt: localisable.notFound,\r\n },\r\n [VARIANT.UNAUTHORISED]: {\r\n source: Unauthorised,\r\n header: localisable.noAccess,\r\n imgAlt: localisable.unauthorised,\r\n },\r\n};\r\n\r\nexport { variantConfig, VARIANT };\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst EXEMPT_FROM_LIST = mapEnum(['GATE_LOCKOUT', 'OVERLOCK', 'OTHER_LATE_EVENTS', 'TAX_EXEMPT']);\r\n\r\nexport { EXEMPT_FROM_LIST };\r\n","const enums = {\r\n waitingStatus: ['Active', 'Rejected'],\r\n customerType: ['Tenant', 'Lead'],\r\n waitingSource: ['Facilitate', 'Website'],\r\n};\r\n\r\nexport default enums;\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst WAITING_STATUS = mapEnum(enums.waitingStatus);\r\nconst CUSTOMER_TYPE = mapEnum(enums.customerType);\r\nconst WAITING_SOURCE = mapEnum(enums.waitingSource);\r\n\r\nexport { WAITING_STATUS, CUSTOMER_TYPE, WAITING_SOURCE };\r\n","import { Grid, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Link from 'Generic/link/components/Link';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { DASHBOARD_TYPE } from 'Commons/config/constants/Constants';\r\nimport INTERNAL_ROUTES from 'Internal/redux/config/RouteNames';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport GeneralPagesStyles from '../styles/GeneralPagesStyles';\r\n\r\nimport { variantConfig, VARIANT } from '../config/Config';\r\nimport localisable from '../../../../config/strings/localisable';\r\n\r\n\r\nclass GeneralPages extends React.PureComponent {\r\n renderPageLink = (variant) => {\r\n const { classes } = this.props;\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { classes, variant, useAnchorTag, facilityId, dashboardType } = this.props;\r\n const { source, header, title, imgAlt } = variantConfig[variant];\r\n const { deviceInfo: { isDesktop }, accountId } = window;\r\n let defaultPageUrl = facilityId ? buildUrl('facilitySelect', { fid: facilityId }, DASHBOARD_TYPE.EXTERNAL, accountId) : '/a';\r\n if (dashboardType === DASHBOARD_TYPE.INTERNAL) defaultPageUrl = `/${INTERNAL_ROUTES.INTERNAL_MAIN}`;\r\n return (\r\n <>\r\n \r\n \r\n {imgAlt}\r\n \r\n \r\n \r\n \r\n {header}\r\n \r\n \r\n {title}\r\n \r\n \r\n {\r\n variant !== VARIANT.SERVER_ERROR // Uncomment this when internal server error issue is speced out\r\n && (\r\n \r\n {\r\n useAnchorTag\r\n ? (\r\n \r\n {this.renderPageLink(variant)}\r\n \r\n )\r\n : (\r\n \r\n {this.renderPageLink(variant)}\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nGeneralPages.propTypes = {\r\n classes: PropTypes.object,\r\n variant: PropTypes.number,\r\n useAnchorTag: PropTypes.bool,\r\n facilityId: PropTypes.string,\r\n dashboardType: PropTypes.string,\r\n};\r\n\r\nGeneralPages.defaultProps = {\r\n variant: VARIANT.NOT_FOUND,\r\n useAnchorTag: false,\r\n dashboardType: DASHBOARD_TYPE.EXTERNAL,\r\n};\r\n\r\nexport default withStyles(GeneralPagesStyles)(GeneralPages);\r\n","import round from 'Commons/helpers/utils/Round';\r\nimport { SOURCE } from 'Commons/config/constants/Constants';\r\nimport { calculateNextAmountPayable } from './BalanceCalculator';\r\n\r\nconst shouldModifyNegativeAmount = (isRefund, unitList, setFieldValue, id, source, ledgerBalance) => {\r\n if (!isRefund && Number(ledgerBalance) <= 0) {\r\n const nextAmountPayable = source === SOURCE.retailSale.value ? 0 : calculateNextAmountPayable(unitList, id);\r\n if (nextAmountPayable !== 0 && Number(ledgerBalance) === 0) {\r\n setFieldValue('extra.amountWithoutModifier', round(Number(nextAmountPayable), 2, true));\r\n } else if (Number(ledgerBalance) <= 0) {\r\n setFieldValue('amount', round(0, 2, true));\r\n }\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport default shouldModifyNegativeAmount;\r\n","import enums from 'Commons/config/constants/Enums';\r\nimport { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst [cellPhone, businessPhone, homePhone, faxPhone] = enums.primary;\r\n\r\nconst PHONE_TYPE = createEnumMap(enums.primary);\r\n\r\nconst FIELD_MAP = {\r\n [cellPhone]: 'phone.cellPhone',\r\n [businessPhone]: 'phone.businessPhone',\r\n [homePhone]: 'phone.homePhone',\r\n [faxPhone]: 'phone.faxPhone',\r\n};\r\n\r\nconst NO_PHONE = 'No_Phone';\r\n\r\nconst TEXT_SUPPORTED_COUNTRIES = ['us', 'ca', 'mx'];\r\n\r\nconst DEFAULT_PHONE = {\r\n type: NO_PHONE,\r\n phone: {\r\n countryCode: undefined,\r\n areaCode: undefined,\r\n number: undefined,\r\n country: undefined,\r\n },\r\n}; // Setting undefined to avoid Formik validation on Add Phone click\r\n\r\nexport {\r\n NO_PHONE,\r\n FIELD_MAP,\r\n PHONE_TYPE,\r\n DEFAULT_PHONE,\r\n TEXT_SUPPORTED_COUNTRIES,\r\n};\r\n","const calculateTextWidth = (\r\n text,\r\n fontSize = 16,\r\n fontWeight = '600',\r\n fontFamily = 'Open Sans',\r\n fontStyle = 'normal',\r\n fontVariant = 'normal',\r\n) => {\r\n const canvas = document.createElement('canvas');\r\n const context = canvas.getContext('2d');\r\n context.font = `${fontStyle} ${fontVariant} ${fontWeight} ${fontSize} ${fontFamily}`;\r\n return context.measureText(`${text}`).width;\r\n};\r\n\r\nexport default calculateTextWidth;\r\n","import { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { useMemo, memo, useCallback } from 'react';\r\nimport highlightSelectedTextStyle from '../styles/HighlightSelectedTextStyle';\r\n\r\nconst useStyles = makeStyles(highlightSelectedTextStyle, { name: 'HighlightAutoSuggestText' });\r\n\r\nconst HighlightAutoSuggestText = ({ children, autoSuggestText, disabled }) => {\r\n const classes = useStyles();\r\n const textsToHighlight = useMemo(() => autoSuggestText.replace(/^[^a-zA-Z0-9 ]+|[^a-zA-Z0-9 ]+$/g, '')\r\n .split(' ').filter(el => el), [autoSuggestText]);\r\n\r\n const regExpToSplitTextByTextsToHighlight = () => {\r\n const regExp = textsToHighlight.reduce(\r\n (acc, text, index) => acc + text + (index !== textsToHighlight.length - 1 ? '|' : ''), '',\r\n );\r\n return new RegExp(`(${regExp})`, 'gi');\r\n };\r\n\r\n const textArray = useMemo(() => {\r\n if (autoSuggestText) return children.split(regExpToSplitTextByTextsToHighlight()).filter(el => el);\r\n return [children];\r\n }, [children, autoSuggestText]);\r\n\r\n const shouldHighLightText = (text = '') => textsToHighlight.some(\r\n searchedText => text.toLowerCase().startsWith(searchedText.toLowerCase()),\r\n );\r\n\r\n const renderChildren = useCallback(() => textArray.map((text, index) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n {shouldHighLightText(text) && !index\r\n ? {text}\r\n : {text}}\r\n \r\n )), [children, autoSuggestText]);\r\n\r\n return renderChildren();\r\n};\r\n\r\nHighlightAutoSuggestText.propTypes = {\r\n children: PropTypes.string,\r\n autoSuggestText: PropTypes.string,\r\n};\r\n\r\nHighlightAutoSuggestText.defaultProps = {\r\n label: '',\r\n children: '',\r\n};\r\n\r\nexport default memo(HighlightAutoSuggestText);\r\n","import { Navigate } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport useRouter from 'Commons/components/business/provider/useRouter';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport ErrorBoundaries from '../../errorboundaries/components/ErrorBoundaries';\r\n\r\nconst ProtectedRoute = ({ componentProps, loggedIn, path, redirectPathName = '/', componentName, ...props }) => {\r\n const Component = useConstructor(() => window.withProvider(componentName, componentProps, false));\r\n const { location, match, history } = useRouter(path);\r\n\r\n const { pathname = '' } = location;\r\n\r\n return loggedIn\r\n ? (\r\n \r\n \r\n \r\n )\r\n : (\r\n \r\n );\r\n};\r\n\r\nProtectedRoute.propTypes = {\r\n componentName: PropTypes.string,\r\n componentProps: PropTypes.object,\r\n loggedIn: PropTypes.any,\r\n path: PropTypes.string,\r\n redirectPathName: PropTypes.string,\r\n};\r\n\r\nexport default ProtectedRoute;\r\n","\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, Loader, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport buttonTextStyles from '../styles/ButtonTextStyles';\r\n\r\nconst useStyles = makeStyles(buttonTextStyles);\r\n\r\nconst ButtonText = ({ isButtonLoading, loadingText, label, ...props }) => {\r\n const classes = useStyles(props);\r\n return (\r\n isButtonLoading\r\n ? (\r\n \r\n \r\n { loadingText }\r\n \r\n )\r\n : label\r\n );\r\n};\r\n\r\nButtonText.propTypes = {\r\n loadingText: PropTypes.string,\r\n isButtonLoading: PropTypes.bool,\r\n label: PropTypes.string,\r\n classes: PropTypes.object,\r\n};\r\n\r\nButtonText.defaultProps = {\r\n loadingText: localisable.saving,\r\n isButtonLoading: false,\r\n label: localisable.save,\r\n};\r\n\r\nexport default React.memo(ButtonText);\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nexport const EVENT = createEnumMap(['onClick', 'onHover'],\r\n key => key.replace(/([A-Z])/g, match => `_${match}`).toUpperCase());\r\n\r\nexport const DISABLED_LISTENERS = {\r\n disableFocusListener: true,\r\n disableHoverListener: true,\r\n disableTouchListener: true,\r\n};\r\n\r\nexport const DEFAULT_TRANSITION = { timeout: { enter: 0, exit: 0 } };\r\n","import { Typography } from 'Generic/componentlibrary/components/Components';\r\nimport HighlightAutoSuggestText from 'Commons/components/business/autosuggest/components/HighlightSelectedText';\r\nimport { useMemo, useCallback, memo } from 'react';\r\nimport getName from '../../../../../helpers/utils/NameHelper';\r\n\r\n/**\r\n * firstName - string\r\n * lastName - string\r\n * salutation - string\r\n * suffix - string\r\n * className - string\r\n */\r\nconst Name = ({\r\n firstName,\r\n lastName,\r\n businessName,\r\n suffix,\r\n preferredName,\r\n salutation,\r\n autoSuggestText,\r\n disabled,\r\n ...others\r\n}) => {\r\n const nameArray = useMemo(\r\n () => getName({ firstName, lastName, suffix, salutation, businessName, preferredName }).split(/( )/),\r\n [firstName, lastName, businessName, suffix, preferredName, salutation],\r\n );\r\n\r\n const renderNameArray = useCallback(() => nameArray.map((name, index) => (\r\n // eslint-disable-next-line react/no-array-index-key\r\n \r\n {name}\r\n \r\n )), [firstName, lastName, businessName, suffix, preferredName, salutation]);\r\n\r\n return (\r\n \r\n {renderNameArray()}\r\n \r\n );\r\n};\r\n\r\nName.propTypes = {\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n salutation: PropTypes.string,\r\n suffix: PropTypes.string,\r\n businessName: PropTypes.string,\r\n preferredName: PropTypes.string,\r\n autoSuggestText: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nName.defaultProps = {\r\n firstName: '',\r\n lastName: '',\r\n salutation: '',\r\n suffix: '',\r\n businessName: '',\r\n autoSuggestText: '',\r\n disabled: false,\r\n};\r\n\r\nexport default memo(Name);\r\n","import BaseComponent from '../../basecomponent/components/BaseComponent';\r\nimport { ListItem, Icon, ListItemText } from '../../../generic/componentlibrary/components/Components';\r\n\r\nexport default class FilterComponent extends BaseComponent {\r\n renderComponentTitle() {\r\n const { device, classes, componentLabel, onBack } = this.props;\r\n switch (device) {\r\n case 'isMobile':\r\n case 'isPhablet':\r\n case 'isTablet':\r\n return (\r\n
\r\n \r\n chevron_left\r\n {componentLabel}\r\n \r\n
\r\n );\r\n default:\r\n return (

{componentLabel}

);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
Default Component
\r\n );\r\n }\r\n}\r\n","import { useParams, useNavigate, useLocation } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { useContext } from 'react';\r\nimport RouterContext from 'Commons/contexts/RouterContext';\r\nimport getUUID from 'Commons/helpers/utils/generateUUID';\r\n\r\nconst getRoutePath = (location, params) => {\r\n const { pathname } = location;\r\n\r\n if (!Object.keys(params).length) {\r\n return pathname; // we don't need to replace anything\r\n }\r\n\r\n let path = pathname;\r\n Object.entries(params).forEach(([paramName, paramValue]) => {\r\n if (paramValue) {\r\n path = path.replace(paramValue, `:${paramName}?`);\r\n }\r\n });\r\n return path;\r\n};\r\n\r\nconst useRouter = (path) => {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const params = useParams();\r\n const { router } = useContext(RouterContext);\r\n\r\n const match = {\r\n url: location.pathname,\r\n isExact: false,\r\n params,\r\n path: path || getRoutePath(location, params),\r\n };\r\n\r\n const useBlocker = (shouldBlock) => {\r\n const blockerId = getUUID();\r\n router.getBlocker(blockerId, args => !shouldBlock(args));\r\n return () => router.deleteBlocker(blockerId); // cleanup on unmount\r\n };\r\n\r\n const navigateRoute = (pathArg, state, replace = false) => {\r\n if (typeof pathArg === 'string') {\r\n navigate(pathArg, { state, replace });\r\n } else {\r\n const { pathname, state: routeState = {} } = pathArg;\r\n navigate(pathname, { state: routeState, replace });\r\n }\r\n };\r\n\r\n const history = {\r\n push: (pathArg, state) => navigateRoute(pathArg, state),\r\n replace: (pathArg, state) => navigateRoute(pathArg, state),\r\n goBack: () => navigate(-1),\r\n block: useBlocker,\r\n location,\r\n match,\r\n };\r\n\r\n return { location, match, history };\r\n};\r\n\r\nexport default useRouter;\r\n","const paymentMethodStyle = theme => ({\r\n autoWidth: { width: 'auto' },\r\n expiryCvvContainer: { padding: theme.spacing(0, 2) },\r\n angledLine: {\r\n margin: theme.spacing(1.5, 1.5, 0, 2),\r\n height: 32,\r\n width: 1,\r\n backgroundColor: theme.palette.common.black,\r\n transform: 'rotate(25deg)',\r\n },\r\n largeFont: {\r\n ...theme.typography.h6,\r\n textAlign: 'left',\r\n },\r\n placeholderAlign: { '& input::placeholder': { textAlign: 'center' } },\r\n placeholderFontSize: { '& input::placeholder': { ...theme.typography.h6 } },\r\n helperText: { fontSize: 12, color: theme.palette.text.primary, width: 'auto' },\r\n numberFields: {\r\n '& input': { ...theme.typography.h5, textOverflow: 'initial' },\r\n '& input::placeholder': { ...theme.typography.h5, textOverflow: 'initial' },\r\n },\r\n info: {\r\n color: 'Red',\r\n verticalAlign: 'middle',\r\n paddingRight: theme.spacing(1),\r\n },\r\n paymentField: { width: '50%', paddingTop: theme.spacing(2) },\r\n disabled: { backgroundColor: theme.palette.text.disabled },\r\n leftAlignText: { textAlign: 'left' },\r\n error: { color: theme.palette.error.main },\r\n cvvContainer: { width: 80 },\r\n cvvError: { textAlign: 'right' },\r\n});\r\nexport default paymentMethodStyle;\r\n","import * as unflatten from 'unflatten';\r\nimport { FilterTypes } from '../../components/business/filterOverlay/components/configs/FilterConfigs';\r\nimport { extractValueFromObject, isValidValue } from './DataHelpers';\r\n/**\r\n * @name convertAppliedFiltersToValues\r\n * @description Normalizes the filterApplied to a value\r\n * @param {*} appliedFilters The current applied filters\r\n */\r\nconst convertAppliedFiltersToValues = (appliedFilters = {}, availableFilters) => {\r\n const filtersActiveKeys = Object.keys(appliedFilters);\r\n if (appliedFilters && filtersActiveKeys.length > 0) {\r\n const newFilterValues = {};\r\n filtersActiveKeys.forEach((key) => {\r\n if (availableFilters[key] && availableFilters[key].type === FilterTypes.MULTI_SELECT) {\r\n if (Array.isArray(appliedFilters[key].value)) {\r\n newFilterValues[key] = appliedFilters[key].value;\r\n } else {\r\n newFilterValues[key] = [appliedFilters[key].value];\r\n }\r\n } else {\r\n newFilterValues[key] = appliedFilters[key].value || {};\r\n }\r\n });\r\n return newFilterValues;\r\n }\r\n return {};\r\n};\r\n\r\nconst cleanseTheFilters = (filters = {}) => {\r\n const filterKeys = Object.keys(filters);\r\n const cleansedFilters = {};\r\n if (filterKeys.length > 0) {\r\n filterKeys.forEach((key) => {\r\n if (isValidValue(filters[key])) {\r\n const filterValue = filters[key];\r\n if (Array.isArray(filterValue) && filterValue.length > 0) {\r\n cleansedFilters[key] = filters[key];\r\n } else if (typeof filterValue === 'object' && Object.keys(filterValue).length > 0) {\r\n const cleanedObject = cleanseTheFilters(filterValue);\r\n if (Object.keys(cleanedObject).length > 0) {\r\n cleansedFilters[key] = cleanseTheFilters(filterValue);\r\n }\r\n } else if (typeof filterValue === 'string' && filterValue.length > 0) {\r\n cleansedFilters[key] = filters[key];\r\n } else if (typeof filterValue === 'boolean') {\r\n cleansedFilters[key] = filters[key];\r\n }\r\n }\r\n });\r\n }\r\n return cleansedFilters;\r\n};\r\n\r\n/**\r\n * @name constructFilterRequest\r\n * @description Given all filters and current filters applied, it will return filters request\r\n * @param {Object} allFilters All Available Filters for work center\r\n * @param {Object} currentFilters Current Filters Applied\r\n */\r\nconst constructFilterRequest = (allFilters = {}, currentFilters = {}) => {\r\n const currentFiltersKeys = Object.keys(currentFilters);\r\n const newSearchRequest = {\r\n terms: {},\r\n range: {},\r\n };\r\n const newFiltersApplied = {};\r\n\r\n currentFiltersKeys.forEach((filter) => {\r\n if (allFilters[filter]) {\r\n const { type, apiMapping, label, hidden = false } = allFilters[filter]; // Filter from all available filter - The current filter\r\n switch (type) {\r\n case FilterTypes.NUMBER_RANGE:\r\n case FilterTypes.DATE_RANGE:\r\n newSearchRequest.range[apiMapping] = currentFilters[filter];\r\n newFiltersApplied[filter] = {\r\n label,\r\n value: currentFilters[filter],\r\n hidden,\r\n };\r\n break;\r\n case FilterTypes.SINGLE_SELECT:\r\n newSearchRequest.terms[apiMapping] = [extractValueFromObject(currentFilters[filter])];\r\n newFiltersApplied[filter] = {\r\n label,\r\n value: extractValueFromObject(currentFilters[filter]),\r\n hidden,\r\n };\r\n break;\r\n case FilterTypes.MULTI_SELECT:\r\n if (currentFilters[filter] && Array.isArray(currentFilters[filter]) && currentFilters[filter].length > 0) {\r\n newSearchRequest.terms[apiMapping] = [...currentFilters[filter]];\r\n }\r\n newFiltersApplied[filter] = {\r\n label,\r\n value: Array.isArray(currentFilters[filter]) ? [...currentFilters[filter]] : [currentFilters[filter]],\r\n hidden,\r\n };\r\n break;\r\n default:\r\n newSearchRequest.terms[apiMapping] = [currentFilters[filter]];\r\n newFiltersApplied[filter] = {\r\n label,\r\n value: [currentFilters[filter]],\r\n hidden,\r\n };\r\n }\r\n }\r\n });\r\n return {\r\n searchRequest: [unflatten(newSearchRequest)],\r\n filtersApplied: newFiltersApplied,\r\n };\r\n};\r\n\r\nexport {\r\n constructFilterRequest,\r\n convertAppliedFiltersToValues,\r\n cleanseTheFilters,\r\n};\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst PHONE_FIELDS = createEnumMap([\r\n 'countryCode',\r\n 'areaCode',\r\n 'country',\r\n 'number'], key => key.replace(/[A-Z]/g, match => `_${match}`).toUpperCase());\r\n\r\nconst PREFERRED_COUNTRIES_LIST = ['us', 'ca'];\r\n\r\nexport { PHONE_FIELDS, PREFERRED_COUNTRIES_LIST };\r\n","import { UNIT_ENDPOINTS, CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport { VIEW } from 'Commons/config/constants/Constants';\r\nimport CONFIG_TYPE from 'External/containers/configuration/config/ConfigRequestType';\r\nimport { ENTITY_TYPE } from 'External/containers/configuration/config/Constants';\r\nimport { ADVANCE_OPTIONS_ID } from 'External/containers/facilityConfiguration/config/Constants';\r\n\r\nconst callApi = (onAction, endPoint, body,\r\n callback = () => { }, method = 'POST', shouldSendCustomHeader = true) => {\r\n const api = {\r\n method: 'read',\r\n action: {\r\n methodType: `${method}`,\r\n endPoint,\r\n body,\r\n ...shouldSendCustomHeader && {\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n },\r\n },\r\n };\r\n if (onAction) {\r\n onAction({\r\n config: [{\r\n api,\r\n callback,\r\n }],\r\n });\r\n }\r\n};\r\n\r\nconst fetchInsuranceConfiguration = (onAction, facilityId, callback) => {\r\n const body = {\r\n view: VIEW.detail.value,\r\n filter: [{\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE],\r\n entityType: [ENTITY_TYPE.FACILITY],\r\n entityId: [facilityId],\r\n },\r\n }],\r\n };\r\n callApi(onAction, CONFIG_ENDPOINTS.search, body, callback, 'POST', false);\r\n};\r\n\r\nconst fetchInsuranceCoverage = (onAction, facilityId, planId, coverageId, provider, callback) => {\r\n const body = {\r\n view: VIEW.detail.value,\r\n filter: [...planId !== ADVANCE_OPTIONS_ID && planId\r\n ? [{\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE_COVERAGE],\r\n entityType: [ENTITY_TYPE.SYSTEM_FACILITY],\r\n value: { planId: [planId] },\r\n },\r\n },\r\n ] : [{\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE_COVERAGE],\r\n entityType: [ENTITY_TYPE.FACILITY],\r\n entityId: [facilityId],\r\n },\r\n }], ...provider\r\n ? [{\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE_PROVIDER],\r\n entityType: [ENTITY_TYPE.SYSTEM_FACILITY],\r\n id: [provider],\r\n },\r\n }] : [],\r\n ...coverageId\r\n ? [{\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE_COVERAGE],\r\n id: [coverageId],\r\n entityType: [ENTITY_TYPE.FACILITY],\r\n entityId: [facilityId],\r\n },\r\n },\r\n {\r\n terms: {\r\n configType: [CONFIG_TYPE.INSURANCE_COVERAGE],\r\n id: [coverageId],\r\n entityType: [ENTITY_TYPE.SYSTEM_FACILITY],\r\n },\r\n },\r\n ] : [],\r\n ],\r\n };\r\n callApi(onAction, CONFIG_ENDPOINTS.search, body, callback, 'POST', false);\r\n};\r\n\r\nconst fetchInsuranceInfo = (onAction, unitId, body, callback) => {\r\n callApi(onAction, UNIT_ENDPOINTS.insuranceInfo(unitId), body, callback);\r\n};\r\n\r\nconst saveInsuranceInfo = (onAction, unitId, body, callback) => {\r\n callApi(onAction, UNIT_ENDPOINTS.saveInsurance(unitId), body, callback);\r\n};\r\n\r\nconst cancelInsurance = (onAction, unitId, callback) => {\r\n callApi(onAction, UNIT_ENDPOINTS.cancelInsurance(unitId), {}, callback);\r\n};\r\n\r\nexport { fetchInsuranceConfiguration, fetchInsuranceCoverage, fetchInsuranceInfo, saveInsuranceInfo, cancelInsurance };\r\n","\r\nconst DEFAULT_PADDING = 28;\r\nconst PADDING_HIKE = 16;\r\nconst SCROLL_TIME = 66;\r\nconst DEFAULT_SECTION_ID = '-1';\r\n\r\nconst ALIAS = { ALL: 'all' };\r\n\r\nexport {\r\n DEFAULT_PADDING,\r\n PADDING_HIKE,\r\n SCROLL_TIME,\r\n DEFAULT_SECTION_ID,\r\n ALIAS,\r\n};\r\n","import { deepMerge, isValidObject, isNumber } from 'Commons/helpers/utils/DataHelpers';\r\n\r\nconst geUpdatedTouchedOnAdd = (touched) => {\r\n const touchedData = {};\r\n Object.keys(touched).forEach((touchedKey) => {\r\n touchedData[(Number(touchedKey) + 1).toString()] = touched[touchedKey];\r\n });\r\n return touchedData;\r\n};\r\n\r\nconst shiftKeysUponDelete = (indexToDeleteFrom, values) => {\r\n const shiftedValues = {};\r\n Object.keys(values).forEach((editedKey) => {\r\n const intTouchedKey = Number(editedKey);\r\n if (intTouchedKey < indexToDeleteFrom) {\r\n shiftedValues[editedKey] = values[editedKey];\r\n } else if (intTouchedKey > indexToDeleteFrom) {\r\n shiftedValues[(intTouchedKey - 1).toString()] = values[editedKey];\r\n }\r\n });\r\n return shiftedValues;\r\n};\r\n\r\nconst getValuesAndTouchedUponDelete = (indexToDeleteFrom, data, initialValues, editedValues, touched) => {\r\n const cleanedEditedValues = shiftKeysUponDelete(indexToDeleteFrom, editedValues);\r\n\r\n // Creating data for Reset Form - Empty objects for new rows, previous initial values for existing rows, removing row at index given\r\n const updatedValues = [\r\n ...data.slice(0, data.length - initialValues.length).map(() => ({})),\r\n ...initialValues,\r\n ].filter((_, index) => indexToDeleteFrom !== index);\r\n\r\n const touchedData = shiftKeysUponDelete(indexToDeleteFrom, touched);\r\n\r\n const resetFormValue = Object.assign({}, updatedValues);\r\n const valueToSet = deepMerge(resetFormValue, cleanedEditedValues);\r\n\r\n return [resetFormValue, valueToSet, touchedData];\r\n};\r\n\r\nconst setInitialValuesTouched = (setFieldValue, setFieldTouched, currentParentKey = '', invalidData = {}) => {\r\n const touched = {};\r\n Object.keys(invalidData).forEach((key) => {\r\n const currentValue = invalidData[key];\r\n const currentKey = currentParentKey ? `${currentParentKey}.${key}` : key;\r\n if (isValidObject(currentValue)) {\r\n touched[key] = setInitialValuesTouched(setFieldValue, setFieldTouched, currentKey, currentValue);\r\n } else {\r\n touched[key] = true;\r\n setFieldValue(currentKey, currentValue);\r\n setFieldTouched(currentKey, true);\r\n }\r\n });\r\n return touched;\r\n};\r\n\r\nconst resetInvalidRows = (setFieldValue, setFieldTouched, currentParentKey = '', values, indexes = []) => {\r\n if (indexes.length) {\r\n Object.keys(values).forEach((key) => {\r\n if (isNumber(key) ? indexes.includes(key) : true) {\r\n const currentValue = values[key];\r\n const currentKey = currentParentKey ? `${currentParentKey}.${key}` : key;\r\n if (isValidObject(currentValue)) {\r\n resetInvalidRows(setFieldValue, setFieldTouched, currentKey, currentValue, indexes);\r\n } else {\r\n setFieldValue(currentKey, currentValue);\r\n setFieldTouched(currentKey, true);\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\r\nexport { geUpdatedTouchedOnAdd, getValuesAndTouchedUponDelete, setInitialValuesTouched, resetInvalidRows };\r\n","\r\nimport { Grid, makeStyles, FormLabel, FormHelperText } from 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport formItemStyle from '../styles/FormItemStyle';\r\n\r\nconst useStyles = makeStyles(formItemStyle, { name: 'FormItem' });\r\n\r\nconst FormItem = React.forwardRef((props, ref) => {\r\n const {\r\n label,\r\n padding,\r\n disabled,\r\n children,\r\n required,\r\n className,\r\n preferred,\r\n helperText,\r\n onlyPadding,\r\n separatorClassName,\r\n classes: classesProp,\r\n ...others\r\n } = props;\r\n\r\n let resultantPadding = padding;\r\n const { innerWidth } = window;\r\n if (!resultantPadding) {\r\n resultantPadding = 16;\r\n if (innerWidth <= screenMaxWidth.laptop) {\r\n resultantPadding = 12;\r\n }\r\n if (innerWidth <= screenMaxWidth.tablet) {\r\n resultantPadding = 16;\r\n }\r\n }\r\n\r\n const classes = useStyles({ classes: classesProp, ...props, padding: resultantPadding });\r\n\r\n const renderWithLabelAndHelperText = () => (\r\n \r\n {\r\n label && (\r\n \r\n {label}\r\n \r\n )\r\n }\r\n {children}\r\n {helperText && {helperText}}\r\n \r\n );\r\n\r\n return (\r\n \r\n {\r\n !onlyPadding && (\r\n \r\n {\r\n (required || preferred)\r\n && (\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n { (label || helperText) ? renderWithLabelAndHelperText() : children}\r\n \r\n );\r\n});\r\n\r\nFormItem.propTypes = {\r\n label: PropTypes.node,\r\n required: PropTypes.bool,\r\n children: PropTypes.node,\r\n disabled: PropTypes.bool,\r\n classes: PropTypes.object,\r\n preferred: PropTypes.bool,\r\n helperText: PropTypes.node,\r\n className: PropTypes.string,\r\n onlyPadding: PropTypes.bool,\r\n separatorClassName: PropTypes.string,\r\n padding: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n\r\nFormItem.defaultProps = {\r\n className: '',\r\n separatorClassName: '',\r\n};\r\n\r\nexport default FormItem;\r\n","import React from 'react';\r\nimport { Grid, withStyles, Card as MuiCard }\r\nfrom 'Commons/components/generic/componentlibrary/components/Components';\r\nimport cardStyle from '../styles/CardStyle';\r\n\r\nclass Card extends React.Component {\r\n render() {\r\n const { addon, children, className, classes, elevation, ...props } = this.props;\r\n return (\r\n \r\n \r\n {\r\n Object.keys(addon).map((key) => {\r\n const { direction: addonDirection, components, spacing, ...GridProps } = addon[key];\r\n const direction = (addonDirection === 'column')\r\n ? `${addonDirection}-reverse` : addonDirection;\r\n return (\r\n classes[key]\r\n && (\r\n \r\n {\r\n components.map((component, index) => (\r\n \r\n {component}\r\n \r\n ))\r\n }\r\n\r\n \r\n )\r\n );\r\n })\r\n }\r\n {children}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nCard.propTypes = {\r\n addon: PropTypes.shape({\r\n topLeft: PropTypes.shape({\r\n components: PropTypes.arrayOf(PropTypes.node),\r\n direction: PropTypes.oneOf(['row', 'column']),\r\n }),\r\n topRight: PropTypes.shape({\r\n components: PropTypes.arrayOf(PropTypes.node),\r\n direction: PropTypes.oneOf(['row', 'column']),\r\n }),\r\n bottomLeft: PropTypes.shape({\r\n components: PropTypes.arrayOf(PropTypes.node),\r\n direction: PropTypes.oneOf(['row', 'column']),\r\n }),\r\n bottomRight: PropTypes.shape({\r\n components: PropTypes.arrayOf(PropTypes.node),\r\n direction: PropTypes.oneOf(['row', 'column']),\r\n }),\r\n }),\r\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\r\n className: PropTypes.string,\r\n classes: PropTypes.object.isRequired,\r\n elevation: PropTypes.number,\r\n spacing: PropTypes.number,\r\n};\r\n\r\nCard.defaultProps = {\r\n addon: {},\r\n className: '',\r\n elevation: 0,\r\n spacing: 0,\r\n};\r\n\r\nexport default withStyles(cardStyle)(Card);\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport enums from './Enums';\r\n\r\nconst GATE_ACCESS_TYPE = mapEnum(enums.gateAccessType);\r\n\r\nconst { unitOverlock, gateLockout } = localisable;\r\n\r\nconst EVENTS_TYPE_LIST = [\r\n {\r\n label: gateLockout,\r\n value: GATE_ACCESS_TYPE.Ledger_Gate_Access.value,\r\n },\r\n {\r\n label: unitOverlock,\r\n value: GATE_ACCESS_TYPE.Unit_Overlock_Status.value,\r\n },\r\n];\r\nexport { GATE_ACCESS_TYPE, EVENTS_TYPE_LIST };\r\n","export default {\r\n gateAccessType: [\r\n 'Ledger_Gate_Access',\r\n 'Unit_Gate_Access',\r\n 'Unit_Overlock_Status',\r\n ],\r\n};\r\n","import { deepCamelize, deepDecamelize } from 'Commons/helpers/api/Formatter';\r\nimport { getCookie } from 'Commons/redux/helper/CookieManager';\r\nimport COOKIE_KEY from 'Commons/redux/config/CookieKey';\r\nimport { isBaseUrlAlpha } from 'Commons/helpers/utils/RouteHelpers';\r\nimport getUUID from 'Commons/helpers/utils/generateUUID';\r\n\r\nclass WebSocketService {\r\n static instance = null;\r\n\r\n callback = {};\r\n\r\n static getInstance() {\r\n if (!WebSocketService.instance) {\r\n WebSocketService.instance = new WebSocketService();\r\n }\r\n return WebSocketService.instance;\r\n }\r\n\r\n constructor() {\r\n this.socketRef = null;\r\n this.socketId = getUUID();\r\n }\r\n\r\n connect(currentFacility, prevFacility) {\r\n const { socketId } = this;\r\n const baseUrl = isBaseUrlAlpha() ? process.env.ALPHA_WEBSOCKET_URL : process.env.WEBSOCKET_URL;\r\n const path = `${baseUrl}user?access_token=${getCookie(COOKIE_KEY.TOKEN)}&socket_id=${socketId}`;\r\n this.socketRef = new WebSocket(path);\r\n\r\n this.socketRef.onopen = () => {\r\n this.updateChannelsGroup(currentFacility, prevFacility);\r\n };\r\n this.socketRef.onmessage = (message) => {\r\n this.socketNewMessage(message.data);\r\n };\r\n\r\n // this.socketRef.onerror = () => this.retry(currentFacility, 'error');\r\n this.socketRef.onclose = () => this.retry(currentFacility);\r\n }\r\n\r\n retry = (currentFacility) => {\r\n setTimeout(() => { this.connect(currentFacility); }, 5000);\r\n };\r\n\r\n disConnect() {\r\n this.socketRef.close(1000, 'expired_group');\r\n }\r\n\r\n getSocketId() {\r\n return this.socketId;\r\n }\r\n\r\n socketNewMessage(data) {\r\n const parsedData = JSON.parse(data);\r\n if (Object.keys(this.callback).length === 0) {\r\n return;\r\n }\r\n this.callback.onMessage(deepCamelize(parsedData.message));\r\n }\r\n\r\n updateChannelsGroup(currFacility, prevFacility) {\r\n this.sendMessage(deepDecamelize({\r\n command: 'update_channels_group',\r\n currFacility,\r\n prevFacility,\r\n }));\r\n }\r\n\r\n discardChannelsGroup(currFacility) {\r\n this.sendMessage(deepDecamelize({\r\n command: 'discard_channels_group',\r\n currFacility,\r\n }));\r\n }\r\n\r\n addCallback(onWebSocketMessage) {\r\n this.callback.onMessage = onWebSocketMessage;\r\n }\r\n\r\n sendMessage(data) {\r\n try {\r\n this.socketRef.send(JSON.stringify({ ...data }));\r\n } catch {\r\n // handle the error\r\n }\r\n }\r\n\r\n state() {\r\n return this.socketRef.readyState;\r\n }\r\n}\r\n\r\nconst WebSocketInstance = WebSocketService.getInstance();\r\n\r\nexport default WebSocketInstance;\r\n","const enums = {\r\n filters: [\r\n 'Autopay_Enabled_Tenants',\r\n 'Saved_Cards_With_Balance_Due',\r\n 'Saved_Accounts_With_Balance_Due',\r\n ],\r\n};\r\n\r\nexport default enums;\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst BATCH_PAYMENT_FILTER_TYPE = mapEnum(enums.filters);\r\n\r\nexport { BATCH_PAYMENT_FILTER_TYPE };\r\n","import { isValidEmail } from './validator/Validator';\r\n\r\nconst isStringEmpty = str => str === '';\r\n\r\n/**\r\n* @description\r\n* - Removes leading and trailing white space and\r\n* - Replaces double spaces with single space throughout the string\r\n* @param {String} string\r\n* @return {String} White space trimmed string\r\n*/\r\nconst getWhiteSpaceTrimmedString = string => (string || '').trim().replace(/\\s\\s+/g, ' ');\r\n\r\nconst getValidEmailsFromString = (emailsString = '') => {\r\n const emails = emailsString.split(',').map(email => email.trim());\r\n return emails.filter(email => isValidEmail(email));\r\n};\r\n\r\nconst stringifyEmailList = emailList => (emailList || []).join(', ') || '';\r\n\r\nexport { isStringEmpty, getWhiteSpaceTrimmedString, getValidEmailsFromString, stringifyEmailList };\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { FAVICON_LOC, WINDOW_SCALE_FACTOR } from '../config/Constants';\r\n\r\nconst convertToPdfUrl = (data) => {\r\n const buf = Buffer.from(data, 'base64');\r\n const blob = new Blob([buf], { type: 'application/pdf' });\r\n return URL.createObjectURL(blob);\r\n};\r\n\r\nconst renderInPdf = (pdfUrl, title, openInNewWindow = true) => {\r\n const windowDimension = openInNewWindow\r\n ? `height=${WINDOW_SCALE_FACTOR * window.innerHeight},width=${WINDOW_SCALE_FACTOR * window.innerWidth}`\r\n : undefined;\r\n const pdfWindow = window.open(pdfUrl, '_blank', windowDimension);\r\n\r\n if (!pdfWindow) {\r\n // TODO: Show a model to user showing how to allow popups\r\n return;\r\n }\r\n pdfWindow.onload = () => {\r\n setTimeout(() => {\r\n pdfWindow.document.title = title || localisable.report;\r\n let link = pdfWindow.document.querySelector(\"link[rel~='icon']\");\r\n if (!link) {\r\n link = pdfWindow.document.createElement('link');\r\n link.rel = 'icon';\r\n pdfWindow.document.getElementsByTagName('head')[0].appendChild(link);\r\n }\r\n link.href = FAVICON_LOC;\r\n }, 600);\r\n };\r\n};\r\n\r\nexport { renderInPdf, convertToPdfUrl };\r\n","import { getCleanPhoneNumber } from 'External/containers/tenant/form/utils/Utils';\r\n\r\nconst phoneFormatter = (phoneNumber) => {\r\n const cleansedNumber = getCleanPhoneNumber(phoneNumber);\r\n return cleansedNumber.replace(/^(\\d{1})(\\d{3})(\\d{3})(\\d{4})(\\w*)$/, '($2) - $3 - $4 $5');\r\n};\r\n\r\nexport { phoneFormatter };\r\n","import { BrowserTracing } from '@sentry/tracing';\r\nimport * as Sentry from '@sentry/react';\r\n\r\nconst environment = process.env.MODE.toLowerCase();\r\n\r\nconst ROLLBAR_CONFIG = {\r\n environment,\r\n accessToken: process.env.ROLLBAR_ACCESS_TOKEN,\r\n captureUncaught: true,\r\n captureUnhandledRejections: true,\r\n\r\n payload: {\r\n environment,\r\n client: {\r\n javascript: {\r\n source_map_enabled: true, // false by default\r\n\r\n // -- Add this into your configuration ---\r\n code_version: process.env.CODE_VERSION,\r\n // ---------------------------------------\r\n\r\n // Optionally have Rollbar guess which frames the error was\r\n // thrown from when the browser does not provide line\r\n // and column numbers.\r\n guess_uncaught_frames: true,\r\n },\r\n },\r\n },\r\n};\r\n\r\n\r\nconst AIRBRAKE_CONFIG = {\r\n environment,\r\n projectId: process.env.AIRBRAKE_PROJECT_ID,\r\n projectKey: process.env.AIRBRAKE_PROJECT_KEY,\r\n};\r\n\r\n\r\nconst SENTRY_CONFIG = {\r\n dsn: process.env.SENTRY_DSN,\r\n integrations: [new BrowserTracing(), new Sentry.Replay()],\r\n\r\n // Set tracesSampleRate to 1.0 to capture 100%\r\n // of transactions for performance monitoring.\r\n // We recommend adjusting this value in production\r\n tracesSampleRate: 1.0,\r\n environment,\r\n // This sets the sample rate to be 10%. You may want this to be 100% while\r\n // in development and sample at a lower rate in production\r\n replaysSessionSampleRate: 0.1,\r\n // If the entire session is not sampled, use the below sample rate to sample\r\n // sessions when an error occurs.\r\n replaysOnErrorSampleRate: 1.0,\r\n};\r\n\r\nexport { ROLLBAR_CONFIG, AIRBRAKE_CONFIG, SENTRY_CONFIG };\r\n","import { Notifier } from '@airbrake/browser';\r\nimport * as Sentry from '@sentry/react';\r\nimport { AIRBRAKE_CONFIG } from 'Commons/config/constants/ErrorTracking';\r\nimport { isProduction, isStaging } from 'Commons/helpers/utils/Utils';\r\nimport { withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport GeneralPages from 'Generic/generalPages/components/GeneralPages';\r\nimport { VARIANT } from 'Generic/generalPages/config/Config';\r\nimport { Context, getRollbarFromContext } from '@rollbar/react';\r\nimport ErrorBoundariesStyle from '../styles/ErrorBoundariesStyle';\r\n\r\n\r\n/* eslint-disable react/no-unused-state */\r\nclass ErrorBoundaries extends React.Component {\r\n static contextType = Context;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n hasError: false,\r\n error: null,\r\n info: null,\r\n };\r\n if (isStaging()) {\r\n this.airbrake = new Notifier(AIRBRAKE_CONFIG);\r\n }\r\n }\r\n\r\n componentDidCatch(error, info) {\r\n this.setState({ hasError: true, error, info });\r\n\r\n if (isStaging()) {\r\n // Send error to Airbrake\r\n this.airbrake.notify({\r\n error,\r\n params: { info },\r\n });\r\n\r\n // Send error to Sentry\r\n Sentry.withScope((scope) => {\r\n scope.setExtras(info);\r\n const eventId = Sentry.captureException(error);\r\n this.setState({ eventId });\r\n });\r\n }\r\n\r\n if (isProduction()) {\r\n const rollbar = getRollbarFromContext(this.context);\r\n rollbar.error(error);\r\n }\r\n }\r\n\r\n render() {\r\n const { children, useAnchorTag, classes } = this.props;\r\n const { hasError } = this.state;\r\n if (hasError) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return children;\r\n }\r\n}\r\n\r\nErrorBoundaries.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n useAnchorTag: PropTypes.bool,\r\n classes: PropTypes.object,\r\n};\r\nErrorBoundaries.defaultProps = { useAnchorTag: false };\r\n\r\nexport default withStyles(ErrorBoundariesStyle)(ErrorBoundaries);\r\n","/* eslint-disable import/prefer-default-export */\r\nimport { isInternalDashboard } from 'Commons/helpers/utils/Utils';\r\nimport basePostProcessor from './BaseProcessor';\r\n\r\nconst customProcessors = () => {\r\n const { location: { pathname } } = window;\r\n return isInternalDashboard(pathname)\r\n // eslint-disable-next-line global-require\r\n ? require('../../../internal/redux/postProcessors/index')\r\n // eslint-disable-next-line global-require\r\n : require('../../../external/redux/postProcessors/index');\r\n};\r\n\r\nconst getPostProcessor = (postProcessorName) => {\r\n const allPostProcessors = {\r\n basePostProcessor,\r\n ...customProcessors(),\r\n };\r\n return allPostProcessors[postProcessorName];\r\n};\r\n\r\nexport { getPostProcessor };\r\n","class EventEmitter {\r\n constructor() {\r\n this.events = {};\r\n }\r\n\r\n emit(eventName, data) {\r\n const eventsList = this.events[eventName];\r\n if (eventsList) {\r\n eventsList.forEach((event) => {\r\n event.call(null, data);\r\n });\r\n }\r\n }\r\n\r\n subscribe(eventName, fn) {\r\n if (!this.events[eventName]) {\r\n this.events[eventName] = [];\r\n }\r\n\r\n this.events[eventName].push(fn);\r\n return () => {\r\n this.events[eventName] = this.events[eventName].filter(eventFn => fn !== eventFn);\r\n };\r\n }\r\n}\r\nconst eventEmitter = new EventEmitter();\r\nexport default eventEmitter;\r\n","\r\nimport { useRef, useEffect } from 'react';\r\nimport {\r\n makeStyles, Paper, ClickAwayListener,\r\n Popper, Grid,\r\n} from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { TextField } from '../../textfield/components/TextField';\r\nimport popdownStyle from '../styles/PopdownStyle';\r\n\r\nconst useStyles = makeStyles(popdownStyle, { name: 'Popdown' });\r\n\r\nconst Popdown = (props) => {\r\n const selectRef = useRef();\r\n const selectContainerRef = useRef();\r\n const classes = useStyles(props);\r\n const inputRef = useRef({});\r\n const { shouldAutoFocus } = props;\r\n\r\n const getPaperStyle = () => {\r\n const { useContainerRef, PaperProps = {} } = props;\r\n const { width: anchorWidth } = useContainerRef\r\n ? selectContainerRef.current.getBoundingClientRect()\r\n : selectRef.current.getBoundingClientRect();\r\n const { width = anchorWidth } = PaperProps;\r\n return { width };\r\n };\r\n\r\n const onRef = (ref, containerRef) => {\r\n if (ref) {\r\n selectRef.current = ref;\r\n selectContainerRef.current = containerRef;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const { inputRef: propInputRef = inputRef } = props;\r\n if (shouldAutoFocus) {\r\n propInputRef.current.focus();\r\n }\r\n }, [shouldAutoFocus]);\r\n\r\n\r\n const {\r\n open,\r\n children,\r\n maxHeight,\r\n PaperProps: { className: paperClassName = '', ...PaperProps },\r\n onClickAway,\r\n TextFieldClasses,\r\n disablePortal,\r\n classes: ignore,\r\n useContainerRef,\r\n containerClassName,\r\n PopperProps: { className: popperClassName, parentRef, ...PopperProps },\r\n ...others\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {\r\n (open && children)\r\n && (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nPopdown.propTypes = {\r\n maxHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n classes: PropTypes.object,\r\n children: PropTypes.node,\r\n open: PropTypes.bool,\r\n PaperProps: PropTypes.object,\r\n TextFieldClasses: PropTypes.object,\r\n onClickAway: () => { },\r\n PopperProps: PropTypes.object,\r\n // set this to false to achieve modal like behavior\r\n disablePortal: PropTypes.bool,\r\n // By enabling this, popdown will use the text field container's width\r\n useContainerRef: PropTypes.bool,\r\n containerClassName: PropTypes.string,\r\n GridProps: PropTypes.object,\r\n shouldAutoFocus: PropTypes.bool,\r\n};\r\n\r\nPopdown.defaultProps = {\r\n maxHeight: 240,\r\n open: false,\r\n PaperProps: {},\r\n onClickAway: () => { },\r\n PopperProps: {},\r\n disablePortal: true,\r\n useContainerRef: false,\r\n};\r\n\r\nexport default Popdown;\r\n","\r\nconst arrowTheme = {\r\n arrowShadow: {\r\n '&[x-placement*=\"bottom\"] $arrow': { '&::before': { filter: 'drop-shadow(0px -1px 0px rgba(0,0,0,.1))' } },\r\n '&[x-placement*=\"top\"] $arrow': { '&::before': { filter: 'drop-shadow(0px 1px 0px rgba(0,0,0,.1))' } },\r\n '&[x-placement*=\"left\"] $arrow': { '&::before': { filter: 'drop-shadow(1px 0px 0px rgba(0,0,0,.1))' } },\r\n '&[x-placement*=\"right\"] $arrow': { '&::before': { filter: 'drop-shadow(-1px 0px 0px rgba(0,0,0,.1))' } },\r\n },\r\n};\r\n\r\n\r\nexport default arrowTheme;\r\n","const userProfileStyles = theme => ({\r\n pageHeader: { padding: theme.spacing(2) },\r\n pageBody: { padding: theme.spacing(2, 4, 2, 2) },\r\n shadows: {\r\n boxShadow: 'none',\r\n marginRight: theme.spacing(1),\r\n paddingTop: theme.spacing(3),\r\n },\r\n checkBoxRoot: {\r\n color: theme.palette.primary.main,\r\n padding: 0,\r\n marginRight: theme.spacing(1),\r\n marginLeft: theme.spacing(0.5),\r\n },\r\n checkboxLabel: { letterSpacing: 0.75 },\r\n userDetailsContainer: { paddingBottom: theme.spacing(4) },\r\n userInfoFieldContainer: { paddingBottom: theme.spacing(2) },\r\n expandIcon: { marginLeft: theme.spacing(1) },\r\n editPhoneNumber: { paddingLeft: theme.spacing(2) },\r\n expansionPanelSummary: { padding: theme.spacing(0), justifyContent: 'flex-start' },\r\n expansionPanelSummaryContent: { maxWidth: 'max-content' },\r\n footer: { paddingRight: theme.spacing(2) },\r\n});\r\n\r\nexport default userProfileStyles;\r\n","// Country model:\r\n// [\r\n// Country name,\r\n// Regions,\r\n// iso2 code,\r\n// International dial code,\r\n// Format (if available),\r\n// Order (if >1 country with same dial code),\r\n// Area codes (if >1 country with same dial code)\r\n// ]\r\n//\r\n// Regions:\r\n// ['america', 'europe', 'asia', 'oceania', 'africa']\r\n//\r\n// Sub-regions:\r\n// ['north-america', 'south-america', 'central-america', 'carribean',\r\n// 'european-union', 'ex-ussr', 'middle-east', 'north-africa']\r\n\r\nconst rawAllCountries = [\r\n [\r\n 'United States',\r\n ['america', 'north-america'],\r\n 'us',\r\n '1',\r\n '+. (...) ...-....',\r\n 0, 3,\r\n // 0, ['907', '205', '251', '256', '334', '479', '501', '870', '480', '520', '602', '623', '928', '209', '213', '310', '323', '408', '415', '510', '530', '559', '562', '619', '626', '650', '661', '707', '714', '760', '805', '818', '831', '858', '909', '916', '925', '949', '951', '303', '719', '970', '203', '860', '202', '302', '239', '305', '321', '352', '386', '407', '561', '727', '772', '813', '850', '863', '904', '941', '954', '229', '404', '478', '706', '770', '912', '808', '319', '515', '563', '641', '712', '208', '217', '309', '312', '618', '630', '708', '773', '815', '847', '219', '260', '317', '574', '765', '812', '316', '620', '785', '913', '270', '502', '606', '859', '225', '318', '337', '504', '985', '413', '508', '617', '781', '978', '301', '410', '207', '231', '248', '269', '313', '517', '586', '616', '734', '810', '906', '989', '218', '320', '507', '612', '651', '763', '952', '314', '417', '573', '636', '660', '816', '228', '601', '662', '406', '252', '336', '704', '828', '910', '919', '701', '308', '402', '603', '201', '609', '732', '856', '908', '973', '505', '575', '702', '775', '212', '315', '516', '518', '585', '607', '631', '716', '718', '845', '914', '216', '330', '419', '440', '513', '614', '740', '937', '405', '580', '918', '503', '541', '215', '412', '570', '610', '717', '724', '814', '401', '803', '843', '864', '605', '423', '615', '731', '865', '901', '931', '210', '214', '254', '281', '325', '361', '409', '432', '512', '713', '806', '817', '830', '903', '915', '936', '940', '956', '972', '979', '435', '801', '276', '434', '540', '703', '757', '804', '802', '206', '253', '360', '425', '509', '262', '414', '608', '715', '920', '304', '307'],\r\n ],\r\n [\r\n 'Canada',\r\n ['america', 'north-america'],\r\n 'ca',\r\n '1',\r\n '+. (...) ...-....',\r\n 1, 3,\r\n // 1, ['204', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905'],\r\n ],\r\n [\r\n 'Mexico',\r\n ['america', 'central-america'],\r\n 'mx',\r\n '52',\r\n ],\r\n [\r\n 'Afghanistan',\r\n ['asia'],\r\n 'af',\r\n '93',\r\n ],\r\n [\r\n 'Albania',\r\n ['europe'],\r\n 'al',\r\n '355',\r\n ],\r\n [\r\n 'Algeria',\r\n ['africa', 'north-africa'],\r\n 'dz',\r\n '213',\r\n ],\r\n [\r\n 'American Samoa',\r\n ['oceania'],\r\n 'as',\r\n '1684',\r\n ],\r\n [\r\n 'Andorra',\r\n ['europe'],\r\n 'ad',\r\n '376',\r\n ],\r\n [\r\n 'Angola',\r\n ['africa'],\r\n 'ao',\r\n '244',\r\n ],\r\n [\r\n 'Anguilla',\r\n ['america', 'carribean'],\r\n 'ai',\r\n '1264',\r\n ],\r\n [\r\n 'Antigua and Barbuda',\r\n ['america', 'carribean'],\r\n 'ag',\r\n '1268',\r\n ],\r\n [\r\n 'Argentina',\r\n ['america', 'south-america'],\r\n 'ar',\r\n '54',\r\n '+.. (..) ........',\r\n ],\r\n [\r\n 'Armenia',\r\n ['asia', 'ex-ussr'],\r\n 'am',\r\n '374',\r\n ],\r\n [\r\n 'Aruba',\r\n ['america', 'carribean'],\r\n 'aw',\r\n '297',\r\n ],\r\n [\r\n 'Australia',\r\n ['oceania'],\r\n 'au',\r\n '61',\r\n '+.. ... ... ...',\r\n ],\r\n [\r\n 'Austria',\r\n ['europe', 'european-union'],\r\n 'at',\r\n '43',\r\n ],\r\n [\r\n 'Azerbaijan',\r\n ['asia', 'ex-ussr'],\r\n 'az',\r\n '994',\r\n ],\r\n [\r\n 'Bahamas',\r\n ['america', 'carribean'],\r\n 'bs',\r\n '1242',\r\n ],\r\n [\r\n 'Bahrain',\r\n ['middle-east'],\r\n 'bh',\r\n '973',\r\n ],\r\n [\r\n 'Bangladesh',\r\n ['asia'],\r\n 'bd',\r\n '880',\r\n ],\r\n [\r\n 'Barbados',\r\n ['america', 'carribean'],\r\n 'bb',\r\n '1246',\r\n ],\r\n [\r\n 'Belarus',\r\n ['europe', 'ex-ussr'],\r\n 'by',\r\n '375',\r\n '+... (..) ... .. ..',\r\n ],\r\n [\r\n 'Belgium',\r\n ['europe', 'european-union'],\r\n 'be',\r\n '32',\r\n '+.. ... .. .. ..',\r\n ],\r\n [\r\n 'Belize',\r\n ['america', 'central-america'],\r\n 'bz',\r\n '501',\r\n ],\r\n [\r\n 'Benin',\r\n ['africa'],\r\n 'bj',\r\n '229',\r\n '+... .... ....',\r\n ],\r\n [\r\n 'Bermuda',\r\n ['america', 'north-america'],\r\n 'bm',\r\n '1441',\r\n ],\r\n [\r\n 'Bhutan',\r\n ['asia'],\r\n 'bt',\r\n '975',\r\n ],\r\n [\r\n 'Bolivia',\r\n ['america', 'south-america'],\r\n 'bo',\r\n '591',\r\n ],\r\n [\r\n 'Bosnia and Herzegovina',\r\n ['europe'],\r\n 'ba',\r\n '387',\r\n ],\r\n [\r\n 'Botswana',\r\n ['africa'],\r\n 'bw',\r\n '267',\r\n ],\r\n [\r\n 'Brazil',\r\n ['america', 'south-america'],\r\n 'br',\r\n '55',\r\n '+.. (..) .........',\r\n ],\r\n [\r\n 'British Indian Ocean Territory',\r\n ['asia'],\r\n 'io',\r\n '246',\r\n ],\r\n [\r\n 'British Virgin Islands',\r\n ['america', 'carribean'],\r\n 'vg',\r\n '1284',\r\n ],\r\n [\r\n 'Brunei',\r\n ['asia'],\r\n 'bn',\r\n '673',\r\n ],\r\n [\r\n 'Bulgaria',\r\n ['europe', 'european-union'],\r\n 'bg',\r\n '359',\r\n ],\r\n [\r\n 'Burkina Faso',\r\n ['africa'],\r\n 'bf',\r\n '226',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Burundi',\r\n ['africa'],\r\n 'bi',\r\n '257',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Cambodia',\r\n ['asia'],\r\n 'kh',\r\n '855',\r\n ],\r\n [\r\n 'Cameroon',\r\n ['africa'],\r\n 'cm',\r\n '237',\r\n ],\r\n [\r\n 'Cape Verde',\r\n ['africa'],\r\n 'cv',\r\n '238',\r\n '+... ... .. ..',\r\n ],\r\n [\r\n 'Caribbean Netherlands',\r\n ['america', 'carribean'],\r\n 'bq',\r\n '599',\r\n '',\r\n 1,\r\n ],\r\n [\r\n 'Cayman Islands',\r\n ['america', 'carribean'],\r\n 'ky',\r\n '1345',\r\n ],\r\n [\r\n 'Central African Republic',\r\n ['africa'],\r\n 'cf',\r\n '236',\r\n '+... .... ....',\r\n ],\r\n [\r\n 'Chad',\r\n ['africa'],\r\n 'td',\r\n '235',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Chile',\r\n ['america', 'south-america'],\r\n 'cl',\r\n '56',\r\n ],\r\n [\r\n 'China',\r\n ['asia'],\r\n 'cn',\r\n '86',\r\n '+.. ..-.........',\r\n ],\r\n [\r\n 'Colombia',\r\n ['america', 'south-america'],\r\n 'co',\r\n '57',\r\n ],\r\n [\r\n 'Comoros',\r\n ['africa'],\r\n 'km',\r\n '269',\r\n '+... ... ....',\r\n ],\r\n [\r\n 'Congo',\r\n ['africa'],\r\n 'cd',\r\n '243',\r\n ],\r\n [\r\n 'Congo',\r\n ['africa'],\r\n 'cg',\r\n '242',\r\n '+... .. .. .....',\r\n ],\r\n [\r\n 'Cook Islands',\r\n ['oceania'],\r\n 'ck',\r\n '682',\r\n ],\r\n [\r\n 'Costa Rica',\r\n ['america', 'central-america'],\r\n 'cr',\r\n '506',\r\n '+... ....-....',\r\n ],\r\n [\r\n 'Côte d’Ivoire',\r\n ['africa'],\r\n 'ci',\r\n '225',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Croatia',\r\n ['europe', 'european-union'],\r\n 'hr',\r\n '385',\r\n ],\r\n [\r\n 'Cuba',\r\n ['america', 'carribean'],\r\n 'cu',\r\n '53',\r\n ],\r\n [\r\n 'Curaçao',\r\n ['america', 'carribean'],\r\n 'cw',\r\n '599',\r\n '',\r\n 0,\r\n ],\r\n [\r\n 'Cyprus',\r\n ['europe', 'european-union'],\r\n 'cy',\r\n '357',\r\n '+... .. ......',\r\n ],\r\n [\r\n 'Czech Republic',\r\n ['europe', 'european-union'],\r\n 'cz',\r\n '420',\r\n ],\r\n [\r\n 'Denmark',\r\n ['europe', 'european-union'],\r\n 'dk',\r\n '45',\r\n '+.. .. .. .. ..',\r\n ],\r\n [\r\n 'Djibouti',\r\n ['africa'],\r\n 'dj',\r\n '253',\r\n ],\r\n [\r\n 'Dominica',\r\n ['america', 'carribean'],\r\n 'dm',\r\n '1767',\r\n ],\r\n [\r\n 'Dominican Republic',\r\n ['america', 'carribean'],\r\n 'do',\r\n '1',\r\n '',\r\n 2, ['809', '829', '849'],\r\n ],\r\n [\r\n 'Ecuador',\r\n ['america', 'south-america'],\r\n 'ec',\r\n '593',\r\n ],\r\n [\r\n 'Egypt',\r\n ['africa', 'north-africa'],\r\n 'eg',\r\n '20',\r\n ],\r\n [\r\n 'El Salvador',\r\n ['america', 'central-america'],\r\n 'sv',\r\n '503',\r\n '+... ....-....',\r\n ],\r\n [\r\n 'Equatorial Guinea',\r\n ['africa'],\r\n 'gq',\r\n '240',\r\n '+... .. ... ....',\r\n ],\r\n [\r\n 'Eritrea',\r\n ['africa'],\r\n 'er',\r\n '291',\r\n ],\r\n [\r\n 'Estonia',\r\n ['europe', 'european-union', 'ex-ussr'],\r\n 'ee',\r\n '372',\r\n '+... .... ......',\r\n ],\r\n [\r\n 'Ethiopia',\r\n ['africa'],\r\n 'et',\r\n '251',\r\n ],\r\n [\r\n 'Falkland Islands',\r\n ['america', 'south-america'],\r\n 'fk',\r\n '500',\r\n ],\r\n [\r\n 'Faroe Islands',\r\n ['europe'],\r\n 'fo',\r\n '298',\r\n ],\r\n [\r\n 'Fiji',\r\n ['oceania'],\r\n 'fj',\r\n '679',\r\n ],\r\n [\r\n 'Finland',\r\n ['europe', 'european-union'],\r\n 'fi',\r\n '358',\r\n '+... .. ... .. ..',\r\n ],\r\n [\r\n 'France',\r\n ['europe', 'european-union'],\r\n 'fr',\r\n '33',\r\n '+.. . .. .. .. ..',\r\n ],\r\n [\r\n 'French Guiana',\r\n ['america', 'south-america'],\r\n 'gf',\r\n '594',\r\n ],\r\n [\r\n 'French Polynesia',\r\n ['oceania'],\r\n 'pf',\r\n '689',\r\n ],\r\n [\r\n 'Gabon',\r\n ['africa'],\r\n 'ga',\r\n '241',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Gambia',\r\n ['africa'],\r\n 'gm',\r\n '220',\r\n ],\r\n [\r\n 'Georgia',\r\n ['asia', 'ex-ussr'],\r\n 'ge',\r\n '995',\r\n ],\r\n [\r\n 'Germany',\r\n ['europe', 'european-union'],\r\n 'de',\r\n '49',\r\n '+.. .... ........',\r\n ],\r\n [\r\n 'Ghana',\r\n ['africa'],\r\n 'gh',\r\n '233',\r\n ],\r\n [\r\n 'Gibraltar',\r\n ['europe'],\r\n 'gi',\r\n '350',\r\n ],\r\n [\r\n 'Greece',\r\n ['europe', 'european-union'],\r\n 'gr',\r\n '30',\r\n ],\r\n [\r\n 'Greenland',\r\n ['america'],\r\n 'gl',\r\n '299',\r\n ],\r\n [\r\n 'Grenada',\r\n ['america', 'carribean'],\r\n 'gd',\r\n '1473',\r\n ],\r\n [\r\n 'Guadeloupe',\r\n ['america', 'carribean'],\r\n 'gp',\r\n '590',\r\n '',\r\n 0,\r\n ],\r\n [\r\n 'Guam',\r\n ['oceania'],\r\n 'gu',\r\n '1671',\r\n ],\r\n [\r\n 'Guatemala',\r\n ['america', 'central-america'],\r\n 'gt',\r\n '502',\r\n '+... ....-....',\r\n ],\r\n [\r\n 'Guinea',\r\n ['africa'],\r\n 'gn',\r\n '224',\r\n '+... . ... ....',\r\n ],\r\n [\r\n 'Guinea-Bissau',\r\n ['africa'],\r\n 'gw',\r\n '245',\r\n ],\r\n [\r\n 'Guyana',\r\n ['america', 'south-america'],\r\n 'gy',\r\n '592',\r\n ],\r\n [\r\n 'Haiti',\r\n ['america', 'carribean'],\r\n 'ht',\r\n '509',\r\n '+... ....-....',\r\n ],\r\n [\r\n 'Honduras',\r\n ['america', 'central-america'],\r\n 'hn',\r\n '504',\r\n ],\r\n [\r\n 'Hong Kong',\r\n ['asia'],\r\n 'hk',\r\n '852',\r\n '+... .... ....',\r\n ],\r\n [\r\n 'Hungary',\r\n ['europe', 'european-union'],\r\n 'hu',\r\n '36',\r\n ],\r\n [\r\n 'Iceland',\r\n ['europe'],\r\n 'is',\r\n '354',\r\n '+... ... ....',\r\n ],\r\n [\r\n 'India',\r\n ['asia'],\r\n 'in',\r\n '91',\r\n '+.. .....-.....',\r\n ],\r\n [\r\n 'Indonesia',\r\n ['asia'],\r\n 'id',\r\n '62',\r\n ],\r\n [\r\n 'Iran',\r\n ['middle-east'],\r\n 'ir',\r\n '98',\r\n ],\r\n [\r\n 'Iraq',\r\n ['middle-east'],\r\n 'iq',\r\n '964',\r\n ],\r\n [\r\n 'Ireland',\r\n ['europe', 'european-union'],\r\n 'ie',\r\n '353',\r\n '+... .. .......',\r\n ],\r\n [\r\n 'Israel',\r\n ['middle-east'],\r\n 'il',\r\n '972',\r\n '+... ... ... ....',\r\n ],\r\n [\r\n 'Italy',\r\n ['europe', 'european-union'],\r\n 'it',\r\n '39',\r\n '+.. ... .......',\r\n 0,\r\n ],\r\n [\r\n 'Jamaica',\r\n ['america', 'carribean'],\r\n 'jm',\r\n '1876',\r\n ],\r\n [\r\n 'Japan',\r\n ['asia'],\r\n 'jp',\r\n '81',\r\n '+.. .. .... ....',\r\n ],\r\n [\r\n 'Jordan',\r\n ['middle-east'],\r\n 'jo',\r\n '962',\r\n ],\r\n [\r\n 'Kazakhstan',\r\n ['asia', 'ex-ussr'],\r\n 'kz',\r\n '7',\r\n '+. ... ...-..-..',\r\n 1, ['313', '327', '7172', '312', '73622', '321', '324', '336', '318', '315', '325', '311', '326', '310'],\r\n ],\r\n [\r\n 'Kenya',\r\n ['africa'],\r\n 'ke',\r\n '254',\r\n ],\r\n [\r\n 'Kiribati',\r\n ['oceania'],\r\n 'ki',\r\n '686',\r\n ],\r\n [\r\n 'Kosovo',\r\n ['europe'],\r\n 'ks',\r\n '383',\r\n ],\r\n [\r\n 'Kuwait',\r\n ['middle-east'],\r\n 'kw',\r\n '965',\r\n ],\r\n [\r\n 'Kyrgyzstan',\r\n ['asia', 'ex-ussr'],\r\n 'kg',\r\n '996',\r\n ],\r\n [\r\n 'Laos',\r\n ['asia'],\r\n 'la',\r\n '856',\r\n ],\r\n [\r\n 'Latvia',\r\n ['europe', 'european-union', 'ex-ussr'],\r\n 'lv',\r\n '371',\r\n ],\r\n [\r\n 'Lebanon',\r\n ['middle-east'],\r\n 'lb',\r\n '961',\r\n ],\r\n [\r\n 'Lesotho',\r\n ['africa'],\r\n 'ls',\r\n '266',\r\n ],\r\n [\r\n 'Liberia',\r\n ['africa'],\r\n 'lr',\r\n '231',\r\n ],\r\n [\r\n 'Libya',\r\n ['africa', 'north-africa'],\r\n 'ly',\r\n '218',\r\n ],\r\n [\r\n 'Liechtenstein',\r\n ['europe'],\r\n 'li',\r\n '423',\r\n ],\r\n [\r\n 'Lithuania',\r\n ['europe', 'european-union', 'ex-ussr'],\r\n 'lt',\r\n '370',\r\n ],\r\n [\r\n 'Luxembourg',\r\n ['europe', 'european-union'],\r\n 'lu',\r\n '352',\r\n '+.. . ... ... ...',\r\n ],\r\n [\r\n 'Macau',\r\n ['asia'],\r\n 'mo',\r\n '853',\r\n ],\r\n [\r\n 'Macedonia',\r\n ['europe'],\r\n 'mk',\r\n '389',\r\n ],\r\n [\r\n 'Madagascar',\r\n ['africa'],\r\n 'mg',\r\n '261',\r\n '+... .. . ......',\r\n ],\r\n [\r\n 'Malawi',\r\n ['africa'],\r\n 'mw',\r\n '265',\r\n ],\r\n [\r\n 'Malaysia',\r\n ['asia'],\r\n 'my',\r\n '60',\r\n '+.. ..-....-....',\r\n ],\r\n [\r\n 'Maldives',\r\n ['asia'],\r\n 'mv',\r\n '960',\r\n ],\r\n [\r\n 'Mali',\r\n ['africa'],\r\n 'ml',\r\n '223',\r\n '+... .... ....',\r\n ],\r\n [\r\n 'Malta',\r\n ['europe', 'european-union'],\r\n 'mt',\r\n '356',\r\n ],\r\n [\r\n 'Marshall Islands',\r\n ['oceania'],\r\n 'mh',\r\n '692',\r\n ],\r\n [\r\n 'Martinique',\r\n ['america', 'carribean'],\r\n 'mq',\r\n '596',\r\n ],\r\n [\r\n 'Mauritania',\r\n ['africa'],\r\n 'mr',\r\n '222',\r\n '+... .... ....',\r\n ],\r\n [\r\n 'Mauritius',\r\n ['africa'],\r\n 'mu',\r\n '230',\r\n '+... . ... ....',\r\n ],\r\n [\r\n 'Micronesia',\r\n ['oceania'],\r\n 'fm',\r\n '691',\r\n ],\r\n [\r\n 'Moldova',\r\n ['europe'],\r\n 'md',\r\n '373',\r\n '+... (..) ..-..-..',\r\n ],\r\n [\r\n 'Monaco',\r\n ['europe'],\r\n 'mc',\r\n '377',\r\n ],\r\n [\r\n 'Mongolia',\r\n ['asia'],\r\n 'mn',\r\n '976',\r\n ],\r\n [\r\n 'Montenegro',\r\n ['europe'],\r\n 'me',\r\n '382',\r\n ],\r\n [\r\n 'Montserrat',\r\n ['america', 'carribean'],\r\n 'ms',\r\n '1664',\r\n ],\r\n [\r\n 'Morocco',\r\n ['africa', 'north-africa'],\r\n 'ma',\r\n '212',\r\n '+212-.........',\r\n ],\r\n [\r\n 'Mozambique',\r\n ['africa'],\r\n 'mz',\r\n '258',\r\n '+... ... ......',\r\n ],\r\n [\r\n 'Myanmar',\r\n ['asia'],\r\n 'mm',\r\n '95',\r\n ],\r\n [\r\n 'Namibia',\r\n ['africa'],\r\n 'na',\r\n '264',\r\n ],\r\n [\r\n 'Nauru',\r\n ['africa'],\r\n 'nr',\r\n '674',\r\n ],\r\n [\r\n 'Nepal',\r\n ['asia'],\r\n 'np',\r\n '977',\r\n ],\r\n [\r\n 'Netherlands',\r\n ['europe', 'european-union'],\r\n 'nl',\r\n '31',\r\n '+.. .. ........',\r\n ],\r\n [\r\n 'New Caledonia',\r\n ['oceania'],\r\n 'nc',\r\n '687',\r\n ],\r\n [\r\n 'New Zealand',\r\n ['oceania'],\r\n 'nz',\r\n '64',\r\n '+.. ...-...-....',\r\n ],\r\n [\r\n 'Nicaragua',\r\n ['america', 'central-america'],\r\n 'ni',\r\n '505',\r\n ],\r\n [\r\n 'Niger',\r\n ['africa'],\r\n 'ne',\r\n '227',\r\n '+... .. .. .. ..',\r\n ],\r\n [\r\n 'Nigeria',\r\n ['africa'],\r\n 'ng',\r\n '234',\r\n ],\r\n [\r\n 'Niue',\r\n ['asia'],\r\n 'nu',\r\n '683',\r\n ],\r\n [\r\n 'Norfolk Island',\r\n ['oceania'],\r\n 'nf',\r\n '672',\r\n ],\r\n [\r\n 'North Korea',\r\n ['asia'],\r\n 'kp',\r\n '850',\r\n ],\r\n [\r\n 'Northern Mariana Islands',\r\n ['oceania'],\r\n 'mp',\r\n '1670',\r\n ],\r\n [\r\n 'Norway',\r\n ['europe'],\r\n 'no',\r\n '47',\r\n '+.. ... .. ...',\r\n ],\r\n [\r\n 'Oman',\r\n ['middle-east'],\r\n 'om',\r\n '968',\r\n ],\r\n [\r\n 'Pakistan',\r\n ['asia'],\r\n 'pk',\r\n '92',\r\n '+.. ...-.......',\r\n ],\r\n [\r\n 'Palau',\r\n ['oceania'],\r\n 'pw',\r\n '680',\r\n ],\r\n [\r\n 'Palestine',\r\n ['middle-east'],\r\n 'ps',\r\n '970',\r\n ],\r\n [\r\n 'Panama',\r\n ['america', 'central-america'],\r\n 'pa',\r\n '507',\r\n ],\r\n [\r\n 'Papua New Guinea',\r\n ['oceania'],\r\n 'pg',\r\n '675',\r\n ],\r\n [\r\n 'Paraguay',\r\n ['america', 'south-america'],\r\n 'py',\r\n '595',\r\n ],\r\n [\r\n 'Peru',\r\n ['america', 'south-america'],\r\n 'pe',\r\n '51',\r\n ],\r\n [\r\n 'Philippines',\r\n ['asia'],\r\n 'ph',\r\n '63',\r\n '+.. .... .......',\r\n ],\r\n [\r\n 'Poland',\r\n ['europe', 'european-union'],\r\n 'pl',\r\n '48',\r\n '+.. ...-...-...',\r\n ],\r\n [\r\n 'Portugal',\r\n ['europe', 'european-union'],\r\n 'pt',\r\n '351',\r\n ],\r\n [\r\n 'Puerto Rico',\r\n ['america', 'carribean'],\r\n 'pr',\r\n '1',\r\n '',\r\n 3, ['787', '939'],\r\n ],\r\n [\r\n 'Qatar',\r\n ['middle-east'],\r\n 'qa',\r\n '974',\r\n ],\r\n [\r\n 'Réunion',\r\n ['africa'],\r\n 're',\r\n '262',\r\n '+.. . .. .. .. ..',\r\n ],\r\n [\r\n 'Romania',\r\n ['europe', 'european-union'],\r\n 'ro',\r\n '40',\r\n ],\r\n [\r\n 'Russia',\r\n ['europe', 'asia', 'ex-ussr'],\r\n 'ru',\r\n '7',\r\n '+. (...) ...-..-..',\r\n 0,\r\n ],\r\n [\r\n 'Rwanda',\r\n ['africa'],\r\n 'rw',\r\n '250',\r\n '+... ... ... ...',\r\n ],\r\n [\r\n 'Saint Barthélemy',\r\n ['america', 'carribean'],\r\n 'bl',\r\n '590',\r\n '',\r\n 1,\r\n ],\r\n [\r\n 'Saint Helena',\r\n ['africa'],\r\n 'sh',\r\n '290',\r\n ],\r\n [\r\n 'Saint Kitts and Nevis',\r\n ['america', 'carribean'],\r\n 'kn',\r\n '1869',\r\n ],\r\n [\r\n 'Saint Lucia',\r\n ['america', 'carribean'],\r\n 'lc',\r\n '1758',\r\n ],\r\n [\r\n 'Saint Martin',\r\n ['america', 'carribean'],\r\n 'mf',\r\n '590',\r\n '',\r\n 2,\r\n ],\r\n [\r\n 'Saint Pierre and Miquelon',\r\n ['america', 'north-america'],\r\n 'pm',\r\n '508',\r\n ],\r\n [\r\n 'Saint Vincent and the Grenadines',\r\n ['america', 'carribean'],\r\n 'vc',\r\n '1784',\r\n ],\r\n [\r\n 'Samoa',\r\n ['oceania'],\r\n 'ws',\r\n '685',\r\n ],\r\n [\r\n 'San Marino',\r\n ['europe'],\r\n 'sm',\r\n '378',\r\n ],\r\n [\r\n 'São Tomé and Príncipe',\r\n ['africa'],\r\n 'st',\r\n '239',\r\n '+... ... ....',\r\n ],\r\n [\r\n 'Saudi Arabia',\r\n ['middle-east'],\r\n 'sa',\r\n '966',\r\n ],\r\n [\r\n 'Senegal',\r\n ['africa'],\r\n 'sn',\r\n '221',\r\n '+... .. ... .. ..',\r\n ],\r\n [\r\n 'Serbia',\r\n ['europe'],\r\n 'rs',\r\n '381',\r\n ],\r\n [\r\n 'Seychelles',\r\n ['africa'],\r\n 'sc',\r\n '248',\r\n '+... ... ....', // from https://en.wikipedia.org/wiki/Telephone_numbers_in_Seychelles\r\n ],\r\n [\r\n 'Sierra Leone',\r\n ['africa'],\r\n 'sl',\r\n '232',\r\n ],\r\n [\r\n 'Singapore',\r\n ['asia'],\r\n 'sg',\r\n '65',\r\n '+.. ....-....',\r\n ],\r\n [\r\n 'Sint Maarten',\r\n ['america', 'carribean'],\r\n 'sx',\r\n '1721',\r\n ],\r\n [\r\n 'Slovakia',\r\n ['europe', 'european-union'],\r\n 'sk',\r\n '421',\r\n ],\r\n [\r\n 'Slovenia',\r\n ['europe', 'european-union'],\r\n 'si',\r\n '386',\r\n ],\r\n [\r\n 'Solomon Islands',\r\n ['oceania'],\r\n 'sb',\r\n '677',\r\n ],\r\n [\r\n 'Somalia',\r\n ['africa'],\r\n 'so',\r\n '252',\r\n ],\r\n [\r\n 'South Africa',\r\n ['africa'],\r\n 'za',\r\n '27',\r\n '+.. .. ... ....',\r\n ],\r\n [\r\n 'South Korea',\r\n ['asia'],\r\n 'kr',\r\n '82',\r\n '+.. ... .... ....',\r\n ],\r\n [\r\n 'South Sudan',\r\n ['africa', 'north-africa'],\r\n 'ss',\r\n '211',\r\n ],\r\n [\r\n 'Spain',\r\n ['europe', 'european-union'],\r\n 'es',\r\n '34',\r\n '+.. ... ... ...',\r\n ],\r\n [\r\n 'Sri Lanka',\r\n ['asia'],\r\n 'lk',\r\n '94',\r\n ],\r\n [\r\n 'Sudan',\r\n ['africa'],\r\n 'sd',\r\n '249',\r\n ],\r\n [\r\n 'Suriname',\r\n ['america', 'south-america'],\r\n 'sr',\r\n '597',\r\n ],\r\n [\r\n 'Swaziland',\r\n ['africa'],\r\n 'sz',\r\n '268',\r\n ],\r\n [\r\n 'Sweden',\r\n ['europe', 'european-union'],\r\n 'se',\r\n '46',\r\n '+.. (..) ...-..-..',\r\n ],\r\n [\r\n 'Switzerland',\r\n ['europe'],\r\n 'ch',\r\n '41',\r\n '+.. .. ... .. ..',\r\n ],\r\n [\r\n 'Syria',\r\n ['middle-east'],\r\n 'sy',\r\n '963',\r\n ],\r\n [\r\n 'Taiwan',\r\n ['asia'],\r\n 'tw',\r\n '886',\r\n ],\r\n [\r\n 'Tajikistan',\r\n ['asia', 'ex-ussr'],\r\n 'tj',\r\n '992',\r\n ],\r\n [\r\n 'Tanzania',\r\n ['africa'],\r\n 'tz',\r\n '255',\r\n ],\r\n [\r\n 'Thailand',\r\n ['asia'],\r\n 'th',\r\n '66',\r\n ],\r\n [\r\n 'Timor-Leste',\r\n ['asia'],\r\n 'tl',\r\n '670',\r\n ],\r\n [\r\n 'Togo',\r\n ['africa'],\r\n 'tg',\r\n '228',\r\n '+... ... .....',\r\n ],\r\n [\r\n 'Tokelau',\r\n ['oceania'],\r\n 'tk',\r\n '690',\r\n ],\r\n [\r\n 'Tonga',\r\n ['oceania'],\r\n 'to',\r\n '676',\r\n ],\r\n [\r\n 'Trinidad and Tobago',\r\n ['america', 'carribean'],\r\n 'tt',\r\n '1868',\r\n ],\r\n [\r\n 'Tunisia',\r\n ['africa', 'north-africa'],\r\n 'tn',\r\n '216',\r\n '+... .. ... ...',\r\n ],\r\n [\r\n 'Turkey',\r\n ['europe'],\r\n 'tr',\r\n '90',\r\n '+.. ... ... .. ..',\r\n ],\r\n [\r\n 'Turkmenistan',\r\n ['asia', 'ex-ussr'],\r\n 'tm',\r\n '993',\r\n ],\r\n [\r\n 'Turks and Caicos Islands',\r\n ['america', 'carribean'],\r\n 'tc',\r\n '1649',\r\n ],\r\n [\r\n 'Tuvalu',\r\n ['asia'],\r\n 'tv',\r\n '688',\r\n ],\r\n [\r\n 'U.S. Virgin Islands',\r\n ['america', 'carribean'],\r\n 'vi',\r\n '1340',\r\n ],\r\n [\r\n 'Uganda',\r\n ['africa'],\r\n 'ug',\r\n '256',\r\n ],\r\n [\r\n 'Ukraine',\r\n ['europe', 'ex-ussr'],\r\n 'ua',\r\n '380',\r\n '+... (..) ... .. ..',\r\n ],\r\n [\r\n 'United Arab Emirates',\r\n ['middle-east'],\r\n 'ae',\r\n '971',\r\n ],\r\n [\r\n 'United Kingdom',\r\n ['europe', 'european-union'],\r\n 'gb',\r\n '44',\r\n '+.. .... ......',\r\n ],\r\n [\r\n 'Uruguay',\r\n ['america', 'south-america'],\r\n 'uy',\r\n '598',\r\n ],\r\n [\r\n 'Uzbekistan',\r\n ['asia', 'ex-ussr'],\r\n 'uz',\r\n '998',\r\n ],\r\n [\r\n 'Vanuatu',\r\n ['oceania'],\r\n 'vu',\r\n '678',\r\n ],\r\n [\r\n 'Vatican City',\r\n ['europe'],\r\n 'va',\r\n '39',\r\n '+.. .. .... ....',\r\n 1,\r\n ],\r\n [\r\n 'Venezuela',\r\n ['america', 'south-america'],\r\n 've',\r\n '58',\r\n ],\r\n [\r\n 'Vietnam',\r\n ['asia'],\r\n 'vn',\r\n '84',\r\n ],\r\n [\r\n 'Wallis and Futuna',\r\n ['oceania'],\r\n 'wf',\r\n '681',\r\n ],\r\n [\r\n 'Yemen',\r\n ['middle-east'],\r\n 'ye',\r\n '967',\r\n ],\r\n [\r\n 'Zambia',\r\n ['africa'],\r\n 'zm',\r\n '260',\r\n ],\r\n [\r\n 'Zimbabwe',\r\n ['africa'],\r\n 'zw',\r\n '263',\r\n ],\r\n];\r\n\r\nconst allCountryCodes = {};\r\n\r\nfunction addCountryCode(iso2, dialCode, priority) {\r\n if (!(dialCode in allCountryCodes)) {\r\n allCountryCodes[dialCode] = [];\r\n }\r\n const index = priority || 0;\r\n allCountryCodes[dialCode][index] = iso2;\r\n}\r\n\r\nconst allCountries = [].concat(...rawAllCountries.map((country) => {\r\n const [name, regions, iso2, dialCode, format, priority, areaCodes] = country;\r\n\r\n const countryItem = {\r\n name,\r\n regions,\r\n iso2,\r\n dialCode,\r\n priority,\r\n format: format || undefined,\r\n hasAreaCodes: areaCodes,\r\n countryCode: dialCode,\r\n };\r\n\r\n const areaItems = [];\r\n\r\n // if (countryItem.hasAreaCodes) {\r\n // areaCodes.forEach((areaCode) => {\r\n // const areaItem = {\r\n // ...countryItem,\r\n // regions,\r\n // countryCode: dialCode,\r\n // dialCode: `${dialCode}${areaCode}`,\r\n // areaCode,\r\n // isAreaCode: true,\r\n // };\r\n\r\n // areaItems.push(areaItem);\r\n\r\n // addCountryCode(iso2, areaItem.dialCode);\r\n // });\r\n // }\r\n\r\n addCountryCode(\r\n countryItem.iso2,\r\n countryItem.dialCode,\r\n countryItem.hasAreaCodes,\r\n );\r\n\r\n return (areaItems.length > 0) ? [countryItem, ...areaItems] : [countryItem];\r\n}));\r\n\r\nmodule.exports = {\r\n allCountries,\r\n allCountryCodes,\r\n};\r\n","/* eslint-disable import/prefer-default-export */\r\nimport { mapEnum } from '../../../../../helpers/utils/Formatter';\r\nimport enums from '../../../../../config/constants/Enums';\r\n\r\nconst primaryPhone = mapEnum(enums.primary);\r\nconst LIST_ITEMS_FONT_SIZE = '14px';\r\nconst LIST_ITEMS_FONT_WEIGHT = '400';\r\n\r\nexport {\r\n primaryPhone,\r\n LIST_ITEMS_FONT_SIZE,\r\n LIST_ITEMS_FONT_WEIGHT,\r\n};\r\n","import { memo } from 'react';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport tableRowCountStyle from './styles/TableRowCountStyle';\r\n\r\nconst useStyles = makeStyles(tableRowCountStyle, { name: 'TableRowCount' });\r\n\r\nconst TableRowCount = ({ totalRows, className, leftAndRightPadding, ...props }) => {\r\n const classes = useStyles({ leftAndRightPadding });\r\n return totalRows ? (\r\n \r\n {totalRows}\r\n {' '}\r\n {totalRows === 1 ? localisable.result : localisable.results}\r\n {' '}\r\n {localisable.found}\r\n \r\n ) : null;\r\n};\r\n\r\nTableRowCount.propTypes = {\r\n totalRows: PropTypes.number,\r\n className: PropTypes.string,\r\n leftAndRightPadding: PropTypes.number,\r\n};\r\n\r\nTableRowCount.defaultProps = { totalRows: 0, leftAndRightPadding: 0 };\r\n\r\nexport default memo(TableRowCount);\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst DISPLAY = createEnumMap(['Unread', 'Read', 'NA']);\r\n\r\nexport { DISPLAY };\r\n","/* eslint-disable import/prefer-default-export */\r\nimport { withStyles, Grid } from\r\n'Commons/components/generic/componentlibrary/components/Components';\r\nimport { EMPTY_FIELD_TEXT } from 'Commons/config/constants/Constants';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Tooltip from 'Commons/components/generic/tooltip/components/Tooltip';\r\nimport SummaryFormatterStyle from '../styles/SummaryFormatterStyle';\r\n\r\nconst { deviceInfo: { isMobile, isPhablet } } = window;\r\n\r\nconst Description = (props) => {\r\n const { argument: [particulars, , , { date }, { isResponsive = false }], classes } = props;\r\n return (\r\n isResponsive || isMobile || isPhablet\r\n ? (\r\n \r\n { particulars }\r\n { date }\r\n \r\n )\r\n : (\r\n { particulars }}\r\n >\r\n { particulars }\r\n \r\n )\r\n\r\n );\r\n};\r\nDescription.propTypes = { argument: PropTypes.array, classes: PropTypes.object };\r\nDescription.defaultProps = { argument: [] };\r\nconst DescriptionFormatter = withStyles(SummaryFormatterStyle)(Description);\r\n\r\nconst DateFormatterComponent = (props) => {\r\n const { argument: [date], classes } = props;\r\n return (\r\n \r\n { date }\r\n \r\n );\r\n};\r\n\r\nDateFormatterComponent.propTypes = { argument: PropTypes.array, classes: PropTypes.object };\r\nDateFormatterComponent.defaultProps = { argument: [] };\r\nconst DateFormatter = withStyles(SummaryFormatterStyle)(DateFormatterComponent);\r\n\r\nconst Balance = (props) => {\r\n const { argument, classes } = props;\r\n const [balance] = argument;\r\n let balanceToShow = '';\r\n if (balance !== EMPTY_FIELD_TEXT) {\r\n balanceToShow = `${balance}`;\r\n }\r\n return (\r\n \r\n {balanceToShow}\r\n \r\n );\r\n};\r\n\r\nBalance.propTypes = { argument: PropTypes.array, classes: PropTypes.object };\r\nBalance.defaultProps = { argument: [] };\r\nconst BalanceFormatter = withStyles(SummaryFormatterStyle)(Balance);\r\n\r\nconst dateFormatter = (...data) => ;\r\nconst balanceFormatter = (...data) => ;\r\nconst descriptionFormatter = (...data) => ;\r\n\r\nexport { dateFormatter, balanceFormatter, descriptionFormatter };\r\n","import { addToDate } from 'Commons/helpers/utils/DateTime';\r\nimport { WEEKDAYS_SUNDAY_FIRST } from 'External/containers/pendingTasks/components/reminders/config/Constants';\r\n\r\nconst addDatePadding = currentDay => (currentDay < 10 && currentDay > 0 ? `0${currentDay}` : `${currentDay}`);\r\n\r\n/**\r\n * Rearrange the weekdays list based on the starting day index.\r\n *\r\n * @param {Number} [startDay=0] - The starting day of the week (0: Sunday, 1: Monday, ...). Default: 0 (Sunday).\r\n * @returns {Array} - The rearranged array of weekdays.\r\n */\r\nconst rearrangeWeekdays = (startDay = 0) => {\r\n // Rearrange the weekdays list based on the starting day index\r\n const weekdays = Object.values(WEEKDAYS_SUNDAY_FIRST);\r\n const reorderedWeekdays = [\r\n ...weekdays.slice(startDay),\r\n ...weekdays.slice(0, startDay),\r\n ];\r\n return reorderedWeekdays;\r\n};\r\n\r\n/**\r\n * @description returns complete date after adding/substracting from date\r\n * @param {Date} date date/dateObject\r\n * @param {Number} days days to add or subtract\r\n * */\r\nconst getCompleteDate = (date, days, convertToString = true) => {\r\n const completeDate = addToDate(date, days, undefined, convertToString);\r\n return completeDate;\r\n};\r\n\r\nconst getDataForDay = (data = {}, completeDate) => data[completeDate] || [];\r\n\r\nexport { addDatePadding, rearrangeWeekdays, getCompleteDate, getDataForDay };\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst OPTIONS = {\r\n RETRIES: 0,\r\n RETRY_DELAY: 1000,\r\n RETRY_ON: [501, 503],\r\n};\r\n\r\nconst REPORT_OPTIONS = {\r\n RETRIES: 3,\r\n RETRY_DELAY: 1000,\r\n RETRY_ON: [500, 20], // 20 is for error code i.e. when request gets timed out by fetchApiWithTimeout\r\n};\r\n\r\nconst HTTP_HEADER_SOURCE = createEnumMap(['Sandbox']);\r\n\r\nexport { REPORT_OPTIONS, OPTIONS, HTTP_HEADER_SOURCE };\r\n","import { ONE_MINUTE } from 'Commons/config/constants/Constants';\r\n\r\nconst fetchWithTimeout = async (url, options = {}, timeout = ONE_MINUTE) => {\r\n const controller = new AbortController();\r\n const id = setTimeout(() => controller.abort(), timeout);\r\n const response = await fetch(url, {\r\n ...options,\r\n signal: controller.signal,\r\n });\r\n clearTimeout(id);\r\n return response;\r\n};\r\n\r\nexport default fetchWithTimeout;\r\n","/* eslint-disable prefer-promise-reject-errors */\r\nimport COOKIE_KEY from 'Commons/redux/config/CookieKey';\r\nimport WebSocketInstance from 'Commons/components/business/socket/WebSocket';\r\nimport { ONE_MINUTE, TOKEN_TYPE } from 'Commons/config/constants/Constants';\r\nimport { isPulledData } from 'Commons/helpers/utils/Utils';\r\nimport { OPTIONS, REPORT_OPTIONS, HTTP_HEADER_SOURCE } from './Config';\r\nimport { getCookie } from '../../redux/helper/CookieManager';\r\nimport {\r\n deepCamelize,\r\n deepDecamelize,\r\n} from './Formatter';\r\nimport { getApiBuildVersion } from '../utils/ApiBuildVersionManager';\r\nimport { isBaseUrlAlpha } from '../utils/RouteHelpers';\r\nimport fetchWithTimeout from './FetchWithTimeout';\r\n// to be updated wih the api resource version\r\n\r\n// const apiVersion = process.env.API_VERSION;\r\n/**\r\n * @description Construct the query string from the params passed\r\n * @param {Object} queryParams Key Value pair of query params\r\n */\r\nconst getQueryString = (queryParams) => {\r\n let queryString = '';\r\n Object.entries(queryParams).forEach(([key, value]) => {\r\n queryString = `${queryString}${key}=${value}&`;\r\n });\r\n return queryString.slice(0, -1);\r\n};\r\n\r\n/**\r\n * @description Appends the base url to the request end point and optionally the version\r\n * @param {*} path\r\n * @param {*} queryParams\r\n */\r\nconst buildUrl = (path, queryParams = {}, baseUrl = process.env.API_URL) => {\r\n let url = isBaseUrlAlpha() && ![process.env.REPORT_URL, process.env.TX_SERVER_URL].includes(baseUrl) ? process.env.ALPHA_API_URL : baseUrl;\r\n url = url.replace(':apiVersion', process.env.API_VERSION);\r\n url = `${url.endsWith('/') ? (`${url}${path}`) : (`${url}/${path}`)}`;\r\n if (Object.keys(queryParams).length > 0) {\r\n url = `${url}?${getQueryString(queryParams)}`;\r\n }\r\n return url;\r\n};\r\nconst isUserAuthorized = (tokenType = TOKEN_TYPE.STANDARD) => {\r\n let paymentToken;\r\n const token = getCookie(COOKIE_KEY.TOKEN);\r\n if (tokenType === TOKEN_TYPE.PAYMENT) {\r\n paymentToken = getCookie(COOKIE_KEY.PAYMENT_TOKEN);\r\n }\r\n if (token) {\r\n if (paymentToken) {\r\n return { status: true, paymentToken, token };\r\n }\r\n return { status: true, token };\r\n }\r\n return {\r\n status: false,\r\n token: null,\r\n };\r\n};\r\n\r\n\r\n/**\r\n * @description Generates the headers and combines with any headers passed as dependency config\r\n * Also if user authorized will append the token\r\n * @param {Object} headers Headers passed from Dependency Config\r\n */\r\nconst getHeaders = (headers = {}, isFormData = false, tokenType = TOKEN_TYPE.STANDARD) => {\r\n const httpHeaders = new Headers();\r\n const { location: { pathname } } = window;\r\n const socketId = WebSocketInstance.getSocketId();\r\n if (Object.keys(headers).length > 0) {\r\n Object.keys(headers).forEach((key) => {\r\n httpHeaders.append(key, headers[key]);\r\n });\r\n }\r\n const { status, token, paymentToken } = isUserAuthorized(tokenType);\r\n if (status && !('Authorization' in headers)) {\r\n httpHeaders.append('Authorization', `Token ${token}`);\r\n if (tokenType === TOKEN_TYPE.PAYMENT) {\r\n httpHeaders.append('Payment-Token', paymentToken);\r\n }\r\n }\r\n if (isPulledData(pathname)) httpHeaders.append('Source', HTTP_HEADER_SOURCE.SANDBOX);\r\n if (socketId) {\r\n httpHeaders.append('Socket-Id', socketId);\r\n }\r\n // Append Auth & Application wide headers here if required\r\n if (!isFormData) {\r\n httpHeaders.append('Content-Type', 'application/json');\r\n }\r\n const apiBuildVersion = getApiBuildVersion();\r\n if (apiBuildVersion) {\r\n httpHeaders.append('Build-Version', apiBuildVersion);\r\n }\r\n return httpHeaders;\r\n};\r\n\r\nconst getBody = (isFormData, body, decamalize) => {\r\n if (isFormData) {\r\n return body;\r\n }\r\n if (Object.keys(body).length > 0) {\r\n if (decamalize) {\r\n return JSON.stringify(deepDecamelize(body));\r\n }\r\n return JSON.stringify(body);\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * @description Get the header options based on authorized or no\r\n * @param {Object} options Fetch API Options from Dependency Config\r\n */\r\nconst getOptions = ({\r\n methodType: method = 'GET', headers = {}, body = {},\r\n tokenType = TOKEN_TYPE.STANDARD, decamalize = true,\r\n}) => {\r\n const isFormData = body instanceof FormData;\r\n const requestOptions = {\r\n method,\r\n headers: getHeaders(headers, isFormData, tokenType) || {},\r\n body: getBody(isFormData, body, decamalize),\r\n mode: 'cors',\r\n };\r\n const { status } = isUserAuthorized();\r\n if (status && !('Authorization' in headers)) {\r\n return {\r\n credentials: 'include',\r\n ...requestOptions,\r\n };\r\n }\r\n return requestOptions;\r\n};\r\n\r\n/**\r\n * @description Parses the API response and filters the errors and response.\r\n * Categorizes into Network/Server/Application error/Invalid JSON(If we get html)\r\n * @param {*} response HTTP Response\r\n */\r\nconst parseAPIResponse = response => new Promise(resolve => resolve(response.text()))\r\n .catch(err => Promise.reject({\r\n type: 'NetworkError',\r\n status: response.status,\r\n message: err,\r\n }))\r\n .then((responseBody) => {\r\n // Attempt to parse JSON\r\n try {\r\n const parsedJSON = deepCamelize(JSON.parse(responseBody));\r\n if (response.ok) return parsedJSON;\r\n if (response.status >= 500) {\r\n return Promise.reject({\r\n type: 'ServerError',\r\n status: response.status,\r\n body: parsedJSON,\r\n });\r\n }\r\n if (response.status <= 501) {\r\n return Promise.reject({\r\n type: 'ApplicationError',\r\n status: response.status,\r\n body: parsedJSON,\r\n });\r\n }\r\n } catch (e) {\r\n // We should never get these unless response is mangled\r\n // Or API is not properly implemented\r\n return Promise.reject({\r\n type: 'InvalidJSON',\r\n status: response.status,\r\n body: responseBody,\r\n });\r\n }\r\n return Promise.resolve({\r\n type: 'Invalid',\r\n status: '',\r\n body: {},\r\n });\r\n });\r\n\r\n/**\r\n * @description Make An API Call\r\n * @param {*} options Fetch Options along with retry\r\n */\r\nconst makeApiCall = async (options = {}) => {\r\n const { baseUrl } = options;\r\n let defaultOptions = OPTIONS;\r\n if (baseUrl === process.env.REPORT_URL) {\r\n defaultOptions = REPORT_OPTIONS;\r\n }\r\n const { RETRIES, RETRY_DELAY, RETRY_ON } = defaultOptions;\r\n const { retries = RETRIES, retryDelay = RETRY_DELAY, retryOn = RETRY_ON, timeout = ONE_MINUTE } = options;\r\n return new Promise(((resolve, reject) => {\r\n const wrappedFetch = function wrappedFetch(n) {\r\n /**\r\n * @description No Of times to retry at a set delay\r\n * @param {*} n No Of Retries\r\n */\r\n function retry(noOfRetries) {\r\n setTimeout(() => {\r\n wrappedFetch(noOfRetries - 1);\r\n }, retryDelay);\r\n }\r\n\r\n const url = buildUrl(options.endPoint, options.queryParams, baseUrl);\r\n fetchWithTimeout(url, getOptions(options), timeout)\r\n .then(parseAPIResponse)\r\n .then((response) => {\r\n if (retryOn.indexOf(response.status) === -1) {\r\n resolve(response);\r\n } else if (n > 1 && retryOn.indexOf(response.status) > -1) {\r\n retry(n);\r\n } else {\r\n reject(response);\r\n }\r\n })\r\n .catch((error) => {\r\n const { status, code } = error;\r\n if (n > 1 && retryOn.indexOf(status || code) > -1) {\r\n retry(n);\r\n } else {\r\n reject(error);\r\n }\r\n });\r\n };\r\n wrappedFetch(retries);\r\n }));\r\n};\r\n\r\nexport default makeApiCall;\r\n","/* eslint-disable no-use-before-define */\r\n\r\nimport STATUS from 'Commons/config/constants/StoreKeyStatus';\r\nimport getUUID from 'Commons/helpers/utils/generateUUID';\r\nimport makeApiCall from '../../helpers/api/Fetcher';\r\nimport { curQueue } from '../../helpers/api/Queue';\r\nimport { getPostProcessor } from '../postProcessor/allProcessors';\r\n\r\n/**\r\n * @description It converts an async, await to a more consumable format\r\n * Ex: [err, data]\r\n * @param {*} promise Fetch Promise\r\n */\r\nconst to = promise => promise.then(data => [null, data])\r\n .catch(err => [err]);\r\n\r\n\r\n/**\r\n * @description This will be dispatch an Action Creator to the reducer\r\n * @param {String} type The Action Type\r\n * @param {Object} payload The payload or data that needs to be updated in store\r\n * @param {*} dispatchProp The dispatch function that has been passed as a prop\r\n */\r\nconst dispatchAction = (type, payload = {}, storeKey = '', requestType, dispatchProp, keys, isDataReversed, api) => {\r\n // this.props.dispatch(action(payload));\r\n if (type) {\r\n dispatchProp({\r\n type,\r\n payload,\r\n storeKey,\r\n requestType,\r\n keys,\r\n isDataReversed,\r\n api,\r\n });\r\n }\r\n};\r\n\r\n/**\r\n * @description Dispatch the loading action\r\n * @param {*} key Store Key\r\n * @param {*} dispatch The dispatch function that generates action and calls reducer\r\n */\r\nconst updateStoreKeyToLoading = (key, storeKey = '', requestType, dispatchProp, keys, isDataReversed, api) => {\r\n // Dispatch the loading event\r\n dispatchAction(`${key}_loading`, {}, storeKey, requestType, dispatchProp, keys, isDataReversed, api);\r\n};\r\n\r\n/**\r\n * @description Backend api call\r\n * @param {Object} options - Fetch Config\r\n * @param {string} options.url - The End Point\r\n * @param {string} options.method - The VERB (GET, POST, PUT, DELETE)\r\n * @param {Object} options.headers - Any Additional headers to be sent, like pagination\r\n * @param {string} options.credentials - To Be sent with cors/include/same-origin options\r\n * @param {Object} options.data - The Request body, for non GET calls\r\n * @param {Object} options.timestamp - The timestamp of the request, to add to queue and remove\r\n * @param {number} [options.retries] - The Number Of Retries On Failure\r\n * @param {number} [options.retryDelay] - The delay between successive retries\r\n */\r\nexport const api = async (options = {}) => {\r\n const localReqOptions = Object.assign(options);\r\n const { api: apiOptions } = options;\r\n // Adding a timestamp to identify a request\r\n const timestamp = getUUID();\r\n localReqOptions.timestamp = timestamp;\r\n // Need to check queue status\r\n // Returns if the current request added to curQ or pendingQ\r\n\r\n if (apiOptions.endPoint) {\r\n if (curQueue.add(localReqOptions)) {\r\n // Make API call if it is not pending\r\n const [err, data] = await to(makeApiCall(apiOptions));\r\n return {\r\n error: err,\r\n response: data,\r\n timestamp,\r\n };\r\n }\r\n }\r\n if (curQueue.pendingQueue.length > 0) {\r\n // Added to pending queue\r\n return {\r\n error: null,\r\n response: { status: STATUS.QUEUED },\r\n timestamp,\r\n };\r\n }\r\n // Invalid Options Passed\r\n return {\r\n error: 'No Options Passed',\r\n response: null,\r\n timestamp,\r\n };\r\n};\r\n\r\nfunction updateStore(options, isStoreOnlyUpdate = false) {\r\n const localReqOptions = Object.assign(options);\r\n const {\r\n callback,\r\n store: { actionKey, key: storeKey, dispatch: dispatchProp, payload, keys },\r\n requestType, isDataReversed, resourceName, skipCustomPostProcessor = false, api: requestApi,\r\n } = localReqOptions;\r\n dispatchAction(actionKey, payload, storeKey, requestType, dispatchProp, keys, isDataReversed, requestApi);\r\n if (isStoreOnlyUpdate && !skipCustomPostProcessor) {\r\n const postProcessorName = `${resourceName || storeKey}PostProcessor`;\r\n const postProcessor = getPostProcessor(postProcessorName);\r\n if (postProcessor) postProcessor(payload, callback, dispatchProp, localReqOptions);\r\n }\r\n}\r\n\r\nasync function updateViaAPIOnly(options, storeData) {\r\n const localReqOptions = Object.assign(options);\r\n const {\r\n api: requestOptions,\r\n callback,\r\n dispatch,\r\n store: { key = '', keys = [] } = {},\r\n skipCustomPostProcessor = false,\r\n resourceName = '',\r\n processCustomHeaders = () => { },\r\n requestType,\r\n subProcessor,\r\n isDataReversed,\r\n } = localReqOptions;\r\n const ApiResult = await api(localReqOptions);\r\n const postProcessorName = `${resourceName || key}PostProcessor`;\r\n const postProcessor = getPostProcessor(postProcessorName);\r\n const curPostProcessor = postProcessor || getPostProcessor('basePostProcessor');\r\n return curPostProcessor(\r\n ApiResult, callback, dispatch,\r\n {\r\n api,\r\n keys,\r\n storeData,\r\n requestType,\r\n subProcessor,\r\n requestOptions,\r\n isDataReversed,\r\n processCustomHeaders,\r\n skipCustomPostProcessor,\r\n },\r\n );\r\n}\r\n\r\nasync function storeApiUpdate(options, storeData) {\r\n const localReqOptions = Object.assign(options);\r\n const {\r\n store: { actionKey, key: storeKey, dispatch: dispatchProp, keys },\r\n requestType, isDataReversed, api: requestApi,\r\n } = localReqOptions;\r\n if (actionKey.length > 0) {\r\n // Updating status to loading\r\n updateStoreKeyToLoading(actionKey, storeKey, requestType, dispatchProp, keys, isDataReversed, requestApi);\r\n // Queue and make API call, need a callback function to be called on success\r\n localReqOptions.store.payload = await updateViaAPIOnly(localReqOptions, storeData);\r\n updateStore(localReqOptions);\r\n }\r\n}\r\n\r\n/**\r\n * @description Call this to make API call, and then trigger respective actions\r\n * @param {Object} options The fetch config to pass, can be a combination of action & dynamic config\r\n */\r\nexport const action = async (options, dispatch, storeData) => {\r\n const localReqOptions = Object.assign(options);\r\n const {\r\n api: requestOptions,\r\n store,\r\n } = localReqOptions;\r\n localReqOptions.dispatch = dispatch;\r\n if (store && requestOptions) {\r\n await storeApiUpdate(localReqOptions, storeData);\r\n } else if (store) {\r\n updateStore(localReqOptions, true);\r\n } else if (requestOptions) {\r\n updateViaAPIOnly(localReqOptions, storeData);\r\n } else {\r\n // console.error('No Api/Store Options Passed');\r\n }\r\n};\r\n","import Loadable from 'react-loadable';\r\n\r\nconst loading = () =>
;\r\nconst DateRange = Loadable({\r\n loader: () => import('./sections/components/DateRange' /* webpackChunkName: \"DateRange\" */),\r\n loading,\r\n});\r\nconst NumberRange = Loadable({\r\n loader: () => import('./sections/components/NumberRange' /* webpackChunkName: \"NumberRange\" */),\r\n loading,\r\n});\r\nconst TenantStatusFilter = Loadable({\r\n loader: () => import('External/containers/tenant/list/components/TenantStatusFilter' /* webpackChunkName: \"TenantStatusFilter\" */),\r\n loading,\r\n});\r\nconst UnitStatusFilter = Loadable({\r\n loader: () => import('External/containers/unit/list/components/UnitStatusFilter' /* webpackChunkName: \"UnitStatusFilter\" */),\r\n loading,\r\n});\r\nconst UnitRentalStatusFilter = Loadable({\r\n loader: () => import('External/containers/unit/list/components/UnitRentalStatusFilter' /* webpackChunkName: \"UnitRentalStatusFilter\" */),\r\n loading,\r\n});\r\n\r\nexport {\r\n DateRange,\r\n NumberRange,\r\n TenantStatusFilter,\r\n UnitStatusFilter,\r\n UnitRentalStatusFilter,\r\n};\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst cardType = ['reserved', 'estimate', 'expired'];\r\nconst cardLabel = ['Reservation', 'Estimate', 'Expired Estimate'];\r\n\r\nconst CARD_TYPE = createEnumMap(cardType);\r\nconst CARD_LABEL = createEnumMap(cardLabel);\r\n\r\nexport { CARD_LABEL, CARD_TYPE };\r\n","/* eslint-disable eqeqeq */\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { getCurrentDate, convertToMomentObj } from 'Commons/helpers/utils/DateTime';\r\nimport { CARD_LABEL, CARD_TYPE } from './Constants';\r\n\r\n\r\nconst isEstimateExpired = (expirationDate) => {\r\n const today = getCurrentDate(false);\r\n const expiryDate = convertToMomentObj(expirationDate);\r\n return today > expiryDate;\r\n};\r\n\r\nconst getCardType = (estimateCode, isExpired) => {\r\n if (estimateCode) { return isExpired ? CARD_TYPE.EXPIRED : CARD_TYPE.ESTIMATE; }\r\n return CARD_TYPE.RESERVED;\r\n};\r\n\r\nconst getCardLabel = (estimateCode, isExpired) => {\r\n if (estimateCode) { return isExpired ? CARD_LABEL.EXPIRED_ESTIMATE : CARD_LABEL.ESTIMATE; }\r\n return CARD_LABEL.RESERVATION;\r\n};\r\n\r\nconst getUnitTypeDescription = (unitTypeId, unitTypeList) => {\r\n const { value: { description = '', category = [] } = {} } = unitTypeList\r\n .find(({ id }) => id == unitTypeId) || {};\r\n return `${description} ${category.map(c => labelFormatter(c)).join(', ')}`;\r\n};\r\n\r\n\r\nconst getUnitDescription = (unitId, unitList) => {\r\n const { label = '' } = unitList.find(({ id }) => id == unitId) || {};\r\n return label;\r\n};\r\n\r\n\r\nexport { isEstimateExpired, getCardLabel, getCardType, getUnitTypeDescription, getUnitDescription };\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst HEADER_VARIANT = createEnumMap(['Plain', 'With_Content']);\r\n\r\nexport { HEADER_VARIANT };\r\n","import {\r\n withStyles, List, ListItem,\r\n Typography,\r\n} from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport autoSuggestStyle from '../styles/AutoSuggestStyle';\r\nimport TenantLeadCard from '../../cards/tenantlead/components/TenantLeadCard';\r\nimport OccupancyCard from '../../cards/occupancy/components/OccupancyCard';\r\nimport UnitCard from '../../cards/unit/components/UnitCard';\r\nimport Popdown from '../../../generic/popdown/components/Popdown';\r\nimport ThreeDotProgress from '../../../generic/threedotprogress/components/ThreeDotProgress';\r\nimport { TIMEOUT, VIEW, AUTO_SUGGEST_RESOURCE } from '../../../../config/constants/Constants';\r\nimport { deepMerge } from '../../../../helpers/utils/DeepCopy';\r\nimport CARD_TYPE from '../config/Constants';\r\n\r\nclass AutoSuggest extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n const { initialValue } = props;\r\n this.state = {\r\n open: false,\r\n value: initialValue,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { onRef } = this.props;\r\n if (onRef) {\r\n onRef(this);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n const { onRef } = this.props;\r\n if (onRef) {\r\n onRef(undefined);\r\n }\r\n }\r\n\r\n onClear = () => {\r\n const { clearAutosuggest } = this.props;\r\n const value = '';\r\n this.prevInputValue = value;\r\n this.setState({ cards: undefined, open: false, value });\r\n clearAutosuggest();\r\n }\r\n\r\n onChange = (event) => {\r\n const { value: inputValue } = event.target;\r\n let cards = this.renderCard();\r\n if (inputValue && inputValue !== this.prevInputValue) {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.fetchData(inputValue);\r\n }, TIMEOUT);\r\n } else {\r\n if (this.timeout) clearTimeout(this.timeout);\r\n cards = undefined;\r\n }\r\n this.prevInputValue = inputValue;\r\n this.setState({ cards, open: true, error: undefined, value: inputValue });\r\n };\r\n\r\n fetchData = (userInput) => {\r\n const { onAction, onActionConfig, resource } = this.props;\r\n let endPoint = 'autosuggest';\r\n let view = VIEW.detail.value;\r\n if (resource === AUTO_SUGGEST_RESOURCE.OCCUPANCY) endPoint += '/occupancy';\r\n if (resource === AUTO_SUGGEST_RESOURCE.MOVE_OUT) endPoint += '/move-out';\r\n if (resource === AUTO_SUGGEST_RESOURCE.GLOBAL) {\r\n view = VIEW.card.value;\r\n }\r\n if (resource === AUTO_SUGGEST_RESOURCE.TENANT_LEAD) {\r\n endPoint += '/customer';\r\n view = VIEW.card.value;\r\n }\r\n const defaultConfig = {\r\n config: [{\r\n method: 'read',\r\n api: {\r\n dynamic: {\r\n methodType: 'POST',\r\n endPoint,\r\n body: {\r\n view,\r\n filter: [{ autoSuggest: userInput }],\r\n size: 5,\r\n },\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n },\r\n },\r\n callback: this.onFetchData,\r\n }],\r\n };\r\n const config = deepMerge(defaultConfig, onActionConfig);\r\n onAction(config);\r\n }\r\n\r\n onFetchData = (apiError, response) => {\r\n if (apiError) {\r\n const err = {localisable.somethingWentWrong};\r\n this.setState({ error: err });\r\n } else if (response) {\r\n this.processData(response);\r\n }\r\n }\r\n\r\n processData = (response) => {\r\n let { data = {} } = response;\r\n const { state: { value } = {} } = this;\r\n const { relationalData = {}, totalCount: total = 0 } = response;\r\n const {\r\n currentFacility, classes, resource, allowNavigation, onSelectCard,\r\n highlightInputTextInCard, currentAccountId,\r\n } = this.props;\r\n let cards = [];\r\n\r\n\r\n if (resource === AUTO_SUGGEST_RESOURCE.UNIT) {\r\n data = { unit: { data, totalCount: total } };\r\n }\r\n\r\n if (resource === AUTO_SUGGEST_RESOURCE.TENANT) {\r\n data = { tenant: { data, totalCount: total } };\r\n }\r\n\r\n if (resource === AUTO_SUGGEST_RESOURCE.OCCUPANCY) {\r\n const {\r\n reservation: { data: reservationData = [] } = {},\r\n estimate: { data: estimateData = [] } = {},\r\n } = data;\r\n data = { occupancy: { data: reservationData.concat(estimateData), totalCount: total } };\r\n }\r\n\r\n if (total) {\r\n Object.keys(data).forEach((type) => {\r\n const { [type]: { data: cardData = [], totalCount = 0 } = {} } = data;\r\n if (totalCount) {\r\n cardData.forEach(({\r\n name, email, address, address: { line1 } = {}, balance, comments, unitList, primaryContact,\r\n otherAddress: { alternateContact } = {}, type: tenantLeadType, id,\r\n phone: { primaryNumber: phone = '' } = {},\r\n label, ledger, reservationCode, tenant, estimateCode, customer,\r\n reservationDate, expirationDate, unitTypeId, unitId,\r\n }, index) => {\r\n if (resource) {\r\n if (resource === AUTO_SUGGEST_RESOURCE.OCCUPANCY) {\r\n cards.push(\r\n this.renderCard(\r\n this.selectCard(cardData[index], type, currentFacility, relationalData)}\r\n id={id}\r\n reservationCode={reservationCode}\r\n estimateCode={estimateCode}\r\n comments={comments}\r\n cardType={type}\r\n customer={customer || tenant}\r\n reservationDate={reservationDate}\r\n expirationDate={expirationDate}\r\n relationalData={relationalData}\r\n unitTypeId={unitTypeId}\r\n unitId={unitId}\r\n CardProps={{ classes: { cardContent: classes.cardContent } }}\r\n currentAccountId={currentAccountId}\r\n />,\r\n `${type}${id}`,\r\n ),\r\n );\r\n } else if (type === CARD_TYPE.UNIT) {\r\n cards.push(\r\n this.renderCard(\r\n this.selectCard(cardData[index], type, currentFacility)}\r\n id={id}\r\n currentFacility={currentFacility}\r\n resource={resource}\r\n name={label}\r\n currentAccountId={currentAccountId}\r\n />,\r\n `${type}${id}`,\r\n ),\r\n );\r\n } else if (resource === AUTO_SUGGEST_RESOURCE.TENANT_LEAD) {\r\n cards.push(\r\n this.renderCard(\r\n this.selectCard(cardData[index], type, currentFacility)}\r\n CardProps={{ classes: { cardContent: classes.cardContent } }}\r\n currentAccountId={currentAccountId}\r\n {...highlightInputTextInCard && { autoSuggestText: value }}\r\n />,\r\n `${type}${id}`,\r\n ),\r\n );\r\n } else {\r\n cards.push(\r\n this.renderCard(\r\n this.selectCard(cardData[index], type, currentFacility)}\r\n currentAccountId={currentAccountId}\r\n {...highlightInputTextInCard && { autoSuggestText: value }}\r\n />,\r\n `${type}${id}`,\r\n ),\r\n\r\n );\r\n }\r\n } else {\r\n cards.push(\r\n this.renderCard(\r\n this.selectCard(cardData[index])}\r\n variant=\"body2\"\r\n >\r\n {label}\r\n ,\r\n index,\r\n ),\r\n );\r\n }\r\n });\r\n }\r\n });\r\n } else {\r\n cards = this.renderCard(\r\n \r\n {localisable.noResultFound}\r\n ,\r\n );\r\n }\r\n\r\n this.setState({ cards });\r\n }\r\n\r\n selectCard = (data, type, facility, relationalData) => {\r\n const { onSelectCard, labelRenderer } = this.props;\r\n const dataToReturn = { ...data };\r\n if (type && facility) {\r\n dataToReturn.cardType = type;\r\n dataToReturn.currentFacility = facility;\r\n }\r\n if (relationalData) {\r\n dataToReturn.relationalData = relationalData;\r\n }\r\n if (onSelectCard) {\r\n this.onClickAway();\r\n onSelectCard(dataToReturn);\r\n }\r\n if (labelRenderer) {\r\n this.setState({ value: labelRenderer(data) });\r\n }\r\n }\r\n\r\n onClick = () => {\r\n this.setState(prevState => (!prevState.open ? { open: true } : undefined));\r\n }\r\n\r\n onClickAway = () => {\r\n this.setState({ open: false });\r\n }\r\n\r\n getAddOn = () => {\r\n const { clearable, PopdownProps: { addon } = {}, classes, endIconProps = {} } = this.props;\r\n const { value } = this.state;\r\n const defaultAddon = addon || { start: };\r\n return clearable && value\r\n ? {\r\n ...defaultAddon,\r\n end:\r\n ,\r\n }\r\n : defaultAddon;\r\n }\r\n\r\n renderCard = (card, key) => {\r\n const { classes } = this.props;\r\n return (\r\n \r\n {card}\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { classes, className, PopdownProps, textFieldClasses } = this.props;\r\n const { cards, error, value, open } = this.state;\r\n return (\r\n \r\n \r\n {(error && this.renderCard(error)) || cards}\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nAutoSuggest.propTypes = {\r\n currentFacility: PropTypes.object,\r\n onAction: PropTypes.func,\r\n onActionConfig: PropTypes.object,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n PopdownProps: PropTypes.object,\r\n inputProps: PropTypes.string,\r\n textFieldClasses: PropTypes.object,\r\n resource: PropTypes.number,\r\n onSelectCard: PropTypes.func,\r\n labelRenderer: PropTypes.func,\r\n onRef: PropTypes.func,\r\n allowNavigation: PropTypes.bool,\r\n clearable: PropTypes.bool,\r\n clearAutosuggest: PropTypes.func,\r\n initialValue: PropTypes.string,\r\n endIconProps: PropTypes.object,\r\n highlightInputTextInCard: PropTypes.bool,\r\n currentAccountId: PropTypes.object,\r\n};\r\n\r\nAutoSuggest.defaultProps = {\r\n className: '',\r\n onAction: () => {},\r\n onActionConfig: {},\r\n currentFacility: {},\r\n PopdownProps: {},\r\n textFieldClasses: {},\r\n endIconProps: {},\r\n resource: AUTO_SUGGEST_RESOURCE.TENANT_LEAD,\r\n allowNavigation: false,\r\n clearable: false,\r\n initialValue: '',\r\n clearAutosuggest: () => {},\r\n highlightInputTextInCard: false,\r\n};\r\n\r\nexport default (withStyles(autoSuggestStyle)(AutoSuggest));\r\n\r\nconst SmartAutoSuggest = window.withProvider('AutoSuggest');\r\n\r\nexport { SmartAutoSuggest as AutoSuggest };\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './enums';\r\n\r\nconst CRUD_METHODS = createEnumMap(enums.crud);\r\nconst DEFAULT_EXTERNAL_ROUTE = '/a/facility';\r\nconst DEFAULT_INTERNAL_ROUTE = '/i';\r\n\r\nexport { CRUD_METHODS, DEFAULT_EXTERNAL_ROUTE, DEFAULT_INTERNAL_ROUTE };\r\n","export default { crud: ['create', 'update', 'read', 'delete'] };\r\n","import { AUTH_ENDPOINTS, FACILITY_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport { FACILITY_STORE_KEY } from 'External/containers/dashboard/widgets/header/configs/Constants';\r\n\r\nconst updateFacilityStore = (onAction, payload = {}) => {\r\n const method = 'update';\r\n onAction({\r\n sync: true,\r\n config: [\r\n {\r\n store: {\r\n key: FACILITY_STORE_KEY,\r\n actionKey: `${FACILITY_STORE_KEY}_${method}`,\r\n payload: { data: payload },\r\n },\r\n method,\r\n },\r\n ],\r\n\r\n });\r\n};\r\n\r\nconst callApi = (onAction, endPoint, body, callback = () => {}, shouldSendCustomHeader = true, method = 'POST',\r\n storeMethod = 'read') => {\r\n if (onAction) {\r\n onAction({\r\n config: [{\r\n api: {\r\n method: storeMethod,\r\n action: {\r\n methodType: `${method}`,\r\n endPoint,\r\n body,\r\n ...shouldSendCustomHeader && {\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n }\r\n};\r\n\r\nconst updateSessionTimeout = (onAction, callback) => {\r\n callApi(onAction, AUTH_ENDPOINTS.UPDATE_SESSION_TIMEOUT, {}, callback, false);\r\n};\r\n\r\nconst updateFacility = (onAction, fid, body, callback) => {\r\n callApi(onAction, FACILITY_ENDPOINTS.update(fid), body, callback, false, 'PUT');\r\n};\r\n\r\nconst acceptLegalAgreement = (onAction, fid, callback) => {\r\n callApi(onAction, FACILITY_ENDPOINTS.acceptLegalAgreement(fid), {}, callback, false);\r\n};\r\n\r\nexport { updateSessionTimeout, updateFacility, acceptLegalAgreement, updateFacilityStore };\r\n","import { makeStyles, FormLabel } from 'Generic/componentlibrary/components/Components';\r\nimport FormItem from 'Generic/formitem/components/FormItem';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport labelStyle from '../styles/LabelStyle';\r\n\r\nconst useStyles = makeStyles(labelStyle);\r\n\r\nconst Label = ({ FormItemProps, children, className, disabled, ...props }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nLabel.propTypes = {\r\n children: PropTypes.node,\r\n disabled: PropTypes.bool,\r\n className: PropTypes.string,\r\n FormItemProps: PropTypes.object,\r\n};\r\n\r\nLabel.defaultProps = { FormItemProps: {} };\r\n\r\nexport default Label;\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst FILE_UPLOAD_STATUS = createEnumMap(['Loading', 'Error', 'Success']);\r\n\r\nexport { FILE_UPLOAD_STATUS };\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nimport * as React from 'react';\r\nimport { findDOMNode } from 'react-dom';\r\nimport { provideDisplayName } from '../utils';\r\n\r\nexport default function sortableHandle(\r\n WrappedComponent,\r\n config = { withRef: false },\r\n) {\r\n return class WithSortableHandle extends React.Component {\r\n static displayName = provideDisplayName('sortableHandle', WrappedComponent);\r\n\r\n componentDidMount() {\r\n // eslint-disable-next-line react/no-find-dom-node\r\n const node = findDOMNode(this);\r\n node.sortableHandle = true;\r\n }\r\n\r\n render() {\r\n const ref = config.withRef ? 'wrappedInstance' : null;\r\n\r\n return ;\r\n }\r\n };\r\n}\r\n\r\nexport function isSortableHandle(node) {\r\n return node.sortableHandle != null;\r\n}\r\n","import { deCapitalize, camelCase } from 'Commons/helpers/utils/DataHelpers';\r\nimport { RESOURCE_NAME_TO_STORE_KEY } from 'Commons/components/business/basecomponent/config/Constants';\r\n\r\nconst CONFIGURATION_KEY_POSTFIX = '_configuration';\r\n\r\nconst getStoreKeyToClear = (message, storesToNotClearSilently = []) => {\r\n const { resourceName = '' } = message;\r\n\r\n if (resourceName.includes(CONFIGURATION_KEY_POSTFIX)) {\r\n const { fields: { configType } = {} } = message;\r\n return storesToNotClearSilently.includes(configType) ? '' : deCapitalize(camelCase(configType));\r\n }\r\n\r\n return storesToNotClearSilently.includes(resourceName)\r\n || storesToNotClearSilently.includes(RESOURCE_NAME_TO_STORE_KEY[resourceName])\r\n ? '' : RESOURCE_NAME_TO_STORE_KEY[resourceName];\r\n};\r\n\r\nexport { getStoreKeyToClear };\r\n","\r\nimport { HEADER_VARIANT } from 'Commons/components/business/page/config/Constants';\r\n\r\nconst PageProps = {\r\n header: PropTypes.node,\r\n footer: PropTypes.node,\r\n title: PropTypes.string,\r\n loading: PropTypes.bool,\r\n children: PropTypes.node,\r\n classes: PropTypes.object,\r\n fullHeight: PropTypes.bool,\r\n getBodyRef: PropTypes.func,\r\n getFooterRef: PropTypes.func,\r\n className: PropTypes.string,\r\n getHeaderRef: PropTypes.func,\r\n bodyClassName: PropTypes.string,\r\n headerClassName: PropTypes.string,\r\n footerClassName: PropTypes.string,\r\n loaderClassName: PropTypes.string,\r\n headerContainerProps: PropTypes.object,\r\n headerVariant: PropTypes.oneOf(Object.values(HEADER_VARIANT)),\r\n};\r\n\r\nconst PageDefaultProps = {\r\n headerVariant: HEADER_VARIANT.PLAIN,\r\n headerContainerProps: {},\r\n};\r\n\r\nexport { PageProps, PageDefaultProps };\r\n","import { SOURCE } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\n\r\nconst tenantNameAscSort = {\r\n name: {\r\n lastName: { order: 'asc' },\r\n firstName: { order: 'asc' },\r\n },\r\n};\r\nconst tenantNameDescSort = {\r\n name: {\r\n lastName: { order: 'desc' },\r\n firstName: { order: 'desc' },\r\n },\r\n};\r\n\r\nconst sortConfig = {\r\n [SOURCE.unit.value]: [\r\n {\r\n label: 'Unit Number',\r\n value: 'Unit Number',\r\n sort: [{ label: { order: 'asc' } }],\r\n },\r\n {\r\n label: 'Unit Size',\r\n value: 'Unit Size',\r\n sort: [{ unitType: { value: { description: { order: 'asc' } } } }],\r\n },\r\n {\r\n label: 'Next Rent Assessment Date',\r\n value: 'Next Rent Assessment Date',\r\n sort: [{ nextRentAssessmentDate: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.tenant.value]: [\r\n {\r\n label: 'Tenant Name (Asc)',\r\n value: 'Tenant Name (Asc)',\r\n sort: [{\r\n ...tenantNameAscSort,\r\n ledger: { createdDate: { order: 'desc' } },\r\n }],\r\n },\r\n {\r\n label: 'Tenant Name (Desc)',\r\n value: 'Tenant Name (Desc)',\r\n sort: [{\r\n ...tenantNameDescSort,\r\n ledger: { createdDate: { order: 'desc' } },\r\n }],\r\n },\r\n {\r\n label: 'Balance (Asc)',\r\n value: 'Balance (Asc)',\r\n sort: [\r\n { totalBalance: { order: 'asc' } },\r\n { ...tenantNameAscSort },\r\n ],\r\n },\r\n {\r\n label: 'Balance (Desc)',\r\n value: 'Balance (Desc)',\r\n sort: [\r\n { totalBalance: { order: 'desc' } },\r\n { ...tenantNameAscSort },\r\n ],\r\n },\r\n {\r\n label: 'Email (Asc)',\r\n value: 'Email (Asc)',\r\n sort: [\r\n { email: { emailAddress: { order: 'asc' } } },\r\n { ...tenantNameAscSort },\r\n ],\r\n },\r\n {\r\n label: 'Email (Desc)',\r\n value: 'Email (Desc)',\r\n sort: [\r\n { email: { emailAddress: { order: 'desc' } } },\r\n { ...tenantNameAscSort },\r\n ],\r\n },\r\n ],\r\n [SOURCE.reservation.value]: [\r\n {\r\n label: 'Expected Move In Date',\r\n value: 'Expected Move In Date',\r\n sort: [\r\n { rentalInfo: { moveInDate: { order: 'desc' } } },\r\n { reservationDate: { order: 'desc' } },\r\n ],\r\n },\r\n {\r\n label: 'Reservation Code',\r\n value: 'Reservation Code',\r\n sort: [{ reservationCode: { order: 'asc' } }],\r\n },\r\n {\r\n label: 'Tenant Name',\r\n value: 'Tenant Name',\r\n sort: [{ tenant: { name: { lastName: { order: 'asc' } } } }],\r\n },\r\n ],\r\n [SOURCE.configuration.value]: [\r\n {\r\n label: 'Description',\r\n value: 'Description',\r\n sort: [{ value: { description: { order: 'asc' } } }],\r\n },\r\n ],\r\n [SOURCE.user.value]: [\r\n {\r\n label: 'Name',\r\n value: 'Name',\r\n sort: [{ firstName: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.vendor.value]: [\r\n {\r\n label: 'Vendor Name',\r\n value: 'Vendor Name',\r\n sort: [{ vendorName: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.inventoryList.value]: [\r\n {\r\n label: 'Description',\r\n value: 'Description',\r\n sort: [{ productDescription: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.maintenanceEvent.value]: [\r\n {\r\n label: 'Start Date',\r\n value: 'Start Date',\r\n sort: [{ startDate: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.lead.value]: [\r\n {\r\n label: 'Last Contacted Date',\r\n value: 'Last Contacted Date',\r\n sort: [{ lastContactedDate: { order: 'desc' } }],\r\n },\r\n {\r\n label: 'Name',\r\n value: 'Name',\r\n sort: [{ name: { lastName: { order: 'asc' } } }],\r\n },\r\n ],\r\n [SOURCE.pendingOverlockUnlockList.value]: [\r\n {\r\n label: 'Unit Number',\r\n value: 'Unit Number',\r\n sort: [{ label: { order: 'asc' } }],\r\n },\r\n ],\r\n [SOURCE.delinquency.value]: [\r\n {\r\n label: localisable.noOfDaysLateAsc,\r\n value: localisable.noOfDaysLateAsc,\r\n sort: [{ noOfDaysLate: { order: 'asc' } }],\r\n },\r\n {\r\n label: localisable.noOfDaysLateDesc,\r\n value: localisable.noOfDaysLateDesc,\r\n sort: [{ noOfDaysLate: { order: 'desc' } }],\r\n },\r\n {\r\n label: localisable.tenantNameAsc,\r\n value: localisable.tenantNameAsc,\r\n sort: [{ tenant: { name: { lastName: { order: 'asc' } } } }],\r\n },\r\n {\r\n label: localisable.tenantNameDesc,\r\n value: localisable.tenantNameDesc,\r\n sort: [{\r\n tenant: {\r\n name: {\r\n lastName: { order: 'desc' },\r\n firstName: { order: 'desc' },\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n ],\r\n [SOURCE.rentAdjustment.value]: [\r\n {\r\n label: 'Effective Date (Desc)',\r\n value: 'Effective Date (Desc)',\r\n sort: [{ effectiveDate: { order: 'desc' } }],\r\n },\r\n ],\r\n [SOURCE.unitDepositUpdate.value]: [\r\n {\r\n label: 'Unit Number (Asc)',\r\n value: 'Unit Number (Asc)',\r\n sort: [{ label: { order: 'asc' } }],\r\n },\r\n {\r\n label: 'Unit Number (Desc)',\r\n value: 'Unit Number (Desc)',\r\n sort: [{ label: { order: 'desc' } }],\r\n },\r\n ],\r\n [SOURCE.tenantDepositUpdate.value]: [\r\n {\r\n label: 'Tenant Name (Asc)',\r\n value: 'Tenant Name (Asc)',\r\n sort: [{ ...tenantNameAscSort }],\r\n },\r\n {\r\n label: 'Tenant Name (Desc)',\r\n value: 'Tenant Name (Desc)',\r\n sort: [{ ...tenantNameDescSort }],\r\n },\r\n ],\r\n};\r\n\r\nexport default sortConfig;\r\n","import { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\n\r\nconst SmartListProps = {\r\n postProcessOnAction: PropTypes.func,\r\n permission: PropTypes.object,\r\n listConfig: PropTypes.oneOfType([\r\n PropTypes.shape({\r\n store: PropTypes.string.isRequired,\r\n columns: PropTypes.any.isRequired,\r\n createUrl: PropTypes.string,\r\n searchUrl: PropTypes.string,\r\n filterSearchUrl: PropTypes.string, // The search url used for filtering\r\n name: PropTypes.string,\r\n emptyBodyText: PropTypes.any,\r\n loadingBodyText: PropTypes.any,\r\n tableProps: PropTypes.any,\r\n tablePaperProps: PropTypes.any,\r\n filterProps: PropTypes.any, // The props for filter overlay\r\n formatterProps: PropTypes.any,\r\n actionItemsPanelProps: PropTypes.object,\r\n quickFilters: PropTypes.array,\r\n showCount: PropTypes.bool,\r\n source: PropTypes.string,\r\n disableDebouncing: PropTypes.bool,\r\n }),\r\n PropTypes.func,\r\n ]),\r\n clearStoreKeyOnUnmount: PropTypes.bool,\r\n storesToNotClearSilently: PropTypes.array,\r\n};\r\n\r\nconst SmartListDefaultProps = {\r\n postProcessOnAction: () => { },\r\n clearStoreKeyOnUnmount: false,\r\n onAutoSuggestTextFieldChange: EMPTY_FUNC,\r\n disableDebouncing: false,\r\n};\r\n\r\nexport { SmartListProps, SmartListDefaultProps };\r\n","import localisable from 'Commons/config/strings/localisable';\r\n\r\nconst setFormValuesForUseCardOnFile = (setFieldValue, isAutoPayEnabled) => {\r\n if (setFieldValue) {\r\n setFieldValue('extra.payUsing', localisable.useCardOnFile);\r\n setFieldValue('useCardOnFile', true, false);\r\n setFieldValue('cardInfo', {\r\n saveCardForFutureTransactions: true,\r\n autoPayEnabled: isAutoPayEnabled,\r\n }, false);\r\n }\r\n};\r\n\r\nexport { setFormValuesForUseCardOnFile };\r\n","\r\nconst roleSelectionStyle = theme => ({\r\n rootClass: { width: '50%' },\r\n flexContainer: { justifyContent: 'flex-end', paddingRight: 16 },\r\n block: { padding: theme.spacing(1, 4, 0, 4) },\r\n title: {\r\n minHeight: 48,\r\n maxHeight: 48,\r\n },\r\n dropDownGrid: {\r\n alignItems: 'center',\r\n paddingLeft: 20,\r\n display: 'grid',\r\n },\r\n dropdown: { width: '100%' },\r\n tablePadding: { width: '100%' },\r\n onHoverRole: { '&:hover': { backgroundColor: theme.palette.hover } },\r\n popper: {\r\n zIndex: 5000,\r\n padding: 16,\r\n },\r\n paperPadding: { padding: 16 },\r\n listRenderer: {\r\n maxHeight: 150,\r\n overflowY: 'auto',\r\n },\r\n iconPadding: { padding: 4 },\r\n checkbox: {\r\n padding: 0,\r\n marginTop: -2,\r\n },\r\n});\r\n\r\nexport default roleSelectionStyle;\r\n","const FOCUS_EVENT_LISTENER = 'focus';\r\nconst BLUR_EVENT_LISTENER = 'blur';\r\n\r\nconst getEventListeners = ({ onFocus, onBlur }) => (\r\n [\r\n {\r\n listener: FOCUS_EVENT_LISTENER,\r\n action: onFocus,\r\n },\r\n {\r\n listener: BLUR_EVENT_LISTENER,\r\n action: onBlur,\r\n },\r\n ]\r\n);\r\n\r\nexport { getEventListeners, FOCUS_EVENT_LISTENER, BLUR_EVENT_LISTENER };\r\n","import { Grid, Typography } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { STATUS, TABLE_STATE } from 'Commons/config/constants/Constants';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport localisable from '../../../../config/strings/localisable';\r\nimport ThreeDotProgress from '../../threedotprogress/components/ThreeDotProgress';\r\n\r\nexport function EmptyOrLoadingTable(emptyBodyRenderer, classes, rowHeight, state) {\r\n let element;\r\n if (emptyBodyRenderer && typeof emptyBodyRenderer === 'function') {\r\n element = emptyBodyRenderer();\r\n } else {\r\n element = localisable.messages.defaultNoContent;\r\n }\r\n return (\r\n \r\n {element}\r\n \r\n );\r\n}\r\n\r\nfunction TableFooterOrHeader(props) {\r\n const { classes, verticalScrollSize, children, rowHeight: height, isHeader, headerRowHeight, leftAndRightPadding } = props;\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\nTableFooterOrHeader.propTypes = {\r\n classes: PropTypes.object,\r\n verticalScrollSize: PropTypes.number,\r\n rowHeight: PropTypes.number,\r\n children: PropTypes.node,\r\n isHeader: PropTypes.bool,\r\n headerRowHeight: PropTypes.number,\r\n leftAndRightPadding: PropTypes.number,\r\n};\r\n\r\n\r\nexport function TableLoading(props) {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function TableNoMoreRows(props) {\r\n return (\r\n \r\n {localisable.noMoreResults}\r\n \r\n );\r\n}\r\n\r\nexport function StatusIndicator({ classes, isConfigurationList, activeLabel, inactiveLabel }) {\r\n return (\r\n \r\n \r\n \r\n \r\n { activeLabel || STATUS.Active.value}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {inactiveLabel || STATUS.Inactive.value}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\nStatusIndicator.propTypes = {\r\n classes: PropTypes.object,\r\n isConfigurationList: PropTypes.bool,\r\n inactiveLabel: PropTypes.string,\r\n activeLabel: PropTypes.string,\r\n};\r\n","import { DASHBOARD_TYPE } from 'Commons/config/constants/Constants';\r\nimport { OPERATIONS_PATHS } from 'External/containers/dashboard/widgets/sidebar/WorkCenterPaths';\r\nimport { ROUTE } from 'External/redux/config/RouteNames';\r\n\r\nconst externalRouteEntityMapping = {\r\n 0: [ROUTE.PENDING_TASKS],\r\n 1: [ROUTE.TENANT_LIST, ROUTE.CREATE_TENANT, ROUTE.EDIT_TENANT, ROUTE.VIEW_TENANT, ROUTE.LEDGER_REVIEW,\r\n ROUTE.LEAD_LIST, ROUTE.CREATE_LEAD, ROUTE.EDIT_LEAD,\r\n ROUTE.CONVERSATIONS, ROUTE.DELINQUENCY_LIST],\r\n 2: [ROUTE.UNIT_LIST, ROUTE.CREATE_UNIT, ROUTE.EDIT_UNIT,\r\n ROUTE.BEV_VIEW, ROUTE.BEV_SETUP,\r\n ROUTE.RESERVATION_LIST, ROUTE.RESERVATION, ROUTE.WAITING_LIST],\r\n 3: [ROUTE.DOCS_GD, ROUTE.DOCS_RB, ROUTE.REPORT, ROUTE.REPORT_WC],\r\n 4: [ROUTE.OPERATIONS, OPERATIONS_PATHS,\r\n ROUTE.POINT_OF_SALE, ROUTE.INVENTORY_LIST, ROUTE.VENDOR_LIST, ROUTE.RETAIL_SALE_RETURNS,\r\n ROUTE.VEHICLE, ROUTE.FINANCIAL_LIST, ROUTE.CREATE_AR, ROUTE.DEPOSIT_UPDATE],\r\n};\r\n\r\nconst externalSettingsRouteEntityMapping = {\r\n 0: [ROUTE.USER_LIST, ROUTE.USER_ROLE],\r\n 1: ['c/facility'],\r\n 2: [ROUTE.REPORT, ROUTE.CONSOLIDATED_REPORT],\r\n};\r\n\r\nconst excludeEntities = ['movein', 'moveout', 'estimate'];\r\n\r\nconst findMatchingParentEntityIndex = (dashboardType, pathname) => {\r\n const getMatchingEntity = routeEntityMapping => Object.entries(routeEntityMapping).find(\r\n ([, routes]) => routes.some(route => pathname.includes(route)),\r\n );\r\n let routeEntityMapping;\r\n if (dashboardType === DASHBOARD_TYPE.SETTINGS) {\r\n routeEntityMapping = externalSettingsRouteEntityMapping;\r\n } else if (dashboardType === DASHBOARD_TYPE.EXTERNAL) {\r\n routeEntityMapping = externalRouteEntityMapping;\r\n }\r\n const matchedEntity = getMatchingEntity(routeEntityMapping);\r\n if (matchedEntity) {\r\n return parseInt(matchedEntity[0], 10);\r\n }\r\n if (excludeEntities.some(entity => pathname.includes(entity))) {\r\n return null;\r\n }\r\n return 0;\r\n};\r\n\r\nexport { externalRouteEntityMapping, externalSettingsRouteEntityMapping, findMatchingParentEntityIndex };\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { KEYCODE } from '../utils';\r\nimport defaultGetHelperDimensions from './defaultGetHelperDimensions';\r\nimport defaultShouldCancelStart from './defaultShouldCancelStart';\r\n\r\nexport const propTypes = {\r\n axis: PropTypes.oneOf(['x', 'y', 'xy']),\r\n contentWindow: PropTypes.any,\r\n disableAutoscroll: PropTypes.bool,\r\n distance: PropTypes.number,\r\n getContainer: PropTypes.func,\r\n getHelperDimensions: PropTypes.func,\r\n helperClass: PropTypes.string,\r\n helperContainer: PropTypes.oneOfType([\r\n PropTypes.func,\r\n typeof HTMLElement === 'undefined'\r\n ? PropTypes.any\r\n : PropTypes.instanceOf(HTMLElement),\r\n ]),\r\n hideSortableGhost: PropTypes.bool,\r\n keyboardSortingTransitionDuration: PropTypes.number,\r\n lockAxis: PropTypes.string,\r\n lockOffset: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n PropTypes.arrayOf(\r\n PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n ),\r\n ]),\r\n lockToContainerEdges: PropTypes.bool,\r\n onSortEnd: PropTypes.func,\r\n onSortMove: PropTypes.func,\r\n onSortOver: PropTypes.func,\r\n onSortStart: PropTypes.func,\r\n pressDelay: PropTypes.number,\r\n pressThreshold: PropTypes.number,\r\n keyCodes: PropTypes.shape({\r\n lift: PropTypes.arrayOf(PropTypes.number),\r\n drop: PropTypes.arrayOf(PropTypes.number),\r\n cancel: PropTypes.arrayOf(PropTypes.number),\r\n up: PropTypes.arrayOf(PropTypes.number),\r\n down: PropTypes.arrayOf(PropTypes.number),\r\n }),\r\n shouldCancelStart: PropTypes.func,\r\n transitionDuration: PropTypes.number,\r\n updateBeforeSortStart: PropTypes.func,\r\n useDragHandle: PropTypes.bool,\r\n useWindowAsScrollContainer: PropTypes.bool,\r\n};\r\n\r\nexport const defaultKeyCodes = {\r\n lift: [KEYCODE.SPACE],\r\n drop: [KEYCODE.SPACE],\r\n cancel: [KEYCODE.ESC],\r\n up: [KEYCODE.UP, KEYCODE.LEFT],\r\n down: [KEYCODE.DOWN, KEYCODE.RIGHT],\r\n};\r\n\r\nexport const defaultProps = {\r\n axis: 'y',\r\n disableAutoscroll: false,\r\n distance: 0,\r\n getHelperDimensions: defaultGetHelperDimensions,\r\n hideSortableGhost: true,\r\n lockOffset: '50%',\r\n lockToContainerEdges: false,\r\n pressDelay: 0,\r\n pressThreshold: 5,\r\n keyCodes: defaultKeyCodes,\r\n shouldCancelStart: defaultShouldCancelStart,\r\n transitionDuration: 300,\r\n useWindowAsScrollContainer: false,\r\n};\r\n\r\nexport const omittedProps = Object.keys(propTypes);\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nexport default function defaultGetHelperDimensions({ node }) {\r\n return {\r\n height: node.offsetHeight,\r\n width: node.offsetWidth,\r\n };\r\n}\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nimport { NodeType, closest } from '../utils';\r\n\r\nexport default function defaultShouldCancelStart(event) {\r\n // Cancel sorting if the event target is an `input`, `textarea`, `select` or `option`\r\n const interactiveElements = [\r\n NodeType.Input,\r\n NodeType.Textarea,\r\n NodeType.Select,\r\n NodeType.Option,\r\n NodeType.Button,\r\n ];\r\n\r\n if (interactiveElements.indexOf(event.target.tagName) !== -1) {\r\n // Return true to cancel sorting\r\n return true;\r\n }\r\n\r\n return !!closest(event.target, el => el.contentEditable === 'true');\r\n}\r\n","import { withRouter } from 'Commons/components/business/provider/WithRouterHoc';\r\nimport { withStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\nimport { SOURCE, FEATURE } from 'Commons/config/constants/Constants';\r\nimport formattersStyle from '../styles/FormattersStyles';\r\nimport { belongsToAnyOfGivenSources } from '../utils/Helper';\r\n\r\nimport * as Formatters from './Formatters';\r\n\r\nconst moveInVisible = (permission, source) => hasPermission(permission, 'moveIn')\r\n&& !belongsToAnyOfGivenSources(source, [SOURCE.user.value, SOURCE.configuration.value]);\r\n\r\nconst moveOutVisible = (permission, source) => hasPermission(permission, 'moveOut')\r\n&& !belongsToAnyOfGivenSources(source, [SOURCE.user.value, SOURCE.configuration.value, SOURCE.lead.value]);\r\n\r\nconst paymentVisible = (permission, source) => hasPermission(permission, FEATURE.payment.value)\r\n&& !belongsToAnyOfGivenSources(source, [SOURCE.user.value, SOURCE.configuration.value, SOURCE.lead.value]);\r\n\r\nconst promoPlanVisible = (permission, source) => belongsToAnyOfGivenSources(source, [SOURCE.promoPlan.value]);\r\n\r\nconst useFormatter = ({ source = 'tenant', formattersRequested = [], stylesheet }) => formattersRequested\r\n .reduce((allRequestedFormatters, formatter) => {\r\n const Component = Formatters[formatter];\r\n if (!Component) { throw new Error(`${formatter} not found`); }\r\n\r\n const Formatter = withRouter(withStyles(theme => ({\r\n ...formattersStyle(theme),\r\n ...(typeof stylesheet === 'function' ? stylesheet(theme) : stylesheet),\r\n }))(Component, { index: 1 })); // To Prioritize Formatters Style over Table Style\r\n\r\n return {\r\n ...allRequestedFormatters,\r\n [formatter]: (...data) => {\r\n let actionsVisibility = {};\r\n if (formatter === 'Action') {\r\n const [,,,, { permission } = {}] = data || [];\r\n const isMoveInVisible = moveInVisible(permission, source);\r\n const isMoveOutVisible = moveOutVisible(permission, source);\r\n const isPaymentVisible = paymentVisible(permission, source);\r\n const isPromoPlanVisible = promoPlanVisible(permission, source);\r\n actionsVisibility = { isMoveInVisible, isMoveOutVisible, isPaymentVisible, isPromoPlanVisible };\r\n }\r\n return ;\r\n },\r\n };\r\n }, {});\r\n\r\nexport default useFormatter;\r\n","import { Grid, withStyles } from '../../../generic/componentlibrary/components/Components';\r\nimport actionStyle from '../styles/ActionsStyle';\r\n\r\nclass Actions extends React.Component {\r\n render() {\r\n const { classes, config, ...props } = this.props;\r\n return (\r\n \r\n {\r\n config.map((item = {}, index) => {\r\n const {\r\n component,\r\n action,\r\n disabled = false,\r\n } = item;\r\n const isDisabled = typeof disabled === 'function' ? disabled() : disabled;\r\n const eventHandler = isDisabled ? {} : { ...action };\r\n const key = `${index}-${index}`;\r\n return (\r\n component && (\r\n \r\n {component}\r\n \r\n )\r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nActions.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n config: PropTypes.arrayOf(PropTypes.shape({\r\n component: PropTypes.node,\r\n disabled: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\r\n action: PropTypes.object,\r\n })),\r\n};\r\n\r\nActions.defaultProps = {};\r\n\r\nexport default withStyles(actionStyle)(Actions);\r\n","import { Grid, makeStyles, Tab as MaterialUiTab, Tabs as MaterialUiTabs }\r\nfrom 'Generic/componentlibrary/components/Components';\r\nimport React, { useState } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport tabsStyle from '../styles/TabStyle';\r\nimport { HIGHLIGHT_TYPE, EMPTY_LIST } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(tabsStyle, { name: 'Tabs' });\r\n\r\nconst Separator = ({ className }) => |;\r\n\r\nSeparator.propTypes = { className: PropTypes.string };\r\n\r\nconst TabPanel = ({ children, index, className, ...other }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nTabPanel.propTypes = {\r\n children: PropTypes.node,\r\n index: PropTypes.number.isRequired,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n};\r\n\r\nconst Tabs = ({\r\n tabsData = EMPTY_LIST, classes: classesProp, childClasses, highlightType, activeTab,\r\n tabsClasses, getActiveTab, separator, fullWidth, separatorPadding, tabClasses,\r\n TabIndicatorProps: { className: tabIndicatorClassName, ...TabIndicatorProps }, ...props\r\n}) => {\r\n const classes = useStyles({ classes: classesProp });\r\n const { rootClass, flexContainerClass } = tabsClasses;\r\n const [selectedTab, setSelectedTab] = useState(activeTab);\r\n\r\n const handleChange = (_, newValue) => {\r\n setSelectedTab(newValue);\r\n getActiveTab(newValue);\r\n };\r\n\r\n const TabsDataRenderer = tabsData.map(({ id, children, disabled, mountAlways = false }) => (\r\n mountAlways || selectedTab === id\r\n ? (\r\n \r\n {children}\r\n \r\n )\r\n : null\r\n ));\r\n\r\n const getClasses = (disabled, color) => ({\r\n root: clsx(classes.tabs, !disabled && {\r\n [classes[`${color}Border`]]: highlightType !== HIGHLIGHT_TYPE.DEFAULT,\r\n [classes.default]: highlightType === HIGHLIGHT_TYPE.DEFAULT,\r\n [classes.halfBottomAlways]: highlightType === HIGHLIGHT_TYPE.HALF,\r\n [classes.halfBottomOnHover]: highlightType === HIGHLIGHT_TYPE.HALF_ON_HOVER,\r\n }),\r\n selected: classes.selected,\r\n ...tabClasses,\r\n });\r\n return (\r\n <>\r\n \r\n {\r\n tabsData.map(({ id, label, disabled, color = 'primary' }, index) => (\r\n [\r\n ,\r\n ...((separator && index !== tabsData.length - 1)\r\n ? []\r\n : []),\r\n ]\r\n ))\r\n }\r\n \r\n {TabsDataRenderer}\r\n \r\n );\r\n};\r\n\r\nTabs.propTypes = {\r\n tabsData: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.number,\r\n label: PropTypes.any,\r\n disabled: PropTypes.bool,\r\n mountAlways: PropTypes.bool,\r\n color: PropTypes.oneOf(['primary', 'secondary', 'tertiary', 'rolesGroupPrimary', 'rolesGroupSecondary', 'rolesGroupTertiary']),\r\n })).isRequired,\r\n classes: PropTypes.object,\r\n highlightType: PropTypes.oneOf(Object.values(HIGHLIGHT_TYPE)),\r\n activeTab: PropTypes.number,\r\n childClasses: PropTypes.string,\r\n tabsClasses: PropTypes.object,\r\n getActiveTab: PropTypes.func,\r\n separator: PropTypes.bool,\r\n TabIndicatorProps: PropTypes.object,\r\n fullWidth: PropTypes.bool,\r\n separatorPadding: PropTypes.bool,\r\n tabClasses: PropTypes.object,\r\n};\r\n\r\nTabs.defaultProps = {\r\n activeTab: 0,\r\n getActiveTab: () => { },\r\n tabsClasses: {},\r\n separator: false,\r\n TabIndicatorProps: {},\r\n highlightType: HIGHLIGHT_TYPE.DEFAULT,\r\n separatorPadding: false,\r\n};\r\n\r\nexport default React.memo(Tabs);\r\n","import { TRANSITION_VARIANT } from 'Commons/config/constants/Constants';\r\nimport { Slide, Fade, Grow, Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { memo, useRef } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport transitionStyle from '../styles/TransitionStyle';\r\n\r\nconst useStyles = makeStyles(transitionStyle);\r\n\r\nconst transitionComponents = {\r\n [TRANSITION_VARIANT.SLIDE]: Slide,\r\n [TRANSITION_VARIANT.FADE]: Fade,\r\n [TRANSITION_VARIANT.GROW]: Grow,\r\n};\r\n\r\n\r\nconst Transition = ({ variant, needRef, fullHeight, children, ...props }) => {\r\n const { current: Component } = useRef(transitionComponents[variant]);\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {\r\n needRef\r\n ? (\r\n \r\n {children}\r\n \r\n )\r\n : children\r\n }\r\n \r\n );\r\n};\r\n\r\nTransition.propTypes = {\r\n variant: PropTypes.oneOf(Object.values(TRANSITION_VARIANT)),\r\n needRef: PropTypes.bool, /* This prop is used to wrap children to a div, when there is no top level\r\n DOM element present for Transition to get the ref */\r\n children: PropTypes.node,\r\n fullHeight: PropTypes.bool,\r\n};\r\n\r\nTransition.defaultProps = {\r\n variant: TRANSITION_VARIANT.SLIDE,\r\n needRef: false,\r\n fullHeight: false,\r\n};\r\n\r\nexport default memo(Transition);\r\n","import { Grid, ScrollSync } from 'react-virtualized';\r\nimport { EMPTY_FIELD_TEXT, STATUS, TABLE_ROW_HEIGHT_VARIANT, TABLE_STATE } from 'Commons/config/constants/Constants';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { Grid as MuiGrid, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport TableRowCount from 'Generic/tablerowcount/TableRowCount';\r\nimport theme from 'Commons/theme/Theme';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport { isBetween } from 'Commons/helpers/utils/Utils';\r\nimport { ALIGN, ERROR, OVERSCAN_COLUMN_COUNT, OVERSCAN_ROW_COUNT, PERCENTAGE, PIXEL, VALIGN } from './Constants';\r\nimport HeaderOrFooterCell from './HeaderOrFooterCell';\r\nimport { EmptyOrLoadingTable, StatusIndicator, TableLoading, TableNoMoreRows } from './Renderers';\r\nimport { dataConverter, getGridHeightValues, getHeaderVariantMapping } from './Utils';\r\nimport tableStyle from '../styles/TableStyle';\r\n\r\nconst { innerWidth } = window;\r\nclass GenericTable extends React.Component {\r\n constructor(props, context) {\r\n super(props, context);\r\n const { leftAndRightPadding } = props;\r\n this.leftAndRightPadding = 2 * leftAndRightPadding;\r\n this.lastPaginationStart = 0;\r\n const { deviceInfo: { isDesktop, isTablet } } = window;\r\n this.state = {\r\n horizontalScrollSize: 0,\r\n numOfRows: props.data.length,\r\n convertedTableRows: [],\r\n verticalScrollSize: 0,\r\n showLoader: false,\r\n noMoreRows: false,\r\n };\r\n this.headerRef = {};\r\n this.tableContainerRef = React.createRef();\r\n this.bodyRef = React.createRef();\r\n this.fixedGridWidth = this.getFixedGridWidth();\r\n this.headerVariantMapping = getHeaderVariantMapping(!(isDesktop || isTablet));\r\n }\r\n\r\n static getDerivedStateFromProps = (nextProps) => {\r\n const { data, columns, recalculate } = nextProps;\r\n if (recalculate) {\r\n const convertedTableRows = dataConverter(columns, data);\r\n return {\r\n convertedTableRows,\r\n numOfRows: convertedTableRows.length,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n componentDidUpdate = ({ resetScrollPosition: prevResetScrollPositionPropValue = false } = {}) => {\r\n const { noMoreRows } = this.state;\r\n const { resetScrollPosition = false } = this.props;\r\n if (prevResetScrollPositionPropValue !== resetScrollPosition && resetScrollPosition) {\r\n /* To reset the lastScrollPosition to 0. For the cases where pagination has been applied and then,\r\n data gets reset (For Ex:- In SmartList after the pagination, if filter is applied then data is refreshed,\r\n in this case the scrollPosition needs to be reset to 0), otherwise the pagination will not work.\r\n )\r\n */\r\n this.lastPaginationStart = 0;\r\n }\r\n if (noMoreRows) {\r\n if (this.noMoreRowsTimeout) clearTimeout(this.noMoreRowsTimeout);\r\n this.noMoreRowsTimeout = setTimeout(() => this.setState({ noMoreRows: false }), 1000);\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const { getBodyRef } = this.props;\r\n const { current: tableContainerRef } = this.tableContainerRef;\r\n const { offsetWidth, clientWidth, offsetHeight, clientHeight } = tableContainerRef || {};\r\n // Initializing the size for horizontal and vertical scrollbar\r\n this.setState({\r\n verticalScrollSize: offsetWidth - clientWidth,\r\n horizontalScrollSize: offsetHeight - clientHeight,\r\n });\r\n if (getBodyRef) {\r\n getBodyRef(this.bodyRef);\r\n }\r\n }\r\n\r\n getFixedGridWidth = () => {\r\n let width = 0;\r\n const { tableWidth, fixedColumns } = this.props;\r\n for (let i = 0; i < fixedColumns; i += 1) {\r\n width += this.columnWidthFinder(i, tableWidth);\r\n }\r\n return width;\r\n }\r\n\r\n columnWidthFinder = (columnIndex, gridWidth, defaultColumnWidth) => {\r\n const { columns, columnWidthUnit } = this.props;\r\n const { width } = columns[columnIndex];\r\n if (!width) {\r\n if (defaultColumnWidth) {\r\n const { verticalScrollSize } = this.state;\r\n return defaultColumnWidth - (verticalScrollSize / columns.length);\r\n }\r\n return gridWidth / columns.length;\r\n }\r\n if (columnWidthUnit === PERCENTAGE) {\r\n return (width / 100) * gridWidth;\r\n }\r\n return columns[columnIndex].width;\r\n }\r\n\r\n onLoadMoreRows = (_, response) => {\r\n const { data = [] } = response || {};\r\n this.scrollToRow = data.length;\r\n this.setState({ showLoader: false });\r\n }\r\n\r\n loadMoreRows = () => {\r\n const { numOfRows, numOfRows: nextPaginationStart } = this.state;\r\n if (nextPaginationStart <= this.lastPaginationStart) {\r\n return; // debounce calls for same page call\r\n }\r\n this.lastPaginationStart = numOfRows;\r\n const { rowCount, dataGetter } = this.props;\r\n if (!rowCount) { return; }\r\n if (dataGetter) {\r\n if (numOfRows >= rowCount) {\r\n this.setState({ noMoreRows: true });\r\n } else {\r\n this.setState({ showLoader: true });\r\n dataGetter(this.onLoadMoreRows);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @description Called whenever a horizontal or vertical scrollbar is added or removed.\r\n * @param {Boolean} horizontal\r\n * @param {Number} size\r\n * @param {Boolean} vertical\r\n */\r\n scrollbarChanged = ({ horizontal, size, vertical }) => {\r\n const getSize = (prevSize, hasScrollbar) => ((prevSize || hasScrollbar) ? (size || prevSize) : 0);\r\n\r\n this.setState((prevState) => {\r\n const {\r\n horizontalScrollSize: prevHorizontalScrollSize,\r\n verticalScrollSize: prevVerticalScrollSize,\r\n } = prevState;\r\n const horizontalScrollSize = getSize(prevHorizontalScrollSize, horizontal);\r\n const verticalScrollSize = getSize(prevVerticalScrollSize, vertical);\r\n return { horizontalScrollSize, verticalScrollSize };\r\n }, () => {\r\n const { headerRef } = this;\r\n if (headerRef) { headerRef.recomputeGridSize(); }\r\n });\r\n }\r\n\r\n renderRightGridBodyCell = ({ columnIndex, key, rowIndex, style }) => {\r\n const { fixedColumns } = this.props;\r\n if (fixedColumns && columnIndex < fixedColumns) { return null; }\r\n return this.renderBodyCell({ columnIndex, key, rowIndex, style });\r\n }\r\n\r\n renderRightGridHeaderCell = ({ columnIndex, key, rowIndex, style }, isFooter = false) => {\r\n const { fixedColumns } = this.props;\r\n if (fixedColumns && columnIndex < fixedColumns) { return null; }\r\n return this.renderHeaderOrFooterCell({ columnIndex, key, rowIndex, style }, isFooter);\r\n }\r\n\r\n getColumnStyle = (index) => {\r\n const { props: { tableWidth: gridWidth }, leftAndRightPadding } = this;\r\n return {\r\n flex: `1 1 ${this.columnWidthFinder(index,\r\n gridWidth - leftAndRightPadding)}px`,\r\n };\r\n }\r\n\r\n getHeaderHeight = (height) => {\r\n const { headerVariantMapping } = this;\r\n return headerVariantMapping[height] || height;\r\n }\r\n\r\n renderHeaderOrFooterCell = ({ key, rowIndex, style }, isFooter) => {\r\n const { columns, classes, needFirstColumnPadding, showListPageRibbon } = this.props;\r\n return (\r\n \r\n {\r\n columns.map(({\r\n headerClassName, label, footer,\r\n footerClassName, align = ALIGN.LEFT, valign = VALIGN.CENTER,\r\n } = {}, columnIndex) => (\r\n \r\n ))\r\n }\r\n
\r\n );\r\n }\r\n\r\n renderBodyCell = ({ key, rowIndex, style }) => {\r\n const { convertedTableRows = [] } = this.state;\r\n const {\r\n columns, classes, data, showLastColumnOnHover,\r\n formatterProps = {}, rowDivider, needFirstColumnPadding, getRowProps, showListPageRibbon,\r\n } = this.props;\r\n const { className: rowClassName, disabled = false, ...restRowProps } = getRowProps(rowIndex, data) || {};\r\n const currentRow = convertedTableRows[rowIndex] || [];\r\n const { status: responseStatus = '', value: { status: responseValueStatus = '' } = {} } = data[rowIndex] || [];\r\n const status = (responseStatus || responseValueStatus);\r\n let ribbonClassName = '';\r\n switch (status) {\r\n case STATUS.Active.value:\r\n ribbonClassName = classes.activeRibbon;\r\n break;\r\n case STATUS.Inactive.value:\r\n case STATUS.Inactive_For_Future_Use.value:\r\n ribbonClassName = classes.inactiveRibbon;\r\n break;\r\n default:\r\n break;\r\n }\r\n if (convertedTableRows.length > 0) {\r\n return (\r\n \r\n {\r\n currentRow.map((item = EMPTY_FIELD_TEXT, columnIndex) => {\r\n const {\r\n formatter, className, formFieldInfo = {},\r\n align = ALIGN.LEFT, valign = VALIGN.CENTER,\r\n } = columns[columnIndex] || {};\r\n return (\r\n \r\n {\r\n formatter\r\n ? formatter(item, columnIndex, rowIndex, data[rowIndex],\r\n { ...formatterProps, formFieldInfo }, status)\r\n : (\r\n \r\n {typeof item === 'string' ? item.toString() : item}\r\n \r\n )\r\n }\r\n {\r\n disabled && \r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n return EMPTY_FIELD_TEXT;\r\n }\r\n\r\n renderFixedHeaderOrFooter = (isFooter = false) => {\r\n const heightPropInitial = isFooter ? 'footer' : 'header';\r\n const {\r\n props: { classes, [`${heightPropInitial}RowHeight`]: rowHeight, tableWidth, fixedColumns } = {},\r\n fixedGridWidth, getHeaderHeight,\r\n } = this;\r\n const height = getHeaderHeight(rowHeight);\r\n return (\r\n
\r\n this.renderHeaderOrFooterCell(data, isFooter)}\r\n className={classes.headerGrid}\r\n width={fixedGridWidth}\r\n height={height}\r\n rowHeight={height}\r\n columnWidth={({ index }) => this.columnWidthFinder(index, tableWidth)}\r\n rowCount={1}\r\n columnCount={fixedColumns}\r\n />\r\n
\r\n );\r\n }\r\n\r\n renderHeaderOrFooter = (scrollLeft, isFooter = false) => {\r\n const heightPropInitial = isFooter ? 'footer' : 'header';\r\n const { classes, [`${heightPropInitial}RowHeight`]: rowHeight, tableWidth: gridWidth } = this.props;\r\n const { leftAndRightPadding, getHeaderHeight } = this;\r\n const height = getHeaderHeight(rowHeight);\r\n\r\n return (\r\n { this.headerRef = ref; }}\r\n autoContainerWidth\r\n className={classes.marginalsGrid}\r\n columnWidth={gridWidth - leftAndRightPadding}\r\n columnCount={1}\r\n height={height}\r\n overscanColumnCount={OVERSCAN_COLUMN_COUNT}\r\n cellRenderer={data => this.renderRightGridHeaderCell(data, isFooter)}\r\n rowHeight={height}\r\n rowCount={1}\r\n scrollLeft={scrollLeft}\r\n width={gridWidth - leftAndRightPadding}\r\n />\r\n );\r\n }\r\n\r\n calculateRowHeight = ({ index }) => {\r\n const { calculateRowHeight, data } = this.props;\r\n return calculateRowHeight(index, data);\r\n }\r\n\r\n render() {\r\n const {\r\n numOfRows,\r\n verticalScrollSize,\r\n horizontalScrollSize,\r\n showLoader,\r\n noMoreRows,\r\n } = this.state;\r\n const {\r\n state,\r\n rowHeight,\r\n headerRowHeight,\r\n rowCount,\r\n fixedColumns,\r\n emptyOrLoadingBodyRenderer,\r\n classes,\r\n tableHeight,\r\n tableWidth: gridWidth,\r\n hasFooter,\r\n startFromBottom,\r\n data,\r\n showErrorOrLoadingInMiddle,\r\n showTotalCount,\r\n calculateRowHeight,\r\n overscanIndicesGetter,\r\n scrollToRow: scrollToRowProp,\r\n showListPageRibbon,\r\n isConfigurationList,\r\n renderTotalCount,\r\n ribbonProps,\r\n } = this.props;\r\n const { fixedGridWidth, hasDataBeenLoaded, getHeaderHeight, leftAndRightPadding } = this;\r\n const totalRows = rowCount || numOfRows;\r\n const contentBoxWidth = gridWidth ? `${gridWidth}px` : 'auto';\r\n if (!hasDataBeenLoaded) {\r\n this.scrollToRow = numOfRows;\r\n if (data.length > 0) {\r\n this.hasDataBeenLoaded = true;\r\n }\r\n }\r\n const { scrollToRow } = this;\r\n let lastScrollAt = 0;\r\n const headerHeight = getHeaderHeight(headerRowHeight);\r\n const calculatedTableHeight = tableHeight - headerHeight - horizontalScrollSize;\r\n let modifiedTableHeight = calculatedTableHeight;\r\n if (!showListPageRibbon && isConfigurationList) {\r\n modifiedTableHeight = calculatedTableHeight - 24;\r\n } else if (showListPageRibbon && isConfigurationList) {\r\n modifiedTableHeight = calculatedTableHeight - 16;\r\n }\r\n return (\r\n 1024\r\n ? { width: (showListPageRibbon && !isConfigurationList) ? contentBoxWidth - 10 : contentBoxWidth }\r\n : undefined}\r\n >\r\n {\r\n showTotalCount && (renderTotalCount(totalRows, leftAndRightPadding) || (\r\n \r\n ))\r\n }\r\n {\r\n showListPageRibbon && (\r\n \r\n )\r\n }\r\n \r\n {({ onScroll, scrollLeft, scrollTop, clientHeight, scrollHeight }) => {\r\n const gridContainerHeight = getGridHeightValues(\r\n clientHeight,\r\n scrollHeight,\r\n horizontalScrollSize,\r\n );\r\n return (\r\n \r\n {this.renderFixedHeaderOrFooter()}\r\n
\r\n this.columnWidthFinder(index, gridWidth)}\r\n columnCount={fixedColumns}\r\n className={classes.fixedGrid}\r\n height={tableHeight - horizontalScrollSize}\r\n rowHeight={rowHeight}\r\n rowCount={numOfRows}\r\n scrollTop={scrollTop}\r\n width={fixedGridWidth}\r\n style={{\r\n height: gridContainerHeight - horizontalScrollSize,\r\n top: headerHeight,\r\n }}\r\n scrollToRow={scrollToRowProp || (startFromBottom && (scrollToRow || undefined))}\r\n />\r\n
\r\n\r\n {hasFooter && this.renderFixedHeaderOrFooter(hasFooter)}\r\n\r\n
\r\n <>\r\n {this.renderHeaderOrFooter(scrollLeft)}\r\n { // eslint-disable-line no-shadow\r\n const computedScrollHeight = (clientHeight + scrollTop) - horizontalScrollSize;\r\n const isAtEnd = isBetween(scrollHeight, computedScrollHeight - ERROR, computedScrollHeight + ERROR);\r\n if (\r\n (startFromBottom && scrollTop === 0 && hasDataBeenLoaded)\r\n || (isAtEnd && lastScrollAt < scrollTop && !startFromBottom)\r\n ) {\r\n lastScrollAt = scrollTop; // to avoid loadMoreRows being called in horizontal scroll\r\n if (totalRows >= numOfRows) { this.loadMoreRows(); }\r\n }\r\n return onScroll({ clientHeight, clientWidth, scrollHeight, scrollWidth, scrollLeft, scrollTop });\r\n }\r\n }\r\n onScrollbarPresenceChange={this.scrollbarChanged}\r\n overscanColumnCount={OVERSCAN_COLUMN_COUNT}\r\n // Setting overscan as 0 to avoid flickering(since dynamic row height, height change for rows\r\n // on top and bottom edge results in flicker)\r\n overscanRowCount={calculateRowHeight ? 0 : OVERSCAN_ROW_COUNT}\r\n cellRenderer={this.renderRightGridBodyCell}\r\n noContentRenderer={() => EmptyOrLoadingTable(\r\n emptyOrLoadingBodyRenderer,\r\n classes,\r\n showErrorOrLoadingInMiddle ? tableHeight : rowHeight,\r\n state,\r\n )}\r\n rowHeight={calculateRowHeight ? this.calculateRowHeight : rowHeight}\r\n rowCount={numOfRows}\r\n scrollToRow={scrollToRowProp || (startFromBottom && (scrollToRow || undefined))}\r\n width={gridWidth - leftAndRightPadding}\r\n ref={this.bodyRef}\r\n {...overscanIndicesGetter && { overscanIndicesGetter }}\r\n />\r\n {hasFooter && this.renderHeaderOrFooter(scrollLeft, hasFooter)}\r\n\r\n {\r\n showLoader && (\r\n \r\n )\r\n }\r\n\r\n {\r\n noMoreRows && (\r\n \r\n )\r\n }\r\n \r\n
\r\n \r\n );\r\n }}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nGenericTable.propTypes = {\r\n columns: PropTypes.arrayOf(PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n width: PropTypes.number,\r\n label: PropTypes.node,\r\n formatter: PropTypes.func,\r\n headerClassName: PropTypes.string,\r\n footerClassName: PropTypes.string,\r\n align: PropTypes.oneOf(Object.values(ALIGN)),\r\n valign: PropTypes.oneOf(Object.values(VALIGN)),\r\n })).isRequired,\r\n data: PropTypes.arrayOf(PropTypes.shape),\r\n tableHeight: PropTypes.number,\r\n tableWidth: PropTypes.number,\r\n hasFooter: PropTypes.bool,\r\n headerRowHeight: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.oneOf(Object.values(TABLE_ROW_HEIGHT_VARIANT))]),\r\n footerRowHeight: PropTypes.oneOfType([PropTypes.number,\r\n PropTypes.oneOf(Object.values(TABLE_ROW_HEIGHT_VARIANT))]),\r\n rowHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(Object.values(TABLE_ROW_HEIGHT_VARIANT))]),\r\n rowCount: PropTypes.number,\r\n fixedColumns: PropTypes.number,\r\n columnWidthUnit: PropTypes.oneOf([PIXEL, PERCENTAGE]),\r\n dataGetter: PropTypes.func,\r\n emptyOrLoadingBodyRenderer: PropTypes.func,\r\n classes: PropTypes.object.isRequired,\r\n // eslint-disable-next-line react/no-unused-prop-types\r\n recalculate: PropTypes.bool,\r\n showLastColumnOnHover: PropTypes.bool, // We may change this\r\n formatterProps: PropTypes.object,\r\n rowDivider: PropTypes.bool,\r\n startFromBottom: PropTypes.bool,\r\n state: PropTypes.oneOf([TABLE_STATE.LOADING]),\r\n needFirstColumnPadding: PropTypes.bool,\r\n showErrorOrLoadingInMiddle: PropTypes.bool,\r\n getRowProps: PropTypes.func,\r\n showTotalCount: PropTypes.bool,\r\n leftAndRightPadding: PropTypes.number,\r\n calculateRowHeight: PropTypes.func,\r\n getBodyRef: PropTypes.func,\r\n overscanIndicesGetter: PropTypes.func,\r\n scrollToRow: PropTypes.number,\r\n showListPageRibbon: PropTypes.bool,\r\n isConfigurationList: PropTypes.bool,\r\n renderTotalCount: PropTypes.func,\r\n resetScrollPosition: PropTypes.bool,\r\n ribbonProps: PropTypes.object,\r\n};\r\n\r\nGenericTable.defaultProps = {\r\n data: [],\r\n tableWidth: 500,\r\n tableHeight: 500,\r\n rowHeight: TABLE_ROW_HEIGHT_VARIANT.ONE_LINER,\r\n rowCount: 0,\r\n hasFooter: false,\r\n headerRowHeight: TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER,\r\n footerRowHeight: TABLE_ROW_HEIGHT_VARIANT.ONE_LINER,\r\n fixedColumns: 0,\r\n columnWidthUnit: PERCENTAGE,\r\n recalculate: true,\r\n showLastColumnOnHover: false,\r\n formatterProps: {},\r\n rowDivider: true,\r\n needFirstColumnPadding: false,\r\n showErrorOrLoadingInMiddle: false,\r\n getRowProps: () => {},\r\n leftAndRightPadding: innerWidth <= screenMaxWidth.laptop ? 16 : 32,\r\n showListPageRibbon: false,\r\n isConfigurationList: false,\r\n renderTotalCount: () => {},\r\n ribbonProps: {},\r\n};\r\n\r\nexport default withStyles(tableStyle)(GenericTable);\r\n","import Typography from 'Generic/typography/components/Typography';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport InheritedConfigLabelStyle from '../styles/InheritedConfigLabelStyle';\r\n\r\nconst useStyles = makeStyles(InheritedConfigLabelStyle, { name: 'InheritedConfigLabel', index: 1 });\r\n\r\nconst InheritedConfigLabel = ({\r\n readOnly,\r\n label,\r\n variant,\r\n fontFamily,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n};\r\n\r\nInheritedConfigLabel.propTypes = {\r\n readOnly: PropTypes.bool,\r\n label: PropTypes.string,\r\n variant: PropTypes.string,\r\n fontFamily: PropTypes.string,\r\n};\r\n\r\nInheritedConfigLabel.defaultProps = {\r\n variant: 'body2',\r\n fontFamily: 'Open Sans',\r\n};\r\n\r\nexport default React.memo(InheritedConfigLabel);\r\n","const PermissionContext = React.createContext();\r\n\r\nexport default PermissionContext;\r\n","import { Grid, Loader as CircularLoader, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport loaderStyle from '../styles/LoaderStyle';\r\n\r\n\r\nconst useStyles = makeStyles(loaderStyle, { name: 'Loader' });\r\n\r\nconst Loader = ({ loaderClassName }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLoader.propTypes = { loaderClassName: PropTypes.string };\r\n\r\n\r\nexport default Loader;\r\n","/* eslint-disable no-param-reassign */\r\n\r\n/* eslint-disable react/prop-types */\r\nimport {\r\n DASHBOARD_TYPE,\r\n DATE_FORMAT,\r\n DATETIME_FORMAT,\r\n DELINQUENCY_STATUS,\r\n EMPTY_FIELD_TEXT,\r\n EMPTY_STRING,\r\n FEATURE,\r\n FORM_MODE,\r\n FULL_DATE_TIME_FORMAT,\r\n INTERNAL_SOURCE,\r\n RESERVATION_STATUS,\r\n SOURCE,\r\n STATUS,\r\n} from 'Commons/config/constants/Constants';\r\nimport { Checkbox, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Actions from 'Commons/components/business/actions/components/Actions';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Name from 'Commons/components/business/person/name/components/Name';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Link from 'Commons/components/generic/link/components/Link';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport { dateFormatter } from 'Commons/helpers/utils/DateTime';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { RENTAL_STATUS } from 'External/containers/unit/list/config/Constants';\r\nimport { NIL_BALANCE } from 'External/containers/tenant/list/config/Constants';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Theme from 'Commons/theme/Theme';\r\nimport {\r\n MODIFIER_TYPE,\r\n PAYMENT_METHOD_TYPE,\r\n} from 'External/containers/financialConfiguration/config/FinancialFormConfigs';\r\nimport { useMemo, useState } from 'react';\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { MAINTENANCE_EVENT_STATUS } from 'External/containers/operations/components/maintenanceEvents/config/Constants';\r\nimport { CONFIG_LEVEL_TYPE } from 'External/containers/configuration/config/Constants';\r\nimport { getValue, pascalCaseWithUnderscore } from 'Commons/helpers/utils/DataHelpers';\r\nimport { LEAD_STATUS } from 'External/containers/lead/config/Constants';\r\nimport { ESTIMATE_STATUS } from 'External/containers/lead/form/components/estimatesSection/listView/config/Constants';\r\nimport {\r\n LEASE_STATUS,\r\n OVERLOCK_STATUS,\r\n RATE_HISTORY_STATUS,\r\n VACANT_AVAILABILITY_STATUS,\r\n} from 'External/containers/unit/form/config/Constants';\r\nimport getFormattedAmount from 'Commons/helpers/utils/AmountHelper';\r\nimport { phoneFormatter } from 'Commons/helpers/utils/Phone';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { ROUTE } from 'External/redux/config/RouteNames';\r\nimport { getPlainPhoneNumber } from 'External/containers/tenant/form/utils/Utils';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { RENT_ADJUSTMENT_STATUS_LIST } from 'External/containers/operations/components/rentAdjustment/config/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport Chip from '../../../generic/chip/components/Chip';\r\nimport { MAX_VISIBLE_CONTENT } from '../config/Constants';\r\nimport { belongsToAnyOfGivenSources, getTruncatedTitle } from '../utils/Helper';\r\nimport { WAITING_STATUS } from '../../filtersAndSorts/components/waitingListFilter/config/Constants';\r\n\r\nconst isUnit = source => [SOURCE.unit.value, SOURCE.rateHistory.value].includes(source);\r\n\r\nconst isLead = source => source === SOURCE.lead.value;\r\n\r\nconst isTenant = source => source === SOURCE.tenant.value;\r\n\r\nconst isDashboard = source => source === SOURCE.dashboard.value;\r\n\r\nconst isDelinquency = source => source === SOURCE.delinquency.value;\r\n\r\nconst isUser = source => source === SOURCE.user.value;\r\n\r\nconst isVendor = source => source === SOURCE.vendor.value;\r\n\r\nconst isInventory = source => source === SOURCE.inventoryList.value;\r\n\r\nconst isManualLateEvent = source => source === SOURCE.manualLateEvent.value;\r\n\r\nconst isPromoPlanTemplate = source => source === SOURCE.promoPlanTemplate.value;\r\n\r\nconst isRetailSaleReturns = source => source === SOURCE.retailSaleReturns.value;\r\n\r\nconst LabelFormatter = (props) => {\r\n const {\r\n enablePointerEventsWithoutOnClick = false, isEditDisabled,\r\n argument: [label, , , data = {}], subtext = '',\r\n classes, match: { params: { fid, accountId } = {}, path = '' } = {}, source, to: configPath,\r\n } = props;\r\n const { name, id, hasTwoFactor } = data;\r\n const { firstName, lastName, businessName, suffix, salutation, preferredName } = name || {};\r\n let to = path.includes(ROUTE.SETTINGS_MAIN) || path.includes(ROUTE.SETTINGS_LIVE)\r\n ? buildUrl('settings', { source, id }, DASHBOARD_TYPE.SETTINGS, accountId)\r\n : buildUrl('mainEdit', { source, fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n if (isUser(source)) {\r\n to = `${to}/edit`;\r\n } else if (isUnit(source)) {\r\n to = { pathname: to, state: { unitDetail: data } };\r\n } else if (isTenant(source) || isDelinquency(source)) {\r\n to = buildUrl('tenantView', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n if (isDelinquency(source)) {\r\n to = { pathname: to, state: { source } };\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {\r\n isEditDisabled\r\n ? label\r\n : (\r\n \r\n \r\n {isTenant(source) || isLead(source) || isManualLateEvent(source) || isDelinquency(source) || isDashboard(source)\r\n ? (\r\n \r\n )\r\n : label}\r\n \r\n \r\n )\r\n }\r\n {!!subtext\r\n && (\r\n \r\n \r\n {subtext}\r\n \r\n \r\n )\r\n }\r\n \r\n\r\n {isUser(source) && hasTwoFactor && }\r\n \r\n );\r\n};\r\n\r\nconst LinkListWithShowMore = (props) => {\r\n const {\r\n argument: [list, , , detail = {}, { selectedLevel, selectedConfigType, fid: selectedFacilityId, accountId: selectedAccountId }, status],\r\n classes, match: { params: { fid: facilityId, accountId: paramsAccountId } = {} } = {}, GridProps,\r\n component, staticContext, justify, column, to, source, maxVisibleContent = MAX_VISIBLE_CONTENT,\r\n fullHeight = true, containerGridProps, requireTooltip = true, inline = false, showStatusIcon = false,\r\n onClickMoreItems, onClickMoreItemsParams = {}, shouldTruncateTitle = false, truncateTitleLength, isLabelClickable = false,\r\n ...componentProps\r\n } = props;\r\n const fid = facilityId || selectedFacilityId;\r\n const accountId = paramsAccountId || selectedAccountId;\r\n let valueList = (Array.isArray(list) ? list : [detail.unit]);\r\n const { id: tenantId = '', status: tenantStatus } = detail || {};\r\n if (selectedConfigType === CONFIG_LEVEL_TYPE.NORMAL_CONFIG) {\r\n const { childConfiguration = [] } = detail;\r\n const selectedConfig = childConfiguration\r\n .find(({ entityType: childEntityType }) => childEntityType === pascalCaseWithUnderscore(selectedLevel));\r\n if (selectedConfig) {\r\n const { value: { taxes = [] } = {} } = selectedConfig;\r\n valueList = taxes;\r\n }\r\n }\r\n if (valueList === EMPTY_FIELD_TEXT) {\r\n return (\r\n \r\n {EMPTY_FIELD_TEXT}\r\n \r\n );\r\n }\r\n\r\n let typographyClassName = '';\r\n\r\n if (isLead(source) && tenantStatus === LEAD_STATUS.INACTIVE) {\r\n typographyClassName = classes.disabledText;\r\n }\r\n\r\n const contentList = [...valueList];\r\n const initialListContentsToDisplay = contentList.splice(0, maxVisibleContent);\r\n\r\n const getListContents = listContentsToDisplay => (\r\n \r\n {\r\n listContentsToDisplay.map((content, index) => {\r\n const { id, label, value: { description = '' } = {}, status: contentStatus } = content || {};\r\n const Container = component || Link;\r\n const title = typeof content === 'string' ? content : (label || description);\r\n let containerProps = {};\r\n let link;\r\n if (!component) {\r\n switch (column) {\r\n case SOURCE.unit.value:\r\n link = buildUrl('unitEdit', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n break;\r\n case SOURCE.ledger.value:\r\n link = buildUrl('ledgerReview', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n break;\r\n default:\r\n link = buildUrl('tenantEdit', { fid, id: tenantId }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n }\r\n if (to) {\r\n link = `${to}/${id}`;\r\n }\r\n containerProps = {\r\n to: link,\r\n classes: { link: classes.maxWidth },\r\n LabelWithIconProps: { classes: { label: classes.maxWidth } },\r\n };\r\n }\r\n\r\n const getLabel = isTooltip => (\r\n \r\n {showStatusIcon && }\r\n {shouldTruncateTitle ? getTruncatedTitle(title, shouldTruncateTitle, truncateTitleLength) : title}\r\n \r\n );\r\n const getLabelWithTooltip = isTooltip => (\r\n onClickMoreItems(e, onClickMoreItemsParams) })}\r\n >\r\n {getLabel(isTooltip)}\r\n \r\n );\r\n return requireTooltip\r\n ? (\r\n \r\n \r\n {isLabelClickable ? getLabelWithTooltip(true) : getLabel(true)}\r\n \r\n \r\n )\r\n : (\r\n \r\n {getLabel()}\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n\r\n return (\r\n \r\n {\r\n initialListContentsToDisplay && initialListContentsToDisplay.length > 0\r\n && getListContents(initialListContentsToDisplay)\r\n }\r\n {\r\n contentList.length > 0\r\n && (\r\n onClickMoreItems(e, onClickMoreItemsParams) })}\r\n >\r\n \r\n {`+${contentList.length} more`}\r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nconst Balance = (props) => {\r\n const { argument: [totalBalance, , , { isDelinquent = false } = {}, , status], classes, source } = props;\r\n let balance = parseFloat(totalBalance);\r\n balance = Number.isNaN(balance) ? NIL_BALANCE : `$${getFormattedAmount(balance)}`;\r\n if (source === SOURCE.tenant.value && isDelinquent) {\r\n const chipData = {\r\n color: 'error',\r\n size: 'small',\r\n label: balance,\r\n value: balance,\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {balance}\r\n \r\n );\r\n};\r\n\r\nconst Ledger = props => ;\r\nconst LedgerGrid = props => ;\r\nconst Unit = props => ;\r\nconst Tenant = props => ;\r\nconst GridListWithShowMore = props => ;\r\nconst UnitGrid = props => ;\r\n\r\n\r\nconst DelinquencyInlineRows = ({\r\n argument, field, component: Component,\r\n getComponentProps, ...props\r\n}) => {\r\n const { ledger = [] } = argument[3];\r\n\r\n if (ledger && ledger.length) {\r\n const list = ledger.map((eachLedger = {}) => {\r\n const { id } = eachLedger;\r\n const updatedArgument = [...argument];\r\n let value;\r\n\r\n if (field) {\r\n value = eachLedger[field];\r\n updatedArgument[0] = value;\r\n }\r\n const componentProps = getComponentProps ? getComponentProps(value) : {};\r\n\r\n return ({\r\n id,\r\n label: (\r\n \r\n \r\n \r\n ),\r\n });\r\n });\r\n\r\n const updatedArgument = [...argument];\r\n updatedArgument[0] = list;\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return EMPTY_FIELD_TEXT;\r\n};\r\n\r\nconst DelinquencyLedgerBalanceFormatter = props => (\r\n \r\n);\r\n\r\nconst DelinquencyTrackingLedgerBalanceFormatter = props => (\r\n \r\n);\r\n\r\n\r\nconst DelinquencyUnitListFormatter = (props) => {\r\n const getComponentProps = () => ({\r\n maxVisibleContent: 1,\r\n requireTooltip: false,\r\n fullHeight: false,\r\n });\r\n const componentGridProps = useConstructor(() => ({\r\n direction: 'column',\r\n alignItems: 'flex-start',\r\n }));\r\n\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DelinquencyLedgerFormatter = props => (\r\n \r\n);\r\n\r\nconst DelinquencyTenantNameFormatter = props => (\r\n \r\n);\r\n\r\nconst NameFormatter = (props) => {\r\n const {\r\n argument: [name, , , , , status], source, match: { params: { fid, accountId } },\r\n component, additionalComponentProps = {}, classes = {},\r\n } = props;\r\n const id = name.id || '';\r\n const { firstName, lastName, businessName, suffix, salutation, preferredName } = name.name || name || {};\r\n const to = isUnit(source) ? buildUrl('tenantView', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId) : '';\r\n const Component = component || Link;\r\n let componentProps = component ? {} : { to };\r\n componentProps = {\r\n ...componentProps,\r\n ...additionalComponentProps,\r\n };\r\n return (\r\n name === EMPTY_FIELD_TEXT\r\n ? ({name})\r\n : (\r\n \r\n \r\n \r\n \r\n
\r\n )\r\n );\r\n};\r\n\r\nconst NameFormatterGrid = (props = {}) => {\r\n const { classes } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst Address = (props) => {\r\n const { argument: [address, , , rowData, , status], classes } = props;\r\n const {\r\n line1: addressline1 = '', line2: addressline2 = '',\r\n city: city = '', state: state = '', country: country = '',\r\n } = rowData.address || address || {};\r\n const customAddress = `${addressline1} ${addressline2} ${city} ${state} ${country}`;\r\n return (\r\n address === EMPTY_FIELD_TEXT\r\n ? ({address})\r\n : (\r\n \r\n \r\n {customAddress}\r\n \r\n \r\n ));\r\n};\r\n\r\nconst ContactDetails = (props) => {\r\n const {\r\n argument: [, , , {\r\n phone: { primaryNumber: phone = '' } = {},\r\n email: { emailAddress: email = '' } = {},\r\n } = {}, , status],\r\n } = props;\r\n return (\r\n phone || email\r\n ? (\r\n \r\n \r\n {phone}\r\n {phone && email && localisable.separator}\r\n {email && email}\r\n \r\n \r\n )\r\n : null\r\n );\r\n};\r\n\r\n\r\nconst DateFormatter = (props) => {\r\n const { argument: [date, column, , { status } = {}], format = DATE_FORMAT, source, classes } = props;\r\n let typographyClassName = '';\r\n let typographyProps = {\r\n variant: 'body2',\r\n fontFamily: 'Open Sans',\r\n };\r\n let removeTimeZoneAwareness = false;\r\n if (isLead(source) && status === LEAD_STATUS.INACTIVE) typographyClassName = classes.disabledText;\r\n if (isLead(source) && status === LEAD_STATUS.CONVERTED && column === 5) return (<>);\r\n if (isRetailSaleReturns(source)) {\r\n typographyProps = {};\r\n removeTimeZoneAwareness = true;\r\n }\r\n if (isManualLateEvent(source)) removeTimeZoneAwareness = true;\r\n return (\r\n \r\n {date === EMPTY_FIELD_TEXT ? date : dateFormatter(date, format, removeTimeZoneAwareness)}\r\n \r\n );\r\n};\r\n\r\nconst DatetimeFormatter = props => ;\r\nconst FullDatetimeFormatter = props => ;\r\n\r\nconst Ellipsis = (props) => {\r\n const { argument: [comment, , , , , status], classes } = props;\r\n return (\r\n comment === EMPTY_FIELD_TEXT || comment === ''\r\n ? (\r\n \r\n {EMPTY_FIELD_TEXT}\r\n \r\n )\r\n : (\r\n \r\n \r\n {comment}\r\n \r\n \r\n )\r\n );\r\n};\r\n\r\nconst isFeatureDisabled = (source, feature, detail) => {\r\n const { unitList, rentalStatus, availabilityStatus, status } = detail;\r\n if (source === SOURCE.tenant.value && feature === FEATURE.moveout.value && unitList && unitList.length) {\r\n return false;\r\n }\r\n if (source === SOURCE.tenant.value && feature === FEATURE.movein.value\r\n && status === STATUS.Active.value) {\r\n return false;\r\n }\r\n if (source === SOURCE.unit.value && feature === FEATURE.movein.value\r\n && rentalStatus === RENTAL_STATUS.Vacant.value\r\n && availabilityStatus !== VACANT_AVAILABILITY_STATUS.Unavailable.value\r\n && status === STATUS.Active.value) {\r\n return false;\r\n }\r\n if (source === SOURCE.unit.value && (feature === FEATURE.moveout.value || feature === FEATURE.transfer.value)\r\n && rentalStatus === RENTAL_STATUS.Rented.value) {\r\n return false;\r\n }\r\n if (source === SOURCE.unit.value && feature === FEATURE.payment.value\r\n && rentalStatus === RENTAL_STATUS.Rented.value) {\r\n return false;\r\n }\r\n if (source === SOURCE.tenant.value && feature === FEATURE.payment.value && status === STATUS.Active.value) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nconst getActionConfig = ({\r\n argument: [, , , detail = {}, { openForm, selectedEntity, selectedLevel, formName, selectedConfigType, isEditDisabled } = {}],\r\n source, isMoveInVisible, isMoveOutVisible, isPaymentVisible, isPromoPlanVisible,\r\n history, match: { params: { fid, accountId }, path = '' },\r\n}, paymentToggler) => {\r\n const isMoveInDisabled = isFeatureDisabled(source, FEATURE.movein.value, detail);\r\n const isMoveOutDisabled = isFeatureDisabled(source, FEATURE.moveout.value, detail);\r\n const isPaymentDisabled = isFeatureDisabled(source, FEATURE.payment.value, detail);\r\n const isTransferDisabled = isFeatureDisabled(source, FEATURE.transfer.value, detail);\r\n const { deviceInfo: { isDesktop } } = window;\r\n\r\n const onClick = feature => () => {\r\n let targetId;\r\n const { id } = detail;\r\n targetId = id;\r\n if (selectedConfigType === CONFIG_LEVEL_TYPE.NORMAL_CONFIG) {\r\n const { childConfiguration = [] } = detail;\r\n const selectedConfig = childConfiguration\r\n .find(({ entityType: childEntityType }) => childEntityType === pascalCaseWithUnderscore(selectedLevel));\r\n if (selectedConfig) {\r\n const { id: childId } = selectedConfig;\r\n targetId = childId;\r\n }\r\n }\r\n let url;\r\n let state;\r\n if (typeof feature === 'function') {\r\n feature('edit', id);\r\n } else {\r\n if (path.includes(ROUTE.SETTINGS_MAIN) || path.includes(ROUTE.SETTINGS_LIVE) || path.includes(ROUTE.SETTINGS_PULLED)) {\r\n if (belongsToAnyOfGivenSources(source, [SOURCE.configuration.value, SOURCE.promoPlan.value])) {\r\n if (feature === FORM_MODE.COPY) {\r\n url = buildUrl('createNormalConfigForm', { selectedLevel, selectedEntity, formName }, DASHBOARD_TYPE.SETTINGS, accountId);\r\n state = {\r\n detail,\r\n source,\r\n };\r\n } else {\r\n url = selectedConfigType === CONFIG_LEVEL_TYPE.NORMAL_CONFIG\r\n ? buildUrl('editNormalConfigForm', { selectedLevel, selectedEntity, formName, targetId }, DASHBOARD_TYPE.SETTINGS, accountId)\r\n : buildUrl('editSystemConfigForm', { selectedLevel, formName, targetId }, DASHBOARD_TYPE.SETTINGS, accountId);\r\n }\r\n } else {\r\n url = buildUrl('settingsEdit', { source, id }, DASHBOARD_TYPE.SETTINGS, accountId);\r\n }\r\n } else if (fid) {\r\n if (feature) {\r\n url = buildUrl('facilityFeatures', { fid, feature }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n state = {\r\n activeStep: 0,\r\n detail,\r\n source,\r\n }; // TODO: Remove after Move Out Refactor is done\r\n } else {\r\n url = buildUrl(`${source}Edit`, { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n }\r\n }\r\n history.push(url, state);\r\n }\r\n };\r\n\r\n return [\r\n {\r\n disabled: isMoveInDisabled,\r\n isVisible: isMoveInVisible && !isVendor(source) && !isInventory(source),\r\n title: localisable.moveIn,\r\n icon: 'cp-move-in',\r\n action: { onClick: onClick(FEATURE.movein.value) },\r\n },\r\n {\r\n disabled: isMoveOutDisabled,\r\n isVisible: isMoveOutVisible && !isVendor(source) && !isInventory(source),\r\n title: localisable.moveOut,\r\n icon: 'cp-move-out',\r\n action: { onClick: onClick(FEATURE.moveout.value) },\r\n },\r\n {\r\n disabled: isPaymentDisabled,\r\n isVisible: isPaymentVisible && !isVendor(source) && !isInventory(source),\r\n title: localisable.makePayment,\r\n icon: 'cp-payment',\r\n action: { onClick: onClick(isDesktop ? paymentToggler : FEATURE.payment.value) },\r\n },\r\n {\r\n disabled: isEditDisabled,\r\n title: `${localisable.edit} ${source}`,\r\n icon: 'cp-edit',\r\n action: { onClick: onClick(openForm) },\r\n },\r\n {\r\n title: `${localisable.clone} ${source}`,\r\n isVisible: isPromoPlanVisible,\r\n icon: 'cp-copy',\r\n action: { onClick: onClick(FORM_MODE.COPY) },\r\n },\r\n {\r\n disabled: isTransferDisabled,\r\n isVisible: isMoveInVisible && isUnit(source),\r\n title: localisable.transfer,\r\n icon: 'cp-transfer',\r\n action: { onClick: onClick(FEATURE.transfer.value) },\r\n },\r\n ];\r\n};\r\n\r\nconst Action = (props) => {\r\n const { source, argument: [, , , tenantDetails] } = props;\r\n const [showPayment, setShowPayment] = useState(false);\r\n const paymentToggler = () => setShowPayment(prevState => !prevState);\r\n const { deviceInfo: { isDesktop } } = window;\r\n let PaymentComponent = null;\r\n // TODO: find a better way to handle this using normal import\r\n if (!belongsToAnyOfGivenSources(source, [INTERNAL_SOURCE.accountInt.value,\r\n INTERNAL_SOURCE.facilityInt.value, INTERNAL_SOURCE.userInt.value])) {\r\n // eslint-disable-next-line global-require\r\n PaymentComponent = require('Commons/components/business/payment/Payment').Payment;\r\n }\r\n const actions = getActionConfig(props, paymentToggler)\r\n .map(({ isVisible = true, icon, disabled, title, action }) => (isVisible ? ({\r\n component: (\r\n \r\n \r\n \r\n {(localisable.save).toUpperCase()}\r\n \r\n \r\n );\r\n\r\n const renderComponent = () => {\r\n const { match: { path = '' } = {}, currentFacility: { data: { id: currentFacilityId } = {} } = {} } = props;\r\n const extraContainerProps = inlinePrintComponents\r\n ? {\r\n container: true,\r\n alignItems: 'flex-end',\r\n item: true,\r\n xs: 12,\r\n className: classes.container,\r\n ...containerProps,\r\n }\r\n : {\r\n flexDirection: 'column',\r\n alignItems: 'flexStart',\r\n xs: 12,\r\n };\r\n const showPrinterSection = () => {\r\n const printDeliveryMethods = [DELIVERY_METHOD.Print.value, DELIVERY_METHOD.Print_And_Email.value];\r\n const showPrinter = printDeliveryMethods.includes(deliveryMethod) && show;\r\n if (showPrinter) {\r\n if (type !== DROPDOWN_PRINTER_SELECTION_TYPES.Popover.value) {\r\n return (\r\n \r\n \r\n \r\n\r\n );\r\n }\r\n return (\r\n \r\n \r\n {localisable.changePrinter}\r\n \r\n \r\n\r\n );\r\n }\r\n return <>;\r\n };\r\n return shouldShowDropdown && deliveryMethodList.length ? (\r\n \r\n \r\n \r\n \r\n \r\n {showPrinterSection()}\r\n {showPrintCopies\r\n && (deliveryMethod && deliveryMethod.includes('Print'))\r\n && deliveryMethodListContainsPrint() && (\r\n \r\n {\r\n setNoOfCopies(value);\r\n onChangePrintCopies(value);\r\n },\r\n })}\r\n isFormActive={isFormActive}\r\n />\r\n \r\n )}\r\n \r\n\r\n <>\r\n {documentType === MOVE_IN_DOCUMENTS.Lease_Agreement.value && showPreview\r\n && (!isPreviewLoading ? (\r\n \r\n {localisable.preview}\r\n \r\n ) : (\r\n \r\n ))}\r\n \r\n {isModalOpen && (\r\n \r\n \r\n {localisable.agreement}\r\n \r\n \r\n )}\r\n {\r\n showPrinterSelectionDialog && (\r\n \r\n \r\n \r\n \r\n {localisable.printerLabel}\r\n \r\n \r\n \r\n {getPrinterMessage()}\r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {error && }\r\n \r\n ) : null;\r\n };\r\n return isLetterFetched.current ? renderComponent() : ;\r\n};\r\n\r\nDeliveryMethodDropdown.propTypes = {\r\n name: PropTypes.string,\r\n letterId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n useForm: PropTypes.bool,\r\n dropdownProps: PropTypes.any,\r\n onAction: PropTypes.func,\r\n currentFacility: PropTypes.object,\r\n fid: PropTypes.string,\r\n recipientEmailEnabled: PropTypes.bool,\r\n recipientTextEnabled: PropTypes.bool,\r\n allowEsign: PropTypes.bool,\r\n shouldShowDropdown: PropTypes.bool,\r\n printOrPreviewProps: PropTypes.object,\r\n showPrintCopies: PropTypes.bool,\r\n inlinePrintComponents: PropTypes.bool,\r\n containerProps: PropTypes.object,\r\n onChange: PropTypes.func,\r\n isWebsiteAccess: PropTypes.bool,\r\n documentType: PropTypes.string,\r\n showPreview: PropTypes.bool,\r\n previewProps: PropTypes.object,\r\n standaloneApps: PropTypes.object,\r\n leaseStyleConfigs: PropTypes.array,\r\n letterConfigs: PropTypes.array,\r\n facilityGeneralConfig: PropTypes.object,\r\n isFormActive: PropTypes.object,\r\n printer: PropTypes.object,\r\n currentFacilityId: PropTypes.object,\r\n currentPrinter: PropTypes.object,\r\n printerSelectionProps: PropTypes.object,\r\n match: PropTypes.object,\r\n exclude: PropTypes.array,\r\n onChangePrintCopies: PropTypes.func,\r\n};\r\n\r\nDeliveryMethodDropdown.defaultProps = {\r\n recipientEmailEnabled: true,\r\n recipientTextEnabled: true,\r\n allowEsign: false,\r\n shouldShowDropdown: true,\r\n printOrPreviewProps: {},\r\n showPrintCopies: true,\r\n inlinePrintComponents: false,\r\n containerProps: {},\r\n onChange: EMPTY_FUNC,\r\n showPreview: false,\r\n previewProps: {},\r\n standaloneApps: [],\r\n leaseStyleConfigs: [],\r\n letterConfigs: [],\r\n facilityGeneralConfig: {},\r\n isFormActive: true,\r\n currentPrinter: null,\r\n printerSelectionProps: {\r\n show: false,\r\n type: DROPDOWN_PRINTER_SELECTION_TYPES.Inline.value,\r\n containerProps: {},\r\n gridProps: {},\r\n },\r\n onChangePrintCopies: EMPTY_FUNC,\r\n};\r\nexport default DeliveryMethodDropdown;\r\n\r\nconst SmartDeliveryMethodDropdown = window.withProvider('DeliveryMethodDropdown');\r\n\r\nexport { SmartDeliveryMethodDropdown as DeliveryMethodDropdown };\r\n","\r\nexport { AutoSizer } from 'react-virtualized';\r\nexport { default } from './components/Table';\r\n","import { useState } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { Radio as MaterialUiRadio, FormControlLabel, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { processValue } from 'Commons/helpers/api/Formatter';\r\nimport Form from 'Generic/form/components/Form';\r\nimport { FORM_COMPONENTS } from 'Generic/form/config/FormComponentsConfig';\r\nimport radioStyle from '../styles/RadioStyle';\r\n\r\nconst useStyles = makeStyles(radioStyle, { name: 'Radio' });\r\n\r\nconst Radio = (props) => {\r\n const {\r\n trackValue, value, label, form, classes: overriddenClasses, formLabelClassName, size,\r\n FormControlLabelProps: { className: formLabelClass, ...otherLabelProps } = {},\r\n radioClasses, onChange: propOnChange, className, dataType, readOnly, ...others\r\n } = props;\r\n const [stateValue, setStateValue] = useState(() => (trackValue ? value : null));\r\n const classes = useStyles(props);\r\n\r\n const onChange = (event, currentValue) => {\r\n if (trackValue) {\r\n setStateValue(currentValue);\r\n }\r\n const processedValue = processValue(dataType === 'boolean' ? currentValue : event.target.value, dataType);\r\n propOnChange(event, processedValue);\r\n };\r\n\r\n const renderRadio = () => (\r\n }\r\n icon={}\r\n value={value}\r\n {...others}\r\n />\r\n );\r\n\r\n\r\n return (\r\n label\r\n ? (\r\n \r\n )\r\n : renderRadio()\r\n );\r\n};\r\n\r\nRadio.propTypes = {\r\n onChange: PropTypes.func,\r\n label: PropTypes.node,\r\n trackValue: PropTypes.bool,\r\n readOnly: PropTypes.bool,\r\n form: PropTypes.object,\r\n classes: PropTypes.object,\r\n name: PropTypes.string,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number]),\r\n FormControlLabelProps: PropTypes.object,\r\n radioClasses: PropTypes.object,\r\n formLabelClassName: PropTypes.string,\r\n className: PropTypes.string,\r\n dataType: PropTypes.oneOf(['string', 'number', 'boolean']),\r\n size: PropTypes.string,\r\n};\r\n\r\nRadio.defaultProps = {\r\n form: { setFieldValue: () => { } },\r\n onChange: () => { },\r\n label: '',\r\n value: false,\r\n trackValue: true,\r\n dataType: 'boolean',\r\n readOnly: false,\r\n};\r\n\r\nRadio.displayName = FORM_COMPONENTS.RADIO;\r\nconst FormRadio = Form(Radio);\r\n\r\nexport {\r\n Radio,\r\n FormRadio,\r\n};\r\n","import { matchPath } from 'Commons/helpers/utils/RouteHelpers';\r\n\r\nconst doesUrlBelongsToAnyGivenPath = (url = '', paths = [], prefix = '') => paths.some(\r\n path => matchPath(url, { path: `${prefix}/${path}` }),\r\n);\r\n\r\nexport default doesUrlBelongsToAnyGivenPath;\r\n","import PropTypes from 'prop-types';\r\nimport { SyrasoftConnectMini, SyrasoftConnectTaglineWhite, SyrasoftConnectTaglineBlack } from './ImageList';\r\n\r\nconst CompanyLogo = ({ mini, height, width, white, ...props }) => {\r\n const syrasoftConnectFull = white ? SyrasoftConnectTaglineWhite : SyrasoftConnectTaglineBlack;\r\n const src = mini ? SyrasoftConnectMini : syrasoftConnectFull;\r\n return (\r\n
\r\n \"logo\"\r\n
\r\n );\r\n};\r\n\r\nCompanyLogo.propTypes = {\r\n mini: PropTypes.bool,\r\n white: PropTypes.bool,\r\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n className: PropTypes.string,\r\n};\r\n\r\nCompanyLogo.defaultProps = {\r\n mini: false,\r\n height: 50,\r\n width: 200,\r\n white: false,\r\n};\r\n\r\nexport default React.memo(CompanyLogo);\r\n","const USER_DEFAULT_SORT = {\r\n label: 'Name',\r\n value: 'Name',\r\n sort: [{ firstName: { order: 'asc' } }],\r\n};\r\n\r\nconst USER_DEFAULT_FILTER = { terms: { status: ['Active', 'Created'] } };\r\n\r\nexport { USER_DEFAULT_SORT, USER_DEFAULT_FILTER };\r\n","import { Grid, withStyles, RootRef }\r\nfrom 'Commons/components/generic/componentlibrary/components/Components';\r\nimport Link from 'Generic/link/components/Link';\r\nimport calculateTextWidth from 'Commons/helpers/utils/TextWidthCalculator';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport CARD_TYPE from 'Commons/components/business/autosuggest/config/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport HighlightAutoSuggestText from 'Commons/components/business/autosuggest/components/HighlightSelectedText';\r\nimport Card from '../../../../generic/card/components/Card';\r\nimport Name from '../../../person/name/components/Name';\r\nimport tenantLeadCardStyle from '../styles/TenantLeadCardStyle';\r\nimport localisable from '../../../../../config/strings/localisable';\r\nimport { AUTO_SUGGEST_RESOURCE, CURRENCY_MAP, DASHBOARD_TYPE, SOURCE } from '../../../../../config/constants/Constants';\r\nimport {\r\n LIST_ITEMS_FONT_SIZE,\r\n LIST_ITEMS_FONT_WEIGHT,\r\n} from '../config/Constants';\r\nimport CardChip from '../../../chips/component/CardChip';\r\n\r\nclass TenantLeadCard extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.itemsContainerRef = React.createRef();\r\n this.state = { itemsContainerWidth: 0 };\r\n }\r\n\r\n componentDidMount = () => {\r\n const { itemsContainerRef: { current: itemsContainerRef } = {} } = this;\r\n if (itemsContainerRef) {\r\n this.setState({ itemsContainerWidth: itemsContainerRef.clientWidth });\r\n }\r\n };\r\n\r\n isResourceTenantLead = resource => resource === AUTO_SUGGEST_RESOURCE.TENANT_LEAD;\r\n\r\n renderItems = (items, source) => {\r\n const {\r\n classes, id: tenantOrLeadId,\r\n allowNavigation, currentFacility: { data: { id: fid } = {} },\r\n currentAccountId: { data: { id: accountId } = {} } = {}, autoSuggestText,\r\n } = this.props;\r\n const Container = allowNavigation ? Link : Grid;\r\n let { itemsContainerWidth } = this.state;\r\n return items.map(({ label, id }, index) => {\r\n const textWidth = calculateTextWidth(`${label}, `, `${LIST_ITEMS_FONT_SIZE}`, `${LIST_ITEMS_FONT_WEIGHT}`);\r\n\r\n if (itemsContainerWidth > 0) {\r\n itemsContainerWidth -= textWidth;\r\n const containerProps = allowNavigation ? { LabelWithIconProps: { classes: { label: `${classes.fullWidthMax} ${classes.ellipsis}` } } } : {};\r\n const currentId = source === SOURCE.tenant.value ? tenantOrLeadId : id;\r\n return (\r\n 0 ? textWidth : itemsContainerWidth + textWidth }}\r\n >\r\n \r\n \r\n {label}\r\n \r\n {(index !== (items.length - 1)) && ', '}\r\n \r\n \r\n );\r\n }\r\n return null;\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n showChip,\r\n id,\r\n allowNavigation,\r\n alternateContact: {\r\n name: {\r\n firstName: alternateContactFirstName,\r\n lastName: alternateContactLastName,\r\n } = {},\r\n },\r\n name: { firstName, lastName, businessName, salutation, suffix },\r\n units, balance, showBalanceWithZero, ledger, ledgers, photo, cardType, alternateContact,\r\n address: { line1, line2 }, phone, email: { emailAddress: email } = {}, comments,\r\n primaryContact: { firstName: primaryContactFirstName, lastName: primaryContactLastName },\r\n classes, addon, disabled, currentFacility: { data: { currency, id: fid } = {} } = {}, currentAccountId: { data: { id: accountId } = {} } = {}, resource, label,\r\n CardProps, CardChipProps, NameContainerProps: { classes: nameContainerClasses, ...nameContainerProps } = {},\r\n onSelectCard, onClickAway, autoSuggestText, ...props\r\n } = this.props;\r\n\r\n const { itemsContainerWidth } = this.state;\r\n const disabledClassName = disabled ? classes.disabled : '';\r\n const topMarginClassName = this.isResourceTenantLead(resource) ? classes.topMargin : '';\r\n const topMarginClassNameForAddress = this.isResourceTenantLead(resource) ? classes.topMarginForAddress : '';\r\n const name = firstName || lastName || businessName || salutation || suffix;\r\n const Container = (allowNavigation && id) ? Link : Grid;\r\n const containerProps = allowNavigation\r\n ? {\r\n LabelWithIconProps: {\r\n classes: {\r\n labelWithIcon: classes.fullWidthMax,\r\n label: classes.fullWidthMax,\r\n },\r\n },\r\n } : { item: true };\r\n const mode = cardType === SOURCE.tenant.value ? 'View' : 'Edit';\r\n\r\n const commonTypographyPropsForContactAndAddress = {\r\n variant: 'body2',\r\n ...(this.isResourceTenantLead(resource) && {\r\n fontFamily: 'Open sans',\r\n variant: 'caption',\r\n component: 'p',\r\n }),\r\n };\r\n\r\n const getCardLink = () => buildUrl(cardType === CARD_TYPE.TENANT ? 'tenantView' : 'leadEdit', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n\r\n const renderCard = extraProps => (\r\n \r\n \r\n {\r\n photo\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n {\r\n (name || addon)\r\n && (\r\n \r\n {\r\n name\r\n && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n\r\n {\r\n addon\r\n && (\r\n \r\n {addon}\r\n \r\n )\r\n }\r\n\r\n {\r\n (primaryContactFirstName || primaryContactLastName)\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n (phone || email)\r\n && (\r\n \r\n \r\n {phone}\r\n {!this.isResourceTenantLead(resource) && phone && email && localisable.separator}\r\n {!this.isResourceTenantLead(resource)\r\n && {email}\r\n }\r\n \r\n {this.isResourceTenantLead(resource) && email && (\r\n \r\n {email && {email}}\r\n \r\n )}\r\n \r\n )\r\n }\r\n {\r\n line1\r\n && (\r\n \r\n \r\n {line1}\r\n \r\n \r\n )\r\n }\r\n {\r\n line2\r\n && (\r\n \r\n \r\n {line2}\r\n \r\n \r\n )\r\n }\r\n {\r\n units.length > 0\r\n && (\r\n \r\n \r\n {`${localisable.tenantCardUnits}:`}\r\n  \r\n \r\n \r\n \r\n {itemsContainerWidth ? this.renderItems(units, SOURCE.unit.value) : null}\r\n \r\n \r\n \r\n )\r\n }\r\n {\r\n (showBalanceWithZero || (balance > 0))\r\n && (\r\n \r\n \r\n {`${localisable.tenantCardBalance}:`}\r\n  \r\n \r\n \r\n {balance === 0 ? '0.00' : `${CURRENCY_MAP[currency]} ${balance}`}\r\n \r\n \r\n )\r\n }\r\n {\r\n ledger\r\n && (\r\n \r\n \r\n {`${localisable.tenantCardLedger}:`}\r\n  \r\n \r\n {ledger}\r\n \r\n )\r\n }\r\n {\r\n ledgers.length > 0\r\n && (\r\n \r\n \r\n {`${localisable.tenantCardLedgers}:`}\r\n  \r\n \r\n \r\n \r\n {itemsContainerWidth ? this.renderItems(ledgers, SOURCE.tenant.value) : null}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n (alternateContactFirstName || alternateContactLastName)\r\n && (\r\n \r\n \r\n \r\n {`${localisable.tenantCardAlternateContact}:`}\r\n  \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n comments\r\n && (\r\n \r\n \r\n {`${localisable.tenantCardComments}:`}\r\n  \r\n \r\n {comments}\r\n \r\n )\r\n }\r\n\r\n {showChip && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n onSelectCard\r\n ? renderCard()\r\n : (\r\n \r\n {renderCard({ onClick: () => onClickAway() })}\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nTenantLeadCard.propTypes = {\r\n id: PropTypes.string,\r\n name: PropTypes.shape({\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n salutation: PropTypes.string,\r\n suffix: PropTypes.string,\r\n preferredName: PropTypes.string,\r\n businessName: PropTypes.string,\r\n }),\r\n alternateContact: PropTypes.shape({\r\n name: PropTypes.shape({\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n }),\r\n }),\r\n primaryContact: PropTypes.shape({\r\n firstName: PropTypes.string,\r\n lastName: PropTypes.string,\r\n }),\r\n address: PropTypes.shape({\r\n line1: PropTypes.string,\r\n line2: PropTypes.string,\r\n }),\r\n email: PropTypes.shape({ emailAddress: PropTypes.string }),\r\n comments: PropTypes.string,\r\n units: PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.node,\r\n id: PropTypes.string,\r\n })),\r\n phone: PropTypes.string,\r\n balance: PropTypes.number,\r\n addon: PropTypes.object,\r\n photo: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n currentFacility: PropTypes.object,\r\n currentAccountId: PropTypes.object,\r\n ledger: PropTypes.string,\r\n CardProps: PropTypes.object,\r\n CardChipProps: PropTypes.object,\r\n cardType: PropTypes.oneOf(['lead', 'tenant', 'unit']),\r\n classes: PropTypes.object.isRequired,\r\n showChip: PropTypes.bool,\r\n showBalanceWithZero: PropTypes.bool,\r\n allowNavigation: PropTypes.any,\r\n label: PropTypes.string,\r\n ledgers: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.shape({\r\n label: PropTypes.node,\r\n id: PropTypes.string,\r\n })),\r\n PropTypes.object,\r\n ]),\r\n resource: PropTypes.number,\r\n NameContainerProps: PropTypes.object,\r\n onSelectCard: PropTypes.func,\r\n onClickAway: PropTypes.func,\r\n autoSuggestText: PropTypes.string,\r\n};\r\n\r\nTenantLeadCard.defaultProps = {\r\n disabled: false,\r\n cardType: 'tenant',\r\n balance: 0,\r\n name: {},\r\n address: {},\r\n email: {},\r\n units: [],\r\n ledgers: [],\r\n currentFacility: {},\r\n primaryContact: {},\r\n alternateContact: {},\r\n showChip: true,\r\n allowNavigation: false,\r\n showBalanceWithZero: false,\r\n autoSuggestText: '',\r\n};\r\n\r\nexport default withStyles(tenantLeadCardStyle)(TenantLeadCard);\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport CONFIG_TYPE from 'External/containers/configuration/config/ConfigRequestType';\r\nimport { ENTITY_TYPE } from 'External/containers/configuration/config/Constants';\r\n\r\nconst callApi = (onAction, endPoint, body, callback = () => { }, method = 'POST', storeMethod = 'read', customHeaderOptions) => {\r\n if (onAction) {\r\n onAction({\r\n config: [{\r\n api: {\r\n method: storeMethod,\r\n action: {\r\n methodType: `${method}`,\r\n endPoint,\r\n ...(body && { body }),\r\n ...customHeaderOptions && { customHeaderOptions },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n }\r\n};\r\n\r\nconst fetchConfigs = (onAction, callback, configTypes = [], entityId,\r\n entityType = ENTITY_TYPE.FACILITY, size = 200) => {\r\n const body = {\r\n size,\r\n view: VIEW.detail.value,\r\n filter: [{\r\n terms: {\r\n configType: configTypes,\r\n entityType: [entityType],\r\n ...(entityId && { entityId: [entityId] }),\r\n },\r\n }],\r\n };\r\n callApi(onAction, CONFIG_ENDPOINTS.search, body, callback);\r\n};\r\n\r\nconst fetchLetter = (onAction, entityId, callback) => {\r\n fetchConfigs(onAction, callback, [CONFIG_TYPE.LETTER, CONFIG_TYPE.FACILITY_GENERAL], entityId);\r\n};\r\n\r\nconst fetchStandaloneApp = (onAction, entityId, callback) => {\r\n const body = {\r\n view: VIEW.detail.value,\r\n filter: [{ terms: { status: ['Active'] } }],\r\n size: 200,\r\n };\r\n const customHeaderOptions = entityId ? {\r\n type: 'default',\r\n context: { id: entityId, type: 'Facility' },\r\n } : {\r\n type: 'store',\r\n key: 'facility',\r\n };\r\n callApi(onAction, 'standalone-app/search', body, callback, 'POST', 'read', customHeaderOptions);\r\n};\r\n\r\nconst fetchLeaseStyle = (onAction, entityId, callback) => {\r\n fetchConfigs(onAction, callback, [CONFIG_TYPE.LEASE_STYLE], entityId);\r\n};\r\n\r\nexport { fetchLetter, fetchStandaloneApp, fetchLeaseStyle };\r\n","\r\nconst GLOBAL_SCROLL_WIDTH = 10;\r\nconst GLOBAL_SCROLL_HEIGHT = 10;\r\n\r\nexport { GLOBAL_SCROLL_WIDTH, GLOBAL_SCROLL_HEIGHT };\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { SOURCE } from 'Commons/config/constants/Constants';\r\n\r\nexport default ({\r\n [SOURCE.unit.value]: {\r\n activate: localisable.unitActivateConfirmation,\r\n deactivate: localisable.unitDeactivateConfirmation,\r\n },\r\n [SOURCE.tenant.value]: {\r\n activate: localisable.tenantActivateConfirmation,\r\n deactivate: localisable.tenantDeactivateConfirmation,\r\n },\r\n [SOURCE.lead.value]: {\r\n activate: localisable.leadActivateConfirmation,\r\n deactivate: localisable.leadDeactivateConfirmation,\r\n },\r\n [SOURCE.vendor.value]: {\r\n activate: localisable.vendorActivateConfirmation,\r\n deactivate: localisable.vendorDeactivateConfirmation,\r\n },\r\n [SOURCE.inventoryList.value]: {\r\n activate: localisable.inventoryActivateConfirmation,\r\n deactivate: localisable.inventoryDeactivateConfirmation,\r\n },\r\n [SOURCE.userRole.value]: {\r\n activate: localisable.userRoleActivateConfirmation,\r\n deactivate: localisable.userRoleDeactivateConfirmation,\r\n },\r\n [SOURCE.configuration.value]: {\r\n activate: localisable.configurationActivateConfirmation,\r\n deactivate: localisable.configurationDeactivateConfirmation,\r\n },\r\n});\r\n","import { createEnumMap } from '../../../business/filterOverlay/components/configs/FilterConfigs';\r\n\r\nconst enums = { orientation: ['vertical', 'horizontal'] };\r\n\r\nconst STEPPER_ORIENTATION = createEnumMap(enums.orientation);\r\n\r\nexport { STEPPER_ORIENTATION };\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\n\r\nimport { connect } from 'react-redux';\r\nimport { Component } from 'react';\r\nimport ErrorBoundaries from 'Generic/errorboundaries/components/ErrorBoundaries';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\nimport Loader from 'Commons/components/generic/pageloader/components/Loader';\r\nimport * as LazyComponents from '../../../helpers/Loaders';\r\nimport ConfigLoader from './ConfigLoader';\r\nimport BatchProcessor from './BatchProcessor';\r\n\r\n\r\nconst Provider = (ComponentName, componentProps = {}, shouldWrapWithErrorBoundaries = true) => {\r\n const SmartComponent = LazyComponents[ComponentName];\r\n const configLoader = new ConfigLoader();\r\n const batchProcessor = new BatchProcessor();\r\n\r\n /**\r\n * @description This maps the redux state properties the component is interested to the components props\r\n * @param {*} state Redux state that is being mapped to this component\r\n */\r\n const mapStateToProps = (state, ownProps) => {\r\n let componentConfig = null;\r\n const { match: { path = '', url = '' } = {}, routeList: { pathList = [], urlList = [] } = {} } = ownProps;\r\n componentConfig = configLoader.initialized\r\n ? (componentConfig || configLoader.get())\r\n : configLoader.init({ pathList, path, url, urlList }, ComponentName);\r\n return batchProcessor.getPropsForState(state, componentConfig);\r\n };\r\n\r\n class ProviderHOC extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.unauthorised = false;\r\n this.initialize(props, componentProps || {});\r\n }\r\n\r\n /**\r\n * For the smart component to initiate dispatching an action or api or both\r\n * @param {*} method The Action Key method to fetch Action Config.\r\n * @param {Object} options Api/Store Options\r\n * @param {Boolean} options.sync Api/Store Options\r\n * @param {Object[]} options.config Store Config\r\n * @param {Object[]} options.config[].method The method = [CRUD]\r\n * @param {Object} options.config[].api If an API call needs to be made. Please pass the request options and type\r\n * @param {Object} [options.config[].api.action] Optional Action Config, if passed we will not pick up action config\r\n * @param {Object} [options.config[].api.dynamic] A dynamic config that needs to be combined with action config [Overwrites the action config properties]\r\n * @param {Function} [options.config[].callback] An optional callback to get API/Store Update results\r\n * @param {Object} options.config[].store If a store needs to be updated then pass the options.\r\n * @param {String} options.config[].store.key The store key that needs to be updated.\r\n * @param {String} options.config[].store.actionKey The store key that needs to be updated.\r\n * @param {Object} options.config[].store.payload The store key that needs to be updated.\r\n * @param {Object} options.config[].skipCustomPostProcessor If you need to skip custom post processor\r\n * @param {Object[]} options.config[].dependentStoreKeys All dependent store keys that needs to be updated.\r\n * @param {String} options.config[].dependentStoreKeys[].key Dependent Store Key Name\r\n * @param {Object} [options.config[].dependentStoreKeys[].states] The store key status to update on failure/success\r\n * @param {Boolean} [options.config[].dependentStoreKeys[].states.error] The store key status to update on error\r\n * @param {Boolean} [options.config[].dependentStoreKeys[].states.success] The store key status to update on success\r\n * @param {Object} [options.config[].dependentStoreKeys[].postProcessor = 'baseProcessor'] The custom post processor to use.\r\n * @param {*} options.requestType The type of request, Enum: [INIT, REFRESH, PAGINATE]\r\n */\r\n onAction = (options = {}) => {\r\n const {\r\n sync = false,\r\n config = [],\r\n } = options;\r\n const result = sync\r\n ? this.syncProcessActions(config)\r\n : this.asyncProcessActions(config);\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * @description It constructs the batch for API Q & call BatchProcessor's nextBatch.\r\n * @param {Object} option option config\r\n */\r\n processAction = (option) => {\r\n const onActionAPIQueue = [];\r\n const { all: allKeys } = configLoader.get();\r\n const { api: apiConfig, store, method } = option;\r\n if (store) {\r\n const { key: storeKey = '' } = store;\r\n // Check if component has access to this storeKey\r\n if (allKeys) {\r\n if (allKeys.indexOf(storeKey) > -1) {\r\n if (store && apiConfig) { onActionAPIQueue.push(storeKey); }\r\n batchProcessor.nextBatch(onActionAPIQueue, method, option);\r\n } else {\r\n console.error(`Component: ${ComponentName} cannot call ${storeKey}`);\r\n }\r\n } else {\r\n console.error('Component cannot access this store key');\r\n }\r\n } else if (apiConfig) {\r\n // Bypassing store\r\n batchProcessor.nextBatch([], method, option);\r\n }\r\n }\r\n\r\n processActionCb = (err, res) => {\r\n if (err) {\r\n console.error('Error while process options', err);\r\n this.pendingOptions = [];\r\n } else if (res) {\r\n if (this.pendingOptions && this.pendingOptions.length > 0) {\r\n this.pendingOptions.splice(0, 1);\r\n this.syncProcessActions(this.pendingOptions);\r\n }\r\n }\r\n if (this.componentCb) {\r\n this.componentCb(err, res);\r\n }\r\n }\r\n\r\n /**\r\n * @description Processes the config one after another\r\n * @param {Array[Object]} options options config\r\n */\r\n syncProcessActions = (options) => {\r\n if (options.length > 1) {\r\n // Need to replace callback\r\n this.pendingOptions = options;\r\n const [option] = this.pendingOptions;\r\n this.componentCb = option.callback;\r\n option.callback = this.processActionCb;\r\n this.processAction(option);\r\n } else if (options.length === 1) {\r\n const [option] = options;\r\n this.processAction(option);\r\n }\r\n }\r\n\r\n /**\r\n * @description Processes the configs at the same time\r\n * @param {Array[Object]} options options config\r\n */\r\n asyncProcessActions = (options = []) => {\r\n options.forEach((option) => {\r\n this.processAction(option);\r\n });\r\n }\r\n\r\n /**\r\n * @description Since MSTP initializes the config, we can start resoving the dependencies(If Any)\r\n * @param {*} props The props passed to the component\r\n */\r\n initialize = (props) => {\r\n this.resolveDependency(props);\r\n }\r\n\r\n /**\r\n * wait until criticals are loaded and fetch lazy dependencies\r\n */\r\n resolveDependency = (props) => {\r\n const componentConfig = configLoader.get();\r\n const {\r\n permission,\r\n match,\r\n location,\r\n history,\r\n } = props;\r\n const { permissionKey } = componentConfig;\r\n const routeProps = { match, location, history };\r\n batchProcessor.init(componentConfig, props.dispatch, routeProps);\r\n if (!permission || !permissionKey || hasPermission(permission, permissionKey)) {\r\n batchProcessor.start();\r\n } else {\r\n this.unauthorised = true;\r\n }\r\n }\r\n\r\n // This method bypasses onAction & directly dispatches event to store.\r\n // Please carefully send the store keys to clear\r\n clearKeys = (storeKeys = []) => {\r\n batchProcessor.clearKeys(storeKeys);\r\n }\r\n\r\n /**\r\n * @description To fetch lazy storeKeys\r\n * @param {*} method\r\n * @param {*} options For dynamic config\r\n */\r\n fetchLazy(method = 'read', options) {\r\n // Get the lazy keys for current component\r\n batchProcessor.nextBatch([...configLoader.get().lazy] || [], method, options);\r\n }\r\n\r\n clearStore() {\r\n batchProcessor.clearStore();\r\n }\r\n\r\n render() {\r\n const { onMount, lazy = [] } = configLoader.get();\r\n if (batchProcessor.isError()) {\r\n const props = {\r\n ...this.props,\r\n routeList: configLoader.getRouteList(),\r\n isError: true,\r\n };\r\n return React.createElement(SmartComponent, props);\r\n }\r\n // Determining if criticals are loaded. Not lazy loading\r\n if (!batchProcessor.isLoading() || this.unauthorised) {\r\n const props = {\r\n onMountConfig: onMount,\r\n onAction: this.onAction,\r\n clearStoreKeys: this.clearKeys,\r\n clear: this.clearStore,\r\n ...this.props,\r\n unauthorised: this.unauthorised,\r\n routeList: configLoader.getRouteList(),\r\n fetchLazy: lazy.length > 0 ? this.fetchLazy : undefined,\r\n };\r\n const SmartElement = React.createElement(SmartComponent, props);\r\n return shouldWrapWithErrorBoundaries\r\n ? {SmartElement}\r\n : SmartElement;\r\n }\r\n return ;\r\n }\r\n }\r\n return connect(mapStateToProps)(ProviderHOC);\r\n};\r\nexport default Provider;\r\n","import LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport actionItemsStyle from 'Commons/components/business/smartlistActionItemsPanel/styles/ActionItemStyle';\r\nimport { memo } from 'react';\r\n\r\nconst useStyles = makeStyles(actionItemsStyle, { name: 'ActionItem' });\r\n\r\nconst ActionItem = (props) => {\r\n const { config: { label, icon, onClick, disabled = false, iconProps, labelWithIconProps, labelProps } = {} } = props;\r\n const classes = useStyles();\r\n return (\r\n ,\r\n }}\r\n onClick={onClick}\r\n className={disabled ? classes.disabledAction : ''}\r\n {...labelWithIconProps}\r\n >\r\n \r\n {label}\r\n \r\n \r\n );\r\n};\r\n\r\nActionItem.propTypes = { config: PropTypes.object };\r\n\r\nexport default memo(ActionItem);\r\n","const THOUSAND_MILI_SECONDS = 1000;\r\n\r\nexport { THOUSAND_MILI_SECONDS };\r\n","import { encryptWithPublicKey } from 'Commons/helpers/utils/Cryptography';\r\nimport { maskCharacters } from 'Commons/helpers/utils/Utils';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { PROCESSOR_TYPE } from 'External/containers/facilityConfiguration/config/Constants';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport { HOSTED_FORM_AUTH_TYPE, PAYMENT_ACTION } from '../config/Constants';\r\n\r\nconst creditCardPreProcessor = async (values, payUsing, publicKey, cardProcessorData = {}, isRefund,\r\n { transactionId, token, response } = {}) => {\r\n const {\r\n extra,\r\n cardInfo: cardDetails = {},\r\n useCardOnFile = false,\r\n ...paymentDetails\r\n } = values;\r\n const { cardProcessorId, amount, doNotProcessCard } = paymentDetails;\r\n const { [cardProcessorId]: { data: { processorType } = {} } = {} } = cardProcessorData;\r\n const updatedPaymentDetails = deepCopy(paymentDetails);\r\n const { saveCardForFutureTransactions, autoPayEnabled, ...cardInfo } = cardDetails;\r\n\r\n let billingInfo = {};\r\n if (response) {\r\n try {\r\n const { requestDetails: { zip, address1, nameOnAccount, country } = {} } = JSON.parse(response);\r\n billingInfo = { name: nameOnAccount, address: { line1: address1, zipCode: zip, country } };\r\n } catch {\r\n billingInfo = {};\r\n }\r\n }\r\n\r\n if (payUsing === localisable.useCardOnFile) {\r\n return { ...updatedPaymentDetails, cardInfo, useCardOnFile };\r\n } if (payUsing === localisable.enterCardDetails) {\r\n if (processorType === PROCESSOR_TYPE.Syrapay.value) {\r\n if (transactionId || token || doNotProcessCard) {\r\n return {\r\n ...updatedPaymentDetails,\r\n transactionId,\r\n tokenToSave: token,\r\n cardInfo: {\r\n saveCardForFutureTransactions,\r\n autoPayEnabled,\r\n ...isObjWithKeys(billingInfo) ? { billingInfo } : {},\r\n },\r\n ...!isRefund && { action: PAYMENT_ACTION.PAY_VALIDATED_AMOUNT },\r\n };\r\n }\r\n if (isRefund) return { cardProcessorId, authType: HOSTED_FORM_AUTH_TYPE.TOKEN };\r\n return { cardProcessorId, authType: HOSTED_FORM_AUTH_TYPE.PAYMENT, amount };\r\n }\r\n }\r\n return { ...updatedPaymentDetails, cardInfo: { saveCardForFutureTransactions } };\r\n};\r\n\r\nconst achPreProcessor = async (values, payUsing, publicKey) => {\r\n const {\r\n extra,\r\n achInfo: achDetails = {},\r\n useCardOnFile,\r\n cardInfo,\r\n ...paymentDetails\r\n } = values;\r\n if (payUsing === localisable.enterCardDetails) {\r\n const { displayAccountNumber, ...achInfo } = achDetails;\r\n const encryptedAccountNumber = await encryptWithPublicKey(displayAccountNumber, publicKey, true);\r\n const accountNumber = maskCharacters(displayAccountNumber);\r\n paymentDetails.achInfo = {\r\n ...achInfo,\r\n displayAccountNumber: accountNumber,\r\n encryptedAccountNumber,\r\n };\r\n } else if (payUsing === localisable.useAchOnFile) {\r\n paymentDetails.achInfo = achDetails;\r\n }\r\n return paymentDetails;\r\n};\r\n\r\nexport { creditCardPreProcessor, achPreProcessor };\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { ERROR_TYPE } from '../config/Constants';\r\n\r\nconst getErrorActionList = (errorType, classes, {\r\n onExit,\r\n onTryDifferentMethod,\r\n onEditAmount,\r\n onDelinquentTenantAlertClose,\r\n onPaymentAlertYesAction,\r\n}) => {\r\n const exitConfig = [\r\n {\r\n label: localisable.exitCaps,\r\n onClick: onExit,\r\n otherProps: { className: classes.exitButton },\r\n },\r\n ];\r\n\r\n switch (errorType) {\r\n case ERROR_TYPE.PREPAY:\r\n return [\r\n ...exitConfig,\r\n { label: localisable.resetAmount, onClick: onEditAmount, otherProps: {} },\r\n ];\r\n case ERROR_TYPE.DELINQUENT_TENANT:\r\n return [\r\n {\r\n label: localisable.exitCaps,\r\n onClick: onDelinquentTenantAlertClose,\r\n otherProps: { className: classes.exitButton },\r\n },\r\n ];\r\n case ERROR_TYPE.OTHER_ERROR:\r\n return [\r\n ...exitConfig,\r\n {\r\n label: localisable.tryDifferentMethod,\r\n onClick: onTryDifferentMethod,\r\n otherProps: {},\r\n },\r\n ];\r\n default:\r\n return [\r\n {\r\n label: localisable.ok,\r\n onClick: onPaymentAlertYesAction,\r\n otherProps: {},\r\n },\r\n ];\r\n }\r\n};\r\n\r\nconst getErrorType = (isPrepayError, isDelinquentTenantError, isOtherError) => {\r\n if (isPrepayError) {\r\n return ERROR_TYPE.PREPAY;\r\n }\r\n if (isDelinquentTenantError) {\r\n return ERROR_TYPE.DELINQUENT_TENANT;\r\n }\r\n if (isOtherError) {\r\n return ERROR_TYPE.OTHER_ERROR;\r\n }\r\n return null;\r\n};\r\n\r\nexport { getErrorActionList, getErrorType };\r\n","import { Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport { YES_NO_LIST, INSURANCE_SOURCE, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport getFormattedAmount from 'Commons/helpers/utils/AmountHelper';\r\nimport { FormRadioGroup } from 'Generic/radiogroup/components/RadioGroup';\r\nimport { XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { FormTextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport { SMALL_TEXTFIELD_WIDTH } from 'External/containers/configuration/config/Constants';\r\nimport { useMemo } from 'react';\r\nimport { BILLING_TYPE } from 'External/containers/rentalConfiguration/config/RentalFormConfigs';\r\n\r\nconst InsuranceBody = ({\r\n classes, source, insuranceCoverage, insuranceCoverageById, coverageId,\r\n initialCoverageId, policyRequired, onChangeSkipFirstPeriod,\r\n facilityProrateInfo: { type: { billing } = {}, isEnabled: isProrateEnabledFacility = false }, skipFirstPeriod,\r\n}) => {\r\n const isProrateApplicable = useMemo(() => (isProrateEnabledFacility && billing === BILLING_TYPE.Prorate_Second.value\r\n ? skipFirstPeriod : !skipFirstPeriod\r\n ), [billing, initialCoverageId, skipFirstPeriod, isProrateEnabledFacility]);\r\n\r\n const proratePremiumLabel = useMemo(() => {\r\n const periodNumber = (!isProrateEnabledFacility || billing === BILLING_TYPE.Prorate_First.value)\r\n ? localisable.first.toLowerCase() : localisable.second.toLowerCase();\r\n return `${localisable.shouldProrate}${' '}${localisable.the.toLowerCase()}${' '}${periodNumber}${' '}\r\n ${localisable.period.toLowerCase()}`;\r\n }, [isProrateEnabledFacility, billing]);\r\n\r\n const getCoverageDetails = () => (\r\n \r\n \r\n \r\n {localisable.monthlyPremium}\r\n \r\n \r\n \r\n \r\n {getFormattedAmount(insuranceCoverageById[coverageId]\r\n ? insuranceCoverageById[coverageId].monthlyPremium : 0)}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.coverageAmount}\r\n \r\n \r\n \r\n \r\n {getFormattedAmount(insuranceCoverageById[coverageId]\r\n ? insuranceCoverageById[coverageId].coverageAmount : 0)}\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const getSkipFirstPeriodDetails = () => (\r\n \r\n );\r\n\r\n const getProrateDetails = () => (\r\n \r\n );\r\n\r\n const getCoverageDropdown = () => (\r\n \r\n );\r\n\r\n const getPolicyDetails = () => (\r\n \r\n );\r\n\r\n return (\r\n source === INSURANCE_SOURCE.EDIT_UNIT\r\n ? (\r\n \r\n \r\n {getCoverageDropdown()}\r\n \r\n \r\n {getCoverageDetails()}\r\n \r\n {\r\n coverageId\r\n && (\r\n <>\r\n {getSkipFirstPeriodDetails()}\r\n {isProrateEnabledFacility && isProrateApplicable && {getProrateDetails()}}\r\n \r\n )\r\n }\r\n {getPolicyDetails()}\r\n \r\n )\r\n : (\r\n \r\n {getCoverageDropdown()}\r\n \r\n {getCoverageDetails()}\r\n \r\n \r\n {\r\n coverageId\r\n && (\r\n <>\r\n {getSkipFirstPeriodDetails()}\r\n {isProrateEnabledFacility && isProrateApplicable && getProrateDetails()}\r\n \r\n )\r\n\r\n }\r\n \r\n {getPolicyDetails()}\r\n \r\n )\r\n );\r\n};\r\n\r\nInsuranceBody.propTypes = {\r\n source: PropTypes.string,\r\n classes: PropTypes.object,\r\n coverageId: PropTypes.string,\r\n policyRequired: PropTypes.bool,\r\n skipFirstPeriod: PropTypes.bool,\r\n insuranceCoverage: PropTypes.array,\r\n initialCoverageId: PropTypes.string,\r\n facilityProrateInfo: PropTypes.object,\r\n insuranceCoverageById: PropTypes.object,\r\n onChangeSkipFirstPeriod: PropTypes.func,\r\n};\r\n\r\nInsuranceBody.defaultProps = { facilityProrateInfo: EMPTY_OBJECT };\r\n\r\nexport default InsuranceBody;\r\n","/* eslint-disable prefer-spread */\r\nfunction memoize(fn, resolver) {\r\n const cache = new Map();\r\n return (...args) => {\r\n // if we have a resolver defined, use that, otherwise, default to the first arg\r\n const key = resolver ? resolver.apply(null, args) : args[0];\r\n if (cache.has(key)) {\r\n return cache.get(key);\r\n }\r\n const result = fn.apply(null, args);\r\n cache.set(key, result);\r\n return result;\r\n };\r\n}\r\n\r\nexport { memoize };\r\n","const DEFAULT_COLOR_PICKER_COLOR = { hex: '#dadadaff' };\r\n\r\n\r\nexport default DEFAULT_COLOR_PICKER_COLOR;\r\n","import { EMPTY_FUNC, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport { SmartListProps } from 'Commons/components/business/smartlist/config/SmartListProps';\r\nimport { PageProps } from 'Commons/components/business/page/config/PageProps';\r\n\r\nconst SmartListWithFormProps = {\r\n title: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\r\n onSubmit: PropTypes.func,\r\n fullHeight: PropTypes.bool,\r\n getAddRowFunc: PropTypes.func,\r\n getDeleteRowFunc: PropTypes.func,\r\n FormikProps: PropTypes.object,\r\n updateDeletedRow: PropTypes.func, // Pass all the row details to this function from the custom delete formatter. Alternatively this can be passed directly via listConfig\r\n ContainerProps: PropTypes.shape({\r\n ...PageProps,\r\n footer: PropTypes.func,\r\n }),\r\n initialValues: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\r\n formConfigForColumns: PropTypes.objectOf( // keys of formConfigForColumns will be the index of columns which were provided in the list config\r\n PropTypes.shape({\r\n formFieldInfo: PropTypes.shape({\r\n name: PropTypes.string, // The field name will be index.name\r\n Component: PropTypes.elementType, // Default will be FormTextField if not provided\r\n // .. rest Field specific props, They'll be passed to the above-mentioned Component\r\n }),\r\n }),\r\n ),\r\n getFormProps: PropTypes.func,\r\n invalidData: PropTypes.object,\r\n autoSave: PropTypes.bool,\r\n handleEditFormData: PropTypes.bool, // If we want to send only the changeset in editFormData\r\n pageKey: PropTypes.any,\r\n ...SmartListProps,\r\n};\r\n\r\nconst SmartListWithFormDefaultProps = {\r\n header: null,\r\n fullHeight: false,\r\n autoSave: false,\r\n FormikProps: EMPTY_OBJECT,\r\n getAddRowFunc: EMPTY_FUNC,\r\n getDeleteRowFunc: EMPTY_FUNC,\r\n};\r\n\r\nexport { SmartListWithFormProps, SmartListWithFormDefaultProps };\r\n","import Theme from 'Commons/theme/Theme';\r\nimport { useState, useEffect, memo, useRef } from 'react';\r\nimport { Grid, Divider, Typography, Collapse, makeStyles }\r\nfrom 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport sectionHeaderStyle from '../styles/SectionStyle';\r\n\r\nconst useStyles = makeStyles(sectionHeaderStyle, { name: 'Section' });\r\n\r\nconst Section = ({\r\n open: openProp, updateStateOfOpenInParent, onRef, controlled,\r\n onClick: onClickProp, titleVariant, subHeaderVariant, getChildrenContainerRef, ...props\r\n}) => {\r\n const classes = useStyles(props);\r\n const childrenContainerRef = useRef();\r\n const [openState, setOpenState] = useState(openProp);\r\n\r\n useEffect(() => {\r\n onRef({});\r\n if (getChildrenContainerRef) {\r\n getChildrenContainerRef(childrenContainerRef);\r\n }\r\n }, []);\r\n\r\n const onClick = (id) => {\r\n if (!controlled) {\r\n setOpenState(() => !openState);\r\n }\r\n updateStateOfOpenInParent();\r\n onClickProp(id);\r\n };\r\n\r\n const renderSectionHeaderOrSubHeader = (startElement, isHeader = false) => {\r\n const {\r\n title, subHeader,\r\n disabled, shouldShowCursorPointer,\r\n } = props;\r\n const elementStyleClass = isHeader ? classes.title : classes.subHeader;\r\n const variant = isHeader ? titleVariant : subHeaderVariant;\r\n const value = isHeader ? title : subHeader;\r\n return (\r\n \r\n {value}\r\n \r\n );\r\n };\r\n\r\n const {\r\n globalClasses: {\r\n subsectionPadding: { className: subsectionPadding },\r\n inner: { className: inner },\r\n },\r\n } = Theme;\r\n const {\r\n children, DividerProps, title, className, cardHeader, collapsable, id, classes: overriddenClasses,\r\n subsection, divider, addon: { start, end }, subHeader, staticContext, CollapseProps, disabled,\r\n collapseIcon, expandIcon, LabelWithIconProps, history, location, match, onDemandSection,\r\n subsectionPadding: ignore, subsectionLeftPadding, shouldShowCursorPointer, onAddOrRemoveSection,\r\n ...otherProps\r\n } = props;\r\n const isOpen = controlled ? openProp : openState;\r\n const icon = isOpen ? collapseIcon : expandIcon;\r\n const startElement = start || (collapsable && (icon ? ( {icon} ) : null));\r\n\r\n const renderChildren = (shouldApplyPadding = true, shouldApplyLeftPadding = true) => (\r\n shouldApplyPadding\r\n ? (\r\n \r\n {children}\r\n \r\n )\r\n : children\r\n );\r\n return (\r\n \r\n \r\n \r\n \r\n onClick(id)}\r\n wrap=\"nowrap\"\r\n alignItems=\"center\"\r\n className={clsx(classes.addonStart, { [classes.cursorPointer]: shouldShowCursorPointer })}\r\n >\r\n {startElement}\r\n {renderSectionHeaderOrSubHeader(startElement, true)}\r\n \r\n {end}\r\n \r\n {subHeader && typeof (subHeader) === 'string'\r\n ? renderSectionHeaderOrSubHeader(startElement)\r\n : subHeader}\r\n {divider && }\r\n \r\n \r\n {\r\n collapsable\r\n ? (\r\n \r\n {renderChildren(true, subsectionLeftPadding)}\r\n \r\n )\r\n : (\r\n renderChildren(ignore, subsectionLeftPadding)\r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSection.propTypes = {\r\n children: PropTypes.node,\r\n DividerProps: PropTypes.object,\r\n open: PropTypes.bool,\r\n collapsable: PropTypes.bool,\r\n className: PropTypes.string,\r\n subsection: PropTypes.bool,\r\n shouldShowCursorPointer: PropTypes.bool,\r\n divider: PropTypes.bool,\r\n addon: PropTypes.shape({\r\n start: PropTypes.node,\r\n end: PropTypes.node,\r\n }),\r\n classes: PropTypes.object,\r\n title: PropTypes.node,\r\n cardHeader: PropTypes.bool,\r\n subHeader: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.string,\r\n ]),\r\n match: PropTypes.object,\r\n id: PropTypes.any,\r\n staticContext: PropTypes.any,\r\n onRef: PropTypes.func,\r\n CollapseProps: PropTypes.object,\r\n location: PropTypes.object,\r\n updateStateOfOpenInParent: PropTypes.func,\r\n disabled: PropTypes.bool,\r\n collapseIcon: PropTypes.node,\r\n expandIcon: PropTypes.node,\r\n LabelWithIconProps: PropTypes.object,\r\n history: PropTypes.object,\r\n onDemandSection: PropTypes.bool,\r\n controlled: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n subsectionPadding: PropTypes.bool,\r\n subsectionLeftPadding: PropTypes.bool,\r\n titleVariant: PropTypes.string,\r\n getChildrenContainerRef: PropTypes.func,\r\n onAddOrRemoveSection: PropTypes.func,\r\n subHeaderVariant: PropTypes.string,\r\n};\r\n\r\nSection.defaultProps = {\r\n className: '',\r\n open: true,\r\n collapsable: false,\r\n subsection: false,\r\n shouldShowCursorPointer: false,\r\n divider: false,\r\n addon: {},\r\n cardHeader: false,\r\n match: {},\r\n onRef: () => { },\r\n CollapseProps: {},\r\n location: {},\r\n disabled: false,\r\n updateStateOfOpenInParent: () => { },\r\n onClick: () => { },\r\n collapseIcon: 'expand_more',\r\n expandIcon: 'expand_less',\r\n subsectionPadding: false,\r\n subsectionLeftPadding: true,\r\n titleVariant: 'h6',\r\n subHeaderVariant: 'subtitle1',\r\n};\r\n\r\nexport default memo(Section);\r\n","import { FormTextField, TextField } from 'Generic/textfield/components/TextField';\r\nimport { IS_MAX_LENGTH_1024 } from 'Commons/config/constants/Validators';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport InheritedConfigLabel from 'Commons/components/generic/InheritedConfigLabel/components/InheritedConfigLabel';\r\n\r\nfunction Comments(props) {\r\n const { readOnly = false, isForm, validate } = props;\r\n const Component = isForm ? FormTextField : TextField;\r\n return (\r\n \r\n )}\r\n fullWidth\r\n validate={validate}\r\n readOnly={readOnly}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nComments.propTypes = { readOnly: PropTypes.bool, isForm: PropTypes.bool, validate: PropTypes.object };\r\n\r\nComments.defaultProps = { readOnly: false, isForm: true, validate: IS_MAX_LENGTH_1024 };\r\n\r\nexport default Comments;\r\n","import BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport { Form, Formik } from 'formik';\r\nimport { Grid, Loader, withStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport {\r\n CURRENCY_MAP,\r\n DASHBOARD_TYPE,\r\n EMPTY_FUNC,\r\n SLIDE_DIRECTION,\r\n SOURCE,\r\n STATUS,\r\n TOKEN_TYPE,\r\n} from 'Commons/config/constants/Constants';\r\nimport { getCurrentDate } from 'Commons/helpers/utils/DateTime';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Modal from 'Commons/components/generic/modal/components/Modal';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport Transition from 'Generic/transition/components/Transition';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport WSUpdatePropsContext from 'Commons/contexts/WSUpdatePropsContext';\r\nimport { RESOURCE_NAME_TO_CONFIG_MAPPING } from 'External/containers/configuration/config/Constants';\r\nimport { ROUTE } from 'External/redux/config/RouteNames';\r\nimport { UnpaidBills } from 'External/containers/viewtenant/components/crmcomponents/UnpaidBills';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Link from 'Generic/link/components/Link';\r\nimport { CARD_PROCESSOR_SHOW_ON } from 'External/containers/facilityConfiguration/config/Constants';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { round } from 'Commons/helpers/utils';\r\nimport { convertToNumber, isLiveData, isPrintDeliveryMethod } from 'Commons/helpers/utils/Utils';\r\nimport { DELIVERY_METHOD } from 'Commons/components/generic/deliveryMethodDropdown/config/Constants';\r\nimport { WALK_IN_CUSTOMER_ID } from 'External/containers/pointOfSale/config/Constants';\r\nimport { getValue, isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport Login from 'Public/containers/login/widgets/Login';\r\nimport { deleteCookie, getCookie } from 'Commons/redux/helper/CookieManager';\r\nimport COOKIE_KEY from 'Commons/redux/config/CookieKey';\r\nimport DocumentFetcher from 'Commons/components/generic/deliveryMethodDropdown/components/DocumentFetcher';\r\nimport HostedFormContext from 'Commons/contexts/HostedFormContext';\r\nimport CONFIG_TYPE from 'Commons/../external/containers/configuration/config/ConfigRequestType';\r\nimport STORE_KEY from 'Commons/redux/config/StoreKey';\r\nimport { mergeChildConfigWithParent } from 'External/redux/postProcessors/configSDPostProcessor';\r\nimport { getFooterProps } from './utils/Footer';\r\nimport BillAhead from './components/BillAhead';\r\nimport PaymentStyle from './styles/PaymentStyle';\r\nimport TenantInformation from './components/TenantInformation';\r\nimport PaymentType from './components/PaymentType';\r\nimport PaymentInformation from './components/PaymentInformation';\r\nimport {\r\n authenticateCardProcessorIntegrator,\r\n fetchPaymentMethod,\r\n fetchTenant,\r\n pay,\r\n updatedPromoPlans,\r\n} from './config/ApiRequests';\r\nimport Page from '../page/components/Page';\r\nimport { calculateNextAmountPayable } from './utils/BalanceCalculator';\r\nimport Header from './components/Header';\r\nimport {\r\n FAILED_AVS_CODES,\r\n FAILED_CVV_CODES,\r\n HOSTED_FORM_ID,\r\n PAYMENT_ACTION,\r\n PAYMENT_METHOD,\r\n} from './config/Constants';\r\nimport { achPreProcessor, creditCardPreProcessor } from './utils/SubmitPreProcessors';\r\nimport shouldModifyNegativeAmount from './utils/CheckAmount';\r\nimport { getErrorActionList, getErrorType } from './utils/ErrorAction';\r\n\r\nclass Payment extends BaseForm {\r\n constructor(props) {\r\n // TODO: Divide constructor into smaller readable functions\r\n super(props);\r\n const {\r\n currentFacility: { data: { currency: currencyName = '' } = {} } = {},\r\n financialPayment: {\r\n data: {\r\n data: [{\r\n value: {\r\n documentation: { Receipt: { deliveryMethod = DELIVERY_METHOD.Print.value } = {} } = {},\r\n requireCredentials = false,\r\n } = {},\r\n } = {}] = [],\r\n } = {},\r\n } = {},\r\n isRoute = false, initialValues, reFetchTenantBalance, paymentMethod,\r\n ledgerInfo, isExternalSubmit = false, source,\r\n } = props;\r\n const { id: ledgerId } = ledgerInfo || {}; // Since ledgerInfo can be null as well\r\n const prefilled = this.initializeData();\r\n this.currency = CURRENCY_MAP[currencyName];\r\n this.initialStatus = { payUsing: localisable.enterCardDetails };\r\n this.currentStatus = this.initialStatus;\r\n this.state = {\r\n isButtonLoading: false,\r\n loading: false,\r\n showAlert: false,\r\n prefilled,\r\n shouldGoBack: false,\r\n isBillAheadOpen: false,\r\n refreshed: false,\r\n paymentMethod: this.handleInheritanceForPaymentMethod(paymentMethod),\r\n isUnpaidBillsOpen: false,\r\n prePayError: false,\r\n isLoginRequired: requireCredentials,\r\n isPaymentTokenAvailable: !!getCookie(COOKIE_KEY.PAYMENT_TOKEN),\r\n documentation: {},\r\n delinquentTenantError: false,\r\n fetchingAmountField: null,\r\n };\r\n this.paymentRef = React.createRef();\r\n this.unpaidBillsContainerRef = React.createRef();\r\n this.reFetchTenantBalance = reFetchTenantBalance;\r\n if (isRoute) {\r\n this.unblock = this.allowNavigation(this.shouldLeave);\r\n }\r\n this.mapCardProcessorData();\r\n this.initialValues = {\r\n receiptDeliveryMethod: ledgerId === WALK_IN_CUSTOMER_ID ? DELIVERY_METHOD.Print.value : deliveryMethod,\r\n effectiveDate: getCurrentDate(),\r\n waiveSurchargeOrDiscount: false,\r\n extra: {\r\n tenantAlerts: {},\r\n payUsing: localisable.enterCardDetails,\r\n },\r\n ...initialValues,\r\n };\r\n this.mapPromoPlanData();\r\n this.ignoreWsMessage = false;\r\n this.isExternalSubmit = isExternalSubmit;\r\n this.isAmountWithoutModifierTouched = false;\r\n this.prevSelectedPaymentMethodId = '';\r\n this.tenantInformationComponentKey = Date.now();\r\n this.storesToNotClearSilently = [\r\n CONFIG_TYPE.PROMO_PLAN,\r\n CONFIG_TYPE.PAYMENT_METHOD,\r\n ...(source === SOURCE.ledger.value ? [STORE_KEY.AR] : []),\r\n ];\r\n }\r\n\r\n setFetchingAmountField = (fetchingField) => {\r\n this.setState({ fetchingAmountField: fetchingField });\r\n }\r\n\r\n handleInheritanceForPaymentMethod = (paymentMethod) => {\r\n const paymentMethods = getValue(paymentMethod, 'data.Payment_Method.data') || getValue(paymentMethod, 'data.data') || [];\r\n return { data: { data: mergeChildConfigWithParent(paymentMethods) } };\r\n };\r\n\r\n onSnackbarMount = ({ key, closeSnackbar }) => {\r\n this.closeSnackbar = closeSnackbar;\r\n this.snackbarId = key;\r\n }\r\n\r\n mapCardProcessorData = () => {\r\n const { cardProcessor: { data: { data = [] } = {} } = {}, isRefund } = this.props;\r\n const mappedCardProcessorData = {};\r\n data.forEach((cardProcessorDetail = {}) => {\r\n const { id, value: { description, showOn = [], status } = {}, value = {} } = cardProcessorDetail;\r\n if (((isRefund && showOn.includes(CARD_PROCESSOR_SHOW_ON.Refund.value))\r\n || (!isRefund && showOn.includes(CARD_PROCESSOR_SHOW_ON.Payment.value)))\r\n && status === STATUS.Active.value) {\r\n mappedCardProcessorData[id] = { ...cardProcessorDetail, label: description, value: id, data: value };\r\n }\r\n });\r\n this.cardProcessorData = mappedCardProcessorData;\r\n }\r\n\r\n mapPromoPlanData = () => {\r\n const { promoPlan: { data: { data: allPromoPlans = [] } = {} } = {} } = this.props || {};\r\n this.promoPlanData = allPromoPlans.reduce((acc, promoPlan = {}) => {\r\n const { id, value } = promoPlan;\r\n return { ...acc, [id]: { ...promoPlan, ...value } };\r\n }, {});\r\n }\r\n\r\n getFuncToOpenPaymentMethod = (funcToOpenPaymentMethod = EMPTY_FUNC) => {\r\n this.openPaymentMethod = funcToOpenPaymentMethod;\r\n }\r\n\r\n updateIgnoreWsMessage = (ignore) => {\r\n this.ignoreWsMessage = ignore;\r\n }\r\n\r\n isLedgerChanged = (wsMessage) => {\r\n const { resourceName, fields: { tenant, balance } = {} } = wsMessage;\r\n const {\r\n state: { isButtonLoading } = {},\r\n formProps: { status: { tenantInfo: { id: tenantId } = {} } = {} },\r\n } = this;\r\n if (tenantId && resourceName === SOURCE.ledger.value && tenant === tenantId && !isButtonLoading) {\r\n return {\r\n isLedgerInfoChanged: true,\r\n isLedgerBalanceChanged: !!(balance),\r\n };\r\n }\r\n return {\r\n isLedgerInfoChanged: false,\r\n isLedgerBalanceChanged: false,\r\n };\r\n };\r\n\r\n isPaymentMethodChanged = (wsMessage) => {\r\n const { resourceName } = wsMessage;\r\n const { state: { isButtonLoading } = {} } = this;\r\n if (RESOURCE_NAME_TO_CONFIG_MAPPING[ROUTE.PAYMENT_METHOD_LIST] === resourceName && !isButtonLoading) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n isTenantChanged = (wsMessage) => {\r\n const { resourceName, resourceId } = wsMessage;\r\n const { showTenantInformation = true } = this.props;\r\n const {\r\n state: { isButtonLoading } = {},\r\n formProps: { status: { tenantInfo: { id: tenantId } = {} } = {} },\r\n } = this;\r\n return !!(showTenantInformation\r\n && tenantId\r\n && resourceName === SOURCE.tenant.value\r\n && resourceId === convertToNumber(tenantId) && !isButtonLoading);\r\n };\r\n\r\n arePromoPlansUpdated = (wsMessage) => {\r\n const { resourceName } = wsMessage;\r\n return RESOURCE_NAME_TO_CONFIG_MAPPING[ROUTE.PROMO_PLAN_LIST] === resourceName;\r\n }\r\n\r\n getWsMessageDetails = (wsMessage) => {\r\n const { isLedgerChanged, isPaymentMethodChanged, isTenantChanged, arePromoPlansUpdated } = this;\r\n const { isLedgerInfoChanged, isLedgerBalanceChanged } = isLedgerChanged(wsMessage);\r\n if (isLedgerInfoChanged) {\r\n return {\r\n isLedgerInfoChanged,\r\n isLedgerBalanceChanged,\r\n message: isLedgerBalanceChanged\r\n ? localisable.wsPaymentUpdateMessage\r\n : localisable.wsTenantInfoUpdateMessage,\r\n };\r\n }\r\n if (isPaymentMethodChanged(wsMessage)) {\r\n return {\r\n paymentMethodChanged: true,\r\n message: localisable.wsPaymentMethodUpdateMessage,\r\n };\r\n }\r\n if (arePromoPlansUpdated(wsMessage)) {\r\n return {\r\n promoPlansChanged: true,\r\n message: localisable.wsPromoPlanUpdateMessage,\r\n };\r\n }\r\n if (isTenantChanged(wsMessage)) return { tenantChanged: true, message: localisable.wsTenantInfoUpdateMessage };\r\n return {};\r\n }\r\n\r\n onWebSocketMessage = (wsMessage = {}) => {\r\n const { onSnackbarMount, getWsMessageDetails, handleTenantInfoChange, ignoreWsMessage, props: showRTNS } = this;\r\n if (!ignoreWsMessage && showRTNS) {\r\n const {\r\n isLedgerInfoChanged, isLedgerBalanceChanged, tenantChanged,\r\n message = '',\r\n } = getWsMessageDetails(wsMessage);\r\n if (message) {\r\n this.updateSnackbarActionsFor([],\r\n wsMessage, () => true,\r\n tenantChanged || (isLedgerInfoChanged && !isLedgerBalanceChanged));\r\n this.setSnackbarProps(true, message, VARIANT.rtns.value, '', onSnackbarMount);\r\n this.setState({ receivedWSMessage: true }, () => {\r\n this.setState({ receivedWSMessage: false });\r\n });\r\n if (tenantChanged || (isLedgerInfoChanged && !isLedgerBalanceChanged)) {\r\n handleTenantInfoChange();\r\n }\r\n }\r\n }\r\n };\r\n\r\n handleTenantInfoChange = () => {\r\n const {\r\n formProps: { status: { tenantInfo: { id: tenantId } = {} } = {} } = {},\r\n props: { onAction }, onTenantFetch,\r\n } = this;\r\n fetchTenant(onAction, tenantId, onTenantFetch);\r\n };\r\n\r\n onTenantFetch = (apiError, response, actions) => {\r\n const {\r\n autoSuggestRef, closeSnackbar = EMPTY_FUNC, snackbarId,\r\n formProps: { status = {}, setStatus, status: { ledgerInfo: { id: ledgerId } = {} } = {} } = {},\r\n } = this;\r\n if (apiError) {\r\n this.handleErrors(apiError, actions);\r\n } else if (response) {\r\n const { data: [tenant] = [] } = response;\r\n const { ledger: ledgers = [] } = tenant;\r\n if (this.tenantInfo) {\r\n this.tenantInfo = tenant;\r\n }\r\n let ledgerListWithLabelValue = ledgers.map((ledger) => {\r\n const { id } = ledger;\r\n return {\r\n ...ledger,\r\n value: id,\r\n };\r\n });\r\n if (this.ledgerInfo || this.ledgerId) {\r\n ledgerListWithLabelValue = ledgerListWithLabelValue.filter(({ id }) => ledgerId === id);\r\n [this.ledgerInfo] = ledgerListWithLabelValue;\r\n }\r\n const updatedStatus = {\r\n ...status,\r\n tenantInfo: {\r\n ...tenant,\r\n ledger: ledgerListWithLabelValue,\r\n },\r\n ledgerInfo: ledgerListWithLabelValue.find(({ id }) => ledgerId === id),\r\n };\r\n setStatus(updatedStatus);\r\n if (autoSuggestRef) {\r\n autoSuggestRef.selectCard(tenant);\r\n }\r\n }\r\n this.setState(prevState => ({ refreshed: !prevState.refreshed }));\r\n closeSnackbar(snackbarId);\r\n };\r\n\r\n onRefresh = (message = {}) => {\r\n const {\r\n props: { onAction, currentFacility: { data: { id: facilityId } = {} } = {} },\r\n isLedgerChanged, isPaymentMethodChanged, onPaymentMethodFetch,\r\n } = this;\r\n this.positiveButtonToolTipMessage = '';\r\n const { isLedgerBalanceChanged } = isLedgerChanged(message);\r\n if (isLedgerBalanceChanged) {\r\n this.handleTenantInfoChange();\r\n }\r\n if (isPaymentMethodChanged(message)) {\r\n fetchPaymentMethod(onAction, facilityId, onPaymentMethodFetch);\r\n }\r\n };\r\n\r\n onPaymentMethodFetch = (apiError, response, actions) => {\r\n if (apiError) {\r\n this.handleErrors(apiError, actions);\r\n } else if (response) {\r\n this.setState({ paymentMethod: this.handleInheritanceForPaymentMethod(response) });\r\n }\r\n };\r\n\r\n initializeData = () => {\r\n const { isRoute } = this.props;\r\n let isPrefilled;\r\n let tenantOrUnitDetail;\r\n if (isRoute) {\r\n const { location: { state = {} } = {} } = this.props;\r\n const {\r\n paymentProps: {\r\n tenantId, tenantInfo, ledgerInfo,\r\n ledgerId, prefilled = false,\r\n } = {},\r\n detail,\r\n } = state || {};\r\n Object.assign(this, {\r\n tenantInfo,\r\n ledgerInfo,\r\n ledgerId,\r\n tenantId,\r\n });\r\n isPrefilled = prefilled;\r\n tenantOrUnitDetail = detail;\r\n } else {\r\n const { tenantInfo, ledgerInfo, ledgerId, tenantId, prefilled = false, detail } = this.props;\r\n Object.assign(this, {\r\n tenantInfo,\r\n ledgerInfo,\r\n ledgerId,\r\n tenantId,\r\n });\r\n isPrefilled = prefilled;\r\n tenantOrUnitDetail = detail;\r\n }\r\n if (tenantOrUnitDetail) {\r\n const { id, ledger } = tenantOrUnitDetail;\r\n if (Array.isArray(ledger)) {\r\n this.tenantId = id;\r\n } else {\r\n const { id: ledgerId } = ledger || {};\r\n this.ledgerId = ledgerId;\r\n }\r\n isPrefilled = true;\r\n }\r\n return isPrefilled;\r\n };\r\n\r\n shouldLeave = () => {\r\n const { formProps: { dirty } = {} } = this;\r\n const { prefilled } = this.state;\r\n if (dirty && !prefilled) {\r\n this.toggleAlertState({ discard: true });\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n onExternalSubmit = () => {\r\n this.isExternalSubmit = true;\r\n const { setStatus, status: { errors, values, ...status } = {} } = this.formProps;\r\n setStatus(status);\r\n this.submitForm();\r\n }\r\n\r\n componentDidMount() {\r\n const { getSubmit } = this.props;\r\n if (getSubmit) {\r\n getSubmit(this.onExternalSubmit);\r\n }\r\n const updateWsProps = this.context;\r\n updateWsProps({ messageCallback: this.handleWsMessage });\r\n }\r\n\r\n componentWillUnmount() {\r\n const { unblock = () => { }, props: { clearStoreKeys } = {} } = this;\r\n const updateWsProps = this.context;\r\n clearStoreKeys(['unpaidAr']);\r\n deleteCookie(COOKIE_KEY.PAYMENT_TOKEN);\r\n updateWsProps({ shouldClearCallbacks: false });\r\n unblock();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { refundAmount: prevRefundAmount } = prevProps;\r\n const {\r\n props: {\r\n source,\r\n refundAmount,\r\n ledgerInfo: { id: ledgerId } = {},\r\n } = {},\r\n formProps: {\r\n setFieldValue,\r\n status: { selectedPaymentMethod: { id: paymentMethodId } = {} } = {},\r\n },\r\n } = this;\r\n\r\n\r\n if (source === SOURCE.retailSaleReturns.value && refundAmount > 0\r\n && (prevRefundAmount !== refundAmount\r\n || this.prevSelectedPaymentMethodId !== paymentMethodId\r\n || this.prevLedgerId !== ledgerId)) {\r\n this.prevLedgerId = ledgerId;\r\n this.prevSelectedPaymentMethodId = paymentMethodId;\r\n setFieldValue('extra.amountWithoutModifier', round(refundAmount, 2, true));\r\n }\r\n if (refundAmount === 0 && prevRefundAmount > 0) {\r\n setFieldValue('amount', round(0, 2, true));\r\n }\r\n }\r\n\r\n setPrefilledFalse = () => {\r\n this.setState({ prefilled: false });\r\n };\r\n\r\n toggleBillAhead = () => {\r\n this.setState(prevState => ({\r\n isBillAheadOpen: !prevState.isBillAheadOpen,\r\n ...(prevState.isUnpaidBillsOpen && { isUnpaidBillsOpen: false }),\r\n }));\r\n };\r\n\r\n toggleUnpaidBills = () => {\r\n const { onShowUnpaidBills } = this.props;\r\n if (onShowUnpaidBills) {\r\n onShowUnpaidBills();\r\n } else {\r\n this.setState(prevState => ({\r\n isUnpaidBillsOpen: !prevState.isUnpaidBillsOpen,\r\n ...(prevState.isBillAheadOpen && { isBillAheadOpen: false }),\r\n }));\r\n }\r\n };\r\n\r\n closeBillAheadOrUnpaidBillsModal = () => {\r\n this.setState(prevState => ({\r\n ...(prevState.isUnpaidBillsOpen && { isUnpaidBillsOpen: false }),\r\n ...(prevState.isBillAheadOpen && { isBillAheadOpen: false }),\r\n }));\r\n }\r\n\r\n toggleLoadingState = () => {\r\n this.setState(prevState => ({ loading: !prevState.loading }));\r\n };\r\n\r\n toggleAlertState = (extraStates) => {\r\n this.setState(prevState => ({ showAlert: !prevState.showAlert, ...extraStates }));\r\n };\r\n\r\n getPaymentDetails = async (responseCallback, actionType, isRefund, hostedFormData = {}) => {\r\n const {\r\n props: { currentFacility: { data: { publicKey } = {} } = {} } = {}, cardProcessorData,\r\n formProps: {\r\n values, values: { extra: { payUsing } = {} } = {},\r\n status: { modifierValue, amountWithoutModifier, selectedPaymentMethod: { value: { type: selectedPaymentMethod } = {} } = {} } = {},\r\n } = {},\r\n } = this;\r\n let paymentDetails = {};\r\n\r\n if (selectedPaymentMethod === PAYMENT_METHOD.CREDIT_CARD\r\n || selectedPaymentMethod === PAYMENT_METHOD.DEBIT_CARD) {\r\n paymentDetails = await creditCardPreProcessor(values, payUsing, publicKey, cardProcessorData,\r\n isRefund, hostedFormData);\r\n } else if (selectedPaymentMethod === PAYMENT_METHOD.ACH) {\r\n paymentDetails = await achPreProcessor(values, payUsing, publicKey);\r\n } else {\r\n const { extra, achInfo, cardInfo, useCardOnFile, ...restPaymentDetails } = values;\r\n paymentDetails = restPaymentDetails;\r\n }\r\n\r\n if (actionType) {\r\n paymentDetails.referenceNumber = this.referenceNumber;\r\n paymentDetails.action = actionType;\r\n this.referenceNumber = '';\r\n if (actionType === PAYMENT_ACTION.CANCEL_TRANSACTION) {\r\n this.setSnackbarProps(true, localisable.paymentIsCancelled);\r\n // eslint-disable-next-line no-param-reassign\r\n responseCallback = () => { };\r\n }\r\n this.setState({ timeOutMessage: '' });\r\n }\r\n paymentDetails.surchargeOrDiscount = modifierValue;\r\n paymentDetails.amountWithoutModifier = amountWithoutModifier;\r\n return paymentDetails;\r\n }\r\n\r\n isValidPayment = () => {\r\n const {\r\n props: {\r\n source,\r\n isRefund,\r\n financialPayment: {\r\n data: {\r\n data: [{\r\n value:\r\n {\r\n paymentValidation: { isEnabled: validatePayment, validatePaymentsOver } = {},\r\n prepayment: { allowPrepay: { isEnabled: prePayIsEnabled = false } = {} } = {},\r\n } = {},\r\n } = {}] = [],\r\n } = {},\r\n } = {},\r\n } = {},\r\n state: { showPaymentOverAlert } = {},\r\n formProps: {\r\n values: { amount, extra: { ledgerBalance = null } = {} } = {},\r\n status: { amountWithoutModifier = 0, posCartTotal = 0, ledgerInfo: { balance: statusLedgerBalance = 0 } = {} } = {},\r\n } = {},\r\n } = this;\r\n const balance = ledgerBalance || statusLedgerBalance;\r\n if ((!isRefund && !prePayIsEnabled)\r\n && (source === SOURCE.retailSale.value ? round(amountWithoutModifier - posCartTotal) > balance : amountWithoutModifier > balance)) {\r\n this.setState({ prePayError: true });\r\n this.toggleAlertState();\r\n return false;\r\n }\r\n if (validatePayment && Number(amount) && Number(amount) > validatePaymentsOver\r\n && !showPaymentOverAlert) {\r\n this.setState({ showPaymentOverAlert: true });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n onAuthenticationResponse = (apiError, response) => {\r\n const { formProps: { setTouched, setErrors, setStatus } = {} } = this;\r\n const { success, data: { errorMessage: error } = {} } = response || {};\r\n if (apiError || !success) {\r\n let errorMessage = error || localisable.somethingWentWrong;\r\n if (apiError) errorMessage = this.handleErrors(apiError, { setTouched, setErrors, setStatus }, false);\r\n this.errorDetails = { errorMessage };\r\n this.setState({ isButtonLoading: false, showAlert: true });\r\n } else if (response) {\r\n const { data: { authenticationKey } = {} } = response;\r\n this.setState({ authenticationKey }); // Not stopping button loading until hosted form is up.\r\n }\r\n }\r\n\r\n onSubmit = async (_, formActions = {}, actionType, hostedFormData = {}) => {\r\n const {\r\n props: { onAction, isRefund, externalSubmit, currentPrinter: { data: { id: printerId } = {} } = {} } = {}, getPaymentDetails, isValidPayment,\r\n onAuthenticationResponse, isSubmitDisabled, formProps: { setFieldValue, setErrors, setTouched },\r\n state: { isPaymentTokenAvailable = false } = {},\r\n } = this;\r\n\r\n let actions = formActions;\r\n\r\n if (!isObjWithKeys(actions)) actions = { setTouched, setErrors, setFieldValue };\r\n\r\n if (isSubmitDisabled) this.isSubmitDisabled = false;\r\n else if (isObjWithKeys(hostedFormData) || isValidPayment()) {\r\n const tokenType = isPaymentTokenAvailable ? TOKEN_TYPE.PAYMENT : TOKEN_TYPE.STANDARD;\r\n let stateToUpdate = { showPaymentOverAlert: false, authenticationKey: '' };\r\n if (actionType !== PAYMENT_ACTION.CANCEL_TRANSACTION) {\r\n stateToUpdate = { ...stateToUpdate, isButtonLoading: true };\r\n }\r\n this.setState(stateToUpdate);\r\n const responseCallback = (error, response) => this.onPaymentResponse(error, response, actions);\r\n\r\n const apiBody = await getPaymentDetails(responseCallback, actionType, isRefund, hostedFormData);\r\n const { authType, amount: amountToPay, receiptDeliveryMethod } = apiBody;\r\n if (amountToPay) apiBody.amount = amountToPay.toString();\r\n\r\n if (isPrintDeliveryMethod(receiptDeliveryMethod)) {\r\n apiBody.printerId = printerId;\r\n }\r\n\r\n if (authType) {\r\n delete apiBody.surchargeOrDiscount;\r\n delete apiBody.amountWithoutModifier;\r\n authenticateCardProcessorIntegrator(onAction, apiBody, onAuthenticationResponse);\r\n } else if (this.isExternalSubmit && externalSubmit) {\r\n externalSubmit(apiBody, actions, responseCallback);\r\n } else pay(onAction, apiBody, responseCallback, isRefund, tokenType);\r\n }\r\n };\r\n\r\n onPaymentResponse = (apiError, response, actions) => {\r\n const { isRefund } = this.props;\r\n if (apiError) {\r\n const errorMessage = this.handleErrors(apiError, actions, false) || '';\r\n this.errorDetails = { errorMessage };\r\n this.setState({\r\n isButtonLoading: false,\r\n showAlert: true,\r\n ...errorMessage === localisable.prePayNotAllowed && { prePayError: true },\r\n ...errorMessage === localisable.partialPaymentNotAllowedForDelinquentTenant && { delinquentTenantError: true },\r\n });\r\n } else if (response) {\r\n const {\r\n data: {\r\n message = '', ledgerBalance: updatedBalance = 0, referenceNumber, cvvMessage = '',\r\n card: { cvvResponseCode = '', avsResponseCode = '' } = {}, avsMessage = '',\r\n expressResponseCode = '',\r\n } = {},\r\n success,\r\n relationalData: { documentation = {} } = {},\r\n } = response;\r\n if (!success) {\r\n this.errorDetails = { errorMessage: message, responseCode: expressResponseCode };\r\n const updatedState = { isButtonLoading: false, showAlert: true };\r\n if (message.includes(localisable.takingMoreTime)) {\r\n this.referenceNumber = referenceNumber;\r\n updatedState.timeOutMessage = message;\r\n } else if (FAILED_CVV_CODES.includes(cvvResponseCode)) {\r\n this.errorDetails = { errorMessage: cvvMessage, responseCode: cvvResponseCode };\r\n } else if (FAILED_AVS_CODES.includes(avsResponseCode)) {\r\n this.errorDetails = { errorMessage: avsMessage, responseCode: avsResponseCode };\r\n }\r\n this.setState(updatedState);\r\n } else {\r\n this.setSnackbarProps(true, isRefund ? localisable.successRefund : localisable.successPayment);\r\n this.onSuccessfulPayment(updatedBalance, documentation);\r\n }\r\n }\r\n };\r\n\r\n getUpdatedBalanceAfterPayment = (updatedBalance) => {\r\n const { props: { isRefund } = {} } = this;\r\n if (isRefund) {\r\n return updatedBalance < 0 ? -updatedBalance : 0;\r\n }\r\n return updatedBalance > 0 ? updatedBalance : 0;\r\n }\r\n\r\n updateForm = (updatedBalance) => {\r\n const {\r\n formProps: {\r\n values: { extra: { unitList = [] } = {} },\r\n status: { ledgerInfo = {}, ledgerInfo: { id = '', balance: statusLedgerBalance = 0 } = {} } = {},\r\n status, setStatus, setFieldValue,\r\n initialValues: {\r\n cardInfo: initialCardInfo, achInfo: initialAchInfo,\r\n paymentNumber: initialPaymentNumber,\r\n } = {},\r\n },\r\n props: { source, isRefund, setFetchedBalance = EMPTY_FUNC } = {},\r\n resetIsAmountWithoutModifierTouched, getUpdatedBalanceAfterPayment,\r\n } = this;\r\n\r\n const amount = getUpdatedBalanceAfterPayment(updatedBalance);\r\n\r\n ledgerInfo.balance = updatedBalance;\r\n resetIsAmountWithoutModifierTouched();\r\n this.currentStatus = this.initialStatus;\r\n setStatus({ ...status, ledgerInfo });\r\n if (!shouldModifyNegativeAmount(isRefund, unitList, setFieldValue, id, source, updatedBalance || statusLedgerBalance)) {\r\n setFieldValue('extra.amountWithoutModifier', round(amount, 2, true));\r\n }\r\n setFetchedBalance(updatedBalance);\r\n setFieldValue('extra.ledgerBalance', convertToNumber(amount));\r\n setFieldValue('comments', undefined);\r\n setFieldValue('cardInfo', initialCardInfo);\r\n setFieldValue('achInfo', initialAchInfo);\r\n setFieldValue('paymentNumber', initialPaymentNumber);\r\n }\r\n\r\n clearStoreData = () => {\r\n const { props: { clearStoreKeys, clearArStoreKey } = {} } = this;\r\n const storeKeysToClear = [SOURCE.tenant.value, ...clearArStoreKey ? []\r\n : [SOURCE.ar.value, SOURCE.unpaidAr.value]];\r\n if (clearArStoreKey) {\r\n clearArStoreKey(true);\r\n }\r\n clearStoreKeys(storeKeysToClear);\r\n }\r\n\r\n onDocumentFetch = () => {\r\n const {\r\n formProps: { resetForm }, initialValues,\r\n clearStoreData, props: { onPaymentSuccess, onClose = EMPTY_FUNC },\r\n } = this;\r\n clearStoreData();\r\n onClose();\r\n resetForm(initialValues);\r\n onPaymentSuccess();\r\n }\r\n\r\n onSuccessfulPayment = (updatedBalance, documentation) => {\r\n const {\r\n formProps: { resetForm },\r\n props: { onPaymentSuccess, onClose = EMPTY_FUNC, prefilled = false } = {},\r\n initialValues, updateForm, clearStoreData,\r\n } = this;\r\n const stateToUpdate = { isButtonLoading: false };\r\n\r\n updateForm(updatedBalance);\r\n\r\n const documentsWithPreview = {};\r\n Object.keys(documentation).forEach((document) => {\r\n const { deliveryMethod } = documentation[document];\r\n if (deliveryMethod === 'Preview') {\r\n documentsWithPreview[document] = documentation[document];\r\n }\r\n });\r\n\r\n if (Object.keys(documentsWithPreview).length) {\r\n stateToUpdate.documentation = documentation;\r\n } else {\r\n onClose();\r\n clearStoreData();\r\n resetForm(initialValues);\r\n onPaymentSuccess();\r\n }\r\n this.setState({ prefilled, ...stateToUpdate });\r\n };\r\n\r\n getIsAmountWithoutModifierTouched = (isAmountWithoutModifierTouched) => {\r\n this.isAmountWithoutModifierTouched = isAmountWithoutModifierTouched;\r\n };\r\n\r\n getResetIsAmountWithoutModifierTouched = (resetIsAmountWithoutModifierTouchedFunc) => {\r\n this.resetIsAmountWithoutModifierTouched = resetIsAmountWithoutModifierTouchedFunc;\r\n };\r\n\r\n onUpdateLedgerResponse = (apiError, response, actions) => {\r\n this.setState({ isButtonLoading: false });\r\n if (apiError) {\r\n this.handleErrors(apiError, actions);\r\n } else if (response) {\r\n // TODO: Update Success response logic\r\n }\r\n this.toggleLoadingState();\r\n };\r\n\r\n getBillAhead = (ledgerId) => {\r\n const {\r\n props: { onAction, clearStoreKeys }, onLedgerBalance, currency,\r\n setReFetchTenantBalance, setPaymentSnackbarProps,\r\n formProps: { status: { tenantInfo: { unitList = [] } = {} } = {} },\r\n } = this;\r\n return (\r\n \r\n );\r\n };\r\n\r\n getUnpaidBillsList = (ledgerId, { label, balance } = {}) => {\r\n const {\r\n classes, currentFacility: { data: { id: fid } = {} } = {},\r\n currentAccountId: { data: { id: accountId } = {} } = {},\r\n } = this.props;\r\n const { transitionComplete } = this.state;\r\n const { deviceInfo: { isDesktop } = {} } = window;\r\n const selectedLedger = {\r\n id: ledgerId,\r\n label,\r\n balance,\r\n };\r\n return (\r\n <>\r\n this.toggleUnpaidBills()}\r\n className={classes.unpaidBillsCloseButton}\r\n />\r\n {(transitionComplete || !isDesktop) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {localisable.clickHereForMoreDetails}\r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n renderBillAheadOrUnpaidBills = () => {\r\n const { isBillAheadOpen, isUnpaidBillsOpen } = this.state;\r\n const { classes } = this.props;\r\n const {\r\n status: { ledgerInfo: { label = '', balance } = {} } = {},\r\n values: { ledgerId: selectedLedgerId } = {},\r\n } = this.formProps;\r\n return (\r\n (isBillAheadOpen || isUnpaidBillsOpen)\r\n ? (\r\n \r\n {\r\n isBillAheadOpen ? this.getBillAhead(selectedLedgerId)\r\n : this.getUnpaidBillsList(selectedLedgerId, { label, balance })\r\n }\r\n \r\n ) : null\r\n );\r\n };\r\n\r\n onClosePayment = () => {\r\n const { onClose = EMPTY_FUNC, prefilled: prefilledProp = false } = this.props;\r\n const { resetForm } = this.formProps;\r\n const { initialValues } = this;\r\n onClose();\r\n if (resetForm) {\r\n resetForm(initialValues);\r\n }\r\n this.setState({\r\n prefilled: prefilledProp,\r\n isBillAheadOpen: false,\r\n isUnpaidBillsOpen: false,\r\n });\r\n };\r\n\r\n getOnLedgerBalance = (onLedgerBalance) => {\r\n this.onLedgerBalance = onLedgerBalance;\r\n };\r\n\r\n getAutoSuggestRef = (autoSuggestRef) => {\r\n this.autoSuggestRef = autoSuggestRef;\r\n };\r\n\r\n setReFetchTenantBalance = (value) => {\r\n this.reFetchTenantBalance = value;\r\n };\r\n\r\n setPaymentSnackbarProps = (isSnackbarOpen, title, variant) => {\r\n this.setSnackbarProps(isSnackbarOpen, title, variant);\r\n };\r\n\r\n getPaymentFooter = () => {\r\n const { positiveButtonProps, negativeButtonProps, FooterProps } = getFooterProps(this);\r\n return this.getFooter({\r\n positiveButtonProps,\r\n negativeButtonProps,\r\n ...FooterProps,\r\n });\r\n };\r\n\r\n onPaymentAlertYesAction = () => {\r\n const { onClose = EMPTY_FUNC } = this.props;\r\n this.toggleAlertState({ isBillAheadOpen: false });\r\n if (onClose) {\r\n this.onClosePayment();\r\n } else {\r\n this.onAlertYesAction();\r\n }\r\n };\r\n\r\n getErrorMessage = () => {\r\n const {\r\n errorDetails: { errorMessage, responseCode } = {}, props: { classes, isRefund } = {},\r\n state: { prePayError },\r\n } = this;\r\n return (\r\n \r\n \r\n \r\n {isRefund ? localisable.refundFailedTitle : localisable.paymentFailed}\r\n \r\n {responseCode\r\n && (\r\n \r\n {localisable.rejectionCode}{': '}{responseCode}\r\n \r\n )\r\n }\r\n \r\n {localisable.reason}{': '}{prePayError ? localisable.prePayNotAllowed : errorMessage}\r\n \r\n \r\n );\r\n }\r\n\r\n onExit = () => {\r\n const {\r\n onPaymentAlertYesAction,\r\n props: { setSellAndPayLoading = EMPTY_FUNC } = {},\r\n } = this;\r\n this.errorDetails = {};\r\n onPaymentAlertYesAction();\r\n setSellAndPayLoading(false);\r\n }\r\n\r\n onTryDifferentMethod = () => {\r\n const { openPaymentMethod } = this;\r\n this.errorDetails = {};\r\n openPaymentMethod();\r\n this.setState({ showAlert: false });\r\n }\r\n\r\n onEditAmount = () => {\r\n const {\r\n formProps: {\r\n values: { extra: { unitList = [], ledgerBalance = null } = {} } = {},\r\n setFieldValue,\r\n status: { posCartTotal = 0, ledgerInfo: { id = '', balance = 0 } = {} } = {},\r\n } = {},\r\n props: { setSellAndPayLoading = EMPTY_FUNC } = {},\r\n props: { source } = {},\r\n } = this;\r\n let ledgerBalanceTemp = ledgerBalance || balance;\r\n if (ledgerBalanceTemp <= 0) {\r\n ledgerBalanceTemp = source === SOURCE.retailSale.value ? 0 : calculateNextAmountPayable(unitList, id);\r\n }\r\n setFieldValue('extra.amountWithoutModifier', round(convertToNumber(ledgerBalanceTemp) + convertToNumber(posCartTotal), 2, true));\r\n this.setState({ showAlert: false, prePayError: false, delinquentTenantError: false });\r\n setSellAndPayLoading(false);\r\n }\r\n\r\n getAlertActions = () => {\r\n const {\r\n errorDetails: { errorMessage } = {}, onPaymentAlertYesAction,\r\n state: { prePayError, delinquentTenantError },\r\n onExit, onTryDifferentMethod, onEditAmount, onDelinquentTenantAlertClose,\r\n props: { classes },\r\n } = this;\r\n\r\n const errorType = getErrorType(prePayError, delinquentTenantError, errorMessage);\r\n const actionList = getErrorActionList(errorType, classes, {\r\n onExit,\r\n onTryDifferentMethod,\r\n onEditAmount,\r\n onDelinquentTenantAlertClose,\r\n onPaymentAlertYesAction,\r\n });\r\n\r\n return (\r\n <>\r\n {\r\n actionList.map(({ label, onClick, otherProps = {} }) => (\r\n \r\n {label}\r\n \r\n ))\r\n }\r\n \r\n );\r\n }\r\n\r\n disableFormSubmit = (shouldDisable = true) => { this.isSubmitDisabled = shouldDisable; }\r\n\r\n closeHostedForm = () => {\r\n this.setState({ isButtonLoading: false });\r\n this.disableFormSubmit(false);\r\n }\r\n\r\n onPaymentLoginSuccess = () => {\r\n const { isLoginRequired } = this.state;\r\n const { enableFooterButtons = EMPTY_FUNC } = this.props;\r\n const paymentToken = getCookie(COOKIE_KEY.PAYMENT_TOKEN);\r\n if (isLoginRequired) {\r\n if (paymentToken) {\r\n this.setState({ isLoginRequired: false, isPaymentTokenAvailable: true });\r\n enableFooterButtons();\r\n } else {\r\n this.setState({ isLoginRequired: true });\r\n }\r\n }\r\n }\r\n\r\n isUserLoggedIn = () => {\r\n const { isLoginRequired, isPaymentTokenAvailable } = this.state;\r\n return !isLoginRequired && isPaymentTokenAvailable;\r\n }\r\n\r\n renderLogin = () => {\r\n const {\r\n props: { source: _, ...props },\r\n props: {\r\n classes,\r\n userProfile: {\r\n data: {\r\n data: [\r\n { email = '' },\r\n ],\r\n accountNumber: currentAccountNumber = '',\r\n },\r\n }, shouldFocusPayment = true, isRefund,\r\n },\r\n state: { isLoginRequired, isPaymentTokenAvailable }, onPaymentLoginSuccess,\r\n } = this;\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n submitHostedForm = (hostedFormData = {}) => {\r\n const { onSubmit } = this;\r\n onSubmit(undefined, undefined, undefined, hostedFormData);\r\n }\r\n\r\n onShouldShowAlertClose = () => {\r\n const { props: { setSellAndPayLoading = EMPTY_FUNC } = {}, toggleAlertState } = this;\r\n toggleAlertState();\r\n setSellAndPayLoading(false);\r\n }\r\n\r\n onDelinquentTenantAlertClose = () => {\r\n this.onShouldShowAlertClose();\r\n this.errorDetails = {};\r\n this.setState({ delinquentTenantError: false });\r\n }\r\n\r\n onPaymentOverAlertClose = () => {\r\n const { props: { setSellAndPayLoading = EMPTY_FUNC } = {} } = this;\r\n this.setState({ showPaymentOverAlert: false });\r\n setSellAndPayLoading(false);\r\n }\r\n\r\n togglePromoPlan = () => {\r\n this.setState(prevState => ({ isPromoPlanOpen: !prevState.isPromoPlanOpen }));\r\n }\r\n\r\n onUpdatePromoPlanResponse = (apiError, response) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n } else if (response) {\r\n this.tenantInformationComponentKey = Date.now();\r\n this.setSnackbarProps(true, localisable.promoPlansUpdated);\r\n }\r\n this.setState({ pageLoading: false });\r\n }\r\n\r\n submitPromoPlansData = (promoPlanData) => {\r\n const { props: { onAction } = {}, onUpdatePromoPlanResponse } = this;\r\n this.setState({ pageLoading: true });\r\n updatedPromoPlans(onAction, promoPlanData, onUpdatePromoPlanResponse);\r\n }\r\n\r\n getCurrentStatus = () => this.currentStatus\r\n\r\n updateCurrentStatus = (status = {}) => {\r\n this.currentStatus = { ...this.currentStatus, ...status };\r\n }\r\n\r\n renderComponent() {\r\n const {\r\n props: {\r\n classes, onAction, permission = {}, showTenantInformation, shouldShowAlert = true,\r\n financialPayment: { data: { data: [{ value: payment = {} } = {}] = [] } = {} } = {},\r\n showFooter, PageProps: { md = false, lg = false, ...PageProps } = {}, open = true,\r\n getFormProps, isMaskVisible = false, showOnlyTenantName = false, pageTitle, fitPage = false,\r\n header, showHeader = true, source, clearStoreKeys, loaderComponent, match: { url } = {},\r\n ...props\r\n },\r\n state: {\r\n paymentMethod: { data: { data: paymentMethods = [] } = {} } = {},\r\n isUnpaidBillsOpen, isBillAheadOpen, showAlert, prefilled,\r\n isButtonLoading, timeOutMessage, showPaymentOverAlert = false,\r\n prePayError, authenticationKey, isPromoPlanOpen = false, pageLoading = false,\r\n documentation = {}, fetchingAmountField,\r\n }, formProps: { dirty = false }, cardProcessorData, initialStatus,\r\n tenantInfo, ledgerId, tenantId, ledgerInfo, toggleBillAhead, currency, onSubmit, getAlertActions,\r\n initialValues, onClosePayment, toggleLoadingState, errorDetails: { errorMessage } = {}, submitHostedForm,\r\n toggleAlertState, onShouldShowAlertClose, onPaymentOverAlertClose, reFetchTenantBalance, setPrefilledFalse,\r\n toggleUnpaidBills, renderBillAheadOrUnpaidBills, closeBillAheadOrUnpaidBillsModal, getErrorMessage,\r\n getFuncToOpenPaymentMethod, getIsAmountWithoutModifierTouched, isAmountWithoutModifierTouched,\r\n getResetIsAmountWithoutModifierTouched, renderLogin, isUserLoggedIn, disableFormSubmit, closeHostedForm,\r\n togglePromoPlan, getOnLedgerBalance, getAutoSuggestRef, promoPlanData = {}, submitPromoPlansData,\r\n tenantInformationComponentKey, onDocumentFetch, updateCurrentStatus, getCurrentStatus, setFetchingAmountField,\r\n } = this;\r\n let { props: { showModal = true, showLoader = true } } = this;\r\n const { currentFacility: { data: { id: fid } = {} } = {} } = props;\r\n const { deviceInfo: { isDesktop } } = window;\r\n if (!isDesktop) {\r\n showModal = false;\r\n showLoader = prefilled;\r\n }\r\n return (\r\n <>\r\n \r\n {\r\n this.formProps = formProps;\r\n if (getFormProps) {\r\n getFormProps(formProps);\r\n }\r\n const {\r\n status: { tenantInfo: { id: selectedTenantId = '' } = {} } = {},\r\n values: { ledgerId: selectedLedgerId, extra: { unitUpdateTime } = {} } = {},\r\n } = formProps;\r\n const paymentComponent = (\r\n \r\n \r\n {\r\n isMaskVisible\r\n && \r\n }\r\n {\r\n showLoader && !selectedLedgerId\r\n && (\r\n \r\n {\r\n loaderComponent || \r\n }\r\n \r\n )\r\n }\r\n
\r\n \r\n )}\r\n footer={showFooter && this.getPaymentFooter()}\r\n md={md}\r\n lg={lg}\r\n loading={pageLoading}\r\n bodyClassName={classes.body}\r\n className={clsx(classes.whiteBackground,\r\n { [classes.noDisplay]: showLoader && !selectedLedgerId })}\r\n title={pageTitle || localisable.paymentLabel}\r\n headerClassName={classes.pageHeader}\r\n {...PageProps}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isDesktop\r\n ? (\r\n this.setState({ transitionComplete: true })}\r\n >\r\n \r\n {renderBillAheadOrUnpaidBills()\r\n }\r\n \r\n \r\n )\r\n : (\r\n \r\n {renderBillAheadOrUnpaidBills()}\r\n \r\n )\r\n }\r\n \r\n );\r\n return showModal\r\n ? (\r\n \r\n {!isMaskVisible && !isLiveData(url) && renderLogin()}\r\n {paymentComponent}\r\n \r\n )\r\n : (\r\n
\r\n {!isMaskVisible && !isLiveData(url) && renderLogin()}\r\n {paymentComponent}\r\n
\r\n );\r\n }}\r\n />\r\n \r\n {\r\n errorMessage || prePayError\r\n ? getErrorMessage()\r\n : {localisable.discardConfirmation}\r\n }\r\n \r\n \r\n \r\n {localisable.noEditAmount.toUpperCase()}\r\n \r\n \r\n {localisable.yesPay.toUpperCase()}\r\n \r\n \r\n )}\r\n >\r\n <>\r\n {localisable.amountMoreThanConfiguredAlertMessagePart1}\r\n {localisable.amountMoreThanConfiguredAlertMessagePart2}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nPayment.propTypes = {\r\n classes: PropTypes.object,\r\n ledgerInfo: PropTypes.object,\r\n tenantInfo: PropTypes.object,\r\n showFooter: PropTypes.bool,\r\n PageProps: PropTypes.object,\r\n onPaymentSuccess: PropTypes.func,\r\n source: PropTypes.string,\r\n isRefund: PropTypes.bool,\r\n ignoreWsMessage: PropTypes.bool,\r\n loaderComponent: PropTypes.node,\r\n shouldFocusPayment: PropTypes.bool,\r\n};\r\n\r\nPayment.defaultProps = {\r\n ignoreWsMessage: false,\r\n showFooter: true,\r\n showRTNS: true,\r\n onPaymentSuccess: () => { },\r\n};\r\nPayment.contextType = WSUpdatePropsContext;\r\n\r\nconst PaymentComp = withStyles(PaymentStyle)(Payment);\r\nconst SmartPaymentComp = window.withProvider('Payment', {}, false);\r\n\r\nexport default PaymentComp;\r\nexport { SmartPaymentComp as Payment };\r\n","import useRouter from 'Commons/components/business/provider/useRouter';\r\n\r\nexport function withRouter(Component) {\r\n const CustomWithRouter = (props) => {\r\n const { match: { path } = {} } = props || {};\r\n const { location, match, history } = useRouter(path);\r\n\r\n return ;\r\n };\r\n\r\n CustomWithRouter.propTypes = { match: PropTypes.string };\r\n\r\n return CustomWithRouter;\r\n}\r\n","const TenantFormContext = React.createContext();\r\n\r\nexport default TenantFormContext;\r\n","import { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Flags from 'country-flag-icons/react/3x2';\r\nimport {\r\n InputAdornment, IconButton,\r\n Menu, NativeSelect, withStyles, Divider,\r\n} from 'Generic/componentlibrary/components/Components';\r\nimport { debounce } from 'Commons/helpers/utils/Utils';\r\nimport { memoize } from 'Commons/helpers/Memoize';\r\nimport { TextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport Form from 'Commons/components/generic/form/components/Form';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { getIn } from 'Commons/helpers/utils/DataHelpers';\r\nimport { getPlainPhoneNumber } from 'External/containers/tenant/form/utils/Utils';\r\nimport countryData from '../config/CountryData';\r\nimport Item from './Item';\r\nimport PhoneNumberStyles from '../styles/PhoneNumberStyles';\r\nimport { PHONE_FIELDS } from '../config/Constants';\r\nimport { TEXT_SUPPORTED_COUNTRIES } from '../../formcomponents/contact/config/Constants';\r\n\r\n// Reference - https://github.com/alexplumb/material-ui-phone-number/blob/master/src/components/index.jsx\r\n\r\n// TODO: Convert to Functional Component\r\nclass MaterialUiPhoneNumber extends React.Component {\r\n flags = {};\r\n\r\n guessSelectedCountry = memoize((inputNumber, onlyCountries, defaultCountry, isInitial = false) => {\r\n const secondBestGuess = onlyCountries.find(({ iso2 }) => iso2 === defaultCountry) || {};\r\n if (inputNumber.trim() === '') return secondBestGuess;\r\n let bestGuess = onlyCountries.reduce((selectedCountry, country) => {\r\n if (inputNumber.startsWith(country.dialCode)) {\r\n if (country.dialCode.length > selectedCountry.dialCode.length) {\r\n return country;\r\n }\r\n if (country.dialCode.length === selectedCountry.dialCode.length\r\n && country.priority < selectedCountry.priority) {\r\n return country;\r\n }\r\n }\r\n return selectedCountry;\r\n }, { dialCode: '', priority: 10001 }, this);\r\n if (isInitial) {\r\n bestGuess = secondBestGuess;\r\n }\r\n if (!bestGuess.name) return secondBestGuess;\r\n return bestGuess;\r\n });\r\n\r\n constructor(props) {\r\n super(props);\r\n let filteredCountries = countryData.allCountries;\r\n\r\n if (props.disableAreaCodes) filteredCountries = this.deleteAreaCodes(filteredCountries);\r\n if (props.regions) filteredCountries = this.filterRegions(props.regions, filteredCountries);\r\n\r\n const onlyCountries = this.excludeCountries(\r\n this.getOnlyCountries(props.onlyCountries, filteredCountries), props.excludeCountries,\r\n );\r\n\r\n const preferredCountries = filteredCountries.filter(country => props.preferredCountries.some(preferredCountry => preferredCountry === country.iso2));\r\n\r\n const { countryCode, areaCode, number } = props.value || {};\r\n\r\n const inputNumber = props.value ? getPlainPhoneNumber({ countryCode, areaCode, number }) : '';\r\n\r\n let countryGuess;\r\n if (inputNumber.length > 1) {\r\n // Country detect by value field\r\n countryGuess = this.guessSelectedCountry(inputNumber.replace(/\\D/g, ''), onlyCountries, props.defaultCountry, true) || 0;\r\n } else if (props.defaultCountry) {\r\n // Default country\r\n countryGuess = onlyCountries.find(({ iso2 }) => props.defaultCountry === iso2) || 0;\r\n } else {\r\n // Empty params\r\n countryGuess = 0;\r\n }\r\n\r\n const countryGuessIndex = countryData.allCountries.findIndex(({ iso2 }) => countryGuess.iso2 === iso2);\r\n const dialCode = (\r\n inputNumber.length < 2\r\n && countryGuess\r\n && !inputNumber.replace(/\\D/g, '').startsWith(countryGuess.dialCode)\r\n ) ? countryGuess.dialCode : '';\r\n\r\n const formattedNumber = (inputNumber === '' && countryGuess === 0) ? ''\r\n : this.formatNumber(\r\n (props.disableCountryCode ? '' : dialCode) + inputNumber.replace(/\\D/g, ''),\r\n countryGuess.name ? countryGuess.format : undefined,\r\n );\r\n\r\n\r\n this.state = {\r\n formattedNumber,\r\n placeholder: props.placeholder,\r\n onlyCountries,\r\n preferredCountries,\r\n defaultCountry: props.defaultCountry,\r\n selectedCountry: countryGuess,\r\n highlightCountryIndex: countryGuessIndex,\r\n queryString: '',\r\n freezeSelection: false,\r\n debouncedQueryStingSearcher: debounce(this.searchCountry, 100),\r\n anchorEl: null,\r\n showAllCountries: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (document.addEventListener) {\r\n document.addEventListener('keydown', this.handleKeydown);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { value: currentValue = {}, clearValuesOnEmpty } = this.props;\r\n const { value: prevValue = {} } = prevProps;\r\n if (clearValuesOnEmpty && Object.keys(prevValue).length && !Object.keys(currentValue).length) { // To check if the value is cleared\r\n this.handleInput(null, '');\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (document.removeEventListener) {\r\n document.removeEventListener('keydown', this.handleKeydown);\r\n }\r\n }\r\n\r\n getProbableCandidate = memoize((queryString) => {\r\n if (!queryString || queryString.length === 0) {\r\n return null;\r\n }\r\n\r\n const { onlyCountries } = this.state;\r\n\r\n // don't include the preferred countries in search\r\n const probableCountries = onlyCountries.filter(country => country.name.toLowerCase().startsWith(queryString.toLowerCase()), this);\r\n return probableCountries[0];\r\n });\r\n\r\n getOnlyCountries = (onlyCountriesArray, filteredCountries) => {\r\n if (onlyCountriesArray.length === 0) return filteredCountries;\r\n\r\n return filteredCountries.filter(country => onlyCountriesArray.some(element => element === country.iso2));\r\n }\r\n\r\n excludeCountries = (selectedCountries, excludedCountries) => {\r\n if (excludedCountries.length === 0) {\r\n return selectedCountries;\r\n }\r\n return selectedCountries.filter(selCountry => !excludedCountries.includes(selCountry.iso2));\r\n }\r\n\r\n filterRegions = (regions, filteredCountries) => {\r\n if (typeof regions === 'string') {\r\n const region = regions;\r\n return filteredCountries.filter(country => country.regions.some(element => element === region));\r\n }\r\n\r\n return filteredCountries.filter((country) => {\r\n const matches = regions.map(region => country.regions.some(element => element === region));\r\n return matches.some(el => el);\r\n });\r\n }\r\n\r\n // Countries array methods\r\n deleteAreaCodes = filteredCountries => filteredCountries.filter(country => country.isAreaCode !== true);\r\n\r\n // Hooks for updated props\r\n updateDefaultCountry = (country) => {\r\n const { onlyCountries } = this.state;\r\n const { disableCountryCode } = this.props;\r\n\r\n const newSelectedCountry = onlyCountries.find(({ iso2 }) => country === iso2);\r\n\r\n this.setState({\r\n defaultCountry: country,\r\n selectedCountry: newSelectedCountry,\r\n formattedNumber: disableCountryCode ? '' : `+${newSelectedCountry.dialCode}`,\r\n });\r\n }\r\n\r\n // View methods\r\n scrollTo = (country) => {\r\n if (!country) { return; }\r\n\r\n const container = this.dropdownContainerRef;\r\n\r\n if (!container || !document.body) { return; }\r\n container.scrollTop = country.offsetTop;\r\n }\r\n\r\n formatNumber = (text, patternArg) => {\r\n const { disableCountryCode, enableLongNumbers, autoFormat } = this.props;\r\n\r\n let pattern;\r\n if (disableCountryCode && patternArg) {\r\n pattern = patternArg.split(' ');\r\n pattern.shift();\r\n pattern = pattern.join(' ');\r\n } else {\r\n pattern = patternArg;\r\n }\r\n\r\n if (!text || text.length === 0) {\r\n return disableCountryCode ? '' : '+';\r\n }\r\n\r\n // for all strings with length less than 3, just return it (1, 2 etc.)\r\n // also return the same text if the selected country has no fixed format\r\n if ((text && text.length < 2) || !pattern || !autoFormat) {\r\n return disableCountryCode ? text : `+${text}`;\r\n }\r\n\r\n const formattedObject = pattern.split('').reduce((acc, character) => {\r\n if (acc.remainingText.length === 0) {\r\n return acc;\r\n }\r\n const { remainingText, formattedText } = acc;\r\n\r\n if (character !== '.') {\r\n return {\r\n formattedText: formattedText + character,\r\n remainingText,\r\n };\r\n }\r\n const formattedChar = remainingText[0];\r\n remainingText.shift();\r\n return {\r\n formattedText: formattedText + formattedChar,\r\n remainingText,\r\n };\r\n }, {\r\n formattedText: '',\r\n remainingText: text.split(''),\r\n });\r\n\r\n let formattedNumber;\r\n if (enableLongNumbers) {\r\n formattedNumber = formattedObject.formattedText + formattedObject.remainingText.join('');\r\n } else {\r\n formattedNumber = formattedObject.formattedText;\r\n }\r\n\r\n // Always close brackets\r\n if (formattedNumber.includes('(') && !formattedNumber.includes(')')) formattedNumber += ')';\r\n return formattedNumber;\r\n }\r\n\r\n // Put the cursor to the end of the input (usually after a focus event)\r\n cursorToEnd = () => {\r\n const { isModernBrowser } = this.props;\r\n\r\n const input = this.inputRef;\r\n if (input) {\r\n input.focus();\r\n if (isModernBrowser) {\r\n const len = input.value.length;\r\n input.setSelectionRange(len, len);\r\n }\r\n }\r\n }\r\n\r\n getElement = index => this.flags[`flag_no_${index}`]\r\n\r\n // return country data from state\r\n getCountryData = (receivedSelectedCountry) => {\r\n let { selectedCountry } = this.state || {};\r\n\r\n if (receivedSelectedCountry) {\r\n selectedCountry = receivedSelectedCountry;\r\n }\r\n\r\n if (!selectedCountry) return {};\r\n\r\n return {\r\n name: selectedCountry.name || '',\r\n dialCode: selectedCountry.dialCode || '',\r\n countryCode: selectedCountry.iso2 || '',\r\n areaCode: selectedCountry.areaCode || '',\r\n countryCodeWithoutAreaCode: selectedCountry.countryCode || '',\r\n areaCodeLength: selectedCountry.hasAreaCodes || 0,\r\n format: selectedCountry.format || '',\r\n };\r\n }\r\n\r\n handleInput = (e, inputValue) => {\r\n let { selectedCountry: newSelectedCountry, freezeSelection } = this.state;\r\n const { selectedCountry, formattedNumber: oldFormattedText, onlyCountries, defaultCountry } = this.state;\r\n const { disableCountryCode, countryCodeEditable, isModernBrowser, onChange } = this.props;\r\n\r\n let formattedNumber = disableCountryCode ? '' : '+';\r\n\r\n if (!countryCodeEditable) {\r\n const updatedInput = `+${newSelectedCountry.dialCode}`;\r\n if (inputValue.length < updatedInput.length) {\r\n return;\r\n }\r\n }\r\n\r\n // Does not exceed 15 digit phone number limit\r\n if (inputValue.replace(/\\D/g, '').length > 15) {\r\n return;\r\n }\r\n\r\n // if the input is the same as before, must be some special key like enter etc.\r\n if (inputValue === oldFormattedText) {\r\n return;\r\n }\r\n\r\n // ie hack\r\n if (e) {\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n }\r\n }\r\n\r\n if (inputValue.length > 0) {\r\n // before entering the number in new format, lets check if the dial code now matches some other country\r\n const inputNumber = inputValue.replace(/\\D/g, '');\r\n\r\n // we don't need to send the whole number to guess the country... only the first 6 characters are enough\r\n // the guess country function can then use memoization much more effectively since the set of input it\r\n // gets has drastically reduced\r\n if (!freezeSelection || selectedCountry.dialCode.length > inputNumber.length) {\r\n const guessedCountry = this.guessSelectedCountry(inputNumber, onlyCountries, defaultCountry);\r\n newSelectedCountry = guessedCountry;\r\n freezeSelection = false;\r\n }\r\n // let us remove all non numerals from the input\r\n formattedNumber = this.formatNumber(inputNumber, newSelectedCountry.format);\r\n }\r\n\r\n let caretPosition = e ? e.target.selectionStart : 0;\r\n const diff = formattedNumber.length - oldFormattedText.length;\r\n this.handleFormFields(formattedNumber, this.getCountryData(newSelectedCountry.dialCode\r\n ? newSelectedCountry\r\n : selectedCountry));\r\n\r\n this.setState({\r\n formattedNumber,\r\n freezeSelection,\r\n selectedCountry: newSelectedCountry.dialCode ? newSelectedCountry : selectedCountry,\r\n }, () => {\r\n if (isModernBrowser) {\r\n if (diff > 0) {\r\n caretPosition -= diff;\r\n }\r\n\r\n const lastChar = formattedNumber.charAt(formattedNumber.length - 1);\r\n\r\n if (lastChar === ')') {\r\n this.inputRef.setSelectionRange(formattedNumber.length - 1, formattedNumber.length - 1);\r\n } else if (caretPosition > 0 && oldFormattedText.length >= formattedNumber.length) {\r\n this.inputRef.setSelectionRange(caretPosition, caretPosition);\r\n }\r\n }\r\n\r\n if (onChange) {\r\n onChange(e, formattedNumber);\r\n }\r\n });\r\n }\r\n\r\n getAreaCode = (formattedNumber, countryAndAreaData = {}) => {\r\n const { countryCodeWithoutAreaCode: countryCode, areaCodeLength } = countryAndAreaData;\r\n const countryCodeLength = countryCode.length;\r\n const digits = formattedNumber.replace(/\\D/g, '');\r\n return areaCodeLength ? digits.substring(countryCodeLength, areaCodeLength + 1) : null;\r\n }\r\n\r\n handleFormFields = (formattedNumber, countryAndAreaData = {}) => {\r\n const { setFieldValue, name, onValidCallback } = this.props;\r\n const { countryCodeWithoutAreaCode, countryCode, format } = countryAndAreaData;\r\n const areaCode = this.getAreaCode(formattedNumber, countryAndAreaData);\r\n const unformattedNumber = formattedNumber.replace(/\\D/g, '');\r\n const number = unformattedNumber.slice(`${areaCode || ''}${countryCodeWithoutAreaCode}`.length);\r\n const enteredNumberLength = unformattedNumber.length;\r\n const numberLength = (format.match(/\\./g) || []).length;\r\n if (setFieldValue) {\r\n setFieldValue(`${name}.${PHONE_FIELDS.COUNTRY_CODE}`, countryCodeWithoutAreaCode);\r\n setFieldValue(`${name}.${PHONE_FIELDS.AREA_CODE}`, areaCode);\r\n setFieldValue(`${name}.${PHONE_FIELDS.COUNTRY}`, countryCode);\r\n setFieldValue(`${name}.${PHONE_FIELDS.NUMBER}`, number);\r\n }\r\n if (enteredNumberLength === numberLength) {\r\n onValidCallback(unformattedNumber, name);\r\n }\r\n }\r\n\r\n handleRefInput = (ref) => {\r\n const { inputRef, InputProps } = this.props;\r\n this.inputRef = ref;\r\n\r\n let refProp;\r\n\r\n if (inputRef) {\r\n refProp = inputRef;\r\n } else if (InputProps && InputProps.ref) {\r\n refProp = InputProps.ref;\r\n }\r\n\r\n if (refProp) {\r\n if (typeof refProp === 'function') {\r\n refProp(ref);\r\n } else {\r\n refProp.current = ref;\r\n }\r\n }\r\n };\r\n\r\n handleInputClick = (e) => {\r\n const { onClick } = this.props;\r\n\r\n if (onClick) {\r\n onClick(e, this.getCountryData());\r\n }\r\n }\r\n\r\n handleFlagItemClick = (e, country) => {\r\n const { error, formattedNumber, selectedCountry } = this.state;\r\n const { onChange } = this.props;\r\n\r\n const currentSelectedCountry = selectedCountry;\r\n const nextSelectedCountry = country;\r\n\r\n const unformattedNumber = formattedNumber.replace(' ', '').replace('(', '').replace(')', '').replace('-', '');\r\n const newNumber = !error && unformattedNumber.length > 1 ? unformattedNumber.replace(currentSelectedCountry.dialCode, nextSelectedCountry.dialCode) : nextSelectedCountry.dialCode;\r\n\r\n const newFormattedNumber = this.formatNumber(newNumber.replace(/\\D/g, ''), nextSelectedCountry.format);\r\n this.handleFormFields(newFormattedNumber, this.getCountryData(nextSelectedCountry));\r\n\r\n const numberLength = nextSelectedCountry.format ? (nextSelectedCountry.format.match(/\\./g) || []).length : 0;\r\n const enteredNumberLength = newNumber.length;\r\n\r\n this.setState({\r\n anchorEl: null,\r\n selectedCountry: nextSelectedCountry,\r\n formattedNumber: newFormattedNumber,\r\n freezeSelection: true, // Freezing Country Selection upon selection of dropdown\r\n error: enteredNumberLength < numberLength ? `Total number of digits should be ${numberLength}` : '',\r\n }, () => {\r\n this.cursorToEnd();\r\n if (onChange) {\r\n onChange(e, newFormattedNumber);\r\n }\r\n });\r\n }\r\n\r\n handleInputFocus = (e) => {\r\n const { selectedCountry } = this.state;\r\n const { disableCountryCode, onFocus } = this.props;\r\n\r\n // if the input is blank, insert dial code of the selected country\r\n if (this.inputRef) {\r\n if (this.inputRef.value === '+' && selectedCountry && !disableCountryCode) {\r\n this.setState({ formattedNumber: `+${selectedCountry.dialCode}` }, () => setTimeout(this.cursorToEnd, 10));\r\n }\r\n }\r\n\r\n this.setState({ placeholder: '' });\r\n\r\n if (onFocus) {\r\n onFocus(e, this.getCountryData());\r\n }\r\n\r\n setTimeout(this.cursorToEnd, 10);\r\n }\r\n\r\n handleInputBlur = (e) => {\r\n const { placeholder, setFieldTouched, touched, name } = this.props;\r\n\r\n if (!e.target.value) {\r\n this.setState({ placeholder });\r\n }\r\n\r\n const phoneTouched = getIn(touched, name) || {};\r\n const phoneFields = Object.values(PHONE_FIELDS);\r\n\r\n const isPhoneTouched = phoneFields.some(fieldName => phoneTouched[fieldName]);\r\n if (!isPhoneTouched) {\r\n phoneFields.forEach((fieldName) => {\r\n setFieldTouched(`${name}.${fieldName}`, true, false);\r\n });\r\n }\r\n }\r\n\r\n getHighlightCountryIndex = (direction) => {\r\n const { highlightCountryIndex: oldHighlightCountryIndex, onlyCountries, preferredCountries } = this.state;\r\n\r\n // had to write own function because underscore does not have findIndex. lodash has it\r\n const highlightCountryIndex = oldHighlightCountryIndex + direction;\r\n\r\n if (highlightCountryIndex < 0 || highlightCountryIndex >= (onlyCountries.length + preferredCountries.length)) {\r\n return highlightCountryIndex - direction;\r\n }\r\n\r\n return highlightCountryIndex;\r\n }\r\n\r\n searchCountry = () => {\r\n const { queryString, onlyCountries, preferredCountries } = this.state;\r\n\r\n const probableCandidate = this.getProbableCandidate(queryString) || onlyCountries[0];\r\n const probableCandidateIndex = onlyCountries.findIndex(({ iso2 }) => probableCandidate.iso2 === iso2) + preferredCountries.length;\r\n\r\n this.scrollTo(this.getElement(probableCandidateIndex), true);\r\n\r\n this.setState({ queryString: '', highlightCountryIndex: probableCandidateIndex });\r\n }\r\n\r\n handleKeydown = (e) => {\r\n const {\r\n anchorEl, highlightCountryIndex, preferredCountries, onlyCountries,\r\n queryString, debouncedQueryStingSearcher,\r\n } = this.state;\r\n const { keys, disabled } = this.props;\r\n\r\n if (!anchorEl || disabled) return;\r\n\r\n // ie hack\r\n if (e.preventDefault) {\r\n e.preventDefault();\r\n } else {\r\n e.returnValue = false;\r\n }\r\n\r\n const moveHighlight = (direction) => {\r\n this.setState({ highlightCountryIndex: this.getHighlightCountryIndex(direction) }, () => {\r\n this.scrollTo(this.getElement(\r\n highlightCountryIndex + preferredCountries.length,\r\n ), true);\r\n });\r\n };\r\n\r\n switch (e.which) {\r\n case keys.DOWN:\r\n moveHighlight(1);\r\n break;\r\n case keys.UP:\r\n moveHighlight(-1);\r\n break;\r\n case keys.ENTER:\r\n this.handleFlagItemClick(e, onlyCountries[highlightCountryIndex]);\r\n break;\r\n case keys.ESC:\r\n this.setState({ anchorEl: null }, this.cursorToEnd);\r\n break;\r\n default:\r\n if ((e.which >= keys.A && e.which <= keys.Z) || e.which === keys.SPACE) {\r\n this.setState({ queryString: queryString + String.fromCharCode(e.which) }, debouncedQueryStingSearcher);\r\n }\r\n }\r\n }\r\n\r\n handleInputKeyDown = (e) => {\r\n const { keys, onEnterKeyPress, onKeyDown } = this.props;\r\n if (e.which === keys.ENTER && onEnterKeyPress) {\r\n onEnterKeyPress(e);\r\n }\r\n\r\n if (onKeyDown) {\r\n onKeyDown(e);\r\n }\r\n }\r\n\r\n checkIfValid = () => {\r\n const { formattedNumber } = this.state;\r\n const { isValid } = this.props;\r\n\r\n return isValid(formattedNumber.replace(/\\D/g, ''));\r\n };\r\n\r\n updateFormattedNumber = (number) => {\r\n const { onlyCountries, defaultCountry } = this.state;\r\n const { disableCountryCode } = this.props;\r\n\r\n let countryGuess;\r\n let inputNumber = number;\r\n let formattedNumber = number;\r\n\r\n // if inputNumber does not start with '+', then use default country's dialing prefix,\r\n // otherwise use logic for finding country based on country prefix.\r\n if (!inputNumber.startsWith('+')) {\r\n countryGuess = onlyCountries.find(({ iso2 }) => defaultCountry === iso2);\r\n const dialCode = countryGuess && !inputNumber.replace(/\\D/g, '').startsWith(countryGuess.dialCode) ? countryGuess.dialCode : '';\r\n formattedNumber = this.formatNumber(\r\n (disableCountryCode ? '' : dialCode) + inputNumber.replace(/\\D/g, ''),\r\n countryGuess ? countryGuess.format : undefined,\r\n );\r\n } else {\r\n inputNumber = inputNumber.replace(/\\D/g, '');\r\n const guessedCountry = this.guessSelectedCountry(inputNumber, onlyCountries, defaultCountry);\r\n countryGuess = guessedCountry;\r\n\r\n formattedNumber = this.formatNumber(inputNumber, countryGuess.format);\r\n }\r\n\r\n this.setState({ selectedCountry: countryGuess, formattedNumber });\r\n };\r\n\r\n getDropdownProps = () => {\r\n const { selectedCountry, anchorEl, preferredCountries, onlyCountries, showAllCountries } = this.state;\r\n\r\n const {\r\n classes, dropdownClass, localization, disabled,\r\n native, keepCountries,\r\n } = this.props;\r\n\r\n onlyCountries.sort((a, b) => {\r\n const localizedA = localization[a.name] || a.name;\r\n const localizedB = localization[b.name] || b.name;\r\n return localizedA.localeCompare(localizedB);\r\n });\r\n\r\n const isSelected = country => Boolean(selectedCountry && selectedCountry.iso2 === country.iso2);\r\n\r\n const FlagComponent = Flags[selectedCountry.iso2.toUpperCase()];\r\n\r\n const dropdownProps = disabled ? {} : {\r\n startAdornment: (\r\n \r\n {native ? (\r\n <>\r\n this.setState({ anchorEl: null })}\r\n className={classes.native}\r\n classes={{\r\n root: clsx(classes.nativeRoot, 'native'),\r\n select: classes.nativeSelect,\r\n }}\r\n onChange={e => this.handleFlagItemClick(e, e.target.value)}\r\n IconComponent={Boolean(FlagComponent) && FlagComponent}\r\n disableUnderline\r\n >\r\n {!!preferredCountries.length && preferredCountries.map((country, index) => (\r\n {\r\n this.flags[`flag_no_${index}`] = node;\r\n }}\r\n name={country.name}\r\n iso2={country.iso2}\r\n dialCode={country.dialCode}\r\n localization={localization && localization[country.name]}\r\n native\r\n />\r\n ))}\r\n\r\n {onlyCountries.map((country, index) => (\r\n {\r\n this.flags[`flag_no_${index}`] = node;\r\n }}\r\n name={country.name}\r\n iso2={country.iso2}\r\n dialCode={country.dialCode}\r\n localization={localization && localization[country.name]}\r\n native\r\n />\r\n ))}\r\n \r\n \r\n )\r\n : (\r\n <>\r\n this.setState({ anchorEl: e.currentTarget })}\r\n aria-haspopup\r\n >\r\n {Boolean(FlagComponent) && }\r\n \r\n\r\n this.setState({ anchorEl: null })}\r\n >\r\n {/* TODO: Uncomment this when area code needs to be shown */}\r\n {/* {!!preferredCountries.length && preferredCountries.map((country, index) => (\r\n {\r\n this.flags[`flag_no_${index}`] = node;\r\n }}\r\n selected={isSelected(country)}\r\n onClick={e => this.handleFlagItemClick(e, country)}\r\n name={country.name}\r\n iso2={country.iso2}\r\n dialCode={country.dialCode}\r\n localization={localization && localization[country.name]}\r\n className={classes.flagIcon}\r\n />\r\n ))}\r\n\r\n {!!preferredCountries.length && } */}\r\n\r\n {onlyCountries.filter(({ iso2 }) => showAllCountries || keepCountries.includes(iso2)).map((country, index) => (\r\n {\r\n this.flags[`flag_no_${index}`] = node;\r\n }}\r\n selected={isSelected(country)}\r\n onClick={e => this.handleFlagItemClick(e, country)}\r\n name={country.name}\r\n iso2={country.iso2}\r\n dialCode={country.dialCode}\r\n localization={localization && localization[country.name]}\r\n className={classes.flagIcon}\r\n />\r\n ))}\r\n \r\n { this.setState({ showAllCountries: !showAllCountries }); }}\r\n className={classes.showAllCountries}\r\n >\r\n \r\n {showAllCountries ? localisable.showLess : localisable.showMore}\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ),\r\n };\r\n\r\n return dropdownProps;\r\n };\r\n\r\n render() {\r\n const { placeholder: statePlaceholder, formattedNumber } = this.state;\r\n\r\n const {\r\n // start placeholder props\r\n native, defaultCountry, excludeCountries, onlyCountries, preferredCountries,\r\n dropdownClass, autoFormat, disableAreaCodes, isValid, disableCountryCode,\r\n disableDropdown, enableLongNumbers, countryCodeEditable, onEnterKeyPress,\r\n isModernBrowser, classes, keys, localization, placeholder, regions, onChange,\r\n setFieldValue, setFieldTouched, validate, value, onBlur,\r\n // end placeholder props\r\n className, error, InputProps, baseFieldName, initialValue, onValidCallback, label,\r\n ...restProps\r\n } = this.props;\r\n\r\n const dropdownProps = this.getDropdownProps();\r\n\r\n return (\r\n // Using FormTextField instead of TextField to send dynamic data to the validator\r\n \r\n );\r\n }\r\n}\r\n\r\nMaterialUiPhoneNumber.propTypes = {\r\n validate: PropTypes.object,\r\n classes: PropTypes.object,\r\n\r\n keepCountries: PropTypes.arrayOf(PropTypes.string),\r\n excludeCountries: PropTypes.arrayOf(PropTypes.string),\r\n onlyCountries: PropTypes.arrayOf(PropTypes.string),\r\n preferredCountries: PropTypes.arrayOf(PropTypes.string),\r\n defaultCountry: PropTypes.string,\r\n\r\n initialValue: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n error: PropTypes.bool,\r\n variant: PropTypes.string,\r\n native: PropTypes.bool,\r\n\r\n label: PropTypes.string,\r\n className: PropTypes.string,\r\n dropdownClass: PropTypes.string,\r\n InputProps: PropTypes.object,\r\n inputProps: PropTypes.object,\r\n inputRef: PropTypes.func,\r\n\r\n autoFormat: PropTypes.bool,\r\n disableAreaCodes: PropTypes.bool,\r\n disableCountryCode: PropTypes.bool,\r\n disableDropdown: PropTypes.bool,\r\n enableLongNumbers: PropTypes.bool,\r\n countryCodeEditable: PropTypes.bool,\r\n\r\n regions: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.arrayOf(PropTypes.string),\r\n ]),\r\n\r\n localization: PropTypes.object,\r\n\r\n onChange: PropTypes.func,\r\n onFocus: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n onClick: PropTypes.func,\r\n onKeyDown: PropTypes.func,\r\n\r\n isValid: PropTypes.func,\r\n isModernBrowser: PropTypes.func,\r\n onEnterKeyPress: PropTypes.func,\r\n keys: PropTypes.object,\r\n form: PropTypes.object,\r\n baseFieldName: PropTypes.string, // path to the field to store the formatted phone number in the broke down format i.e. { area_code, country_code, number, country }.\r\n name: PropTypes.string,\r\n setFieldValue: PropTypes.func,\r\n setFieldTouched: PropTypes.func,\r\n touched: PropTypes.object,\r\n value: PropTypes.object,\r\n onValidCallback: PropTypes.func,\r\n clearValuesOnEmpty: PropTypes.bool,\r\n};\r\n\r\nMaterialUiPhoneNumber.defaultProps = {\r\n keepCountries: TEXT_SUPPORTED_COUNTRIES,\r\n excludeCountries: [],\r\n onlyCountries: [],\r\n preferredCountries: [],\r\n defaultCountry: 'us',\r\n\r\n placeholder: '+1 (702) 123-4567',\r\n disabled: false,\r\n error: false,\r\n variant: 'standard',\r\n native: false,\r\n\r\n label: '',\r\n className: '',\r\n dropdownClass: '',\r\n\r\n autoFormat: true,\r\n disableAreaCodes: false,\r\n isValid: inputNumber => countryData.allCountries.some(country => inputNumber.startsWith(country.dialCode) || country.dialCode.startsWith(inputNumber)),\r\n disableCountryCode: false,\r\n disableDropdown: false,\r\n enableLongNumbers: false,\r\n countryCodeEditable: true,\r\n\r\n regions: '',\r\n\r\n localization: {},\r\n\r\n onEnterKeyPress: () => { },\r\n onChange: () => { },\r\n onValidCallback: () => { },\r\n\r\n isModernBrowser: () => (document.createElement ? Boolean(document.createElement('input').setSelectionRange) : false),\r\n\r\n keys: {\r\n UP: 38,\r\n DOWN: 40,\r\n RIGHT: 39,\r\n LEFT: 37,\r\n ENTER: 13,\r\n ESC: 27,\r\n PLUS: 43,\r\n A: 65,\r\n Z: 90,\r\n SPACE: 32,\r\n },\r\n};\r\n\r\nconst StyledPhoneNumber = withStyles(PhoneNumberStyles)(MaterialUiPhoneNumber);\r\nconst PhoneNumberForm = Form(StyledPhoneNumber, {}, { error: true });\r\nconst FormPhoneNumberField = ({ validate, ...props }) => (\r\n \r\n);\r\n\r\nFormPhoneNumberField.propTypes = { validate: PropTypes.object };\r\n\r\nexport { FormPhoneNumberField };\r\n","const WSChangeGroupContext = React.createContext();\r\n\r\nexport default WSChangeGroupContext;\r\n","import { memo, useEffect, useState } from 'react';\r\nimport ThreeDotProgress from 'Generic/threedotprogress/components/ThreeDotProgress';\r\nimport { renderInPdf } from 'Commons/components/business/report/utils/Utils';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport DocumentFetcherStyles from '../styles/DocumentFetcherStyles';\r\nimport { INTERVAL, RETRY } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(DocumentFetcherStyles, { name: 'DocumentFetcherStyles' });\r\nconst DocumentFetcher = ({ download, documentation, onClose, retryCount, intervalCount }) => {\r\n const classes = useStyles();\r\n const DialogContentProps = useConstructor(() => ({ classes: { root: classes.dialogContentRoot } }));\r\n const [isFetching, setIsFetching] = useState(false);\r\n\r\n const endPreviewing = (previewCount) => {\r\n if (!previewCount) {\r\n setIsFetching(false);\r\n onClose();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const documentsWithPreview = {};\r\n Object.keys(documentation).forEach((document) => {\r\n const { deliveryMethod } = documentation[document];\r\n if (deliveryMethod === 'Preview') {\r\n documentsWithPreview[document] = documentation[document];\r\n }\r\n });\r\n if (Object.keys(documentsWithPreview).length) {\r\n setIsFetching(true);\r\n let previewCount = Object.keys(documentsWithPreview).length;\r\n Object.values(documentsWithPreview).forEach((document) => {\r\n let documentUrl = document;\r\n if (typeof document === 'object') {\r\n const { url } = document;\r\n documentUrl = url;\r\n }\r\n let retry = retryCount;\r\n const interval = setInterval(() => {\r\n if (retry === 0) {\r\n clearInterval(interval);\r\n previewCount -= 1;\r\n endPreviewing(previewCount);\r\n } else {\r\n fetch(documentUrl).then((res) => { // TODO: Use onAction\r\n if (res.ok) {\r\n if (download) {\r\n window.open(documentUrl);\r\n } else {\r\n renderInPdf(documentUrl, 'Document');\r\n }\r\n clearInterval(interval);\r\n retry = 0;\r\n previewCount -= 1;\r\n endPreviewing(previewCount);\r\n }\r\n });\r\n retry -= 1;\r\n }\r\n }, intervalCount);\r\n });\r\n }\r\n }, [Object.keys(documentation).length]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.fetchingDocuments}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDocumentFetcher.propTypes = {\r\n documentation: PropTypes.object,\r\n onClose: PropTypes.func,\r\n retryCount: PropTypes.number,\r\n intervalCount: PropTypes.number,\r\n download: PropTypes.bool,\r\n};\r\n\r\nDocumentFetcher.defaultProps = {\r\n download: false,\r\n onClose: EMPTY_FUNC,\r\n retryCount: RETRY,\r\n intervalCount: INTERVAL,\r\n};\r\n\r\nexport default memo(DocumentFetcher);\r\n","import media from '../../../../../theme/MediaQueries';\r\n\r\nconst contactStyle = theme => ({\r\n phone: { '& .MuiFormHelperText-root': { marginTop: 0 } },\r\n leftMarginIcon: { margin: 0 },\r\n checkbox: {\r\n marginLeft: 0,\r\n padding: 0,\r\n },\r\n phoneContainer: { '&:hover': { '& $closeButton': { visibility: 'visible' } } },\r\n closeButton: { [media.laptopUp]: { visibility: 'hidden' } },\r\n indicatorPadding: {\r\n padding: 0,\r\n alignItems: 'center',\r\n },\r\n formLabel: { marginRight: 0 },\r\n autoWidth: { width: 'auto' },\r\n iconOrder: { order: 1 },\r\n showAlways: { display: 'block' },\r\n phoneTopMargin: { marginTop: theme.spacing(1) },\r\n tooltipRoot: { display: 'flex' },\r\n leftAlign: { [media.mobile]: { marginLeft: '-7px' } },\r\n smallLeftMargin: { marginLeft: theme.spacing(1.5) },\r\n defaultCursor: { cursor: 'default' },\r\n lightTooltip: {\r\n maxWidth: '500px',\r\n [media.tabletUp]: { marginLeft: '50px' },\r\n [media.laptopUp]: { marginLeft: '200px' },\r\n },\r\n additionalEmailAddress: { margin: theme.spacing(1, 2, 0, 4) },\r\n});\r\n\r\nexport default contactStyle;\r\n","import Typography from 'Generic/typography/components/Typography';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport Icon from '../../../generic/icon/components/Icon';\r\nimport {\r\n Popper,\r\n Paper,\r\n Grid,\r\n withStyles,\r\n ClickAwayListener,\r\n RootRef,\r\n Loader,\r\n} from '../../../generic/componentlibrary/components/Components';\r\nimport tablePaperStyle from '../styles/TablePaperStyle';\r\nimport { TextField } from '../../../generic/textfield/components/TextField';\r\n\r\nclass TablePaper extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { classes } = props;\r\n this.state = {\r\n searchButtonOpen: false,\r\n isInputEmpty: true,\r\n open: false,\r\n };\r\n this.tablePaperHeaderRef = React.createRef();\r\n this.moreIconRef = React.createRef();\r\n this.inputProps = { autoFocus: false };\r\n this.addon = {\r\n start:\r\n ,\r\n };\r\n }\r\n\r\n showClearButton = (shouldShow) => {\r\n const { classes } = this.props;\r\n if (shouldShow) {\r\n this.addon.end = (\r\n this.onChange('')}\r\n color=\"primary\"\r\n size=\"medium\"\r\n />\r\n );\r\n } else {\r\n delete this.addon.end;\r\n }\r\n }\r\n\r\n onClick = () => {\r\n this.setState({ searchButtonOpen: true });\r\n };\r\n\r\n onChange = (event = {}) => {\r\n const { target: { value = '' } = {} } = event;\r\n const inputLength = value.length;\r\n const { onSearchChange } = this.props;\r\n const { isInputEmpty } = this.state;\r\n if (!inputLength) {\r\n this.showClearButton(false);\r\n this.setState({ isInputEmpty: true });\r\n } else if (isInputEmpty) {\r\n this.showClearButton(true);\r\n this.setState({ isInputEmpty: false });\r\n }\r\n this.setState(prevState => (prevState.value !== value ? { value } : null));\r\n onSearchChange(event);\r\n }\r\n\r\n onClickAway = (e) => {\r\n e.stopPropagation();\r\n const { isInputEmpty } = this.state;\r\n if (isInputEmpty) {\r\n this.setState({ searchButtonOpen: false });\r\n }\r\n }\r\n\r\n onClickAwayPaper = (e) => {\r\n this.isMoreIconClickedOnClickAway = e.target === this.moreIconRef.current;\r\n const { onSearchChange } = this.props;\r\n this.setState({ open: false });\r\n onSearchChange();\r\n }\r\n\r\n showOptions = () => {\r\n this.setState({\r\n open: !this.isMoreIconClickedOnClickAway,\r\n searchButtonOpen: false,\r\n }, () => {\r\n this.isMoreIconClickedOnClickAway = false;\r\n });\r\n }\r\n\r\n componentOnClickHandler = (action) => {\r\n const { history } = this.props;\r\n if (typeof action === 'function') {\r\n action();\r\n } else {\r\n history.push(action);\r\n }\r\n }\r\n\r\n renderActionItems = () => {\r\n const { classes, tablePaperComponents = [] } = this.props;\r\n const { deviceInfo: { isDesktop } } = window;\r\n return (\r\n tablePaperComponents.length > 0\r\n && (\r\n \r\n {tablePaperComponents.map(({\r\n isLoading,\r\n isVisible,\r\n name,\r\n icon,\r\n open,\r\n color = 'primary',\r\n component = 'div',\r\n disabled = false,\r\n }) => isVisible && (\r\n\r\n this.componentOnClickHandler(open)}\r\n wrap=\"nowrap\"\r\n >\r\n {\r\n isLoading ? \r\n : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {name}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n ))}\r\n \r\n )\r\n );\r\n }\r\n\r\n renderSearch = () => {\r\n const {\r\n props: { classes, showFilter, openSearchTextField, hideSearch },\r\n state: { searchButtonOpen },\r\n } = this;\r\n\r\n if (hideSearch) {\r\n return null;\r\n }\r\n\r\n if (openSearchTextField === 'always') {\r\n return this.getSearchTextField();\r\n }\r\n\r\n // For openSearchTextField == 'on-click\r\n return (\r\n searchButtonOpen\r\n ? (\r\n \r\n {this.getSearchTextField()}\r\n \r\n )\r\n : (\r\n <>\r\n \r\n {showFilter && (\r\n {\r\n const { onFilterClick = () => { } } = this.props;\r\n onFilterClick();\r\n }}\r\n />\r\n )}\r\n \r\n )\r\n );\r\n }\r\n\r\n getSearchTextField = () => {\r\n const {\r\n props: { classes, searchPlaceholder, searchTextFieldPosition },\r\n state: { value } = {},\r\n addon,\r\n } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n return (searchTextFieldPosition === 'bottom' || isDesktop)\r\n && (\r\n \r\n );\r\n }\r\n\r\n getMoreOptions = () => {\r\n const { classes, tablePaperComponents = [] } = this.props;\r\n return tablePaperComponents.length > 0\r\n && (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n getHeader = () => {\r\n const {\r\n title, classes, renderHeader, rowCount, searchTextFieldPosition, showMoreOption,\r\n headerProps: { className: headerClassName = '', ...headerProps } = {},\r\n } = this.props;\r\n const { deviceInfo: { isDesktop } } = window;\r\n\r\n return (\r\n title\r\n && (\r\n \r\n {renderHeader(rowCount)\r\n || (\r\n \r\n \r\n {title}\r\n {\r\n searchTextFieldPosition === 'bottom'\r\n && (\r\n \r\n {this.renderSearch()}\r\n \r\n )\r\n }\r\n \r\n \r\n {isDesktop || !showMoreOption ? this.renderActionItems() : this.getMoreOptions()}\r\n {\r\n searchTextFieldPosition === 'right'\r\n && (this.renderSearch())\r\n }\r\n \r\n \r\n )\r\n }\r\n \r\n ));\r\n }\r\n\r\n renderPopper() {\r\n const { open = false } = this.state;\r\n const { classes } = this.props;\r\n const anchorEl = this.tablePaperHeaderRef.current;\r\n return (\r\n \r\n \r\n \r\n {this.renderActionItems()}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { open } = this.state;\r\n const {\r\n children, classes, getTablePaperHeaderRef,\r\n fullHeight, pageTitle, isLoading = false, PageProps,\r\n } = this.props;\r\n return (\r\n \r\n \r\n {children}\r\n \r\n {open && this.renderPopper()}\r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nTablePaper.propTypes = {\r\n PageProps: PropTypes.object,\r\n title: PropTypes.node.isRequired,\r\n children: PropTypes.node,\r\n classes: PropTypes.object.isRequired,\r\n searchPlaceholder: PropTypes.node,\r\n onSearchChange: PropTypes.func,\r\n getTablePaperHeaderRef: PropTypes.func,\r\n onFilterClick: PropTypes.func,\r\n showFilter: PropTypes.bool,\r\n hideSearch: PropTypes.bool,\r\n history: PropTypes.any,\r\n tablePaperComponents: PropTypes.array,\r\n renderHeader: PropTypes.func,\r\n rowCount: PropTypes.number,\r\n headerProps: PropTypes.object,\r\n fullHeight: PropTypes.bool,\r\n pageTitle: PropTypes.string,\r\n keepSearchOpen: PropTypes.bool,\r\n SearchTextFieldProps: PropTypes.object,\r\n openSearchTextField: PropTypes.oneOf(['always', 'on-click']),\r\n // NOTE: Position is relative to the table paper title title\r\n searchTextFieldPosition: PropTypes.oneOf(['right', 'bottom']),\r\n isLoading: PropTypes.bool,\r\n showMoreOption: PropTypes.bool,\r\n};\r\n\r\nTablePaper.defaultProps = {\r\n PageProps: {},\r\n searchPlaceholder: 'Search',\r\n onSearchChange: () => { },\r\n getTablePaperHeaderRef: () => { },\r\n showFilter: false,\r\n hideSearch: true,\r\n headerProps: {},\r\n renderHeader: () => { },\r\n fullHeight: false,\r\n openSearchTextField: 'on-click',\r\n searchTextFieldPosition: 'right',\r\n showMoreOption: true,\r\n};\r\n\r\nexport default withStyles(tablePaperStyle)(TablePaper);\r\n","import { EMPTY_STRING, STATUS, VIEW } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport LabelWithAddons from 'Generic/labelwithaddons/components/LabelWithAddons';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { ENTITY_LEVEL_MAPPING } from 'External/containers/configuration/config/EntityLevel';\r\nimport REQUEST_TYPES from 'Commons/config/constants/RequestTypes';\r\nimport { PRINTER_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport PrinterUnavailable from '../../assets/images/PrinterUnavailable.svg';\r\nimport PrinterAvailable from '../../assets/images/PrinterAvailable.svg';\r\nimport PrinterAvailableWhite from '../../assets/images/PrinterAvailableWhite.svg';\r\nimport PrinterUnavailableWhite from '../../assets/images/PrinterUnavailableWhite.svg';\r\n\r\nconst getPrinterAvailableIcon = requireWhite => (requireWhite ? PrinterAvailableWhite : PrinterAvailable);\r\nconst getPrinterUnavailableIcon = requireWhite => (requireWhite ? PrinterUnavailableWhite : PrinterUnavailable);\r\n\r\nconst getPrinterIcon = (isOnline, renderWhite) => (\r\n // \r\n // NOTE: Following is temporary, until we figure out the multi color font icon issue\r\n \r\n \r\n \r\n);\r\n\r\n\r\nconst getPrinterLabel = (\r\n { isOnline, printerName, metaInfo: { printerAlias = EMPTY_STRING } = {} } = {},\r\n addIcon,\r\n renderWhite = false, // NOTE: Temporary until we fix the multi color font icon issue\r\n) => {\r\n const label = printerAlias || printerName;\r\n return (\r\n addIcon\r\n ? (\r\n \r\n {label}\r\n \r\n )\r\n : label\r\n );\r\n};\r\n\r\nconst getPrinterInfo = (err, data, setSnackbarProps, labelWithIcon = false) => {\r\n let defaultPrinterId;\r\n let printerList = [];\r\n const printerObject = {};\r\n if (err) {\r\n setSnackbarProps(true, localisable.somethingWentWrong, VARIANT.error.value);\r\n } else {\r\n printerList = data.map((printerInfo) => {\r\n const { id, isDefault } = printerInfo;\r\n if (isDefault) {\r\n defaultPrinterId = id;\r\n }\r\n printerObject[id] = printerInfo;\r\n return {\r\n label: getPrinterLabel(printerInfo, labelWithIcon),\r\n value: id,\r\n };\r\n });\r\n }\r\n return { defaultPrinterId, printerList, printerObject };\r\n};\r\n\r\nconst callApi = (onAction, endPoint, body, callback = () => {}, customHeaderOptions,\r\n method = 'POST', storeMethod = 'read', store = null, requestType = REQUEST_TYPES.INIT) => {\r\n const api = {\r\n method: storeMethod,\r\n action: {\r\n methodType: method,\r\n endPoint,\r\n body,\r\n ...customHeaderOptions && { customHeaderOptions },\r\n },\r\n };\r\n if (onAction) {\r\n onAction({\r\n config: [{\r\n api,\r\n requestType,\r\n callback,\r\n ...store && { store: { key: store } },\r\n }],\r\n });\r\n }\r\n};\r\n\r\nconst getRequestHeaders = (selectedEntityAndLevel) => {\r\n const { selectedLevel, selectedEntity } = selectedEntityAndLevel || {};\r\n return {\r\n type: 'default',\r\n context: { id: selectedEntity, type: ENTITY_LEVEL_MAPPING[selectedLevel].value },\r\n };\r\n};\r\n\r\nconst fetchPrinter = (onAction,\r\n selectedEntityAndLevel, callback,\r\n requestType = REQUEST_TYPES.INIT, store = 'printer') => {\r\n const customHeader = getRequestHeaders(selectedEntityAndLevel);\r\n const body = { view: VIEW.detail.value, filter: [{ terms: { status: [STATUS.Active.value] } }] };\r\n callApi(onAction, PRINTER_ENDPOINTS.search, body, callback, customHeader, 'POST', 'read', store, requestType);\r\n};\r\n\r\nexport { getPrinterInfo, getPrinterLabel, fetchPrinter, getPrinterIcon };\r\n","/**\r\n * @description A class which keeps unique set of cache, with helper function such as add, delete and isEmpty\r\n */\r\nclass FieldsCache {\r\n constructor() {\r\n this.fields = new Set();\r\n }\r\n\r\n /**\r\n * @description Returns true if the field exist in the cache otherwise false\r\n * @param {string} fieldName\r\n */\r\n has = fieldName => this.fields.has(fieldName);\r\n\r\n /**\r\n * @description Returns the field cache set\r\n */\r\n get = () => this.fields;\r\n\r\n /**\r\n * @description Helper function to add a field into cache\r\n * @param {string} fieldName\r\n */\r\n add = fieldName => this.fields.add(fieldName)\r\n\r\n /**\r\n * @description Helper function to delete a field from cache\r\n * @param {string} fieldName\r\n */\r\n delete = (fieldName) => {\r\n this.fields.delete(fieldName);\r\n }\r\n\r\n /**\r\n * @description Returns true if the cache is empty otherwise false\r\n */\r\n isEmpty = () => !!(this.fields && this.fields.length)\r\n}\r\n\r\nexport default FieldsCache;\r\n","import { encryptWithPublicKey } from './Cryptography';\r\nimport { deepCopy } from './DeepCopy';\r\n\r\n\r\nconst encryptPasswords = async (formValues, globalEncryptionKey) => {\r\n const formValuesWithEncryptedPasswords = deepCopy(formValues);\r\n await Promise.all(['oldPassword', 'newPassword', 'password'].map(async (key) => {\r\n const password = formValues[key];\r\n if (password) {\r\n formValuesWithEncryptedPasswords[key] = await encryptWithPublicKey(password, globalEncryptionKey);\r\n }\r\n }));\r\n return formValuesWithEncryptedPasswords;\r\n};\r\n\r\nexport { encryptPasswords };\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from 'Commons/config/constants/Enums';\r\n\r\nconst MAX_VISIBLE_CONTENT = 1;\r\nconst MAX_VISIBLE_CONTENT_IN_ROW = 2;\r\nconst VIEW = mapEnum(enums.view);\r\n\r\n\r\nexport {\r\n MAX_VISIBLE_CONTENT,\r\n VIEW,\r\n MAX_VISIBLE_CONTENT_IN_ROW,\r\n};\r\n","import AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { SEVERITY_LEVEL } from 'External/containers/viewtenant/config/Constants';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport TenantAlertDialogStyles from '../styles/TenantAlertDialogStyles';\r\n\r\nconst useStyles = makeStyles(TenantAlertDialogStyles, { name: 'TenantAlertDialog' });\r\n\r\nconst TenantAlertDialog = ({\r\n isTenantAlertOpen, changeText, changeTextFunc, tenantAlerts,\r\n onAlertClose, onAlertIgnore, ignoreText, dialogClasses,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {ignoreText}\r\n \r\n {\r\n changeText && (\r\n \r\n {changeText.toUpperCase()}\r\n \r\n )\r\n }\r\n \r\n )}\r\n >\r\n \r\n {\r\n tenantAlerts.map(({ comments, severity, id }) => (\r\n \r\n \r\n \r\n \r\n \r\n {comments}\r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nTenantAlertDialog.propTypes = {\r\n isTenantAlertOpen: PropTypes.bool,\r\n changeText: PropTypes.string,\r\n changeTextFunc: PropTypes.func,\r\n tenantAlerts: PropTypes.array,\r\n onAlertIgnore: PropTypes.func,\r\n onAlertClose: PropTypes.func,\r\n ignoreText: PropTypes.string,\r\n dialogClasses: PropTypes.object,\r\n};\r\n\r\nTenantAlertDialog.defaultProps = { ignoreText: localisable.ignore };\r\n\r\nexport default TenantAlertDialog;\r\n","import { isSyrasoftUser } from 'Commons/helpers/utils/Utils';\r\nimport { memo } from 'react';\r\n\r\nconst StandardUserAccessible = ({ children }) => (isSyrasoftUser() ? null : <>{children});\r\n\r\nStandardUserAccessible.propTypes = { children: PropTypes.node };\r\n\r\nexport default memo(StandardUserAccessible);\r\n","import { REPORT_WC_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst generateReport = (onAction, body, reportIdOrType, entityType, entityId, accountId, callback) => {\r\n onAction({\r\n config: [{\r\n api: {\r\n action: {\r\n methodType: 'POST',\r\n baseUrl: process.env.REPORT_URL,\r\n endPoint: REPORT_WC_ENDPOINTS.report.generate(reportIdOrType),\r\n body,\r\n headers: {\r\n 'context-type': entityType,\r\n 'context-id': entityId,\r\n ...accountId ? { 'account-id': accountId } : {},\r\n },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n};\r\n\r\nconst createCategory = (onAction, body, accountId, callback) => {\r\n onAction({\r\n config: [{\r\n api: {\r\n action: {\r\n methodType: 'POST',\r\n baseUrl: process.env.REPORT_URL,\r\n endPoint: REPORT_WC_ENDPOINTS.category.create,\r\n body,\r\n headers: { ...accountId ? { 'account-id': accountId } : {} },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n};\r\n\r\nconst updateCategory = (onAction, id, body, accountId, callback) => {\r\n onAction({\r\n config: [{\r\n api: {\r\n action: {\r\n methodType: 'PUT',\r\n baseUrl: process.env.REPORT_URL,\r\n endPoint: REPORT_WC_ENDPOINTS.category.update(id),\r\n body,\r\n headers: { ...accountId ? { 'account-id': accountId } : {} },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n};\r\n\r\nconst deleteCategory = (onAction, id, callback) => {\r\n onAction({\r\n config: [{\r\n api: {\r\n action: {\r\n methodType: 'DELETE',\r\n baseUrl: process.env.REPORT_URL,\r\n endPoint: REPORT_WC_ENDPOINTS.category.delete(id),\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n};\r\n\r\nexport { generateReport, createCategory, updateCategory, deleteCategory };\r\n","import { convertToNumber } from 'Commons/helpers/utils/Utils';\r\n\r\nconst generateRandomNumber = (minRange = 0, maxRange = 1, numbersToAvoid = {}) => {\r\n let randomNumber;\r\n const max = convertToNumber(maxRange);\r\n const min = convertToNumber(minRange);\r\n while (numbersToAvoid[randomNumber] || !randomNumber) {\r\n randomNumber = Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n return randomNumber;\r\n};\r\n\r\nexport { generateRandomNumber };\r\n","import { setCookie, getCookie } from 'Commons/redux/helper/CookieManager';\r\nimport COOKIE_KEY from 'Commons/redux/config/CookieKey';\r\n\r\n/**\r\n * Util to manage the API Build Version\r\n */\r\n\r\nexport const setApiBuildVersion = (currentApiVersion) => {\r\n const cachedBuildVersion = getCookie(COOKIE_KEY.BUILD_VERSION);\r\n if (cachedBuildVersion !== currentApiVersion) {\r\n setCookie(COOKIE_KEY.BUILD_VERSION, currentApiVersion);\r\n }\r\n};\r\n\r\nexport const getApiBuildVersion = () => getCookie(COOKIE_KEY.BUILD_VERSION);\r\n","import * as Uaparser from 'ua-parser-js';\r\n\r\nconst UAParser = new Uaparser();\r\nconst getScreenInfo = () => {\r\n const {\r\n availHeight,\r\n availWidth,\r\n colorDepth,\r\n height,\r\n orientation,\r\n pixelDepth,\r\n width,\r\n } = window.screen;\r\n return {\r\n availHeight,\r\n availWidth,\r\n colorDepth,\r\n height,\r\n orientation,\r\n pixelDepth,\r\n width,\r\n };\r\n};\r\n\r\nconst getNavigatorInfo = () => {\r\n const {\r\n userAgent,\r\n connection = {},\r\n cookieEnabled,\r\n doNotTrack,\r\n plugins,\r\n maxTouchPoints,\r\n deviceMemory = 'N/A',\r\n } = window.navigator;\r\n return {\r\n userAgent,\r\n connection,\r\n cookieEnabled,\r\n doNotTrack,\r\n plugins,\r\n maxTouchPoints,\r\n deviceMemory,\r\n };\r\n};\r\n\r\nconst getDeviceInfo = () => {\r\n const navigator = getNavigatorInfo();\r\n if (!navigator.doNotTrack) {\r\n return {\r\n ...getScreenInfo(),\r\n ...navigator,\r\n };\r\n }\r\n return { };\r\n};\r\n\r\nconst getDeviceOSInfo = () => ({ ...UAParser.getResult(), device: getDeviceInfo() });\r\n\r\nexport {\r\n getDeviceInfo,\r\n getDeviceOSInfo,\r\n};\r\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTgiIGhlaWdodD0iMTEzIiB2aWV3Qm94PSIwIDAgOTggMTEzIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZD0iTTk3LjE5NTggMEgwVjU1LjMwMTNDMCA1Ni4zNDc1IDAuMjQ4MDI5IDU3LjM5NTkgMC44MDQ3MjkgNTguMjgxNkM1LjQ1MzQzIDY1LjY3ODEgOS44MzE2NCA2Mi4yMDA4IDEyLjUwODEgNTguMzQ1NEMxMy4xNTA5IDU3LjQxOTYgMTMuNDMzNiA1Ni4zMDA4IDEzLjQzMzYgNTUuMTczN1YxMi42NDM0SDg1LjM0MjdWMjYuODY3MUgzOC40NzQzQzM3LjU5NDQgMjYuODY3MSAzNi42OTc5IDI3LjA1NjcgMzUuOTAyMSAyNy40MzIzQzExLjYyODkgMzguODg3NyAyNC42MzcgNTUuNjM2NSAzNS41NjU0IDYzLjY4NjVDMzYuNTc5NSA2NC40MzM1IDM3LjgxMjggNjQuNzk3MiAzOS4wNzI0IDY0Ljc5NzJINTguNDE3OEM1OS40OTIyIDY0Ljc5NzIgNjAuNTczMSA2NS4wNDY2IDYxLjQ1MjEgNjUuNjY0MkM2NS41NTk2IDY4LjU0OTggNjMuODg1OCA3MS4xMDk5IDYxLjY3NyA3My4wMTY2QzYwLjY2NTYgNzMuODg5NiA1OS4zMzYzIDc0LjI3OTcgNTguMDAwMiA3NC4yNzk3SDBWMTEzSDk3LjE5NThWNTguODA5MkM5Ny4xOTU4IDU3LjU2MTEgOTYuODU1OCA1Ni4zMDc2IDk2LjA0MSA1NS4zNjIyQzkyLjEyMTUgNTAuODEzNiA4OC40MDU1IDUyLjk1OTggODYuMzE5MyA1NS40OTU4Qzg1LjYwODMgNTYuMzYwMSA4NS4zNDI3IDU3LjQ4NDkgODUuMzQyNyA1OC42MDQyVjEwMC4zNTdIMTMuNDMzNlY4Ny43MTMzSDU4LjMyNTRDNTkuNDU4MyA4Ny43MTMzIDYwLjYwMDQgODcuMzk3MyA2MS41NjM0IDg2LjgwMDdDODkuNjQ0OSA2OS40MDE4IDczLjY3NjkgNTUuOTg0MyA2MS4xMDM2IDUwLjk3NDZDNjAuNDEyNyA1MC42OTkzIDU5LjY3NTMgNTAuNTczNCA1OC45MzE2IDUwLjU3MzRINDIuNTE4MkM0MS4wODI4IDUwLjU3MzQgMzkuNjM5NyA1MC4xMjYzIDM4LjY3MDUgNDkuMDY3NEMzNS40MDEgNDUuNDk1NCAzNy4wMzc1IDQyLjY0MzMgMzkuMDM5OSA0MS4wOTQ4QzM5LjgxNjMgNDAuNDk0NCA0MC44MTE2IDQwLjMwMDcgNDEuNzkzIDQwLjMwMDdIOTcuMTk1OFYwWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQ5Nl85NjcpIi8+DQo8ZGVmcz4NCjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80OTZfOTY3IiB4MT0iOTcuOTg2IiB5MT0iNS43NDM2NGUtMDYiIHgyPSIxLjI5NzY4ZS0wNSIgeTI9IjExMi4yMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KPHN0b3Agc3RvcC1jb2xvcj0iI0Y3RkFGRiIvPg0KPHN0b3Agb2Zmc2V0PSIwLjU1MjA4MyIgc3RvcC1jb2xvcj0iI0IxRkZEQSIvPg0KPHN0b3Agb2Zmc2V0PSIwLjk5OTkiIHN0b3AtY29sb3I9IiM2MEI3RDEiLz4NCjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzBGNTdBQiIvPg0KPC9saW5lYXJHcmFkaWVudD4NCjwvZGVmcz4NCjwvc3ZnPg0K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTY2IiBoZWlnaHQ9IjQzIiB2aWV3Qm94PSIwIDAgMTY2IDQzIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZD0iTTM2LjM5NTcgMEgwVjIwLjcwOEMwIDIxLjA5OTcgMC4wOTI4NzY0IDIxLjQ5MjMgMC4zMDEzMzcgMjEuODI0QzIuMDQyMDggMjQuNTkzNyAzLjY4MTUzIDIzLjI5MTYgNC42ODM3NiAyMS44NDc5QzQuOTI0NDUgMjEuNTAxMiA1LjAzMDMgMjEuMDgyMyA1LjAzMDMgMjAuNjYwMlY0LjczNDRIMzEuOTU3MlYxMC4wNjA2SDE0LjQwN0MxNC4wNzc1IDEwLjA2MDYgMTMuNzQxOCAxMC4xMzE2IDEzLjQ0MzggMTAuMjcyMkM0LjM1NDU1IDE0LjU2MTggOS4yMjU1IDIwLjgzMzUgMTMuMzE3NyAyMy44NDc5QzEzLjY5NzUgMjQuMTI3NiAxNC4xNTkzIDI0LjI2MzggMTQuNjMxIDI0LjI2MzhIMjEuODc1QzIyLjI3NzMgMjQuMjYzOCAyMi42ODIgMjQuMzU3MiAyMy4wMTEyIDI0LjU4ODVDMjQuNTQ5MyAyNS42NjkgMjMuOTIyNSAyNi42Mjc3IDIzLjA5NTQgMjcuMzQxNkMyMi43MTY3IDI3LjY2ODUgMjIuMjE4OSAyNy44MTQ2IDIxLjcxODYgMjcuODE0NkgwVjQyLjMxMzdIMzYuMzk1N1YyMi4wMjE1QzM2LjM5NTcgMjEuNTU0MiAzNi4yNjg0IDIxLjA4NDggMzUuOTYzMyAyMC43MzA4QzM0LjQ5NTYgMTkuMDI3NiAzMy4xMDQxIDE5LjgzMTIgMzIuMzIyOSAyMC43ODA4QzMyLjA1NjcgMjEuMTA0NSAzMS45NTcyIDIxLjUyNTcgMzEuOTU3MiAyMS45NDQ4VjM3LjU3OTNINS4wMzAzVjMyLjg0NDlIMjEuODQwNEMyMi4yNjQ2IDMyLjg0NDkgMjIuNjkyMyAzMi43MjY2IDIzLjA1MjkgMzIuNTAzMkMzMy41NjgyIDI1Ljk4OCAyNy41ODg5IDIwLjk2MzggMjIuODgwNyAxOS4wODc4QzIyLjYyMiAxOC45ODQ3IDIyLjM0NTkgMTguOTM3NiAyMi4wNjc0IDE4LjkzNzZIMTUuOTIxM0MxNS4zODM4IDE4LjkzNzYgMTQuODQzNCAxOC43NzAyIDE0LjQ4MDUgMTguMzczN0MxMy4yNTYyIDE3LjAzNjEgMTMuODY5IDE1Ljk2ODEgMTQuNjE4OCAxNS4zODgzQzE0LjkwOTUgMTUuMTYzNSAxNS4yODIyIDE1LjA5MDkgMTUuNjQ5NyAxNS4wOTA5SDM2LjM5NTdWMFoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl80OTFfODEyKSIvPg0KPHBhdGggZD0iTTQ5LjcwOCAyMi4xMjMxVjYuNDY0MDZINTkuNTUwOFY5LjE0ODQ3SDUyLjY2MDlWMTIuOTI5SDU5LjAxNFYxNS42MTM0SDUyLjY2MDlWMjIuMTIzMUg0OS43MDhaIiBmaWxsPSIjRDhFQ0ZCIi8+DQo8cGF0aCBkPSJNNjAuMDY2OSAyMi4xMjMxTDY0LjE4MjkgNi40NjQwNkg2OS4zMjgxTDczLjQ0NDIgMjIuMTIzMUg3MC40MDE4TDY5LjU1MTggMTguNjc4MUg2My45NTkyTDYzLjEwOTIgMjIuMTIzMUg2MC4wNjY5Wk02NC42NTI3IDE1Ljk0OUg2OC44NTgzTDY2Ljk1NjggOC4zMjA3N0g2Ni41NTQyTDY0LjY1MjcgMTUuOTQ5WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTgxLjYwMzkgMjIuNDM2M0M3OS42NjUyIDIyLjQzNjMgNzguMTI5MSAyMS44OTk0IDc2Ljk5NTcgMjAuODI1NkM3NS44NjIzIDE5LjczNyA3NS4yOTU2IDE4LjE4NiA3NS4yOTU2IDE2LjE3MjdWMTIuNDE0NUM3NS4yOTU2IDEwLjQwMTIgNzUuODYyMyA4Ljg1NzY2IDc2Ljk5NTcgNy43ODM4OUM3OC4xMjkxIDYuNjk1MjIgNzkuNjY1MiA2LjE1MDg4IDgxLjYwMzkgNi4xNTA4OEM4My41Mjc3IDYuMTUwODggODUuMDExNiA2LjY4MDMgODYuMDU1NiA3LjczOTE1Qzg3LjExNDQgOC43ODMwOSA4Ny42NDM4IDEwLjIyMjIgODcuNjQzOCAxMi4wNTY2VjEyLjE5MDhIODQuNzM1N1YxMS45NjcxQzg0LjczNTcgMTEuMDQyNSA4NC40NzQ3IDEwLjI4MTkgODMuOTUyOCA5LjY4NTM1QzgzLjQ0NTcgOS4wODg4MSA4Mi42NjI4IDguNzkwNTUgODEuNjAzOSA4Ljc5MDU1QzgwLjU2IDguNzkwNTUgNzkuNzM5NyA5LjExMTE4IDc5LjE0MzIgOS43NTI0NkM3OC41NDY3IDEwLjM5MzcgNzguMjQ4NCAxMS4yNjYyIDc4LjI0ODQgMTIuMzY5OFYxNi4yMTc0Qzc4LjI0ODQgMTcuMzA2MSA3OC41NDY3IDE4LjE3ODUgNzkuMTQzMiAxOC44MzQ3Qzc5LjczOTcgMTkuNDc2IDgwLjU2IDE5Ljc5NjYgODEuNjAzOSAxOS43OTY2QzgyLjY2MjggMTkuNzk2NiA4My40NDU3IDE5LjQ5ODMgODMuOTUyOCAxOC45MDE4Qzg0LjQ3NDcgMTguMjkwNCA4NC43MzU3IDE3LjUyOTggODQuNzM1NyAxNi42MjAxVjE2LjIxNzRIODcuNjQzOFYxNi41MzA2Qzg3LjY0MzggMTguMzY0OSA4Ny4xMTQ0IDE5LjgxMTUgODYuMDU1NiAyMC44NzA0Qzg1LjAxMTYgMjEuOTE0MyA4My41Mjc3IDIyLjQzNjMgODEuNjAzOSAyMi40MzYzWiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTkwLjUxNTkgMjIuMTIzMVY2LjQ2NDA2SDkzLjQ2ODdWMjIuMTIzMUg5MC41MTU5WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTk2Ljg4MDMgMjIuMTIzMVY2LjQ2NDA2SDk5LjgzMzFWMTkuNDM4N0gxMDYuOTkyVjIyLjEyMzFIOTYuODgwM1oiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik0xMDkuNDcxIDIyLjEyMzFWNi40NjQwNkgxMTIuNDI0VjIyLjEyMzFIMTA5LjQ3MVoiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik0xMTkuNDU5IDIyLjEyMzFWOS4xNDg0N0gxMTQuODk2VjYuNDY0MDZIMTI2Ljk3NVY5LjE0ODQ3SDEyMi40MTJWMjIuMTIzMUgxMTkuNDU5WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTEyNi45MzcgMjIuMTIzMUwxMzEuMDUzIDYuNDY0MDZIMTM2LjE5OEwxNDAuMzE0IDIyLjEyMzFIMTM3LjI3MkwxMzYuNDIyIDE4LjY3ODFIMTMwLjgyOUwxMjkuOTc5IDIyLjEyMzFIMTI2LjkzN1pNMTMxLjUyMyAxNS45NDlIMTM1LjcyOEwxMzMuODI3IDguMzIwNzdIMTMzLjQyNEwxMzEuNTIzIDE1Ljk0OVoiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik0xNDQuODM3IDIyLjEyMzFWOS4xNDg0N0gxNDAuMjczVjYuNDY0MDZIMTUyLjM1M1Y5LjE0ODQ3SDE0Ny43ODlWMjIuMTIzMUgxNDQuODM3WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTE1NC44MyAyMi4xMjMxVjYuNDY0MDZIMTY0Ljg5NlY5LjE0ODQ3SDE1Ny43ODNWMTIuODg0M0gxNjQuMjdWMTUuNTY4N0gxNTcuNzgzVjE5LjQzODdIMTY1LjAzMVYyMi4xMjMxSDE1NC44M1oiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik04NC44NzU0IDM2LjE2MzNDODQuMzY0MSAzNi4xNjMzIDgzLjkxMjcgMzYuMDcxOCA4My41MjE0IDM1Ljg4ODdDODMuMTMgMzUuNzA1NyA4Mi44MjM4IDM1LjQ0MzcgODIuNjAyOSAzNS4xMDI4QzgyLjM4MiAzNC43NjE5IDgyLjI3MTUgMzQuMzUxNiA4Mi4yNzE1IDMzLjg3MTlWMzMuNjA2N0g4My41MDI0VjMzLjg3MTlDODMuNTAyNCAzNC4yNjk1IDgzLjYyNTUgMzQuNTY5NCA4My44NzE3IDM0Ljc3MTRDODQuMTE3OSAzNC45NjcxIDg0LjQ1MjUgMzUuMDY0OSA4NC44NzU0IDM1LjA2NDlDODUuMzA0NyAzNS4wNjQ5IDg1LjYyMzQgMzQuOTc5NyA4NS44MzE4IDM0LjgwOTNDODYuMDQ2NCAzNC42Mzg4IDg2LjE1MzcgMzQuNDIxIDg2LjE1MzcgMzQuMTU1OUM4Ni4xNTM3IDMzLjk3MjkgODYuMSAzMy44MjQ1IDg1Ljk5MjcgMzMuNzEwOUM4NS44OTE3IDMzLjU5NzMgODUuNzQwMiAzMy41MDU3IDg1LjUzODIgMzMuNDM2M0M4NS4zNDI1IDMzLjM2MDUgODUuMTAyNyAzMy4yOTExIDg0LjgxODYgMzMuMjI4TDg0LjYwMDggMzMuMTgwNkM4NC4xNDYzIDMzLjA3OTYgODMuNzU0OSAzMi45NTM0IDgzLjQyNjcgMzIuODAxOUM4My4xMDQ3IDMyLjY0NDEgODIuODU1NCAzMi40Mzg5IDgyLjY3ODYgMzIuMTg2NEM4Mi41MDgyIDMxLjkzMzkgODIuNDIzIDMxLjYwNTcgODIuNDIzIDMxLjIwMTdDODIuNDIzIDMwLjc5NzcgODIuNTE3NyAzMC40NTM2IDgyLjcwNyAzMC4xNjk2QzgyLjkwMjcgMjkuODc5MiA4My4xNzQyIDI5LjY1ODIgODMuNTIxNCAyOS41MDY3QzgzLjg3NDkgMjkuMzQ4OSA4NC4yODgzIDI5LjI3IDg0Ljc2MTggMjkuMjdDODUuMjM1MiAyOS4yNyA4NS42NTUgMjkuMzUyMSA4Ni4wMjExIDI5LjUxNjJDODYuMzkzNiAyOS42NzQgODYuNjgzOSAyOS45MTM5IDg2Ljg5MjMgMzAuMjM1OEM4Ny4xMDY5IDMwLjU1MTUgODcuMjE0MiAzMC45NDkyIDg3LjIxNDIgMzEuNDI4OVYzMS43MTNIODUuOTgzM1YzMS40Mjg5Qzg1Ljk4MzMgMzEuMTc2NCA4NS45MzI4IDMwLjk3NDQgODUuODMxOCAzMC44MjI5Qzg1LjczNzEgMzAuNjY1MSA4NS41OTgyIDMwLjU1MTUgODUuNDE1MSAzMC40ODJDODUuMjMyMSAzMC40MDYzIDg1LjAxNDMgMzAuMzY4NCA4NC43NjE4IDMwLjM2ODRDODQuMzgzIDMwLjM2ODQgODQuMTAyMSAzMC40NDEgODMuOTE5MSAzMC41ODYyQzgzLjc0MjMgMzAuNzI1MSA4My42NTM5IDMwLjkxNzYgODMuNjUzOSAzMS4xNjM4QzgzLjY1MzkgMzEuMzI3OSA4My42OTUgMzEuNDY2OCA4My43NzcgMzEuNTgwNEM4My44NjU0IDMxLjY5NCA4My45OTQ4IDMxLjc4ODcgODQuMTY1MiAzMS44NjQ1Qzg0LjMzNTcgMzEuOTQwMiA4NC41NTM1IDMyLjAwNjUgODQuODE4NiAzMi4wNjMzTDg1LjAzNjQgMzIuMTEwN0M4NS41MDk4IDMyLjIxMTcgODUuOTIwMSAzMi4zNDExIDg2LjI2NzMgMzIuNDk4OUM4Ni42MjA4IDMyLjY1NjcgODYuODk1NCAzMi44NjUgODcuMDkxMSAzMy4xMjM4Qzg3LjI4NjggMzMuMzgyNiA4Ny4zODQ2IDMzLjcxNCA4Ny4zODQ2IDM0LjExOEM4Ny4zODQ2IDM0LjUyMjEgODcuMjgwNSAzNC44Nzg3IDg3LjA3MjIgMzUuMTg4Qzg2Ljg3MDIgMzUuNDkxIDg2LjU3OTggMzUuNzMwOSA4Ni4yMDEgMzUuOTA3N0M4NS44Mjg2IDM2LjA3ODEgODUuMzg2NyAzNi4xNjMzIDg0Ljg3NTQgMzYuMTYzM1oiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik05MC4yODM4IDM2LjAzMDdWMzMuNzQ4OEw4OC4wMzAyIDI5LjQwMjZIODkuNDIyMUw5MC44MjM1IDMyLjI0MzJIOTAuOTk0TDkyLjM5NTMgMjkuNDAyNkg5My43ODczTDkxLjUzMzcgMzMuNzQ4OFYzNi4wMzA3SDkwLjI4MzhaIiBmaWxsPSIjRDhFQ0ZCIi8+DQo8cGF0aCBkPSJNOTQuOTU0MiAzNi4wMzA3VjI5LjQwMjZIOTcuODMyN0M5OC4yNDk0IDI5LjQwMjYgOTguNjEyMyAyOS40NzUyIDk4LjkyMTYgMjkuNjIwNEM5OS4yMzEgMjkuNzY1NiA5OS40NzA4IDI5Ljk3MDcgOTkuNjQxMyAzMC4yMzU4Qzk5LjgxMTcgMzAuNTAxIDk5Ljg5NjkgMzAuODEzNCA5OS44OTY5IDMxLjE3MzJWMzEuMjg2OUM5OS44OTY5IDMxLjY4NDYgOTkuODAyMiAzMi4wMDY1IDk5LjYxMjkgMzIuMjUyN0M5OS40MjM1IDMyLjQ5ODkgOTkuMTg5OSAzMi42Nzg4IDk4LjkxMjIgMzIuNzkyNFYzMi45NjI5Qzk5LjE2NDcgMzIuOTc1NSA5OS4zNjA0IDMzLjA2MzkgOTkuNDk5MiAzMy4yMjhDOTkuNjM4MSAzMy4zODU4IDk5LjcwNzYgMzMuNTk3MyA5OS43MDc2IDMzLjg2MjRWMzYuMDMwN0g5OC40NTc3VjM0LjA0MjNDOTguNDU3NyAzMy44OTA4IDk4LjQxNjYgMzMuNzY3NyA5OC4zMzQ2IDMzLjY3M0M5OC4yNTg4IDMzLjU3ODMgOTguMTI5NCAzMy41MzEgOTcuOTQ2NCAzMy41MzFIOTYuMjA0MVYzNi4wMzA3SDk0Ljk1NDJaTTk2LjIwNDEgMzIuMzk0N0g5Ny43MDAyQzk3Ljk5NjkgMzIuMzk0NyA5OC4yMjczIDMyLjMxNTggOTguMzkxNCAzMi4xNThDOTguNTYxOCAzMS45OTM5IDk4LjY0NyAzMS43NzkzIDk4LjY0NyAzMS41MTQxVjMxLjQxOTRDOTguNjQ3IDMxLjE1NDMgOTguNTY1IDMwLjk0MjggOTguNDAwOSAzMC43ODVDOTguMjM2NyAzMC42MjA5IDk4LjAwMzIgMzAuNTM4OCA5Ny43MDAyIDMwLjUzODhIOTYuMjA0MVYzMi4zOTQ3WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTEwMC45NDggMzYuMDMwN0wxMDIuNjkxIDI5LjQwMjZIMTA0Ljg2OUwxMDYuNjExIDM2LjAzMDdIMTA1LjMyM0wxMDQuOTYzIDM0LjU3MjZIMTAyLjU5NkwxMDIuMjM2IDM2LjAzMDdIMTAwLjk0OFpNMTAyLjg5IDMzLjQxNzRIMTA0LjY3TDEwMy44NjUgMzAuMTg4NUgxMDMuNjk0TDEwMi44OSAzMy40MTc0WiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTExMC4xNzEgMzYuMTYzM0MxMDkuNjYgMzYuMTYzMyAxMDkuMjA5IDM2LjA3MTggMTA4LjgxNyAzNS44ODg3QzEwOC40MjYgMzUuNzA1NyAxMDguMTIgMzUuNDQzNyAxMDcuODk5IDM1LjEwMjhDMTA3LjY3OCAzNC43NjE5IDEwNy41NjcgMzQuMzUxNiAxMDcuNTY3IDMzLjg3MTlWMzMuNjA2N0gxMDguNzk4VjMzLjg3MTlDMTA4Ljc5OCAzNC4yNjk1IDEwOC45MjEgMzQuNTY5NCAxMDkuMTY3IDM0Ljc3MTRDMTA5LjQxNCAzNC45NjcxIDEwOS43NDggMzUuMDY0OSAxMTAuMTcxIDM1LjA2NDlDMTEwLjYgMzUuMDY0OSAxMTAuOTE5IDM0Ljk3OTcgMTExLjEyOCAzNC44MDkzQzExMS4zNDIgMzQuNjM4OCAxMTEuNDQ5IDM0LjQyMSAxMTEuNDQ5IDM0LjE1NTlDMTExLjQ0OSAzMy45NzI5IDExMS4zOTYgMzMuODI0NSAxMTEuMjg4IDMzLjcxMDlDMTExLjE4NyAzMy41OTczIDExMS4wMzYgMzMuNTA1NyAxMTAuODM0IDMzLjQzNjNDMTEwLjYzOCAzMy4zNjA1IDExMC4zOTggMzMuMjkxMSAxMTAuMTE0IDMzLjIyOEwxMDkuODk3IDMzLjE4MDZDMTA5LjQ0MiAzMy4wNzk2IDEwOS4wNTEgMzIuOTUzNCAxMDguNzIyIDMyLjgwMTlDMTA4LjQwMSAzMi42NDQxIDEwOC4xNTEgMzIuNDM4OSAxMDcuOTc0IDMyLjE4NjRDMTA3LjgwNCAzMS45MzM5IDEwNy43MTkgMzEuNjA1NyAxMDcuNzE5IDMxLjIwMTdDMTA3LjcxOSAzMC43OTc3IDEwNy44MTMgMzAuNDUzNiAxMDguMDAzIDMwLjE2OTZDMTA4LjE5OSAyOS44NzkyIDEwOC40NyAyOS42NTgyIDEwOC44MTcgMjkuNTA2N0MxMDkuMTcxIDI5LjM0ODkgMTA5LjU4NCAyOS4yNyAxMTAuMDU4IDI5LjI3QzExMC41MzEgMjkuMjcgMTEwLjk1MSAyOS4zNTIxIDExMS4zMTcgMjkuNTE2MkMxMTEuNjg5IDI5LjY3NCAxMTEuOTggMjkuOTEzOSAxMTIuMTg4IDMwLjIzNThDMTEyLjQwMyAzMC41NTE1IDExMi41MSAzMC45NDkyIDExMi41MSAzMS40Mjg5VjMxLjcxM0gxMTEuMjc5VjMxLjQyODlDMTExLjI3OSAzMS4xNzY0IDExMS4yMjkgMzAuOTc0NCAxMTEuMTI4IDMwLjgyMjlDMTExLjAzMyAzMC42NjUxIDExMC44OTQgMzAuNTUxNSAxMTAuNzExIDMwLjQ4MkMxMTAuNTI4IDMwLjQwNjMgMTEwLjMxIDMwLjM2ODQgMTEwLjA1OCAzMC4zNjg0QzEwOS42NzkgMzAuMzY4NCAxMDkuMzk4IDMwLjQ0MSAxMDkuMjE1IDMwLjU4NjJDMTA5LjAzOCAzMC43MjUxIDEwOC45NSAzMC45MTc2IDEwOC45NSAzMS4xNjM4QzEwOC45NSAzMS4zMjc5IDEwOC45OTEgMzEuNDY2OCAxMDkuMDczIDMxLjU4MDRDMTA5LjE2MSAzMS42OTQgMTA5LjI5MSAzMS43ODg3IDEwOS40NjEgMzEuODY0NUMxMDkuNjMxIDMxLjk0MDIgMTA5Ljg0OSAzMi4wMDY1IDExMC4xMTQgMzIuMDYzM0wxMTAuMzMyIDMyLjExMDdDMTEwLjgwNiAzMi4yMTE3IDExMS4yMTYgMzIuMzQxMSAxMTEuNTYzIDMyLjQ5ODlDMTExLjkxNyAzMi42NTY3IDExMi4xOTEgMzIuODY1IDExMi4zODcgMzMuMTIzOEMxMTIuNTgzIDMzLjM4MjYgMTEyLjY4IDMzLjcxNCAxMTIuNjggMzQuMTE4QzExMi42OCAzNC41MjIxIDExMi41NzYgMzQuODc4NyAxMTIuMzY4IDM1LjE4OEMxMTIuMTY2IDM1LjQ5MSAxMTEuODc2IDM1LjczMDkgMTExLjQ5NyAzNS45MDc3QzExMS4xMjQgMzYuMDc4MSAxMTAuNjgyIDM2LjE2MzMgMTEwLjE3MSAzNi4xNjMzWiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTExNi42NTQgMzYuMTYzM0MxMTUuODIxIDM2LjE2MzMgMTE1LjE1OCAzNS45MzYxIDExNC42NjYgMzUuNDgxNkMxMTQuMTczIDM1LjAyMDcgMTEzLjkyNyAzNC4zNjQyIDExMy45MjcgMzMuNTEyVjMxLjkyMTNDMTEzLjkyNyAzMS4wNjkxIDExNC4xNzMgMzAuNDE1NyAxMTQuNjY2IDI5Ljk2MTJDMTE1LjE1OCAyOS41MDA0IDExNS44MjEgMjkuMjcgMTE2LjY1NCAyOS4yN0MxMTcuNDg3IDI5LjI3IDExOC4xNSAyOS41MDA0IDExOC42NDMgMjkuOTYxMkMxMTkuMTM1IDMwLjQxNTcgMTE5LjM4MSAzMS4wNjkxIDExOS4zODEgMzEuOTIxM1YzMy41MTJDMTE5LjM4MSAzNC4zNjQyIDExOS4xMzUgMzUuMDIwNyAxMTguNjQzIDM1LjQ4MTZDMTE4LjE1IDM1LjkzNjEgMTE3LjQ4NyAzNi4xNjMzIDExNi42NTQgMzYuMTYzM1pNMTE2LjY1NCAzNS4wNDZDMTE3LjEyMSAzNS4wNDYgMTE3LjQ4NCAzNC45MTAzIDExNy43NDMgMzQuNjM4OEMxMTguMDAyIDM0LjM2NzQgMTE4LjEzMSAzNC4wMDQ0IDExOC4xMzEgMzMuNTQ5OVYzMS44ODM0QzExOC4xMzEgMzEuNDI4OSAxMTguMDAyIDMxLjA2NTkgMTE3Ljc0MyAzMC43OTQ1QzExNy40ODQgMzAuNTIzMSAxMTcuMTIxIDMwLjM4NzMgMTE2LjY1NCAzMC4zODczQzExNi4xOTMgMzAuMzg3MyAxMTUuODMgMzAuNTIzMSAxMTUuNTY1IDMwLjc5NDVDMTE1LjMwNiAzMS4wNjU5IDExNS4xNzcgMzEuNDI4OSAxMTUuMTc3IDMxLjg4MzRWMzMuNTQ5OUMxMTUuMTc3IDM0LjAwNDQgMTE1LjMwNiAzNC4zNjc0IDExNS41NjUgMzQuNjM4OEMxMTUuODMgMzQuOTEwMyAxMTYuMTkzIDM1LjA0NiAxMTYuNjU0IDM1LjA0NloiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGQ9Ik0xMjAuOTQzIDM2LjAzMDdWMjkuNDAyNkgxMjUuMTFWMzAuNTM4OEgxMjIuMTkzVjMyLjEzOTFIMTI0Ljg4M1YzMy4yNzUzSDEyMi4xOTNWMzYuMDMwN0gxMjAuOTQzWiIgZmlsbD0iI0Q4RUNGQiIvPg0KPHBhdGggZD0iTTEyOC4wMDIgMzYuMDMwN1YzMC41Mzg4SDEyNi4wN1YyOS40MDI2SDEzMS4xODNWMzAuNTM4OEgxMjkuMjUxVjM2LjAzMDdIMTI4LjAwMloiIGZpbGw9IiNEOEVDRkIiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzEuOTAzOSAzMi43NzUzSDQ4LjIzMTlWMzEuODQzM0g3MS45MDM5VjMyLjc3NTNaTTE2NiAzMi43NzUzTDE0Mi4zMjggMzIuNzc1M1YzMS44NDMzTDE2NiAzMS44NDMzVjMyLjc3NTNaIiBmaWxsPSIjRDhFQ0ZCIi8+DQo8ZGVmcz4NCjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl80OTFfODEyIiB4MT0iMzYuNjkxNiIgeTE9IjIuMTUwNzVlLTA2IiB4Mj0iMy40NTA1MWUtMDYiIHkyPSI0Mi4wMTc4IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+DQo8c3RvcCBzdG9wLWNvbG9yPSIjRjdGQUZGIi8+DQo8c3RvcCBvZmZzZXQ9IjAuNTUyMDgzIiBzdG9wLWNvbG9yPSIjQjFGRkRBIi8+DQo8c3RvcCBvZmZzZXQ9IjAuOTk5OSIgc3RvcC1jb2xvcj0iIzYwQjdEMSIvPg0KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMEY1N0FCIi8+DQo8L2xpbmVhckdyYWRpZW50Pg0KPC9kZWZzPg0KPC9zdmc+DQo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAyIiBoZWlnaHQ9IjEwMyIgdmlld0JveD0iMCAwIDQwMiAxMDMiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPg0KPHBhdGggZD0iTTAgMEg4OC42Mjc5VjEwM0gwVjBaIiBmaWxsPSJ1cmwoI3BhdHRlcm4wKSIvPg0KPHBhdGggZD0iTTEyMC44NzQgNTQuMzQ1OVYxNi40OTM0SDE0NC42NjdWMjIuOTgyNEgxMjguMDEyVjMyLjEyMTFIMTQzLjM2OVYzOC42MTAxSDEyOC4wMTJWNTQuMzQ1OUgxMjAuODc0WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTE0NS45MTUgNTQuMzQ1OUwxNTUuODY0IDE2LjQ5MzRIMTY4LjMwMkwxNzguMjUyIDU0LjM0NTlIMTcwLjg5N0wxNjguODQyIDQ2LjAxODNIMTU1LjMyNEwxNTMuMjY5IDU0LjM0NTlIMTQ1LjkxNVpNMTU3IDM5LjQyMTJIMTY3LjE2NkwxNjIuNTcgMjAuOTgxNkgxNjEuNTk2TDE1NyAzOS40MjEyWiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTE5Ny45NzYgNTUuMTAyOUMxOTMuMjkgNTUuMTAyOSAxODkuNTc2IDUzLjgwNTEgMTg2LjgzNyA1MS4yMDk1QzE4NC4wOTcgNDguNTc3OSAxODIuNzI3IDQ0LjgyODcgMTgyLjcyNyAzOS45NjE5VjMwLjg3NzNDMTgyLjcyNyAyNi4wMTA2IDE4NC4wOTcgMjIuMjc5NCAxODYuODM3IDE5LjY4MzhDMTg5LjU3NiAxNy4wNTIyIDE5My4yOSAxNS43MzYzIDE5Ny45NzYgMTUuNzM2M0MyMDIuNjI3IDE1LjczNjMgMjA2LjIxMyAxNy4wMTYxIDIwOC43MzcgMTkuNTc1N0MyMTEuMjk3IDIyLjA5OTIgMjEyLjU3NiAyNS41NzggMjEyLjU3NiAzMC4wMTIxVjMwLjMzNjZIMjA1LjU0N1YyOS43OTU4QzIwNS41NDcgMjcuNTYwNyAyMDQuOTE2IDI1LjcyMjIgMjAzLjY1NCAyNC4yODAyQzIwMi40MjggMjIuODM4MiAyMDAuNTM2IDIyLjExNzIgMTk3Ljk3NiAyMi4xMTcyQzE5NS40NTMgMjIuMTE3MiAxOTMuNDcgMjIuODkyMyAxOTIuMDI4IDI0LjQ0MjRDMTkwLjU4NiAyNS45OTI2IDE4OS44NjUgMjguMTAxNSAxODkuODY1IDMwLjc2OTJWNDAuMDcwMUMxODkuODY1IDQyLjcwMTcgMTkwLjU4NiA0NC44MTA3IDE5Mi4wMjggNDYuMzk2OUMxOTMuNDcgNDcuOTQ3IDE5NS40NTMgNDguNzIyMSAxOTcuOTc2IDQ4LjcyMjFDMjAwLjUzNiA0OC43MjIxIDIwMi40MjggNDguMDAxMSAyMDMuNjU0IDQ2LjU1OTFDMjA0LjkxNiA0NS4wODEgMjA1LjU0NyA0My4yNDI1IDIwNS41NDcgNDEuMDQzNFY0MC4wNzAxSDIxMi41NzZWNDAuODI3MUMyMTIuNTc2IDQ1LjI2MTMgMjExLjI5NyA0OC43NTgxIDIwOC43MzcgNTEuMzE3N0MyMDYuMjEzIDUzLjg0MTIgMjAyLjYyNyA1NS4xMDI5IDE5Ny45NzYgNTUuMTAyOVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0yMTkuNTE5IDU0LjM0NTlWMTYuNDkzNEgyMjYuNjU3VjU0LjM0NTlIMjE5LjUxOVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0yMzQuOTA0IDU0LjM0NTlWMTYuNDkzNEgyNDIuMDQxVjQ3Ljg1NjlIMjU5LjM0NVY1NC4zNDU5SDIzNC45MDRaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMjY1LjMzOCA1NC4zNDU5VjE2LjQ5MzRIMjcyLjQ3NlY1NC4zNDU5SDI2NS4zMzhaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMjg5LjQ4MyA1NC4zNDU5VjIyLjk4MjRIMjc4LjQ1MlYxNi40OTM0SDMwNy42NTJWMjIuOTgyNEgyOTYuNjIxVjU0LjM0NTlIMjg5LjQ4M1oiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0zMDcuNTU5IDU0LjM0NTlMMzE3LjUwOSAxNi40OTM0SDMyOS45NDZMMzM5Ljg5NiA1NC4zNDU5SDMzMi41NDFMMzMwLjQ4NyA0Ni4wMTgzSDMxNi45NjhMMzE0LjkxMyA1NC4zNDU5SDMwNy41NTlaTTMxOC42NDQgMzkuNDIxMkgzMjguODFMMzI0LjIxNCAyMC45ODE2SDMyMy4yNDFMMzE4LjY0NCAzOS40MjEyWiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTM1MC44MjggNTQuMzQ1OVYyMi45ODI0SDMzOS43OTdWMTYuNDkzNEgzNjguOTk3VjIyLjk4MjRIMzU3Ljk2NlY1NC4zNDU5SDM1MC44MjhaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMzc0Ljk4NCA1NC4zNDU5VjE2LjQ5MzRIMzk5LjMxOFYyMi45ODI0SDM4Mi4xMjJWMzIuMDEyOUgzOTcuODA0VjM4LjUwMTlIMzgyLjEyMlY0Ny44NTY5SDM5OS42NDNWNTQuMzQ1OUgzNzQuOTg0WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTIwNS44ODQgODguMjg0N0MyMDQuNjQ4IDg4LjI4NDcgMjAzLjU1NyA4OC4wNjM0IDIwMi42MTEgODcuNjIwOUMyMDEuNjY1IDg3LjE3ODQgMjAwLjkyNSA4Ni41NDUxIDIwMC4zOTEgODUuNzIxMUMxOTkuODU3IDg0Ljg5NzEgMTk5LjU5IDgzLjkwNTMgMTk5LjU5IDgyLjc0NTZWODIuMTA0N0gyMDIuNTY1VjgyLjc0NTZDMjAyLjU2NSA4My43MDY5IDIwMi44NjMgODQuNDMxNyAyMDMuNDU4IDg0LjkyQzIwNC4wNTMgODUuMzkzMSAyMDQuODYyIDg1LjYyOTYgMjA1Ljg4NCA4NS42Mjk2QzIwNi45MjIgODUuNjI5NiAyMDcuNjkzIDg1LjQyMzYgMjA4LjE5NiA4NS4wMTE2QzIwOC43MTUgODQuNTk5NiAyMDguOTc0IDg0LjA3MzEgMjA4Ljk3NCA4My40MzIyQzIwOC45NzQgODIuOTg5NyAyMDguODQ1IDgyLjYzMTEgMjA4LjU4NSA4Mi4zNTY1QzIwOC4zNDEgODIuMDgxOCAyMDcuOTc1IDgxLjg2MDUgMjA3LjQ4NyA4MS42OTI3QzIwNy4wMTMgODEuNTA5NiAyMDYuNDM0IDgxLjM0MTcgMjA1Ljc0NyA4MS4xODkxTDIwNS4yMjEgODEuMDc0N0MyMDQuMTIyIDgwLjgzMDUgMjAzLjE3NiA4MC41MjU0IDIwMi4zODIgODAuMTU5MUMyMDEuNjA0IDc5Ljc3NzcgMjAxLjAwMSA3OS4yODE3IDIwMC41NzQgNzguNjcxNEMyMDAuMTYyIDc4LjA2MSAxOTkuOTU2IDc3LjI2NzUgMTk5Ljk1NiA3Ni4yOTA5QzE5OS45NTYgNzUuMzE0MyAyMDAuMTg1IDc0LjQ4MjcgMjAwLjY0MyA3My43OTZDMjAxLjExNiA3My4wOTQxIDIwMS43NzIgNzIuNTYgMjAyLjYxMSA3Mi4xOTM4QzIwMy40NjYgNzEuODEyMyAyMDQuNDY1IDcxLjYyMTYgMjA1LjYxIDcxLjYyMTZDMjA2Ljc1NCA3MS42MjE2IDIwNy43NjkgNzEuODIgMjA4LjY1NCA3Mi4yMTY3QzIwOS41NTQgNzIuNTk4MiAyMTAuMjU2IDczLjE3OCAyMTAuNzYgNzMuOTU2MkMyMTEuMjc4IDc0LjcxOTIgMjExLjUzOCA3NS42ODA1IDIxMS41MzggNzYuODQwMlY3Ny41MjY5SDIwOC41NjJWNzYuODQwMkMyMDguNTYyIDc2LjIyOTkgMjA4LjQ0IDc1Ljc0MTYgMjA4LjE5NiA3NS4zNzU0QzIwNy45NjcgNzQuOTkzOSAyMDcuNjMxIDc0LjcxOTIgMjA3LjE4OSA3NC41NTE0QzIwNi43NDYgNzQuMzY4MiAyMDYuMjIgNzQuMjc2NyAyMDUuNjEgNzQuMjc2N0MyMDQuNjk0IDc0LjI3NjcgMjA0LjAxNSA3NC40NTIyIDIwMy41NzMgNzQuODAzMUMyMDMuMTQ1IDc1LjEzODggMjAyLjkzMiA3NS42MDQyIDIwMi45MzIgNzYuMTk5NEMyMDIuOTMyIDc2LjU5NjEgMjAzLjAzMSA3Ni45MzE4IDIwMy4yMjkgNzcuMjA2NUMyMDMuNDQzIDc3LjQ4MTEgMjAzLjc1NiA3Ny43MSAyMDQuMTY4IDc3Ljg5MzFDMjA0LjU4IDc4LjA3NjIgMjA1LjEwNiA3OC4yMzY1IDIwNS43NDcgNzguMzczOEwyMDYuMjczIDc4LjQ4ODJDMjA3LjQxOCA3OC43MzI0IDIwOC40MSA3OS4wNDUyIDIwOS4yNDkgNzkuNDI2N0MyMTAuMTAzIDc5LjgwODIgMjEwLjc2NyA4MC4zMTE3IDIxMS4yNCA4MC45Mzc0QzIxMS43MTMgODEuNTYzIDIxMS45NSA4Mi4zNjQxIDIxMS45NSA4My4zNDA3QzIxMS45NSA4NC4zMTczIDIxMS42OTggODUuMTc5NCAyMTEuMTk1IDg1LjkyNzFDMjEwLjcwNiA4Ni42NTk2IDIxMC4wMDQgODcuMjM5NCAyMDkuMDg5IDg3LjY2NjdDMjA4LjE4OCA4OC4wNzg3IDIwNy4xMiA4OC4yODQ3IDIwNS44ODQgODguMjg0N1oiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0yMTguOTU4IDg3Ljk2NDNWODIuNDQ4TDIxMy41MSA3MS45NDJIMjE2Ljg3NUwyMjAuMjYzIDc4LjgwODdIMjIwLjY3NUwyMjQuMDYyIDcxLjk0MkgyMjcuNDI3TDIyMS45NzkgODIuNDQ4Vjg3Ljk2NDNIMjE4Ljk1OFoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0yMzAuMjQ4IDg3Ljk2NDNWNzEuOTQySDIzNy4yMDZDMjM4LjIxMyA3MS45NDIgMjM5LjA5IDcyLjExNzUgMjM5LjgzOCA3Mi40Njg1QzI0MC41ODYgNzIuODE5NCAyNDEuMTY2IDczLjMxNTQgMjQxLjU3OCA3My45NTYyQzI0MS45OSA3NC41OTcxIDI0Mi4xOTYgNzUuMzUyNSAyNDIuMTk2IDc2LjIyMjJWNzYuNDk2OUMyNDIuMTk2IDc3LjQ1ODIgMjQxLjk2NyA3OC4yMzY1IDI0MS41MDkgNzguODMxNkMyNDEuMDUxIDc5LjQyNjcgMjQwLjQ4NyA3OS44NjE2IDIzOS44MTUgODAuMTM2MlY4MC41NDgyQzI0MC40MjYgODAuNTc4OCAyNDAuODk5IDgwLjc5MjQgMjQxLjIzNCA4MS4xODkxQzI0MS41NyA4MS41NzA2IDI0MS43MzggODIuMDgxOCAyNDEuNzM4IDgyLjcyMjdWODcuOTY0M0gyMzguNzE3VjgzLjE1NzZDMjM4LjcxNyA4Mi43OTE0IDIzOC42MTcgODIuNDkzOCAyMzguNDE5IDgyLjI2NDlDMjM4LjIzNiA4Mi4wMzYgMjM3LjkyMyA4MS45MjE2IDIzNy40ODEgODEuOTIxNkgyMzMuMjY5Vjg3Ljk2NDNIMjMwLjI0OFpNMjMzLjI2OSA3OS4xNzQ5SDIzNi44ODZDMjM3LjYwMyA3OS4xNzQ5IDIzOC4xNiA3OC45ODQyIDIzOC41NTYgNzguNjAyN0MyMzguOTY4IDc4LjIwNiAyMzkuMTc0IDc3LjY4NzEgMjM5LjE3NCA3Ny4wNDYyVjc2LjgxNzRDMjM5LjE3NCA3Ni4xNzY1IDIzOC45NzYgNzUuNjY1MyAyMzguNTc5IDc1LjI4MzhDMjM4LjE4MyA3NC44ODcxIDIzNy42MTggNzQuNjg4NyAyMzYuODg2IDc0LjY4ODdIMjMzLjI2OVY3OS4xNzQ5WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTI0NC43MzggODcuOTY0M0wyNDguOTQ5IDcxLjk0MkgyNTQuMjE0TDI1OC40MjUgODcuOTY0M0gyNTUuMzEyTDI1NC40NDMgODQuNDM5NEgyNDguNzJMMjQ3Ljg1MSA4Ny45NjQzSDI0NC43MzhaTTI0OS40MyA4MS42NDY5SDI1My43MzNMMjUxLjc4NyA3My44NDE4SDI1MS4zNzVMMjQ5LjQzIDgxLjY0NjlaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMjY3LjAzMiA4OC4yODQ3QzI2NS43OTYgODguMjg0NyAyNjQuNzA1IDg4LjA2MzQgMjYzLjc1OCA4Ny42MjA5QzI2Mi44MTIgODcuMTc4NCAyNjIuMDcyIDg2LjU0NTEgMjYxLjUzOCA4NS43MjExQzI2MS4wMDQgODQuODk3MSAyNjAuNzM3IDgzLjkwNTMgMjYwLjczNyA4Mi43NDU2VjgyLjEwNDdIMjYzLjcxM1Y4Mi43NDU2QzI2My43MTMgODMuNzA2OSAyNjQuMDEgODQuNDMxNyAyNjQuNjA1IDg0LjkyQzI2NS4yIDg1LjM5MzEgMjY2LjAwOSA4NS42Mjk2IDI2Ny4wMzIgODUuNjI5NkMyNjguMDY5IDg1LjYyOTYgMjY4Ljg0IDg1LjQyMzYgMjY5LjM0MyA4NS4wMTE2QzI2OS44NjIgODQuNTk5NiAyNzAuMTIyIDg0LjA3MzEgMjcwLjEyMiA4My40MzIyQzI3MC4xMjIgODIuOTg5NyAyNjkuOTkyIDgyLjYzMTEgMjY5LjczMiA4Mi4zNTY1QzI2OS40ODggODIuMDgxOCAyNjkuMTIyIDgxLjg2MDUgMjY4LjYzNCA4MS42OTI3QzI2OC4xNjEgODEuNTA5NiAyNjcuNTgxIDgxLjM0MTcgMjY2Ljg5NCA4MS4xODkxTDI2Ni4zNjggODEuMDc0N0MyNjUuMjY5IDgwLjgzMDUgMjY0LjMyMyA4MC41MjU0IDI2My41MyA4MC4xNTkxQzI2Mi43NTEgNzkuNzc3NyAyNjIuMTQ5IDc5LjI4MTcgMjYxLjcyMSA3OC42NzE0QzI2MS4zMDkgNzguMDYxIDI2MS4xMDMgNzcuMjY3NSAyNjEuMTAzIDc2LjI5MDlDMjYxLjEwMyA3NS4zMTQzIDI2MS4zMzIgNzQuNDgyNyAyNjEuNzkgNzMuNzk2QzI2Mi4yNjMgNzMuMDk0MSAyNjIuOTE5IDcyLjU2IDI2My43NTggNzIuMTkzOEMyNjQuNjEzIDcxLjgxMjMgMjY1LjYxMiA3MS42MjE2IDI2Ni43NTcgNzEuNjIxNkMyNjcuOTAxIDcxLjYyMTYgMjY4LjkxNiA3MS44MiAyNjkuODAxIDcyLjIxNjdDMjcwLjcwMSA3Mi41OTgyIDI3MS40MDMgNzMuMTc4IDI3MS45MDcgNzMuOTU2MkMyNzIuNDI2IDc0LjcxOTIgMjcyLjY4NSA3NS42ODA1IDI3Mi42ODUgNzYuODQwMlY3Ny41MjY5SDI2OS43MVY3Ni44NDAyQzI2OS43MSA3Ni4yMjk5IDI2OS41ODggNzUuNzQxNiAyNjkuMzQzIDc1LjM3NTRDMjY5LjExNCA3NC45OTM5IDI2OC43NzkgNzQuNzE5MiAyNjguMzM2IDc0LjU1MTRDMjY3Ljg5NCA3NC4zNjgyIDI2Ny4zNjcgNzQuMjc2NyAyNjYuNzU3IDc0LjI3NjdDMjY1Ljg0MSA3NC4yNzY3IDI2NS4xNjIgNzQuNDUyMiAyNjQuNzIgNzQuODAzMUMyNjQuMjkzIDc1LjEzODggMjY0LjA3OSA3NS42MDQyIDI2NC4wNzkgNzYuMTk5NEMyNjQuMDc5IDc2LjU5NjEgMjY0LjE3OCA3Ni45MzE4IDI2NC4zNzYgNzcuMjA2NUMyNjQuNTkgNzcuNDgxMSAyNjQuOTAzIDc3LjcxIDI2NS4zMTUgNzcuODkzMUMyNjUuNzI3IDc4LjA3NjIgMjY2LjI1MyA3OC4yMzY1IDI2Ni44OTQgNzguMzczOEwyNjcuNDIxIDc4LjQ4ODJDMjY4LjU2NSA3OC43MzI0IDI2OS41NTcgNzkuMDQ1MiAyNzAuMzk2IDc5LjQyNjdDMjcxLjI1MSA3OS44MDgyIDI3MS45MTUgODAuMzExNyAyNzIuMzg4IDgwLjkzNzRDMjcyLjg2MSA4MS41NjMgMjczLjA5NyA4Mi4zNjQxIDI3My4wOTcgODMuMzQwN0MyNzMuMDk3IDg0LjMxNzMgMjcyLjg0NSA4NS4xNzk0IDI3Mi4zNDIgODUuOTI3MUMyNzEuODU0IDg2LjY1OTYgMjcxLjE1MiA4Ny4yMzk0IDI3MC4yMzYgODcuNjY2N0MyNjkuMzM2IDg4LjA3ODcgMjY4LjI2OCA4OC4yODQ3IDI2Ny4wMzIgODguMjg0N1oiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIGQ9Ik0yODIuNzAzIDg4LjI4NDdDMjgwLjY4OSA4OC4yODQ3IDI3OS4wODYgODcuNzM1NCAyNzcuODk2IDg2LjYzNjdDMjc2LjcwNiA4NS41MjI4IDI3Ni4xMTEgODMuOTM1OCAyNzYuMTExIDgxLjg3NThWNzguMDMwNUMyNzYuMTExIDc1Ljk3MDUgMjc2LjcwNiA3NC4zOTExIDI3Ny44OTYgNzMuMjkyNUMyNzkuMDg2IDcyLjE3ODUgMjgwLjY4OSA3MS42MjE2IDI4Mi43MDMgNzEuNjIxNkMyODQuNzE3IDcxLjYyMTYgMjg2LjMxOSA3Mi4xNzg1IDI4Ny41MDkgNzMuMjkyNUMyODguNyA3NC4zOTExIDI4OS4yOTUgNzUuOTcwNSAyODkuMjk1IDc4LjAzMDVWODEuODc1OEMyODkuMjk1IDgzLjkzNTggMjg4LjcgODUuNTIyOCAyODcuNTA5IDg2LjYzNjdDMjg2LjMxOSA4Ny43MzU0IDI4NC43MTcgODguMjg0NyAyODIuNzAzIDg4LjI4NDdaTTI4Mi43MDMgODUuNTgzOEMyODMuODMyIDg1LjU4MzggMjg0LjcwOSA4NS4yNTU3IDI4NS4zMzUgODQuNTk5NkMyODUuOTYxIDgzLjk0MzQgMjg2LjI3MyA4My4wNjYgMjg2LjI3MyA4MS45Njc0Vjc3LjkzODlDMjg2LjI3MyA3Ni44NDAyIDI4NS45NjEgNzUuOTYyOCAyODUuMzM1IDc1LjMwNjdDMjg0LjcwOSA3NC42NTA1IDI4My44MzIgNzQuMzIyNSAyODIuNzAzIDc0LjMyMjVDMjgxLjU4OSA3NC4zMjI1IDI4MC43MTEgNzQuNjUwNSAyODAuMDcxIDc1LjMwNjdDMjc5LjQ0NSA3NS45NjI4IDI3OS4xMzIgNzYuODQwMiAyNzkuMTMyIDc3LjkzODlWODEuOTY3NEMyNzkuMTMyIDgzLjA2NiAyNzkuNDQ1IDgzLjk0MzQgMjgwLjA3MSA4NC41OTk2QzI4MC43MTEgODUuMjU1NyAyODEuNTg5IDg1LjU4MzggMjgyLjcwMyA4NS41ODM4WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTI5My4wNzEgODcuOTY0M1Y3MS45NDJIMzAzLjE0M1Y3NC42ODg3SDI5Ni4wOTNWNzguNTU2OUgzMDIuNTkzVjgxLjMwMzZIMjk2LjA5M1Y4Ny45NjQzSDI5My4wNzFaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMzEwLjEzMyA4Ny45NjQzVjc0LjY4ODdIMzA1LjQ2M1Y3MS45NDJIMzE3LjgyM1Y3NC42ODg3SDMxMy4xNTRWODcuOTY0M0gzMTAuMTMzWiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNzQuNTI4IDgwLjA5NTRIMTE3LjMwNlY3Ny44NDIzSDE3NC41MjhWODAuMDk1NFpNNDAxLjk4NiA4MC4wOTU0TDM0NC43NjQgODAuMDk1NFY3Ny44NDIzTDQwMS45ODYgNzcuODQyM1Y4MC4wOTU0WiIgZmlsbD0iYmxhY2siLz4NCjxkZWZzPg0KPHBhdHRlcm4gaWQ9InBhdHRlcm4wIiBwYXR0ZXJuQ29udGVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgd2lkdGg9IjEiIGhlaWdodD0iMSI+DQo8dXNlIHhsaW5rOmhyZWY9IiNpbWFnZTBfNDkzXzk2MSIgdHJhbnNmb3JtPSJzY2FsZSgwLjAwNTE4MTM1IDAuMDA0NDg0MykiLz4NCjwvcGF0dGVybj4NCjxpbWFnZSBpZD0iaW1hZ2UwXzQ5M185NjEiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjIyMyIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJBQUFBQURmQ0FZQUFBQm9PcUZxQUFBQUFYTlNSMElBcnM0YzZRQUFJQUJKUkVGVWVGN3NmUW1jWEZXVi9uZGVkWGNTd3BJRVVGRVFoRVJBOUkrN0lrbW9kSGNTRXdaeG1WWkJFQVVIeEkzUjBiODQ0NUxSdjRxRE9JUGJvTGlOQWdvUlJVTUk2ZlJTa0VCRWlJWWdneEpFeERZdWRIYXlkSGU5ZC82Lys5Njk5OTMzcXFxN3FydXF1cXY3dk44UDB0MTEzMTIrZSt0Vm5lK2M4eDM2eDVWYnVnQWNIekRpeS8wWmdIcE4vWW5DZnlsc3grRmZvaXY4S1RDL0VjRHVxK0d2UmZwV04zaGgzN1lmUFU3VW1SZjJhMThPek0vUmErR1FiUDlvRzBaalJSMUY5K29lMUcxbUl2cGY5US9aaGs1ZlpqMTZIZUdLblg1TlAzWXNnNE1CU3MzZmpoL2RhOVpweDFSL0RwdVpocHlhbnZrOTdpZ0lBb3VIWFVvNHQ2aXQyMWM0WmdTU3MxTjZ2L1ROYWovRFZtWi9OVVRSZWpWNlFZUlJ0T3Q2TEhVV0hFekNOYm40aE4xR0J5SnhsT3hTZGQvNlJUdHYzWWZDSlpxWmJhRFBuN09XMUJselRsaEZQeEt3MDJmL2tzZHZ2T0NoaW02VXhvS0FJQ0FJQ0FLQ2dDQWdDQWdDZ29BZ0lBZzBHQUwwanl1M2JBVXdWOXVLMnNoTC9HUHNQa3NDUk1hWk1nR1RCbHJDMm5NTllNZjIxamFraGlta0ZXS0NRTjhURys3UmE5YUlkSXo2MENRMVJxQnBZSDlQem90Wkc3QnVaNjRGYlJrS2R3THh3T0g5NlVsWUVpRW1HeWd4SDRlRU1OMm1GaE4ya1RMY3d5YUpzU0tqTitZdVltUGYyTnd1SWFGYUcySWlYcFpyT091OWRkWnZTSkJvTi9SZ0xtdWpCNG9Jb0toTkdoTkRBcWkrWEdoZFROUXNUQi9GU0pRSWp4UTVrUHJkSlpmVUhLcHc5UWRNeXgrLzhhMzNWNkV2NlVJUUVBUUVBVUZBRUJBRUJBRkJRQkFRQkFTQkNZdEFnZ0J3U1FCanFMa21sbXUvbW1nQWExcW1EUFdJTlVoNmdCTTJaY3AyUzl2Zyt2WUUrWkRzTXpRbkN3ekd5SDUxckdqSCtMWmU2L1JFak9mWmpRaXcxclhtT1pJdTkyaGh4ampWUm5Ob0JOdnhZd0FjZnNJYTV5YWlJRUVDT1AzRVJJa2hFdHdJQVVNQ1JGNS8xNmlPOXFqd0hvdUxBNncxb00yNmkwVUFXUElrdXRFbEFSS1d2dGxzM2RkSUpJQTdueGhxdmE1MEh3bWM0eWlFeEpwRy94WVRBbUQwMk1tZGdvQWdJQWdJQW9LQUlDQUlDQUtDZ0NEUVFBaFF4OG90VzFsSEFKaDUyN0Q4MkpGdWw1UW1BZEtSQU5hK3RGYnZLRWdBaHp4SUdNOW1GcWxJQU9ObFR0cjFoU1JBSXNiZTdkaVpkR1RFSnlNQlFxKzNNZml0Rjl3eUM1cWtjTUFhTVJMQURZblFobjA2RXNCZ1lLeGovWHF4U0lCb0FwcjRNQTc4RkFuZ2V2ZGRiaU1aUlJHdklaRUdrQ0lCVEVoR3NrMFNOemNTUUFOa3N5aGNac2lRRU5HY05KMmt0ODZOVEZEdHpENGsycnIzamU2Tkp3VEE2SENUdXdRQlFVQVFFQVFFQVVGQUVCQUVCQUZCb01FUW9JNGZSeWtBNldqcXRDWkFKWkVBYVJJZzNmZHdrUURhbm90Z1RLUUVSQTUzTnpvK2FoSkZBaFFqQWFMYytHUkllVm9ISUJsZjd3eWFHdHg0MnQwUTlaZ28wR09ZeVd1eXdQVnNPNm4rOFpCTzJFTWlFc0RhNGRxVFB4d0prRGFjemUvRFJBSVlROXRFTEtSVEtXSmRoRUxkaEZndklKcmJjQ1JBc1JDUU5DYlJkT1BUWlF6OUNLUjRQOHl2SnZYQUlCNURXS2gxVU9aN1VRaUFNb0dTWm9LQUlDQUlDQUtDZ0NBZ0NBZ0Nnb0FnME5nSVdBSWdZWGpyTlRsUjdvVzJuR01iRmtzSFNKSUFLcGZmcFJDU3dvREZVcm5US1FGT1FFRkNNOENRQU5HL3crc0N1TWFpM1RhWFZkQmllckZSNjNyMVhVYkNEWTF3V0FsWGc4QTBTZlZ2Y0hFTmZoTjFZUDZtZy9nVCtnRFIzT1BRZnBlZmlGSWUzTkQvMkpzZTlXbU00emlOb0NRSm9JZHhTWUNFaG9JRFF5Z09hRGVtRkNZdXFaTDA4aWNpQVp3RDZLWXhoUHRrMTJjNEFaZlVjYlVXUmtVQ0NBSFEyTTh3bWIwZ0lBZ0lBb0tBSUNBSUNBS0NnQ0FnQ0pTSkFMMzUxaTFibVNNUndOR1FBTllqSE5waFllQzM3c2o1Si94VGtlb0F4aHBPaUFTR2dkNU91TGdiQ1dDc1RVY2NNREZjckFzUWU1cTEwWm55Smp0S2U4blFBa3NDR01QZU5mQWRJN3hFV0h6c1RZL3ZNd1o2Yk1ESHptMWp1THVwQjlZQXRzTWxJd0VNR1dEVEFmVEd1ZDd6YUxsR1FEQVdFclNpZk03ck5xd2lKYW80RWdsZ2RyZ1VDV0RtWjlNblVvZk1KVFdpNmJpUkFER2hrWTRFY05zbWlaR2tQa0NaN3dFaEFNb0VTcG9KQW9LQUlDQUlDQUtDZ0NBZ0NBZ0Nna0JqSTBCdlVRUkFPZ1VnTGQ1WDRPMHZ6T3NQelhaTEFzU0dzclh4blFDQVJBcUFRd0xFb29FamtRQzZGS0ZqbzhmZFZFQUNhS016VnI3WG0ya3Q2eUlEdUVSQ0JTUkFsSTdnek5JSmFVaDZ2R05qUHdwN044SjdwZE1CSXJRaUEzb2tFc0RrSDlqdFNCbjlVY0JBN05rZktSMGdUUUxFMFFMSk14Q21DN2lsKzV6VURFTWFoZWNuUlFLRUNKajRmME12dWRFVjlteU9PaEpBQ0lER2ZvYko3QVVCUVVBUUVBUUVBVUZBRUJBRUJBRkJvRXdFd2dnQVV3WXdFWW8vN2lTQU1TMU5MbmloSmtCb1lnNURBaFRvQXFSQzlPUG85UkhLQkdvak5DME9XRlEvd05qNDFzQ05ERmhETXNRWXV3YXJXVWR5TWVIYWlvVCtSK3MyWWZDT2Q5K1NBTU9rQXhRcEUyaWlCUkxCRzA1NGdSSDBjL1A5elJ4c1pRWE4zaVRheEN5RHJwb1F4WGJZUFF0Skl5Y3RJV2FBWWlKRGI3TEx5U1JLRFRwRWdodGg0V0kwd250QkNJQXlIeGJTVEJBUUJBUUJRVUFRRUFRRUFVRkFFQkFFR2hzQkd3R2dsaEY1a1pOQ2U0N2pQbUh2cGlMOVF4VE12ZFdMQkNoQ0FxVG5XSExPSmNRQlM1QUF3MWNJaUhQT1J5SUJiT3hDNUVyWDBlc3BuWUNVWWF5YkZwUUlUQW9ISnZQOHJZRnJoUktUS1FmcFBIb1RHWkJNSDJBb3NVZExUaGp5UXAvcHRPQmVXdlRQa2dDcDlSUVNCWkdoSHgwUy9iK1lmYkZueDU0OHk0UEVWUUZNSklCTks3QkVSckw2UVpvRWlQVVBTcjVSaFFCbzdHZVl6RjRRRUFRRUFVRkFFQkFFQkFGQlFCQVFCTXBFZ041cVVnRDBEUldSQUNsYmJsZ1N3RzFiSWgzQTNHOE1SWmQ4U0x4V0Jna1FEYWZUQWZUTjF2dnVlTStUWTlyWThwZ0ZjVjNQYVFQV0NPOHA4c1FwbXhCNS9JMWw3Z2pUbVRZbHlnU21QZjVtRWlZRVB1ekpFZnN6QnJpYk9oRlBOMDQ1Y0czdktFMUFvNVA0Tjg3ek1JU0VTU3N3R0JVVi9YTTMzZG00TkFsUU5Gb2lUUUs0bStHUUFQR2ZYUkZEZHcyRkpFQXltbVZZY1VBaEFNcDhXRWd6UVVBUUVBUUVBVUZBRUJBRUJBRkJRQkJvYkFSQ0FnQ0V1Y2JvVThzWmlRUW9ZZk5aSk5LUkFNWVlUeGoyMXJvdnQwS0E5cTJueUlPUkl4UkdJZ0dTaHVSd2tRQUp3OTZWNFRjTGMyc251cDV1Ti9jOVFSUWtoUWFkVlBlRWtXNUQzaFBHZit3ZFQ1WTZqSTNrV0EvQStac2hRNXgwZ1ZLaDh5WjF3ZWJsRzJMREVpRmFMOEF4M0MxR1doTWlLYmFvYjdRTFRhZy9PaEVUVGpzMzNjSCsyWVk5UkRSUEtVMEF0M3QzRDVMdldTRUFHdnNaSnJNWEJBUUJRVUFRRUFRRUFVRkFFQkFFQklFeUViQUVnTEhwNGhEcjRkTUJxazBDcEVPMWpmM3MySlk2Zmp5cUFHQ3VPR1VoSWdpVVhSN1lGNjBQUFNvUmFJemZVdUhuS2E5ek11Y2hyaVlRQytNbERWRVQzbTRNNTBTNHU1dXI3aXhndUFvQnJtRnZ4a3lHOXJ2R3IwdGtwRWlBbEtjLyt0WGs0anZpaE9uUSs1U2hyMzZORlA5ai9RSVRKVkNZKzU4c0VhaDN4NllBaEJpbDB3SE12TnhOTHhvSlVGZ2h3STN1c0NrVlJtUEFPU3pwcUJJQVFnQ1UrYkNRWm9LQUlDQUlDQUtDZ0NBZ0NBZ0Nnb0FnME5nSTBGdC91bVVybkRLQXJtRmZMQkxBc1FtTlBXMnJ5RGthYnRyWWRzcmRoV1pqc2t5Z2ErUkhuYVdxQzdpRDJkZUdpd1NvSGdsZzFlelZIQktlL2FUWDNzNDRaQjJNSzlyMWpEc0xNeVNBN3RNWXhjVklBTHNQUlhMbkRRa1EzdStJNkpuUWZyZTBvR3ZzcS9tcGFVWWFEU09RQUk3bjNTNUx6NlVZQ1pDSW5MQlFtQW9HY1pVQ1Z6VFFrQUFKVVQvWGFOY1JENmJNWURMU0lSckVwRWU0a1FDMi9LR09BQ2hhK2pCKzN3b0IwTmpQTUptOUlDQUlDQUtDZ0NBZ0NBZ0Nnb0FnSUFpVWlVQklBRkM2REtBcjZGZEVaSzlTRXNCNDVHTnh3TmhRZG14Rk8rV0VoNzhvQ2FENWhWUWtRSHBlMW01M3lJTkVKRUNpNzBKUCtMQWtnR05BNjZLRWhhRUhhZVBkSVJOY0E5em0ycWM4NHRhVG5maDdiUFJHeTQ5S0JWZ3l4VWtUaURRUWRDVUIzY2FRQjY1Um5XNmorZ3VKZ25KSUFHTmtHOFpDMytNYStvWklLaFlsRUUxUWorVkdGamhyTXFVUW95SHNxaFBSQkNiMUlNWkJyOTA1WU1uSUVYdDRoQUFvODJFaHpRUUJRVUFRRUFRRUFVRkFFQkFFQkFGQm9MRVJzQVJBS1VQY2htNm5IT0VGM3ZwVTlZQ0VNZTZFNVJlUUFNYUdIYzdRTDVNRUtKcVdiL2FuRkFuZ3hvUTdBbm14QXI5TFZpVFYvSk1oLzI0NlFCU2lIaHJaVHVpL0t3d1k0NTFVNzdmaEZJNmhHeHJ0SlVnQUhRdy9QQWxnbG1ERC9sM1FJNlBhcGxLRWhuZXl0R0NDWURERVIzcURuV29DRVMrUndrMjNkMG1BaEthQzFoZElSSVVVRVV0MGNZdmI2dms3NG91R1lJbUpqT2pPZEtxQXBBQTA5Z05NWmk4SUNBS0NnQ0FnQ0FnQ2dvQWdJQWdJQXVValFPZmZ0bVVyT3lrQTZiQjhZeGpxRFBwRU5IdzlTUURYcGl4SU5VaUl2VVdPWWRldWR5TUJ0QmxZWEJQQUdTUld5eThVcWtzWTZTbkRQREorVFRwRENSSkF0ZEdUTW9acUlzemVURDVGQXBqUWZrczhoUDJZRmNWanV1Tzc5MFI4aENNZTZIamNZMDBBblJxZ1NRQjNyUTZmRWFVZU9PUktySXZnR3Y4eENSQVJTUkhaVVUwU0lONnlwSEh2a2tFbWtzT1FLQzRKb0FnQW4ybjU0emUrOWY3eTN6YlNVaEFRQkFRQlFVQVFFQVFFQVVGQUVCQUVCSUhHUXlBa0FKQktBUmdUQ1pBeXhvMDliS0F4eHZqSWtRQmg0SGhDOEM5QkFpVHNjbTFlV3NQWkpRSGkxMXlEMVppdllVcEF3dE5zREdEMzN4RklBQ2ZYUEZwbkVYSEFoRWZjYldNTThsUWtnQ1VTNHBCMzI0V1Q5KytxSGhhVUNYVEtGTHI1ODRZSVNKTURiclNDSlFxS2U4MDF3TU9UQUNIeUNjSERpQVF3NlFmSktJRVk3d0p4d0FUWjRPQ1VJR3hzTElTZG0zdGUwcFVTSEJLcG53SXNmMVFJZ01aN2VzbU1CUUZCUUJBUUJBUUJRVUFRRUFRRUFVR2dJZ1FzQVZCZ1hLY3M5NG9pQVVZZ0FXeGZvUzNuQ0FNNmRuSGtYaTZYQkRDbXZWTWhJQkdSbnlJQjNPajBLRmgvV0JLZ0lCM0FnT1Y0NnFOd2RwdHdiM2tBbTV6dnVzOWRoa1gvUFIwSllEenlFWjhRRFdSMUJyVmg3NGJReC95Q1VlalgvenBqR2JGQkd5SGhWQUpJcnpFaWFqZ01WSEJGK2txU0pYcnZiTFVDUGU5RTNyODlVNlZJQUUxMkZLc1E0S1JTdUdxUkZqY05reUZCWE54YzRpU0cwMVl5RUFLZ29rZUdOQllFQkFGQlFCQVFCQVFCUVVBUUVBUUVnVVpGZ043MnM4MWJtYjI1WmdGcEFUNXIyS2FjNEtGQmFsM3FzZFBiOWxNUkNSQVJBUWtWL1NJRWhBdHlVdEF0ZmlVUnZaQk15N2MyWWRyKzFobjdJNUlBWmtwV0hOQW16cWR5M3NQSk9TeURHVERNNVkvK2JyM2NjYWQ2Zms2SnZiU24zeTFBNElqOW1iRllxeTJtSXdHc2ZvQzJmcFBUanNzQkZpTUJZb002R1kwUlZ5NHdEbmN0cjVqS3c3Y1JBTnFMbnhBSDFPdUoyemlicmlFMDVJT2xlTnlxQjA0MFFkckRIeHY5U1FLalNDUkFQeVFDb0ZHZlh6SnZRVUFRRUFRRUFVRkFFQkFFQkFGQlFCQ29BSUdRQUFCb0xyUEo4by8xMjZ3NWxqTDByYXAvQlNTQUtUMlg2TXJSMUZPdkI4VklBTmNtZEc4dUVwWHZrZzl4N25xaEpvQnJBTWVoNEZFa2dNbHRMeENMUzNpZzNUSi9LV0ZBQjdTMHlKM3J1WTVWOS9RTlRvU0FNVktqWEg1SDRUK1JzKzlFdXNlVHRXWHhpaG51bGdod0lnZ2lUc0FoQWN4MFROU0JTMTZrVWpMY2VicWUrQ2pQUDU1M011Yy9KZ3BDMnFmVWdTaVdSbUUzT0tsalVGQW0wQkFkZGkzRGtRRG9oOGZMSC8yZWFBQlU4TnlRcG9LQUlDQUlDQUtDZ0NBZ0NBZ0Nnb0FnMElBSTBOdCtGbWtBUlBuMnhVa0FiVS9GeTNOVi9ZM21uUTJIVHdyd3VaSHZybFBjc2VYQ1A4Y0VRWkZJZ0xHU0FQcCtRMXlZOVZqYk0xVWhvQmdKWUF4bEozZmNVYnF2akFTSTF1dm0vTWNDZVhFZWZyTFBPR29oamhBd2dRYXg4UjJIMENmeisrTm9oS1RSSG52MUV5U0FhWjRpQVFwRTlJeWg3Ump4Q2ZMQzJYQlhDNkNnUW9DK3Y1aGVnQkUwVEpBbktRTS9rUktRMGd0d3VCRWJwaEtkeVloRUlFWS9Dd0hRZ0k4dW1iSWdJQWdJQW9LQUlDQUlDQUtDZ0NBZ0NGU0tBTDN0NTF1MndsWUJxQklKa1BiT3A5TUgzSktCTm5mYmhNVVhSZ0pZKzk4YXBzbGxsa29IR0k2NE1IMG1EY1FvR1VEN3FDUHZ1eVUyakhIdEdObnVBS1hTQWVLNCtrUW9RbFFtMERYeTlZemNTSUFVVXhHSDNhZElBSE9yazNvUWt3T09Ka0NpWFZ4YTBNMlJOMlJDckNtZ294QVNVUVB4K09GT2FHUGFwSXU0WWZhaDZGOEIyS21VaVpKRWdZdUozdlBVWnFlSkVVdlUyT1pPQklWdW5GcHZQMGdpQUNwOWNFaDdRVUFRRUFRRUFVRkFFQkFFQkFGQlFCQm9QQVRvZ3A5djJjb3FBc0J4aDd1UkFHa2pPamE0b3NWYVZmOTBKRUFSellCME5FQWkrdHRwWDFBaElIWmc2L0FDSmZibjNwMUtXM0JkKzVINTZSanlXa3d2OHYrYUtQdG9NWFljYmVTWEVnZE1HWktKVWdYR3FIZFNCdUlTZWNNYi9NVUVBNjEzMy9YS20wMUlGUnN3WG4rVGVwQW1BYUlsSnNVQjAxNTk0eDEzVXc4c0tlQ2tDN2lHZnpFU0lDMFc2SllKVEdnb3VQdGVza0pBQ3JlS1NZQjQzUVpqUnlPZ255bVFGSURHZTNiSmpBVUJRVUFRRUFRRUFVRkFFQkFFQkFGQm9FSUVRZ0lnTEFQb0dNRHBkSUFDRWlCcGU5dDBkaE84UDVKSDNyWFAweVJBSFBLZHFoQlFoQVJJbHdsTXJNRUo2dzhOL2RSQVVUcEFSQUtZOWJuM2x5d1RtTkFDY0R6aDZVVTdrUVBHSUU4WStCWnZZNUFuYytOZFpxSVNFc0ExNkswaXYvSGU2OVFEeXg4a2lJUlVPb0FHeFduaWVQcVRrUkh4ZnJwNkJVbkJReHRYNGVDU1lHYjBRTEZJb0t1em9La0xXeDBnU3FFb1BxNmJXbUdJSEJQOW4yUk1ORUhTSHdnQlVPRmpRNW9MQW9LQUlDQUlDQUtDZ0NBZ0NBZ0Nna0FqSW1BSkFOY2VqUmFTVEFjb1JnTEU1blBrWVRlL1IxNWtCNDZvbXR4K0FIN0MyTmFEcHZnRUsyUVh2ZXlVQ1hTMEIyTHJML2JjRjZ3aEtOUWpzTE1hb1VLQVl6b1dsZ2tzUVFKWWhmLzBJaDEzczhrSXNCNXhXOXV2ME9CMUNRUHJoZGZsQmxsSi9sdGoydXhZaElVcDRaZTQzNjQzU2owSWI3VmR4R2tDZGg5dFdEK0g1UWVOUmtNYzdsK2NCRWhxQUtpNVJKUDB3cjFqZURwcVJQMXJEMG5ncWpQbzRvOE1qNENaekt6KzFXdU54bFJ6TWNLQzRWbExFeHZGcWdPaytyQ1JBRUIvd0JJQjBJZ1BMNW16SUNBSUNBS0NnQ0FnQ0FnQ2dvQWdJQWhVaGtDQ0FLaVlCTEEzYUFPMFNHNS8rQXBSUC96Z2s3NUhLdG9ndWtJcW9QUlY4dVY4NFQwRmZ5clN4dHcxekV2aG5JWjlQVDEwUGw5NkdZbU85R3FHNjl5K1ZxUlJVVEIwdTFUejR0M2trK3NxQ2E0ZnRVdjFtV2llZUMzNnBkZzlMbFR1bkpwMDUrcHZUVTRqKzNzNFdCNUU5Sndnb004UzRUbEowY0FpK2dHcGNvSW1DaUxzWHIxbUNCdm5nSWRFUjhSTjlHZllYLzZ3VkFHbzdNa2hyUVVCUVVBUUVBUUVBVUZBRUJBRUJBRkJvT0VRb0F0WGJkbktvUWlnNjg5M1BmakcwMXRlaFFBM0VpQzB0eUxqck04alB2Zm1ONTMrcTRaRFNDWThMZ2ljK29GVjh6TGcxV0RNUzVZUmpMMy9ybTVGSEExUldEWXh0dnVUcnhrQ3dBdTg1UTkvNzAzM2o4dENaVkJCUUJBUUJBUUJRVUFRRUFRRUFVRkFFQkFFNm9SQVNBQ0VHZ0EyWnIrNG9SKzlQbW9Tb0krRUFLalRsazZPWVJRQjRBR3JDVHhQR2ZjdUNlQWErK0ZxRTBJRmNWV0M2RFZIRThEOGJvTUlRa0tnMy9PRkFKZ2NwMFpXSVFnSUFvS0FJQ0FJQ0FLQ2dDQWdDQWdDd3lGQUY5NitlU3ZZbTJzYXBjVDFVd0wzU1JMQXNhZXNyV1g3U2VvQTlCRWtBa0NPWXZrSWhCRUFoTlVjUmdBbzNRSjliMEpzTVRiMm85ZmRhZ0d1QUtDKzJieWMwSENnZnZLdy9PSHJKUUtnL04yUmxvS0FJQ0FJQ0FLQ2dDQWdDQWdDZ29BZzBJZ0kwTnR2Mzd5VlFYUEI1WHIzSzRnRWlHMHlJUUFhOFhTTTQ1d05BUUFnakFBSTVTQWR0Y2l3bEdCY0JzQVJCMHlLRStvamFDc1l1R0tHRVlFbEJNQTRick1NTFFnSUFvS0FJQ0FJQ0FLQ2dDQWdDQWdDZFVTQTNuNjdTZ0hncUF4Z2FCSEZaZkhjZVJnSHEyNmtEQ2Y3OG5CUkE2cFJ3QkFDb0k2Yk9obUdTaEFBc1JWdnF4SFlsQUNIQkRBbEpNTzZFYkhUUDY1Nm9Nc2hHdUpBcDdYMGd5UUNZREtjR1ZtRElDQUlDQUtDZ0NBZ0NBZ0Nnb0FnSUFnTWowQkVBQkRtR29zcE12UXJKd0hDMnhJZTJzVEFmY3lTQWlDSHNYd0VRZ0xBbzlVcUFpRDA5ZzlIQWppdkpVZ0EvZmQwbVVBM1ZZQVpRZ0NVdnkzU1VoQVFCQVFCUVVBUUVBUUVBVUZBRUJBRUdoaUJNQVVBUkhORG1UVlRIejVCQXFSQy9xMnhGZjB3YkNSQTNGWUlnQVkrSk9NeDlaQUF5SGlyd1R3dkhOOTE2UnNWd0pRNG9HcWl2UC9GSWdGTUgzRWtpOVVMNkdkSUJNQjQ3TEdNS1FnSUFvS0FJQ0FJQ0FLQ2dDQXdKUkNnRlN0V1VDNlg4L2J1M1Vzbm5uZ2k3Zm5ybmlQOWFYNXpxZFhuOC9uOWUvZnUzWDNZWVlmeDBVY2Z6U3RYcmd5TTlQZVVRS3lHaTZTTDduQ3JBQmpQdjRtZmRuOTNRdjRySndHRUFLamhKazdHcmwvOGdWWHo4b29BQ0RVQXpIbE1pdmtWRXdkTWt3QUo4a0FUQ1NrU1FBaUF5WGlBWkUyQ2dDQWdDQWdDZ29BZ0lBZ0lBdU9Dd0lvVks3eGNMamVIaUk1c1F0T3pmUEtmUjB6emlPZzRCaDhMNEZBQWh6QTRVMnFDQkJvaTBINEdid1B3SkRGdENTajRiUkFFNnZlK1hDNlhINWZGVFlKQkxRRVEyVWFPdDk5RUE1VEk5UjlPRTBEYldSWWVCdm80a0JTQVNYQmU2cmFFVXoreWFsNG1yd2tBZlRZVHBRQjFVRURSQ2dGT1JZQW8vRjh6Vms0bEFZY0U2R2VXQ0lDNmJhd01KQWdJQW9LQUlDQUlDQUtDZ0NBdzZSRElack9ITmpjM0h4TUV3Y3NBTEFEalJXQWNDOEp4QUpxcXRPRDlBUDRBeGkrWWVDMkFYKzdldlh2YnBrMmJocXJVLzVUb2hpNjZZL05XcUNvQVVaWjFnZ1NJQ0lGWUU2Q0lZYTlyc0VjR2xwc09rR3JiRndnQk1DVU9WTFVXcVFnQUw1OVpUY1M2Q29DYkJ1QW8vRVVIMUZZRVNPc0ZtQ09zU0FCS3BMam9Nb0dNZm1hV01vRFYyampwUnhBUUJBUUJRVUFRRUFRRUFVRmdxaUJBYlcxdGM1ajVaUVJhRHFDVlFNY3krTEFxR3YzRnNQUUI3R0x3YnoxNE4rZUQvRSt6MmV5MkZTdFdxRFFCdVVaQWdDNWFzMlVybU9kRzdZcUUvRmNuRWtBSUFEbUtGU0VRUlFCa1ZqTmhuczNyZDFrbGZTN2RVb0N1dXI4ckdtZ2tBOVMvcGtLQUl3ell6NEVRQUJWdGpqUVdCQVFCUVVBUUVBUUVBVUZBRUpqS0NOQ1NKVXVPenVmemJRQXVJOUJwQUk2MHhtUjlrUmtBc0luQlZ5MWN1SEMxa0FBamd4OFNBQVRNdGQ3KzBaSUFvWEZtL2tmcGlnQkNBSXk4RjlMQ1FTQ01BQWd5V2dOQUcrNG1uTjhwTjVIMitFZEdmbG8wVUo5TGRUNVQ2UUVBK3RrUEpBSmduRTlmTnB0dEdob2FtakZ6NXN3WlFSQk1aMmIxMzdNODltWUVGQnhEVEMxRnAraGhCNERkUVJEc0lLSmRBQTQyTnpjZjJMTm56NEdOR3pjZUZMR1ljZDVZR1Y0UUVBUUVBVUZBRUJBRUpoVUM4K2ZQbjkzUzB2SjZZbm83Q0djQW1EWkJGdmhyOHVqMVhWMWRUMDZRK1V6WWFkQkZhelp2SlhoaEJFQnhFa0M5NGxRSVNHZ0NwQ29FSk1vQUpsN3I4MzNSQUppd3AyQUNUdXpVajNUT3kzQitOVE4wRllEWWlFOXJBWVJza3oxNzBjOUY5UUxTbFFTaXB2M3NCY3NmL3ZxYjdwK0FNRXpXS1ZGSFI0ZTNiZHUyUTJiTW1IRUNNNTlFQWMxamowOGdwaE1ZZkF3WVJ6SHhkQUo1QUpSQ2JLeEM2cUJDb0R5RFZSaVkrdThnZy91SXFRL0FIK0hoY2ZWdkpwUDVYU2FUMlhib29ZZm1WNjVjcWRySkpRZ0lBb0tBSUNBSUNBS0NnQ0JRQVFKSzJPL2UzTDNQRDd6Z0NnQnZZZkNzY2ZMNGw1cjFBSU9YOS9UMDlGU3dyQ25abE41NTUrYXR6R2tOQUczMHAwbUJvdWtBWlpFQWZaN0g1OTd3dXROL05TVlJsa1ZYaklBaUFEek9yeWJRUEVOTUdZVi9HL1p2MGdBaTlpb2N3NjBDVUVnVUZKWVRaS1VCSUFSQXhmc3ptaHZPT09PTUdkT25UMzh1RWIwQXdDSmllZ2tJU2dsMkRnQ1ZLMWJVeUIvTldQb2VwUTY3QjhCVEJQcGpnT0JlSXJxYm1SOFBndURQb2g0N0JtVGxWa0ZBRUJBRUJBRkJRQkNZTWdoMGRIUzA3T3pmK1E5TS9GRUFTdVN2cEhyL09JTGlNL2pDbnA2ZUg0N2pIQnBpNkpBQVVDS0FzU3E2K2c2dUJQMWlFaUF5ckdKRFAveTVSSFdBc0szOVgvUURNd2tCMEJESFllSk1Nb3dBUUg0MW1NSUlnRmlRTWtvSGlLeDkvUTl6d3VOdmlRTFR4a2taTUljemJHTWlBTWlYQ0lBYWJmMlNKVXRtWWhESEJWNndnSW1YZ3ZFU0FNZVA0d2VIU2d2WXFuTEZRRmpOelBjZmVlU1JmMW01Y3VWZ2pTQ1FiZ1VCUVVBUUVBUUVBVUZBRUdoWUJKUzZ2K2Q1N3liUXg3VFRacUt1UlFpQU1uZUczcmwyODFhRUVRREdjRGRPdUNRSmtFZ1BHRUVZTUUwQ01IT2Y1MEVpQU1yY0ZHa0d2UGdqbmZQeWlnQUEyU29BNWd5NlpmMHNMV1hEKzExeUlLNE9ZRWdFVnh3d3ZFVkZBSkMzL09HdnYwNVNBS3AzOE9pY2M4NlpzWC8vL3RPSjZZME1YZ0xnZWJybWE3VzkvS09kdFVvRjJBM0Nvd0JXTWZPZDA2Wk5lM2pObWpXS0NIQ1NtVWJidmR3bkNBZ0Nnb0FnSUFnSUFvSkFZeU9nalA5TUpuTXBHTXI0UDJxQ3IwWUlnREkzaUM1ZXUza3JxektBQ2JzcFRRS28zcFN3bi9sZUhHa0NwRWtEMTlHYUlnSDZpQ1FGb013OWtXYlFCQUFGcThIc2FBREVrUUNXQkxCaC82WEtCRVlrUUNGUkVKM1FNQVVBUWdCVTY5QXBqNy92KzY4aHBnc1p2QWpBc3dHb1BQNkpmS2xVZ1Q0UTdxYUFic3B6L3A1Y0x2ZjBSSjZ3ekUwUUVBUUVBVUZBRUJBRUJJRmFJcURDL25mMDcvZ1hFUDVGSy96WGNyaHE5QzBFUUprbzBzV2RVUm5BbElhYTlvRzU2UUFSQ1JDYVRUWWRJTEtzb3BCLzgxcHlaSjBPSUFSQW1Sc2l6U0lFd2hRQUNsWVRNRTlaNlc1YWlSc0pZR21vbFBCZnVqcEFlSktMVkFnSVJRQ1pKQUpnakFmdm5IUE9PV1QvL3YwdlkyWVZJcWJxd0NwaG1FYThkaE9vRTR3Yjg1eS9LNWZMcWNvQ2Nna0Nnb0FnSUFnSUFvS0FJREJsRU9qbzZNanMyTEdqQTR5dlRmQ3dmM2RQaEFBbzg0VFN4WjFLQThDYmE0MnMwSmgzOC9oSElnRWl5eXBKQWhRSUF3b0JVT2FHU0xNSWdUQUZ3Rk1SQUpobnhQeWNDbjZnRkNtZ1Rxd3JEaGgya2xEOWp3KzJLdzRZUmdBSUFUQ1dZMGRMRnl4OWx0L3NYd2JnYlF3K0FVRFRXRHFjQVBlcTlJQitNRzd6Mkx0dXg5NGREMi9hdEdsb0FzeExwaUFJQ0FLQ2dDQWdDQWdDZ2tETkVXaHZiMzhSQi93REFLZlhmTERxRFNBRVFKbFlhZ0tnU0JXQUFoS2dWSmxBblM0d0hBbkFLcnhXVWdESzNCTnBwZ21BUUJFQXdEeWJXdUlZL1NIRlpIN1h0bjBvRG1oQ1dVeUZBQ2N2cFZpRkFDYjBzeThSQUtNNWRDbzBiUHYyN1ZrQ2ZSakF3Z2xVQjNZMHl5bDJUd0RnTVFMOUFCNitMM1ZscXdXcjlDTUlDQUtDZ0NBZ0NBZ0NFeFdCSlV1V1BNUFArOWNBT0c4Y1JadEhBNDhRQUdXaVJwZXNNMlVBMVIxdWlMOFRDUkFhV0tuWEN0SUJDaU1Cd3RzaW9UVWhBTXJjRUdrV0lhQWlBRGpEcTRNd0FzQTJKM1ZLQUFBZ0FFbEVRVlFJVWpwblRCdjk2Y2dWUXdLWUdKUXdGYUFJQ1dDaUJSZ3NCRURsaDQ2V0xWaDIxR0RUNFB0QXVCVEFzeXJ2b3FIdXlEUDRQZ0NmRFlKZ3ZlZ0ROTlRleVdRRkFVRkFFQkFFQkFGQm9Fd0VWcXhZNGQxOTk5MGZJTkMvQXppOHpOc21Tak1oQU1yY2laQUFDTXNBV2hHQUVpU0FVeFl3SVFhWUtoR1lUZ2NJN2JSQUNJQXk5ME9hYVFRaUFnQ3JBWjRYaExuN1JVZ0FSNnM5c0tVQWRabEFJL3lYcmc1Z2lBT2RNaEJxQUhoWS92QzFVZ1dnek1OSFM1WXNPY0gzL1N2QmVCdUFtV1hlMStqTlZEVEFreUI4TjVQSlhOZloyZm4zUmwrUXpGOFFFQVFFQVVGQUVCQUVCQUVYZ2ZiMjl1ZHl3RDhCOEZMckdXNGNpSVFBS0hPdkxBRmcya2YyVWlFSkVOcE5veWNCK3BnbEJhRE1QWkZtS2dMZzQ1M3pLSS9WckZJQXJQSHZrQUNHZUhLcVY3akNmNGxJQUljRWlLc0JhQ1pBYVFBSUFWRDJtVnVjWGZ6aWdJTFBnOUFHb0xuc0d5ZFB3LzBnck1uNG1SV3Z5YjdtZjFlc1dLR0lBYmtFQVVGQUVCQUVCQUZCUUJCb2FBU1U5My85K3ZXWGcvRmZEYXJuSkFSQW1TZVFMbG0zWlN2QWM5MzJ4UTM5NGNRQmk2UUhKUEt6U1FpQU1qZEVta1VJR0FJQUZHa0FoREtUK3Qvb2QwMVRsYWdRRUZkeWp4b25oZjlZL3g2U0FQMU1FZ0ZReHJtanhkbkZwd2RlOEhVQXIycUEwbjVsTEdsTVRSNWs4QmRtenB6NXMxV3JWdTBmVTA5eXN5QWdDQWdDZ29BZ0lBZ0lBdU9NZ09QOWY5azRUMlcwd3dzQlVDWnk5QzVGQUJEbXhtSDkwWjNEa2dCT3VrQTZIU0M2VjV0bk1RblF4d0hPdmVGMXAvK3F6SGxKc3ltT2dDSUF2SURDQ0FCMUdGVWFRRWdESlA3VklPbHo1cGI1QzZVbmRPcUFhaFhtL0R0YUFFNkZnSDRtbGhTQTRjOGJ0YmUzdjVCOS9nOFFGamVZSUV5dDNrbUtrK3BqNGkvTm5EbnptMElDMUFwbTZWY1FFQVFFQVVGQUVCQUU2b0FBdFM5cVA0K0pyd053V0IzR3E4VVFRZ0NVaVNxOXEzdnpWckFYUmdEVWhBU0kraFVDb013TmtXWVJBb1lBQ0tzQWFFWXFzdUZqRXNBVi9UZmFFNFlFc0dkWkV3WlJCRUJNR0Rnc1Z6OURDSURoemwxYlc5c0xFT0JhRUJhSjhWK0ExRzRRdnR3eTJQS1ZOZXZYUENYdlgwRkFFQkFFQkFGQlFCQVFCQm9OZ2FWTGw4N3hoL3l2TWxncC96ZnFKUVJBbVRzWEVRQ2d1VmJsWHh0YjV2NkVPR0NxN0pxcHk1N1VETkJsQVpQaWdIMkJMeG9BWmU2Sk5OTUVRSVpOQklDMjNhMm5QMHdJaUR6OGlUTVovYjJ3RktCSkdZakxCTVo2QVN3RXdEQW5idW1DcGNmNHpmNTFERDVialArU1FCMGcwSSs4SnU4em5aMmRmNUEzc0NBZ0NBZ0Nnb0FnSUFnSUFvMkV3T0xzNHBjSEZQd0VoT01hYWQ2cHVRb0JVT2JtMFQvMU9HVUFUYW0vb2lTQU51eUhKUUdNZDdhQUJHaHNBb0NaT2xhdTlHYnZQTkhiT1hzNlBiVnZwbGNtdm5WcTlrVDF4dmxqOWJvYVMwOVBEdzdPWlM5ekc1aFBNa1o5OFVpQVpHbkFwT2Mvam1wUktRQ0tIaWdTQ2REUEhFZ0tRSkhOeW1hejB6T1UrUWdJL3daZzJsajJjd3JjZXhEQWJWN0crNWQxNjladG13THJsU1VLQW9LQUlDQUlDQUtDd0NSQm9MVzE5ZDBFdWhyQW9RMjhKQ0VBeXR5OGtBQklsQUdzR2dtZ1ptREZBZnNDdjdFMEFKYmRzWFZheSs2RHp3aUludFVFUHM0UGNESjdmTHdYNEprTUhNTkFVeXcwbDBvdlYwdDN0TUdkYW5YUm4yMG9lclJMN3V0RzRNNzhNZXJHVnJXUGZqTjljeENudFFkeFB3RVlJVU5oTzNQeTMvWE5xb3V3amZyQnRiQ2paSHQ5SlNUMjQ3bmJKb0ZlWjl6T2RCVWtGaHBOTHIzMldOaFByekZzRnZVVkJKaEdZQlgrUDAwdFE2MHB6T00zYVFCT0ZRQ1hHREN2dThBYVVzQWxBUnk5QUNFQWlqd3NPam82TXR1M2IzOGpFVjBMeGpGbFBrK21lck1oRUg3bysvNm5jcmxjRlZtNXFRNnJyRjhRRUFRRUFVRkFFQkFFYW9WQU5wdHR5bmlaN3dJNHY4RkZub1VBS1BPUVdBTEFHRXh1V0w4eHJLdzU2SWovbVp6cnBLR2xmaXRTRVFEbzgvTVRPd1ZneFFyMkhwMzMwQkVITS95OHdNT3JpS21WT2N3L2Z5NHhaaXZmY2JUOFFtTzNFSi9ZcGs3ZzZwclZEZ2tRaHJNN0crYmE3WEdlZStTL05pSHZOalhEcXVBYmxYd3ppTFdXUytXK3h5SjVkZ0k2Uk42V3pVdUZ6anRqSlFUMzdPVGpPWVJyU0xydXRZcS9xU1lScS9wYlNQWENvK2trdy9YZFNnQkpFaURhRXpPVzRpK000bjhpSFVBVEJoRUpvUGN4YXR2UGdiZjg0V3VYM1YvbWUyWktORnUwYU5IcEhubnF3K0FsVTJMQjFWdmtFS0RLVi9LSGUzcDZmbCs5YnFVblFVQVFFQVFFQVVGQUVCQUVxbzlBYTJ2cmN3ajBjd0F2clg3dmRlMnhyZ1NBMGszSTUvUExBSnhXcTdLSnpMelBZKzhYZWM3ZmxjdmxWTFJwVlM2NnRHZkxWbmJLQU1hR1pXVE1WMElDdU9TQk1kS2lXVktmNS9HNTMzM3R4S3NDMEhITExSay9jL0l4OEdraGdMTVI4SmxNZENTQW1hRjR2Q2s1Ri82cjhIQk1kV05NdW45eUxYbFhlRDYyWjQzNW1ZZ0VHSmtFTUdZcmhaWjF3cmpWbXhaNnV1MmNVcE95aEVNUllzRGNaTUxrdzhubzhYVHo4Q1NrKzNjODhuWlI1ajdUaFZQQ3owd3U1Z1ZTSkVDcTNGOTBocUwvbWVpQkFtTEFhWk1tRGx5YzFHdXVYb0NwRUVBc0JFRDZTYUpDLzV1OHBxc1pmQ21BbHFvOGFhWldKd01BZm5CdzRPQ0g3cm5ubnIxVGErbXlXa0ZBRUJBRUJBRkJRQkJvSkFUYTI5dGZFZ1RCV2dJZDNVanpMakxYdWhFQStydnl4d0c4aDhHSFdBOTQ5UUZVSnRBT1l2cEVWMitYY3N5bExNM1JEVWlYOWtaVkFHTERsdUpxQU9FUWFZKytHKzZlZWkxaEVDZGU2L004VENnQ1FCbit3TW5QWmFJT0FHOWx4bHhXWlM5aUI3OUZ0RElTd01GUDkxQ3MrcHoxclJlTkJBak4xVVFFZnpvU1lGZ1N3REdLQ3haaHJlcFlSQzlxWTd6L09sZmVJUUhpb3haSENGaGlxQndTSUIydW54b3IralhwOFhjSkpCdVFvQ3NBRkc4YjlWRlFKdERSckNoV0lZREEvVXplOG9ldmtRZ0FmVmFvcmExdFBoZy9CdkNNMFQxVzVDNEFUelA0L0o2ZW50dXI5YkFXVkFVQlFVQVFFQVFFQVVGQUVLZ3lBdFRhMnZvUEJMcHRnb1gvN3dPZy90dXZ2YTlOb05BNXE0enQ2U1V3eUlOd1huZDN0L29PVzlOcmNYYnhpd012VUpnZFg5T0I0czQzWlpveXl6czdPLzllamZFaUFrQlhBYkNoMGFIUnI0MnBVWkFBMnB4RVhGbUErenlhR0FTQUN2WGY4cUpIanN2NCtZc0FkRERoQlRZZDN1VlUwaDc3VkNSQXRNYVlMVWg0NUJWK3JsaWlHd21RK0RrMjlNMW14dUgvWlpBQWptRWQyZkN1MTc1SU5FRENxSS9iUnQ3OUpBa1FFd0p1SklIYnhvbENjQmdPRTRYZ2V2dHQxODc4d2xpS3lHWHY0R2dNK0RoOUlHM1F1MlVBblV5RkNHL2RsNXQ2WUlnS3U0b1VZUkZHQUJBSkFhQVA0UHo1ODJkUGI1bitEUVlyWWt5dXNTREErSnpQL21lcUdiSTFsdW5JdllLQUlDQUlDQUtDZ0NBZ0NMZ0lLTTJuSFR0MlhBSEdOZU9NekY0UWZvY0E5d0hZUXFBL3NzZDdnaURZNDNrZUIwSFE3SG5lNFJUUTRRQ2V5UjZmd013bmUvQ09aL0N6dE1lNmp6eDZWMWRYMXlPMVhrdHJhK3M1QkxvUnlubGNqNHZ4cHdEQk9iMjl2UTlXWTdpWUFBaHR1eEo1N3ZxMXlNYU1EY0w0eHhLUkFIR2ZmUjZOZndyQU9hc2VPR1Q2VVBOQytQUWhFSlNYYzBZNmpzSnE0STBZQ2FBVzU2UUVGRWtIY0p6YXJuMWU4TE5qdTd1TytIaC9qWUNlWTM5clAvM3c2UUFKZTkwbzREdk1obXRCdTdrZjJqQ1A4d21pZlRjaWZHbHl3RTA5c0dIMkRxR1E0QlppaGlOQk1zVmVmVzNJdXhhN0xmOFhRV0pJZ05EanI5Zm9raDlGSXdIY3M1c2tBZm9CSVFETVlXdHJhM3M5TTM5ekVvU0JWZVA1T0pZKzFESDg1MTE3ZHYzM3BrMmJsQzZBWElLQUlDQUlDQUtDZ0NBZ0NFd29CRUlCd0V6bUdqQStNRTRUVXdMS0R4UFRkd0lFUDI5cWF1by80b2dqRHE1Y3VkSXZOWjhWSzFaNHVWeXVwYW1wYVZyelFIUEx3YWFEejI3aXBtWnFvZTFISEhIRWs4UGRXNjAxTmo0QmtGTXBBRFRYQWxJaENSQWJyNFVrUUd5YjBiZ1RBT2ZmK3IvSDUzbm9mVVIwSGpPZWJiVGkwa2E2bXJNaEFZeGdYQ0l3d0xHZm85ZUxrQUJtNFFtRDNSaXZqbDJmWWgrUytndVJVOTQwU2RuTlZzZ3VOT3RUK2ZyR1NMWWxBbXprL2dna2dQYksyNGdBMTNJM0c1MHd6TjJvQXllaUlLRlI0SWIyNnpXNWtRanBTQUE5Wmh6Mkg0Tm9ESHZyMVRjZS96Qy9QeWFuVENTQWlTNndLUnpGU1FBaEFQU1JiRzl2UDRLWnZ3ekdoVFhNWmFyV3MzZGk5OFA0UTREZ0RkVmlhaWYyWW1WMmdvQWdJQWdJQW9LQUlOQ0lDSFIwZExUczJMSGpKakRlTkE3ekh3VGhob3lmK2M4ampqN2lrWG9ZN3RWYTQ2UWdBQWcwMTgxVGQwTDNZMTdBV3FLRm1nQXhDYUIrU29XL1I5N3JQZy9qa3dKdzZUY2VhTjU3ZE5PckdON25tUEVhQmpKUmdvT2paVkRFMjUrdWhwZXcxUjJQZkRFU3dOci9Gck9rWW9QMVdvOUFFRGlwOHBvOWNLb0xPbXIyMnF5M1lmRHVwaFVMaHc5ZkwybmNSeDc0QWhJZ1puT2kyeE50dFBHZklnbmlkQUNIS05BL3V2TktwcHNZcjM3czNVK3V3VTBUY0g0dVdqVWdHc3hFQ2hnTmdKUitRajh6SkFVQVFHdHI2MElDM2FKQ3E2cjFnSnlpL2ZReitHTUxGeTc4em9vVks1eUNvRk1VRFZtMklDQUlDQUtDZ0NBZ0NFeElCSll0V3padGNHQ3dGOEFaZFo2Z1Q2Q2JNczJaZjE2N2R1Mk9Pbzg5NXVFYW53QzRhOHRXWXJZUkFMRVhPcFVPa0RDWVJ5WUIzRlFCTVBvd0RnVEFzanUyVGp0aThNQ2JPTUNWRkpWbzhGeHZzTnA5MTlCUGtDQ3Axd29pQlNva0FkSjl1NzhQOTFvQkNlRE95eElYVVlsQVk1a255WnhJdlQ5SmVOZ1llRXNzdU5FQ1RpbUJSQmhDT0lyVFVXVWtRR0VrUUZSWUlHWkpqQ2FBSlFTTXpvSXVRQkRyQ3NUNkJtRTZnQ1llRXB4R1NqQXdUZ3ZRNy9rNFNrRUlnQWdTYW10dCt6eUFEd0ZvSHZPVGNlcDJzQStFcnhQUlo3dTZ1blpQWFJoazVZS0FJQ0FJQ0FLQ2dDQXcwUkZZdG16WjRZT0RnM2VCOGVJNnovVlJML0Rlc2k2M2JuT2R4NjNLY0ExUEFMejdMbFVHRUhPdEFSaXF6eHNETVUwQ0pGK0w3SzVrSEx1ckMrQzgxZ2V1YndSQXh5MzN6c2cwSFhvQkVUN0R5cVBwVERNUkVsNVNvSy9RTmk3STZYZnVIVGtTb0xMcUFOcW10Wk9JMHdFaVk3OHdYY0I0NFhVRVJpcHZ3WGpSNC92Y3NJZFkzVDhpRWZUL0NxSUVuTC9iTTFMNE4yT1FXNDFFbTc4UWt3Q21yRit5QW9BclBGbm8zVTlIQXJqa1NLeERrQlEvdEh5RkZXV00rOVhFU0Q4SEVnR3dkTUhTWS9MTitaOEJlRVZWbm94VHN4T1ZyL1lEUC9BL2xzdmwvam8xSVpCVkN3S0NnQ0FnQ0FnQ2drQ2pJTkRhMnFwVTdPOGswQ2wxblBNQWc2OE9ndURmYzdsY3ZvN2pWbTJvU1VFQUFHRUpQRzFzcXArS0dQcldNa3pYb2Rja2dVTUV1Q1NBSmducVNnQ2NmL3VXMlp6SFpXRDhHNEJEWFp2V1hXYTAwbFE2Z0d2N0draktUQmVJU1FBN1lzS1pia1liT1JyQTdFYlMwSGRKZ0VTWndFUUtnNDRHU09UaG0xQjRFMzl2YlB3aXJJaG1IdHh3ZVp2QVlDZFFnakF3eTNhODhxNklnVXMrdUYyNXVmb205Y0FTRm5ZL3RHSHY1RSs0NG9PUm9XK00vOElLQ0NyU3cwUUIyQW9FMFQxQ0FDanZmMXRiT3hnL0JjSVNLeFBoMmcrZ0g0UnRDUEE3ZUhpY21YZDQ3S255SjZFd0RIczhBOEN6RWVCSUlub2VnMDhHNFdnd1pnOVRJcVpXYXd2QTZLRU1YZExWMWZWa3JRYVJmZ1VCUVVBUUVBUUVBVUZBRUtnV0FtMXRiU2VDc1FiQTg2dlZaeG45L0JHRWp1N3U3dnZMYURzaG0wd2FBc0F4V1F0RjVhd3dZREhEVnFjRGFNUFJOYkNqbjhQWCt6aW9UeFVBRmZZL2UvREFlMEQ0R0JoSEowTHRiZTU2TkxQaElnRkc5dmFuOHZwVFpRSnRWbnpLMFY2SVQreHdqeVkxc2w1QXlya2ZLK0ZiMGNCaFNBREhxKytHem9lN1pEMzFEdVBoL2kyUmoyQU1jaU1zbUpxOEJqNnRBMkM5K0NsU0pSb21XWTdRREcxU0Q4enJwU0lCb2lYRTVRRGo3aUxFZ3BRNG9lNi9uMzJlMGhvQVdnRG13MkI4ZHB5ZnNnR0R0eFBvSGhBMmVMNTNWNVBmOU1jOXdaNkRoeDkrK09DQkF3ZjhYQzZualA5d1E1VUs3TU1QUDl6VTE5ZVhtVGx6WmdzUnpmUjkveFFQM2l1WitOWGdNSnJoR1FDYWFyd3VOWjlIUFBZdVhkZTc3bDVIdTdQR3cwcjNnb0FnSUFnSUFvS0FJQ0FJakI2QmNTSUFlbHFHV3Q2Nlp2MmFwMFkvOC9HOXMvRUpnTHUzYkFVajFnQklXYWl4MTlZeDlHMXN0ekZlUnlRQjZrSUFyRmpCM3RhWFBIZytzNmRxV2Fvdi90YlF0eitYSUFHS3RaMHNKSUN4N1EwWVNRTTZCVklwRXFCQStNOHgrTlBwQVBxbFdHelBDQXZxU0FUSGk1K3crWXVSQUpZb1NIbjMwNUVBV2hzaGpPaElrUUNHR0loSWdHaHlCb09BMGM4ZUwzLzRxbVVOeTBLTzlSR28xZjl2Qm1QcFdQc2F3LzI3d0ZoTEdmcnF3WU1ISDk2d1ljT3VNUmpTTkgvKy9GblRwazFUejdWbFlMd1JnQXB0bXphRytaVytsZkVuQW4wNHovbWZOR29vVzAxd2tVNEZBVUZBRUJBRUJBRkJZRUlqTUM0RUFPTnJQdnRYNW5LNXB5YzBPTU5NcnVFSmdNdnYzcnlWNGMxTjVNaVhJZ0ZDMnltbEMrQjZyTTFyaGJvQWZSelVWZ09nNDVaYk1rM1RUNW52TWI0SDhBbVIwYWVGOFZKNS9nbURXQnVyUnFvN01pQWRMM3dSajN4aWVlblhFNUVBVVpsQU40UStUcldJUUI0NUhVQzNNMGExWTY4WGpRUnc3UExJcDA2Z0VpS0FiZ2g5WWpKRlNZRFljQzVhSWNCUlU0elNCNUpwQXNVakFlTEptbHo5cEVhQmpxUFErUUkyQXNBbG9HeWtnV3ZZeHlSQVFsQlF0MDJSQVAwK1RYa0M0RlFPZUJXQWs4YmhRUnlBOEVzSzZJdGVzM2RuWjJmbnZtclBJWnZOSHR2a05TMExFRnhFb0pkVk16MkFRRHNEQlAvM3lDT1AvUDdLbFNzSHF6MTM2VThRRUFRRUFVRkFFQkFFQklGYUlUQXVCQURodzd0MjdmcnlwazJiaG1xMXJscjMyL0FFd0x2djNyS1Z3SE9qZXZJeFhFbE5nSlNoV29vRUNHOHFVaUdBMFJmVW1BQjQrK3JOenc5ODc2dk1hRGVUaUVRSXg1c0VLRUdZcE5MdjNZT2FTRnRJNzBtSnRIMURKaFFRREpvRU1FeEQwc0NPUlJ6VGZ5K2VEdUN5QzhiQTE2SDdDdWxoU0FBN0w5TW1GWTZmNGd0c1ByODVsT0g4bkFpQk9GM0F6ZjB2UWdKb1lOd2dCUk1oRUpFRDNPOFJMOTg4aFNNQTJ0cmFYZy9HdHdBY1dlc0hacXAveGJ0dEF1Rzl2dS8vdXBiZTgydzJxOUlBanMxUTVwMGd2RlhwbnFpcUlHTmM3d0NBNnc0T0hQekVQZmZjczNlTWZjbnRnb0FnSUFnSUFvS0FJQ0FJMUJXQjhTQUFpT2x0WGIxZFB4eERwR2RkTVNvMjJLUWdBRUNZRzNtSmh5TUJVaXIyQ1JMQU1mcUxrUUNLQU1qZzNPKzJuZjZyV3V4WXh5Mi9PWFRhOUVDRi9iOERRRXZTZ0U2U0FNWlFOdk1vcGhGZ2FJemhJZ0dLR2R6RlBQSkdHRkNicHRHd1RxcDc5SWZLS2dTa0NRS3JONkNyQTVRa0FWTEdjSklVU0tyalIvTjB3aHNjVDd2MTdxYzFBZFE5aWJxS3ptS3RDbit5VFJ3WjRKVDJNN2ZwOGFNZGpDc0VKQ0lCak1iQ2NKRUFxWFZiN1lOd3lLQ2ZNTFVKZ1BaRjdSOWs0cXZVZTZjVzc4OFNmYXB0K0JVSTcrL3U3djVGdlQ0RWxON0J6cWQydnBROWZpK0FONHhCOUREUDRKOWtNcGtQcmx1M2Jsc2RjWk9oQkFGQlFCQVFCQVFCUVVBUXFBb0M0MEVBZ0hCZWQzZjNqNnF5Z0hIcXBPRUpnTXMzYk5uS1dnUEFrZ0RhQUxOR3NqRUdkVGk3cXdzUUc1OHBRMWFIMzRldkIxdzdBb0NaTHJoOXk0VmcrcHBSL0xmVGR5eGhOeDNBTGtjdk1CMkdiMnpZWWhVQ2lvWHN1d1ozZ2dRd2VmUEdTSTNNMkdqVVZKcEJzUW9CT2wwOTFWNmJ3Nm1Cb2hRR1l5b25TUVozanlLU1I4OGk5S3JyVjgxZ2xweHdCa2dZOVNhZlB5bllGMGVQRENNT2FNWktFUVhEa3dEUnV0eTBnb2dYc0paL1hMVlFyOEhrOTF1dnYxT1Z3STBFQ0hFZzlDUHdsbSsrcW4xS2FnQ2NjY1laTXc0NTVKQXZndkdlT2o5RG53VGhzdTd1N3JYMU12N2Q5UzFac21SbVBwOC9qMER2QjNBYWdFd0Y2MWNucDRlWjM5dmIyL3U3Q3U2VHBvS0FJQ0FJQ0FLQ2dDQWdDRXdZQklRQUdOMVdORHdCOEI1RkFLZ3lnTnFlc3ZuaVllNTRESXJ4bXFhTjV3Sk5nSVM2dXhVSDdBdUlheElCOE03Ykhqb3VuOEdQQVg1bGdYR2VJREtVRVJtbkE0eEVBaGpuZHpGTmdFUzNJMmdHdUU3eXVFeGdLUklnUlF3WXk4anNReEc5QWJ0RERCZ2RBOE1GMk4vdGZUcktReSsrTUIwZ1ppWWlia0FyL0tjTTlqZ3lJQlhLRUE3b3JNM2M3NUFMbG5CdzVtQ0UrMkpMUHM1R0NmY2hhYlZINUluTlFPQkk0eURtQXl5SXB1eGZOSlFoUFRqRUtkcUw4SlYrbnNJRVFGdGIyNUU2L1AvMW8zc0VqdW91ZGJDK21NbGsvcjBXT2YvbHppaU1CdGk1ODVYTWZDVVlpOHVNZ0ZESDVqR1B2WGVlZWRhWkcxZXNXSkY0MjVVN3RyUVRCQVFCUVVBUUVBUUVBVUZndkJFUUFtQjBPekFwQ0FDVkQrczRnNjFvWE9pVlRwTUFhZU14L04wWStuRmpOMHBBbFFIMGEwQUF2UCtPcmROMkJ2dmZUOERud05SY1FFNmtEZWpRa3p5NVNZQndIODFaanRQMG5ZaURFaVJBWWwvamNQeUVTbUVxRXNBWTdNYmpIaUtiSWdGaXk5d2hCM1EvaGxTS3ZQdHhMcjhiSG1IT3BSa2pNYVpEYklUZS9BUlJFbGNOc0prTWpoaWlLUzJvYXMwSEFVM1pDSURXMXRibkVOT1BRSmcvdWtmZ0tPNVNxdmtaT3JlcnErdlhvN2k3MnJkUWUzdjdjUWp3RVFCdlkvRHNFUWI0R3dnZm5qTm56ZzlYcmx5cFNoTEtKUWdJQW9LQUlDQUlDQUtDUUVNaUlBVEE2TGF0NFFtQTk5NFRwd0NFOXB0ajhJK3NDMUJNSExBWUNZQStqM0R1TjZ1c0FmRDJWVnZPZ01mZkJlUGt5SmcwV2dUSnpUUU82T2l2eGxBc0xnNlliQnQ3bXEyVy8zQVZBZ3JDK2hQOGlmVmFGMFFDYU51NDJOaU9MZSs0eFF2N3RTdDJqWDc5eDhKVWZwTVVrRW9ITUNTQS9qZldLbkJab0VKZEFHTjgyM2dQN1JPMVJuWWl6VUJYQ0VpUkFIRkVmeEhkQVJObDRVWVNPSm9BZWxkVHFRMDZUVUNuQzloYm5mUUhyU1V3MVFtQWt3aWtLZ0NjT3JwSFlNVjNxZFB4a3psSHpubmJSRkxOejJhemgyWXltYmVBOFRFQUp5YlVRK01sN2dEaDB5MHRMZGV0V2JOR0NRREtKUWdJQW9LQUlDQUlDQUtDUU1NaUlBVEE2TFp1VWhBQVlRUkFFUnRQRVFDUmNWVm1oWURTa1FCOUhxcExBR1I3ZTV1ZWUyRE81OEgwZ1RCMDF4cDJiaFVDeDhqWFJuWTVKSUN4ZjYzeGJVcjc2VCs0SkVraWw3OUlPa0JxV0J1bVh4WUprQTc1ZHpzcjR6Vm5TMk5peDBib3F4OTBoWUtFSXIrckMxQWlFaUROS0tRTWMzMW9yR3AvbUVxU0ZoRlVqWVlqQWN4YUhkMkE4RWVuRW9CVkFuQUloOFRyNmFvQnp2N0VKUkM1UC9DbmJnUkFXMXZiQzhEb0J2Q3MwVDBDSzc1ckFJUlBkbmQzLzBmRmQ5YjRobVhMbGswN2VQRGdVbzg4SlloNGNxcEtRSjVBWDJYaS85ZmQzYjI5eGxPUjdnVUJRVUFRRUFRRUFVRkFFS2c1QWtJQWpBN2lTVU1BRkJpOVZzQ3VIQkxBVWJFdklBSEMxNnBPQUx4ajFhL25CWm5NS2pDZmJFdjkxWkVFY0czZ0FoSWdvWU5nS0lmNGdGbDlnZEJBZFlRQnRkRWJSd0lVVmdjb1JrN0VJNmoyZXB4RUpJQTI5bE1wKzBaSXIwQVlVQS9paHVoSFJ2MHdrUUNHSkRGV3VqWGduVVdsYy9rZEk5K01sWWdFS0lNRU1LZlRNQ3NGRlFJY3dVQ2pKV0QxQTZJZitqMFB5Ky8vek5RVUFXeHZiMzhSQjN3M2dGbWpld1JXZk5jK1lucExWMi9YNm9ydnJNTU5IUjBkbVYzOXUrWUhGSHdLd0FJQXFuemdJSU52QzRMZ2lsd3U5OWM2VEVPR0VBUUVBVUZBRUJBRUJBRkJvT1lJQ0FFd09vZ25GUUZRaWdSUWZ4ODVIV0RZTW9GOXhGelZGSUMzcjk3OElTTHZhdVdsaXd3NzdlMVBrUURwTlJYYXNjNjlLUnUzRkI0bXJtQTRFa0RkYXlNRnJOYzlQbVNGSklDeGRwTUsvc1dxQXhTenhhT2VZMFBmL0txZDVvblhyQm1mRmdjc0VnbGdEWE5qeHc5SEFxUU1kcHZMbjRnUTBPS0M2VW5ZQ0lGa0NrQk1oc1RSQ0xIZ242a09FQTFjTkVKQUN3WWFmRndTSU1LUis0bUVBS2dqQWJBYmhJWGQzZDFiUnZmSXJjdGRSaGRnS1RPZlFxQ0h2V2J2OXM3T3pyL1haWFFaUkJBUUJBUUJRVUFRRUFRRWdUb2dJQVRBNkVCdWVBTGdmZmR1M3Nyc3pYVk0wNFJRbmhPOVhRWUo0RGlKM1RLQTREN2k2cVVBWExycWdVTUdNczAvQjlCbURQOUtTQURYOXRSR1lDTGwxN1Z4alNGdmt3bFNvZmZEcFFPNEpJQlJuWGZEOHBNa2dFNjFTSmNKVERuZDNXT2F0c1dMdmphY0prQ0NtTkRpZ0tsOC9UaTF3a2tIY0NzRUZBb01SRHhFMFZDRVZINy9DQ1JBU0dja1NBazNKY0VNa3hSZVNKTUFOaUlnTVZZVSs2Q24yQSt3UkFEVUt3S0E4YWNNWjVaMDVqcC9PN3BIYnYzdXltYXpUUU1EQTgzVHBrMGJ5dVZ5K2ZxTkxDTUpBb0tBSUNBSUNBS0NnQ0JRZXdTRUFCZ2R4ZzFQQUx4MzQ1YXR4RHczcVk2ZlZNdXZBZ2xRMVFpQWQ5eng0S3NCdW8zQno0eTJyVWplL3dpUkFFa1NRQWVTT3hVQ0VzWjF5Qkk0QjhReHFvdVZDVXcxdGJid1NDUkFTQmhFZXZqUllNVkVCZDNPaTBUbEQwY0N1TXNvSHIwUWtRQzJGS1FaeXltaGw1eVRtV2N4WWNCb05EVk9xRFJnUXhHY1BJUTRQQ0ZlckJzSjRLU2hGSXNFc04ybUNJZFNKRUJFOWhoZ0xRa2dCRUI5VXdDMmtVZnRYVjFkajR6dWtTdDNDUUtDZ0NBZ0NBZ0Nnb0FnSUFoVUF3RWhBRWFINHFRZ0FKUUlvQlg4YzQxZ3gySk1rd0N4Z0Z3TW5Cc3VudkNpTS9XaFNpa0Fsejd3UVBOZ2YvTjd3UGdTUUY1YTFkL1dqQStGQzAyV3Uxc2hJUFFyMjBuSGhxVXhXSXRYQjdCUVJGMGVCTENYbVErNHh5WmRKYys4bHJCUEl5cy96U2RFd2Z2Vzd2ZE1QYjJ3b1MwMDd0amJSUTM5RVZJWTlORDIxc0N0WU83YThIb3VTYnZha0NUbVgzZDFPdC9CSVF3TWdSR1RBSHJSTWJjQmNrb0dKb21DNUZqR1hSODJkOHNNT3V1TmpQNllIWWxKQUFPMlBndE8ya08wRDhGTzhuRFJmU3ZhSjNKSSt1aWVUbVhjTlE0YUFIc0NEbHA3ZTNzM2xURTlhU0lJQ0FJVERJRVZLMVo0dVZ4dWp1ZDVSd0I0dmdkdkxqTWZ5OFJoS1Y1ekVkTk9KdTdMQkptSDBJeHRUVTFOMnlkUjlRektack16bTV1YkR4OGFHanJFODd4bmVPd2R5K0NqQUR5SGlXY1UyelpTbjNxRUhjVDBGQlAvQ2NBMjMvZjNUSnMyYmMvaGh4Lys5RVNxakRMQmpsM05wNlBQOVNGcVR3SE05SDMvT0xXWEhudEhNZmhaNmZOdEp1VEIyOFBFVHdINHMvNXZlOHRneTE0Y2lqMlQ2THpYSFAvaEJsQUN2VUVRcUQwNWxKa1BCZkJNWm40V0VUMkRtSTRPRUJ4UzZuNFAzbjRBZndOak8zdjhGeUw2cStkNVR3OE9EdTdkdTNmdnZrMmJOZzJONitJbXdPQkNBSXh1RXhxZUFIamZ4aTFiR1FoVEFFcm0rVHRHbTdHeElzTEFFWjF6bmVUcE1IS2dEMEYxVWdBdXVmUGhPUUh5MXpQampkR1d1ZG9EcnZFZUcvcVI0bnZ4MTFRUFpaSUE2b1A3N3h6Z2JpYStOK1BUMXFFTS9wYnhFMlkweW5xU0ZHbVUvSlA2SGxWV1QvYlVEZzJPN2dBblJpbHp5SENvb20xSFhGamhKSWZLSEZUZG1WaGo4ajc3V3puZE9XMkN6SkNmeDRISE5xMDRSMzFJVExscjBhSkZwM25rNVFDb0w2NzF1UFlUMDl1N2VydHVyY2RnTW9ZZ0lBaFVCd0gxSmR3LzREOHY3K1hiQ2RRSzRJVUFqZzZyOEVSaW1mR0hiRFNrRDBDbHp1d0Q0eEVtM2dCZzFlN2R1My9kYUYrNmxYRjQzMzMzTmRsbTRHd0FBQ0FBU1VSQlZBOE1ES2puNUdrZXZKT1orSVVJOEh3aVVvYi9ISTJCd3FFWUZ1NG1LRnpVZitxVGFCQ0ViY1MwbFlrZkEvQWdnSWQ4MzM5U09Sb2s5YWc2WjdkRUw5VFIwZEc4ZS9mdVdUekVMd29RbkFZUHB6SHp5UVE2bmtCSE1OanNaNlpFYVZqVnRYSkxtTE91dnFYOERjRGo2c3dUMFdNQmdnYzl6L3ZkenAwNzl6ZmF1YThwK3FVN0QvZmxxYWVlT3B5SVR2STg3eFQxbm1QbTQ0bm9SRENlVGFBWmVtL1V2cWovbE5lczFHWDJ4eWRRbnNIcXU1NGlheDVsOEJORTlEc2llamlmei8vaDZLT1Azcjl5NVVyMXZrekYybzRURW5VYVZnaUEwUUU5S1FpQXNBeWdYdjlJSkVENHROT05SeVlCYkdoKzFRaUFkM1QrZWg0eDNRR21hTTdoLzBaREFpUTNmRGdTUUgyQllkQXFJdnBtU3pEMDYrKzk0U1c3Um5kYzVDNUJZR0loME5yYWVoS0Eyd21rUG1UcmNRMkJjRlYzZC9jbjZ6SFlaQmhqeVpJbE00ZUdoazd3UEsra2wyT3M2MlJtUHdpQ2JaT2x5a0UybXoyMHFhbnBlY3c4ZmF6WWxMcGZZVVpFZis3dTdsYmlrRlg1d3RqZTNuNkVsL2VPOHpOK1VRL3lXTmRDUkUvdjI3ZnZpWTBiTnlhaTE0YnJWeG0vR3pac09JMTl2Z0NFZndCd0lvRFI0S3FNcENkQStJN3YrOS9QNVhKOVkxMVByZTkvMmN0ZTFqeHIxcXpuQVhnSkFpd0M0ZFVBanRHaXFZcjRxT2FsenRCZUF2MmR3VnRCNkNLaTNoa3padnh1MWFwVll5YW96enp6ek1OYVdscE85RHl2cXZOVzc0T21wcWErenM1TzVRV3Z5dnVnbXFBVzZZc1dMMTU4RE9mNUpTQmtHYXpJck9jQW1LM0pyR29PZjBCVkdtTGl4NG1vQjBDdjcvdVA1SEk1VlVxMkViQ3FKaGJEOXRYUjBkR3ljK2ZPazRJZ09NV0R0NUNKNXlQQU0wRlE1TnJNR2sxRTdjRStBTnNacko1SHYyVG1Mcy96ZnF0SXVFWWs0TExaN0t5bXBxYmpLdnpzZXc0WTF3SjRibzF3THV5VzhHOEExbFZyUE0vM1dFV2FuWG5tbVg5ZHNXS0ZHOTg4NGhETGxpMDdQSDhnZjJLUUNSSlJiQ1BlcUNwRk1UNWR3L09abnNMZmlPbEQ3UEhXTXVaV3RFbkd6eHpZTzdEMzkrbzdBS2tJQUVVQXFKWXVDUkQrbmtvSGlNSzBvOHNsQWFKU2RuRUl1KzNMaG1SVEgvdlZxUUp3OFoyYjM4eEVYd2R3cE0xSDF5UkFOT2ZZODUvKzNhWUhsSlhyYjNVUWxMSC9hV3FaOGUwYmw4L2JNMXJRNVQ1QllDSWkwTnJhcWxqMUg0UHg4anJOVDcxQk56UTFONzErN2RxMU8rbzBac01PczJ6QnNxTUhtd1kvRDBKN2pUOWtsSEgyT0FqWDd0Ky8vK2VWR0lnVENWeGxyTjUxMTEwdjhzaTdFb3d6UWFpSklhM1hyREQ3WHkvd1ByUXV0Mjd6V0hGb2JXMTlEaEY5VGh1YXRacjNiZ0w5dEhsYTgyZldyRmt6MHVlWkNuTi9acFBYMU1IZ0t3QW9zckFhbC9Ld3JmVUQvL0tKU0FLb00zVFBQZmM4aS9NOFh4RWVERlpHdnlJQmxEZTRucGY2YXFYS2ppcWo1TmJtb2VhdU05ck8rRnVsWDI3VlY3UEYyY1duKzU3L01RTE5yNEdScTk0SHZ5T21MODAvYS82cVVjeXZMcGdxVXREenZCY0FPSWVJWGd2R2FVQk5udy9GMXJVTGpOOHdjUmN6MzliYzNQeFlaMmVuTWtDbjVLV2lpZ1lIQjQ5WEpYZVplUWt4dlFJRWxYcFI3L2VhaS8rQStpd2swQU1CZ2pWTlRVMi95R1F5MnhvaG5TT2J6WjZRb2N4VklKeFpDVWxMb0F5RFZlcUxpcWFvMTdVWGdNSzZLbGRrc2RGanhQVFZQT2R2S1pPOFVSV2ZUdUdBUHh1U3U0cENxT3hTWk9waHcwUUhWZGJieUswVnNhRSt0MGN2U3MxUTVIOG5FMytLM3ZlTExWdkJFUUZneThpVlRBZlFFT3VXYmpwQW1JSWRDc2pGSzdBL012ZXhoM08vdWZEMFg0Mjh2dUZiWE55NTVSTmcvbGMySG9oRWJmdElRQzlPQlI5WkhEQ3QrSitNQk1BZUR2REZvU0h2UDFlKytZVlBqM1h1Y3I4Z01ORVFVQWJtVVBQUTl4aTh2RjV6STRTNXdlY3ZXTENnYzZKK1dhd1hGaU9OMDk3ZVBwOEQ3cXpURjFYMStIdWN3ZS92NmVsWk05TGNKdUxyNFJjZ0wvTmxBT284MStQTGpNL2d6L2YwOUh4aWpIaFFhMnZyL3lYUVo0Q0t2NFJVT3ZUVElMeWh1N3U3YTVnYnFhMnRUVVhicmREUEJwWHZYODFMaGVKK3NLZW41MnNUeFJPcXFuNjB0TFFjbDgvbjI0anBMU0M4VXBOdTlUaEh3MkdydnZUdEJXTWpFOThTQk1HcWJEYTdvOXhucDRvZzhvZjhhMEc0cUlhR2xYcDJiUFF5WHNlNmRldTJWZk9nakxXdmJEWTduWWhVcXR1RllMd09oR2NEbURiV2ZzZDR2eko4VkpySEhTRGN1bi8vL2djMmJ0eW90S1dtUWxRQUxWbXk1SkJnTUhoUjRBVm5FK2gxT3FwSVJiZ05GOG8vUnNncnZsMFJXK3A3Lys4SXRNWm4vNmNIRHg1OGRLTHVrM3ArWlRLWmZ3VkRmUmFOSjRGU01kQlZ2RUc5ZjM3clpieHoxNjFiTjZLWFBJd1U5Sm8rcFQ2TDZ2UjlvWXBMSFZOWEF3eitETDMvRjV1M01yeTU1ckdqZlBteFI5K1Voak1ER1hHMnBGRGVpT2tEUUI4VGo1a0E2TGpsbHN4aHMwNytCa0FYSzdJbkpoamNQUDZxa1FBQkUvNW5xQ24vMFpYTFg2cEMyK1FTQkNZZEF1R1hROS8vRWhpWDFuTnhCUG81WmVqeWlmWmxzWjRZbEROV2UzdDdsZ05XWVhMMStrQVB3UGhCcGpuejNrYjBUTFczdGwvTzRLc0FLRzlHUFM3bGRiaW1xNmZySTJNWlRIbWQxOSsxZnEyTzlCaExWMlhkeStDUDkvVDBmTFpZWXgzeWZ6SUgvRlVBWjlYcWl4R0I3cGkvY1A0NTVScXlaUzFzZEkyVVFYSzBQK1QvSXdqdkFLQzh4TFVLT1I3ZERLTzcxRmNlWlpCc0lLWnI4NXkvSjVmTGplaVkwS1RZYlFCT0g4dmdJOTJyaWQybDNkM2Q5NC9VdGw2dlo3UFp1WjduWFVTZ3QyZ2pjN3pKblBUU2ZUQzJ3Y05QbWZsL2R1L2UvZEJrMWduUTN6ZGVpZ0NYcVBRTEFNZlc2dmxTNVRPbW9wYitvSjVaVEh6VG5EbHpIcHhvZ3AySzZNcDRtVzRBcjZueTJodXRPNVZtK3JydTd1NDdSNXI0MGdWTGp4bHFIdm9oZ2RUbjNGUzdicWYzMzZjaUFGaW5BQ2psL0JpREtLeS8wT2dQUDRuY2RvNkNmQWtOZ2FvUUFHKzc0eGVIVDJzNjVDYUF6dzZURVJJcS8vb1RzaUFkUVAzZGpRVFF2eGN0RTVoSUgvaEQ0SHR2dk9rTkx4eHphT2RVTzFXeTNvWkNRSG42UHFiem1PcjU1VWlGSVgzWkQveXJjcm1jYUdxVU9ESkxsaXg1bnAvM2I5ZEdTYjBPMXBPWklITjJaNjd6Ti9VYXNCcmpxQnpuNmRPbTN3VGc3RHFHNUIwa3BuL3M2dTFhUFpZMWhFYjMzUnZ1WmZDcnh0SlBCZmQrcTd1bis1K0t0S2YyYlB1cjJPTXZxTERjV3VKSW9Qdm1MNXovbXZFa0FPYlBuejk3MnJScHl4SGdYYUR3aTNOVjgrTXIySTlLbTZvYzhsVWdYTDFnd1lMZkRvZmhva1dMVHZiZ3JRR0ZhUXcxdlR6MjJ0ZjFybE5HeUxoZVNrc0RQcFl5OFVjQnZIaUNlWmFMWWFPaVBKNWc4RTFCRUh3N204MCtPWjd2aTJwdm5qTDg4L244UWcvZWhRRUNKU0txeEVNYjhWSkd3allRZnVZRjNrMURQTFFwbDh1cHlJMXh2ODQ0NDR3Wmg4dzRSQW10dm5UY0p6TytFMUJSZVJmMjlQVDhjS1JwcUxRN0FEY1RTS1ZNVExWclRVUUFLQTJBVW9aK3VTU0FRd29VSVFINmdpcEVBRng2NXdQSCtKbm1uekNIUWp5RmhuMUJPb0RSQkVpMzFSRU1LUkxBMW9nUENRUCs5aUYvR2JyOG01ZTl2QnhkK2FsMmNHUzlrd2lCdHJhMnQ0QnhuUmEycXR2S2xNY0lqTTk3emQ3WEc5SGJYQStnVkZoZms5ZjBGUWEvcTQ1UkFJTmdmTEM3dDF0cHJUVE10VGk3K01XQkZ5alcvNWwxblBRdi9jQi8wMWh6MmV0T0FEQnU3Tzd0dmlDTmsvSVdlNTczTFFJcDcxeE5DY0h4SkFEQzkxVlQwN3dnQ0Q1SUlGVlJTQW1OcGFzWTFQRVlqV3FvUEJpL0NCQjgvdURCZzcybGREdW1HQUdnb2ptTzlZZjhmd1pCblc5bGFEYlN2cXJRM0EzTS9PVkREejIwcXhyaWo2TTZXVlc2U1lsb3pwNDkreFQyK1Izd2NCNFl6NmoxYzZWS1V4K3BHMlVYUEFuR2pVejhuU09QUExKdjVjcVZLbVZnM0M0aEFDejBRZ0NVZHdvVkFiQjVLMVFLZ0xyS0lRRkN6M3ZjZXlJU29EUUpVQjBDWU4xdm51dFQvdWRnT3IxNG5uOFVKQmVuQmhUeC9LZUZBb3RHQXFndTZLMDNuUFBDbFNCWDFhQThWS1dWSU5CSUNDeGF0T2gwRDk1UDYrRWhLb0tMcW9sOVZhWWw4MjBSQlN4K2F0cmEybDdMek4rdm85ZEU1WDZ0M1g5dy94c2JSUXhRR2RCMzMzMzNCd2owcFRwKzRSOEE0VXR6NXN6NXhGaS8vTldkQUFCV2RmZDBxOXhiZTUxenpqbUg3TisvLzJvd0xxdkhsL1R4SWdDME4vS05CRkxDaGlvc3ZsN3BOYlg0V0ZCZmQvNEV3cGN6bWN4MXhZalVxVUlBYUFIUVV6M1Ard0k0RkUwZDd6ei8wZTYzMnRPL01QaWJ6YzNOWDJuVXowV2xSdTk1M2x1SjZESndXREswa2Q5bnBmWnlrTUViQVh3dENJSTE1YVRralBaUWpIU2ZFQUJDQUl4MFJsS3ZSd1FBRWMyTkRPb29yRDdrQWhLR3ZnNk5ML0Zhc1dvQllXK2hjUjFXQ09oampGMEQ0TksxVzA3eHZWQVFTNm1FRm9qOTJaUUF6UUJFZ242Ry9EWGlnR1dsQSt4azV2WWJYamQyMGNJS04wU2FDd0oxUjBDRlN3WkJjQ3VCMnVvK2VEU2dVa0grcVJkNDE4dzZldFpEWXpXbXhta05OUnMybTgwZWxmRXkxd040ZmMwR0tlejRiMW9vVG4yNW1mQ1hLdU16T0RDNENzRENPazcyOFlDRDgzdDdlKzhiNjVqalFBQnM3TzdwdHJtaVlRbXUvcDBYTVBGL2FWWGpzUzVweFB2SGdRQlFRb3RLQU82akJIbzdnR29MRzQ2NDVobzIyRStncjN0TjN0V2RuWjJxTEtXOVFvS1h2THZxc2Q3eFNnSG82T2pJYk4rKy9Td0NLZjBQVmRHbWtieitwWTdGSUFqcW1mYnBPWFBtUE53b240dGFqTzRsNm4wR0RzdUdOaW9SVThuYmRRK0RiODVrTWxlZmVlYVp2eCtQOUEwaEFPeDJTUVJBZVNjM1NnRWcwaG9BdzVBQUk0a0REazhDb0MvQTJLc0F2R3ZkUTZlQ2VCMHpxN3dOZTFueXducjNZeTNWa1VtQVZEcEEyQ3M5d1Q2LzlvWnpULzlkZVRoS0swR2djUkVJdi94djMvbXZEUDdVT0s1Q2ZkblpBdUFhMy9mdnpPVnl1NmVJSXZLSWtHdmo4QkpHYUp3cHBlUjZYQUV4WFRuN3FOblhUalN4bzJLTFg3eG84VmtCQlRmWE0veWZRTi9OQi9rUFZVUERvdDRFZ0RLKzgwRit2aW1WMU43ZS9oSU8rTnRodmZzNlhmVWtBSFNFeUlzOWVGY3krSnhLU21UVkNZNXFETE5QbmNuTVVPWnphOWV2L1l2cGNOR2lSUy96eUZPNXdkT3JNY2h3Zll3SEFhRDNkajRSWFFNTzg1OG5rcEw4V0NGWHhzd3ZtUGx6WjUxMTFwM2pZVmhXc2dBVlJiUnYzNzQzRWVoZmdORHJYOU0wb2tybVZvZTJLaTFnQTRPdm5qWnRXays5eXdZS0FTQUVRSVZuZkExZGNkL21yVXdxQmNDSS9ZVUdjTlNQOXVBN01mVlJaRURSTW9ISmlnRmhXVUFUaTgvY2x3SE8vZG9ZeXdBYUFnREFjemhWdjY4b0NSQ3V3VlFJR0M0U29JQUVlSUo5Q0FGUTRXbVM1ZzJMZ0JJQ2JBZERLVVhYeThBc0JWWS9nRHM5OXE3YnNXZkhMeWV6SW5JbHA2VzF0ZlVrVlRtaG5tS0FETDRyazhtY1A5RXJOYWhhMGdNREExY1M2Sk4xL1BLdlN1bGR1R0RCZ3A5WDQwdDV2UWtBQnY5bTJ0QzAxalhyMXp5bHZyUWYySGZnR2daZlhFOFJ2SG9SQUFyYmUrNjY1NHlBQXBVZW9nekV5UmlLYkI0biswQzQwZmY5anhwaWFwSVRBTFE0dS9qMElCTmNEOGJMSm9ublAvM1JvTDVKUDBwTS83Snp6ODdPaWZxWkdFYXFaVEx2QWVNRERhcXBVY2xIY3FtMmFxK2VKTkFYWnN5YzhULzExSEFRQWtBSWdBb1A4QnE2NHY2b0NvQmJmTlExcG92cEFyaGwveUtlSUJsdFpXeHpod1RvQzNqc0tRQVg5eng0c3NkWUM4YnhpcVFvVGdKb0FpTlZJU0NLQkREa2hra0hpTW1PcUMrYkFyRVh6TzNmUCtmRnY2d1FVR2t1Q0RRa0FrdVdMSG1HNy9zL2d4WFlITmRscURmajM4QzQxWVAzd3lFZWVuQThjK3ZHRlFrOXVCSlRtblg0clA4SHd2K3Q0M3kyTS9qeW5wNmVsWFVjcytLaDJ0cmFUbFJLdnVBdzlMZGVseEwvT3p1WHl5bkNhc3hYdlFrQUFJOTRHYTlka1RzNmV1SW4ra3Y3bU5kU2JnZjFJQUJVZEZOL2YvOXJQZkwrQThESjVjNnR3ZHNOZ0hHTnovN24xWE96cmEzdEZXQ3NyMGNvZHAwakFHaEpkc2xwdnVkZkM2QzF3ZmVzbk9uM0VlalQrdzdzdTJHQ2FiTlFlM3Y3S1VFUWZGd0xhdFk4MHFRY3NNYTV6ZE1FdWk1QThGODlQVDNiNmhITktBU0EzWEZKQVNqdjhHc0NRRmNCY0VtQTBGNDJobjFCSkVBc3RGZE9tY0NBVVJVQzRGMjlEeDZMQUQ4TFdYdzl0K0ZJZ01SckpTc0V4T1NGSlFIVThqaDQrL2ZQUHYxR0VRRXM3eVJKcTRaSFFFVUJLUEdrZndiUVBFRldvMExxL3N6Z1Zaa2c4LzJuQjU1K2VPUEdqYXJrVHZwUk5VR21XOU5wcVB6bEJSNjgyeGc4dTZZanhaMzdCTHArMzRGOUg1cGdYemdUeTI5cmE3c0FqSy9Vc1lwRndPQlA5L1QwZkxwYVozRWNDSUFueUtQbE8zZnVmR3pXNGJQK0c0Ukw2blNtN0RDMUpnQjBMdkxyZFluVFV5YXBkN2pVdG0wSDQxOTk5citmeVdTeTRQQjdVODFMSE5hVEFGaTZkT21jL0ZCZWxhdFVlZzQxWDF1OTN4OUZ4bE5odG9vRStQajhzK2JmVUkzSW83R3VTVDIzMXE5ZmY0cCsvczZmSXZ0UUxteWh0aEdEUDk3VDAvUEhjbThhYlRzaEFJUUFxUERzT0FSQVpQRVhmTE91Q2dtZ0hsck1ZMDRCdVBUdS96MG04UE8zSXVBendvWFdrQVJneG8yenZCbVhmR1g1dklFS1FaWG1na0JESXREVzFuWUdHRDhHb0lTeUp0S2xETkUvQUxpZGlYL2krLzc5RTZYMmJqMUJValhMVzFwYVZoSkllYnZxSlhLbFBNWG5ybHUzVHBXTG5YQ1hDdjhmR2hpNm5zSG4xekhmOUc4QkIyZjM5dlp1cWhZZzQwQUE5SG1CZDA2ZTh1eVJwMUpMbmx1dHRaVGJUNjBKQUZVOUE0eXZBWGhlSGQ4djVTNi81dTBJOUJnWTcxUGlmMHo4ZzNvWVozVWtBQlJoZlNrWWlnQ1lUR0tPSTUwTFJYNC83ckYzMlpsbm5kazduaVNBTnY1ZmhRQ2ZCbUZSSForL0kyRTBrVjRmSk5DdFdpdm1yN1djbUJBQVFnQlVlTDVTQkVBWkpFRFlKRlVoUVAxZVBCS0FFYkI2clRvRXdNVWJmbnRZWm5EZ0JnQ3ZpM1A3MVl6Q1NnTnVXWUNDQ2dFMkdxQmtKRURVVDlSTm1BN3dGeWFjZDlJdlg3Uit4UW9LS2dSV21nc0NEWWRBTnBzOU5KUEpxQ2lBdXBRQkd5VkF5ck4xSnp6OHFHV3c1YjQxNjllb0VPd3BFeEhRMXRiMlh2MmxkK1lvOGF2MHRpRVFMdS91N2xZQ2NSUHVhbXRyZXdFWWR3QXFMYXd1VndER1NwLzlkMVV6TFdVY0NJQy9lK3lkejhRTEdQeUpPbW9uMkUycUZRRVFZcG5iOE1yQUM2NG5rQklpbTZxWGVpNCtBTUp0WUt5b1IyUlh2UWdBL2I1WFpQV3BVM1J6SHd3NHVLeTN0MWVscVk3SDU1K0tTRnRFb1A4RThLS3BTTEJWY083eUJGb1pJUGhFVDAvUDQ3WGFMeUVBaEFDbzRFeXFwa1VJQUVzQ0tHTTRmcTY0WlFLTkVHQmFITEFVQ2VBSDFKZXBRZ1JBeHkyM1pHWWRkZkovQTNpWHNmcGRsZjloU1lCaE5RR00wWjhnQVJoTXQvb2VmL0RHNWFmM1ZRaXNOQmNFR2hLQnRyYTJCV0Fva3EzdUhzRUtBUE1CN0FKQktWdi9LSlBKOUJ4eHhCSGJHNlZNVWdYckxHZ2ExdlFtVCtYa3F5OWQ5YmpVWS9XMmxta3Q1OVZiMWJpTXhha3ZvZThnMExmcWFNRHVZUEEvOS9UMEtJOXExYTV4SUFCMmcvQnZZRndFNEJWVlcwZ0ZIZFdJQUloRTRTaTRHaFRtaFU4bVJmZ0swRTE4R2Q1S29PZlhBNHQ2RUFCTGxpeVo2US81bndUaHcvVlkwMmhBcjhNOVBnamYwR0tQVDlkaFBIY0lGWDF4S2pOL2swQXFHbmVxdjhmS2dmK2dTc05oNG8vV0toMUFDQUFoQU1vNWlFNmJFZ1JBU1JJZ1ZSMGdiQmQzRi9yTnRRSmdVaGlRKytEaDNLK2RjZnF2S3B4Z1FmTi82bm5vWXdnOUZqd2pmREhsMGErRUJORExUSG4rMVY5dEpNQStnTDdCVGZ6Skh5dzlYZVh6eUNVSVRHb0V3aTlYdnY4ZllGemVJS3orTGpBZUFMQXkwNXhaODVyWHZPYlA0eGtXV2V2RG9SVGI5Ky9icjNMUFAxakhMMTVQZ25CT2QzZTNLdE00WWE1c05qczlrOG44Q0l4ejZ6VXBCdC9qZWQ3NVhWMWRUMVp6ekhFZ0FKUkkxUm9HTDY2amRrSUNzbG9RQUVyTU5KL1BmNFZBYjZpSHg3dWFaMkF5OUZVUEFpQWtxUVA4RHloTTdaaksxM29HbjlmVDAvUG5lb0tReldibk5ubE4xeko0cVlUOVY0VDhJQmcvcEF4ZDBkWFZwY29jVi9VU0FzRENLU0tBNVoyc1lRZ0EzVUhKY252RzBFK2tBeVRGQVIwU29BOGVWNGtBZVBCMXl1UER3TkYyTkVNQ2hCWjlZVHBBYVVOZkV3aVd4SEFyQzlnVTIvM00vTDFNazNmVjhSdGYrR2RKQnlqdlpFbXJoa1dBRmkxYTlIOHlsUGt4ZytjMjBDcVVZT0J2UUxnOTQyZHVHY1RnWTVOVko2QzF0WFVoRVNuRDk1ZzY3WThLZS8vZ3JqMjcvbnNpbGFCcWJXMTlKWUdVZXYxejZvU0Q4cnA5ZE02Y09WOVp1WExsWURYSEhBY0NRS1cxSFFDZ2lQUng4ZUJWbXdEUTVTQlg2QnJrRTBYSXRKckhaTUwzVldzQ1FKRitUVjdUMWFvNmlSaWYrTkhBNE1CN05tellzTE5lQjJQSmtpWEg1ZlA1TDJxMS84bGNUck5Xa0twSWdDLzU3Rjl0eW5SV2F5QWhBSVFBcVBBc2pVd0FSTVp6TXNYSUZRWU1YeTlDQXRoSWdPaTFxaEVBbDkzMTYza2NlRDhEMDZuUnJHeFJ3bWlldHRSZmN0N3hFdHc4ZjhOeXVQSUJSVW1BZ1lDNTF3TytQeGdNcmNzZm1MN250UDg5TFM5a1FJWEhUWm8zQkFLNjVOeVZJRndKNEpDR21IUTh5UUVHLzRHSWZrbysvZHhyOFI3cTdPemNYNnU4dS9IQTVzd3p6enhzK3ZUcFB3VGo3SHFOVDZETzVxSG1DMVRkK0hxTk9kdzQ0Um1kTmVzRFlGeFZ4N3J1VDNxQmQrNjYzTHJOMWNaZ0hBaUFhaStoNHY2cVNRQm94WDhsK25jOWdHZFZQQm01b1NvSTFKb0FXTFJvMFdrZWVUOEZNSzhxRTI3UVRoaXNuc05YTEZ5NDhPWjZSYnlGMFdmNzk2OEE0NzBOK0wxZ3d1eTAyanNQM3FlYXB6Vi9wNXBwZFVJQUNBRlE0U0V2andDb0FnblFCNnBPQk1EbDY3Zk05dlA4ZFFCdnRkNyswT3AzRFBzeVNRQmI5VUJ6Q0s2ZVFGZ0pNTm1QK20wWEV6MUl6SGN4NDdmazBXN2tZOGhWWW5MSksvV2ljOXVJZSthUDBGaTk3QVhlUVFyOC9VeVpJTy81ZStEN2UrY2NuTDNqZSs5OG5pcWJKcGNnVUJFQzJXejIyQ2F2NldzTS9vZng4aEJXTk9IQ3hpb2lZQnVENy9BODc2WURCdzQ4ZU04OTkrd2RZNThUNG5hdHZ2eE9NTDVSUnkvWU5oQXU2dTd1N3BvSUlMUzF0VDJUbUw3UDRDVjFtbzlTa1ZtNWUvZnVDMm9SQlNFRXdOaDJjVWwyeVNtKzU2djN3NElHU1YwYTI0SW42TjIxSmdEYVc5c3ZaN0FTbnBzMlFTR294N1NVRi9rL0RnNGUvR0s5UHRNVXdkWkVUVzltWWxWdWRVNDlGam5KeC9pOXF1U3dybmRkZDdYV0tRU0FFQUFWbnFYeUNZQ1lCRWlMQXlvUHYvSEZoOTUrZlVWR3VkWUY2R09xamdiQWl0N2VwbTJZZlFsQXFyeFBKa2tDUkVOYmI3OHBFNWo0bzNuZDFUT0lweHlSQU9wLzBUcUxSdzZrb2doc09jSWsvSEZmVWFkSlhZUkUwUUpubkhnTmh0WlEveWFDTU55VUIvMGFSK0djKzZFS0x3QjdBT3htMEZNRWZvS1pIL1NSZVlDOS9MWVphSHBxNVp0ZldOWHcxUW9QWGRXYXQzL2pnU040eUg5bW5yMlRpSEFpQi93TWo5SE16TnVJK0U4ZVlldEEwOUJmTmx3K2Z4ZUl4a01wdDJwckhZZU9sTUNhRWdmNzlpUlEwdDVPb0h2QXVMazUzN3h1TWxRT2FHdHJPeEdNMit1b2dwMEg0ZXR6NXN6NVNMWEQzMGR6dGx0Ylc4OGgwSGNBSERXYSswZHh6d0F4dmEycnQrdldVZHc3NGkxQ0FJd0lVY2tHU3Jja244OWZUYUJMNmxIcWJ2UXpuZngzMXBJQVVDa2Vnd09EU3ZsZlJUN1Zxd3pxUk51MElRTDlLQi9rUDFEdEVQSmhGa3J0N2UxbkJrRllWZU9VaVFaSWc4NUhmUi9kUUI1ZFVDMDltWkFBT09TUXU4RjRlWU5pVXExcDUvVm45UzBqZGRqYTJxclNCMjhtMEpranRaMkVyMWRHQUJqck9xb0NvSTEreDBzZWVkUmpFa0NaLytwM0J2cUE2a1FBcURsY2V2ZURMNFdQbndFNE5wcVR6dnN2cUZvUXZXWnRlc2VLZHIzN05oSkFONnlFQklpakNBd3BNSzRrZ0dZUEV0cU1Ldlpna0lHOVFVQ1BaZ0QxZ01qNXdKWTl4L1J2enkxYVZFa3d3dmkvQjVocDZiYzN6aDRjYko0Zk1MMEp6SzhteGpNWmFBRTRvNDRBTVh5QTh3aXdBK0JmQUx3S1E1bnU3UDVYL0YzU05zcmZRaFZtUGZ2dzJSMlRoUFZYT2M5N0NYUlhnT0MyVENhemR0YXNXWDlyMU1vQnlpUGplZDZYQ2FRcW90UXIzL2xCUC9CZm44dmxuaWovRkZXL1pVZEhSMlpILzQ1clFiaDBzcXhkQ0lEUm41TzJ0allWK3ErcU10U0xEQnI5WkNmNW5iVWtBTnJhMnA2dlNjOTZoLytyenc0bEFxMUt1RzBGNFE4QXdzaEtaaVlpbWdNT3ErYW9lU21EWW5xTjBwS1VGa3RQaGpQdjc4eDEvclplUjBsRld6R3orcXg1VXgwanp1cTF2UEVjWjRqQjF3UkI4TmxxbEpRTkNiTEJ3WnZyS1lvN251QU5NL1llajczbDYzclgzVFBTL0xMWjdGRVpML05OQUVvMGRpcGR5bHIvSVYxeC81YXRBQ29UKzNKTDZsbnZkT3hSang2TTBlK2FCT2pqS2hJQUg3ejMzaGtIQm1mZUdqQ1cyUjJ6aG42NmRLRkRBaFJvR1VRempCZ0NSVmJvSzFWWklCMEpFR3NpdU5FUDdqZ1Rnd1RRZkVhQ0ZHREFKMFkvZ3g0RGNBdG5nclY3anQ3eCs0WWdBcGpwckcvOCt0VVVLQVYwem9KWmZlRlRvZzAyUWlLa2d0VEhkYlNwNGRhQldTbXUzc2NCdmtCN0Q2elByV2d3MG1NY0gwdWgwcnFYVVRXa1ZkN2ZvZU00bFdvT3ZaZkJ2eUtpNjVzR20zcldybC83MTBiVUNHaGYxSDUyUU1GM0NYUjBOY0VacHE4RHhIUkJWMitYRXQ0YnQ2dTl2ZjI1SFBBcUFQK25UcE5RNlNSZjlnUC95bHd1VnhQQ1ZBaUEwZTFrTnB1ZGxmRXl5dmlmeWw3aDBZRlhnN3RxU1FDMHRyWXUwYUtmTTJzdzlWSmQ3aWZRQmlaVzBVYjNEd3dNN0R6bW1HUDJPTVF4WmJQWmFUUDhHWWZscCtkbmNaNWZBRUk3Z3hkcFFxQ2xpblBkNHJIM25uVzk2KzZ0MStlVklsdDM5dS84QUJQL080RERxcmdXNlNwQzRNOEJCKy9wN2UxVm4yZGppbEpWbnlGMzMzMzNteng0MzJEdzdDa0tzQ0pWVmc0T0RyNnZISEZNclIzekZqQ3VCWERrRk1KTTJlVHZHUjBCRU5wV2pzRnN6QzF0aE51VUFQTTdVRlVDUUEzMzdyczJYOHhNMXlrUFVESThQcUljckFsb2ZpeFRGOEFhOXdVa2dDc3E2S1lBcEFnRW13NFFpeE1Xek1VS0s4WlJiQ2x1SWhIeWI3UU5UV3VyZFdodDNQallwbC9UVFJKNFJHa1pvWGhqbnBsL0Q4STZNRjAvcllsK08xSFRBODc0MHIwenBoMHk3VTBBZlFiTXgwZWhKazV1UkRGUXRQMGZCdjlIQUt0eU9WOXNHbWo2YnRlVkw2OTZHWmJKK3ZCUVg3STl6L3NrZ2Q2dFZjTW55MUpWMnN5dlFiako5LzFiYzduYzM4YjZJVnhQWUZUSk16L3ZmeHVBMG1tb3g2WGVSRGZ2MnIzcjdiWElneTl6QWRTK3FGMUZwZHhRUisvL0V4VFFlVjI1cmwrVU9jZUttd2tCVURGazBGRXc1eEhvdndIVTB5aXNmTEpUNUk1YUVRQTZHdTE5VFB5bE9rSzVqWmkrNkRWN04zWjJkdjY5Z25FVktYQzg1M2xaRDE0SGd4ZU9rVHhYWDJsVktlMUxGeXhZMEZrdjBULzFOYkd0cmUzbFlLaFE2aE1xV0w4MExSOEI5Wm02M2cvOGk2b1JXYWVqQUJZeDgxa0Vta3Vnc2dpb0FNRk1BcjFxak9lMC9GVkhMVGNScUdvbExKbjRyOHg4ZnhBRWQrWnl1YjV5SjZNd0d6bzRwRWk3VmlJNnJoSjlFUVlyd2RtWDFpamlwOWdTRGpENGx4NjhVZGt2QVlLRHhQUUVFNjlldUhEaGh0RVRBTnI0U2xOV0JSVUNJb080NmdUQXBkMFBuVVJOZkJ1WVh4ZzVnWjJaaENrQnNRSHVHdlVKc1VBTmI4a0sxOXpkN1FBQUlBQkpSRUZVQVZVaEFaS3Bhb2xwaHIvVWdBUkk2Q0JFaTNUM3lSSUtFUW1nc0ZJZXJrZkIrTDVIL2kwdi90MkxuNXhJb2ZMTHZyeDEyb0dXdlJjQStCUUE5UWFOREhwTDdzVHBLS2I2aFBiKzJ5QUFod1RZVGt4Zk9uUm01cjlXWGZaeXBRNHZWeGtJTEY2OCtObnM4eWNZZlBFa3k3TlZoMGVkZzE0RzM5VGMzTHgyN2RxMXFxelNtTmo0TWlBZGN4TWRDbjhaQ0Yrc0Z6RkRLbkxJdyt1NnVyb2VHZk1DUnRHQlZ2Ly9GaGh2SDhYdG83dUZjZVBBME1EN3kvRW9qRzRBb0lFSkFKVmlwdjVUY1ZkRzZsWjlxS25TZ2huOVg2a3lnM2N2V0xoZzBXZ05HcTJEOFQwdC9EZGE2T3R4bjhGR1JZOFl2Tnh4RlU0R0wxVmFUZjNla0ZldENJQnNObnRveHNzbzhUK1Y4bFNQUytrcGZXei93ZjNYYjl5NFVSSEZGVi9xK2Z6MFg1K2VNOWcwMkFIQ093Q2NQcHJQVGdMdFZCNzRYYnQyZmIyZXhHdUllU1p6RFJqL05NRTFGOXhua0hxdm1TL1c2ajJsL2xQdnFYRXBkVnJtb1JrQTRkTUxGaXk0YXJUUFFuY2M5Vmx5MzMzM05SODRjS0I1YUdpb0xLMk1HVE5tbklBQVA2bG42V2NHdjNOZ1lLQnFtanB6NXN6eDkrN2RPemlhS0QyRldTNlhVMlJKVTdtWUtjeG50TXhZeHNUZnFtTjB6SjhaL09hQmdZR0h5anhiaVdiTnpjM3F2WkhQNVhJRFljejZxRklBM0M3TGl3U29PZ0dneEFEL1NrZCtrZ2tmQWZQMEJBbmc1djNyWjBHYUJJankvSXRFQ3JqVkJNSTIyaElvR2tFd2NpUkFhcGpJcW5DNWlocVJBR29ZcFFZWVh2cmZFVWdBMVhJL0E3OGs1aS9zR1RnOGw1c2dGUVFXZmVQWFo0TndIVE9PTFJvYTRZQ3M0Q3hHQXNTRVFFZ043ZkNZM24vVXNYKzhlZVdiM3p4czhZYlJ2TWttNlQzS3EvSE1qSmU1R3NDYlIvTkZab0xqb3Q0ZXl2RHZKSSsrbHMvbkg4amxjaE8rZ3NhaVJZdE8xbVd4VHEwVHZvTU12aXdJZ2h0RzgwRTcxamxxdFhlbC8vTDhzZlpWNXYzN0dmeU9oUXNYM2xxTkwyZWx4bXd3QXVCcElNeURmZ3FFeDVqNVNZKzkvZXp4TmdEcWk4V2hGTkRSQVFYUElBNDlLc2VIdWRHRVkzUit0SUpoQ0l6UGQvZDJxL1NpaXNtMkVLKzdObHpCeEordXM5ZXF6R01UcmtrOVQzNGYvc2Q0bklrZkk2S25naUQ0aStkNWluUVBMd3JvR1BiNEtJM1Y4eGw4TWhqSGdmRHNSaU1EYWtnQXpNcFE1b2NndkxiY0RSaERPMlZFcmlhUEx1enE2aHFWcDgwZFd4RUJ1NS9hUGMvUCtCY3o4enNxVE5rNnlPRC84anp2cW1yTXBRSk1sQWp3UHhCSTVVZFB0TEthNnIybEt2cjBnZkNuTUxJelFCOFQ3L1RZMjhFZTc2R0FEbGNoM1FFRmgzdndUbUt3MG1aUS95bXRoaGtWNEZDdnBvK0E4UHJ1N3U1SDZ6V2dPNDRtVTlmVThYTlZtV3puZFhkMy8yZzgxbHV0TWJVWThZMTFJd0FZZndvUW5OUGIyL3RnTmRZd2RnTEFOYjZLaVFOR1JuWmZ3TldwQXVBdStwL1diMzUrSnZCdVlPQVZjZHFCMHlJdERqaXNNZS95QVdtVmY3ZTRnUTNFVDVjSkxLRW5NTEk0WUVST2xCa0pFT0lkcjNHNGRBRFZxbndTSUlvRzBKMC9SWXh2RDNIVGRYZWNmK3FUNDZtZzMvYWRMU2NHdm44TE9BeXpDVlA4bzRoK25RTlFKQkpBTjlBZ21SczBjSVlNWVg3RTgzQmg3eFd2M2xTTk45SlU2V1BaZ21WSER6VVBYY0hneXlkeE9hQS9nL0F6SXJvdW44OC9NaDZHYnJublNYbkVqemppaUM4UTZJUGwzalBXZGdUNmVUN0lYNUxMNWZySDJsY2w5K3VRNzNjUlNIa0NsZEJXN1MvQ0F5MkRMY3ZYckYrajZtN1g3R29BQWtCOTRYNkl3WjBaem15Z1pucDBjSER3cVhKSXNtWExsaDArT0RoNGJCQUVKM2llTjQrWlozbnMvWC8ycmdOT2pySjhQKy9NM3FWUlVoVzdDQkdFMEFSRklCZjNkdmN1SmhDUWtraVZLa2hYaWhRcEVSRVFSSXFnSWdnb1RSS0tHdUtSdTl1OWhRVHlseTY5cVVpeFhqb3BkN2Z6dmYvZk96dXpPN3UzZDdjN096TzdsOHozKzVkdys5WDMrM1oyM3VkNzN1ZDlhMFBmaGphM3JBcFJiOWFnUGNoZ29hM1dTMUVNRm9iWnMwS3gxRFR0QlUzVDN0eDc3NzI3S3dDUGFPclVxV05IakJqeEtWSzBLd2o3TVZpeXNZamdzZHhrMW5YeEVRQVFzUzVKbVJhRTdzZEtZanFtczZ0VGdFYlB5dXpac3h0WGRLOW9ZZkE1SU94VkJ0VllHQ04zTnZZMVh1ajM4NmQ0a1ZaNG1hVFZQS0JPYnY4RmxPbG1zTng4UHFwcDJqT2FwdjFqeXkyMy9LQ2NyRFN6WnMwYXZXYk5tbzlybXZZNVl0b1RoQllBTzFqdk1HWGRrbnQyRUVwM0pBS1BQOUViOU12YTI5dEZjRExRRWdJQTdzdzk3QUdBN3p6OTRsdGNxUWhnS1ZzNVV3RVdad2hnOWdVQW1QM3l5NDNqdTQwVFFKU2x3TnB6S0xqcUxzb1E0RXloMXk5ZWYzQVFRSmFkdmNIM0hnUW9UaE5ZckFrZ2pyenpLZVhVQlNnWEJNakcvWmNPQjVCbFdib0FkdmlFVU9BNlNlR2kzZDdlNlpWYWhBUUk5WC9EbUhWbmtPSXJXRjUraXZaM1NCREFTdU9ZUncyc0hjeWVEd05LL2FLdno3andpZk9tYmhUNTRkMDl3aXB2bFVna3RtVG1FOEQ0SGdBUm9LdUhIOURLRnpKNEM3bWhlNTNCMXpRME5DeXM0N0FBYW1sdWlTbFNRcVhiMG1zamxPeVA4UjQwSEpGTUpoY0hNcDQxaUtYWUsvSGVod1EwcnJ5VVhaWHNTbDdrNXBhNmtqbldNUUN3Rm96bmllaTNlcC8reUJaYmJiR3NuQmZ1QWRZdUxDSjkwcVJKMm80NzdwaXB3Q251MTEyaU9YRTRFNHYrUlRCQTBPQ2JLYzdKdjBTaFhoei9ob2FHSjNwNmVsWlhDeHlhRlBJUFB4elQwOU96UFlIbWdIRVF5QXlCcTFzZ3dDOEF3RktpVHdlU2hvN3dncTdyQjdXM3R3dkx4ZE1pMy9Nbm5uaGlHemI0REFZZlBjak5vVEFUSHdmaGhHUXlLZk9vbUNWVHpjUVR6WW1EbVZodS84ZFgwNDhIYmNVTy95UFE3K1g3bGVITW45ZXNXYk9xaWxBSW1qMTdkc09xVmF2R3FqN1ZCTUxCREJZd1FOWlowekFCTTd4TzRTZy90V1lHMm84UUFIQjNVamNLQUVDeUFIanlkQ2taRG1DNmx1OHI1VjBhUU9kV25mNzRjNVA2RUpuSGpLajVkeGNnUUhFNFFMNmJJaWFBN1Q5NkZBNWdkZWVrRitTeUp6aVdrbHR1b2RoaDNwazM3KzBMZ0kzK3Z4WTJFNkFjRUVEbG1RQ1NUdS8vQ0xoZzFWYkxsd2FkS1NCNjJ5dmJhc2dJUldqM3JEMWtrZmw0aG9KOUc0Z0pNQUFJWUhJdUdPOUFZWGI2ckQyZmNmZjEzM1JibWRrQmRQMFFDd1RZc2RZL25qN3V4SElBZndMaG1tUXlLYmNQbmp3cXZaeHZQQjZmQUlVSFFQaHFRR0NNaEFGY1BXSENoTGxCcGxGTUpCSlRXZkY5dWZTdlhocXhkRi9MRkt0OXU3cTYvdXozVUhVS0FMd0x3bzBpa0RscDBxVDNndHpyd2V4dGlqYjE5TTFqOFA1Kzcwc1ovWDlJb01lWitIckRNSlo2a2M2cjFKaVM0M3ZNaURHN0tFMGRaNElCUVlGOVpSakFXY1V2QUNDUlNIeUJGVDhDNEhNVlRxbmk2Z1Q2a3hiUmpxMVErSytpY1N4V3pMZkJPTU9pcGhlM2YxVllkcWxVU2tEV1FIOXo5dGxubjgxSGpSaDFONE5GWExabVRyRm9IeWlvTmlLNnpUQ01wMzM0YnBsc200YUdocjAwVFRzRGpLazFGaFB0QmVIYWxTdFhYbG9Gd0ZIUk9iUXJod0NBSzdOaG93RUE3T1Y3OHFUcG55YndmYVc4RHdHdzUzeFMxMSsrUmhyOUJzQkhuRTVoLyt3QU9aYzdIOXR2L3FtRW8xOGdFVkFzTWppUUxvQ1R4cCtuOWVmMUIwcG9CdVJZQmZrZHlBa3BGc29VbUJYNmF3amtGVSt5MVBqOFFTN0ZJc2lqQ1dVekFhVEoyd1M2YU5WVzNROEdDUUlrYm52aE9DYnRPbWFXZUs1c01WUCtaUmVaVzE4T0ZIQ0lIVGlBZ2dJaEJ3Y0Znc0U5QkZ5WlBuTlBTWEVUbGdvdFlONW1wSi9ZV1pFNlg2aXFOZjd4ckhEMkZWV1hVeU5zZ0NzMVRmdGp3TEdZWlUwMEhvK2ZDY1lWQUVhWDFhRDZTay9yRWYzZzl2WjJpY0gwdlZncGpuNWtoVHFNOEgxQVFCSG93ZlU5NjQ5LzRva25mR2NJMVJrQVlERDQvelJOTzMvcTFLbFBWbk5UNzhjK05UYzM3NmxwMnNOZ1UxT2dWa1dlQ1JLM2UyVWtFdm5Ub2tXTEJDajB2UWp3R3FISXZxengrV0RzV205c0FMOEFnT2JtNXQwMTBvVGxKSG9TZnBjRmpYMk54L3ROdTdjeUc3UXlzWWdiUzRpakxmNzRKakdkTlc3aXVFZHJBTHFKOG44Y2pQa0F4dnB0NkFINno0RHdBaW02ZkgzditsUVF6MTlobDJtYTluVUFaeE5vdTRDQTlGTEwvNnV1OUsrM3A5dGZEdEwySVFEZ3p0b2JIUUFnWnZBQkJIaGYwM0RBOVh2czhwdzdNdy9lNnNSbm5obE5INDZZUzhTU3EzeDA0WTIrdzNrdjFnUndaZytvWXhEQTNCT25ZMSswU1FYaEFFT0FBSU14Qlp5ZkZZVUR5T2p2RVBPWnF6NjJ2QzBJRUVEby8zMmJyN3VlbVU0U1drUWhtQ01nUU5ZSTVZQUFwakNnVTgzUnRxV3BCOGlQaktMeHM5dk9tQ3ppVldHcDNBSTBvMm5HeEo2R25oTUpKQXJOSXJKVHMxdUR5cWRmZGdzNU5jc0EvRWFQNkRlMHQ3ZExtaGxQSHBWbHoyQ1FpcTNSMWltR1p0eHZ4VFY2MGVWUWZheFZyT1owZFhYOWFhaUtYbndlalVhMzBuVmRuTDZ2ZU5GZkdYMUlIUERablYyZGt2L2I5MUpIQUlERUhmOWV3SzVwMDZhOVVHL092NW5tYWtQdldTRDhxSVl2NlQwQ2tCRFJCZGJOcE5nc3NDS2hBY3VXTFJORitmTUlkR0NBNlRDSFhLTmZBRUE4SHQ4QkNvK0FzUFdRazZpK1FwZW1hMGQyZEhTSXFLV3Z4Y3BEdm9PRTFCRm9EL00zaG5EeitQSGpVMVdFMnJpZXM4VEtyMTI3OWlkV3l0OWFoUFpKbXJNRkVSWDU0ZDdSdlY4Tjh2bGpBakxqeHUzSkJsOEp3cGRySkhRc0xJQUxrOG1rcExzTTdQMGlCQURjZldXR1B3RHd6SXN2Z00zMEpBWEZpNVBuU00zbkt3QWdFejgxK2VwbmpFam1CZ0JDQ3pTenZtVzl3MkpCdnlKTmdGSWdRSzV0MWlSWko5TjZGanJaRGYxRUJXMkhkQkFtUUU0L29OQ3BOOGZKL1ovc1A1eE1nS0lwRlFBQzltZjJhb2RpQWhSODdnd2RzT1pnTzlWRklJQ00rUnJBcCszKzVzNXB2elVCWnR3dW9SMzZYUUNtbTNKL3R0MXp6dnNnSUlEVElBNjJRQ2tRZ0lIbjlFeG0vOVJaZTN1V2o5VGRvMlI0dHhLSzZtWWpOOXVieVl4dGJLMlQyRncvakNvdktHMFJGZm4rM3RHOTN3enlCV1d3eGJTMnRvNHhNb1k0UmFjSEJNQklmUHl0VFY5dE9pVUlHN1EwdDhRVnFkOEhxUGordEtHTU9WN2taaTduRU5ZUkFQQzRZblZpVjFlWHFGRjc4UnBRenZMTHJoT05SajlwcWNFTFhiY1dSVjdRSlN6dHg4bGtVbEpoMXNwRzFOcmErc2xNSmlQTzJrSDF3Z1R3Q3dBUUFGRFR0SzVBTkFDQWR4U3JyM3VsdEYzT0laWG5kMjl2NzdoUnhxaWVQZU43TGd2aW1WcHFYbGFvaFRBdGdzb3E0NXlHWk4yNVJYUjNVcW1VZ0MrMStHNVJJcEhZWGlrMXQwYmdtcXg1c2FHTUE5THA5TXB5em80WGRVSUF3SjBWaHo4QThQU0w4bElsU3AvOWlpZmZQdE54bzc4Ujhjd2J2clRMRys3TVhFWXJ1U3BlL01vWFNLbmZncXlZOFNLdk9YOWJiSU1BRG84NzU4eGJnTUZBYlozT3FOVTg3N2dYaHhMMHAvd1hod1AwYyt3ZFV4b1NCTERBaVp3a29iVUdXOHUvbEdhQWJjbGlFS0JnV0llbVFCNEV5TlY0SGdyZitlUGhPeTMyTXp0QTRqY3ZmNW9NOVJDYjhmL21HUm9VQk1oZDhGdGFBYVpOU3VvQ0ZLQTJVdWR0WGNPK3lkUDJyRW42bFRKTzlyQ3FFbzFHeCtxNi9nMHpYek9iaXMyU1czVmpLM0ljSlM3OEVzTXd1cW9WKy9MS09MRllMRWFnZXdGODFLcytoK2puRFJCbUpwUEp2L2s1bnFYKy8xTUNDYmdSUkRHSTZZS0drUTAzdHJXMUJjSU1xZ01BUUg0UzN0YVVkbmhIdXFOdU5WRVN6WWtEckx6TEU0TTRDRVZqOUFMNGJTMVUyUWRhcTJSRElOQlZsakJtelFVUmZRUUFKQXZBbzdZZWtNOTczME9nbjR5Yk1PN1NHbER3ZlY3YXdOMWJZVlpuRWVqeU1qSVVlRDNQRHhsODY0Z1JJK2EydGJXdDlycnpTdnN6djFkTVB3TGg4Qm93YkZhQmNFZ3ltWlNzRjU2NFlVT3RQd1FBaHJKUTZjODNBZ0RncGNzQnZuQWdPcDBucDQveGROOW9MZmJ6S1ZNa2Y3Qi9oWm0rOWNSTFg5TVYvd0pNUWtYT01nR2s5SXNiZHpqNjluY3NJQkFnZjV0ZE92VmZSVXdBajBDQXdjUUJpMEFBQTR3dUZkR09mMlRPbEhmOTJzeVdPNTZmREk0c0JIaHlkZyt6SUlERUFoU0NGM2ttUUtVZ1FKWXh3ZjhEZUdiNjlGQUkwS3U5RkljdEVvbE1oc0lSREQ0S01QTloxNjF5dGN0MVM4cXZWelhXNW82Yk9PNzM5ZkNpYUlFdnZ3Tmp1c3MxVmRxc0I0UmptcHFhNXZsNVk5WGEydm9wSTJNc0FQb3oxU3FkY0puMTM3ZHVBQU5MRVZwckFNQVMzTHBFS2ZYTGVnRzBpdmRLcU8vTHU1ZGZEVEpaTGcxbDdxVlgxU1F1ZVpGaEdOOU9wOU1TL2xNdlJXSzJoUlovTlJnU0RsRFQ4Q3UvQUFESlBBT0Yzd1lvL1BoWEswKzVnR0dldkFiWHk0RVphQjZTNHJlM29WZENua1RQSjhnaXZ5Ty9hZXh0dk1odjNZVktGcFZJSkQ0TmhWc1pISGZvTTFUU2hkdTY4cEo3NWJvTjZ5NWZ1blRwZXJlZFZOSXVCQUFxc1ZhKzd2QUhBSjU2NlNBUXk1ZCt3QlJTMVQ3OW1Pa1hOMzVweXFsKzNoamJXM0xpTTg4MGFPdEhIQVZXbDRESkZJd1pFQVF3UHhRMlFINkZlWmFBZkdneEJSeFg2ZmwvT202a3JVRUttUUNPK1BUaU1JU0MyMnliSldEUDFNbEFzRmRWS3JTZzhNQVdpLzg1OTh3SEprQWZnVzlZMzRlNTdkL2N4WmVjcFNZQWdDd0FrSGZzS3dNQjhoa0RISEVPUllLQnJOQU5uV2MrZHVxWG4zYjNDQWhiRFdRQksxUEFsNkJ3TkFoZkcwRHRlRGdiVUw1bWZ3UGhPNFpoUEZwcng4bTZ3UkV0aHB1Q2VtRWgwRjBOSXhwTzgvSFdSaHdjU1lGMjZ5QXBzN3c4UTdLbmo0eWZNUDZRSUdOd2F3d0F5SnJ2MFNQNjJYNHFuMWU3U1ZadWNoRW5tMVp0WHk3YVA2VlluZExWMVNVNlJ0VytFcmtZZnVBbTV0bFpzbVFYVm54M2dCb2dKU2ZrRndBZ3NlbnIxcTI3MGxMTjk5UitBM1FtOXczdFJQVGR6czdPMSt0dHovMHdRRHdlL3hLQVA5UkFYSE9CSHRIUDlDUHRZcFYya25DQWZWanh6WURKWmd5dUVFU0U5ZUFnZENoa1VTRUE0RzVyaHowQWNQcHp6MDNTallqY3J1dzVtQW1xK01WYkMwMGRmTVB1dXk1eVorTEtXd2tJZ0hXTisycU02d0I4dGp3UXdGR3JYMnkvbFlMT21rb0JDR0JSenMyUExDTTVOUVB5T2dnbHdnTnljZTJsTlFQTUxoMkd6L1pWbWpYUXYyNytMV1dvTklIRm1nSE9tM1M3WDNOazB5NDVEWVVWekh6cW1vOHRuKytIS0tBQUFJVElRaFlBd0xLdGt3bVEvVnQvRWNCQk13VFl0aXdFQWJxWlFnQ2c4bTlaK1MxTTRhN2UzcDB0SUdCZkN3Z0krZ2F2L0FsWFdOUE0zOHM0Yjl6RWNYK29OUk1nR28xdXEydjZRZ0NmcjNBWjdxb3ovczdFaDZaU3FhZmNkVEI0SzJFMVJMVElUeGw4ckIvOWwraFRZcnlQVHlhVDRrd0ZWbW9NQUh5Z1dCM2MxZFVsZTFqRlQ3Mi81b3JGWWw4a2tMeEhCRTMvZngrRTR5eGhOc2xMWHBjbDBaejRKaFAvREVBK2EwN0FNL1VMQUJEMng0cGxLNDVqOEMwQmlqK2EyVENJNlBKYWlmSUZ1WDJ4V096N0JMbzRZUHIvVzRyVllmVUlySW50VGRiUjh1VUhnaUVnd0VlQzJnODJtYWs0UHBWS2lXL21ld2tCQUhjbUh2WUFnQ2pObmZuc3k2Y1RzNmhPMm1sSVNsckR4WnVCQXJCSTY5T1B2Rzd2SFFOSmsyTlBmUGE4ZWZxRXJiYWJEYVlmQXRpbWZ6aEFjV28vcHppZ3cxazNGOTAvVGFDL0lFQ2grWU1BQVdURWNqSUUyQ0NBVkZmQTA1cE94LzVoenBSWDNYMTlCbTRsQUlCR2tZWE1kZ2lBQTJDeE5RR3NTUmRuQXFnRUJHQkdOMGlGREFDdk43Qi9meUphTmRvd2pKMlplWDhOMmlFTS9sVEFMeHQrclZLZUVpOEtOVG1aVEM2cHBSTTFlL2JzeG1YTGx0MUVJSEdZZ3dpN0VGSEVIMDJZTU9FcVA4Q1BSQ0t4R3l0K0lJajgzOWJoZUVtUDZBY0VmUnRWWXdEZ2QrTW5qRDg2U01hRG15OWlQQjQvSGd4eEFBZDlUM0hUOXlCdEpOVG42bFdyVmwwU2RHN3VTdGRoZ1dVM012aXdnTDc3L2Fib0Z3QWdBOFhqOFNZd1JMTnFmS1cycWFLK2lKMStBQTAzTWZQOVNxa1BhczMwcW1JdEF6WTEyWHFhUHMraS93ZWwvaSsvSFQrWU5tM2FOWDZHa0ZWcnIzMzIyV2Z6VVNOR1hjRXdzNHdGWlpzTUdGZVBuemorRWo5K1Y0dHRFZ0lBN2s3SjhBY0FKUEhsYzY5K3hqQ01lUUFMQldqSUExNEJFUEJ2TUgzbmhpOU5tUmNFL2I5NEM2MXdnT25NZkJHeG1kYWpTQk5nQ0JDZ1FIbStNaEFnSDNhUWsrZ3J5Q1pRY0p0ZmtnbFFQZ2hnTys5MmkrS1VnVGxWL3lHY2ZCY2dRSzhDM3p4UzE4NmZQMmVLQ0NSNVZySUFnTFlRb01tbGdRbExHSEJBRU1EOHdQNmZQSldpbU83QTNNMElBUURQTnE2TWp1UmxnNGgySktLdkUwZ0VTSGNJK0tXK2pGbFdYRVhBenNjTVpSd1hsSEw4UUROTU5DZjJWYVR1SU5Da2lsZmhwZ0dqVTIvUWovQ0RQaDZMeGM0aDBBOGt2YXVicVZYWXBnL0F6MWV1V25sdTBNNWVEUUdBUHNYcWtLNnVyajlXYUt2QXE4Zmo4WnZCT0xtY2R4UVBKL2VhcnZTRDJ0UHRRZ092K3hLUHg1dkJ1QzFBd0t6QUpuNENBSmJnb2FRZERaYU9uVjNoV2pDZUIzQ2YzcUMzdGJlM3YxTkxvTmZyZ3hpTHhlU1M3SkdBc2l4a3A4OUlNL0V4cVZUcUgxNnZ4K3YrV3FJdHV5cE5QV3d6aXIzdWY0RCsyZ3hsZkRPZFRuZjdQVjRJQUxpejhFWUJBQWdMNEt4blhwcWhBR0VCYkZlT0tjb0FBZFl6NGJJTjZMM3hWM3Zzc2E2Y1B2Mm9NNWRaKytlVEwyK3RaVmhlSWtVa3gzeVJ6TWJyVzZUeWdvRDU0alNCRGhxK2xjTFBrZDdRUWRFdlNoTm9od09ZNHhTREFQSkhKL2hRckNmZzFBWElXeVd2TVpCZGdlczBnYzdVZjg1NVdrTU54Z1RJaFFmazJ0Ri9XYU9EL2pobnh5ZTlCSGxzQmdDZ0pwdVlGQVBpWVZrL0hCWlB0VElRUVBZdGgyNnAzS1ozTXhzaEE4Q1BMOThRZllyVDgrU1RUd3I0ZUJBVXZnN0NyZ0dtZWZOanhRcUVPeHQ3RzgrdnBaaVJpRG4xTmZUZEZxQmcxaXFOdFlNN3VqcEV0ZGl6TW4zNjlQR1p2b3pFZk1jODYzVHdqdDRWMGNwVUt2VjRRT1BsaHFraEFQQzhvWXo5NjB6WXJwLzV6VENpRGIyZElBU1ovdTlERUM1dGFtcTZ2cDV2S0ozR2tuU3NvMGVQdmhpTTh3TUdTc3hwK0FrQXlIcmk4ZmhOWUp4VVE4QTR3K0RYaVNnbERyTmhHTTlIbzlIbHcrVjhEUEJjbzFnczFrSWdZVmVNQ3VqWkowcjNaelkxTmQwMUhHeG5oUUpjQ3NiM0FtUXRTbWpXOUs2dXJsZjgzcE1RQUhCbjRZMERBQUF3dCt2dkkxZU9XWE13Q0ZkYnF0MURXbVFRRUtDUGdidjBQdjNjb0tuL0EwMzYyTWVmbXpSUzZkOWkwbzRCK0hQeUE1Sy9wWGNLOXRuQ2dEbVlJT3R6NXVMSCt6TUI4cDlYRHdMa1JzMkJEWVVycWhjUXdIYkdpU1VVUUx0MTlZWXhaNmFQM1ZyeXVIcFM5cnZqK2NtR2hBRGtzZ0JrVVJ2UFFJQThFNkNiV1p2NTJLbTdoU0tBbnV4YzVaM3N2dnZ1RFJNbVROaktNSXlaWUVnS3dkMHR3YmNoMlVpVmorWjdpMVdTUGlqSUZITEZLNUtYbFdYTGxuMkxRQUxvQnZGQ3B3aDBZMmVxOHl3dmI4VmlzZGplQkpJWXlFQW92d1NTMjczVEZpMWFGR2k0bXV4ZmpRQUFVYmEvZmVYS2xhY0Z6WGlvOUZzb041UUVhZ09RMVlRSm9oQ2VVVW9kMmRYVjVWLzZZaC9XMGR6Y3ZLZW1hUS9YUU16TmJ3QUF6YzNOTXpYU0pOWHBnS0xWUHBpMFZKY1pBS3NKdElTSjIzVkRUNjdwV2ZPUHBVdVh5anRRR2ZkakFjMnlqR0hrOTNmY0Z1Tk9ZekxEZ0lNcGpFNkRqYVBTNmZTL2d4bXcrbEdhbTV0MzBVZ1RRRHFvWjlBR0JzOEpRZ2NnQkFEY25ZK05CZ0F3WDBKZWZybHh4WG8raXNCekxhR3VJVi9BaTU5MERLd2k4QU02YXovNDZaZDNlcytkV2YxcGRVelgzMGVPMU5mdVRteWN4YUJXdVczTU85UkRnQUFGdCthRGdRQXk5K0xRQXB0eGtQMHNlM3R2LzlzcE1EZ1FFNkJJL0UrYTV0R0x3WmtBQlhYemNmN1pXVGlCamF6TkM4Z1FSVXlCZ3IxMk9PUEVlSmNZaHo1OCtNNUx2ZG81RXdEUUlndGhhUUE0bGxzK0NHQXVxRVNhd0p3SW9QbDVDQUI0dFdsVjlpT082Ly8rOTcrUFJTZ1NZK0lqQVh3bElPWDNLbWZlci9uZnJKdmtKNzN1dU56KzR2SDQ1NjE0MlMrVTI2YktlcytCTURPWlRQNm55bjdNNXBaRGZDR0RSY01saUxLZW1FNFlOM0hjL1VIRVhCWXZxRVlBd0NvR241TktwWVF5WHRjbGtVaEVXZkdEUVlGQkFBd0N6VzBZMFhCTlcxdGJUMTBicDJoeUVtSVYwU0lQTW5oRzBDd0FueGtBb2dQd1VTamNEVUtpanZaa0xZUGYwNkE5cXFBV05EUTB2RkFMRU5HdFBZUTFNbXJVcUJzSTlDMjNmVlRZenBEYmY4TXdiaGxPZWdyUmFIUXpUZE91SnRDM0EvcGVpUTdBWmNtdXBPKy9nU0VBVU9FSnRxcHZWQUNBckVuRTh6NzJ1Yy92UlVvN21RZ3pBWXdkeWpTV2M5WUx4a3VzNGFlYWJ2enArdDEyV3psVXUxcDlmbUxITTF0U1E4Tk1JcEljNVh1empTWmJLdnM1aXI5OUM1OXppeDJPdmVYQU84TUJaRDJEaVFQbXdZWVNHUUZ5MlFTS1dRVE91bzRNQU9aZ3RnVUhUeE5ZeUJvb0JBR2toendiUGhjMm45dWE0bkNBb21GdFoxeVJ3dlhHNXIwWEw1amxUYmhIRGdCd3BBRjBBaEM1T2VkQ0VRWUlCM0JzaXV4VnNXQWdnRzQyS0dRQTFPckxPTUM0VTZkT0hkZlkyRGlWbUk2QWhtbGdmTFRXT2E0ck1KR0VBaXd3RE9PWWREcGRrK2VnM09xTTNXTHNWU0RJclh3UVpSMkRqMHlsVWtJanJmb0dMQnFOVG94b2tVY1lQR2gyR2c4WDlueWtMN0x2b3NXTC91VmhuMlYzVlNNQTRIMU5hUWQycERzazEzazlGNkYrSHdIR25RRlN2NGVMYlVydW15V1krSE1BalVGdXJOOEFnUGs5ZVd6Sk1VeDhiVG52cGtHdTNScExudmN2TVhpaHJ2UkY2L3JXL2ZXSko1NVlVNE41bEQya0ZXcjFLQURSQVBPOVNOWWNnNDM5aGh1elJnd1RqOGYzczU1REUzdzNsQms4VEE5MHBqcUZGVm4xYitwZzh3MEJBSGU3dWRFQkFLWVptT25rbDE0YU83S0hwek13RzZBOUxPUmRma3cweTFSeUlJVUd0VjRlZUFCM2tCYTUvLzIvdnZMMytYUG0xRzJxSEh1YkJlallhcXR0eC9leVBnT00yU0R0S3dDUEJYT2s0QWEvcmtDQXdrUGFQeHhBUGkrZEpyQXFFR0FJcG9EbGpMK3FGQTVlY1BqT25vZ2w3WGZQODVOVnBuOGF3T3hUTU11SUtBVUNaRDkxTUNseW9Sc0NFRGdaQWJsRmRiTkdNeDg3TVF3QmNQY0k5SytWbGQ5NmMyYitFaGhIQUJEV2pxVGlDVUxkdnRxRnJXSHdTVXFwK1RXNjVSQ25LUXJHUTRHOUtCTit0V0hEaG5POGVPR054V0l6Q0NTcCtJS2cvMHRrMFRYSlZQSUN2MSswQmpwVU5RSUFubWJ3Z2FsVTZvTnFEN3VmN2EzNC83TkF1TUxQY1FyNlpuU3UyN0J1LzZWTGw4cjd6YkFyemMzTk8yclEya0NRVEN1QkZiOEJBRmxJYTJ2clI0eU04VXNBWHcvb0pyWlMrOG1yaG9naWYwQ2d4OEJZbU9ITUU1TW1UVnBlajVrMkVvbkVGMWl4aEZxSkVLRGZSWnphQmVNbWpKdGRqN1lZYXZFbUE0VWhRcFJmSEtxdVI1OHZiUnpSK0xXMnRyYlZIdlZYc3BzUUFIQm4zWTBUQUxCdHdVeW5Qdlg2K0VhOTcrTUFkbUttSFlqVjV2S3hBdnBJMC81QmlsL3NpMlRlbXRqWTJEMTNpcmRLOE82MnBMSldJaEw0N3lkZm5JZ01wakMwZzhGcVdsYnBrelp6TWdIeThKdEZ4eTlTN3JlZHk3enA3SDhWMC9xTHd3SHNFQUNuNCs2Zy9BK1JJYUEvQ0ZBWXRWR2NFY0NKSTlxMyszYUxRWmtBUlNCQXY5QVB4b2VLNk53L2ZtTW4rV0d1dXRnQUFJak5MQUJtc1VJU25DQkFqcUdRWXdKa0t3NEZBdVRGRERrRUFLcmVMZjg3U0NRU1d5cWxSQnZnRUFMTktqZEV5ZitaRFRJQzQ5RklKbkpjclc2VjQvSDRCREFrWmpIMUZ4MHZBQUFnQUVsRVFWUWEwSXZ5R3lBY2xFd21xMG9MT212V3JOSHIxcTJiQzhZNUFjMTdPV2wwUUdkbnA2UndyRW1wQlFEQTRIa05EUTBuMXp0ZFdhaTNFUzF5SllOUEMyeHpHQmMyZmJYcHg4TkJvS3lVVGN6dmZwWXEvN1hBYk9hL0NLQzVGUG11TEY2OE9BNkdhQUZNREhKOUxzWVNjSEVGZ0ZjSjlDZURqYllOR3phOFdVL0FVandlYndIanR3QzJjckcrU3B2MEV1alN6bFRuVlpVMnJJZjZGaGg1QThnVW9neWl2S1pIOUgzOVRrc2JBZ0R1dG5MakJnRGMyV1RZdGhKV3dJUkprei9GckcwRG9yMUF2QTh6UG1QZVFqRUo4REdLYlVsNmgwT2FkVTZ0N0FFT2o5dXZjQUJ6T0ljSDdveVB0NWxDemd3QnBkSUM1dklTRkhueWxZQUFsZ25zL1phZUZtUkc5eDdtUlJoQUFRRGdIS2dBQk1nT1hRMElJQ0VBaWhBeUFJYkp0MWFvN2VNM0g3K0wwdFgrWVBNRzZQTUJxdkpXYXFYVllKemI5TldtMjJybFNNU2I0MmRZTjZkaktwMjhpL3JyUUxna21VeUttSlJyeXFMb0Z6RHpnd1NhNG1JT2xUYVJlZjZCTkRxbXM3TnpWYVdOdmFwZkN3QkE4a3lQM216MER4WXNXRkN6TEQzbDJNOTBab0ZmZ3lFcFE0TW9vdlErUFpWS2lkTDdzQ3ltYW5uMzhxc2wxanJBc0FuZlJRRHR6Wmc5ZTNiamltVXJMbUh3MlFCR0RwTk5rcHVKOTRuby94VFV3dzE5RGVrdHR0cml2N1hRSEhIYUt4NlBIdzNHendMUzJ4SGRrZjFya1duRml6TWl6K25ISDMvOGFBTDlPaUJ3K3Q4TVBpQ1ZTajNseGZ3SDZpTUVBTnhaTndRQTNObXR2bHN4MDRuUFBodkpiTmhzcEdiMFRDUkYyMmpnejdDaVNZcjRZeHA0SkVNVGJZUXhlVVc2N0pKTWxYcW5jMTdzWU5zcnQrWHNuWFZ6RXZmWlNnVk5IYmZneFYyWWRSazZNVDdPRU1DQ0pkVmhRN2tnZ0ZOZFg0Q0Jja0VBS25MR0NYaWJXZTM3OEtHN3ZsbnRCanNCZ0p3dFNqSUJMRnZaZ29VbG1BQmtzU2ljOGY4NXhnYWpXeFB4c2pBRW9Ob3RDN0k5elpneG8zSERoZzJmMWFBZEJES0JnQjJ0Rko5RENwY0dPRkY1NFZ1a04raEh0N2UzL3pmQWNYTkRtVlJnMHU2MzdCUEVGSVIyZkZReW1Wem1kckJZTEhZQ2dTVEdkd3UzZlZUUXpoYkNreGM2MTZCRkJlT1ZyRm9UQUlEdy9jYkd4bXZyWGVUT290MEtrNldwV2p1WDFaN3hkd1UxWXpqR0tEdlhaK2tBQ0JnWHhQZklIRHFJRUFCN2piRlk3Qk1FK2dWZ2FsWHBaZTF0ZlZTU056MFJEbnlLbU9ZWmJQeHAwcVJKLzZvVkVKQm9UcHpMeEJKZUUwUm8zUnVHTXZaTHA5TnYxOGRXVkQ2TGx1YVdmUlFweVVoaXNxRjlMcEtLOU1Ca010bnA1emdoQU9ET3VpRUE0TTV1dzdhVlpCSXdlbGZybTQybVJsN0hEZVVzWkcwNWxTcXBVNkxEaks1UmhOUm9abXpIQk5FMU9FaG8wc3lVYzRpY1RBQVpydUMvbmFyK0pUSUVPTitNNWQ5MjJ5SVFJS01CQnp3NFo2YzJrSHppdmdnQXdLSUJRSnhMdVZJWTd1QzQrYmVHS1JZc3RFTUZKQnlnRkFpUXRRRjNhd2dCQVBjN1ZkdVd3Z2pZZlBQTlA2TnBXb0tJNUNaajF6cTdFWko4eDdPVHlXUkhMU3dsOUdtZGRCRURQQ1dnRzR0dXhVb0VudjdzWnIxV0h2Tzd3RGd3SU5ISFp3MWxIRnJyRjlKYUFBQU0vbFlxbGFvcDhGSE9HWWxHbzUvVU5UMXBzWDNLYVZKdG5TZjFpSDVnclVDN2FpZHZ0NC9INHdrdzdncUkybTBPR3lRQUlNK3plRHkrQnhnM0FmaXlWM1lMdUovVkRINmVpRzVyN0cxYzFMYTQ3WDlCam04OWR5NWo4UGNER1pmeGFDMEJjUy9XMkJwdDNkN1FqSVVBSkoyNDMwV3VydzVPcFZJUCt6bFFDQUM0czI0SUFMaXpXOWpLUnd0SUtNUEl4dTMyWUtLekdid3ZNd2tqd0N5dVFZQVNZUWZGQUVMVzRhWXJWbnlrKzlKMGM3TUlSTG91SmdDZ0lnc0Jod1pBcVRVNGdBdHpmU1VGQ3dmSUVKQmRRRGN4aHd3QTF6dFZQdzJuTjAzL1dGOURuNlNIT3A1QThrSTRxZzVtWnpENDlna1RKcHhjcXh1ZVdDd200b2wzRTJoU0FQWXd3UGh4c2l0NWtac2I5VVFpc1JzckZwR2xJT0pSRllNdlVVcGRtMDZuSlg5M3pVcU5BSUJqVTZtVUtPdlhkWWxHbzUvVlNVK0JzSFVnRXlVOGFCZ21LRlRWYjFnZ2N4MWtrSmFXbHNuS1VLTHVIb1NqWXM0a1lBREExZ1BZSFF4aEFvZ3dXejB4d0NvNUF1c1ovS1RHMnEvVzk2NXY4MEpJdFp6QlJXOWwvZHIxMXpKWVV0djVYd2kzNjdwK1JudDd1K2YzWXY1UFBqdUNpRkNxalBwalVCbHFpT25vcVYrZGVyZWZZWVFoQU9EdTlJUUFnRHU3aGEzOHRnQXpIZkhRaTU5QVJEc0RVS2VXRFFJNFFnRGtsN1RBb1I0QVFIQnFFRER3Nkpick5qL3d6bU8zcnVxRjJna0FpS255WUVOV0lMRTBlOEg2YkFBUXdPekh6aENRQ3lmZ0VBRHcreXdHMkwvRXZxNVlzZUlUekh3b014OUZvTzBEb2pZT3RzcFhMTnJqT3dHYUlqZFVOQm9kcTVNK1A2amMyUVQ2YzBOZnc2eEtiN05NY2EvSEZwOEd3dlVCdmNqL214UWQySm51L0w5YTdJdHp6QkFBR0hnSFdxSXRleWhOeVEzWUp3UFlKd0d3Ymt0MkpZTnhpSHhjVURRYTNVclR0STZBdERScUFnRElvRlpjOWxRaXVoWnNnZ0IycGlvZnJldEwxNktRdjFKQi9ZNlpiMkhtVi93R29WcGJXOGNZR1VPZXR5ZjRzcUtpVGhsODFiUnAwNzd2cHpQcjl6cE1rZHExNnlUZGJZdmZZNW45RTg1WnVYTGxqYzgrKzJ5ZlgrT0ZBSUE3eTRZQWdEdTdoYTBDc3NCUkQvM2xJNGFtL1p4SUhjaE1CVCtNQmVLQUE0Z0JWZ3dDQUMvcXlDVG16L2xpVlZRMkFRREFWaHBBTzY2L1FPMndFQVRJMC8reklJQU5HdGhoQTNZNFFBRUlrUDJQYmxJcVpBQUVkQjZER2taRW9wWXZYNzRMZ05QQU9OalU2NmhkK1pEQmMxS3BsTnpHVlJVYTQyWUpsaURZcVNCY0Y4VExNWUZXTVBFM3JMakZzdGNyTDZNcW94NWlzREFXL0MrRVJhTkhqejZvSGtUd1FnQmc0TzJPeCtOTllQd09nR1FqOHJ2ME1QaTZWQ29sS1NHSGRiR3lnTXdERUF0cUlVRXpBT3gxbWMrNDVjdW5nWEU1Z0wwQ0FoRDlNcXM0ZXMrRDhGUERNUDdnSnp0SnN1dXd3VGVEekRTN2ZoZGhYRjJXU3FWKzRQZEFQdmRQOFZoYzB1dUs5cER2aGNIblRwZ3c0VVkvMHlhR0FJQzdiUXdCQUhkMkMxc0ZhSUVqRjd5OEM3TzZEOHhmY0FvRHloU0tRWUM4KzV5UHNTOEZBdVRTNkZucmNNVGZ2NnNEQjgyZnMvT3oxU3pSQmdETUVBQnpvdlpBaFI1VXFUQ0VBcjBDaHpqZ0FDQkFOeGtoQUZETlh0VnpXL09Hbzg4NFFsQjBLODl4Ylc2SEdKY1piRnpwNTh2Y1lQdlEzTnk4blVhYXhDMEdrZXRaRW5GZUY0bEVMcTZFNnRuUzNQSlZSVW9FQ3o4YXdKbnFZL0NKOVVLQkR3R0FnWGM4YUFBQWpHdVRYY2xnWXFKOVBPalRwMDhmbjhsazdnVmp1by9ERkhSZEt3REFtZ1JGbzlGdGROSXZCMEZTeGVaQ0g0TmF2OGZqckFUaFZrM1RydS9vNlBpWEgrQ3hLYkNwY0dkQTZTTFhnM0J1TXBtODJXTTdCZDZkQlFDSVRvM3ZKUVFBZkRleDZ3RkNBTUMxNmNLR1FWbmd4RnVlYWZod3F4RVhFdmg4U0FZRExneVRHNHdKWUR2MjVZTUExTTFRUnowOFp4ZTU3WFJkbkFCQXp2LzNBUVFnNW03VzFNemtzYnM5N1hxeVljTzZ0b0RGQnBEYm9hc0JVeVN3Rm5HaWJUMjlQVWNzV2JKRWNrSUhYa1FzY2V6WXNiOEU0NXNCaFVUOEJZUTV5V1N5ckl3Z1puN2wzdDd6d0xnMENKWUNnTmNNWmV4ZmEvRS8reUNFQUVBSUFIajlVTmdFQVFBeElVMXZtcjVWSnBJNUFZVGpBWHdxb09lSjE5dG45eWZhQUFzaUt2TEQ5blQ3SzE2REFBRURBR3RCT0R1WlRON2lsN0dDNmpjRUFEeXdOT0d3WkRJcHpLNWhXMElBWU5odTNhWTE4U1ArK0pldmdFbHUxejR0ZCtoWnB6L3ZCeFdBQURtUE8yc2pKd2pnL08vc2gvMXU1TmN3NkZzUHpkbEp4bkpkQkFBZ093VEE2c1VUSmtDTzlXRHpBYlJ1VUNZRUFGenYxUEJvS0JUUmxkMHJvNHJVendGSVpvbWdRWUMzZEtYdjM1NXVmNzFXRm92RllnY1M2RFlBNHdPWWc2aGJuNTFLcFdTOElVdHJhK3VuTXBuTWZRVGFaOGpLMVZmSWdISEwrSW5qei9LVFZsbkpORU1BWUdCcmhReUFTazVTdnU0bUNnQ1lCcEE0N2JWcjEwNEZjS0gxVEFraXhaMjdqUnE2VlIrQnVraW4wem82T2lSOVh0bGhWVU4xSFRBQXNJNUE1M1NtT2tXd2NWaVhFQUR3WVB0Q0FLQnlJekxlVTFDenVycTYvbEo1NC80dGduNEo5bUxPWVI4dUxERDcwVmZHTi9ZYTk0R1JpNjlsMCtzdkRRTElFT1dFQjVoVEtRUUIrcGpvakFjUDJlbVhMcWFaYTJJQ0FKQXNBSmljbldlK0RNVlljTTZwWkRoQWJzN1pMQUJNK3N6a3NWTkNCa0ExR3pZODJrcmFxSDNCK0JtQXp3WTVaUWIvajVsUDZPcnErbU9RNHpySHN2S3Azd0ZnUmdCemtQUkZEMnVhZGx4blorZXFvY2FMeFdLekNmUXJBR09IcXV2QjV4K0FjRlF5bWV6eW9DOVB1Z2dCZ0lITkdBSUE3bzZZcVFHZzhMdWd4RDlsbGpVT0FlaG5xSmFXbG85emhvOVFwTDVaSjRLdzdqWXo2L1Iza2tablQ1MDY5Uld2UlBSTWdWaE5GNGY4VUxjVHE2Q2RBbU51c2l2NXd3cmExR1hWRUFEd1lGdENBS0J5STRZQVFPVTJDMXNBcytlOXZObUlVWHcxbUU4dWRLQXJBQUVzVU1DR0RCeHgvd1VnQURIT25qOW41NTlXWTNjbkFHRDY2MldCQUVVWkFpeGdJaC83bnhVT0xNeGFRTjFNRkFJQTFXeldNR29ialVaSFNob2lpMm9lWkl6b09oQXVUQ2FUTjlUS1hHYUdoR1VyVG1Td2ZEZEhCakNQZnpKNFZpcVZlbTZ3c2F3UWpWdkJwaENWSHNDOEhnRGgyOGxrY2xrQVk1VTFSQWdBREd5bTV1Ym1QVFhTSGdUd2liS01XVjJsRElGKzJabnFQTDI2Ym1yZjJnTDhGZ0VRTWRSQVNyMEJBTEpvNi9teUxURjlpOEVpM0NibnFDRVFnM2c3aUVHZ0pCTi9ONWxNdnVwRjE1Wkd6ZzFXdUlRWFhRN2VCK01LdHlsaS9aOWNlU09ZNFdvOXZaS1ZKQWdnWGZpNm9RaGdlVnNUZUswd0JDQndrNGNEdXJIQU1WMS9IOW0zWnMzM0NEQVZXUDBFQVR3REFDaXlFTXlUc3l5RnJPZGVmS052MjJMQU5JRkRnZ0RVclVJQXdNMlJHclp0RW9uRXA2RXdMNmc4dnBhaEpNWFR0Vk9uVFQzUHE5c2JOeHVRU0NTK3dJci9ZSVZCdU9taWtqWUdnODlQcFZJL0dheFJMQmJiaGtEQzl0bXVrczVkMWhXVjkyOU5tRERoM3ZuejV4c3UrL0M4V1FnQURHelMxdGJXclkwK0l3bkMxcDRidmtTSERKNm5sRHJDN3hSc2ZxL0ZVdlp1RDByNFU5WlRqd0NBYmVkb05McFpKQkxabFpsbmc3RXZnTS9WSUJTczJtMFg4ZEw1RFEwTnB5OWF0R2g1dFozVklBM2dyV1BHalBsT1BXUmVjV3M3Szd1R01QbjJkdHRIUmUwWUo0MmZPUDdYZnY1ZWhWa0FLdHFSWE9VUUFIQm50N0JWd0JZNGF0RmZ4cUNIcm1RZ2Q3TlJFRk52NmdLVUZ3N1FIMEFvdkZXSFJ3d0FqUXJUQUpvbUt3c0V5Qm8zQndvVWdBRDV6N0l5Q05TdE9HUUFCSHdjYXpxY2RSTitISU9GK2hqRWpiTzkzcnYxaVA3dFNwVHh2VGFVaUFHTzIzTGNUeGw4bXRkOUQ5RGY0c1lSamZ1MXRiV3RIdUJ6Q2NzNEFvdzdBOXFMRncxbDdKdE9wOThQYVAxbERSTUNBQU9iU2ZRaGpJeVJEQWkwa29sMDlmVDJIRndyd2M2eURrd1psUktKeEZSV0xDSmJRVEFuekJuVk13QmdtOHg4L3E5WThYa1krSm9pZFlBR2JXY0dTK2pSY0FtSjdRSGpSNk0zRzMxdHRZNjAyR0xac21XWEUrajhNbzVVMVZVSTlLZUd2b1pqMmhhM1ZaVW11dXFKVk5GQk5CcmRWdGYwUndJQ3JKbVlEdW5zNnBTMGc3NlZFQUJ3WjlvUUFIQm50N0JWd0JZNC9KRVh4K21NMjVrTGM1ZFdDd0xZQVFRT2FuMkdtYzk4WVBZdUlyYm11a2dJZ0tabEdRQk95cjdab1JzUXdORXVsMHhBK2drQkFOZDdOSndidGtaYnB4aWFJVC9pbndsd0hXMkdNcjZaVHFlN0F4eXplQ2lLeFdMTkJCSUs0eFlCektOYlkrMlFqcTZPeDBxTkpTRVptcWJkUTZDREFwaUw1S0crSVpWS25lMmxrSllYOHc0QmdJR3RHSTFHdDlJMVhVSUFncmx4QTk1azhNeFVLdlZYTC9hMlZuM0VZckZqQ1hRZGdDMkRtc053QUFCc1cwU2owY2dvWTlTNDNzYmVyeExUVEFaUEEvQkpBQ09Dc3BmcmNSanZRY01wVFUxTmY2cVdVUmFMeGM0ajBJK0NBbUQxaVA3MTl2YjJ2N3RlZTQwYnh1UHh2Y0JvQytoN3RZN0JCNlpTS1dIeStGWkNBTUNkYVVNQXdKM2R3bFlCVytDb1IxNzZBcGgvRCtEei9jVC9MT2M0TzZVaG1BQUZkUXN6QkloanpReEo5WExpL0lOM3ZyZWFKZVlBQVBCa20vZGZiaGFBSXJtQWduQUhHenpJaHhKUXQvejRQeHFLQUZhelhjT3U3WXdaTTdibzNkRDdCeENpUVUyZXdZODE5RFVjdG1qeElzbnBYTE15bzJuR3BONUk3ME1naUVxMjMwVkNIeTdMcU14VjZYUjZRL0ZnTGRHV1haV21CSXdJUXBSeEZZUDNUNlZTai91OTZFcjdEd0dBZ1MwV2pVWW5SclRJYjhRcHI5U3VMdXZMYjFoTE1wbGM2cko5UFRTamVIUDhjaEMrRjFEYVQzUE53d2tBY0d3U0pSSUpBVU0veDh3SGdqRWR3QTRBTnF1SGpSeGdEdkpjYlNPZHZ0WFIwZkhQYXVZWmk4Vk9JTkQxQU1aVTAwODViUW0wd21CalJsZFgxNS9McVYrSGRTalJuSmpOeFBjRmxGN3l2NlRvZ001MDUvLzVhWXNRQUhCbjNSQUFjR2Uzc0ZXQUZwZzdsN1cvZmVuRnM1a3hGMHltOEptUElNQnlwZWpvQjJidkpMZXJyc3QrOTd3Nk9hSVpDNVVBQU9hRXMxM2xRUUFSOUNzL08wQjJ6ZFowQ2tJQ1FnREE5U1lOODRieDV2aHRJQndUME0ySFdPdFowdWlnenM3T2QydHR1bGdzZGc2QlJBL0VmeUZFd2pQTWZFZ3FsZnFIYzkxeUF4ZWh5T2xNZkhVQVRvcDgreGNheWpncW5VNnZyTFg5aThjUEFZQ0JkMFRBdXA2ZW5wOFE2RnRCN1J1Qnp1aE1kZDVVYjB5UmN0ZWZTQ1MyWk1VU1ZpT2lkNEdWWVFvQTVPd2ozOE4wT3YwUlRkTjJJOUFjd0FTSTYxVTBVSVJsTDI1cWFycStHaFpBb2pteHJ5SjFCNEVtQlhCUVJJTkZkR0VFY0JoMnhSU1VYTFpjZnEvT0RHanliekI0WDcvWlNDRUE0RzQzUXdEQW5kM0NWZ0ZhNE1oSFg5bFdNNHpmTWZQdVdTODZHK3JXNzZZODUyRm4vK0hVQkNpdVh4ZzZrR2NDQUhpZk5YWHcvQU4zZmFxYUpSNTh6L09URFUwMEFEQ1pDN3gvTnlCQVB0TkJmeEJBQUlETXpFZVAzUzFNQTFqTmhnM0R0b2xZNG5KUjJBWFFHTkQwMzlKMGJkK09qbzYzQWhwdndHR2FtNXQzMUVpYkQrQUxmczlGYm4wVTFKbXBWT3B1cDBNMXZXbjZ4NHdHNDA0RzUxS1QramlYMVJMbjJwbnFsUFNrbnVYUjltcStJUUF3c0NXdE1CR2hLYy8xeXQ1RDljUGdoeVpNbUhEWS9QbnplNGVxVzQrZnQwWmJ0N2RDbkxZSmNuN0RIUUJ3MklwbXpabzFhc09hRFRzb1VpMUVkQUNENVZrcHJBQXRTSnNPTWRaZkdIeEFNYmhheWZ3U2ljUnVyRmhpeklOZ1lVa1kxZ09yVnEwNjh0bG5uKzJyWko3MVVGZllTTHFtaTRodUlPRklCUG96TkV3dko1VnVOZllKQVFCMzFnc0JBSGQyQzFzRlpJRVRGend6dWtkditCRXpuU3FwYjNLMzVnTUkvZzJtQ1ZBT0NBRGdkZEtwOVhkZjMrbTlhcFlvSVFBUjBRQ0FhQUNROWNhZUQvNTNNZ0d5WUVWK3ROS2hBbGFLUUNmSVlYWkgzUWhEQU1yZUtybU5XNzkrdlVxbjAydnIwWkVxZXlFQTR2SDRtV0JjRWNndHVLa3dSVytUVGpQckFRQVFSV3lkOUt0QU9DVUE4U3NGd3QyNnJwL2lGRUNNeCtNSk1BUVUrR2dsKytheTdsODBYWnRkRDdZdk5mOFFBQmgwVjBXMzRtZ0MzUjdBV1RVbkl0OVZhTmkvczdQek5aZm5yYWJOWXJIWVlRUzZJK2g0OW8wSUFNanRud2luYnI3NTVwL1FkWDBmWWpxQWlhZUNzVlZRWjNHSWc5UkRUTWVObXpqdWZyY3E4YVpUcStzZFlPd2EwS0Y5Vlkvbyt3MUhIWUI0UE40TWhvUzN5djc3WGVTbDlaR21hVTFmcjRiaFVjNGtRd0NnSEN2MXJ4TUNBTzdzRnJZS3dBTEhQL3JLZUVNWnB6SndIak9QeVluY3NuV243aEVJSU01M1RqNlgwVEZ5OWViNzMzbnMxdjNpZlN0WnNza0EwTE5aQUNqcnFBOENBbVI3SGhvRXNPb1ZnQURVelNFQU1PVFd5RXVDcG1uSEU5TitJQ2lKUDh5b3pHM3BkRnB5cWRmZGplcVFDd0lRaThXK1F5QUJBRWFWVTcvYU92VUVBTWhheEFGbjVuc0RvbjYrb3l0OVZudTYvV1VaVzlTbmwzY3ZsL3pUSndhUWsxdmlaYTlZdTM3dGo1WXVYYnErMm4zMG8zMElBQXh1MVVSellqb1R6d3RJdUZJbUkxVGw3eWlsNUJtWDhXUFAvZXBUUW10MDB1OEdRU2pzZ1NyYmI0d0FnSE9maEkyaTYvcE9VTmhQQUNJd3RnY3cwcSs5TEtkZlVkYlBxSXlrclhRVjJpU3BBRlZHM2NIZzJlV001MEdkWGdhZlVHK3BXSWRhMTE1NzdUVnE5T2pSUDVBc1Z3R3hRRElnWEpsTUppOFphbTdWZmg0Q0FPNHNHQUlBN3V3V3R2TFJBbk83dWlKL1d6ZnVjeHJvVENZY0FaQ3BBbHdROSs4VENFQ2dhemIvWDgvM2YzWFNIbFhSdXc1KzRQbkpLcE1GQU15N2U5OUFBT3BtRllvQURuWWNUZEc0eHQ2THdEak9JWXkwWHBCdzB1bXl6czVPWVhzTU94QWdIbzlmWWYyWUJ4VUM4S2FWZ3U1dEg3LytaWGN0Y2NKUW1CY1FCYitQUUdkM3BqcC9KaE5NSkJLZlpzV1NTM21Yc2lmc3NpS0QvNmRwbW1ndkxISFpoZS9OUWdCZ2NCUEg0L0Vkd0ZnWUVFMDVPeG5DSWszVGpxdFdaTTMzdzFNMGdKbmhoSXcvZ3JCMTBHTnY3QUNBYlU5aEJXeTU1WllmSjZKRHdQZ0dnQ2xCQWNrbDl2UjkwdWd3dDg4M2lXdGZ0bXpadVFTNlBMRHpRdmlEWVJqSHVBVXRBcHVuWTZCRUl2RUZWbncvZ0owQ0dyOEhoS09UeWFTTTZXc0pBUUIzNWcwQkFIZDJDMXY1WUlGanV2NCtrbnRXYlVOSzJ4c2FqaGRLRnpOYktXM3N1SC9iVHlQenlqeExsODlmRXZRVEIzVGs0TXZlc0R2ckZpNkNHWXFJajl6dUx6dmZQM2N1cVdxV2FBTUFJSjVzcHhqc0J3S1ljM2RxQW1SSHJJd0pFQUlBZysyVGlYcVBISDBPQ09lVXVIM2JBTVk5V2tTN1pMaTlKTXVhNC9INHI4RTRPaWdSUUlubnk2ak1JZldTZzk3S0FYMHlnVzRJNEVaRFNEenQ2OWF0TzNEcDBxVWJtcHViWjJpa1NXcTNJRzdQVWh0Nk5uejlpU2VlV0ZQTk04blB0aUVBTUxoMUxWRzdGSUF2K3JrUFJYMHZBK0hVSUY3QXZWclRqQmt6UnZUMDlKeE9vS3VDZXE0NTU3NnBBQUJPSUdDTExiYjRIQkVkU2t6SGc4dzBnb0d5TGdEMGloamcrUEhqcjNVWkJrRFc4MWl5c1FRRmh2OGJoR09UeWVTalhwMTluL3VoZUR4K0xoaVhCaFV5Q09BL210SysxcEh1ZU1IbnRjbTcwT2VzMUlhZjkzdXNYUCtFdzVMSjVPOENHOCtIZ1lZOUFIRCtjNjlleGt3ZkVkc29GUHRzL1gyNGdhNzVwR2F4TW9yOGJjZ2VLbkFUUGJ0aUxCb3o5NS9XQUFOT3lmN0FVYUY0VHNyNmcyMEw1YWliKzJlcEFZcHkyeGVjVmF1K3M2L3NmamtLOHlnUXlhM2Fad2o0QkxNOHlFczQvVGttZ09YTVZ3UUNsTWdlVUdpQTl6WEN6SHUrdnZOTDFYN1huQUNBN2RRN21RQlozeitmR3FCUXU2Q1NEQUhVclRTYStlaVJVMElSd0tKTnMraU9SNEJ4N1NBNWI0WHA4YUNtYTJkM2RIUkllanZQdnFiVm5xSEIybHNPaGR4QVMrN25RRXE5cEFGMExqWWVqMytlbUlScHM2M3ZSaUQ4U3lsMTRNU0pFNTlmdm56NUx5eEdpZC9EOW9GeFdySXIrU3UvQjZxbS94QUFHTnA2OFZqOExrQVliWUU1V1BJVCsxaWtMM0pFclZOM0RtMmRiSTE0UEw0ek05OURJTG1SRHJ4c2FnQ0FiV0F6N0VMWHZ3VEdCUUJhQWdJMmMvc3JvcFZFZEdJeW1aU1F2SXFMeWJCUmVDUkExb2k4Si95K3NhL3hwTGJGYmYrcmVNSUJONGhHbzl2cW1pNUNpVUhkL3NzS1V5QWNua3dtLytQM2NrTUF3SjJGaHowQWNONHpyNzRCUWs0cE51ZFVPZXhSL0VaZnJCNHZWYVZPVm1hdDBMdTEvMTVvM3NJZVMvVTMySFo0NFdIMFR5Rm5nYmJXWk9TNnl1bktaSjNQN01qOVBpc1NvTFBYSS9WTDlaUHR4QktsSzdpdWRzUzVPNTEzeDgyN2M5NzVwdWJjaVptenVFUGVMM2JjN3R0Q2VlVXlBWXAyekxsR2ErN09HaGFPMEttTkdIWElQVE1ucjNiM2RjcTNFZ0NBSlFTQXJEU0Fsc204QndHNFcybHE1cU5IaGxrQW5Ic21MelNhcGgxSVROZUM4S2toOWxOQWdQdXRlRFVSemZMaUsxcnRFUnEwZlhOejh5NGFhWktxVW01c2dpb0xJZzJSWXhZdFdyUThxQUdIR2tlb3JHTzNIUHR6d0V5SEdCbXFmcFdmU3l6K2hRWWJDNnpiLysycTdLK2M1bTlvdWphclhzWC83QVdFQU1EUVd4bHZqcDhDZ29TUUJLbkMza09nNzQ2Yk1PNVhMbTlYaDE2WVJ6Vm16Wm8xZXQzYWRhSnBjbktBTjdrRnM5OVVBUURMQ05UYTJ2cEpvODg0RHdSSldSblViYnBjaHJ5dWxKcVZUcWRkaFpkWlorZjNGbmpoMFlrY3NwdlZERDU3MnJScHQvc3RjamZrVEFhcFlGNkVrSDRCQ0JjRzhCdHB6OFFBY1AzS1ZTc3ZDQ0piUWdnQXVEc2h3eDRBT1ArNVY5OWlSc0h0VDJrUVlHaW4zZW5zMjY2c2JkYitzTURBRG1ZNVcxRzFoMkhldUdlZGNOdGZ5YVc5OHdFRXNCMVhlMjNaRyt0eVFBRExjUzhQQkhEUStyTWpaY2V4R1dtK2dnRHJBYjc4M2dOMnZoSWtaUDNxaWcwQW1DRUFqcTZLd3dHeWF4eUlDZUFJRWJENktHQUtXRmtBbEpZSkFZQ2k3WXJINDAzTS9ITUM3Vmptalp1a3kxcWtLZTJTSUNocjFad3VVNEJ1K2ZKandKQmI0ZUNjQ2NKdlI0OGVmZktDQlF2V1ZUTi9yOXNtbWhPaWJQMXJBQk84N3J0ZmY0dzBFejlLSUJFMkd1M3plQ0tpZEx0aEdHZW0wK21xUkVsOW5pZENBR0JvQzhzekNReWhEUHQ5Ym9vbjg1SmlkVmhYVjllcjlReHV4dVB4cndHNEhZeVBEVzFOZjJwczRnQ0FHTlVHQVc0SElSYlU3NHVrV2lXbVdSMWRIVSs0M2RsWUxQWkRBbjB2UU9CQ1hzZWVZL0EzL001ejc5WW1zcDh0elMzVEZOUWRBYklqSkF1SnBNNDlOWlZLM1ZmRjNNdHVHZ0lBWlp1cW9PSkdBUUFBMkxaL1R2aitQbHhKWUtDb1d2a2dRTTQ5elJtMEZreUFiQnk4RXdRd24rR1c5MXg0Z3krZ2hxMUczLzkyWDV6ckxPeGg5MWJJQk1neUI1eXVjYzUwTW9jQ0w5ZkpCTWhOeGZwSDhRMitNK2JkT2UraG1BRFpkZVlaQlZsTmdOeXVXS0JCLzNQaGZBWEtydGtzaEw4eDZNRDdEdGpwUlhkZnBjSldKZ0Nnc21rQWMzSCtkaFVyWE1MSkJ1Z0hBamlQVjFGNFJTRUlRTjFHR0FMZ05MN0VBKzZza1NZTzRXNFZ2c0JJdXJjWFNkSDVEU01iMG0xdGJUMWVuQVd2KzRoR28xdnBwTjhIUXRUcnZnZnBUNzcrUDJscWFqcS8zbTQ3V2x0YlAyS3BRTThNd0I2aXdpODAxU0NZRi85azhMR3BWS285Z0hWVk5VUUlBQXh0dm1nMCtrbGQwK1dXY3ZlaGEzdGF3MkR3ZzVGSTVKejI5dmFxMHR0Nk9xdDhaK0owZnRiSUdKSlNjNjh5QVZ0ZnBoSUNBRm16dGpTM3hCVXBTUmRuaHRjR1VOWVMweW1kWFoyL2RUdVdCYkRKOTJ1ODJ6NWN0Sk4zaGp0MVhiK2d2YjM5dnk3YSs5cWtOZHE2dmFFWndwQ1RkNFhBdEIwWUxObHk5a3VsVXYvd2RZRlc1eUVBNE03S0d3MEFZUHBML1p6NVRRa0V5QitBQXJHN0locC9NUWlRdFp2amh0MFJPbUNDSVpZSnM0Q0JsUDZoQmVhZlM0QUE1cDhkYk9yYy91U2M4NEZZR1E2QnYyd25GaFBBR2w5NnpUWDFCQVJnRVAxeUpCck91LzJBN1QwUjJpb0FBS3cxT1A2ZnVTQ2JWWklYQjh3ekFYSjE3WFVPQ0FKUXQwWTBjMEdvQVdBZWpuZzh2alV4WGNmZ1dTNS84TVRpZjJmd3o0am9McmN4aWU0ZXgwTzNFc3I3dUMzSG5jRGdId1BZZk9nV250Vll5K0R6VTZuVVRaNzE2RkZIRmlQaUJEQ3VEenAyMWFNbEROVE53MExGcmJjeldHcXlJUUF3OUVrd3cxWEdqcjBKak9OcklIQW5ySjFiRzBjMFh0TFcxbFoxaU52UXF5Mi9obFB2K2Y0QUFDQUFTVVJCVkFWb3pnWGhoQnJZcFdDaU5RQUE1RGZySTZUb3F3d2VxMEY3WmVSbUk1K3ZOY3RLMHVicW1uNDdBUGtkRGFKc0FPSFNaREo1dGR2QnBqZE4vMWltSVNNZ2tqQVhnaXdmbWtLMEdxN3A3T3hjRmVUQWc0MGx3SGdtazdtT1FJY0V5SXJJVG9ud2MxM1h2OWZlM3I0MkNIdUVBSUE3S3c5N0FPQUNDUUZBUGdUQURRZ3dtQ1pBOWl3WE9xcERDUVBXamdtUVB3VEZJSUI4a25mMHMvV3lOOURXcmJsRFNUOWJOOStYTFF3NG9JYUFYYlVpRU1DeWJKR3hDblFCY3FDREZ5Q0F6VzNJcnoyL3Jkek5URWZmZThCT2JWN1EvMlVFQVFDSUl3dVpIU0VBeFVLSmc0RUExZ2IxcC93Nzl0aXNFd0lBdGtYTWx4WmQvNUdsakc5bGozRDNZQlFLR3hQUE53emp5blE2TFNoMjFXRWg3bVpTMktxbHVXVWZnNHhmQmkyU0phbm9BQnlmU3FVV2VMRU9yL3V3MHF6SjdjOWtyL3V1VVgraWpIMktZUmkvR1E1NTNFTUFvTHhURW92RlRpRFFUd1lSSlMydkkzZTExakQ0RXFYVUwrc2xwRVJpdDlldlhYOGhnMDh2a2FYRjNTcXJhQlUwQUJDTlJqK3JrMzQ1Q0RNQU5KanNJc0lka2Q3SXJiVVViclMrejVjeFdFUUJnd2d6NjJQd1RhbFU2aXkzMjJjSkdWNEl4a1dXTGQxMjVhYmRNZ0pkdkdMVml0dUNpSGtmYW9MeGVId0NNWjNQNE5OcUFJcXZzMEtPNUYwaGtQZW1FQUFZNmtTVS9ueWpBQURNRUFESCtrbzc5RVczelNYT1phbDJ1VnZhVFJ3RXNOa0E1WUFBQmRSOCs3WS9aei9IamIyNUpZTXAzaGVGQy9SakF0aXEvdGwrc3NDRnc5RXZ5aERRTDBXZzVXUVRNSjhiMXAxd3o4eXZlSFl6WWdNQUVnTGdaRklVQ0J4YVp6WVBzR1RETEFwQ1ZZcldYQ3orQ0ZBM0lXUUE3TFBQUHB1UEhESHlod0JPOURDZnNTTFEwd3JxQnFWVVc0MXovc3BOa1lTVDNBWmduNEJleXB5L0dtOHFWdnQzZFhXOTRlNm54dDlXa2o2c3Q3ZjNSckM1L3h0RGVjVlF4bjdwZFBxZDRiQ1lFQUFvYjVkcXBNYnRuTndxRUs0d0RPUDJkRHJkWGQ2cy9hazFZOGFNTFhwN2U4OEI0enNCczVrR1hGQ1FBTURVcVZQSGpXZ2NJVGZla3NwVm5IKzc5QklvRFExWFpqS1pKYlVDQUdPeDJHa0Vrdm1OOHVjRUZQU2FZZkF2VXFuVUdkV00xZHpjdktkR21xUm0rMncxL2JoczJ3M0NWWVpoL0xxVzd3cG1xSkd1WDJCbHFRa2lUVzJ4dVo3V0kvcCtRWVpFaEFDQXV4TWJPQUFBL0ZOVDJnRWQ2WTVuM00yNHNCVmQ4TnhyYndrQVVFZzJ6MVlhaWcxUWppYUE5RE1RQ09EVUM3QkdMSmhkUFRBQnNuWW95aEJRZk50ZkpoT2dlaERBbkUyaDAyK0RBRVViVnBRaElCL3JYeVVJVUh3dUdGak9TaDErN3dHN3RIdDEreTlqT0FFQWU5WDVFSWorcDhVOUNCQUNBS1lDOExwMUoxczVicjJteFl2eSswcG0vaU0wM0R4NjlPaFhGaXhZSUhIZ2dTRGJjbEp5S1pvVUxnR2h0UWJPdjZ6MjBaNituc09YTEZteXdvc0h0dzk5VUN3V2F5SFFnd0EyODZIL0lMdVVuNXlmSlZQSjd3WjV6cXBaWUFnQWxHZTkxdGJXTVViRytBRUF1ZWtNTENhM2FIWWZnakNQbVM5THBWTHYxdUNNeVhmMWN3U1NXMytoL1k4cHozcisxd29LQURERGxycVhueVJnekFCc0VIa0d2TVBnNnhvYUd1NWR0R2lSUEhjRCs4MFJTMXRaSzY0SlNMVFNFd0JBdmw4cW8zN0I0S1A4UHkwbFIxZ0o0TmVHTW00S21qa29aMnJGaWhXZlo0TXZCZUdBR3R6OGkwSDZCQVJKSnBPWEJubGVRd0RBM1dtdkFRQmdzME1raFhYVmhTNTgvalVyQzRCRlpTL3FzaUJMWGFsYi95cVpBTU1XQkJnc1RXQVJRQ0RPYVY0bElBdXN1R2NDNUVHQXJJQ2gvWml3QWkwY0d4WUFDSkFoWU42R0RkcEo4K2RNK2JEcTAram9RQUFBVFVJQVJBVFFLa014QVlvekJCU2M2QUYxRURadEFNQ01pZDlpM0lGTUxDOHFuL1p5RDR2NnlnRDRHd2dQRXRIOGNlUEd2UmhFV2kwTDNEZ1F3SGZBcHFpaDd1TWFCK3lhUUQvS3FNemw5VUlkTGpWUmlYazBNc2JEQVBhdWhZMDhISE0xQ0Fjbms4bE9EL3YwdGFzUUFDamJ2T0w4Zm8xQW9vNjlaZG10dks4b3Q4eVBLcWdmcjFxMTZ1bWdhTXR5VGg1Ly9QR3ZhTkRPWTNBaUlPZXliT3NGQkFBSW0yc25NT1NtZXZ2QmdDQXpGSTE1SHVsMGMyZG5wd2lyQlFVQ3lEbTlSR2p0QWYzbWVBSUFXT2ZyWUFMOUppRG1RcW16dFk1QW5RWWJWMHljT1BHWklONFRoQUhYMDlNVEk5QzVBS2JXSUFUQ3RzTUhERDRvbFVvOVZmYVh6b09LSVFEZ3pvZzFBQURFNnp0cjFhcFZOM3Z4bTJNQ0FJVlpBUHJmNjIrNlRBQ24yMjR6SXB4cStVNUJQenViUU5hNUw5UUxLUHh2cHlQYlA1dUE0eGNxcHk5Z2U4QVdUZC84ejd6Z1hlNFh6Y3BDVUV6ZGNPb1o1Q2p3ZG5PTFFXRDJtTnZvb2NNQnBMNWl2TUtranJ0MzFxNmVQNnhNQUFDUmhYQnFBRmlyemdzclpxMVFITDZTMVdhd1A4dG5lQ2pJSnBCYi82WUxBTWlQL2VMRmkyZEM0Y1lBVTl5STVkOEQ0ZmVhMHY0WXlVUmUzRE8rNXpLUGxmRXBHbzFPMERUdFN3UTZEakJ2L2Jkdzk0ajNwSldndHJPN3VycmFBbndCZFROeGViRVc2cVBFZ0FaQlczVXp4NkhheUlONEVUUWNPUnpFLyt6RmhBREFVTnVhLzl5a3Z2ZjBQZ0tncWZ4V3Z0UTBuMlVNdmxmWDlkdkhqaDM3TjcrY0ZibWRYTFZxMWFkVlJuMkRtVThCbVZrMGFzV0FHTkNZUVFBQUxTMHRIemNNNDJjRUVtQzNIQnNJRytBTkJ0OFlpVVFlYW05dkZ6MFdYNEVBS3p4QjBzeUtnRndReFJNQVFDWnF6cjFoeEVNZ2ZMVk0rL3Exdm5kQXVFc3BkUTh6LzlXUFVBNHI5RzA3S01oM1NzNVRVRmtiU3RsTXNvM2NIb2xFdmh1VStKODlpUkFBY0hlRWF3QUF5RVE3REdVY2wwNm4zM2MzNjN3cnV2RDVOOTRDMUxaWkI5RCtJQVFCc2o3MlFIWndDUUlNbWlGZzRPd0FoWHRqQ3RkWnYxNDFCUUZXRS9NRlcwWkcvL3BuTXlkN251NHRCd0NVU0FOWUNLQlVDd0pRTjNqVDB3QVFoK09KOUJOZk5EVGpEZ0x0V0lNZmVvTkFxeG44RElNZkk2SS9hNXIyYWw5ZjMrbzFhOWIwUFB2c3M4SVlLT3NsVGRheWFOR2lFVnRzc2NVbzFhTSt6Um8zTVZoRW9mWUVNTFltbFAvQ0ovTnJJT3lYVENiL1Z1MEQyKy8yOFhoOFp6RG1BZGpPNzdGODZuOE5DQmNrazBsSjNWVFcrZkZwSGhWMUd3SUFGWmtMc1Zqc093UVMxbEtrc3BhKzFKWm4xWXNNdm8rWjJ6WnMyUEMzcFV1WGJ2RGcvQW1RS1dLc2tyWjBmeEFPQmJCclBZTnpmZ01BRnFQcmZMQVpBbEpwNklPd0ZEdEF1TjB3akhRNm5mYVV0ZWc4V2ZGNGZDL3JPUnBFdWxNWnVrK1U5RHRUblhLRFhYV0p4K09uZ2lHWmNpcTFjZFZqRjNYUUIrQjFNTzdUV0d2clE5L2I2WFJhbFBGZFA5dmxXZHZSMFRHbXNiRnhCNDAwY2ZybGY3Y0ppS2t4bUgzZUpZMk83dXpzVEh0dHhLSDZDd0dBb1N4VSt2TjRQTDRmR1BjRWZNRzBpc0VYVFpndzRSZlZBczcwL2VmZmVJdkJwZ1pBVUNDQWZXdGJuQjFncUhDQWZvN3dFSHZtK2dsUjFHK3hjRnp1UnQyK29SOGd0VjkvSm9BekhaL2x1RnFUcklnSllCckNJeERBN01zSi9oU2xCYlJza1JNQXRFQVJvV0QyY2U4Wjk4M2F3eGNocE1NZmVINnlnY2hDNVF3QmNHeG9RVGlBdlFiSHZoV0dBMlRGQVFkZ1RXeVNBRUFzRnR1R2lHNEdvNlVPSEdRQmtDUkc4ejhBbmdiaE5WTDBqaUxWclN0OXRkSlZMek92R3RFM290Y1laUkF6YjZtVUV0RW5lVG1ad014YmljT3FRZnVpWkkwQW1TaCtyVjljN05Nb1FvajNaMVRtbTM3Y1lMajcyUnE0bFloQmpoZ3g0c2NFK25ZTlFDRXZsdk9heGJaNHhZdk9ndW9qQkFBcXMzUWlrZmdDSy81RG5XV3RFTWZrWFFJdFZGQWRtcWE5UG03Y3VBOHFmVW1Ucy9EbjVKOG5aQ0tablptNG1jSENZUHJDY05EbThCc0FzRjY0ZnduZ0U1V2RtRnh0QTRUL0V0UDlCaHQzcjE2OStrVXZxTFRPdVpnNkZZWWhncXJmREJDZzJzRGdpMU9wbEdUSXFMcFkyUlh1QXBsMCtIb29vaHYwUGdoZEFOcDBRMzk5eE9ZajNxMGszYU9aTVdQOSttMWdZQ2ZyT3pVTmhJOERxQ3Jqa1dmR0lmeXFzYkh4M0Zxa0dRMEJBSGU3Mk5MYzhsVkZTaTVNZ21TT2lQdnpGZ2pmVGlhVDhuMXdYVXdBQUdCSEZnQm5qdmpLbVFCWlg2elE5UjRzVGVEUUlJRGwzUlU1ZDVXczJBc2dvTDk2dkNVT1dBNElVQW9neUYvZTU1Z1hRNE1BeGFyK1JTQ0FNeU9BblQyZ1pKckFvbjRxQXdHRVR2ZWNwbkRVbmJOMmZyMlNmYWlrcmdrQVVGWURvRUNIb21nemJVZmY3THNvVGFBTkV0amhBTm1FbEE3RG0wMm9HMnJUWWdETWFKb3hxVGZTZXgwSTN3andCYVdTN1plNk5rTmdMZGdVeHBIYkdya05rTU83R1JnUmtFbFRsemhnVWVvdGh3cGE2Unk4cVA4aE1SM2QyZFg1a0JlZEJkQUhOVGMzejlCSSs2MkFLd0dNNStVUTh1WCtxUjdSTHcyYVFsbnRJa0lBb0RJTGluYkoyTEZqSldYcG1ZSG42QzV2cXBJUjUzMEN2YTJnbmlPaTE4bWdmN0RPOG5kaERPU0tidWhhSC9VSllQa0pUZE8yTjdWS0NOdUN6ZlRNd21BYU5zVkhBTUFXUGhUdGh6MDhlTjRyTUQ0QTBLNUJ1Mk45My9wWGx5eFpJZ0owMWJ3dTBveW1HUk43STczZkJ1RzhnRUhvRHhsOFhDcVZtdS9GWVRHZlI0OHRPWlNKYjZ6RDN3RmgxL3lUd2U4UjBSdWs2SFhXK0Y4QVBtQm1BZUhNb3JPK3VkTFV4eXh0bysyczc5Tm5BTWpmR3Iyd2s0ZDl2S3NwN2VDT2RNZXpWWjVCVjFNS0FRQlhaaE1tMmhlSjZmY2dmTXBkRDFXMWtyQ21pNVZTWGVsMGVwbWJjNU1EQUN6L3lack40Q0NBV2JmZ05yYi9NN05hRUtCd1BpWCtxOExIZElYVlMrNUtvQ0NBWThuNXlBd3p1ajBMc2RoL0xHWUNWQWdDRklRNURDeVVaOXVEbWZrdFFEdjd0ek9uTFBSUzliL1k0QklDRUtISXduNXBBSXZPbm4wV0hkRXJoWm9BVm4wQkFiSW1MUVlCcUpzMW1ybmcwQ2xQVi9WVkhFYU5FODJKZzVqNDE4UHQ1WElZbVRnM1ZRWS9vWlE2MUl0NHJhRFdiOFd2UGdBZ0Z0U1lIbzJ6akRRNnBCWVV5bXJuSHdJQWxWc3drVWpzeG9ydkFpQWhUUFZhNUpmSGNQeXZNSjNFZ1hFV0NXTVFzRTFZVFpJelhvUktnOGdkNzduTi9BSUFvdEhvV0YzWEJmQTV5V09xdGx4b0xBZXdtRUFkVEp4c2JHejg5L3IxNjllVnk5aVM3MjQ2blI2dGFkcVhpZWxFRVBZTm1xMGhZb2NHR3pPNnVycis3TldtVHA4K2ZielJaOXpFWUFrOXFWZUFYZlpQdmwveS80dEp4REpuK2Q5Ni8wN0pCY2YxaG1GY1dPNlo4MnFQN1g1Q0FNQ2RSVnRiVzdjMk1zYWpBRDd2cm9lcVdzbDVYd1ZnS1FnTG1mbDVUZFBlWitaU0lka21XMVpHMHcxOXZZcW85em83TzFkYkFFQTJEV0RXUVhMOFg0ZFhWZXhBRHlVTW1PMmxCREJRZklQcmdDMkdaZ01NelN3WXpKemVnUUFPT3JucFlBNnNDWkM5ZGJhRUFmc3hBYkxpZ0hadmVYRzdyT1hFV2JVZDE5eXVsRkw1N3djQ09BQWFtd2xnZHBDM2dGTVlzQUlRNEg4QW4wT2p0cGgzWi9QV3hTOHhWWjNrNHNaT0JrQ3hmWXFXa2oyeHp0di9JaVpBcm41SkVHRFRBd0RpOGZobFlQT0dvdDVRY0UvUFVCMTB0Z0dNS3d3MnJxelZEN3NiRzVncHRwWXZQdzJNbnc0clI0U1JiaHpaZUVBdEtKUnU3T3hzRXdJQWxWdHdyNzMyR2pWcTFLaXpDQ1FwczV4NTRDdnZMR3poaVFYOEFBQWtqV3VFSXQ5VXBLNGkwQ1JQSnRxL0UzazdrRnYwRDRoSm5PaW5tUGgxVGRQK3BXbmFzdDdlM3VYT1ovanMyYk1ibHk5ZlBrNHB0WlhKMmxCb0JrRjBaeVEwb1JhWlpsNWo4S3hVS3ZWWHIreGppUVRIckJqbklDbk9YaTFodVBUemt1aDdKSlBKVjJzMTRSQUFjR2Q1RTVqVWRORnMyTVZkRDU2MUVvYXNNSmpXTTFnQXNZS2lRWXN3Mkg3ZlZ5Q2tKSTJ0Q1FBUVlJVUFPTjEveTRWM1hxMlc0QmhVeWdRbzZid05NeEFnNnpDWEFBR3N4Wm1mV1hiTDNqY1BCQUxZYWZ6eTRLcWR6ejduMVE2Z0wyQTc4d016QVR3SEFaWVQ4L2N4ZXNzNy9YYitaZTBDQUNndElxalc1RHp2b1pCNTBvL3k3M0Q4QlRnUlNOaForcWNKTkh2dVp0cTBHQUN4V093RUFsMGZNRVhSc3lmZE1Pcm9XUkFPVHlhVGJ3NmpPWnRUYlc1dTNsRWpUWlRXUHp0TTVwNGgwRm1kcWM2ZkRaUDVGa3d6QkFEYzdWb2lrZmcwSzViVWxWOTAxMFBZeWtzTCtBRUFKQktKcWF6NDlocm9QVWk0aG1nY2llaFdRZWdHZ1FSdzJoeU1pWmJtVEUzanlBazBmMFB2aHBPV0xGa2lEQlBQaWdsMGRDLy9JY2dNdGFucEdqMWJWSDExMU0zZ2N5ZE1tSEJYcFZvaFhpNGpCQURjV2RNRXlSNWYvSHNBczl6MVVMTldHVEJ1cEl0TkVVQXoxcXdFQjZBWUJMRCt1NFJqWmYrcDVLMy9Sc2dFS0owaHdITGtjK243Q2xsVE5oUEF0S0oxTTUrem16T2tvc0NSdGNDR2dwQUxxOVdBYVFLTGIvcnR6YlU0RnFWWUJDYlE0Tmk5ZkRnQUEvUlBTSjc0RVZ2Y0VvVHpMNnV6QVFBekJNQ2FTdzV5R2VTMjM4a0V5S2NDekIvWS9pQUFOa1VBUU9MZ2ZrMmc1bUYxdzF1elo2V3JnWVhXZCs3NDhlTkZxYlhYVlE4MWJHUysrQzFiZmd1QW8ycDBvMVhSNmlYVzJtQmp2NjZ1cmpjcWFsZ25sVU1Bd1BWR1NHejQwUVM2R2NCbzE3MkVEVDJ4Z05jQVFEd2VGOXJxYjhEbTdmcXdESXZ3eExDRGQ5TEw0RXNtVEpqd0V6K2NTRXNROEZZUTRuVWNDaENBbVQwZlFnUXBiK25wNmJuSWErQ20wcG1HQUVDbEZzdld0MzYzZjh6Z2M5ejFVTHRXQlBvVFhmTENHMjh4Mnd3QWR5QkFhWkcvSXJwK0dTQ0FEVUprYjN5TDJ4ZXJzd3dkWGpDWWFiMElCNmhMRU1BMG9pUE8zY244TnhkZE1RandEakZmbk5IbzRidW03NUlUV1BINzJEb0JnQ3hna3QxL0cxSVpWUHl2Q0NDd3o1VTk1eUlRb0Z0dFlnd0FpOW8zRTR5YkFBZ1lFQmJ2TGZDaTVCVWVEcW4vQmxxNnBSVnhLNER4M3B2SDB4NkY4bmFIb1l6VDArbTByNkZKbnM3YTBWa0lBTGkzYkd0cjYwY013N2dkaks4TkI3REsvVXJydjZYSEFBREY0L0Y5SlFWYzBESDE5Vy9wZ2huK0c0U2prc2xrcHgvenRnUUJaekd4Z0d4dXN5LzRNYlhoM0tlOHpyNnNXQjNXMWRVbDFIOVBYQkszQmdrQkFMZVdnd0RRaHhMb1h0YzkxSzVobXdrQVFFSUFIRTVUZnpXQXJBdFY2T2pYUTRhQTZrQ0FZc2ZRMVQ0NGI4MnREbkszKytVd0FZb3Ava1UzL1lXNkFQblFnb0s1bTVXYzZmdUtRUURIWnhZSWtIV3FTekFGTEJlYm1UTXNhdi9NNTY5Wi9lYmo4K2ZNNlJkWDRzcGVaVFlTQUlEMWJBaEFQOGM5WjJmSFUzT0FEQUJtMVZ6c2YzN3dQQWhBM1JyUnpJYzJJUkZBc1lJVnczZ1VHTmRhU3ZwbDdreFlyUXdMckNIUTJaMnBUbkdlaDIxcGFXbjV1RExVbllDWktyS2V5MzlBT0NHWlRFckl3ckFzSVFCUTNiYkZZckZwQlBxVnBBT3RycWV3ZFRVVzhCSUFzTkxwWFEzR0tkWE1hV052eStCa1EwUERuRVdMRm9tWW9TOWx4b3daSTNwN2U3OE54bFZXMWgxZnh0bUVPdjBQTVozUjJkVXBXUnRxNnZ5THpVTUF3UDNKU3lRU083SGlEZ0FmZGQ5TFRWcm1BUUFadmh3UXdLNlhuVzRJQW1UTlVNb09GWVFEK0FvQ1pQZkp2RHUzNXprMENMQVNqUGxLdzgvdVRPejBzcDlxL3dNZGV4c0FzRU1BN0hxbU9LSUVKVmgvR0VyOEw2ZXBNQ0FJUU4wS201WUdnRzFMRWRFYVBYcjB4V0NjRWVvQmVQWUFsdGlxK3lPTmtUUDhmQ0h6YkxhRGRDVGlXN3F1bjJTQlJQVWMvL21Jb1l4ajArbTB4T3NPeXhJQ0FOVnRtemdvZlQxOTMyU3dBSnFiVjlkYjJOcXRCYndFQUNRYnljakdrYit6Y3JhN25kTEczazVvNUtjYWh2RnJ2NFZtcmV3d0lneDdlQ2dnWE5XeFdpUFBxVEZqeGx5ellNR0NkVlgxNUZIakVBQndiMGo1WGpRMk5zNG5rSVRJREtmU1JwZSs4T1piRERZMUFDeGZOZ2RIRGNRRXNPdFpMZnJCVjBObENDZ25PNEE1eGdEaWdNNi8yM01vdG5xcHNJVEJkcVpxQ0M0SEF1VEZBWE5LK3pZVG9NRFJ6OGIyMDBDZk9UUUNiS2RYNWkvMTg2S0MrUldaOHkvV0JERC9aZ2RUNUQzZ2JGMnpOMnZQYzZ0WHpIaUhnQnY3dE1hN2Z4dmZmbmt0bkgrWmxCTUFLRHh2MXRTZFRJa2hNZ0FNRGdKUXQ0Wk5qd0Znbnh6emxqZWpyZ0Roc1BCSDNaTm45MHVLMWJlOFRNZmt5YXhjZGhLUHgzY0FRMFJ1Y2t3Y2wxMzUxYXlQUUtkbVZPWU92MStBL1ZxQTlCc0NBTlZiVnhTWk5VMjdoVUN6dzFqbDZ1M3BwZ2N2QVFBcjlkL2RZRE90WGxoS1crQXRYZW43dDZmYlh3L0NRSzNSMWlrWkxYTVRnYWFGM3pGWEZoZkE1aDdETU01THA5UC9kdFdERDQxQ0FNQzlVUzBod0NzQWZHZVlDV1ZtQVFBekJNRGh4dmRuQW1ROVJnZGgzSEljYmFNNW9ZTHMzNFlDQVlwN0xOVW1XeWZQajNIcUF0UXJDSkNkY3drUXdGcWdNME9BZlROdjNzL2JtUVZ5UnM2bUNIUmF1Rjg0Z0cwZ3ExTEZJSURaM2h5RG1mbGZUUHd3TXBGYjE2eCs5ZVdnS2YvRlg3L0RGencvbVRPUmhjSUF5Tm1nQ0tVcEVBY3NFd1RvTHd4STNjU2JMZ0FndG8zRllwOGdJa2tOZUdRSUFyai9JUkRGYUdJNk5jT1poNGF6TStxMGdLVUNmU1BJekw5ZGorVU5CdS9yWmZxcldpd3lCQUM4c1hwcnRIVjdRemZ1QU9QTG9XaWNOemF0cEJlUEFZQ1JPdWtYZ1BEOVVOdWg1QzcwZ3ZEanBxYW11WFBuemkxT2VsVEp0bFZTbDFxaUxidXp4amN4ZU05S0dvWjFJV0cwN1hwRVA2bTl2ZjI5ZXJKSENBQlV0eHV4V0d4dkFvbFd5YWVyNnluUTFtMDA5NFczQ2hrQURqZmZtWkt1UHh2QStvdkRZUzN5UnpkeEVDQy9rVGttUUVrUXdBRnc5QU1CQ20rN2k1a0FlVUUveDFqV0dJNy9sLzJ3TkJNZ0ErQS9ZT29FMDUycnhxejU4L3k5OTE0ZjZCRWNZREFCQUpDSkxHUUhBTkJ2VFVYaWdFNzdGS2NJbExhbG1RQWhBQ0MyaVVhalcrbWFmZzJBUThJWVAxZmZnUFVnWEw5dTNib2ZMbDI2dEM2K1E2NVcwYitSQ0hFbHdIaW9Eb1c0RklOdlNhVlNwOVpESEdVMTlnNEJnR3FzVjlDV0VzMkpWa1hxSndTYTRsbXZ3N2NqY1F6ZnRWNU1mVmZSOXhJQUVKT2Jqb25DYjBEWU93UjAraDNDNTBtakl6bzdPMThMOG5qT25qMWJYOW05Y3FvaUpSbzN3aDR1VEhjVjVHU0d6MWdLakNkMTFrOXVUN2UvWEcvVERnR0E2bmJFWWl0ZEM4YXh3K2o3a0FVQStqRUFCZ1FCK25FQXNyNmw4OWE2eUk1RE1RRzhEd2NvaGlINnN4R0cydXFxd3dGeWpyN0RNWGRRN3JPeCtLVUYvWEloQVVXMy8wNGhPeWNUd0NVSUlDOEYvMkJHVW9IbmoyalVudjdGMUoxVzFvcnVYMm8vYkFBQWxFMEQ2Q3o1RUlic1g0dlRCRHJyRjdkMWdscFprQ0FFQUd6YldpOWJFZzV3WU1nRUdPb3BVZkI1SDRBSERXV2NtMDZuMzYrbzVUQ29MQ3JybVV6bUlRTHRVMmZUbFZqS1ExS3BWSHVkemF2aTZZUUFRTVVtRzdDQkpWaDJJRFBmU0tCSjN2VTgvSHBpOE9zYXRBY1ovRDBBa3J2ZTErSTFBQ0F2MDdGWXJKbEFOd0xZWVJpOVhQdHFad0FmZ3ZIOWxhdFgvdUxaWjUrVjM1OUFpK2pEUkNoeUVCTUw5WG1iUUFjZm5vTTlwYkgydmJFVHh5N3hJMVZqdFNZSkFZQnFMUWdCbnZkbjR0OE1JMUh0UEFCZ09sSUZKUCs4MXpVNEU4QnFXVmRNZ095Y25DVndUUURMTXkwR0U1d1pBdHlDQUFWT3I1MEJvR2pKem5BQU04Q0FlYlZRbEtIb0pXajhlNlZwVDJsamV0NysxUjU3QlA3alVjNVh6UWtBMlBVTEhQdmk5VHJTQkJZd0FVcUdvemhBSWFadWJPSWhBTTc5c0pUZjVXWHhSQUNqeXRtclRieE9Id2ozTWZNbHFWVHFIeHVwTFNqZUhEOGZoSXZyNlV5SSt2V0l2aEdIdFMxdSs5OXd0M3NJQUhpN2c1YUE1ZkZnL0hnWXZaQjVhd1RHZTB4OE5oRnBZUHcyQ0ZEWEJ3REExTWQ0L1BISHB4SklHR3BmQ2tFQXlBWE92WkdHeUptMUZKcTFRSURwVEh5MUJjNTRlMzQzanQ0TUFqMmpvRTZaTm0zYUN3R0dhbFJrdlJBQXFNaGNKU3RMMXBKTUp2TXJBb2xJNW5Bb2JmU0RGOTUrQzhSbUdzQnFRUURiTWJXZGI2ZE9HNEQxek9hRHE5ODQ5dCtFSTlPdmxMajl0ZjlVckFsUTVCUFdCd2dnSk5XaVJXVTFBdXpzQWU2WUFMYXRiZjBBQnhOQTRveUUydC9Ed0wraCtDMFF2UXFsWHRaQXI2eW5MZjd4MmNjKzJ6dDNMZ1VWTSticWl5QUFBQ2x0SVRNVmlJOTVEd0tRZ0NLYlhCckF3VFpGNkV3UkxYSWFnMDhISURkb0ljV3Z0TUY2Q1BTUTNxZWZ2V2p4b24rNU91akRwSkdrdWxGS3pTUFE5blV5NVhVTXZqU1ZTb25xdXlla3JWcXVLd1FBdkxlK3ZKQ3BqRHBkUVoyMXFURUJDTFNDaVM5ZXQyN2Q3V05Ham9reHNZVHdOSHB2NWNJZS9RQUFaQVNoblhkM2QrK2hrZllMQUx0c3d1RUE4dnI0RnlJNnZMT3pVNFQvYXZyc0V4QkEwelJKd2ZtVFRYeGZTbjIxZWduVXFhQXVUcVZTejlkNnJ3Yjc3b2NBZ0RkUHhuZzgzZ1RnZmpBKzVrMlB2dlppQXdEWXRpQW52TWRNQUFaV0VsZ2UzQktMbGl1bFBkRCtmelZLVkxUL1ZCelU1clZYSzk1MDFjV1FYblRBMUFDQmhZTGsvOXY4TERmeHdycm1aN2xKR0RETWZ2cmJVRk5HdGd1aVZUQzA3a2pFK0djZlI5WVlPbjI0ZWd2K2NQNlVLYjFWcnlQQURySUFnSWdBcXNsT01VU1pRakVJVUNvdG9DM0RXTUQ4Y0FvRjJnS1R3Z0FJQVlCK083dlBQdnRzUHJKeDVHRkVkSzR6UzBpQVI2RGVoeExtaktTZisxNDZuWDY3M2lkYjdmek04ekJ5NUZWZ25Gd25nTkJibXRMbWRLUTdYcWgyYmZYUVBnUUEvTmtGSzBYVDhScTBDeGs4enA5UjZxNVh5WXh4YzhPSWhrdmIydHBXeDJLeEx4UG84U0FVcXYwQ0FNVENwdHIyNHNWeEt5M3BqcHNvQ1BBK01aMDk5YXRUSDZpWDIyUUJaMWFzV05Ha2xMcWNRRjhKQlJ2TjUwR0d3UTlGVk9TSDdlbjJWK3JaK1pmSmhnQ0FOOC93YURRNlV0ZDFFZFNXeTdPUjN2VHFXeTl0ZE5rTGI3L0ZaQXA1bUtVVUVEQjRoZ0NuUEtEWmc5V1A0OStnOXpYRkIxeXh4dzdQK2JhVXNPT055Z0o1QUVDeUFCUm1SQ2dYQk1pZmFZZHBpa0FBQmVxR0VUSUFTaDBlaytLSHlCNnM4V1VBSk8xUFBlZUNEL0w4ZndqZ1prTVpOMjJNTWY4REdGSmljYjlHSUtFU1R3elMyQ1hHWWdMZG9FVzBpOXJiMjlmV2VDNmVEQjhDQUo2WXNXUW5vZ25RMDlOekdJRXVCL0R4T2dHdy9Gcndod3krcTZHaDRTS2JIdDdjM0x5N1J0cVNJRjVJL1FRQWJCRGc4Y2NmMzlYS1d0TWFoSzZCWHh0VmNiK005NkRoNHZIang5ODNmLzc4ZXJ2UW9aYVdsbTJWVXVlRHpaVENtM0w0NEhJQzNjN0VWeVdUeVdVVjczTU5Hb1FBZ0hkR043TnFNVjBMTWdXMUMyOXN2UnZHaTU2eUFBQkkwZ0RteTFCc0FHZU1kZi9zQU1VZ2dObnYreFFDQUY1czJDYlRod0FBR2tjV010dHBBQVVFa09VN1VpTVd4Wmc0eVhET1ZKYW0wUVpNRTBqZFNxT1pEeDA4NWVsTnhyaVZMWlFTaWNTbjJPQ1RvT0ZZTUxiYXlGK2dCN09Pa0d6ZVkvRDFTcW5iMHVtMEFBR2JUREdWYmpYOVFja2NXY3RGVy9UbWJ5U1R5YzU2djFrcDEwNGhBRkN1cGR6Vk05TlpMbDgrRTR3TEFYeXh6bC9NM0MwU1dFT2dXeHI2R3E1MjZtSnNUQUNBWlJocWJXMzlwTkZuZkI5a09wdGJ1RFhZTUdrbmJ6ci9BdUc4OGVQSHo2dEQ1ejluUm90eGN3b3huUVRDSnpZeGxvWndkZDhRNTA5cjBPNGZUdUIwQ0FCNCtpU2c1dWJtejJ1a1NaWU1FVTcyUGZ1S3k5bTMwZVV2dlAyV3NoZ0FUbzMvb1RRQm5BN1dRQ0NBZzM0ZEFnQXVkMmhUYldZREFFQmhGb0FzT0ZVYUJERDlmQ2NvNEhENnpaQ0FraUJBQ0FDVWM4WXNDdmhNQU9lQXNkdEcrZ0k5bUNra2Q4ZVRHbXZYWkRpektKMU9ieWpIYmh0VEhhRjZMbHUyN0x1V3B4bXAvQUFBSUFCSlJFRlVHRmZObHNiZ0ozcDdlMmN0V2JKa1JjMG00ZkhBSVFEZ3NVRkxkR2ZGSzMrUm1INEVRdk5HOWd4YkM4TFBHM3NicnlrV3hXeUp0dXlxTlBWWUVJNnkzd3dBNTdiT2FKb3hxYmV4VjBCcFNRTTZuUEp2VjNiWUdYOG5vbXNhUmpUYzN0YlcxbE5aNCtCcm05b2JmVXJFQWM4R0lDRUI5ZW9BZVdrY0NRbE1nL0REeHNiR3A0YkRQamtYSHdJQVhoNEZzeTlKbi93Vk1INEpRTkxSMXVOM0lBc0FTQWhBQVFQQXNrVWxUQURUK1NyUURzait4WExLUWdEQTgvTzFjWGZvQkFENk8vYUZJRUFweDkrMmpwT3RVaG9FQ0FHQUNrNlNQTlMySnFadkFqaUN3WityMHdkYkJVc2FzcW9jb2Y4eWVKNm1hVC9wN094OGIyTzVkUjV5NVNVcXRFWmJweGlhOFFpQXo3aHA3MEdiREFqbkpKUEpHenpvcTI2NkNBR0E0TFlpR28xK1VpZjlkQkJFclZsdUtZZXp5S2s4bi80QnhuV2pOeHQ5MjRJRkM5WVZXN0s1dVhrN2piUkZRWHhuZ3dRQVpKMjc3NzU3dzlpeFk3OUNUQmN4V0FTNE5pYnF1UUhHVW1pNHhEQ014ZWwwV3NTZGgwdVJrTEZQRTlHcFlQTjd0ckdHM2dncjhHMHc3alRZdUNPZFR2OTd1R3hRQ0FENHZsT1VpQ2IyWk0xTWxTa2h0UFVXRHRCR2w3LzQxN2NZMkRhYm16NWY3SDk3QkFLOEQ0MFB1R0tYVUFQQTl5TzNrUXhRREFENEJnSVFkV3VnbWZlSElRQmxueHg1NlJvM2J0d1VaajROd0F3d1BsS0hEN2V5MXpOSVJVbWRtU0ttWDY3ZHNQYnhwVXVYcnZlaTArSGNoeWx5US9wdElCeGFrejFuL0YxQnplcnE2aEpocFkybWhBQkFzRnRwaVRVMU1mTjUvOS9ldVFmSlZkVjUvUGM3M1RPRENSUElCS0w0UUxJUVJRUlpGblhYdkpoa09zRVpBNnhRMFYzRnhYM0FXdXhhcGJ2dW8vYWZEYnFJYUxGYXUxVzZLNVpHVndRYzBSSU5rY2wwR0NUQkIwYUVqUUtCUlNJalF0SWhDUUhtMWZmOHRuNzNlZTd0MnozOXVuZjY4ZXRTTWpOOTd6bjNmTTdwMi9mM1BiOEhBcktiWnFzbmJJb0RORXRBUDBMRTZ3WUdCdmFVY3cyM0JRQlFPd0JoUmRLVTB4WUEzUEZ3L1BscFd1c3JnZUFxQUhnREFHU1RIbXVDN1hPT2s2T0U5QjNMc200WUhCeDhzbFVTL3RVNlp2NmNLYVZXSWVLMVFMQVJBUHJiWEhEekVIQjlyOE5JZUpjaTlibm5qei8veTcxNzk3WmtTZTFxNWt3OEFLcWhWUHN4L0wyK1o4K2VNeTNMMm9xQWw3Zlk5NHdoQUxnV1ZpVVJJTHpEYndRTUdLN1ZvVEFDbnhlSkFGRDcydW5xTTFnQXlFSjJ1L1p6QURnNDdQWGxMckpvT0VDcFNCQkc2SVVBaER3QlJBQ29lNTF4dk44SlBTZXNJcUFQQU1MRkFIQnkzWTIxMW9uOFJmNExJUGc2S0xoOTdkcTFoOXIxQVN3SnJFTkRRKzhGZ3Y5ZWdQcnFYQ24yZnhhZHVPamF1SjNPSk1hYVZwc2lBS1JGT3VqSHJTKy9BaEgvR2dpdUFBRDJhR3FYMS9NQThPMk16dHkwYW5EVi9rcjNweTRRQU93NWU4YzczdkdLeFgyTHp3Y0Yxd0xBNWphdCtxQUI0V0hROElYZVl1OTNvdUVjN2JJNEk5ZkpPUnRPdFN4ckN4QzhueDAzMGloSm1TQ3JLU0M0RnhSOE5adk5qbm5KTmhQc0wvR21SUUJJRnJHZEdORHhodUgxM3hyaFNnUzM0TDg5L09UandCNEFuZ04vMHp3QkFrdU5BQ1pCYWZFQVNIYU5kVlRybmdCQWtSd0FVUkZnM2dvQmtTcTVKU0tBQ0FBTnJ4dU8rYk1zYXhVQS9Ba1FETG8zdUhiYmdlR1ZjaHdBOWhIUXpWcnI4Y0hCd1dmRThDOWRIaHMzYm55MVpWbGZROENoaGhkUGJRMDhwMGxmYzg4OTk5eFoyMm10ZjdSZDR1eUg5MDBBQUxzeHAvRmlRK09xZkQ3LzlUUTZhK1UrWEkrbXM3WFdWeVBoSHdQYTdzcXQ1cTdwSVh3WkVPNURqZitwZXRSRU5ZbkczSWY3N3dIQU9RblB3d3VvOGVMeGlmRWZKOXhQeGVZSEJ3ZFBWRXE5WFlHNmtvQTRidzE3cUxWNm1FY1JBWjhpb0R2NCsyZmR1blcvN3NEdkhyeDQ3Y1d2bXV1Wnl5SGhOWUJ3bnB1WG90WG54bnZzNU96K1B3R0NMMC9QVGUvYXZYdjMwVTRKQjl5d1lRT0g5UDBBQWM5TzZiUEwzeitjeVBkYktmVzM0TjF3TlpycDZlbHpGYWdQRTlJSUFpNWJxQkJhQkh5Q2tLN0I2MTBCd0V2azUreXd4b2NET01hV3c3RjZid0Q3U0JFQUZuejV0ZGNGMkFJQXF1MUV1Tkpka3FFQm1KNEE4NG9BZ1JibHJGM1hZOFgyQkFBc29JUUFOR054NEpZdFczcU9IanA2RGlsNnB3YTlHUUhmNU80U3QrckROQzhqTHFmMG5PdnEvMzNWbys1YnRXcFZvUU1mdnBveHgzWWJiaksxdjBYQUcxUGR5U0g0QVNqNFlENmY1L25xdEJjT2JSaTZBUUQrSWFXSGdrbEF1RHlmejB2MUUzY2xjYVdBUXFGd2dRSjFPU0M4R3dCZTF5SXVtNDQ0U2ZCVFFycTliNjd2dXp2dTIxR28xdmdZSGg1ZU1qc3p5eDQ3NzBsd2JmRTFQbUJwNjRvV0tZMktnNE9EZmE3NytSVkl1SW1BWHRzaTgrbmR1NWdaaDVYOWxvQnVSOFRSbzBlUFB0TE9ydVRWM0pSWjdMei8vdnRQS1JhTEZ5SGlaaUJnSWZuVVZMOUxxcmxRNXhpZW40T0FrTmRhMzBGRTkwOU1UQnlyOXJOWGZUY0xleVNMWmhtVnVSVUEzcFdTV0hZQUZiNTdmSHo4d1lVZGVmcTlYM0xKSll1bVhweGFxMUZmeHJZSEFMelNMYkdkaGhER1paTi9oWVRYcmJsb3pRNjgvdUduSGdmUVp3VTJrbXZhTjFFRUlPQVFBUEVBU0grcHRXK1BIL3plZ3lzMUN3QUFLNEdjejBWSkJZQ1FZVjlmbVVBRUxJQUlBRTFkS1B3Z2ZlellzVmZxT2YwMlVuUVpFZjBCQXA3WlFnbWErTUdMdjhSL2pvQS9JcVR0bG1VOTBvbGY3RTJkV0tPeFhDNTNIbW5pbmZnemt1b2owaTRuLy92STBhTkh2OWlwRDhqcjE2OS9zMEwxQlFCNFc0S0dpaGRmL0Y4REF3TmJXN21rV0Vyckt0b051eXN2MGxxL1FXdDlPUUp5OGlaMldWNjhRTmZ6UEFFOXlNWmhKcE81YTNaMjluZDFKSVBqNUswNUlMZ09BTjZlZ0hjREowSjdsSUErczI3ZHVxKzFtSGlLcTFldlBuRlJ6Nkl6ZFVaZjducW84Yzd6UW9lckhTZWdueVBoM1JyMFhkUFQwL3U3TGNjTUN3RVRFeE5MbEZKdllVT0lnTllnNEZ2Y1BBRUw5SEh6dStYOFB3OGg0QmhvR0M5QzhkRk9majdndWJqMzNudmZpWWczSWRpYmJrbHQydkN6MXlIT2pqOXd5c0QxWGZ6OWc4UER3LzF6VTNQblVJWkdrUEFQQ1lqTDA1NlMwTUpuejdHSEFlQTdHU3R6NXl6TVBzSGZJL2pKLzMzcWNTS3lRd0NTRWdHMDdRRmdTUWhBUWpQYmljM2FBb0RLYmdmU0s1M2QvcVJFQVBFQVNITDlzQmh3K1BEaDB6S1VPY3RDSzRlQS9BREs3bWFzK0tlVkVJaXpKN1BCejByK3IwRERENUh3cDlQRjZjYzZ5WTB2eVhtTXRtMkhmY3haM3dlMFF6N1NlTzFYR2JWNTU4NmRITExXcVMvYlJiYllXM3d6RWIxV2tXcDY2U0NObW5lMC9tL3g0c1g3T2kyUFFnS0xnbmVSbDJVeW1mT0E3QnduSE9iRWVRS1MzSzJjQTRRQ0V2NkdYWEkxNkRGRWZDeWZ6eDl1Wkh6dXJ1dHJpc1VpbDZSNmxTTFZ6TjJtNTRwVWZBd0FucXBEbkdoa1dMV2U2ODNuU3REMmZXc0RvRDJmSENKd1lxMk4xWGo4TkJBYzRzOGVJVTBnNGk1WGRPWjVqUVFxMXRoeVp4enU1UWw0SXhHdFE4UzFRQnlhbk1wemd1MWhnNEFIQVdBL0VJeVRvaC8zenZZKzBTRTVHS3BhSVZ6bTk5Q2hReXN5bWN6WnFKRS9FMDEva2FLWGlXai8xTlRVSTkwbWVGV0FpYmxjYm9sbFdXY2hJb3RoNXhQUVd3RmdHUUl1Y2NYblJRRFFNOCtFY0lsUTltamxYWDRPWjMwQkFmY1QwaDVFZktoWUxMTFJ6OTZUL3YzR0ZnQUFXQUR3ZGxnREtjQUxCd2lFQWZOT1ZWTTR3S1JXNnJKUG5yL3k1MDFmVWRKZ1J4THdCUUNnbFg1SWlpc0NPR3MxR0hZNEhDREdVeUFtRDRCM05vY0FBRWtWZ0RRV0VYL0JURTlQOTgwY256bmR5bGhuZzRZM2dZS3ppZWhNQkdUM1RONWw2M1Z2ZEt4QTh3MnZtZ2RWM29GaUk1K1Q5ODBSMEJ3Q2NyemVBVUo2Z2wyZWlPanhiRGI3Q08rZ0RRNE82aGJicFVvRGYxUDdXTDkrL1lVSzFSMXBsQllEQUo3Zkx3OHNHL2pRNk9pbzFkU0J0RzVqMWF6N2VxOWVESTRheWJrUHg2OVFTcDJEaUN3SThDNHk3MVp5Wm4wV01yMzdGdCt6NXRzOVkvNzJ2UW9CT1pNL1A3QTlEUWlQSU9IUE5PaUhlbnA2SGwyeVpNbXhoTlo3RW11cnJkWVVDeUo3OSs0OVlXcHE2dlZnd1htQWRuNkVjd2lJWTZDWEkyQXZBWGx6eXZsc3FoSGplRTc1ZTRnZnd2bGgvQWdnMk44L3FIR2ZCZFl2ZVY1UE91bWs2WVRtdGNaVjNacUg4OXpjZmZmZGZmMTkvYTh2cXVLYkZLZzN1M1BEMVIxZTVYb1Ntbk16MytlTkI4cmZHOTdjOER4TkE4QWtBajVHU0kraXhsOWFZRDFLUkFjR0J3ZG51L3o1SUluN2c3blkydXBla2ZLbmhFTnAxYUZEaDNxeTJleHlLTUtyTGJTV1p5QnpDaW5pRXFmOGpPeDdDUkNSaFlnc0xNNmdSamI2WHlKRkI1VlN6eExSd1dLeCtGS2w1MTI4Z1QwQVhBR2dyQWpnV2x4K2FVQ2ZTTlVpZ0FnQUthK2lkdS9PRVFEVWRuRGNrWUs4RkpWRUFGK3BtajhjZ0FVRTV5NkhCUklCWUVHV0N5ZmY2dS92WDZ5VVdwelYyWDVDZW8yRjF1dVE4RFJFSE9EWUtBTGlCMnJlbldFRk5IVG5RVUIyMCtNSHJSY0I0REFCUGF0SUhkU29KN1BaN05PV1piMDhQVDM5OHNhTkcxL3E4aS8wcHM0dmUzVWNPWHprN3dqbzQxV28wczNvK3lVdU81alA1Ny9mak1ha0RTSFFJQUU3VEFDbmNFbXh0OWhQUkdjb1VPelY5Qm9ObW8zSHBYWk1KMEUvb0dFNElzd0IyVWJoTEdoNEZoUThneHFmVnFUMkYxWHhpRkxxeFRWcjFoeVhlMVdEczFQSDZaeWdhM1oyOWtRaTR1K2FWeUxpNmV5RjQvNjhITWorL3VHSDcxQW9DQUlXaWVnSUc1ZUVkQkFKRHhIU1pJWXlUMnFsZjVmSlpGNDhmdno0Y2RudHJHTlMzRlA0KythRkYxN2d1Vm1zdFQ0WkxQZzlUdFJKU0tmWjgwUFlyMEgzSVdBb3JJT2ZBdjFuQklKam9PQWdFVDNEL3dlQUEwUjBtQTJrcWFtcEZ6czFyS3grNm5KbUt4SmdJWHB5Y3BMRkwvdlYxOWRIalFoV3RnREFIZ0NoOG4vdTltbzRLQ0NjSEREdWVNZitLaTBFU0FTVGxuZ0F0T0o2YXRscllnR0FNdG50UkhxbHZ3bnM1YVdvVWdSd2RJTkF6SXg2RFRnaWdBZ0FMYnNJM0F2ajhrNTlmWDE5NW5WbXMxazZjdVRJeS9MRm5mN3NiZHEwYVlWVnRHNXo0NG5UdUlEN0xHMjlaMkppNHRrME9wTStoRUNqQk56S0FvdUt4YUs1bTFhY21KaGdzVkplYlVpQWE5cEhjM1BNemMxWmUvYnM0VG1WWGMwRm5GTk9UQnNONDVCbmhBV2NFT202TFFqZ3Ayd0JBTTd5REhkL2w3KzVJc0NrUW5YWlZna0JhSXRGMFFvWDZRa0FZSmNCOUZZbGx2RUU0UGNOUTk5Um90eVhvd1A3djVXRUE0Z0EwQXJ6TGRmUVBnUnlHM0pYRTlCTktTVnI0cHJMbjFoNzBkb2JaV2UwZmRhSVhLa1FFQUpDUUFnSUFTSFF1Z1R3eG4yY0JEQVFBRXpieVRPOG11QUpJQUpBNjY2Qmxyd3lSd0F3UWdBaVZRRHN0Umt5N09zVkFiQ2d0ZVFBYU1sRklCZlZjZ1RjY2tIZkFJRE5WZVpuYUhRTVR5cXQzcnR6WXVmUEdtMUl6aGNDUWtBSUNBRWhJQVNFZ0JBQXdCdjNIWEJDQU55ZDBYS2VBSTR3WUVnQlpjb0VCcnUxb1hDQVNVUVVEd0JaY1ZVVCtPRFlneXVweUFJQUJDRUFUUlFCN1BWc0wyY1JBS3FlRkRtdzZ3a01EUTJ0UmNMdkVoREhPU2YvUXZpOFpWbi9KSzdUeWFPV0hvU0FFQkFDUWtBSUNJSHVJT0FLQUZ4dW96U2hYelFjb0FFUlFBU0E3bGhQVFJzbEN3QlF6RzRIMUN0ZFE5MXYyeEdaakxLQWhpZEFZTmc3aDRjckJJVERBWnhqUlFCbzJxUkpReDFOd0k1clBtbnBwd25vSXlrTjlDZ0J2WGZYcmwwN0pjWTJKZUxTalJBUUFrSkFDQWdCSWREeEJQQXorMzVqVndIdzl2YnI4UVR3RFMzaktTM2lDU0FDUU1jdnBlWU8wQkVBMUhaQXJnSVFpRk1odzk4VUFleEY2SWtDNFd1cExBSmd3YktLSTdkZmNjRUR6UjJCdENZRU9vdkE0T0RnR1JtVnVSUEFMb0dXK0FzQmYwSkk3MnEwQm5yaUZ5b2RDQUVoSUFTRWdCQVFBa0tnalFpNEFvRHJBZUJlZUJEN2IwYi9leTdUNFl3QWpuRVZPUzdTRHRmYkJBUUpBV2lqaGJIUWwyb0xBRnB0Qi9KQ0FDcUxBTHdHbmJWWXF3aUFCVlE0Y3N1bDU0b0FzTkNUTHYyM0xBRXVQM1A0OE9HckVmQ3owVXpZQ1YyMEJRai9rcy9uUDUxUSs5S3NFQkFDUWtBSUNBRWhJQVM2a29BdEFEaFZBR3pyeVUrZTNpd1J3TjI5RlFHZ0s1ZFgvWU5tQVFDMTJrNmNBOENKMVhmV3A1L0Yzd2dCOENvQXhKWUpOTUlGbkNYdXY1dzFya1FBcUgrYTVNd3VJWER4Mm90UHMzcXNiUVMwS2FVaFA1WFJtVXZHSnNiMnBkU2ZkQ01FaElBUUVBSkNRQWdJZ2E0ZzRBc0FnVzFVWGdUd2puR01zT285QVFCb2trQThBTHBpUlRWcGtMWUFRSTRIUUxEY1RLUGZFd1hZQWNXb0FGRGlDV0NVRUhTdkxSQVI3SE1McURMaUFkQ2tlWk5tT3BQQSt2WHJSeFNxcndEQThoUkdxQW5vdG13MmU4M1kyTmhMS2ZRblhRZ0JJU0FFaElBUUVBSkNvR3NJaEFTQUpFUUF0ODFKQXBJUWdLNVpWbzBQMUJjQVhBOEFmK1BlZC9FUEcvYVZSQUI3RFJvNy8rSGZzUUJZSExubFVza0IwUGlzU1F1ZFNHQjRlTGh2ZG1iMlN3RHdwd0NRU1dHTUJTVDgwUGc5NDNlazBKZDBJUVNFZ0JBUUFrSkFDQWlCcmlKUUlnQlVFZ0djOTZKNUFlYjNCT0FjQUZvRWdLNWFXSTBPbGdVQUJkbnRRTnJ3QVBDeStqdWVBRUZJUUxYaEFPR3I4c29BQWtvT2dFYm5TODd2WEFKRFEwTnZBWUx2QWNEcGFZd1NBY2NJNmMveStmeHphZlFuZlFnQklTQUVoSUFRRUFKQ29Kc0l4QW9BcGdqZy9Seko2dSthWDY0WkZrb0NHSVFRK0luWkVINUhxSzdLQWp3Y2hWdTlmMmYxUi9wOXBITktSNjhYUnJqWUhXRUk1NHNKRDV2MENrMzREUUJZNGE4OU1rTDQvZEovWGw2QUNpS0F2WWpMSlFmRUFvQUlBQW5QcGpUZnBnVGM1SDhmUnNDYk9HRkdDc093Q09oank1WXQrL3pvNk9oc0N2MUpGMEpBQ0FnQklTQUVoSUFRNkNvQ1pRV0Eya1VBNTR6QTA5ckx5bTcvT3djRUJ3Qmh5bnZmRkJSTTRocTAveXZwd09Eei9BeU1keU1URmZaTXNLOG02dlp0dE8yZEhEbkVWVFRDVFhPZmdjTjUrSXpnZXVKYmpGN0RmS3VydEwzNXpvaDUzNCtKTjVtNHUrWWNYY3RKODl4aG9EMW4vRjhBdE9QbmcvZWNnOURuR0xvMmJiamdtNG4xZkF4bXdqNEEwSzRCSGxvaDdzR2VNVy9BSW9CZUlqZ0RBUHVjdVF4M1ltYjhyOG9Ub0t3SWdBVVNBYUNPUlNhbmRBT0I0YlhEcDg3Mnp0NEpCSCtVMG5pZlJJV2J4OGZISDBtcFArbEdDQWdCSVNBRWhJQVFFQUpkUmFDaUFCQ0lBS1p4SHhoMnBlRUFGVVdBd0xEMzdMNlF3VmNpSGRoSCtYWm1TZHJCNE9xQ1pxb1JBVXBOZmxPMmNJek4walhBZjRvVEFjeS9CMmVGRzZoVkJJZ1ZKV3BkbGw0eVBKODEvK0NLQUNXR3ZqRTJ6NXZEMzJIMzNPNmRodXp4ZXVLQkt6UTR4bmhrOU80ZlEyUDNkdUZORWNCWGhKenJpd3BEb2F6LzVwZzhid0Q3L0hrcUJKZ2VLcUVjQW55ZUNBQzFMaTA1dm1zSTRORFEwSHVBNElzQXNDU0ZVUk1DYmx1NmJPblZvNk9qVmdyOVNSZENRQWdJQVNFZ0JJU0FFT2c2QXZNS0FCNFJ6N1QyLzNVTnQwWkZBTE8wVzR6L1FCVWlnR045aWdnUXMzWVhYQVF3SkJOdmdzanhOZ2pKS2NaNzlqc1J4Y1FVQWVJOUFRSnhJNVFNMEc4clVqMGdKQUlvOFFEb3V0dWVETGdhQXJsYzdpUWkrbmNnK1BOQVBhem16THFQbVFJRWp2My9WdDB0eUlsQ1FBZ0lBU0VnQklTQUVCQUNGUWxVTFFBRUpsdGc4dnQyVzBsaVFQTm8xMEIzTER0em96Z2NMaEFSRkl5enFoWUIzQzRpdmdMQitNTmU1TjNwQ2VBd2F0d1R3R1B0aFE3WXUvZW1YZS9OZ2cvZDJOMXZJUkdBUFFBMFNSVUF1VThLZ1NpQlhDNjNoaXo2QmlDOExnMDZDUGdURGZxS1hidDIvVGFOL3FRUElTQUVoSUFRRUFKQ1FBaDBJNEdhQklCYVJBREhRRFQzZW9PY0FLYWRHSEw4YjBFUklCQVZEQ0doUWs2QTBwQ0ExZ3NIaUJVQllveDN6Z2tRT3RiTjhzQUNRcENIM3drSjhJOE41UkF3ay9aNWJia2MvWEFBbytPSVc3OGpLQmdyeFA4eHVxTnZoaWxFM25PdnRIeVpRQllBSkFsZ045NzhaTXpsQ2JqSi96NkxnQjhDZ0o0VVdFMER3ZzBEQXdQWGkvdC9DclNsQ3lFZ0JJU0FFQkFDUXFCckNkUXNBRFJGQkhBTnUxRDR0Mk5xK3ZaZUkrRUFnZDBZZGpiM1pybFdUNERPRVFHY1dQbUFROFFUd0oxY0p6RWdING1CWVIvS0NjRHpaSWdBUm5aK0ZnSzBmVjVZTUhHVkJQTWZPek8vS1FDNVM4RDFKUENTQmxZUUFTcm1CREJEQ1VvckJBU1ZCWlFJQUYxNys1T0JseU9ReStWT0owMTNBc0Q1cVZBaStEVVN2bTk4WXZ6SHFmUW5uUWdCSVNBRWhJQVFFQUpDb0VzSjFDVUFsSW9BNW01L3FkRWQ2d2xRVmdRSXg0REhDUUcyY2VwN0M1aFg0NXUyWVVNelZKM0FPVVpFQUk5RHZBamdWd0J3cXdNNHpMeDlmNGU1K1R2ejlDUCtLeVFaOU1ENy9DdDZBdFF1QWdSelc3VW5RRUZyUFhMTHBSYzgwS1gzQUJtMkVBZ1IyTHAxcTlwOTcrNHJDZWxMS2UzKzg5M2s1cG1abWIvZnMyZlBjWmtPSVNBRWhJQVFFQUpDUUFnSWdlUUkxQzBBQkdaM1VQd3ZNUFJMOW5Yand3R2FKQUs0NXFoajJQdXNJaTduODRnQVpodUJqQkNUSjZEMFQrNXV1UjhGSDdxQ3VFd0Q1blRXVWlFZ3B1dTZWa1pwa3IxQUJIQTRtS1VBSTRaOVNBU29YQ0dnWERzbElvRGRhU1E1b0NFbytPL0ZKZ2VNVmdCd0ZrRjg0c0FZVVlDb29MUWUyU1lDUUYxclNVN3FQQUxEdzhOTFptZG1id09BNFpSR2R3d0ozejkrei9oZDRYb2lLZlV1M1FnQklTQUVoSUFRRUFKQ29Jc0lOQ1FBeElrQW5odC9lT2ZlSVpxa0owRFVnQTlsSC9BdDUyakJ2OUtTZnlVbEFVTnBDNzF4bEs0UUwvYmZkR3IzK0hTS0NCQ1hFOENaMTRCSGJaNEFrYkovNVpJRDJ1MUhqZmV3a1crdUwyL0tuT3VxNUFuQTc2dUNVaml5YmZoYzhRRG9vaHVmRExVOGdhR2hvYlZBd0FMQXExUGk5RUFtbTlrOE5qWjJNS1grcEJzaElBU0VnQkFRQWtKQUNIUXRnWVlGZ0hwRkFNOWdEMnp6K0FvQjVtNzFmT0VBU1lrQTBYYWpScSszZXRJU0FVem1qYXpjZWp3QnlpYjdpOFQ4ZTZJQUgxL1pFNkNTQ0dBWTcvV0tBRGFzaWlKQVFhbU1DQUNOTENRNXQyTUliTnEwYWJFMVozMGNFRDZhVXVrL2k0RCtkZGV1WGRkM0RFUVppQkFRQWtKQUNBZ0JJU0FFV3BoQVV3U0FzRUZhVFpsQTAxSGZNT3ZMbEFtc1hRUUlycWhabmdCeElrQ2NFT0NKQVB4ZTFCdEFseXlFc0c5QUxlRUF6UlVCWXBJRCtoVWN3dUVBemhBYy8vdzR3OTZ1Q09ENjhVWkZBQjV0U1hMQXVDei9KWjRBeG02L21UT2c1Rnd6bjRFTE8xSlp3RXcwNlZ3cEZoQ0xJOXVHSlFkQUM5K241TkpTSXJCeGNPUHZhNlY1OS8rTnFYUko4TFFpZGVuT2laMi9TS1UvNlVRSUNBRWhJQVNFZ0JBUUFsMU9vR2tDUUtNaWdIOStpaUpBMUlpT0d1Q2xBUU5CdmdOejNaU2VaOFROUjBJSVdsRUVZQjkrMjVoM3I5VjNuWThSQVp3S0FTd0tlTktLS1JBNGlRRnRRejlXQlBBcUN3VDBRaDRncGg1U2pRaFFOaWVBRTVkZ04yY21pL1R6RndUVkpqZ0VBRkZDQUxyOFBpakRkd2xzMkxEaFl3aDRIUUFzU2dFSzN3Ni9PVDB6Zlkway8wdUJ0blFoQklTQUVCQUNRa0FJQ0FHMjB6Nno3emVQQThCWnphSVIzdHQzV28wbUIvU09jZXkzMEI2OWE3VFZGdzdnOUJVWTMrR1dqYjVDRysrUnZpSUIrMTB2QXJoUXpkMStUd1J3ZHZTakx2N2gzMjJQQ0pkcDJmQUJiL0Z4V3hFUndKazFZMVg1aTZjMEo0QTMvMTdjdnk4Q3VGUHZMRGV2a29IZlZ3RlJRZ0NhOWZtWGR0cVh3S1pObTVaYmM5WWRnTEE2SmZmLzV3SGhiL0w1UEhzY3lFc0lDQUVoSUFTRWdCQVFBa0lnQlFKTkZ3QjhXODR4L1gzVHJWa2lnT25DSFpjVElBa1JJR3FFeHYwZUdKL2hXZk4yL05zaEhDQmtNTHZEOEV2OWVUditNVlVBcWtrT3FBM0RmdjY4QUpIa2pMWTNRSndJd0JmcGtvMExKWWdtQUN3SkI3REZxUUtpbGhDQUZHNDIwa1ZMRThBTkd6WnNSc0J2QXNBSktWM3BMcFZSSDlpNWMrY3pLZlVuM1FnQklTQUVoSUFRRUFKQ29Pc0pKQ1lBT0VaeXE0b0E3blhWNEFuUXJTS0FtVWsvS04vbjdhSTdueC9QRThBUlFTTHZ4U1FIck1ZVHdEYnNQYVBlai92M0dqUGZjMFdBMkhBQTV6M251b0pZZ01EeGhNVURMQ0JJRG9DdXZ4TjJPWUFMTDd5dzUrU1RUdjQ4QVB4VlNpZzQrZDgvTDF1MjdEOUdSMGRuVStwVHVoRUNRa0FJQ0FFaElBU0VRTmNUU0ZRQWFBY1J3REVPdlhXUVhKbkFjcDRBdG90OGFCbEdmb3VFSk15M1ltczhQTDY1U0I2R2tHSGZvQ2VBRnhKUXZ3amdTdzRobzc1ZVR3RGlIQUFnT1FEbVcxZnlmbWNUc0pQL29mNDJJS3hJYWFRSE1qcXplV3hpYkY5Sy9VazNRa0FJQ0FFaElBU0VnQkFRQWtua0FJaWpXczRUd0RIbG9qSDRNVGtCWEN2ZEQvLzJPd2xpeHVzTEJ6QWtpaFlXQWNJaVJYWHJ0bUVod0U4TUdHVlVJUUVnb0owVHdEbWpORGxnSUxPRTh3STRDUWpEU29pelMrKzJGY2tMWUs0UXR5Q0JxNktVNWdVSXhKMTRUd0FDS0NCSkNFQjFxMHFPNmtRQ1c3WnM2VDF5K01nL2NqaytBTWltTUViK0NOOXVhZXNERXhNVHhSVDZreTZFZ0JBUUFrSkFDQWdCSVNBRVhBS0pld0NZUmw5Y1RvQnFSQURmTmpSMnBrTTJvVzkwR25IaWtaanhzSGdRTWlFajJlKzlLd3F2a2ZrcUJNUW1DNHl4d3R2UEV5QkltaGZZNUZXS0FLRndBQUpONkpuNjl1eEV5d1NhcmhDQkhoTVJBY3d5Z0VhSy8rRDQybklDYUJFQTVHYlk1UVJ5dWR6cHBPbFdBRmlWRW9vWlFQakxmRDUvUzByOVNUZENRQWdJQVNFZ0JJU0FFQkFDYVFzQXZoRWZreGl3bVNKQTFIejNESFBUNEF6N0dFUWtpaFE4QVR5My8yaGl3UFlKQjJCbWxVVUErd2c3cTcrWkU2QnloWUN3MTRBUkdsR0xKNEM5QUVwRmdKQjRFYzRKVUNEeEFKQWJZaGNUeUszUC9RVWhmUTRBK2xQQ3NEZVR6Yng3Ykd6czZaVDZrMjZFZ0JBUUFrSkFDQWdCSVNBRUZrSUFNRTF0b3o2QXZ4TnNHdXVPd1ZacXFudXU0YVhoQUVhaXQyanBPS1BVb0xtVEh3NGJNQ1NLQmtTQXFBQVJHSjdoTldjYSs2WVFVQ29DQk5mbDg2dlJ2Ny9HdytNL0hKRzhBTkhrZ09XTTk3Z0tBYzRjT3QxRVBRR0NXUDdnTW1vT0IzQkZBSE1ObGJKekV3a1NpQUFndDhPdUpUQThQTHhrYm1idVZnSWFUcW4wM3d3Q2ZtcnBzcVdmR0IwZHRib1d2QXhjQ0FnQklTQUVoSUFRRUFJTFJDQzFFSURvK0J4RE56RGpneVR0WWZkOFAzdTdjWHhVQkRCTjVMampUYVBjTkRpanhub29nS0FCRWFEYWNJRHFQUUVhRXdHYUlnQ1l1K2J1WlBvaVFHemNmN0NEWDdic1h5VVJ3TGpvYURoQXRFSkFlTVhFVkErSXJSRGc1Z1RRSkFMQUF0MThwTnVGSjdCeGNPTmJMV1hkaFlDbnBuSTFCRTlqQnQ4M1BqNitPNVgrcEJNaElBU0VnQkFRQWtKQUNBaUJFSUVGRXdBOGs3WmRSUUQ3K2tOR2FxbVpIUlVDb25rRUFnYit2bmRvY2xveEpNQVVXTHlMdGQzOEd4UUJ1QzN0SW5TOEJ0aVFEM0NFUllCb1FqL1BoOEk3S3E2RVlIakNBZzhHTEdpRkk5dHk1ejRnOXdZaDBFMEV0bTdkcW5iZnUvdEtRdnBxU3VObVI2R3Y5UGIyZm5USGpoMHZwTlNuZENNRWhJQVFFQUpDUUFnSUFTRmdFRmhRQWNBemdBTmZnTktzL3I2UGdHRU5oa0lGUW1FQ3dhNXo3WjRBNXRYNHBtM0ZFb0gxaUFEUmMwd1JnSDl1bjd3QWJJUWJQaE4yckQrNS80dlA2bC9PRTRDbjBNc1VZSW9BamdEQ2xRVWlRb0M1RnZ3RkVnMms4Qzl5UzhLckFBQUJ4RWxFUVZUSHpnbmd6MjdwdVFXdE1pSUF5RzJ4R3duZzBORFFFQkNNQXNESkNRUGdiUCsvVWxwZHRYTmk1ME1sMVU4VDdseWFGd0pDUUFnSUFTRWdCSVNBRUhBSUxMZ0EwRzRpUUhDOWhsRmFveWRBWjRzQXprNjdtUk9BVFhQKzNkN1hqN3puaVQvc1JlQkpDaUZQQ2ZmNEVoSEFnT2dmN3lYL2kxU0FjS3ovc2lKQVFTczlzaTEzZ1hnQXlGMng2d2lzWHIyNnY2K3Y3MW9rSEFTRTVRQ1FTUURDUzREd0tDSitaZW5TcFQrUzJQOEVDRXVUUWtBSUNBRWhJQVNFZ0JDb2trQkxDQUNsSW9DWkFEQ2FFOEE4MnZrNWxDVE9IWGdsendIakxNYzJkRGF1blo5TC91c2VIZkx3TDQzeXJ6VWNvSE5FZ1BCSzg3UCsrNW43SGNNN0tnSTQ0emNyQkVSQ0tvdzVLWnREd0lBWUZnMmMzcnhYSUJCNFZ4SUtCeWdvMUNNM2l3QlE1UzFERHVzMEFuWW93TzdkL1ZyckU3UFpyRXBnZkRPWlRPYllqaDA3WmhKb1c1b1VBa0pBQ0FnQklTQUVoSUFRcUlGQXl3Z0FwdkVkTmQ2ajJmb2RneTVzcWxjU0FXeVJ3RTg0WnhpR0VTT3htU0tBS3h1RXBxTDV5UUZqOGc2VS9xbnNjcWpoMFBKTEtsSWRJR1RZUjBRQTN5QjNQUUZhUkFRb0tNeU0zQ3c1QUdxNGJjaWhRa0FJQ0FFaElBU0VnQkFRQWtKQUNMUWpnZjhIZXp6eDdzbXFhVXdBQUFBQVNVVk9SSzVDWUlJPSIvPg0KPC9kZWZzPg0KPC9zdmc+DQo=\"","import { ERROR_MESSAGES } from 'Public/containers/login/config/LoginConstants';\r\n\r\n\r\nconst validateForm = (values) => {\r\n const { oldPassword = '', confirmPassword = '', newPassword = '' } = values;\r\n const errors = {};\r\n if (!!(newPassword && oldPassword) && oldPassword === newPassword) {\r\n errors.newPassword = ERROR_MESSAGES.SAME_AS_PREVIOUS;\r\n }\r\n if (!!confirmPassword && confirmPassword !== newPassword) {\r\n errors.confirmPassword = ERROR_MESSAGES.NEW_PASSWORD_MATCH;\r\n }\r\n return errors;\r\n};\r\n\r\n\r\nexport default validateForm;\r\n","const StandaloneAppDownloadContext = React.createContext();\r\n\r\nexport default StandaloneAppDownloadContext;\r\n","import Button from 'Generic/button/components/Button';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport ButtonText from 'Generic/buttontext/components/ButtonText';\r\nimport { ClickAwayListener, Grid, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { Dropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Transition from 'Generic/transition/components/Transition';\r\nimport { EMPTY_FUNC, SLIDE_DIRECTION, TABLE_ROW_HEIGHT_VARIANT } from 'Commons/config/constants/Constants';\r\nimport { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport { TextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport { Form, Formik } from 'formik';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport Modal from 'Commons/components/generic/modal/components/Modal';\r\nimport { TEXT_FIELD_WIDTH } from 'External/containers/configuration/config/Constants';\r\nimport TableRowCount from 'Generic/tablerowcount/TableRowCount';\r\nimport FiltersAndSortsStyle from './styles/FiltersAndSortsStyle';\r\nimport * as Filters from './components/index';\r\nimport sortConfig from './config/SortConfig';\r\nimport { calculateFilters } from './utils/utils';\r\n\r\nclass FiltersAndSorts extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n const {\r\n getFilters,\r\n fixedFiltersKeys = [],\r\n getResetFilter,\r\n defaultSort: { label: sortLabel } = {},\r\n prefilledSearchValue = '',\r\n valuesToIgnoreInCount = {},\r\n } = props;\r\n const filters = getFilters();\r\n this.state = {\r\n isFilterComponentOpen: false,\r\n searchButtonOpen: false,\r\n searchValue: prefilledSearchValue || '',\r\n sort: sortLabel,\r\n filterCount: calculateFilters(filters, fixedFiltersKeys, valuesToIgnoreInCount),\r\n initialValues: filters,\r\n isSortOpen: false,\r\n };\r\n this.filtersRef = React.createRef();\r\n const { resetFilters } = this;\r\n if (getResetFilter) getResetFilter(resetFilters);\r\n }\r\n\r\n resetFilters = () => {\r\n const {\r\n fixedFiltersKeys = [],\r\n defaultFilters = {},\r\n defaultSort: { label: sortLabel },\r\n valuesToIgnoreInCount = {},\r\n } = this.props;\r\n this.setState({\r\n searchValue: '',\r\n sort: sortLabel || 'Recommended',\r\n filterCount: calculateFilters(defaultFilters, fixedFiltersKeys, valuesToIgnoreInCount),\r\n initialValues: defaultFilters,\r\n });\r\n };\r\n\r\n openFilter = () => {\r\n const { filtersRef } = this;\r\n filtersRef.current = null;\r\n this.setState({ isFilterComponentOpen: true });\r\n };\r\n\r\n setFilterCount = filterCount => this.setState({ filterCount });\r\n\r\n closeFilter = () => this.setState({ isFilterComponentOpen: false });\r\n\r\n toggleSearchButton = () => this.setState(prevState => ({ searchButtonOpen: !prevState.searchButtonOpen }));\r\n\r\n toggleIsSortOpen = () => this.setState(prevState => ({ isSortOpen: !prevState.isSortOpen }));\r\n\r\n closeSearch = (e) => {\r\n e.preventDefault();\r\n const {\r\n state: { searchValue },\r\n toggleSearchButton,\r\n } = this;\r\n if (!searchValue) {\r\n toggleSearchButton();\r\n }\r\n };\r\n\r\n onClearAll = () => {\r\n // const { props: { fixedFiltersKeys = [] } } = this;\r\n const {\r\n setValues,\r\n // values,\r\n } = this.formProps;\r\n // const clearedValue = clearAllFields(values, fixedFiltersKeys);\r\n setValues({});\r\n };\r\n\r\n componentDidMount() {\r\n const { setClearFilter, setFilterCount: setFilterCountFunc } = this.props;\r\n const { onClearAll, setFilterCount } = this;\r\n if (setClearFilter) {\r\n setClearFilter(onClearAll);\r\n }\r\n if (setFilterCountFunc) {\r\n setFilterCountFunc(setFilterCount);\r\n }\r\n }\r\n\r\n componentDidUpdate(_, prevState) {\r\n const { state: { filterCount }, props: { getTotalCount } } = this;\r\n const { filterCount: prevFilterCount } = prevState || {};\r\n if (filterCount !== prevFilterCount && getTotalCount) {\r\n getTotalCount(filterCount);\r\n }\r\n }\r\n\r\n onSearch = (event = {}) => {\r\n const { props: { onSearchChange } } = this;\r\n const { target: { value = '' } = {} } = event;\r\n this.setState({ searchValue: value });\r\n onSearchChange(event);\r\n };\r\n\r\n setSort = (selectedSort) => {\r\n const {\r\n props: {\r\n source,\r\n onSortChange,\r\n },\r\n toggleIsSortOpen,\r\n } = this;\r\n const sortList = sortConfig[source] || [];\r\n const selectedSortConfig = sortList.find(({ value }) => value === selectedSort);\r\n onSortChange(selectedSortConfig.sort);\r\n toggleIsSortOpen();\r\n };\r\n\r\n onSort = (_, selectedSort) => {\r\n this.setState({ sort: selectedSort });\r\n const { deviceInfo: { isDesktop } } = window;\r\n if (isDesktop) {\r\n this.setSort(selectedSort);\r\n }\r\n };\r\n\r\n onChangeFilter = (filters) => {\r\n const {\r\n props: {\r\n onApplyFilter,\r\n fixedFiltersKeys = [],\r\n valuesToIgnoreInCount = {},\r\n },\r\n filtersRef,\r\n formProps: { resetForm } = {},\r\n } = this;\r\n if (filtersRef.current === null) {\r\n filtersRef.current = filters;\r\n onApplyFilter(filters);\r\n this.setState({\r\n filterCount: calculateFilters(filters, fixedFiltersKeys, valuesToIgnoreInCount),\r\n isFilterComponentOpen: false,\r\n initialValues: filters,\r\n });\r\n resetForm(filters);\r\n }\r\n };\r\n\r\n renderSearchTextField = () => {\r\n const {\r\n props: {\r\n classes,\r\n hideSearch,\r\n hideSort,\r\n placeholder = localisable.search,\r\n label = '',\r\n },\r\n state: { searchValue },\r\n onSearch,\r\n } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n return (\r\n !hideSearch\r\n && (\r\n ,\r\n }}\r\n label={label}\r\n classes={{ alignment: classes.autoWidth }}\r\n trackValue={false}\r\n fullWidth\r\n inputProps={{ ...(!isDesktop && { autoFocus: true }) }}\r\n />\r\n )\r\n );\r\n };\r\n\r\n renderSearchIcon = () => {\r\n const {\r\n props: {\r\n classes,\r\n hideSearch = false,\r\n },\r\n toggleSearchButton,\r\n } = this;\r\n return !hideSearch && (\r\n \r\n );\r\n };\r\n\r\n renderFilter = () => {\r\n const {\r\n state: { filterCount },\r\n openFilter,\r\n props: {\r\n classes,\r\n showFilterText,\r\n totalRowsInTable,\r\n hideFilter,\r\n showTotalCount,\r\n },\r\n } = this;\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n return (\r\n !hideFilter ? (\r\n \r\n \r\n \r\n \r\n {showFilterText && (\r\n \r\n {localisable.filters}\r\n \r\n )}\r\n {\r\n (filterCount > 0)\r\n ? (\r\n \r\n \r\n {filterCount}\r\n {' '}\r\n {localisable.applied} \r\n \r\n \r\n \r\n )\r\n : (\r\n \r\n )\r\n }\r\n \r\n ) : (\r\n <>\r\n {\r\n showTotalCount && (\r\n \r\n )\r\n }\r\n \r\n )\r\n );\r\n };\r\n\r\n renderSortDropdown = () => {\r\n const {\r\n props: {\r\n classes,\r\n source,\r\n hideSort,\r\n },\r\n state: { sort },\r\n onSort,\r\n } = this;\r\n return (\r\n !hideSort\r\n && (\r\n <>\r\n \r\n {`${localisable.sortBy}:`}\r\n \r\n \r\n \r\n )\r\n );\r\n };\r\n\r\n renderSort = () => {\r\n const {\r\n props: {\r\n classes,\r\n hideSort,\r\n },\r\n state: {\r\n isSortOpen,\r\n sort,\r\n },\r\n renderSortDropdown,\r\n toggleIsSortOpen,\r\n setSort,\r\n } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n return isDesktop ? renderSortDropdown()\r\n : !hideSort\r\n && (\r\n <>\r\n \r\n \r\n \r\n {renderSortDropdown()}\r\n \r\n setSort(sort)}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n\r\n renderFilterOverlay = () => {\r\n const {\r\n props: {\r\n classes, source, currentFacility = {}, tableHeight, extraFilterHeight = 0,\r\n headerRowHeight = TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER,\r\n negativeButtonProps = {}, isLiveData, additionalFilterProps = {},\r\n },\r\n state: { isFilterComponentOpen, initialValues },\r\n closeFilter, onChangeFilter, onClearAll,\r\n } = this;\r\n const Filter = Filters[`${capitalize(source)}Filter`];\r\n const { data: { id: entityId } = {} } = currentFacility;\r\n return (\r\n \r\n \r\n \r\n {Filter && (\r\n {\r\n this.formProps = formProps;\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n />\r\n )\r\n }\r\n
\r\n \r\n );\r\n };\r\n\r\n render() {\r\n const {\r\n props: {\r\n classes,\r\n hideSearch,\r\n hideSort,\r\n renderAddOns,\r\n containerProps,\r\n filterContainerProps,\r\n searchBarJustification,\r\n filterContainerProps: { className: filterContainerClassName } = {},\r\n renderFilterEnd,\r\n },\r\n state: { searchButtonOpen },\r\n closeSearch,\r\n renderFilter,\r\n renderFilterOverlay,\r\n renderSearchIcon,\r\n renderSort,\r\n renderSearchTextField,\r\n } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n return (\r\n \r\n \r\n \r\n {renderFilter()}\r\n {renderFilterOverlay()}\r\n \r\n \r\n {!isDesktop && !searchButtonOpen && renderSearchIcon()}\r\n {isDesktop && renderSearchTextField()}\r\n {renderSort()}\r\n {isDesktop && renderFilterEnd()}\r\n \r\n \r\n {renderAddOns()}\r\n {!isDesktop && searchButtonOpen\r\n && (\r\n \r\n \r\n {renderSearchTextField()}\r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nFiltersAndSorts.propTypes = {\r\n source: PropTypes.string,\r\n currentFacility: PropTypes.object,\r\n onAction: PropTypes.func,\r\n getFilters: PropTypes.func,\r\n onApplyFilter: PropTypes.func,\r\n onSearchChange: PropTypes.func,\r\n onSortChange: PropTypes.func,\r\n hideSearch: PropTypes.bool,\r\n defaultSort: PropTypes.object,\r\n hideSort: PropTypes.bool,\r\n renderAddOns: PropTypes.func,\r\n renderFilterEnd: PropTypes.func,\r\n showTotalCount: PropTypes.bool,\r\n showFilterText: PropTypes.bool,\r\n containerProps: PropTypes.object,\r\n negativeButtonProps: PropTypes.object,\r\n filterContainerProps: PropTypes.object,\r\n additionalFilterProps: PropTypes.object,\r\n searchBarJustification: PropTypes.string,\r\n};\r\n\r\nFiltersAndSorts.defaultProps = {\r\n hideSearch: false,\r\n hideFilter: false,\r\n showFilterText: false,\r\n showTotalCount: true,\r\n hideSort: false,\r\n containerProps: {},\r\n negativeButtonProps: {},\r\n renderAddOns: EMPTY_FUNC,\r\n renderFilterEnd: EMPTY_FUNC,\r\n filterContainerProps: {},\r\n additionalFilterProps: {},\r\n searchBarJustification: 'space-between',\r\n};\r\n\r\nexport default withStyles(FiltersAndSortsStyle)(FiltersAndSorts);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport ConfigurationFilterStyle from '../styles/ConfigurationFilterStyle';\r\n\r\nconst useStyles = makeStyles(ConfigurationFilterStyle, { name: 'ConfigurationFilterStyle' });\r\n\r\n\r\nconst ConfigurationFilter = (props) => {\r\n const {\r\n formProps: { setFieldValue } = {},\r\n includeInactiveForFutureUseStatus = false,\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const handleStatusCheckboxChange = (_, value) => {\r\n if (includeInactiveForFutureUseStatus && value.includes(STATUS.Inactive.value)) {\r\n setFieldValue('terms.value.status', [...value, STATUS.Inactive_For_Future_Use.value]);\r\n } else {\r\n setFieldValue('terms.value.status', value.filter(item => item !== STATUS.Inactive_For_Future_Use.value));\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nConfigurationFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n includeInactiveForFutureUseStatus: PropTypes.bool,\r\n};\r\n\r\nexport default memo(ConfigurationFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport InventoryListFilterStyle from '../styles/InventoryListFilterStyle';\r\n\r\nconst useStyles = makeStyles(InventoryListFilterStyle, { name: 'InventoryListFilterStyle' });\r\n\r\n\r\nconst InventoryListFilter = () => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default memo(InventoryListFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { MAINTENANCE_EVENT_STATUS } from '../config/Constants';\r\nimport MaintenanceEventFilterStyle from '../styles/MaintenanceEventFilterStyle';\r\n\r\nconst useStyle = makeStyles(MaintenanceEventFilterStyle, { name: 'MaintenanceEventFilterStyle' });\r\n\r\nconst MaintenanceEventFilter = () => {\r\n const classes = useStyle();\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(MaintenanceEventFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useMemo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { RESERVATION_STATUS } from '../config/Constants';\r\nimport ReservationFilterStyle from '../styles/ReservationFilterStyle';\r\nimport { getUnitTypeApiConfig } from '../config/ApiRequests';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\nconst useStyles = makeStyles(ReservationFilterStyle, { name: 'ReservationFilter' });\r\n\r\nconst ReservationFilter = ({\r\n entityId,\r\n formProps: { setFieldValue, values: { terms: { unitTypeId: unitTypeIds = [] } = {} } = {} } = {},\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const unitTypeApiConfig = useMemo(() => getUnitTypeApiConfig(entityId), []);\r\n\r\n const onSelectOrRemoveUnitType = (selectedUnitTypes) => {\r\n setFieldValue('terms.unitTypeId', Object.keys(selectedUnitTypes));\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n \r\n {localisable.unitType}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nReservationFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nReservationFilter.defaultProps = { entityId: '' };\r\n\r\nexport default memo(ReservationFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useMemo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { WAITING_STATUS, CUSTOMER_TYPE, WAITING_SOURCE } from '../config/Constants';\r\nimport WaitingListFilterStyle from '../styles/WaitingListFilterStyle';\r\nimport { getUnitTypeApiConfig } from '../config/ApiRequests';\r\nimport { RESERVATION_STATUS } from '../../reservationFilter/config/Constants';\r\n\r\nconst useStyles = makeStyles(WaitingListFilterStyle, { name: 'WaitingListFilter' });\r\n\r\nconst WaitingListFilter = ({\r\n entityId,\r\n formProps: { setFieldValue, values: { terms: { unitTypeId: unitTypeIds = [] } = {} } = {} } = {},\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const unitTypeApiConfig = useMemo(() => getUnitTypeApiConfig(entityId), []);\r\n\r\n const onSelectOrRemoveUnitType = (selectedUnitTypes) => {\r\n setFieldValue('terms.unitTypeId', Object.keys(selectedUnitTypes));\r\n };\r\n\r\n const { waitingStatus, waitingSource } = useConstructor(() => ({\r\n waitingStatus: [\r\n { ...WAITING_STATUS.Active },\r\n {\r\n label: RESERVATION_STATUS.Cancelled.label,\r\n value: WAITING_STATUS.Rejected.value,\r\n },\r\n ],\r\n waitingSource: Object.values(WAITING_SOURCE),\r\n }));\r\n\r\n return (\r\n <>\r\n \r\n {localisable.customerType}\r\n \r\n \r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.source}\r\n \r\n \r\n \r\n {localisable.unitType}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nWaitingListFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nWaitingListFilter.defaultProps = { entityId: '' };\r\n\r\nexport default memo(WaitingListFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { DROPDOWN_MAX_HEIGHT, STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { Checkbox, FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { memo, useEffect, useState } from 'react';\r\nimport MultiSelect from 'Generic/multiselect/components/MultiSelect';\r\nimport { Dropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { TEXT_FIELD_WIDTH } from 'External/containers/configuration/config/Constants';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport TenantFilterStyle from '../styles/TenantFilterStyle';\r\nimport { EXEMPT_FROM_LIST } from '../config/Constants';\r\n\r\n\r\nconst useStyles = makeStyles(TenantFilterStyle, { name: 'TenantFilterStyle' });\r\n\r\nconst TenantFilter = ({\r\n isLiveData,\r\n formProps: {\r\n setFieldValue,\r\n values: {\r\n terms: {\r\n ledger: { financials: { isAutoPayEnabled: [isAutoPayEnabledChecked = false] = [] } = {} } = {},\r\n exemptFromEvent: { gateLockout, overlock, otherLateEvents } = {},\r\n taxExempt: { isTaxExempt } = {},\r\n } = {},\r\n } = {},\r\n },\r\n}) => {\r\n const getInitialValues = () => {\r\n const initialValues = [];\r\n if (gateLockout) initialValues.push(EXEMPT_FROM_LIST.GATE_LOCKOUT.value);\r\n if (overlock) initialValues.push(EXEMPT_FROM_LIST.OVERLOCK.value);\r\n if (otherLateEvents) initialValues.push(EXEMPT_FROM_LIST.OTHER_LATE_EVENTS.value);\r\n if (isTaxExempt) initialValues.push(EXEMPT_FROM_LIST.TAX_EXEMPT.value);\r\n return initialValues;\r\n };\r\n\r\n const [initiallySelectedValues, setInitiallySelectedValues] = useState(getInitialValues());\r\n useEffect(() => {\r\n if ((!gateLockout || !gateLockout.length)\r\n && (!overlock || !overlock.length)\r\n && (!otherLateEvents || !otherLateEvents.length)\r\n && (!isTaxExempt || !isTaxExempt.length)) {\r\n setInitiallySelectedValues([]);\r\n }\r\n }, [gateLockout, overlock, otherLateEvents, isTaxExempt]);\r\n\r\n const classes = useStyles();\r\n\r\n const { exemptFromList } = useConstructor(() => ({\r\n exemptFromList: Object.values(EXEMPT_FROM_LIST),\r\n initiallySelectedValues: [],\r\n }));\r\n\r\n const [isNoTokenFilterEnabled, setIsNoTokenFilterEnabled] = useState(false);\r\n\r\n const resetNoTokenFilter = () => {\r\n setFieldValue('notExists.ledger.financials.cardInfo.token', undefined);\r\n setFieldValue('exists.ledger.financials.cardInfo.masked_card_number', undefined);\r\n setIsNoTokenFilterEnabled(false);\r\n };\r\n\r\n const onSelectOrRemoveExemptItems = (selectedEvents) => {\r\n setFieldValue('terms.exemptFromEvent.gateLockout', EXEMPT_FROM_LIST.GATE_LOCKOUT.value in selectedEvents ? [true] : null);\r\n setFieldValue('terms.exemptFromEvent.overlock', EXEMPT_FROM_LIST.OVERLOCK.value in selectedEvents ? [true] : null);\r\n setFieldValue('terms.exemptFromEvent.otherLateEvents', EXEMPT_FROM_LIST.OTHER_LATE_EVENTS.value in selectedEvents ? [true] : null);\r\n setFieldValue('terms.taxExempt.isTaxExempt', EXEMPT_FROM_LIST.TAX_EXEMPT.value in selectedEvents ? [true] : null);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.advancedFilter}\r\n \r\n {\r\n if (!value) {\r\n setFieldValue('exists', {});\r\n }\r\n }}\r\n />\r\n {\r\n isLiveData && (\r\n <>\r\n {\r\n if (!value) {\r\n resetNoTokenFilter();\r\n setFieldValue('terms.ledger.financials.isAutoPayEnabled', undefined);\r\n }\r\n }}\r\n />\r\n {\r\n setIsNoTokenFilterEnabled(true);\r\n if (value) {\r\n setFieldValue('notExists.ledger.financials.cardInfo.token.0', true);\r\n setFieldValue('exists.ledger.financials.cardInfo.masked_card_number.0', true);\r\n } else {\r\n resetNoTokenFilter();\r\n }\r\n }}\r\n />\r\n \r\n \r\n {localisable.exemptedFrom}\r\n \r\n onSelectOrRemoveExemptItems(updatedSelectedOptions)}\r\n onRemove={updatedSelectedOptions => onSelectOrRemoveExemptItems(updatedSelectedOptions)}\r\n initiallySelectedValues={initiallySelectedValues}\r\n />\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nTenantFilter.propTypes = { formProps: PropTypes.object, isLiveData: PropTypes.bool };\r\n\r\nexport default memo(TenantFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useMemo, useState } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { Checkbox } from 'Generic/checkbox/components/CheckBox';\r\nimport useDidUpdateEffect from 'Commons/helpers/hooks/useDidUpdateEffect';\r\nimport { isNonEmptyArray } from 'Commons/helpers/utils/DataHelpers';\r\nimport { RENTAL_STATUS, AVAILABILITY_STATUS, INVENTORY_REPORT_STATUS } from '../config/Constants';\r\nimport { getUnitTypeApiConfig } from '../config/ApiRequests';\r\nimport UnitFilterStyle from '../styles/UnitFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst useStyles = makeStyles(UnitFilterStyle, { name: 'UnitFilterStyle' });\r\n\r\nconst UnitFilter = ({\r\n entityId = '', isLiveData,\r\n formProps: {\r\n setFieldValue,\r\n values: {\r\n terms: {\r\n unitType: { id: unitTypeIds = [] } = {},\r\n rentalStatus = [], availabilityStatus = [],\r\n } = {},\r\n } = {},\r\n } = {},\r\n}) => {\r\n const classes = useStyles();\r\n const unitTypeApiConfig = useMemo(() => getUnitTypeApiConfig(entityId), []);\r\n const acceptableAvailableStatus = useMemo(() => [AVAILABILITY_STATUS.Available.value,\r\n AVAILABILITY_STATUS.Unavailable_On_Move_Out.value], []);\r\n const [isAvailable, setIsAvailable] = useState(availabilityStatus.includes(AVAILABILITY_STATUS.Available.value));\r\n const [isUnavailable, setIsUnavailable] = useState(availabilityStatus.includes(AVAILABILITY_STATUS.Unavailable.value));\r\n const onSelectOrRemoveUnitType = (selectedUnitTypes) => {\r\n setFieldValue('terms.unitType.id', Object.keys(selectedUnitTypes));\r\n };\r\n\r\n useDidUpdateEffect(() => {\r\n // For clearing availability status\r\n if (!isNonEmptyArray(availabilityStatus)) {\r\n setIsAvailable(false);\r\n setIsUnavailable(false);\r\n }\r\n }, [availabilityStatus]);\r\n\r\n const handleRentalStatusChange = (_, value) => {\r\n if (value.includes(RENTAL_STATUS.Rented.value)) {\r\n setFieldValue('terms.availabilityStatus', acceptableAvailableStatus);\r\n setIsUnavailable(false);\r\n setIsAvailable(true);\r\n }\r\n };\r\n\r\n const handleAvailableCheckboxChange = (_, value) => {\r\n setFieldValue('terms.availabilityStatus',\r\n value\r\n ? [...availabilityStatus, ...acceptableAvailableStatus]\r\n : availabilityStatus.filter(status => !acceptableAvailableStatus.includes(status)));\r\n setIsAvailable(value);\r\n };\r\n\r\n const handleUnavailableCheckboxChange = (_, value) => {\r\n setFieldValue('terms.availabilityStatus',\r\n value\r\n ? [...availabilityStatus, AVAILABILITY_STATUS.Unavailable.value]\r\n : availabilityStatus.filter(status => status !== AVAILABILITY_STATUS.Unavailable.value));\r\n setIsUnavailable(value);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.rentalStatus}\r\n \r\n \r\n \r\n {localisable.availabilityStatus}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.inventoryReport}\r\n \r\n \r\n \r\n {localisable.unitType}\r\n \r\n \r\n {\r\n isLiveData && (\r\n <>\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nUnitFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n isLiveData: PropTypes.bool,\r\n};\r\n\r\nUnitFilter.defaultProps = { entityId: '' };\r\n\r\nexport default memo(UnitFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { STATUS } from '../config/Constants';\r\nimport UserFilterStyle from '../styles/UserFilterStyle';\r\n\r\nconst useStyles = makeStyles(UserFilterStyle, { name: 'UserFilterStyle' });\r\n\r\nconst UserFilter = () => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(UserFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport VendorFilterStyle from '../styles/VendorFilterStyle';\r\n\r\n\r\nconst useStyles = makeStyles(VendorFilterStyle);\r\n\r\n\r\nconst VendorFilter = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default memo(VendorFilter);\r\n","import { XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport PropTypes from 'prop-types';\r\nimport { memo, useCallback } from 'react';\r\nimport { convertToNumber, isValidNumber } from 'Commons/helpers/utils/Utils';\r\nimport { getIn } from 'Commons/helpers/utils/DataHelpers';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { MODE } from 'Commons/config/constants/Constants';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport LabelWithAddons from 'Commons/components/generic/labelwithaddons/components/LabelWithAddons';\r\nimport filterStyle from '../styles/DelinquencyFilterStyles';\r\n\r\nconst useStyles = makeStyles(filterStyle, { name: 'DelinquencyFilter', index: 1 });\r\n\r\nconst FromToFilterTextField = ({\r\n title,\r\n values,\r\n toName,\r\n classes,\r\n toLabel,\r\n fromName,\r\n fromLabel,\r\n clearText,\r\n toPlaceHolder,\r\n setFieldValue,\r\n fromPlaceholder,\r\n toTextFieldProps,\r\n fromTextFieldProps,\r\n}) => {\r\n const clearFieldValue = () => {\r\n setFieldValue(fromName, undefined);\r\n setFieldValue(toName, undefined);\r\n };\r\n\r\n const fromValue = getIn(values, fromName);\r\n const toValue = getIn(values, toName);\r\n\r\n const getValidator = useCallback((name) => {\r\n const isFieldNoOfDaysLate = name.startsWith('range.noOfDaysLate');\r\n const isFieldLedgerBalance = name.startsWith('range.balance');\r\n const commonValidators = {\r\n ...!isFieldLedgerBalance ? { isInteger: true } : {},\r\n ...(isFieldNoOfDaysLate || isFieldLedgerBalance)\r\n ? { isNonZeroPositiveNumeric: true } : { isPositiveNumeric: true },\r\n };\r\n\r\n switch (name) {\r\n case 'range.balance.from':\r\n case 'range.noOfDaysLate.from':\r\n case 'range.lastContactedDays.from':\r\n return {\r\n ...commonValidators,\r\n ...isValidNumber(toValue) && convertToNumber(toValue) >= 0 ? {\r\n isGreaterThan: {\r\n value: toValue,\r\n errorMessage: `${localisable.valueMustBeLessThan} ${toValue}`,\r\n },\r\n } : {},\r\n };\r\n case 'range.balance.to':\r\n case 'range.noOfDaysLate.to':\r\n case 'range.lastContactedDays.to':\r\n return {\r\n ...commonValidators,\r\n ...isValidNumber(fromValue) && convertToNumber(fromValue) >= 0 ? {\r\n isLessThan: {\r\n value: fromValue,\r\n errorMessage: `${localisable.valueMustBeMoreThan} ${fromValue}`,\r\n },\r\n } : {},\r\n };\r\n default: return {};\r\n }\r\n }, [fromValue, toValue]);\r\n\r\n return (\r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {clearText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nFromToFilterTextField.propTypes = {\r\n title: PropTypes.node,\r\n toLabel: PropTypes.node,\r\n toName: PropTypes.string,\r\n values: PropTypes.object,\r\n fromLabel: PropTypes.node,\r\n clearText: PropTypes.node,\r\n classes: PropTypes.object,\r\n fromName: PropTypes.string,\r\n setFieldValue: PropTypes.func,\r\n toPlaceHolder: PropTypes.node,\r\n fromPlaceholder: PropTypes.node,\r\n toTextFieldProps: PropTypes.object,\r\n fromTextFieldProps: PropTypes.object,\r\n};\r\n\r\nconst getModeLabel = (mode) => {\r\n const { icon, value } = mode;\r\n return (\r\n }\r\n >\r\n \r\n {value}\r\n \r\n \r\n );\r\n};\r\n\r\nconst DelinquencyFilter = ({ formProps: { setFieldValue, values } = {} }) => {\r\n const classes = useStyles();\r\n const modeList = MODE.map((object) => {\r\n const { value } = object;\r\n return { label: getModeLabel(object), value };\r\n });\r\n return (\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n {localisable.contactedVia}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDelinquencyFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nDelinquencyFilter.defaultProps = { formProps: {} };\r\n\r\nexport default memo(DelinquencyFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport { memo } from 'react';\r\nimport InterestedUnitTypeSelector from 'External/containers/lead/form/components/crmdetails/components/InterestedUnitTypeSelector';\r\nimport { LEAD_STATUS, DATE_FIELD_WIDTH, MOBILE_DATE_FIELD_WIDTH } from '../config/Constants';\r\nimport leadFilterStyle from '../styles/LeadFilterStyle';\r\n\r\nconst useStyles = makeStyles(leadFilterStyle, { name: 'LeadFilter' });\r\n\r\nconst LeadFilter = ({\r\n entityId = '',\r\n formProps,\r\n formProps: { setFieldValue } = {},\r\n}) => {\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n const classes = useStyles({ isMobile });\r\n\r\n const onClearDate = (field) => { setFieldValue(`range.${field}`, {}); };\r\n\r\n const renderDateRangeFilters = () => ['appointmentDate', 'expectedMoveIn'].map(type => (\r\n \r\n \r\n {type === 'appointmentDate' ? localisable.appointmentBetween : localisable.moveInBetween}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n onClearDate(type)}\r\n justify=\"flex-end\"\r\n >\r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n \r\n \r\n ));\r\n\r\n return (\r\n \r\n \r\n \r\n {localisable.leadStatus}\r\n \r\n \r\n \r\n \r\n <>\r\n {renderDateRangeFilters()}\r\n \r\n \r\n {localisable.unitType}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLeadFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nLeadFilter.defaultProps = { entityId: '' };\r\n\r\nexport default memo(LeadFilter);\r\n","import { memo } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport OVERLOCK_UNLOCK_PENDING_STATUS\r\nfrom 'Commons/components/business/filtersAndSorts/components/pendingOverlockUnlock/config/Constants';\r\nimport PendingOverlockUnlockFilterStyle from '../styles/PendingOverlockUnlockFilterStyle';\r\n\r\nconst useStyles = makeStyles(PendingOverlockUnlockFilterStyle, { name: 'PendingOverlockUnlockFilterStyle' });\r\n\r\n\r\nconst PendingOverlockUnlockFilter = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(PendingOverlockUnlockFilter);\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\n\r\nconst OVERLOCK_UNLOCK_PENDING_STATUS = mapEnum(['Unlock_Pending', 'Overlock_Pending']);\r\n\r\nexport default OVERLOCK_UNLOCK_PENDING_STATUS;\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport { memo } from 'react';\r\nimport { SM_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport ConversationListFilterStyle from '../styles/ConversationListFilterStyle';\r\nimport { DISPLAY } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(ConversationListFilterStyle, { name: 'ConversationListFilterStyle' });\r\n\r\nconst ConversationListFilter = ({ formProps: { setFieldValue } }) => {\r\n const classes = useStyles();\r\n const onClearDate = () => { setFieldValue('range', {}); };\r\n\r\n const handleDisplayCheckboxChange = (_, value) => {\r\n if (value.includes(DISPLAY.READ)) {\r\n setFieldValue('terms.display', [...value, DISPLAY.NA]);\r\n } else {\r\n setFieldValue('terms.display', value.filter(item => item !== DISPLAY.NA));\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.display}\r\n \r\n \r\n \r\n {localisable.dateRange}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nConversationListFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(ConversationListFilter);\r\n","\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport AllAchBatchesFilterStyle from '../styles/AllAchBatchesFilterStyle';\r\n\r\nconst useStyles = makeStyles(AllAchBatchesFilterStyle, { name: 'AllAchBatchesFilter' });\r\n\r\nconst AllAchBatchesFilter = ({ formProps: { setFieldValue } }) => {\r\n const classes = useStyles();\r\n const onClearDate = () => { setFieldValue('range', {}); };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.batchBetween}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAllAchBatchesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(AllAchBatchesFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { memo } from 'react';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { FormCheckboxGroup } from 'Commons/components/generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { RENT_ADJUSTMENT_STATUS_LIST } from 'External/containers/operations/components/rentAdjustment/config/Constants';\r\nimport RentAdjustmentFilterStyle from '../styles/RentAdjustmentFilterStyle';\r\n\r\nconst useStyles = makeStyles(RentAdjustmentFilterStyle, { name: 'RentAdjustmentFilterStyle' });\r\n\r\n\r\nconst RentAdjustmentFilter = () => {\r\n const rentAdjustmentStatusList = useConstructor(() => Object.values(RENT_ADJUSTMENT_STATUS_LIST));\r\n\r\n const classes = useStyles();\r\n\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(RentAdjustmentFilter);\r\n","import NUMBER_OF_TIMES_REPROCESSED\r\nfrom 'Commons/components/business/filtersAndSorts/components/automaticCreditCardDeclines/config/Constants';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport { SM_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport AutomaticCreditCardDeclinesFilterStyle from '../styles/AutomaticCreditCardDeclinesFilterStyle';\r\n\r\nconst useStyles = makeStyles(AutomaticCreditCardDeclinesFilterStyle, { name: 'AutomaticCreditCardDeclinesFilter' });\r\n\r\nconst AutomaticCreditCardDeclinesFilter = ({ formProps: { setFieldValue } }) => {\r\n const classes = useStyles();\r\n const onClearDate = () => { setFieldValue('range', {}); };\r\n return (\r\n <>\r\n \r\n {localisable.filter}\r\n \r\n \r\n \r\n {localisable.paymentAttempts}\r\n \r\n \r\n \r\n \r\n {localisable.date}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAutomaticCreditCardDeclinesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(AutomaticCreditCardDeclinesFilter);\r\n","const NUMBER_OF_TIMES_REPROCESSED = {\r\n One_Attempt: {\r\n label: '1 Attempt',\r\n value: '',\r\n },\r\n Two_Attempts: {\r\n label: '2 Attempts',\r\n value: '1',\r\n },\r\n Three_Plus_Attempts: {\r\n label: '3+ Attempts',\r\n value: '2',\r\n },\r\n};\r\n\r\nexport default NUMBER_OF_TIMES_REPROCESSED;\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { RENT_ASSESSMENT_MODE } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\n\r\n\r\nconst RentAssessmentHistoryFilter = () => (\r\n <>\r\n \r\n {localisable.mode}\r\n \r\n \r\n \r\n);\r\n\r\nexport default memo(RentAssessmentHistoryFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { memo, useMemo } from 'react';\r\nimport MultiSelect from 'Generic/multiselect/components/MultiSelect';\r\nimport { getOptionProps, labelFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport { getUnitApiConfig } from 'Commons/components/business/filtersAndSorts/components/rentAdjustmentSummaryFilter/config/ApiRequests';\r\nimport { getValue } from 'Commons/helpers/utils/DataHelpers';\r\nimport RentAdjustmentSummaryFilterStyle\r\nfrom 'Commons/components/business/filtersAndSorts/components/rentAdjustmentSummaryFilter/styles/RentAdjustmentSummaryFilterStyle';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\n\r\nconst useStyles = makeStyles(RentAdjustmentSummaryFilterStyle, { name: 'RentAdjustmentSummaryFilterStyle' });\r\n\r\nconst RentAdjustmentSummaryFilter = ({ formProps: { setFieldValue, values = {} } = {}, selectedFacility }) => {\r\n const formField = 'terms.summary__unit_id';\r\n const selectedUnits = getValue(values, formField) || [];\r\n\r\n const unitApiConfig = useMemo(() => getUnitApiConfig(selectedFacility), [selectedFacility]);\r\n\r\n const onSelectOrRemoveUnitType = (selectedUnitIds) => {\r\n setFieldValue(formField, Object.keys(selectedUnitIds));\r\n };\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nRentAdjustmentSummaryFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n selectedFacility: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n\r\nexport default memo(RentAdjustmentSummaryFilter);\r\n","import { memo, useCallback, useMemo } from 'react';\r\nimport { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport MultiSelect from 'Generic/multiselect/components/MultiSelect';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport SavedDocumentsListFilterStyle\r\nfrom 'Commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/styles/SavedDocumentsListFilterStyle';\r\nimport { getValue } from 'Commons/helpers/utils/DataHelpers';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { getTenantApiConfig } from 'Commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/config/ApiRequests';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { DELIVERY_METHOD } from 'Generic/deliveryMethodDropdown/config/Constants';\r\nimport {\r\n DOCUMENT_STATUS,\r\n DOCUMENT_TYPE,\r\n SUB_DOCUMENT_TYPE,\r\n} from 'Commons/components/business/filtersAndSorts/components/savedDocumentsListFilter/config/Constants';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\n\r\nconst useStyles = makeStyles(SavedDocumentsListFilterStyle, { name: 'SavedDocumentsListFilterStyle' });\r\n\r\nconst SavedDocumentsListFilter = ({ formProps: { values, setFieldValue } = {}, selectedFacility }) => {\r\n const classes = useStyles();\r\n const tenantFilterKey = 'terms.tenantId';\r\n const selectedTenants = getValue(values, tenantFilterKey) || [];\r\n\r\n const tenantApiConfig = useMemo(() => getTenantApiConfig(selectedFacility), [selectedFacility]);\r\n\r\n const onSelectOrRemoveTenant = (selectedTenantsIds) => {\r\n setFieldValue(tenantFilterKey, Object.keys(selectedTenantsIds));\r\n };\r\n\r\n const deliveryMethodList = useConstructor(() => Object.values(DELIVERY_METHOD));\r\n const documentTypeList = useConstructor(() => Object.values(DOCUMENT_TYPE));\r\n const subDocumentTypeList = useConstructor(() => Object.values(SUB_DOCUMENT_TYPE));\r\n const documentStatusList = useConstructor(() => Object.values(DOCUMENT_STATUS));\r\n\r\n const tenantOptionFormatter = useCallback(({ data = [] } = {}) => data.map(({ name, ...tenant }) => (\r\n { label: getName(name), name, ...tenant }\r\n )), [selectedFacility]);\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.documentType}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.subDocumentType}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.deliveryMethod}\r\n \r\n \r\n {selectedFacility !== -1 && (\r\n getName(name)}\r\n getOptionProps={({ name }) => ({ label: getName(name) })}\r\n optionFormatter={tenantOptionFormatter}\r\n componentContainerLabel={localisable.tenants}\r\n containerProps={{ className: classes.tenantMultiSelect }}\r\n classes={{ chipWrapper: classes.chipWrapper }}\r\n PopdownProps={{ PopperProps: { modifiers: { preventOverflow: { enabled: false } } } }}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nSavedDocumentsListFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n selectedFacility: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n\r\nexport default memo(SavedDocumentsListFilter);\r\n","import { AutoSuggest } from 'Commons/components/business/autosuggest/components/AutoSuggest';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { MIGRATION_STAGES } from '../config/Constants';\r\nimport MigrationStagesStyle from '../styles/MigrationStagesStyle';\r\n\r\nconst useStyles = makeStyles(MigrationStagesStyle, { name: 'MigrationStagesStyle' });\r\n\r\nconst MigrationStagesFilter = () => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n Filter\r\n \r\n \r\n \r\n {localisable.migrationStage}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.accountSelection}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(MigrationStagesFilter);\r\n","import { makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport VehicleFilterStyle from '../styles/VehicleFilterStyle';\r\n\r\nconst useStyles = makeStyles(VehicleFilterStyle, { name: 'VehicleFilterStyle' });\r\n\r\nconst VehicleFilter = ({ formProps: { setFieldValue } = {} }) => {\r\n const classes = useStyles();\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.unitAssociation}\r\n \r\n {\r\n if (!value) setFieldValue('exists', {});\r\n }}\r\n />\r\n {\r\n if (!value) setFieldValue('notExists', {});\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nVehicleFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(VehicleFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { memo } from 'react';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst EmailAuditFilter = (props) => {\r\n const { formProps: { setFieldValue } = {} } = props;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nEmailAuditFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(EmailAuditFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { dateFormatter } from 'Commons/helpers/utils/DateTime';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport { SEARCH_DATE_FORMAT } from 'Commons/config/constants/Constants';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { FormSmartSearchableDropdown } from 'Generic/dropdown/components/SearchableDropdown';\r\nimport { MEDIUM_SD_HEIGHT } from 'Commons/components/generic/dropdown/config/Constants';\r\nimport { getOptionProps, labelFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport { isLiveData } from 'Commons/helpers/utils/Utils';\r\nimport { XS_6_MD_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { getApiConfig, getPaymentMethodApiConfig } from 'External/containers/manualForm/config/ApiRequests';\r\nimport { optionsChargeCategoryFormatter, optionsPaymentMethodFormatter } from 'External/containers/inventory/form/utils/Formatters';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport LedgerReviewFilterStyle from '../styles/LedgerReviewFilterStyle';\r\n\r\nconst useStyles = makeStyles(LedgerReviewFilterStyle, { name: 'LedgerReviewFilter' });\r\n\r\nconst LedgerReviewFilter = ({ formProps: { setFieldValue } = {}, unitList, entityId }) => {\r\n const classes = useStyles();\r\n const {\r\n rangeFilterClasses,\r\n paymentMethodApiConfig,\r\n chargeCategoryApiConfig,\r\n } = useConstructor(() => ({\r\n rangeFilterClasses: { clearBalance: classes.justifyRight },\r\n paymentMethodApiConfig: getPaymentMethodApiConfig(entityId),\r\n chargeCategoryApiConfig: getApiConfig(entityId),\r\n }));\r\n\r\n const onChargeCategoryDropdownChange = (_, value) => {\r\n if (!value) {\r\n setFieldValue('terms.chargeCategoryId', null);\r\n }\r\n };\r\n\r\n const onPaymentMethodDropdownChange = (_, value) => {\r\n if (!value) {\r\n setFieldValue('terms.paymentMethodId', null);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.unit}\r\n \r\n \r\n \r\n {localisable.createdDate}\r\n \r\n setFieldValue('range.createdDate.to', dateFormatter(date, SEARCH_DATE_FORMAT))}\r\n />\r\n {\r\n isLiveData()\r\n && (\r\n <>\r\n \r\n {localisable.chargeCategory}\r\n \r\n \r\n \r\n {localisable.paymentMethod}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nLedgerReviewFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n unitList: PropTypes.array,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nexport default memo(LedgerReviewFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { FACILITY_LICENSE_STATUS } from 'Commons/config/constants/Constants';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { SOFTWARE_ADOPTION_STATUS } from 'Internal/containers/facility/form/Constants';\r\nimport FacilityFilterStyle from '../styles/facilityFilterStyle';\r\n\r\nconst useStyles = makeStyles(FacilityFilterStyle, { name: 'FacilityFilterStyle' });\r\n\r\nconst FacilityFilter = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n {localisable.softwareAdoptionStatusHeading}\r\n \r\n \r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default memo(FacilityFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { BATCH_PAYMENT_TASKS } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { DATE_FIELD_WIDTH, MOBILE_DATE_FIELD_WIDTH } from '../../leadFilter/config/Constants';\r\nimport CreditCardBatchesFilterStyle from '../styles/CreditCardBatchesFilterStyle';\r\n\r\n\r\nconst useStyles = makeStyles(CreditCardBatchesFilterStyle, { name: 'CreditCardBatchesFilter' });\r\n\r\nconst CreditCardBatchesFilter = ({ formProps: { setFieldValue } }) => {\r\n const onClearDate = () => { setFieldValue('range.createdDate', {}); };\r\n const classes = useStyles();\r\n const { labelWithIconClass } = useConstructor(() => ({ labelWithIconClass: { labelWithIcon: classes.autoWidth } }));\r\n\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n return (\r\n <>\r\n \r\n {localisable.filters}\r\n \r\n \r\n {localisable.selectMode}\r\n \r\n \r\n \r\n {localisable.batchCreatedBetween}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCreditCardBatchesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(CreditCardBatchesFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { memo } from 'react';\r\nimport { RadioGroup } from 'Generic/radiogroup/components/RadioGroup';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { BATCH_PAYMENT_MODE } from 'Commons/config/constants/Constants';\r\nimport { BATCH_PAYMENT_FILTER_TYPE } from '../config/Constants';\r\nimport CreateBatchStyle from '../styles/createBatchStyle';\r\n\r\nconst useStyles = makeStyles(CreateBatchStyle, { name: 'CreateBatchFilter' });\r\n\r\n\r\nconst CreateBatchFilter = ({ mode, formProps: { setFieldValue } = {} }) => {\r\n const onChange = (_, value) => {\r\n if (value === BATCH_PAYMENT_FILTER_TYPE.Autopay_Enabled_Tenants.value) {\r\n setFieldValue('terms.autoPayEnabled', [true]);\r\n setFieldValue(mode === BATCH_PAYMENT_MODE.CREDIT_CARD ? 'exists.token' : 'exists.achPpd', undefined);\r\n } else {\r\n setFieldValue(mode === BATCH_PAYMENT_MODE.CREDIT_CARD ? 'exists.token' : 'exists.achPpd', [true]);\r\n setFieldValue('terms.autoPayEnabled', undefined);\r\n }\r\n };\r\n\r\n const filterRadioList = useConstructor(() => Object.values(BATCH_PAYMENT_FILTER_TYPE).filter(({ value }) => value !== (mode === BATCH_PAYMENT_MODE.ACH\r\n ? BATCH_PAYMENT_FILTER_TYPE.Saved_Cards_With_Balance_Due.value\r\n : BATCH_PAYMENT_FILTER_TYPE.Saved_Accounts_With_Balance_Due.value)));\r\n\r\n const classes = useStyles();\r\n\r\n\r\n return (\r\n <>\r\n \r\n {localisable.paymentPreference}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCreateBatchFilter.propTypes = { formProps: PropTypes.object, mode: PropTypes.string };\r\n\r\nexport default memo(CreateBatchFilter);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { memo } from 'react';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst SavedDocumentFilter = ({ formProps: { setFieldValue } = {} }) => (\r\n <>\r\n \r\n \r\n);\r\n\r\nSavedDocumentFilter.propTypes = { formProps: PropTypes.object };\r\n\r\n\r\nexport default memo(SavedDocumentFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { GATE_VENDOR } from 'External/containers/facilityConfiguration/config/GateConfig';\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { FACILITY_TYPE } from '../config/Constants';\r\nimport DelinquencyTrackingFilterStyle from '../styles/delinquencyTrackingOverviewFilterStyle';\r\n\r\n\r\nconst useStyles = makeStyles(DelinquencyTrackingFilterStyle, { name: 'DelinquencyTrackingFilterStyle' });\r\n\r\nconst DelinquencyTrackingOverviewFilter = ({\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { gate: { id: gateIds = EMPTY_LIST } = {} } = {} } = {},\r\n } = {},\r\n}) => {\r\n const classes = useStyles();\r\n const gateConfigList = useConstructor(() => {\r\n const configs = [];\r\n Object.values(GATE_VENDOR).forEach((value = {}, id) => {\r\n const { value: vendor } = value || {};\r\n if (vendor !== 'NONE') configs.push({ id, ...value });\r\n });\r\n return configs;\r\n });\r\n\r\n const onSelectOrRemoveGateType = (selectedGates) => {\r\n const selectedGateValues = Object.values(selectedGates).map(({ value }) => value);\r\n setFieldValue('terms.gateVendors', selectedGateValues);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.facilityType}\r\n \r\n \r\n \r\n {localisable.gates}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingOverviewFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(DelinquencyTrackingOverviewFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useMemo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { DELINQUENCY_STATUS, EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { getLateEventApiConfig } from '../config/ApiRequests';\r\nimport DelinquencyTrackingLateEventFilterStyle from '../styles/DelinquencyTrackingLateEventFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\nconst useStyles = makeStyles(\r\n DelinquencyTrackingLateEventFilterStyle, { name: 'DelinquencyTrackingLateEventFilterStyle' },\r\n);\r\n\r\nconst DelinquencyTrackingLateEventFilter = ({\r\n entityId, accountId, extraFilters, formProps = {},\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { lateEventConfigId = EMPTY_LIST } = {} } = {},\r\n } = {},\r\n}) => {\r\n const classes = useStyles();\r\n const lateEventApiConfig = useMemo(\r\n () => getLateEventApiConfig(entityId, accountId, extraFilters), [entityId, accountId],\r\n );\r\n const ALLOWED_LATE_EVENT_STATUS = useConstructor(() => [\r\n {\r\n label: 'Pending',\r\n value: DELINQUENCY_STATUS.Active.value,\r\n },\r\n DELINQUENCY_STATUS.Processed,\r\n DELINQUENCY_STATUS.Skipped,\r\n DELINQUENCY_STATUS.Waived,\r\n ]);\r\n\r\n const onSelectOrRemoveGateType = (selectedUnitTypes) => {\r\n setFieldValue('terms.lateEventConfigId', Object.keys(selectedUnitTypes));\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.selectEvent}\r\n \r\n optionsFormatter(options, null, 'Late_Event')}\r\n onRemove={onSelectOrRemoveGateType}\r\n initiallySelectedValues={lateEventConfigId}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingLateEventFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n accountId: PropTypes.string,\r\n extraFilters: PropTypes.object,\r\n};\r\n\r\nDelinquencyTrackingLateEventFilter.defaultProps = {\r\n entityId: '',\r\n accountId: '',\r\n extraFilters: {},\r\n};\r\n\r\nexport default memo(DelinquencyTrackingLateEventFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { DELINQUENCY_STATUS, LOCKOUT_TYPE } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport DelinquencyTrackingLockoutEventFilterStyle from '../styles/DelinquencyTrackingLockoutEventFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst useStyles = makeStyles(\r\n DelinquencyTrackingLockoutEventFilterStyle, { name: 'DelinquencyTrackingLockoutEventFilterStyle' },\r\n);\r\n\r\nconst DelinquencyTrackingLockoutEventFilter = ({ formProps: { setFieldValue } = {}, formProps = {} }) => {\r\n const classes = useStyles();\r\n const STATUS = useConstructor(() => [\r\n {\r\n label: 'Pending',\r\n value: DELINQUENCY_STATUS.Active.value,\r\n },\r\n {\r\n label: 'Applied',\r\n value: DELINQUENCY_STATUS.Processed.value,\r\n },\r\n ]);\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n {localisable.events}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingLockoutEventFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(DelinquencyTrackingLockoutEventFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useMemo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport { STATUS } from '../config/Constants';\r\nimport { getLateEventApiConfig } from '../config/ApiRequests';\r\nimport DelinquencyTrackingSchedulerFilterStyle from '../styles/DelinquencyTrackingSchedulerFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst useStyles = makeStyles(\r\n DelinquencyTrackingSchedulerFilterStyle, { name: 'DelinquencyTrackingSchedulerFilterStyle' },\r\n);\r\n\r\nconst DelinquencyTrackingSchedulerFilter = ({\r\n entityId = '', accountId = '', formProps = {},\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { lateEventConfigId = EMPTY_LIST } = {} } = {},\r\n } = {},\r\n}) => {\r\n const classes = useStyles();\r\n const lateEventApiConfig = useMemo(\r\n () => getLateEventApiConfig(entityId, accountId), [entityId, accountId],\r\n );\r\n const onSelectOrRemoveGateType = (selectedUnitTypes) => {\r\n setFieldValue('terms.lateEventConfigId', Object.keys(selectedUnitTypes));\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.facilityType}\r\n \r\n \r\n \r\n \r\n {localisable.selectEvent}\r\n \r\n optionsFormatter(options, null, 'Late_Event')}\r\n onRemove={onSelectOrRemoveGateType}\r\n initiallySelectedValues={lateEventConfigId}\r\n />\r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingSchedulerFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n accountId: PropTypes.string,\r\n};\r\n\r\nDelinquencyTrackingSchedulerFilter.defaultProps = { entityId: '' };\r\n\r\nexport default memo(DelinquencyTrackingSchedulerFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { LOCKOUT_TYPE } from 'Commons/config/constants/Constants';\r\nimport DelinquencyTrackingWrongEntriesFilterStyle from '../styles/DelinquencyTrackingWrongEntriesFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst useStyles = makeStyles(DelinquencyTrackingWrongEntriesFilterStyle, { name: 'DelinquencyTrackingWrongEntriesFilterStyle' });\r\n\r\nconst DelinquencyTrackingWrongEntriesFilter = ({ formProps: { setFieldValue } = {} }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n {localisable.events}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingWrongEntriesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\n\r\nexport default memo(DelinquencyTrackingWrongEntriesFilter);\r\n","import { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport { getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { CONFIGURATION_TYPE, EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport JournalConfigurationChangesFilterStyle from '../styles/journalConfigurationChangesFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\n\r\nconst useStyles = makeStyles(JournalConfigurationChangesFilterStyle, { name: 'JournalConfigurationChangesFilter' });\r\n\r\nconst JournalConfigurationChangesFilter = ({\r\n formProps,\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { category: configurationIdList = EMPTY_LIST } = {} },\r\n } = {},\r\n}) => {\r\n const classes = useStyles();\r\n const configList = useConstructor(() => Object.values(CONFIGURATION_TYPE).filter(\r\n ({ value }) => value !== CONFIGURATION_TYPE.Retail_Sale_Configuration.value,\r\n ).map(({ value = '', ...restConfig } = {}) => ({ id: value.toLowerCase(), ...restConfig, value: value.toLowerCase() })));\r\n\r\n const onSelectOrRemoveConfigType = (selectedConfigs) => {\r\n const selectedConfigValues = Object.keys(selectedConfigs);\r\n setFieldValue('terms.category', selectedConfigValues);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {localisable.searchConfiguration}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nJournalConfigurationChangesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nJournalConfigurationChangesFilter.defaultProps = { formProps: {} };\r\n\r\nexport default memo(JournalConfigurationChangesFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useCallback, useMemo } from 'react';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport JournalLockoutEventFilterStyle from '../styles/JournalLockoutEventFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport { getTenantApiConfig } from '../config/ApiRequests';\r\nimport { EVENTS_TYPE_LIST, GATE_ACCESS_TYPE } from '../config/Constants';\r\n\r\n\r\nconst useStyles = makeStyles(\r\n JournalLockoutEventFilterStyle, { name: 'JournalLockoutEventFilter' },\r\n);\r\n\r\nconst JournalLockoutEventFilter = ({\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { changeType: selectedEventList = EMPTY_LIST, metaInfo__tenantId: selectedTenants = EMPTY_LIST } = {} },\r\n } = {},\r\n formProps, entityId: selectedFacility,\r\n}) => {\r\n const classes = useStyles();\r\n const tenantFilterKey = 'terms.metaInfo__tenantId';\r\n\r\n const tenantApiConfig = useMemo(() => getTenantApiConfig(selectedFacility), [selectedFacility]);\r\n\r\n const onSelectOrRemoveTenant = (selectedTenantsIds) => {\r\n setFieldValue(tenantFilterKey, Object.keys(selectedTenantsIds));\r\n };\r\n const tenantOptionFormatter = useCallback(({ data = [] } = {}) => data.map(({ name, ...tenant }) => (\r\n { label: getName(name), name, ...tenant }\r\n )), [selectedFacility]);\r\n\r\n const onChangeEvent = (_, selectedEvents = []) => {\r\n let events = [...selectedEvents];\r\n if (selectedEvents.includes(GATE_ACCESS_TYPE.Ledger_Gate_Access.value)) {\r\n if (!selectedEvents.includes(GATE_ACCESS_TYPE.Unit_Gate_Access.value)) {\r\n events = [...events, GATE_ACCESS_TYPE.Unit_Gate_Access.value];\r\n }\r\n } else {\r\n events = events.filter(val => (val !== GATE_ACCESS_TYPE.Ledger_Gate_Access.value || val !== GATE_ACCESS_TYPE.Unit_Gate_Access.value));\r\n }\r\n setFieldValue('terms.changeType', events);\r\n };\r\n return (\r\n <>\r\n \r\n {localisable.events}\r\n \r\n \r\n \r\n getName(name)}\r\n getOptionProps={({ name }) => ({ label: getName(name) })}\r\n optionFormatter={tenantOptionFormatter}\r\n componentContainerLabel={localisable.tenants}\r\n />\r\n \r\n );\r\n};\r\n\r\nJournalLockoutEventFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nJournalLockoutEventFilter.defaultProps = { formProps: {} };\r\n\r\nexport default memo(JournalLockoutEventFilter);\r\n","import { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { memo, useCallback, useMemo } from 'react';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { DROPDOWN_MAX_HEIGHT, EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport JournalUserRoleFilterStyle from '../styles/JournalUserRoleFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport { getUserRoleApiConfig } from '../config/ApiRequests';\r\nimport { USER_ROLE_CATEGORY_TYPE } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(\r\n JournalUserRoleFilterStyle, { name: 'JournalUserRoleFilter' },\r\n);\r\n\r\nconst JournalUserRoleFilter = ({\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { categodyId: selectedUserRoles = EMPTY_LIST, metaInfo__category: selecteUserRoleCategories = EMPTY_LIST } = {} },\r\n } = {},\r\n formProps, entityId: selectedAccountId,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const userRoleApiConfig = useMemo(() => getUserRoleApiConfig(selectedAccountId), [selectedAccountId]);\r\n\r\n const userRoleCategoryList = useConstructor(() => Object.values(USER_ROLE_CATEGORY_TYPE).map((category = {}) => {\r\n const { value = '' } = category;\r\n return { id: value, ...category, value };\r\n }));\r\n\r\n const userRoleOptionFormatter = useCallback(({ data = [] } = {}) => data.map(({ name, ...account }) => (\r\n { label: name, value: name, ...account }\r\n )), [selectedAccountId]);\r\n\r\n\r\n const onSelectOrRemoveUserRole = (selectedUserRoleIds) => {\r\n setFieldValue('terms.categoryId', Object.keys(selectedUserRoleIds));\r\n };\r\n\r\n const onSelectOrRemoveCategoryType = (selectedCategories) => {\r\n const selectedConfigValues = Object.values(selectedCategories).map(({ value }) => value);\r\n setFieldValue('terms.metaInfo__category', selectedConfigValues);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {localisable.selectUserRole}\r\n \r\n \r\n \r\n {localisable.selectCategory}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nJournalUserRoleFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nJournalUserRoleFilter.defaultProps = { formProps: {} };\r\n\r\nexport default memo(JournalUserRoleFilter);\r\n","import { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { memo, useCallback, useMemo } from 'react';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport { labelFormatter } from 'Commons/helpers/utils/Formatter';\r\nimport { getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport JournalUserManagementFilterStyle from '../styles/JournalUserManagementFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\nimport { getUserApiConfig } from '../config/ApiRequests';\r\n\r\nconst useStyles = makeStyles(\r\n JournalUserManagementFilterStyle, { name: 'JournalUserRoleFilter' },\r\n);\r\n\r\nconst JournalUserManagementFilter = ({\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { metaInfo__user_id: selectedUserIds = EMPTY_LIST } = {} },\r\n } = {},\r\n formProps, entityId: selectedAccountId,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const userApiConfig = useMemo(() => getUserApiConfig(selectedAccountId), [selectedAccountId]);\r\n\r\n const onSelectOrRemoveUser = (selectedUsersIds) => {\r\n setFieldValue('terms.metaInfo__user_id', Object.keys(selectedUsersIds));\r\n };\r\n\r\n const userOptionFormatter = useCallback(({ data = [] } = {}) => data.map(({ firstName, lastName, ...user }) => (\r\n { label: getName({ firstName, lastName }), ...user }\r\n )), [selectedAccountId]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {localisable.selectUser}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nJournalUserManagementFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nJournalUserManagementFilter.defaultProps = { formProps: {} };\r\n\r\nexport default memo(JournalUserManagementFilter);\r\n","import { FormCheckboxGroup } from 'Generic/checkboxgroup/components/CheckBoxGroup';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo, useEffect, useMemo, useState } from 'react';\r\nimport { DELINQUENCY_STATUS, EMPTY_LIST } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { SmartSearchableDropdown } from 'Commons/components/generic/dropdown/components/SearchableDropdown';\r\nimport { getTenantApiConfig } from '../config/ApiRequests';\r\nimport JournalLateEventFilterStyle from '../styles/JournalLateEventFilterStyle';\r\nimport RangeFilter from '../../rangeFilter/components/RangeFilter';\r\n\r\nconst useStyles = makeStyles(\r\n JournalLateEventFilterStyle, { name: 'DelinquencyTrackingLateEventFilter' },\r\n);\r\n\r\nconst DelinquencyTrackingLateEventFilter = (props) => {\r\n const {\r\n entityId: selectedFacility, formProps,\r\n formProps: {\r\n setFieldValue,\r\n values: { terms: { ledgerId: selectedTenants = EMPTY_LIST } = {} } = {},\r\n } = {},\r\n } = props;\r\n const classes = useStyles();\r\n const tenantApiConfig = useMemo(() => getTenantApiConfig(selectedFacility), [selectedFacility]);\r\n const ALLOWED_LATE_EVENT_STATUS = useConstructor(() => [DELINQUENCY_STATUS.Waived]);\r\n // TODO: Add support for Reversed and Deleted\r\n\r\n const [selectedTenant, setSelectedTenant] = useState('');\r\n\r\n useEffect(() => {\r\n if (!selectedTenants.length) setSelectedTenant('');\r\n }, [selectedTenants.length]);\r\n\r\n const onSelectTenant = (_, tenantId, tenantDetails = {}) => {\r\n const { ledger = [] } = tenantDetails;\r\n const ledgerIds = ledger.map(({ id }) => id);\r\n setFieldValue('terms.ledgerId', ledgerIds);\r\n setSelectedTenant(tenantId);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {localisable.status}\r\n \r\n \r\n \r\n \r\n {localisable.selectTenant}\r\n \r\n getName(name)}\r\n getOptionProps={({ name }) => ({ label: getName(name) })}\r\n apiConfig={tenantApiConfig}\r\n GridProps={XS_6}\r\n />\r\n \r\n );\r\n};\r\n\r\nDelinquencyTrackingLateEventFilter.propTypes = {\r\n formProps: PropTypes.object,\r\n entityId: PropTypes.string,\r\n};\r\n\r\nDelinquencyTrackingLateEventFilter.defaultProps = { entityId: '', formProps: {} };\r\n\r\nexport default memo(DelinquencyTrackingLateEventFilter);\r\n","import { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { memo } from 'react';\r\nimport { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { DATE_FIELD_WIDTH, MOBILE_DATE_FIELD_WIDTH } from '../../leadFilter/config/Constants';\r\nimport CreditCardBatchesFilterStyle from '../../creditCardBatchesFilter/styles/CreditCardBatchesFilterStyle';\r\n\r\n\r\nconst useStyles = makeStyles(CreditCardBatchesFilterStyle, { name: 'CreditCardBatchesFilter' });\r\n\r\nconst OtherBatchesFilter = ({ formProps: { setFieldValue } }) => {\r\n const onClearDate = () => { setFieldValue('range.createdDate', {}); };\r\n const classes = useStyles();\r\n const { labelWithIconClass } = useConstructor(() => ({ labelWithIconClass: { labelWithIcon: classes.autoWidth } }));\r\n\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n return (\r\n <>\r\n \r\n {localisable.filters}\r\n \r\n \r\n {localisable.batchCreatedBetween}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.clearDate}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nOtherBatchesFilter.propTypes = { formProps: PropTypes.object };\r\n\r\nexport default memo(OtherBatchesFilter);\r\n","import { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport smartListActionItemsPanelStyle from 'Commons/components/business/smartlistActionItemsPanel/styles/SmartListActionItemsPanelStyle';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport ActionItem from 'Commons/components/business/smartlistActionItemsPanel/components/ActionItem';\r\nimport { memo } from 'react';\r\n\r\nconst useStyles = makeStyles(smartListActionItemsPanelStyle, { name: 'SmartListActionItemsPanel' });\r\n\r\nconst SmartListActionItemsPanel = (props) => {\r\n const {\r\n showBackToDashBoardActionItem = false,\r\n onBackToDashboardClick = EMPTY_FUNC,\r\n actionItemsConfig = [],\r\n containerProps,\r\n actionItemProps,\r\n backToDashboardActionItemProps,\r\n } = props;\r\n const classes = useStyles();\r\n return (\r\n \r\n {!!actionItemsConfig.length && actionItemsConfig.map((config) => {\r\n const {\r\n key,\r\n isVisible = true,\r\n ...remainingConfig\r\n } = config;\r\n return isVisible\r\n ? (\r\n \r\n \r\n \r\n ) : null;\r\n })\r\n }\r\n {showBackToDashBoardActionItem && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nSmartListActionItemsPanel.propTypes = {\r\n showBackToDashBoardActionItem: PropTypes.bool,\r\n actionItemsConfig: PropTypes.array,\r\n onBackToDashboardClick: PropTypes.func,\r\n containerProps: PropTypes.object,\r\n actionItemProps: PropTypes.object,\r\n backToDashboardActionItemProps: PropTypes.object,\r\n};\r\n\r\nSmartListActionItemsPanel.defaultProps = {\r\n showBackToDashBoardActionItem: false,\r\n actionItemsConfig: [],\r\n onBackToDashboardClick: () => {},\r\n};\r\n\r\nexport default memo(SmartListActionItemsPanel);\r\n","import { useEffect, useMemo, useRef, useState } from 'react';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { SM_5, SM_6_XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport {\r\n IS_MAX_LENGTH_20, IS_MAX_LENGTH_10, IS_MAX_LENGTH_50,\r\n IS_MIN_LENGTH_3, IS_MAX_LENGTH_5, IS_POSITIVE_NUMERIC,\r\n}\r\nfrom 'Commons/config/constants/Validators';\r\nimport { isValidCardNumber } from 'Commons/helpers/utils/validator/Validator';\r\nimport { Button, Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { removeWhiteSpaceAndSpecialChars } from 'Commons/helpers/utils/Utils';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport paymentMethodStyle from '../styles/PaymentMethodStyle';\r\n\r\nconst useStyles = makeStyles(paymentMethodStyle, { name: 'paymentMethodStyle' });\r\n\r\nconst LeftLabel = ({ children, variant, ...props }) => (\r\n {children}\r\n);\r\n\r\nLeftLabel.propTypes = { children: PropTypes.node, variant: PropTypes.string };\r\nLeftLabel.defaultProps = { variant: 'caption' };\r\n\r\n// TODO: Change the name to Card, since we'll be supporting Debit Card in future\r\nconst CreditCard = ({\r\n ledgerIndex, disabled, baseFormFieldName, needCVV, isInEditMode, skipFieldsValidation,\r\n tenantInfo: { name: { firstName, lastName } = {}, address: { line1, zipCode } = {} } = {},\r\n formProps: {\r\n setFieldValue,\r\n initialValues: { cardInfo: { expirationDate: { month: initialMonth, year: initialYear } = {} } = {} } = {},\r\n values: { cardInfo: { expirationDate: { month: editedMonth, year: editedYear } = {} } = {} } = {},\r\n touched: {\r\n cardInfo: {\r\n cvvOrPin: cvvTouched = false,\r\n expirationDate: { month: monthTouched = false, year: yearTouched = false } = {},\r\n } = {},\r\n } = {},\r\n errors: {\r\n cardInfo: {\r\n cvvOrPin: cvvErrorText = '',\r\n expirationDate: { month: monthErrorText = '', year: yearErrorText = '' } = {},\r\n } = {},\r\n },\r\n } = {},\r\n formProps,\r\n ...props\r\n}) => {\r\n const classes = useStyles(props);\r\n\r\n const expirationYearRef = useRef();\r\n const currentExpirationDate = useRef({ monthOfExpiration: editedMonth, yearOfExpiration: editedYear });\r\n const { current: { monthOfExpiration = '', yearOfExpiration = '' } = {} } = currentExpirationDate;\r\n\r\n const [{ cvvError, monthError, yearError }, setErrorState] = useState(\r\n { cvvError: '', monthError: '', yearError: '' },\r\n );\r\n\r\n const hideError = useMemo(() => baseFormFieldName === 'cardInfo' && editedMonth === initialMonth\r\n && editedYear === initialYear,\r\n [editedYear, editedMonth, baseFormFieldName]);\r\n\r\n // const dateValidator = useMemo(() => (\r\n // baseFormFieldName === 'cardInfo'\r\n // && (!skipFieldsValidation || (skipFieldsValidation && editedMonth && editedYear))\r\n // ? { isExpiryLessThanToday: { value: { month: monthOfExpiration, year: yearOfExpiration } } }\r\n // : {}\r\n // ), [monthOfExpiration, yearOfExpiration, baseFormFieldName]);\r\n\r\n const {\r\n expirationYearInputProps, inputClasses, cardNumberValidator, formFieldPrefix,\r\n zipCodeInputProps, cvvValidator,\r\n } = useConstructor(() => {\r\n const inputClassesToApply = { className: classes.largeFont };\r\n return ({\r\n inputClasses: inputClassesToApply,\r\n cardNumberValidator: { ...isInEditMode ? { ...IS_MAX_LENGTH_20, isValidCardNumber } : {} },\r\n formFieldPrefix: baseFormFieldName || `ledger.${ledgerIndex}.financials.cardInfo`,\r\n expirationYearInputProps: { ...inputClassesToApply, ref: expirationYearRef },\r\n zipCodeInputProps: { className: classes.leftAlignText },\r\n cvvValidator: { ...IS_MAX_LENGTH_5, ...IS_MIN_LENGTH_3, ...IS_POSITIVE_NUMERIC },\r\n });\r\n });\r\n\r\n useEffect(() => {\r\n setErrorState({\r\n monthError: monthTouched ? monthErrorText : undefined,\r\n yearError: yearTouched ? yearErrorText : undefined,\r\n cvvError: cvvTouched || (!cvvTouched && cvvErrorText !== localisable.isRequired)\r\n ? cvvErrorText : undefined,\r\n });\r\n }, [cvvErrorText, monthErrorText, yearErrorText]);\r\n\r\n const onChangeExpirationMonth = (_, date) => {\r\n currentExpirationDate.current = { monthOfExpiration: Number(date), yearOfExpiration };\r\n if (date.length === 2) {\r\n expirationYearRef.current.focus();\r\n }\r\n };\r\n\r\n const onChangeExpirationYear = (_, date) => {\r\n currentExpirationDate.current = { yearOfExpiration: Number(`20${date}`), monthOfExpiration };\r\n expirationYearRef.current.focus();\r\n };\r\n\r\n const onChangeCardNumber = (_, value) => {\r\n const trimmedCardNumber = removeWhiteSpaceAndSpecialChars(value);\r\n setFieldValue(`${formFieldPrefix}.maskedCardNumber`, trimmedCardNumber);\r\n };\r\n\r\n const setBillingDetails = () => {\r\n const tenantName = firstName ? `${firstName} ${lastName}` : lastName;\r\n setFieldValue(`${formFieldPrefix}.billingInfo.name`, tenantName);\r\n if (line1) {\r\n setFieldValue(`${formFieldPrefix}.billingInfo.address.line1`, line1);\r\n }\r\n if (zipCode) {\r\n setFieldValue(`${formFieldPrefix}.billingInfo.address.zipCode`, zipCode);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n\r\n \r\n \r\n \r\n {localisable.creditCardExpiry} }\r\n }\r\n requiredPath=\"ledger.financials.cardInfo.expirationDate\"\r\n disabled={disabled}\r\n addon={{ end: null }}\r\n noGrid\r\n hideErrorText\r\n width={32}\r\n className={classes.placeholderAlign}\r\n containerClassName={classes.autoWidth}\r\n inputProps={inputClasses}\r\n FormControlProps={{ fullWidth: false }}\r\n onChange={onChangeExpirationMonth}\r\n />\r\n
\r\n \r\n \r\n {\r\n (!hideError && (monthError || yearError))\r\n && (\r\n \r\n \r\n {monthError || yearError}\r\n \r\n \r\n )\r\n }\r\n \r\n {\r\n needCVV\r\n && (\r\n {localisable.creditCardCvv} }\r\n }\r\n requiredPath=\"ledger.financials.cardInfo.cvvOrPin\"\r\n disabled={disabled}\r\n autoComplete=\"new-password\"\r\n type=\"number\"\r\n formVariant={VARIANT.INLINE}\r\n containerClassName={classes.autoWidth}\r\n validate={cvvValidator}\r\n hideErrorText\r\n noGrid\r\n width={60}\r\n inputProps={inputClasses}\r\n FormControlProps={{ fullWidth: false }}\r\n />\r\n )\r\n }\r\n {\r\n (needCVV && cvvError && !monthError && !yearError)\r\n && (\r\n \r\n \r\n \r\n {cvvError}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n {\r\n isInEditMode\r\n && (\r\n \r\n {localisable.useTenantAddress}\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCreditCard.propTypes = {\r\n needCVV: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n isInEditMode: PropTypes.bool,\r\n ledgerIndex: PropTypes.number,\r\n baseFormFieldName: PropTypes.string,\r\n skipFieldsValidation: PropTypes.bool,\r\n formProps: PropTypes.object.isRequired,\r\n tenantInfo: PropTypes.object.isRequired,\r\n};\r\n\r\nCreditCard.defaultProps = { ledgerIndex: 0, skipFieldsValidation: false };\r\n\r\nexport default CreditCard;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { XS_12 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport HelperText from 'Generic/helpertext/HelperText';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { IS_INTEGER, IS_MAX_LENGTH_17, IS_MAX_LENGTH_30, IS_MAX_LENGTH_9 }\r\nfrom 'Commons/config/constants/Validators';\r\nimport paymentMethodStyle from '../styles/PaymentMethodStyle';\r\n\r\nconst useStyles = makeStyles(paymentMethodStyle, { name: 'Ach' });\r\n\r\nconst ACH = ({ baseFormFieldName, ledgerIndex, disabled, classes: classesProp, isInEditMode }) => {\r\n const classes = useStyles({ classes: classesProp });\r\n\r\n const { formFieldPrefix, accountNumberValidator, routingNumberValidator } = useConstructor(() => ({\r\n formFieldPrefix: baseFormFieldName || `ledger.${ledgerIndex}.financials.achPpd`,\r\n accountNumberValidator: { ...isInEditMode ? { ...IS_INTEGER, ...IS_MAX_LENGTH_17 } : {} },\r\n routingNumberValidator: { ...IS_INTEGER, ...IS_MAX_LENGTH_9 },\r\n }));\r\n\r\n return (\r\n <>\r\n \r\n \r\n {localisable.achAccountNumber}}\r\n className={classes.numberFields}\r\n fullWidth\r\n formVariant={VARIANT.INLINE}\r\n GridProps={XS_12}\r\n disabled={disabled}\r\n validate={accountNumberValidator}\r\n />\r\n {localisable.achRoutingNumber}}\r\n className={classes.numberFields}\r\n GridProps={XS_12}\r\n formVariant={VARIANT.INLINE}\r\n disabled={disabled}\r\n fullWidth\r\n validate={routingNumberValidator}\r\n />\r\n {localisable.achBankName}}\r\n GridProps={XS_12}\r\n formVariant={VARIANT.INLINE}\r\n disabled={disabled}\r\n validate={IS_MAX_LENGTH_30}\r\n fullWidth\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nACH.propTypes = {\r\n ledgerIndex: PropTypes.number,\r\n disabled: PropTypes.bool,\r\n classes: PropTypes.object,\r\n baseFormFieldName: PropTypes.string,\r\n isInEditMode: PropTypes.bool,\r\n};\r\n\r\nACH.defaultProps = { ledgerIndex: 0 };\r\n\r\nexport default React.memo(ACH);\r\n","import { useEffect, memo, useRef } from 'react';\r\nimport { makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { DEMO_FACILITY_ID_LIST, EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { convertToNumber, isProduction } from 'Commons/helpers/utils/Utils';\r\nimport {\r\n ACCOUNT_TOKEN, HOSTED_FORM_CARD_ENTRY_CONTEXT, HOSTED_FORM_DATA, HOSTED_FORM_ID, HOSTED_FORM_OPERATION,\r\n HOSTED_FORM_PAYMENT_SOURCE_TYPE, HOSTED_PAYMENTS_RESPONSE, TRANSACTION_ID,\r\n} from '../config/Constants';\r\nimport syrapayHostedFormStyle from '../styles/SyrapayHostedFormStyle';\r\n\r\nconst useStyle = makeStyles(syrapayHostedFormStyle, { name: 'SyrapayHostedForm' });\r\n\r\n/*\r\n This component opens up the Hosted Form to accept the payments. It is built as recommended by the Fullsteam docs.\r\n It needs Jquery to run and some hidden inputs to get the data back from the hosted form.\r\n*/\r\nconst SyrapayHostedForm = ({\r\n paymentAmount, shouldSaveCard, shouldUseTenantAddress, tokenOnly, formId, onSubmit,\r\n tenantInfo: { name: { firstName, lastName } = {}, address: { line1, zipCode } = {} } = {},\r\n authenticationKey, disableFormSubmit, closeHostedForm, facilityId,\r\n}) => {\r\n const classes = useStyle();\r\n const submitButtonRef = useRef(null);\r\n const isCaptureEnabled = useRef(false);\r\n\r\n let onCompletion = () => {\r\n disableFormSubmit(false);\r\n const transactionId = document.getElementById(TRANSACTION_ID).value;\r\n const token = document.getElementById(ACCOUNT_TOKEN).value;\r\n const response = document.getElementById(HOSTED_PAYMENTS_RESPONSE).value;\r\n const hostedFormScriptElement = document.getElementById(authenticationKey);\r\n if (hostedFormScriptElement && (transactionId || token || response) && isCaptureEnabled.current) {\r\n isCaptureEnabled.current = false;\r\n onSubmit({ transactionId, token, response });\r\n }\r\n };\r\n\r\n const onLoadFullSteamForm = () => {\r\n // eslint-disable-next-line no-undef\r\n setupFullsteamHostedPayments({\r\n showZip: true,\r\n authenticationKey,\r\n showAddress1: true,\r\n formId,\r\n showNameOnAccount: true,\r\n showCountry: true,\r\n includeToken: shouldSaveCard || tokenOnly,\r\n completionCallback: (...args) => onCompletion(...args),\r\n ...!tokenOnly && { paymentAmount },\r\n cancellationCallback: closeHostedForm,\r\n paymentSourceType: HOSTED_FORM_PAYMENT_SOURCE_TYPE.CARD,\r\n cardEntryContext: HOSTED_FORM_CARD_ENTRY_CONTEXT.WEB_MERCHANT_ENTERED_PHONE_ORDER,\r\n operationType: tokenOnly ? HOSTED_FORM_OPERATION.TOKEN : HOSTED_FORM_OPERATION.AUTHORIZATION,\r\n ...shouldUseTenantAddress\r\n && {\r\n nameOnAccount: firstName ? `${firstName} ${lastName}` : lastName,\r\n ...line1 && { address1: line1 },\r\n ...zipCode && { zip: zipCode },\r\n },\r\n });\r\n submitButtonRef.current.click(); // Programmatically clicking the hidden submit button to open the hosted form.\r\n };\r\n\r\n const getHostedFormScriptSrc = () => {\r\n if (isProduction()) {\r\n return DEMO_FACILITY_ID_LIST.includes(convertToNumber(facilityId))\r\n ? process.env.TEST_HOSTED_FORM_URL : process.env.HOSTED_FORM_URL;\r\n }\r\n return process.env.HOSTED_FORM_URL;\r\n };\r\n\r\n const addJQueryScriptOfHostedForm = () => {\r\n const currentForm = document.getElementById(formId);\r\n const hostedFormScript = document.createElement('script');\r\n hostedFormScript.src = getHostedFormScriptSrc();\r\n hostedFormScript.id = authenticationKey;\r\n hostedFormScript.type = 'text/javascript';\r\n hostedFormScript.onload = onLoadFullSteamForm;\r\n currentForm.appendChild(hostedFormScript);\r\n };\r\n\r\n useEffect(() => {\r\n const { jQuery } = window;\r\n if (!jQuery) import('jquery').then((jQueryModule) => { window.jQuery = jQueryModule.default; });\r\n return () => {\r\n const hostedFormScriptElement = document.getElementById(authenticationKey);\r\n if (hostedFormScriptElement) {\r\n onCompletion = EMPTY_FUNC;\r\n hostedFormScriptElement.remove();\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (authenticationKey) {\r\n isCaptureEnabled.current = true;\r\n disableFormSubmit(true);\r\n addJQueryScriptOfHostedForm();\r\n /*\r\n Disabling the form submit as clicking(programmatically) on the submit button of this component triggers the\r\n form submit as well.\r\n */\r\n }\r\n }, [authenticationKey]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nSyrapayHostedForm.propTypes = {\r\n formId: PropTypes.string,\r\n tokenOnly: PropTypes.bool,\r\n tenantInfo: PropTypes.object,\r\n shouldSaveCard: PropTypes.bool,\r\n onSubmit: PropTypes.func.isRequired,\r\n shouldUseTenantAddress: PropTypes.bool,\r\n authenticationKey: PropTypes.string,\r\n closeHostedForm: PropTypes.func.isRequired,\r\n disableFormSubmit: PropTypes.func.isRequired,\r\n facilityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n paymentAmount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\n\r\nSyrapayHostedForm.defaultProps = {\r\n tenantInfo: {},\r\n tokenOnly: false,\r\n shouldSaveCard: false,\r\n formId: HOSTED_FORM_ID,\r\n shouldUseTenantAddress: false,\r\n};\r\n\r\nexport default memo(SyrapayHostedForm);\r\n","import { renderInPdf } from 'Commons/components/business/report/utils/Utils';\r\nimport { ENTITY_LEVEL } from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Snackbar from 'Generic/snackbar/components/Snackbar';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport ThreeDotProgress from 'Generic/threedotprogress/components/ThreeDotProgress';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { generateReport } from '../config/Api';\r\nimport reportStyle from '../styles/ReportStyle';\r\n\r\nconst useStyles = makeStyles(reportStyle, { name: 'ViewReport' });\r\n\r\nconst ViewReport = ({\r\n onAction,\r\n onClose,\r\n reportId,\r\n entityId,\r\n accountId,\r\n reportTitle,\r\n reportType,\r\n entityType,\r\n requestBody,\r\n}) => {\r\n const [openModal, setOpenModal] = useState(true);\r\n const classes = useStyles();\r\n const DialogContentProps = useConstructor(() => ({ classes: { root: classes.dialogContentRoot } }));\r\n const error = useRef(false);\r\n\r\n const onReportGenerate = (err, response) => {\r\n if (err) {\r\n error.current = true;\r\n } else if (response) {\r\n error.current = false;\r\n const { data: pdfUrl } = response;\r\n if (pdfUrl) {\r\n renderInPdf(pdfUrl, reportTitle);\r\n } else {\r\n error.current = true;\r\n }\r\n }\r\n setOpenModal(false);\r\n onClose(false);\r\n };\r\n\r\n const getReport = () => {\r\n setOpenModal(true);\r\n error.current = false;\r\n const reportIdOrType = reportId || reportType;\r\n if (!reportIdOrType) {\r\n throw new Error('Report ID or Report Type is required.');\r\n }\r\n generateReport(onAction, requestBody, reportIdOrType, entityType, entityId, accountId, onReportGenerate);\r\n };\r\n\r\n useEffect(() => {\r\n getReport(); // Fetching Report\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.fetchingReport}\r\n \r\n \r\n \r\n {error.current && }\r\n \r\n );\r\n};\r\n\r\nViewReport.propTypes = {\r\n onClose: PropTypes.func,\r\n reportType: PropTypes.string,\r\n entityType: PropTypes.string,\r\n reportTitle: PropTypes.string,\r\n onAction: PropTypes.func.isRequired,\r\n requestBody: PropTypes.object.isRequired,\r\n reportId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n accountId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n entityId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\r\n};\r\n\r\nViewReport.defaultProps = { entityType: ENTITY_LEVEL.Facility.value };\r\n\r\n\r\nexport default React.memo(ViewReport);\r\n","import { useState } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { makeStyles, Grid, ExpansionPanel as MuiExpansionPanel, ExpansionPanelSummary, ExpansionPanelDetails } from\r\n'Generic/componentlibrary/components/Components';\r\nimport ExpansionPanelStyle from '../styles/ExpansionPanelStyle';\r\n\r\nconst useStyles = makeStyles(ExpansionPanelStyle, { name: 'Insurance' });\r\n\r\n/**\r\n * Component for showing information in a dotted-bordered-panel that can be expanded or collapsed whenever required.\r\n */\r\nconst ExpansionPanel = ({ header, open, children, onCloseOrOpen, ...props }) => {\r\n const classes = useStyles();\r\n const [isPanelOpen, openPanel] = useState(open);\r\n\r\n const handleOpenOrClose = () => {\r\n openPanel(!isPanelOpen);\r\n onCloseOrOpen();\r\n };\r\n\r\n const onPanelClick = () => {\r\n if (!isPanelOpen) {\r\n openPanel(true);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {header}\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nExpansionPanel.propTypes = {\r\n header: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),\r\n children: PropTypes.any.isRequired,\r\n onCloseOrOpen: PropTypes.func,\r\n open: PropTypes.bool,\r\n};\r\n\r\nexport default ExpansionPanel;\r\n","\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { getYear } from 'Commons/helpers/utils/DateTime';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { memo } from 'react';\r\nimport listItemsStyle from '../styles/ListItemsStyle';\r\n\r\nconst useStyles = makeStyles(listItemsStyle, { name: 'Copyright' });\r\n\r\nconst Copyright = ({ open }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {\r\n open\r\n ? (\r\n \r\n {localisable.allRightReserved} {getYear()}\r\n \r\n )\r\n : copyright\r\n }\r\n \r\n );\r\n};\r\n\r\nCopyright.propTypes = { open: PropTypes.bool };\r\n\r\nCopyright.defaultProps = { open: false };\r\n\r\nexport default memo(Copyright);\r\n","import { Typography, Grid, makeStyles }\r\nfrom 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { DELETE_OVERLAY_ACTION, DELETE_OVERLAY_DELETION_STATUS } from 'Commons/config/constants/Constants';\r\nimport deleteOverlayStyle from '../styles/DeleteOverlayStyle';\r\n\r\nconst useStyles = makeStyles(deleteOverlayStyle, { name: 'DeleteOverlay' });\r\n\r\nconst DeleteOverlay = ({ classes: classesProp, onDelete, currentKey, deleteStatus }) => {\r\n const isNew = deleteStatus === DELETE_OVERLAY_DELETION_STATUS.NEW;\r\n const classes = useStyles({ classes: classesProp });\r\n return (\r\n
\r\n \r\n \r\n \r\n {\r\n isNew\r\n ? localisable.markedForDeletionNew\r\n : localisable.markedForDeletionExisting\r\n }\r\n \r\n \r\n \r\n { isNew && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n );\r\n};\r\n\r\nexport default React.memo(DeleteOverlay);\r\n\r\nDeleteOverlay.propTypes = {\r\n classes: PropTypes.object,\r\n onDelete: PropTypes.func,\r\n currentKey: PropTypes.any,\r\n deleteStatus: PropTypes.string,\r\n};\r\n\r\nDeleteOverlay.defaultProps = { deleteStatus: DELETE_OVERLAY_DELETION_STATUS.EXISTING };\r\n","/* eslint-disable react/jsx-one-expression-per-line */\r\nimport Footer from 'Commons/components/business/footer/components/Footer';\r\nimport {\r\n Grid,\r\n withStyles,\r\n Paper,\r\n} from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { Formik } from 'formik';\r\nimport Overlay from '../../overlay/components/Overlay';\r\nimport FilterOverlayStyle from '../styles/FilterOverlayStyle';\r\nimport FilterTypes from './FilterTypes';\r\nimport { VIEW } from '../../../../config/constants/Constants';\r\nimport { convertAppliedFiltersToValues } from '../../../../helpers/utils/SmartListDataHelper';\r\nimport RequestTypes from '../../../../config/constants/RequestTypes';\r\nimport BaseForm from '../../baseform/components/BaseForm';\r\nimport localisable from '../../../../config/strings/localisable';\r\nimport STATUS from '../../../../config/constants/StoreKeyStatus';\r\nimport AppliedFilterContainer from '../../appliedFilterContainer/component/AppliedFilterContainer';\r\nimport FILTER_STAGES from './configs/FilterStages';\r\n\r\nclass FilterOverlay extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n errorMessage: '',\r\n reset: false,\r\n stage: FILTER_STAGES.FILTER_TYPES_LIST,\r\n filtersApplied: props.appliedFilters || {},\r\n filtersUpdated: false,\r\n curSectionSelected: {},\r\n };\r\n this.initialAppliedFilters = this.convertAppliedFiltersToInitialValues(props.appliedFilters);\r\n }\r\n\r\n componentDidMount() {\r\n const { listConfig: { filterProps: { sectionsConfig: { sections } } } } = this.props;\r\n this.initSections(sections);\r\n }\r\n\r\n getHeader = () => {\r\n const { classes, listName } = this.props;\r\n return (\r\n \r\n \r\n {`${listName} - Filter`}\r\n \r\n \r\n );\r\n }\r\n\r\n initSections = (sections) => {\r\n this.sections = { ...sections };\r\n const { sectionClicked } = this.props;\r\n this.sectionsList = this.sections ? Object.keys(this.sections) : [];\r\n if (sectionClicked) {\r\n this.curSectionSelected = sectionClicked;\r\n } else {\r\n this.curSectionSelected = this.sectionsList.length > 0 ? this.sections[this.sectionsList[0]] : null;\r\n }\r\n this.setState({ curSectionSelected: { ...this.curSectionSelected } });\r\n }\r\n\r\n changeCurSectionSelected = (section) => {\r\n const { device = 'isDesktop' } = this.props;\r\n if (device !== 'isDesktop') {\r\n if (this.updateFilterStage) {\r\n this.updateFilterStage(FILTER_STAGES.FILTER_SECTION);\r\n }\r\n }\r\n this.setState({ curSectionSelected: section });\r\n }\r\n\r\n onChipSelect = (filter) => {\r\n const { getSectionByFilter, listConfig: { filterProps: { sectionsConfig: { availableFilters, sections } } } } = this.props;\r\n const section = getSectionByFilter(filter, availableFilters);\r\n if (section) {\r\n this.sectionClicked = sections[section] || {};\r\n this.setState({ curSectionSelected: this.sectionClicked });\r\n }\r\n }\r\n\r\n onClearAll = () => {\r\n this.curFiltersApplied = {};\r\n this.initialAppliedFilters = {};\r\n const { resetForm } = this.formProps;\r\n if (resetForm) {\r\n resetForm({});\r\n }\r\n this.setState({ filtersApplied: {} }, () => {\r\n this.setState({ filtersUpdated: true });\r\n });\r\n }\r\n\r\n /**\r\n * @name FilterData\r\n * @description Callback to filter overlay, to get search request\r\n */\r\n filterData = (filters = [], filtersApplied = {}) => {\r\n const { onAction, listConfig: { filterSearchUrl, sortConfig } } = this.props;\r\n onAction({\r\n config: [{\r\n method: 'read',\r\n api: {\r\n dynamic: {\r\n methodType: 'POST',\r\n endPoint: filterSearchUrl,\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n body: {\r\n view: VIEW.list.value,\r\n filter: filters,\r\n sort: sortConfig,\r\n },\r\n },\r\n },\r\n callback: this.onFilterApplied(filtersApplied),\r\n // store: { key: store },\r\n requestType: RequestTypes.REFRESH,\r\n }],\r\n });\r\n }\r\n\r\n applyFilters = () => {\r\n const { values } = this.formProps;\r\n const { listConfig: { filterProps: { sectionsConfig: { availableFilters } } }, createFilterRequest } = this.props;\r\n // Merge currently applied filters and new filters\r\n const newValues = {\r\n ...convertAppliedFiltersToValues(this.curFiltersApplied, availableFilters),\r\n ...values,\r\n };\r\n const { searchRequest: filters, filtersApplied } = createFilterRequest(availableFilters, newValues);\r\n this.filterData(filters, filtersApplied);\r\n }\r\n\r\n updateFilters = () => {\r\n const { values } = this.formProps;\r\n const { listConfig: { filterProps: { sectionsConfig: { availableFilters } } }, createFilterRequest } = this.props;\r\n const { filtersApplied: stateFiltersApplied } = this.state;\r\n // Merge currently applied filters and new filters\r\n this.curFilters = {\r\n ...convertAppliedFiltersToValues(stateFiltersApplied, availableFilters),\r\n ...values,\r\n };\r\n const { filtersApplied } = createFilterRequest(availableFilters, this.curFilters);\r\n this.curFiltersApplied = filtersApplied;\r\n }\r\n\r\n filterRemoved = (updatedFilters) => {\r\n this.curFiltersApplied = updatedFilters;\r\n this.initialAppliedFilters = this.convertAppliedFiltersToInitialValues(updatedFilters);\r\n if (Object.keys(updatedFilters).length === 0) {\r\n const { resetForm } = this.formProps;\r\n if (resetForm) {\r\n resetForm({});\r\n }\r\n }\r\n\r\n this.setState({ filtersApplied: updatedFilters }, () => {\r\n this.setState({ filtersUpdated: true });\r\n });\r\n }\r\n\r\n updateFilterStage = (stage = FILTER_STAGES.FILTER_TYPES_LIST) => {\r\n this.setState({ stage });\r\n }\r\n\r\n getFooter = (FooterProps) => {\r\n const { isValid, dirty, handleReset } = this.formProps;\r\n const { errorMessage, filtersUpdated } = this.state;\r\n const { classes } = this.props;\r\n const FooterErrorProps = errorMessage ? { message: errorMessage, classes: { message: classes.message } } : {};\r\n return (\r\n {\r\n this.submitForm();\r\n },\r\n }}\r\n negativeButtonProps={{\r\n label: localisable.discard,\r\n disabled: !dirty,\r\n onClick: () => {\r\n // this.onClose();\r\n handleReset();\r\n },\r\n }}\r\n {...FooterProps}\r\n {...FooterErrorProps}\r\n />\r\n );\r\n }\r\n\r\n\r\n onClose = () => {\r\n const { setFilterOverlay } = this.props;\r\n setFilterOverlay(false);\r\n }\r\n\r\n handleBackButton = () => {\r\n const { stage } = this.props;\r\n switch (stage) {\r\n case FILTER_STAGES.APPLIED_FILTERS:\r\n this.updateFilterStage(FILTER_STAGES.FILTER_TYPES_LIST);\r\n break;\r\n case FILTER_STAGES.FILTER_SECTION:\r\n this.updateFilterStage(FILTER_STAGES.FILTER_TYPES_LIST);\r\n break;\r\n default:\r\n this.updateFilterStage(FILTER_STAGES.FILTER_TYPES_LIST);\r\n }\r\n }\r\n\r\n onFilterApplied = filtersApplied => (apiError, apiResponse) => {\r\n if (apiError) {\r\n const { setErrors, setTouched } = this.formProps;\r\n const actions = { setErrors, setTouched };\r\n this.handleErrors(apiError, actions);\r\n } else if (apiResponse) {\r\n const { onAction, listConfig: { store }, onFilterChange } = this.props;\r\n onAction({\r\n config: [{\r\n method: 'read',\r\n store: {\r\n key: store,\r\n payload: {\r\n data: {},\r\n status: STATUS.LOADING,\r\n },\r\n actionKey: `${store}_read_loading`,\r\n },\r\n requestType: RequestTypes.REFRESH,\r\n }, {\r\n method: 'read',\r\n store: {\r\n key: store,\r\n payload: {\r\n data: apiResponse,\r\n status: STATUS.LOADED,\r\n },\r\n actionKey: `${store}_read`,\r\n },\r\n requestType: RequestTypes.REFRESH,\r\n }],\r\n });\r\n onFilterChange(filtersApplied, { apiCall: false });\r\n this.onClose();\r\n }\r\n }\r\n\r\n convertAppliedFiltersToInitialValues = (activeFilters = {}) => {\r\n const initialValues = {};\r\n Object.keys(activeFilters).forEach((filter) => {\r\n initialValues[filter] = activeFilters[filter].value;\r\n });\r\n return initialValues;\r\n }\r\n\r\n resetFilters = (values, actions) => {\r\n const { appliedFilters } = this.props;\r\n const { resetForm, setSubmitting } = actions;\r\n if (resetForm) {\r\n const initialValues = this.convertAppliedFiltersToInitialValues(appliedFilters);\r\n setSubmitting(false);\r\n resetForm(initialValues);\r\n }\r\n }\r\n\r\n renderMobile() {\r\n const { classes } = this.props;\r\n const { stage } = this.state;\r\n return (\r\n \r\n { (stage === FILTER_STAGES.FILTER_TYPES_LIST || stage === FILTER_STAGES.FILTER_SECTION) && this.renderFilterTypes()}\r\n { (stage === FILTER_STAGES.APPLIED_FILTERS) && this.renderAppliedFilters()}\r\n \r\n );\r\n }\r\n\r\n renderDesktop() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n { this.renderFilterTypes()}\r\n { this.renderAppliedFilters()}\r\n \r\n );\r\n }\r\n\r\n renderFilterTypes() {\r\n const {\r\n classes,\r\n listConfig: { filterProps: { sectionsConfig: { sections, availableFilters } } },\r\n appliedFilters,\r\n device,\r\n } = this.props;\r\n const { stage, curSectionSelected } = this.state;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderAppliedFilters() {\r\n const {\r\n classes,\r\n device,\r\n } = this.props;\r\n const { filtersApplied: stateFiltersApplied } = this.state;\r\n this.updateFilters();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderStage() {\r\n const { device } = this.props;\r\n switch (device) {\r\n case 'isMobile':\r\n case 'isPhablet':\r\n case 'isTablet':\r\n return this.renderMobile();\r\n // return this.renderTablet();\r\n default:\r\n return this.renderDesktop();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n match: { path } = {},\r\n showFilterOverlay = false,\r\n classes,\r\n } = this.props;\r\n return (\r\n {\r\n this.formProps = formProps;\r\n return (\r\n \r\n {\r\n this.renderStage()\r\n }\r\n \r\n );\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n\r\nFilterOverlay.propTypes = {\r\n match: PropTypes.any, // The match from router\r\n showFilterOverlay: PropTypes.bool, // The method from parent container which maintains a state variable, to toggle overlay visibility\r\n createFilterRequest: PropTypes.func.isRequired, // The method from parent container which has access to createFilterRequest, which creates search request\r\n listConfig: PropTypes.object.isRequired, // Contains the initial config for the list\r\n listName: PropTypes.string.isRequired,\r\n appliedFilters: PropTypes.any, // The currently applied filters\r\n classes: PropTypes.any,\r\n device: PropTypes.string, // The type of device filter overlay is rendered on\r\n setFilterOverlay: PropTypes.func.isRequired, // Callback to parent container to set visibility value\r\n onFilterChange: PropTypes.func.isRequired, // Callback to parent container, to let it know when filter is added/removed\r\n onAction: PropTypes.any.isRequired, // SmartComponent prop to dispatch actions to Parent Containers HOC\r\n sectionClicked: PropTypes.any, // The default section to be selected on open\r\n getSectionByFilter: PropTypes.func.isRequired, // When you want to get section for a filter that was clicked\r\n};\r\n\r\nFilterOverlay.defaultProps = {\r\n showFilterOverlay: false,\r\n device: 'isDesktop',\r\n};\r\n\r\nexport default withStyles(FilterOverlayStyle)(FilterOverlay);\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\n/* eslint-disable react/sort-comp */\r\nimport PropTypes from 'prop-types';\r\nimport { findDOMNode } from 'react-dom';\r\nimport Manager from '../Manager';\r\nimport { isSortableHandle } from '../SortableHandle';\r\n\r\nimport {\r\n cloneNode,\r\n closest,\r\n events,\r\n getContainerGridGap,\r\n getEdgeOffset,\r\n getElementMargin,\r\n getLockPixelOffsets,\r\n getPosition,\r\n getScrollAdjustedBoundingClientRect,\r\n getScrollingParent,\r\n getTargetIndex,\r\n isTouchEvent,\r\n limit,\r\n NodeType,\r\n omit,\r\n provideDisplayName,\r\n setInlineStyles,\r\n setTransitionDuration,\r\n setTranslate3d,\r\n} from '../utils';\r\n\r\nimport AutoScroller from '../AutoScroller';\r\nimport { defaultKeyCodes, defaultProps, omittedProps, propTypes } from './props';\r\n\r\nexport default function sortableContainer(\r\n WrappedComponent,\r\n config = { withRef: false },\r\n) {\r\n return class WithSortableContainer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // validateProps(props);\r\n\r\n\r\n this.manager = new Manager();\r\n\r\n this.events = {\r\n end: this.handleEnd,\r\n move: this.handleMove,\r\n start: this.handleStart,\r\n };\r\n }\r\n\r\n state = {};\r\n\r\n static displayName = provideDisplayName('sortableList', WrappedComponent);\r\n\r\n static defaultProps = defaultProps;\r\n\r\n static propTypes = propTypes;\r\n\r\n static childContextTypes = { manager: PropTypes.object.isRequired };\r\n\r\n getChildContext() {\r\n const { manager } = this;\r\n return { manager };\r\n }\r\n\r\n componentDidMount() {\r\n const { props: { useWindowAsScrollContainer, contentWindow } } = this;\r\n const container = this.getContainer();\r\n\r\n Promise.resolve(container)\r\n .then((containerNode) => {\r\n this.container = containerNode;\r\n this.document = this.container.ownerDocument || document;\r\n\r\n /*\r\n * Set our own default rather than using defaultProps because Jest\r\n * snapshots will serialize window, causing a RangeError\r\n * https://github.com/clauderic/react-sortable-hoc/issues/249\r\n */\r\n // eslint-disable-next-line no-underscore-dangle\r\n const _contentWindow = contentWindow || this.document.defaultView || window;\r\n\r\n this.contentWindow = typeof _contentWindow === 'function' ? _contentWindow() : _contentWindow;\r\n\r\n this.scrollContainer = useWindowAsScrollContainer\r\n ? this.document.scrollingElement || this.document.documentElement\r\n : getScrollingParent(this.container) || this.container;\r\n\r\n this.autoScroller = new AutoScroller(\r\n this.scrollContainer,\r\n this.onAutoScroll,\r\n );\r\n\r\n // eslint-disable-next-line max-len\r\n Object.keys(this.events).forEach(key => events[key].forEach(eventName => this.container.addEventListener(eventName, this.events[key], false)));\r\n\r\n // this.container.addEventListener('keydown', this.handleKeyDown);\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n const { container, helper, helper: { parentNode } = {} } = this;\r\n if (helper && parentNode) {\r\n parentNode.removeChild(helper);\r\n }\r\n if (!container) {\r\n return;\r\n }\r\n\r\n Object.keys(this.events)\r\n // eslint-disable-next-line max-len\r\n .forEach(key => events[key].forEach(eventName => container.removeEventListener(eventName, this.events[key])));\r\n // container.removeEventListener('keydown', this.handleKeyDown);\r\n }\r\n\r\n handleStart = (event) => {\r\n const {\r\n props: { distance, shouldCancelStart, pressDelay, useDragHandle },\r\n state: { sorting }, manager,\r\n } = this;\r\n\r\n if (event.button === 2 || shouldCancelStart(event)) {\r\n return;\r\n }\r\n\r\n this.touched = true;\r\n this.position = getPosition(event);\r\n\r\n const node = closest(event.target, el => el.sortableInfo != null);\r\n\r\n if (\r\n node\r\n && node.sortableInfo\r\n && this.nodeIsChild(node)\r\n && !sorting\r\n ) {\r\n const { index, collection, disabled } = node.sortableInfo;\r\n\r\n if (disabled) {\r\n return;\r\n }\r\n\r\n if (useDragHandle && !closest(event.target, isSortableHandle)) {\r\n return;\r\n }\r\n\r\n manager.active = {\r\n collection,\r\n index,\r\n };\r\n\r\n /*\r\n * Fixes a bug in Firefox where the :active state of anchor tags\r\n * prevent subsequent 'mousemove' events from being fired\r\n * (see https://github.com/clauderic/react-sortable-hoc/issues/118)\r\n */\r\n if (!isTouchEvent(event) && event.target.tagName === NodeType.Anchor) {\r\n event.preventDefault();\r\n }\r\n\r\n if (!distance) {\r\n if (pressDelay === 0) {\r\n this.handlePress(event);\r\n } else {\r\n this.pressTimer = setTimeout(\r\n () => this.handlePress(event),\r\n pressDelay,\r\n );\r\n }\r\n }\r\n }\r\n };\r\n\r\n nodeIsChild = node => node.sortableInfo.manager === this.manager;\r\n\r\n handleMove = (event) => {\r\n const {\r\n props: { distance, pressThreshold },\r\n state: { sorting }, _awaitingUpdateBeforeSortStart, manager, touched,\r\n } = this;\r\n\r\n if (\r\n !sorting\r\n && touched\r\n && !_awaitingUpdateBeforeSortStart\r\n ) {\r\n const position = getPosition(event);\r\n const delta = {\r\n x: this.position.x - position.x,\r\n y: this.position.y - position.y,\r\n };\r\n const combinedDelta = Math.abs(delta.x) + Math.abs(delta.y);\r\n\r\n this.delta = delta;\r\n\r\n if (!distance && (!pressThreshold || combinedDelta >= pressThreshold)) {\r\n clearTimeout(this.cancelTimer);\r\n this.cancelTimer = setTimeout(this.cancel, 0);\r\n } else if (\r\n distance\r\n && combinedDelta >= distance\r\n && manager.isActive()\r\n ) {\r\n this.handlePress(event);\r\n }\r\n }\r\n };\r\n\r\n handleEnd = () => {\r\n this.touched = false;\r\n this.cancel();\r\n };\r\n\r\n cancel = () => {\r\n const { props: { distance }, state: { sorting } } = this;\r\n\r\n if (!sorting) {\r\n if (!distance) {\r\n clearTimeout(this.pressTimer);\r\n }\r\n this.manager.active = null;\r\n }\r\n };\r\n\r\n handlePress = async (event) => {\r\n const active = this.manager.getActive();\r\n\r\n if (active) {\r\n const {\r\n axis,\r\n getHelperDimensions,\r\n helperClass,\r\n hideSortableGhost,\r\n updateBeforeSortStart,\r\n onSortStart,\r\n useWindowAsScrollContainer,\r\n customGetEdgeOffset,\r\n } = this.props;\r\n const { node, collection } = active;\r\n const { isKeySorting } = this.manager;\r\n\r\n if (typeof updateBeforeSortStart === 'function') {\r\n // eslint-disable-next-line no-underscore-dangle\r\n this._awaitingUpdateBeforeSortStart = true;\r\n\r\n try {\r\n const { index } = node.sortableInfo;\r\n await updateBeforeSortStart(\r\n {\r\n collection,\r\n index,\r\n node,\r\n isKeySorting,\r\n },\r\n event,\r\n );\r\n } finally {\r\n // eslint-disable-next-line no-underscore-dangle\r\n this._awaitingUpdateBeforeSortStart = false;\r\n }\r\n }\r\n\r\n // Need to get the latest value for `index` in case it changes during `updateBeforeSortStart`\r\n const { index } = node.sortableInfo;\r\n const margin = getElementMargin(node);\r\n const gridGap = getContainerGridGap(this.container);\r\n const containerBoundingRect = this.scrollContainer.getBoundingClientRect();\r\n const dimensions = getHelperDimensions({\r\n index,\r\n node,\r\n collection,\r\n });\r\n\r\n this.node = node;\r\n this.margin = margin;\r\n this.gridGap = gridGap;\r\n this.width = dimensions.width;\r\n this.height = dimensions.height;\r\n this.marginOffset = {\r\n x: this.margin.left + this.margin.right + this.gridGap.x,\r\n y: Math.max(this.margin.top, this.margin.bottom, this.gridGap.y),\r\n };\r\n this.boundingClientRect = node.getBoundingClientRect();\r\n this.containerBoundingRect = containerBoundingRect;\r\n this.index = index;\r\n this.newIndex = index;\r\n\r\n this.axis = {\r\n x: axis.indexOf('x') >= 0,\r\n y: axis.indexOf('y') >= 0,\r\n };\r\n this.offsetEdge = customGetEdgeOffset ? customGetEdgeOffset(node, this.container) : getEdgeOffset(node, this.container);\r\n\r\n if (isKeySorting) {\r\n this.initialOffset = getPosition({\r\n ...event,\r\n pageX: this.boundingClientRect.left,\r\n pageY: this.boundingClientRect.top,\r\n });\r\n } else {\r\n this.initialOffset = getPosition(event);\r\n }\r\n\r\n this.initialScroll = {\r\n left: this.scrollContainer.scrollLeft,\r\n top: this.scrollContainer.scrollTop,\r\n };\r\n\r\n this.initialWindowScroll = {\r\n left: window.pageXOffset,\r\n top: window.pageYOffset,\r\n };\r\n\r\n this.helper = this.helperContainer.appendChild(cloneNode(node));\r\n\r\n setInlineStyles(this.helper, {\r\n boxSizing: 'border-box',\r\n height: `${this.height}px`,\r\n left: `${this.boundingClientRect.left - margin.left}px`,\r\n pointerEvents: 'none',\r\n position: 'fixed',\r\n top: `${this.boundingClientRect.top - margin.top}px`,\r\n width: `${this.width}px`,\r\n });\r\n\r\n if (isKeySorting) {\r\n this.helper.focus();\r\n }\r\n\r\n if (hideSortableGhost) {\r\n this.sortableGhost = node;\r\n\r\n setInlineStyles(node, {\r\n opacity: 0,\r\n visibility: 'hidden',\r\n });\r\n }\r\n\r\n this.minTranslate = {};\r\n this.maxTranslate = {};\r\n\r\n if (isKeySorting) {\r\n const {\r\n top: containerTop,\r\n left: containerLeft,\r\n width: containerWidth,\r\n height: containerHeight,\r\n } = useWindowAsScrollContainer\r\n ? {\r\n top: 0,\r\n left: 0,\r\n width: this.contentWindow.innerWidth,\r\n height: this.contentWindow.innerHeight,\r\n }\r\n : this.containerBoundingRect;\r\n const containerBottom = containerTop + containerHeight;\r\n const containerRight = containerLeft + containerWidth;\r\n\r\n if (this.axis.x) {\r\n this.minTranslate.x = containerLeft - this.boundingClientRect.left;\r\n this.maxTranslate.x = containerRight - (this.boundingClientRect.left + this.width);\r\n }\r\n\r\n if (this.axis.y) {\r\n this.minTranslate.y = containerTop - this.boundingClientRect.top;\r\n this.maxTranslate.y = containerBottom - (this.boundingClientRect.top + this.height);\r\n }\r\n } else {\r\n // if (this.axis.x) {\r\n // this.minTranslate.x = (useWindowAsScrollContainer ? 0 : containerBoundingRect.left)\r\n // - this.boundingClientRect.left\r\n // - this.width / 2;\r\n // this.maxTranslate.x = (useWindowAsScrollContainer\r\n // ? this.contentWindow.innerWidth\r\n // : containerBoundingRect.left + containerBoundingRect.width)\r\n // - this.boundingClientRect.left\r\n // - this.width / 2;\r\n // }\r\n\r\n // eslint-disable-next-line no-lonely-if\r\n if (this.axis.y) {\r\n this.minTranslate.y = (useWindowAsScrollContainer ? 0 : containerBoundingRect.top)\r\n - this.boundingClientRect.top\r\n - this.height / 2;\r\n this.maxTranslate.y = (useWindowAsScrollContainer\r\n ? this.contentWindow.innerHeight\r\n : containerBoundingRect.top + containerBoundingRect.height)\r\n - this.boundingClientRect.top\r\n - this.height / 2;\r\n }\r\n }\r\n\r\n if (helperClass) {\r\n helperClass\r\n .split(' ')\r\n .forEach(className => this.helper.classList.add(className));\r\n }\r\n\r\n this.listenerNode = event.touches ? node : this.contentWindow;\r\n\r\n if (isKeySorting) {\r\n this.listenerNode.addEventListener('wheel', this.handleKeyEnd, true);\r\n this.listenerNode.addEventListener(\r\n 'mousedown',\r\n this.handleKeyEnd,\r\n true,\r\n );\r\n this.listenerNode.addEventListener('keydown', this.handleKeyDown);\r\n } else {\r\n events.move.forEach(eventName => this.listenerNode.addEventListener(\r\n eventName,\r\n this.handleSortMove,\r\n false,\r\n ));\r\n events.end.forEach(eventName => this.listenerNode.addEventListener(\r\n eventName,\r\n this.handleSortEnd,\r\n false,\r\n ));\r\n }\r\n\r\n this.setState({\r\n sorting: true,\r\n sortingIndex: index,\r\n });\r\n\r\n if (onSortStart) {\r\n onSortStart(\r\n {\r\n node,\r\n index,\r\n collection,\r\n isKeySorting,\r\n nodes: this.manager.getOrderedRefs(),\r\n helper: this.helper,\r\n },\r\n event,\r\n );\r\n }\r\n\r\n if (isKeySorting) {\r\n // Readjust positioning in case re-rendering occurs onSortStart\r\n this.keyMove(0);\r\n }\r\n }\r\n };\r\n\r\n handleSortMove = (event) => {\r\n const { props: { onSortMove } } = this;\r\n\r\n // Prevent scrolling on mobile\r\n if (typeof event.preventDefault === 'function') {\r\n event.preventDefault();\r\n }\r\n\r\n this.updateHelperPosition(event);\r\n this.animateNodes();\r\n this.autoscroll();\r\n\r\n if (onSortMove) {\r\n onSortMove(event);\r\n }\r\n };\r\n\r\n handleSortEnd = (event) => {\r\n const {\r\n props: { hideSortableGhost, onSortEnd },\r\n manager, manager: {\r\n active: { collection },\r\n isKeySorting,\r\n },\r\n helper,\r\n helper: { parentNode },\r\n listenerNode,\r\n handleKeyEnd,\r\n handleKeyDown,\r\n handleSortMove,\r\n handleSortEnd,\r\n } = this;\r\n const nodes = manager.getOrderedRefs();\r\n\r\n // Remove the event listeners if the node is still in the DOM\r\n if (listenerNode) {\r\n if (isKeySorting) {\r\n listenerNode.removeEventListener(\r\n 'wheel',\r\n handleKeyEnd,\r\n true,\r\n );\r\n listenerNode.removeEventListener(\r\n 'mousedown',\r\n handleKeyEnd,\r\n true,\r\n );\r\n listenerNode.removeEventListener('keydown', handleKeyDown);\r\n } else {\r\n events.move.forEach(eventName => listenerNode.removeEventListener(\r\n eventName,\r\n handleSortMove,\r\n ));\r\n events.end.forEach(eventName => listenerNode.removeEventListener(\r\n eventName,\r\n handleSortEnd,\r\n ));\r\n }\r\n }\r\n\r\n // Remove the helper from the DOM\r\n parentNode.removeChild(helper);\r\n\r\n if (hideSortableGhost && this.sortableGhost) {\r\n setInlineStyles(this.sortableGhost, {\r\n opacity: '',\r\n visibility: '',\r\n });\r\n }\r\n\r\n for (let i = 0, len = nodes.length; i < len; i += 1) {\r\n const node = nodes[i];\r\n const el = node.node;\r\n\r\n // Clear the cached offset/boundingClientRect\r\n node.edgeOffset = null;\r\n node.boundingClientRect = null;\r\n\r\n // Remove the transforms / transitions\r\n setTranslate3d(el, null);\r\n setTransitionDuration(el, null);\r\n node.translate = null;\r\n }\r\n\r\n // Stop autoscroll\r\n this.autoScroller.clear();\r\n\r\n // Update manager state\r\n this.manager.active = null;\r\n this.manager.isKeySorting = false;\r\n\r\n this.setState({\r\n sorting: false,\r\n sortingIndex: null,\r\n });\r\n\r\n if (typeof onSortEnd === 'function') {\r\n onSortEnd(\r\n {\r\n collection,\r\n newIndex: this.newIndex,\r\n oldIndex: this.index,\r\n isKeySorting,\r\n nodes,\r\n },\r\n event,\r\n );\r\n }\r\n\r\n this.touched = false;\r\n };\r\n\r\n updateHelperPosition(event) {\r\n const {\r\n props: {\r\n lockAxis,\r\n lockOffset,\r\n lockToContainerEdges,\r\n transitionDuration,\r\n keyboardSortingTransitionDuration = transitionDuration,\r\n },\r\n manager: { isKeySorting },\r\n helper,\r\n initialOffset,\r\n initialWindowScroll,\r\n height,\r\n width,\r\n minTranslate,\r\n maxTranslate,\r\n } = this;\r\n const { ignoreTransition } = event;\r\n\r\n const offset = getPosition(event);\r\n const translate = {\r\n x: offset.x - initialOffset.x,\r\n y: offset.y - initialOffset.y,\r\n };\r\n\r\n // Adjust for window scroll\r\n translate.y -= window.pageYOffset - initialWindowScroll.top;\r\n translate.x -= window.pageXOffset - initialWindowScroll.left;\r\n\r\n this.translate = translate;\r\n\r\n if (lockToContainerEdges) {\r\n const [minLockOffset, maxLockOffset] = getLockPixelOffsets({\r\n height,\r\n lockOffset,\r\n width,\r\n });\r\n const minOffset = {\r\n x: width / 2 - minLockOffset.x,\r\n y: height / 2 - minLockOffset.y,\r\n };\r\n const maxOffset = {\r\n x: width / 2 - maxLockOffset.x,\r\n y: height / 2 - maxLockOffset.y,\r\n };\r\n\r\n translate.x = limit(\r\n minTranslate.x + minOffset.x,\r\n maxTranslate.x - maxOffset.x,\r\n translate.x,\r\n );\r\n translate.y = limit(\r\n minTranslate.y + minOffset.y,\r\n maxTranslate.y - maxOffset.y,\r\n translate.y,\r\n );\r\n }\r\n\r\n if (lockAxis === 'x') {\r\n translate.y = 0;\r\n } else if (lockAxis === 'y') {\r\n translate.x = 0;\r\n }\r\n\r\n if (\r\n isKeySorting\r\n && keyboardSortingTransitionDuration\r\n && !ignoreTransition\r\n ) {\r\n setTransitionDuration(helper, keyboardSortingTransitionDuration);\r\n }\r\n\r\n setTranslate3d(helper, translate);\r\n }\r\n\r\n animateNodes() {\r\n const {\r\n props: { transitionDuration, hideSortableGhost, onSortOver, customGetEdgeOffset },\r\n container,\r\n manager,\r\n containerScrollDelta,\r\n windowScrollDelta,\r\n offsetEdge,\r\n height,\r\n width,\r\n } = this;\r\n const nodes = manager.getOrderedRefs();\r\n const sortingOffset = {\r\n left:\r\n offsetEdge.left + this.translate.x + containerScrollDelta.left,\r\n top: offsetEdge.top + this.translate.y + containerScrollDelta.top,\r\n };\r\n const { isKeySorting } = manager;\r\n\r\n const prevIndex = this.newIndex;\r\n this.newIndex = null;\r\n\r\n for (let i = 0, len = nodes.length; i < len; i += 1) {\r\n const { node } = nodes[i];\r\n const { index } = node.sortableInfo;\r\n const { offsetWidth, offsetHeight } = node;\r\n const offset = {\r\n height: height > offsetHeight ? offsetHeight / 2 : height / 2,\r\n width: width > offsetWidth ? offsetWidth / 2 : offsetWidth / 2,\r\n };\r\n\r\n // For keyboard sorting, we want user input to dictate the position of the nodes\r\n const mustShiftBackward = isKeySorting && (index > this.index && index <= prevIndex);\r\n const mustShiftForward = isKeySorting && (index < this.index && index >= prevIndex);\r\n\r\n const translate = {\r\n x: 0,\r\n y: 0,\r\n };\r\n let { edgeOffset } = nodes[i];\r\n\r\n // If we haven't cached the node's offsetTop / offsetLeft value\r\n if (!edgeOffset) {\r\n edgeOffset = customGetEdgeOffset ? customGetEdgeOffset(node, container) : getEdgeOffset(node, container);\r\n nodes[i].edgeOffset = edgeOffset;\r\n // While we're at it, cache the boundingClientRect, used during keyboard sorting\r\n if (isKeySorting) {\r\n nodes[i].boundingClientRect = getScrollAdjustedBoundingClientRect(\r\n node,\r\n containerScrollDelta,\r\n );\r\n }\r\n }\r\n\r\n // Get a reference to the next and previous node\r\n const nextNode = i < nodes.length - 1 && nodes[i + 1];\r\n const prevNode = i > 0 && nodes[i - 1];\r\n\r\n // Also cache the next node's edge offset if needed.\r\n // We need this for calculating the animation in a grid setup\r\n if (nextNode && !nextNode.edgeOffset) {\r\n nextNode.edgeOffset = customGetEdgeOffset ? customGetEdgeOffset(nextNode.node, this.container) : getEdgeOffset(nextNode.node, this.container);\r\n if (isKeySorting) {\r\n nextNode.boundingClientRect = getScrollAdjustedBoundingClientRect(\r\n nextNode.node,\r\n containerScrollDelta,\r\n );\r\n }\r\n }\r\n\r\n // If the node is the one we're currently animating, skip it\r\n if (index === this.index) {\r\n if (hideSortableGhost) {\r\n /*\r\n * With windowing libraries such as `react-virtualized`, the sortableGhost\r\n * node may change while scrolling down and then back up (or vice-versa),\r\n * so we need to update the reference to the new node just to be safe.\r\n */\r\n this.sortableGhost = node;\r\n\r\n setInlineStyles(node, {\r\n opacity: 0,\r\n visibility: 'hidden',\r\n });\r\n }\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n\r\n if (transitionDuration) {\r\n setTransitionDuration(node, transitionDuration);\r\n }\r\n\r\n if (this.axis.x) {\r\n if (this.axis.y) {\r\n // Calculations for a grid setup\r\n if (\r\n mustShiftForward\r\n || (index < this.index\r\n && ((sortingOffset.left + windowScrollDelta.left - offset.width\r\n <= edgeOffset.left\r\n && sortingOffset.top + windowScrollDelta.top\r\n <= edgeOffset.top + offset.height)\r\n || sortingOffset.top + windowScrollDelta.top + offset.height\r\n <= edgeOffset.top))\r\n ) {\r\n // If the current node is to the left on the same row, or above the node that's being dragged\r\n // then move it to the right\r\n translate.x = this.width + this.marginOffset.x;\r\n if (\r\n edgeOffset.left + translate.x\r\n > this.containerBoundingRect.width - offset.width\r\n ) {\r\n // If it moves passed the right bounds, then animate it to the first position of the next row.\r\n // We just use the offset of the next node to calculate where to move, because that node's original position\r\n // is exactly where we want to go\r\n if (nextNode) {\r\n translate.x = nextNode.edgeOffset.left - edgeOffset.left;\r\n translate.y = nextNode.edgeOffset.top - edgeOffset.top;\r\n }\r\n }\r\n if (this.newIndex === null) {\r\n this.newIndex = index;\r\n }\r\n } else if (\r\n mustShiftBackward\r\n || (index > this.index\r\n && ((sortingOffset.left + windowScrollDelta.left + offset.width\r\n >= edgeOffset.left\r\n && sortingOffset.top + windowScrollDelta.top + offset.height\r\n >= edgeOffset.top)\r\n || sortingOffset.top + windowScrollDelta.top + offset.height\r\n >= edgeOffset.top + height))\r\n ) {\r\n // If the current node is to the right on the same row, or below the node that's being dragged\r\n // then move it to the left\r\n translate.x = -(this.width + this.marginOffset.x);\r\n if (\r\n edgeOffset.left + translate.x\r\n < this.containerBoundingRect.left + offset.width\r\n ) {\r\n // If it moves passed the left bounds, then animate it to the last position of the previous row.\r\n // We just use the offset of the previous node to calculate where to move, because that node's original position\r\n // is exactly where we want to go\r\n if (prevNode) {\r\n translate.x = prevNode.edgeOffset.left - edgeOffset.left;\r\n translate.y = prevNode.edgeOffset.top - edgeOffset.top;\r\n }\r\n }\r\n this.newIndex = index;\r\n }\r\n } else if (\r\n mustShiftBackward\r\n || (index > this.index\r\n && sortingOffset.left + windowScrollDelta.left + offset.width\r\n >= edgeOffset.left)\r\n ) {\r\n translate.x = -(this.width + this.marginOffset.x);\r\n this.newIndex = index;\r\n } else if (\r\n mustShiftForward\r\n || (index < this.index\r\n && sortingOffset.left + windowScrollDelta.left\r\n <= edgeOffset.left + offset.width)\r\n ) {\r\n translate.x = this.width + this.marginOffset.x;\r\n\r\n if (this.newIndex == null) {\r\n this.newIndex = index;\r\n }\r\n }\r\n } else if (this.axis.y) {\r\n if (\r\n mustShiftBackward\r\n || (index > this.index\r\n && sortingOffset.top + windowScrollDelta.top + offset.height\r\n >= edgeOffset.top)\r\n ) {\r\n translate.y = -(this.height + this.marginOffset.y);\r\n this.newIndex = index;\r\n } else if (\r\n mustShiftForward\r\n || (index < this.index\r\n && sortingOffset.top + windowScrollDelta.top\r\n <= edgeOffset.top + offset.height)\r\n ) {\r\n translate.y = this.height + this.marginOffset.y;\r\n if (this.newIndex == null) {\r\n this.newIndex = index;\r\n }\r\n }\r\n }\r\n\r\n setTranslate3d(node, translate);\r\n nodes[i].translate = translate;\r\n }\r\n\r\n if (this.newIndex == null) {\r\n this.newIndex = this.index;\r\n }\r\n\r\n if (isKeySorting) {\r\n // If keyboard sorting, we want the user input to dictate index, not location of the helper\r\n this.newIndex = prevIndex;\r\n }\r\n\r\n const oldIndex = isKeySorting ? this.prevIndex : prevIndex;\r\n if (onSortOver && this.newIndex !== oldIndex) {\r\n onSortOver({\r\n collection: this.manager.active.collection,\r\n index: this.index,\r\n newIndex: this.newIndex,\r\n oldIndex,\r\n isKeySorting,\r\n nodes,\r\n helper: this.helper,\r\n });\r\n }\r\n }\r\n\r\n autoscroll = () => {\r\n const { disableAutoscroll } = this.props;\r\n const { isKeySorting } = this.manager;\r\n\r\n if (disableAutoscroll) {\r\n this.autoScroller.clear();\r\n return;\r\n }\r\n\r\n if (isKeySorting) {\r\n const translate = { ...this.translate };\r\n let scrollX = 0;\r\n let scrollY = 0;\r\n\r\n if (this.axis.x) {\r\n translate.x = Math.min(\r\n this.maxTranslate.x,\r\n Math.max(this.minTranslate.x, this.translate.x),\r\n );\r\n scrollX = this.translate.x - translate.x;\r\n }\r\n\r\n if (this.axis.y) {\r\n translate.y = Math.min(\r\n this.maxTranslate.y,\r\n Math.max(this.minTranslate.y, this.translate.y),\r\n );\r\n scrollY = this.translate.y - translate.y;\r\n }\r\n\r\n this.translate = translate;\r\n setTranslate3d(this.helper, this.translate);\r\n this.scrollContainer.scrollLeft += scrollX;\r\n this.scrollContainer.scrollTop += scrollY;\r\n\r\n return;\r\n }\r\n\r\n this.autoScroller.update({\r\n height: this.height,\r\n maxTranslate: this.maxTranslate,\r\n minTranslate: this.minTranslate,\r\n translate: this.translate,\r\n width: this.width,\r\n });\r\n };\r\n\r\n onAutoScroll = (offset) => {\r\n this.translate.x += offset.left;\r\n this.translate.y += offset.top;\r\n\r\n this.animateNodes();\r\n };\r\n\r\n getWrappedInstance() {\r\n // eslint-disable-next-line react/no-string-refs\r\n return this.refs.wrappedInstance;\r\n }\r\n\r\n getContainer() {\r\n const { props: { getContainer } } = this;\r\n\r\n if (typeof getContainer !== 'function') {\r\n // eslint-disable-next-line react/no-find-dom-node\r\n return findDOMNode(this);\r\n }\r\n\r\n return getContainer(\r\n config.withRef ? this.getWrappedInstance() : undefined,\r\n );\r\n }\r\n\r\n handleKeyDown = (event) => {\r\n const { keyCode } = event;\r\n const { props: { shouldCancelStart, keyCodes: customKeyCodes = {} } } = this;\r\n\r\n const keyCodes = {\r\n ...defaultKeyCodes,\r\n ...customKeyCodes,\r\n };\r\n\r\n if (\r\n (this.manager.active && !this.manager.isKeySorting)\r\n || (!this.manager.active\r\n && (!keyCodes.lift.includes(keyCode)\r\n || shouldCancelStart(event)\r\n || !this.isValidSortingTarget(event)))\r\n ) {\r\n return;\r\n }\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n if (keyCodes.lift.includes(keyCode) && !this.manager.active) {\r\n this.keyLift(event);\r\n } else if (keyCodes.drop.includes(keyCode) && this.manager.active) {\r\n this.keyDrop(event);\r\n } else if (keyCodes.cancel.includes(keyCode)) {\r\n this.newIndex = this.manager.active.index;\r\n this.keyDrop(event);\r\n } else if (keyCodes.up.includes(keyCode)) {\r\n this.keyMove(-1);\r\n } else if (keyCodes.down.includes(keyCode)) {\r\n this.keyMove(1);\r\n }\r\n };\r\n\r\n keyLift = (event) => {\r\n const { target } = event;\r\n const node = closest(target, el => el.sortableInfo != null);\r\n const { index, collection } = node.sortableInfo;\r\n\r\n this.initialFocusedNode = target;\r\n\r\n this.manager.isKeySorting = true;\r\n this.manager.active = {\r\n index,\r\n collection,\r\n };\r\n\r\n this.handlePress(event);\r\n };\r\n\r\n keyMove = (shift) => {\r\n const nodes = this.manager.getOrderedRefs();\r\n const { index: lastIndex } = nodes[nodes.length - 1].node.sortableInfo;\r\n const newIndex = this.newIndex + shift;\r\n const prevIndex = this.newIndex;\r\n\r\n if (newIndex < 0 || newIndex > lastIndex) {\r\n return;\r\n }\r\n\r\n this.prevIndex = prevIndex;\r\n this.newIndex = newIndex;\r\n\r\n const targetIndex = getTargetIndex(\r\n this.newIndex,\r\n this.prevIndex,\r\n this.index,\r\n );\r\n const target = nodes.find(\r\n ({ node }) => node.sortableInfo.index === targetIndex,\r\n );\r\n const { node: targetNode } = target;\r\n\r\n const scrollDelta = this.containerScrollDelta;\r\n const targetBoundingClientRect = target.boundingClientRect\r\n || getScrollAdjustedBoundingClientRect(targetNode, scrollDelta);\r\n const targetTranslate = target.translate || {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n const targetPosition = {\r\n top: targetBoundingClientRect.top + targetTranslate.y - scrollDelta.top,\r\n left:\r\n targetBoundingClientRect.left + targetTranslate.x - scrollDelta.left,\r\n };\r\n\r\n const shouldAdjustForSize = prevIndex < newIndex;\r\n const sizeAdjustment = {\r\n x:\r\n shouldAdjustForSize && this.axis.x\r\n ? targetNode.offsetWidth - this.width\r\n : 0,\r\n y:\r\n shouldAdjustForSize && this.axis.y\r\n ? targetNode.offsetHeight - this.height\r\n : 0,\r\n };\r\n\r\n this.handleSortMove({\r\n pageX: targetPosition.left + sizeAdjustment.x,\r\n pageY: targetPosition.top + sizeAdjustment.y,\r\n ignoreTransition: shift === 0,\r\n });\r\n };\r\n\r\n keyDrop = (event) => {\r\n this.handleSortEnd(event);\r\n\r\n if (this.initialFocusedNode) {\r\n this.initialFocusedNode.focus();\r\n }\r\n };\r\n\r\n handleKeyEnd = (event) => {\r\n if (this.manager.active) {\r\n this.keyDrop(event);\r\n }\r\n };\r\n\r\n isValidSortingTarget = (event) => {\r\n const { useDragHandle } = this.props;\r\n const { target } = event;\r\n const node = closest(target, el => el.sortableInfo != null);\r\n\r\n return (\r\n node\r\n && node.sortableInfo\r\n && !node.sortableInfo.disabled\r\n && (useDragHandle ? isSortableHandle(target) : target.sortableInfo)\r\n );\r\n };\r\n\r\n render() {\r\n const ref = config.withRef ? 'wrappedInstance' : null;\r\n\r\n return ;\r\n }\r\n\r\n get helperContainer() {\r\n const { props: { helperContainer } } = this;\r\n\r\n if (typeof helperContainer === 'function') {\r\n return helperContainer();\r\n }\r\n\r\n return helperContainer || this.document.body;\r\n }\r\n\r\n get containerScrollDelta() {\r\n const { useWindowAsScrollContainer } = this.props;\r\n\r\n if (useWindowAsScrollContainer) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n };\r\n }\r\n\r\n return {\r\n left: this.scrollContainer.scrollLeft - this.initialScroll.left,\r\n top: this.scrollContainer.scrollTop - this.initialScroll.top,\r\n };\r\n }\r\n\r\n get windowScrollDelta() {\r\n return {\r\n left: this.contentWindow.pageXOffset - this.initialWindowScroll.left,\r\n top: this.contentWindow.pageYOffset - this.initialWindowScroll.top,\r\n };\r\n }\r\n };\r\n}\r\n","const enums = {\r\n migrationStages:\r\n ['Not_Started',\r\n 'Dump_Generated_Successfully',\r\n 'In_Progress',\r\n 'Completed',\r\n 'Deleted',\r\n 'Errored',\r\n ],\r\n};\r\n\r\nexport default enums;\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst MIGRATION_STAGES = mapEnum(enums.migrationStages);\r\n\r\nexport { MIGRATION_STAGES };\r\n","const enums = { maintenanceEventStatus: ['Upcoming', 'Pending', 'Completed', 'Closed', 'Cancelled'] };\r\n\r\nexport default enums;\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst MAINTENANCE_EVENT_STATUS = mapEnum(enums.maintenanceEventStatus);\r\n\r\n\r\nexport { MAINTENANCE_EVENT_STATUS };\r\n","const linkStyles = theme => ({\r\n link: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n },\r\n reactlink: {\r\n display: 'flex',\r\n flex: '1 1 auto',\r\n height: '100%',\r\n textDecoration: 'none',\r\n color: theme.palette.primary.main,\r\n maxWidth: '100%',\r\n '&:hover': { color: theme.palette.secondary.main },\r\n },\r\n});\r\n\r\nexport default linkStyles;\r\n","const labelWithIconStyle = theme => ({\r\n\r\n labelWithIcon: { cursor: 'pointer' },\r\n noCursorPointer: { cursor: 'default' },\r\n spacing: { marginLeft: theme.spacing(1) },\r\n label: { ...theme.typography.body1 },\r\n addonEnd: {},\r\n addonStart: {},\r\n noPointerEvent: { pointerEvents: 'none' },\r\n});\r\nexport default labelWithIconStyle;\r\n","const typographyStyle = theme => ({\r\n fontFamily: ({ fontFamily }) => ({ fontFamily }),\r\n fontStyle: ({ fontStyle }) => ({ fontStyle }),\r\n disabled: { color: theme.palette.text.disabled },\r\n});\r\n\r\nexport default typographyStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\nimport theme from 'Commons/theme/Theme';\r\n\r\nconst GeneralPagesStyles = () => ({\r\n pageContainer: { height: '100%', backgroundColor: theme.palette.common.white },\r\n fullHeight: { height: '100vh' },\r\n gridContainer: { [media.laptopUp]: { display: 'inline-flex' } },\r\n image: { width: '80%', height: 'auto' },\r\n header: {\r\n fontSize: '1.5rem',\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(2),\r\n [media.tabletUp]: { fontSize: '3rem' },\r\n },\r\n title: {\r\n fontSize: '1rem',\r\n textAlign: 'center',\r\n [media.tabletUp]: { fontSize: '2rem' },\r\n },\r\n linkContainer: { marginTop: theme.spacing(3.75), display: 'inline-flex' },\r\n pageLink: {\r\n fontWeight: theme.typography.fontWeightRegular,\r\n fontSize: '1rem',\r\n [media.tabletUp]: { fontSize: '1.25rem' },\r\n },\r\n pageLinkButton: {\r\n backgroundColor: theme.palette.tertiary.main,\r\n cursor: 'pointer',\r\n border: 'none',\r\n padding: theme.spacing(1, 2.25),\r\n outline: 'none',\r\n borderRadius: theme.spacing(1.5),\r\n },\r\n});\r\nexport default GeneralPagesStyles;\r\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAxIiBoZWlnaHQ9IjM4NSIgdmlld0JveD0iMCAwIDUwMSAzODUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yMjkuNTcyIDMzOS45NTlDMzQ0LjU1NyAzMzkuOTU5IDQzNy43NzEgMzMyLjcyIDQzNy43NzEgMzIzLjc5MUM0MzcuNzcxIDMxNC44NjIgMzQ0LjU1NyAzMDcuNjIzIDIyOS41NzIgMzA3LjYyM0MxMTQuNTg3IDMwNy42MjMgMjEuMzczIDMxNC44NjIgMjEuMzczIDMyMy43OTFDMjEuMzczIDMzMi43MiAxMTQuNTg3IDMzOS45NTkgMjI5LjU3MiAzMzkuOTU5WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPGcgb3BhY2l0eT0iMC4xIj4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQxMy45NzQgMjMxLjY2NEM0MTIuNzMgMjI3Ljg4NiA0MDcuNjg0IDIyNi4xNDcgNDAyLjcwNyAyMjcuNzgzQzQwMS45OSAyMjguMDE3IDQwMS4yOTYgMjI4LjMxNyA0MDAuNjM0IDIyOC42OEM0MDAuMzE2IDIyOC41OTIgMzk5Ljk4OCAyMjguNTEzIDM5OS42NTUgMjI4LjQ1NEMzOTkuOTI3IDIyNy4zNjggNDAwLjAzMSAyMjYuMjQ2IDM5OS45NjMgMjI1LjEyOEM0MDEuNjggMjIzLjk3OSA0MDMuMDczIDIyMi40MDggNDA0LjAwOCAyMjAuNTY2QzQwNC45NDMgMjE4LjcyNCA0MDUuMzg5IDIxNi42NzMgNDA1LjMwMyAyMTQuNjA5QzQwNy4wMTUgMjEzLjQ1NyA0MDguNDAzIDIxMS44ODUgNDA5LjMzNSAyMTAuMDQzQzQxMC4yNjYgMjA4LjIwMSA0MTAuNzEgMjA2LjE1MiA0MTAuNjIzIDIwNC4wOUM0MTIuMzQ4IDIwMi45NTMgNDEzLjc0IDIwMS4zNzYgNDE0LjY1NSAxOTkuNTIzQzQxNy4wNTUgMTk0Ljc3MSA0MTYuMDYxIDE4OS40MzEgNDEyLjQzMSAxODcuNTkzQzQwOC44MDEgMTg1Ljc1NiA0MDMuOTA3IDE4OC4xMjMgNDAxLjUwNiAxOTIuODc1QzQwMC41NTUgMTk0LjcwOSA0MDAuMTEgMTk2Ljc2NCA0MDAuMjE4IDE5OC44MjhDMzk4LjUwNiAxOTkuOTggMzk3LjExOCAyMDEuNTUyIDM5Ni4xODYgMjAzLjM5M0MzOTUuMjU1IDIwNS4yMzUgMzk0LjgxMSAyMDcuMjg1IDM5NC44OTggMjA5LjM0N0MzOTMuMTg2IDIxMC40OTkgMzkxLjc5OCAyMTIuMDcxIDM5MC44NjYgMjEzLjkxMkMzODkuOTM1IDIxNS43NTQgMzg5LjQ5MSAyMTcuODA0IDM4OS41NzggMjE5Ljg2NkMzODcuODYyIDIyMS4wMTYgMzg2LjQ3IDIyMi41ODggMzg1LjUzNSAyMjQuNDMxQzM4NC42IDIyNi4yNzMgMzg0LjE1MyAyMjguMzI1IDM4NC4yMzggMjMwLjM5QzM4Mi41MTMgMjMxLjUyNyAzODEuMTIxIDIzMy4xMDMgMzgwLjIwNiAyMzQuOTU2QzM3OS43NTUgMjM1Ljg0OSAzNzkuNDEzIDIzNi43OTMgMzc5LjE4OCAyMzcuNzY4QzM3OC41ODYgMjM2Ljg4OSAzNzcuODUyIDIzNi4xMDcgMzc3LjAxMiAyMzUuNDUxQzM3Ni45MTYgMjM0LjcwMyAzNzYuNzUyIDIzMy45NjUgMzc2LjUyMyAyMzMuMjQ2QzM3NC44ODYgMjI4LjI2MyAzNzAuNDk3IDIyNS4yMjYgMzY2LjcyNSAyMjYuNDdDMzYyLjk1MyAyMjcuNzE1IDM2MS4yMDkgMjMyLjc1NiAzNjIuODQ1IDIzNy43MzlDMzYzLjUxNSAyMzkuODc1IDM2NC44MDQgMjQxLjc2NSAzNjYuNTQ5IDI0My4xNjdDMzY2LjY0NSAyNDMuOTE2IDM2Ni44MDkgMjQ0LjY1NCAzNjcuMDM5IDI0NS4zNzJDMzY3Ljk4OSAyNDguMjYzIDM2OS44NjUgMjUwLjQ5NyAzNzIuMDExIDI1MS42MTlDMzcxLjgyMSAyNTIuMjQzIDM3MS42ODUgMjUyLjg4MiAzNzEuNjA0IDI1My41M0MzNjkuNTgxIDI1NS40NzYgMzY4LjI3OSAyNTguMDUxIDM2Ny45MSAyNjAuODM1QzM2NS44ODYgMjYyLjc4MiAzNjQuNTgzIDI2NS4zNTkgMzY0LjIxNyAyNjguMTQ1QzM2My4yMTQgMjY5LjEwNyAzNjIuMzg2IDI3MC4yMzYgMzYxLjc2NyAyNzEuNDgxQzM1OS4zNjIgMjc2LjIzMyAzNjAuMzU3IDI4MS41NzkgMzYzLjk4NyAyODMuNDExQzM2Ny42MTcgMjg1LjI0MyAzNzIuNTEgMjgyLjg4NyAzNzQuOTE2IDI3OC4xM0MzNzUuNTUgMjc2Ljg4OSAzNzUuOTY0IDI3NS41NDggMzc2LjE0IDI3NC4xNjZDMzc4LjE2NCAyNzIuMjIgMzc5LjQ2NiAyNjkuNjQ0IDM3OS44MzQgMjY2Ljg2MUMzODEuODU5IDI2NC45MTQgMzgzLjE2MSAyNjIuMzM2IDM4My41MjggMjU5LjU1MUMzODUuNTM3IDI1Ny42IDM4Ni44MjQgMjU1LjAyNCAzODcuMTc3IDI1Mi4yNDZDMzg5LjIxIDI1MC4yOTkgMzkwLjUxNiAyNDcuNzE3IDM5MC44ODEgMjQ0LjkyNkMzOTEuNTA0IDI0NC4zMzUgMzkyLjA2MSAyNDMuNjc4IDM5Mi41NDIgMjQyLjk2NkMzOTQuNTQzIDI0My4zNzcgMzk2LjYxOCAyNDMuMjQ3IDM5OC41NTIgMjQyLjU4OUMzOTkuMjcgMjQyLjM1NSAzOTkuOTYzIDI0Mi4wNTUgNDAwLjYyNSAyNDEuNjkzQzQwMi43OTEgMjQyLjI2NCA0MDUuMDc5IDI0Mi4xODIgNDA3LjE5OSAyNDEuNDU3QzQxMi4xNjEgMjM5LjgzNiA0MTUuMjEzIDIzNS40NDYgNDEzLjk3NCAyMzEuNjY0WiIgZmlsbD0iIzNGM0Q1NiIvPg0KPGcgb3BhY2l0eT0iMC4xIj4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQwNS4xOSAyMTYuNzdDNDA0LjY3NiAyMTcuMjc1IDQwNC4xMTEgMjE3LjcyNyA0MDMuNTA1IDIxOC4xMTdDNDAzLjU4MiAyMTkuNTE1IDQwMy4zOTcgMjIwLjkxNiA0MDIuOTYxIDIyMi4yNDdDNDAzLjM0NiAyMjEuNzE0IDQwMy42OSAyMjEuMTUyIDQwMy45OSAyMjAuNTY3QzQwNC41OTcgMjE5LjM3NiA0MDUuMDAzIDIxOC4wOTMgNDA1LjE5IDIxNi43N1oiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00MTAuNTEgMjA2LjI1QzQwOS45OTYgMjA2Ljc1NiA0MDkuNDMxIDIwNy4yMDcgNDA4LjgyNSAyMDcuNTk3QzQwOC45MDIgMjA4Ljk5NiA0MDguNzE4IDIxMC4zOTcgNDA4LjI4MSAyMTEuNzI4QzQwOC42NjggMjExLjE5NCA0MDkuMDEyIDIxMC42MyA0MDkuMzEgMjEwLjA0MkM0MDkuOTE1IDIwOC44NTIgNDEwLjMyMSAyMDcuNTcxIDQxMC41MSAyMDYuMjVaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzk4LjQ0NCAyMDIuMzM2QzM5OC4zOTkgMjAxLjYxNSAzOTguNDI3IDIwMC44OTEgMzk4LjUyOCAyMDAuMTc2QzM5Ny41NzYgMjAxLjExMyAzOTYuNzg1IDIwMi4yMDEgMzk2LjE4NiAyMDMuMzk1QzM5NS44OSAyMDMuOTgzIDM5NS42NDEgMjA0LjU5NCAzOTUuNDQxIDIwNS4yMjJDMzk2LjI1MiAyMDQuMDggMzk3LjI3MSAyMDMuMTAxIDM5OC40NDQgMjAyLjMzNlYyMDIuMzM2WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM2NC42NzcgMjY1Ljk5NUMzNjUuMTA1IDI2NS4zOTggMzY1LjU4OSAyNjQuODQzIDM2Ni4xMjIgMjY0LjMzOUMzNjYuMjA1IDI2My42NzQgMzY2LjM0OCAyNjMuMDE4IDM2Ni41NDggMjYyLjM3OUMzNjYuMTIyIDI2Mi45NTEgMzY1Ljc0NyAyNjMuNTU5IDM2NS40MjYgMjY0LjE5N0MzNjUuMTMgMjY0Ljc3NiAzNjQuODggMjY1LjM3NyAzNjQuNjc3IDI2NS45OTVWMjY1Ljk5NVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zNjguMzcxIDI1OC42OTRDMzY4Ljc5OSAyNTguMDk3IDM2OS4yODMgMjU3LjU0MyAzNjkuODE2IDI1Ny4wMzhDMzY5Ljg5NiAyNTYuMzkgMzcwLjAzMiAyNTUuNzUxIDM3MC4yMjMgMjU1LjEyN1YyNTUuMTI3QzM2OS44MTYgMjU1LjY4MyAzNjkuNDU2IDI1Ni4yNzEgMzY5LjE0NSAyNTYuODg2QzM2OC44NDIgMjU3LjQ2OCAzNjguNTgzIDI1OC4wNzMgMzY4LjM3MSAyNTguNjk0VjI1OC42OTRaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzk5Ljg2NSAyMjcuMjlDMzk5LjM1NCAyMjcuNzk1IDM5OC43OSAyMjguMjQ1IDM5OC4xODUgMjI4LjYzMkMzOTguMjUyIDIyOS43NSAzOTguMTQ4IDIzMC44NzIgMzk3Ljg3NiAyMzEuOTU5QzM5OC4yMDYgMjMyLjAxNiAzOTguNTM0IDIzMi4wOTEgMzk4Ljg1NiAyMzIuMTg0QzM5OS41MTcgMjMxLjgyMSA0MDAuMjExIDIzMS41MjEgNDAwLjkyOCAyMzEuMjg3QzQwNS45MTUgMjI5LjY1MSA0MTAuOTU2IDIzMS4zOSA0MTIuMTk1IDIzNS4xNjhDNDEyLjUwMyAyMzYuMTE3IDQxMi41NTcgMjM3LjEzMSA0MTIuMzUyIDIzOC4xMDdDNDEzLjk5MyAyMzYuMTc3IDQxNC42NzQgMjMzLjgyNSA0MTMuOTY5IDIzMS42N0M0MTIuNzI0IDIyNy44OTIgNDA3LjY3OCAyMjYuMTUzIDQwMi43MDEgMjI3Ljc4OUM0MDEuOTg0IDIyOC4wMjMgNDAxLjI5IDIyOC4zMjMgNDAwLjYyOSAyMjguNjg2QzQwMC4zMTEgMjI4LjU5OCAzOTkuOTgyIDIyOC41MTkgMzk5LjY0OSAyMjguNDYxQzM5OS43NDIgMjI4LjA2OSAzOTkuODExIDIyNy42ODIgMzk5Ljg2NSAyMjcuMjlaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzYyLjg1NSAyNjkuNjY0QzM2Mi40MjkgMjcwLjIzNiAzNjIuMDUzIDI3MC44NDQgMzYxLjczMyAyNzEuNDgyQzM2MS40MzUgMjcyLjA3MiAzNjEuMTgzIDI3Mi42ODUgMzYwLjk3OSAyNzMuMzE0QzM2MS40MTYgMjcyLjcxNSAzNjEuOTA4IDI3Mi4xNTcgMzYyLjQ0OCAyNzEuNjQ4QzM2Mi41MjQgMjcwLjk3NiAzNjIuNjYgMjcwLjMxMiAzNjIuODU1IDI2OS42NjRWMjY5LjY2NFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zOTMuMSAyMTIuODU2QzM5My4wNTUgMjEyLjEzNSAzOTMuMDgzIDIxMS40MTEgMzkzLjE4MyAyMTAuNjk1QzM5Mi4yMzIgMjExLjYzMyAzOTEuNDQxIDIxMi43MiAzOTAuODQxIDIxMy45MTRDMzkwLjU0NiAyMTQuNTAzIDM5MC4yOTcgMjE1LjExNCAzOTAuMDk3IDIxNS43NDJDMzkwLjkwNyAyMTQuNiAzOTEuOTI2IDIxMy42MjEgMzkzLjEgMjEyLjg1NlYyMTIuODU2WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM4NS40MTQgMjU1Ljc1NUMzODUuMzE3IDI1Ni40ODQgMzg1LjE1MyAyNTcuMjAyIDM4NC45MjQgMjU3LjkwMUMzODUuMzA3IDI1Ny4zNjYgMzg1LjY0OSAyNTYuODAyIDM4NS45NDggMjU2LjIxNkMzODYuMjY5IDI1NS41ODYgMzg2LjUzNiAyNTQuOTMxIDM4Ni43NDYgMjU0LjI1NkMzODYuMzQ1IDI1NC43OTIgMzg1Ljg5OSAyNTUuMjk0IDM4NS40MTQgMjU1Ljc1NVYyNTUuNzU1WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM3OC4wMjYgMjcwLjM2NEMzNzcuOTMgMjcxLjA5MyAzNzcuNzY2IDI3MS44MTIgMzc3LjUzNiAyNzIuNTFDMzc3LjkyMyAyNzEuOTc2IDM3OC4yNjcgMjcxLjQxMyAzNzguNTY1IDI3MC44MjVDMzc4Ljg4NCAyNzAuMTk1IDM3OS4xNTEgMjY5LjUzOSAzNzkuMzYzIDI2OC44NjVDMzc4Ljk2MiAyNjkuNDAzIDM3OC41MTQgMjY5LjkwNSAzNzguMDI2IDI3MC4zNjRWMjcwLjM2NFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zODEuNzIgMjYzLjA1NEMzODEuNjI0IDI2My43ODMgMzgxLjQ2IDI2NC41MDEgMzgxLjIzIDI2NS4yQzM4MS42MjEgMjY0LjY3NSAzODEuOTcxIDI2NC4xMjEgMzgyLjI3OSAyNjMuNTQ0QzM4Mi42IDI2Mi45MTQgMzgyLjg2NyAyNjIuMjU5IDM4My4wNzcgMjYxLjU4NEMzODIuNjY3IDI2Mi4xMTEgMzgyLjIxMyAyNjIuNjAzIDM4MS43MiAyNjMuMDU0VjI2My4wNTRaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzg5LjEwNyAyNDguNDVDMzg5LjAxMSAyNDkuMTc3IDM4OC44NDcgMjQ5Ljg5NCAzODguNjE3IDI1MC41OTFDMzg5LjAwMSAyNTAuMDU4IDM4OS4zNDQgMjQ5LjQ5NiAzODkuNjQxIDI0OC45MUMzODkuOTY2IDI0OC4yNyAzOTAuMjM0IDI0Ny42MDMgMzkwLjQ0NCAyNDYuOTE2QzM5MC4wNDUgMjQ3LjQ2NiAzODkuNTk4IDI0Ny45NzkgMzg5LjEwNyAyNDguNDVWMjQ4LjQ1WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM2NC45MjIgMjI5Ljk3M0MzNjguNzA0IDIyOC43MzQgMzczLjA5MyAyMzEuNzY3IDM3NC43MiAyMzYuNzQ5QzM3NC45NDkgMjM3LjQ3IDM3NS4xMTMgMjM4LjIwOSAzNzUuMjA5IDIzOC45NTlDMzc2LjA0OSAyMzkuNjE1IDM3Ni43ODMgMjQwLjM5NyAzNzcuMzg1IDI0MS4yNzZDMzc3LjYxIDI0MC4zIDM3Ny45NTIgMjM5LjM1NCAzNzguNDAzIDIzOC40NTlDMzc4LjU3NSAyMzguMTI2IDM3OC43NjEgMjM3LjgwOCAzNzguOTUyIDIzNy40NzlDMzc4LjM5NiAyMzYuNzEgMzc3LjczNyAyMzYuMDIxIDM3Ni45OTMgMjM1LjQzMUMzNzYuODk3IDIzNC42ODMgMzc2LjczMyAyMzMuOTQ1IDM3Ni41MDMgMjMzLjIyN0MzNzQuODY3IDIyOC4yNDQgMzcwLjQ3NyAyMjUuMjA2IDM2Ni43MDUgMjI2LjQ1MUMzNjQuNTUgMjI3LjE1NiAzNjMuMDYgMjI5LjEwMSAzNjIuNDgyIDIzMS41NjFDMzYzLjE0NSAyMzAuODMgMzYzLjk4NiAyMzAuMjg0IDM2NC45MjIgMjI5Ljk3M1YyMjkuOTczWiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM4Mi40NiAyMzMuODk0QzM4Mi40MTcgMjMzLjE3NCAzODIuNDQ2IDIzMi40NTIgMzgyLjU0OCAyMzEuNzM4QzM4MS41OTQgMjMyLjY3NCAzODAuODAxIDIzMy43NjIgMzgwLjIwMiAyMzQuOTU3QzM3OS45MDUgMjM1LjU0NCAzNzkuNjU2IDIzNi4xNTMgMzc5LjQ1NyAyMzYuNzhDMzgwLjI3IDIzNS42NCAzODEuMjg4IDIzNC42NjEgMzgyLjQ2IDIzMy44OTRWMjMzLjg5NFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zODcuNzc5IDIyMy4zNjlDMzg3LjczNiAyMjIuNjQ5IDM4Ny43NjYgMjIxLjkyNyAzODcuODY3IDIyMS4yMTNDMzg2LjkxMiAyMjIuMTQ2IDM4Ni4xMTkgMjIzLjIzMyAzODUuNTIxIDIyNC40MjdDMzg1LjIyNSAyMjUuMDE2IDM4NC45NzYgMjI1LjYyNyAzODQuNzc2IDIyNi4yNTRDMzg1LjU4NyAyMjUuMTEyIDM4Ni42MDYgMjI0LjEzMyAzODcuNzc5IDIyMy4zNjlWMjIzLjM2OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zNzQuMzMzIDI3Ny42NjlDMzc0LjIzNiAyNzguNCAzNzQuMDcyIDI3OS4xMiAzNzMuODQzIDI3OS44MkMzNzQuNjQ4IDI3OC43MDUgMzc1LjI2NSAyNzcuNDY1IDM3NS42NyAyNzYuMTVDMzc1LjI3IDI3Ni42OTUgMzc0LjgyMiAyNzcuMjAzIDM3NC4zMzMgMjc3LjY2OVYyNzcuNjY5WiIgZmlsbD0iYmxhY2siLz4NCjwvZz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQyMS4yMzMgMTgzLjA1MkM0MjIuOTYgMTgxLjkxNiA0MjQuMzUxIDE4MC4zMzkgNDI1LjI2NSAxNzguNDg1QzQyNy42NyAxNzMuNzMzIDQyNi42NzUgMTY4LjM4OCA0MjMuMDQ1IDE2Ni41NUM0MTkuNDE1IDE2NC43MTMgNDE0LjUyMiAxNjcuMDggNDEyLjExNiAxNzEuODM3QzQxMS4xNjMgMTczLjY3NiA0MTAuNzIgMTc1LjczNiA0MTAuODMzIDE3Ny44MDRDNDA5LjEyMSAxNzguOTU2IDQwNy43MzIgMTgwLjUyOCA0MDYuODAxIDE4Mi4zN0M0MDUuODcgMTg0LjIxMiA0MDUuNDI2IDE4Ni4yNjEgNDA1LjUxMyAxODguMzIzQzQwMy43ODUgMTg5LjQ1OCA0MDIuMzkzIDE5MS4wMzUgNDAxLjQ4MSAxOTIuODlDNDAxLjE4NiAxOTMuNDcxIDQwMC45MzkgMTk0LjA3NiA0MDAuNzQxIDE5NC42OTdDNDAyLjAyIDE5Mi44NDUgNDAzLjg3NSAxOTEuNDY3IDQwNi4wMTcgMTkwLjc3OEM0MDYuMjYxIDE5MS41MzMgNDA2LjY1MiAxOTIuMjMxIDQwNy4xNjggMTkyLjgzNEM0MDcuNjg0IDE5My40MzYgNDA4LjMxNCAxOTMuOTMgNDA5LjAyMiAxOTQuMjg4QzQwOS43MyAxOTQuNjQ1IDQxMC41MDIgMTk0Ljg1OCA0MTEuMjkzIDE5NC45MTVDNDEyLjA4NCAxOTQuOTcyIDQxMi44NzggMTk0Ljg3MSA0MTMuNjMgMTk0LjYxOUM0MTQuMzUzIDE5Ni43NDkgNDE0LjM1MyAxOTkuMDU5IDQxMy42MyAyMDEuMTg5QzQxNC4wMTMgMjAwLjY2MSA0MTQuMzUzIDIwMC4xMDQgNDE0LjY0OSAxOTkuNTIzQzQxNS41OTkgMTk3LjY4OSA0MTYuMDQyIDE5NS42MzQgNDE1LjkzMiAxOTMuNTcxQzQxNy42NDcgMTkyLjQyMSA0MTkuMDM2IDE5MC44NDkgNDE5Ljk2OCAxODkuMDA3QzQyMC45IDE4Ny4xNjUgNDIxLjM0MiAxODUuMTE0IDQyMS4yNTIgMTgzLjA1Mkg0MjEuMjMzWiIgZmlsbD0iIzNGM0Q1NiIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDc5LjcwNiAxMTUuNjE2QzQ4MS4xODMgMTE0LjkyNiA0ODIuNjEgMTE0LjEzNiA0ODMuOTc4IDExMy4yNDlMNDY4LjE0IDEwMS42NzdMNDg2Ljc1NSAxMTEuMjY1QzQ5MC41MjEgMTA4LjI3MyA0OTMuNjM3IDEwNC41NDMgNDk1LjkxMSAxMDAuMzA1QzQ5OC4xODUgOTYuMDY2NyA0OTkuNTcxIDkxLjQwODYgNDk5Ljk4MiA4Ni42MTZMNDY4LjM0NiA4Ni45MzkzTDUwMC4wNTEgODEuNjM4MkM0OTkuNzIzIDc2Ljg0MDkgNDk4LjQxOCA3Mi4xNjEzIDQ5Ni4yMTYgNjcuODg2OEM0OTQuMDE0IDYzLjYxMjMgNDkwLjk2MSA1OS44MzMyIDQ4Ny4yNDUgNTYuNzgxNkM0ODMuNTMgNTMuNzMgNDc5LjIzIDUxLjQ3MDMgNDc0LjYwOSA1MC4xNDE0QzQ2OS45ODggNDguODEyNiA0NjUuMTQ1IDQ4LjQ0MjUgNDYwLjM3NiA0OS4wNTRDNDU1LjYwNyA0OS42NjU1IDQ1MS4wMTQgNTEuMjQ1NiA0NDYuODc4IDUzLjY5NzNDNDQyLjc0MiA1Ni4xNDkgNDM5LjE1IDU5LjQyMDUgNDM2LjMyNSA2My4zMTA5QzQzMy40OTkgNjcuMjAxMiA0MzEuNDk4IDcxLjYyODMgNDMwLjQ0NiA3Ni4zMjAxQzQyOS4zOTMgODEuMDExOSA0MjkuMzExIDg1Ljg2OTUgNDMwLjIwNCA5MC41OTQzQzQyNy45MDQgOTEuNjYzNyA0MjUuNzI2IDkyLjk3NzggNDIzLjcwOCA5NC41MTM4TDQ0MC4yNDEgMTE3LjUwN0w0MjAuMzkxIDk3LjM4QzQxNi4yMDIgMTAxLjQ5NCA0MTMuMTA1IDEwNi41ODggNDExLjM3OSAxMTIuMjAxQzQwOS42NTQgMTE3LjgxMyA0MDkuMzU1IDEyMy43NjggNDEwLjUxIDEyOS41MjVDNDA0LjUxNCAxMzIuMzI0IDM5OS40MjYgMTM2Ljc1NCAzOTUuODI4IDE0Mi4zMDhDMzkyLjIyOSAxNDcuODYzIDM5MC4yNjYgMTU0LjMxNyAzOTAuMTYyIDE2MC45MzVDMzkwLjA1NyAxNjcuNTUyIDM5MS44MTcgMTc0LjA2NSAzOTUuMjM4IDE3OS43M0MzOTguNjYgMTg1LjM5NSA0MDMuNjA2IDE4OS45ODMgNDA5LjUxMiAxOTIuOTdDNDE1LjQxNyAxOTUuOTU2IDQyMi4wNDMgMTk3LjIyMSA0MjguNjMzIDE5Ni42MkM0MzUuMjIzIDE5Ni4wMTkgNDQxLjUxMSAxOTMuNTc1IDQ0Ni43NzkgMTg5LjU2OUM0NTIuMDQ2IDE4NS41NjMgNDU2LjA4MSAxODAuMTU2IDQ1OC40MjEgMTczLjk2NUM0NjAuNzYxIDE2Ny43NzQgNDYxLjMxMyAxNjEuMDUgNDYwLjAxMyAxNTQuNTYxQzQ2Ny4xODggMTUxLjIyMSA0NzMuMDMyIDE0NS41NjMgNDc2LjYwNCAxMzguNUM0ODAuMTc2IDEzMS40MzYgNDgxLjI2OCAxMjMuMzc2IDQ3OS43MDYgMTE1LjYxNloiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQxMy42MzEgMTA2LjY0MkM0MTAuMDQ3IDExMy43MDIgNDA4Ljk1MSAxMjEuNzY2IDQxMC41MiAxMjkuNTI3QzQwNC41MjQgMTMyLjMyNiAzOTkuNDM2IDEzNi43NTYgMzk1LjgzNyAxNDIuMzFDMzkyLjIzOSAxNDcuODY1IDM5MC4yNzYgMTU0LjMxOSAzOTAuMTcxIDE2MC45MzdDMzkwLjA2NyAxNjcuNTU0IDM5MS44MjYgMTc0LjA2NyAzOTUuMjQ4IDE3OS43MzJDMzk4LjY3IDE4NS4zOTcgNDAzLjYxNiAxODkuOTg1IDQwOS41MjEgMTkyLjk3MkM0MTUuNDI3IDE5NS45NTggNDIyLjA1MyAxOTcuMjIzIDQyOC42NDMgMTk2LjYyMkM0MzUuMjMzIDE5Ni4wMjEgNDQxLjUyMSAxOTMuNTc3IDQ0Ni43ODkgMTg5LjU3MUM0NTIuMDU2IDE4NS41NjUgNDU2LjA5IDE4MC4xNTggNDU4LjQzMSAxNzMuOTY3QzQ2MC43NzEgMTY3Ljc3NiA0NjEuMzIyIDE2MS4wNTIgNDYwLjAyMyAxNTQuNTYzQzQ2Ni45NDUgMTUxLjM0OSA0MTUuNDA0IDEwMy4xMDkgNDEzLjYzMSAxMDYuNjQyWiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQ1My4zNzkgNTUuNTY0OEM0NTYuMjcyIDU1LjU2NDggNDU4LjYxNiA1My4yMTk5IDQ1OC42MTYgNTAuMzI3M0M0NTguNjE2IDQ3LjQzNDcgNDU2LjI3MiA0NS4wODk4IDQ1My4zNzkgNDUuMDg5OEM0NTAuNDg3IDQ1LjA4OTggNDQ4LjE0MyA0Ny40MzQ3IDQ0OC4xNDMgNTAuMzI3M0M0NDguMTQzIDUzLjIxOTkgNDUwLjQ4NyA1NS41NjQ4IDQ1My4zNzkgNTUuNTY0OFoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQ4My45NjcgNTguOTI2MUM0ODYuODYgNTguOTI2MSA0ODkuMjA0IDU2LjU4MTIgNDg5LjIwNCA1My42ODg2QzQ4OS4yMDQgNTAuNzk2MSA0ODYuODYgNDguNDUxMiA0ODMuOTY3IDQ4LjQ1MTJDNDgxLjA3NSA0OC40NTEyIDQ3OC43MyA1MC43OTYxIDQ3OC43MyA1My42ODg2QzQ3OC43MyA1Ni41ODEyIDQ4MS4wNzUgNTguOTI2MSA0ODMuOTY3IDU4LjkyNjFaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00OTUuNzYzIDEwNS45ODlDNDk4LjY1NSAxMDUuOTg5IDUwMSAxMDMuNjQ0IDUwMSAxMDAuNzUxQzUwMSA5Ny44NTg2IDQ5OC42NTUgOTUuNTEzNyA0OTUuNzYzIDk1LjUxMzdDNDkyLjg3MSA5NS41MTM3IDQ5MC41MjYgOTcuODU4NiA0OTAuNTI2IDEwMC43NTFDNDkwLjUyNiAxMDMuNjQ0IDQ5Mi44NzEgMTA1Ljk4OSA0OTUuNzYzIDEwNS45ODlaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00NzkuODQyIDEyOS40OTJDNDgyLjczNSAxMjkuNDkyIDQ4NS4wNzkgMTI3LjE0OCA0ODUuMDc5IDEyNC4yNTVDNDg1LjA3OSAxMjEuMzYyIDQ4Mi43MzUgMTE5LjAxOCA0NzkuODQyIDExOS4wMThDNDc2Ljk1IDExOS4wMTggNDc0LjYwNSAxMjEuMzYyIDQ3NC42MDUgMTI0LjI1NUM0NzQuNjA1IDEyNy4xNDggNDc2Ljk1IDEyOS40OTIgNDc5Ljg0MiAxMjkuNDkyWiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDU4LjA5MiAxNzguMzA1QzQ2MC45ODQgMTc4LjMwNSA0NjMuMzI5IDE3NS45NiA0NjMuMzI5IDE3My4wNjhDNDYzLjMyOSAxNzAuMTc1IDQ2MC45ODQgMTY3LjgzIDQ1OC4wOTIgMTY3LjgzQzQ1NS4yIDE2Ny44MyA0NTIuODU1IDE3MC4xNzUgNDUyLjg1NSAxNzMuMDY4QzQ1Mi44NTUgMTc1Ljk2IDQ1NS4yIDE3OC4zMDUgNDU4LjA5MiAxNzguMzA1WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDU4LjA5MiAxNzguMzA1QzQ2MC45ODQgMTc4LjMwNSA0NjMuMzI5IDE3NS45NiA0NjMuMzI5IDE3My4wNjhDNDYzLjMyOSAxNzAuMTc1IDQ2MC45ODQgMTY3LjgzIDQ1OC4wOTIgMTY3LjgzQzQ1NS4yIDE2Ny44MyA0NTIuODU1IDE3MC4xNzUgNDUyLjg1NSAxNzMuMDY4QzQ1Mi44NTUgMTc1Ljk2IDQ1NS4yIDE3OC4zMDUgNDU4LjA5MiAxNzguMzA1WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQwOS43MzEgMTIzLjAyQzQxMi42MjMgMTIzLjAyIDQxNC45NjggMTIwLjY3NSA0MTQuOTY4IDExNy43ODJDNDE0Ljk2OCAxMTQuODkgNDEyLjYyMyAxMTIuNTQ1IDQwOS43MzEgMTEyLjU0NUM0MDYuODM5IDExMi41NDUgNDA0LjQ5NCAxMTQuODkgNDA0LjQ5NCAxMTcuNzgyQzQwNC40OTQgMTIwLjY3NSA0MDYuODM5IDEyMy4wMiA0MDkuNzMxIDEyMy4wMloiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQwOS43MzEgMTIzLjAyQzQxMi42MjMgMTIzLjAyIDQxNC45NjggMTIwLjY3NSA0MTQuOTY4IDExNy43ODJDNDE0Ljk2OCAxMTQuODkgNDEyLjYyMyAxMTIuNTQ1IDQwOS43MzEgMTEyLjU0NUM0MDYuODM5IDExMi41NDUgNDA0LjQ5NCAxMTQuODkgNDA0LjQ5NCAxMTcuNzgyQzQwNC40OTQgMTIwLjY3NSA0MDYuODM5IDEyMy4wMiA0MDkuNzMxIDEyMy4wMloiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00MDQuMTQ3IDIwMy45MjlDNDAwLjY2NCAyMDIuMTcgMzk5LjYxIDE5Ny4xODcgNDAxLjY0MyAxOTIuNTkyQzQwMS41MzYgMTkyLjc3OCA0MDEuNDMzIDE5Mi45NjkgNDAxLjMzNSAxOTMuMTdDMzk4LjkyOSAxOTcuOTIyIDM5OS45MjQgMjAzLjI2MyA0MDMuNTU0IDIwNS4xQzQwNy4xODQgMjA2LjkzNyA0MTIuMDc4IDIwNC41NzEgNDE0LjQ3OCAxOTkuODE4QzQxNC41ODEgMTk5LjYyMiA0MTQuNjY5IDE5OS40MjIgNDE0Ljc1OCAxOTkuMjI2QzQxMi4yNjQgMjAzLjU5MSA0MDcuNjI1IDIwNS42OTMgNDA0LjE0NyAyMDMuOTI5WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM5OC45NzMgMjE0LjE1OUMzOTUuNDk1IDIxMi40IDM5NC40MzcgMjA3LjQxNyAzOTYuNDc0IDIwMi44MTZDMzk2LjM2NyAyMDMuMDA3IDM5Ni4yNTkgMjAzLjE5OSAzOTYuMTYxIDIwMy4zOTVDMzkzLjc1NiAyMDguMTQ3IDM5NC43NSAyMTMuNDkyIDM5OC4zOCAyMTUuMzI1QzQwMi4wMSAyMTcuMTU3IDQwNi45MDQgMjE0LjggNDA5LjMwOSAyMTAuMDQzQzQwOS40MDcgMjA5Ljg0NyA0MDkuNSAyMDkuNjUxIDQwOS41ODkgMjA5LjQ1QzQwNy4wOSAyMTMuODE2IDQwMi40NTYgMjE1LjkxNyAzOTguOTczIDIxNC4xNTlaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzkzLjggMjI0LjM4NEMzOTAuMzIyIDIyMi42MjUgMzg5LjI2NCAyMTcuNjQzIDM5MS4zMDIgMjEzLjA0N0MzOTEuMTk0IDIxMy4yMzMgMzkxLjA4NyAyMTMuNDI0IDM5MC45ODkgMjEzLjYyNUMzODguNTgzIDIxOC4zNzcgMzg5LjU4MyAyMjMuNzE4IDM5My4yMTMgMjI1LjU1NUMzOTYuODQzIDIyNy4zOTIgNDAxLjczMiAyMjUuMDI2IDQwNC4xMzcgMjIwLjI3NEM0MDQuMjM1IDIyMC4wNzggNDA0LjMyOCAyMTkuODc3IDQwNC40MTYgMjE5LjY4MUM0MDEuOTIzIDIyNC4wNDYgMzk3LjI4NCAyMjYuMTQ4IDM5My44IDIyNC4zODRaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzg4LjY0NiAyMzQuNjM4QzM4NS4xNjMgMjMyLjg3OSAzODQuMTEgMjI3Ljg5NiAzODYuMTQzIDIyMy4zMDFDMzg2LjAzNSAyMjMuNDg3IDM4NS45MzIgMjIzLjY3OCAzODUuODI5IDIyMy44NzRDMzgzLjQyOSAyMjguNjI2IDM4NC40MjMgMjMzLjk3MiAzODguMDUzIDIzNS44MDlDMzkxLjY4MyAyMzcuNjQ2IDM5Ni41NzcgMjM1LjI4IDM5OC45NzggMjMwLjUyMkMzOTkuMDggMjMwLjMyNiAzOTkuMTY5IDIzMC4xMzEgMzk5LjI1NyAyMjkuOTNDMzk2Ljc0OSAyMzQuMjcxIDM5Mi4xMDkgMjM2LjM3MiAzODguNjQ2IDIzNC42MzhaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzgzLjQ1OCAyNDQuODM3QzM3OS45NzUgMjQzLjA3OCAzNzguOTIyIDIzOC4wOTYgMzgwLjk1NSAyMzMuNUMzODAuODQ3IDIzMy42ODYgMzgwLjc0NCAyMzMuODc3IDM4MC42NDYgMjM0LjA3OEMzNzguMjQxIDIzOC44MzEgMzc5LjIzNSAyNDQuMTcxIDM4Mi44NjUgMjQ2LjAwOEMzODYuNDk1IDI0Ny44NDUgMzkxLjM4OSAyNDUuNDc5IDM5My43OTUgMjQwLjcyN0MzOTMuODkzIDI0MC41MzEgMzkzLjk4NiAyNDAuMzMgMzk0LjA3NCAyNDAuMTM0QzM5MS41ODUgMjQ0LjQ5OSAzODYuOTM2IDI0Ni42MDEgMzgzLjQ1OCAyNDQuODM3WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM3OC4yODUgMjU1LjA2OEMzNzQuODA3IDI1My4zMDkgMzczLjc0OSAyNDguMzI2IDM3NS43ODcgMjQzLjczQzM3NS42NzkgMjQzLjkxNyAzNzUuNTcxIDI0NC4xMDggMzc1LjQ3MyAyNDQuMzA0QzM3My4wNjggMjQ5LjA1NiAzNzQuMDYyIDI1NC40MDEgMzc3LjY5NyAyNTYuMjM5QzM4MS4zMzIgMjU4LjA3NiAzODYuMTk3IDI1NS43MDUgMzg4LjY0NiAyNTAuOTUyQzM4OC43NDQgMjUwLjc1NiAzODguODM3IDI1MC41NiAzODguOTI1IDI1MC4zNTlDMzg2LjQwMiAyNTQuNzI1IDM4MS43ODggMjU2LjgyNyAzNzguMjg1IDI1NS4wNjhaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzczLjExMyAyNjUuMjk0QzM2OS42MzUgMjYzLjUzNSAzNjguNTc2IDI1OC41NTMgMzcwLjYxNCAyNTMuOTU3QzM3MC41MDcgMjU0LjE0OCAzNzAuNDA0IDI1NC4zMzQgMzcwLjMwMSAyNTQuNTM1QzM2Ny45IDI1OS4yODggMzY4Ljg5NSAyNjQuNjI4IDM3Mi41MjUgMjY2LjQ2NUMzNzYuMTU1IDI2OC4zMDIgMzgxLjA0OSAyNjUuOTM2IDM4My40NDkgMjYxLjE4NEMzODMuNTUyIDI2MC45ODggMzgzLjY0IDI2MC43ODcgMzgzLjcyOCAyNjAuNTkxQzM4MS4yMzUgMjY0Ljk1NiAzNzYuNTk2IDI2Ny4wNTggMzczLjExMyAyNjUuMjk0WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM2Ny45NDUgMjc1LjUyM0MzNjQuNDYxIDI3My43NjQgMzYzLjQwOCAyNjguNzgxIDM2NS40NDEgMjY0LjE4NkMzNjUuMzMzIDI2NC4zNzIgMzY1LjIzMSAyNjQuNTYzIDM2NS4xMzMgMjY0Ljc1OUMzNjIuNzI3IDI2OS41MTEgMzYzLjcyMiAyNzQuODU2IDM2Ny4zNTIgMjc2LjY5NEMzNzAuOTgyIDI3OC41MzEgMzc1Ljg3NiAyNzYuMTY1IDM3OC4yODEgMjcxLjQwN0MzNzguMzc5IDI3MS4yMTEgMzc4LjQ2NyAyNzEuMDE1IDM3OC41NTUgMjcwLjgxNEMzNzYuMDYyIDI3NS4xOCAzNzEuNDIzIDI3Ny4yNjIgMzY3Ljk0NSAyNzUuNTIzWiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM2NC41NDQgMjgyLjI0NkMzNjEuMDY2IDI4MC40ODMgMzYwLjAwOCAyNzUuNTA1IDM2Mi4wNDYgMjcwLjkwNEMzNjEuOTM4IDI3MS4wOTUgMzYxLjgzIDI3MS4yODYgMzYxLjczMiAyNzEuNDgyQzM1OS4zMjcgMjc2LjIzNSAzNjAuMzIxIDI4MS41OCAzNjMuOTUxIDI4My40MTJDMzY3LjU4MSAyODUuMjQ1IDM3Mi40NzUgMjgyLjg4OCAzNzQuODgxIDI3OC4xMzFDMzc0Ljk3OSAyNzcuOTM1IDM3NS4wNzIgMjc3LjczOSAzNzUuMTYgMjc3LjUzOEMzNzIuNjYxIDI4MS45MDMgMzY4LjAyMiAyODQuMDA1IDM2NC41NDQgMjgyLjI0NloiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00NTguMDA5IDIzNi43MjVDNDU4LjU0OCAyMzUuMTc3IDQ1OC44NzggMjMzLjU2NCA0NTguOTg5IDIzMS45MjhDNDU5LjM0OCAyMzEuOTI3IDQ1OS43MDQgMjMxLjg1MiA0NjAuMDM0IDIzMS43MDhDNDYwLjM2MyAyMzEuNTYzIDQ2MC42NTkgMjMxLjM1MiA0NjAuOTA0IDIzMS4wODhDNDYxLjE0OCAyMzAuODI0IDQ2MS4zMzUgMjMwLjUxMiA0NjEuNDUzIDIzMC4xNzJDNDYxLjU3MiAyMjkuODMyIDQ2MS42MTkgMjI5LjQ3MiA0NjEuNTkxIDIyOS4xMTNDNDYxLjU2NCAyMjguNzU0IDQ2MS40NjMgMjI4LjQwNSA0NjEuMjk0IDIyOC4wODdDNDYxLjEyNiAyMjcuNzY5IDQ2MC44OTQgMjI3LjQ4OSA0NjAuNjEyIDIyNy4yNjVDNDYwLjMzMSAyMjcuMDQxIDQ2MC4wMDYgMjI2Ljg3NyA0NTkuNjU4IDIyNi43ODRDNDU5LjMxMSAyMjYuNjkxIDQ1OC45NDggMjI2LjY3MSA0NTguNTkyIDIyNi43MjVDNDU4LjAxIDIyNC4wNzMgNDU2Ljg0NCAyMjEuNTg0IDQ1NS4xOCAyMTkuNDM5QzQ1My41MTUgMjE3LjI5NCA0NTEuMzk0IDIxNS41NDcgNDQ4Ljk3MSAyMTQuMzI1QzQ0OS4yODQgMjEzLjcwNSA0NDkuMzM4IDIxMi45ODYgNDQ5LjEyMSAyMTIuMzI2QzQ0OC45MDQgMjExLjY2NiA0NDguNDM0IDIxMS4xMiA0NDcuODE0IDIxMC44MDdDNDQ3LjE5NSAyMTAuNDk0IDQ0Ni40NzYgMjEwLjQzOSA0NDUuODE2IDIxMC42NTZDNDQ1LjE1NyAyMTAuODczIDQ0NC42MSAyMTEuMzQzIDQ0NC4yOTcgMjExLjk2M0M0NDQuMTg0IDIxMi4xODMgNDQ0LjEwNCAyMTIuNDIgNDQ0LjA2MiAyMTIuNjY0QzQ0MS4xODggMjEyLjEyOCA0MzguMjI3IDIxMi4yODcgNDM1LjQyNiAyMTMuMTI2QzQzMi42MjYgMjEzLjk2NSA0MzAuMDY2IDIxNS40NjEgNDI3Ljk2IDIxNy40OUM0MjYuMzY5IDIxNy4yMzIgNDI0Ljc1MiAyMTcuMTg0IDQyMy4xNDkgMjE3LjM0N0w0MjEuMDI4IDIyNy4wMDRMNDIwLjkgMjE3LjY5NUM0MTguNDY2IDIxOC4yMjkgNDE2LjE2NiAyMTkuMjU0IDQxNC4xNCAyMjAuNzA3QzQxMi4xMTUgMjIyLjE2IDQxMC40MDcgMjI0LjAxIDQwOS4xMjIgMjI2LjE0NkM0MDcuODM2IDIyOC4yODEgNDA2Ljk5OSAyMzAuNjU2IDQwNi42NjIgMjMzLjEyNkM0MDYuMzI1IDIzNS41OTYgNDA2LjQ5NiAyMzguMTA5IDQwNy4xNjMgMjQwLjUxMUM0MDcuODMgMjQyLjkxMiA0MDguOTggMjQ1LjE1MyA0MTAuNTQyIDI0Ny4wOTVDNDEyLjEwNCAyNDkuMDM3IDQxNC4wNDYgMjUwLjY0MSA0MTYuMjQ5IDI1MS44MDdDNDE4LjQ1MiAyNTIuOTczIDQyMC44NjkgMjUzLjY3OCA0MjMuMzU0IDI1My44NzhDNDI1LjgzOCAyNTQuMDc4IDQyOC4zMzcgMjUzLjc3IDQzMC42OTggMjUyLjk3MUM0MzAuOTUxIDI1My40MjcgNDMxLjMzNSAyNTMuNzk2IDQzMS44IDI1NC4wMjlDNDMyLjI4IDI1NC4yNzMgNDMyLjgyMyAyNTQuMzYzIDQzMy4zNTYgMjU0LjI4N0M0MzMuODg4IDI1NC4yMSA0MzQuMzg1IDI1My45NzIgNDM0Ljc3NyAyNTMuNjAzQzQzNS4xNjkgMjUzLjIzNSA0MzUuNDM4IDI1Mi43NTQgNDM1LjU0NyAyNTIuMjI3QzQzNS42NTYgMjUxLjcgNDM1LjYgMjUxLjE1MiA0MzUuMzg2IDI1MC42NThDNDM2LjIyMiAyNTAuMDg1IDQzNy4wMDggMjQ5LjQ0MiA0MzcuNzM4IDI0OC43MzhDNDQxLjU2MiAyNDkuMzYgNDQ1LjQ4NSAyNDguNzU1IDQ0OC45NDUgMjQ3LjAwOUM0NTIuNDA0IDI0NS4yNjQgNDU1LjIyMiAyNDIuNDY4IDQ1Ni45OTUgMjM5LjAyMkw0NDcuMTI0IDIzNy4zNjJMNDU4LjAwOSAyMzYuNzI1WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPGcgb3BhY2l0eT0iMC4xIj4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQ0Mi43NTkgMjQxLjQxNEM0MzkuMTE0IDIzNi42MDMgNDM2Ljg4IDIzMC45MDUgNDM0LjMwOSAyMjUuNDM3QzQzMy4yNzYgMjIzLjE5MyA0MzIuMTIgMjIxLjAwOCA0MzAuODQ1IDIxOC44OTFMNDI4LjkxNSAyMTYuNjQzQzQyOC41OTIgMjE2LjkxNyA0MjguMjY4IDIxNy4yMDEgNDI3LjkzNSAyMTcuNUM0MjYuMzQ1IDIxNy4yNDMgNDI0LjcyNyAyMTcuMTk1IDQyMy4xMjUgMjE3LjM1OEw0MjEuMDAzIDIyNy4wMTVMNDIwLjg3NiAyMTcuNzA2QzQxOC40NDEgMjE4LjIzOSA0MTYuMTQxIDIxOS4yNjQgNDE0LjExNiAyMjAuNzE3QzQxMi4wOTEgMjIyLjE3IDQxMC4zODMgMjI0LjAyMSA0MDkuMDk3IDIyNi4xNTZDNDA3LjgxMSAyMjguMjkyIDQwNi45NzUgMjMwLjY2NyA0MDYuNjM4IDIzMy4xMzdDNDA2LjMwMSAyMzUuNjA3IDQwNi40NzEgMjM4LjExOSA0MDcuMTM4IDI0MC41MjFDNDA3LjgwNiAyNDIuOTIzIDQwOC45NTUgMjQ1LjE2MyA0MTAuNTE4IDI0Ny4xMDZDNDEyLjA4IDI0OS4wNDggNDE0LjAyMiAyNTAuNjUxIDQxNi4yMjQgMjUxLjgxN0M0MTguNDI3IDI1Mi45ODQgNDIwLjg0NSAyNTMuNjg4IDQyMy4zMjkgMjUzLjg4OUM0MjUuODEzIDI1NC4wODkgNDI4LjMxMyAyNTMuNzggNDMwLjY3NCAyNTIuOTgxQzQzMC45MjYgMjUzLjQzNyA0MzEuMzEgMjUzLjgwNiA0MzEuNzc2IDI1NC4wNEM0MzIuMjU2IDI1NC4yODMgNDMyLjc5OSAyNTQuMzczIDQzMy4zMzEgMjU0LjI5N0M0MzMuODY0IDI1NC4yMjEgNDM0LjM2IDI1My45ODIgNDM0Ljc1MiAyNTMuNjE0QzQzNS4xNDQgMjUzLjI0NSA0MzUuNDEzIDI1Mi43NjQgNDM1LjUyMiAyNTIuMjM4QzQzNS42MzEgMjUxLjcxMSA0MzUuNTc1IDI1MS4xNjMgNDM1LjM2MiAyNTAuNjY5QzQzNi4xOTcgMjUwLjA5NSA0MzYuOTg0IDI0OS40NTMgNDM3LjcxMyAyNDguNzQ4QzQ0MS40NTcgMjQ5LjM1NCA0NDUuMjk4IDI0OC43ODYgNDQ4LjcwNiAyNDcuMTIyQzQ0Ni40MzEgMjQ1LjU1IDQ0NC40MjMgMjQzLjYyMyA0NDIuNzU5IDI0MS40MTRWMjQxLjQxNFoiIGZpbGw9ImJsYWNrIi8+DQo8L2c+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zNzguMjE3IDIyMC43MzlDMzc4LjQxOSAyMjAuMzQgMzc4LjUxNSAyMTkuODk1IDM3OC40OTYgMjE5LjQ0OEMzNzguNDc3IDIxOS4wMDEgMzc4LjM0NCAyMTguNTY2IDM3OC4xMDkgMjE4LjE4NUMzNzcuODc0IDIxNy44MDQgMzc3LjU0NSAyMTcuNDkgMzc3LjE1NCAyMTcuMjcyQzM3Ni43NjMgMjE3LjA1NSAzNzYuMzIzIDIxNi45NDEgMzc1Ljg3NSAyMTYuOTQyQzM3NS4xMzMgMjEzLjAwNSAzNzMuMTE5IDIwOS40MiAzNzAuMTQ0IDIwNi43MzdDMzcwLjYyMyAyMDQuODY2IDM3MC44MDUgMjAyLjkzMiAzNzAuNjgzIDIwMS4wMDRMMzYxLjA1NiAxOTkuMzYzTDM3MC40MDMgMTk4Ljc3NUMzNzAuMjM1IDE5Ny44OTcgMzcwLjAwNSAxOTcuMDMzIDM2OS43MTMgMTk2LjE4OEMzNzAuMDc2IDE5NS45MzggMzcwLjM3MyAxOTUuNjAxIDM3MC41NzUgMTk1LjIwOEMzNzAuODExIDE5NC43NCAzNzAuOTAxIDE5NC4yMTIgMzcwLjgzMyAxOTMuNjkyQzM3MC43NjUgMTkzLjE3MiAzNzAuNTQzIDE5Mi42ODQgMzcwLjE5NiAxOTIuMjkyQzM2OS44NDggMTkxLjg5OSAzNjkuMzkxIDE5MS42MiAzNjguODgzIDE5MS40OUMzNjguMzc1IDE5MS4zNiAzNjcuODQgMTkxLjM4NiAzNjcuMzQ3IDE5MS41NjNDMzY0Ljg3MSAxODguMDY1IDM2MS4yNDggMTg1LjU0NCAzNTcuMTA4IDE4NC40NEMzNTIuOTY3IDE4My4zMzUgMzQ4LjU3MSAxODMuNzE2IDM0NC42ODIgMTg1LjUxN0MzNDAuNzkzIDE4Ny4zMTcgMzM3LjY1OCAxOTAuNDIzIDMzNS44MjEgMTk0LjI5NkMzMzMuOTg0IDE5OC4xNjggMzMzLjU2MiAyMDIuNTYxIDMzNC42MjcgMjA2LjcxMkMzMzQuMDYxIDIwNi45NTIgMzMzLjU5OCAyMDcuMzg2IDMzMy4zMjQgMjA3LjkzN0MzMzMuMDg0IDIwOC40MTIgMzMyLjk5NCAyMDguOTQ4IDMzMy4wNjYgMjA5LjQ3NUMzMzMuMTM5IDIxMC4wMDIgMzMzLjM3IDIxMC40OTQgMzMzLjcyOSAyMTAuODg2QzMzNC4wODggMjExLjI3OSAzMzQuNTU4IDIxMS41NTIgMzM1LjA3NyAyMTEuNjdDMzM1LjU5NSAyMTEuNzg4IDMzNi4xMzcgMjExLjc0NiAzMzYuNjMxIDIxMS41NDhDMzM3LjU3MSAyMTMuMTI2IDMzOC43NDEgMjE0LjU1NSAzNDAuMTA0IDIxNS43ODZDMzM5LjExMiAyMTkuNjU1IDMzOS40MTEgMjIzLjc0MyAzNDAuOTU3IDIyNy40MjdMMzUzLjg2NSAyMjQuMDc2TDM0Mi4zNTMgMjMwLjEzMUMzNDQuMzg4IDIzMy4zNjYgMzQ3LjM4NCAyMzUuODg0IDM1MC45MiAyMzcuMzMzQzM1NC40NTcgMjM4Ljc4MSAzNTguMzU4IDIzOS4wODggMzYyLjA3NyAyMzguMjFDMzY1Ljc5NyAyMzcuMzMyIDM2OS4xNDkgMjM1LjMxNCAzNzEuNjY1IDIzMi40MzdDMzc0LjE4MSAyMjkuNTYgMzc1LjczNiAyMjUuOTY5IDM3Ni4xMSAyMjIuMTY1QzM3Ni41NTQgMjIyLjEyNyAzNzYuOTggMjIxLjk3NiAzNzcuMzQ5IDIyMS43MjZDMzc3LjcxOCAyMjEuNDc2IDM3OC4wMTYgMjIxLjEzNyAzNzguMjE3IDIyMC43MzlWMjIwLjczOVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM3OC4yMTcgMjIwLjczOEMzNzguNDE5IDIyMC4zMzkgMzc4LjUxNSAyMTkuODk0IDM3OC40OTYgMjE5LjQ0N0MzNzguNDc4IDIxOSAzNzguMzQ0IDIxOC41NjUgMzc4LjEwOSAyMTguMTg0QzM3Ny44NzQgMjE3LjgwMyAzNzcuNTQ2IDIxNy40ODkgMzc3LjE1NSAyMTcuMjcxQzM3Ni43NjQgMjE3LjA1MyAzNzYuMzIzIDIxNi45NCAzNzUuODc2IDIxNi45NDFDMzc1LjEzMyAyMTMuMDA0IDM3My4xMiAyMDkuNDE4IDM3MC4xNDQgMjA2LjczNkMzNzAuMjIyIDIwNi40MjcgMzcwLjI5MSAyMDYuMTIzIDM3MC4zNSAyMDUuODE0QzM3MC4wMDggMjA2LjA2MiAzNjkuNjkxIDIwNi4zNDMgMzY5LjQwNCAyMDYuNjUyQzM2Ny42NjUgMjA4LjU1OCAzNjYuNzc0IDIxMS4xMiAzNjUuMDU0IDIxMy4wNDZDMzYzLjAyNiAyMTUuMzE5IDM1OS45ODkgMjE2LjUwNSAzNTYuOTU2IDIxNi44MjNDMzUzLjkyNCAyMTcuMTQyIDM1MC44NzIgMjE2LjY3NiAzNDcuODc5IDIxNi4wOTNDMzQ1LjQgMjE1LjYwMyAzNDIuODg3IDIxNS4wMzUgMzQwLjM3NCAyMTUuMjc1QzM0MC4xMjkgMjE1LjI3NSAzMzkuODg0IDIxNS4zMjkgMzM5LjY1OSAyMTUuMzY4QzMzOS44MDYgMjE1LjUxIDMzOS45NTMgMjE1LjY1MiAzNDAuMTA1IDIxNS43OUMzMzkuMTEyIDIxOS42NTkgMzM5LjQxMiAyMjMuNzQ3IDM0MC45NTcgMjI3LjQzMUwzNTMuODY1IDIyNC4wNzVMMzQyLjM1MyAyMzAuMTNDMzQ0LjM4OSAyMzMuMzY1IDM0Ny4zODQgMjM1Ljg4MyAzNTAuOTIxIDIzNy4zMzFDMzU0LjQ1NyAyMzguNzggMzU4LjM1OCAyMzkuMDg3IDM2Mi4wNzggMjM4LjIwOUMzNjUuNzk3IDIzNy4zMzEgMzY5LjE0OSAyMzUuMzEzIDM3MS42NjYgMjMyLjQzNkMzNzQuMTgyIDIyOS41NTkgMzc1LjczNiAyMjUuOTY3IDM3Ni4xMTEgMjIyLjE2NEMzNzYuNTU0IDIyMi4xMjUgMzc2Ljk4MSAyMjEuOTc0IDM3Ny4zNDkgMjIxLjcyNUMzNzcuNzE4IDIyMS40NzUgMzc4LjAxNyAyMjEuMTM2IDM3OC4yMTcgMjIwLjczOFYyMjAuNzM4WiIgZmlsbD0iYmxhY2siLz4NCjwvZz4NCjxnIG9wYWNpdHk9IjAuMSI+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00My44Mzg5IDI1MC40NzhDNDQuNDY2IDI0OC41NzIgNDcuMDA4NSAyNDcuNjk1IDQ5LjUxNjcgMjQ4LjUxOEM0OS44Nzc0IDI0OC42MzYgNTAuMjI2NyAyNDguNzg3IDUwLjU2MDEgMjQ4Ljk2OUM1MC43MjE4IDI0OC45MjUgNTAuODg4MyAyNDguODg1IDUxLjA1IDI0OC44NTZDNTAuOTEyMyAyNDguMzA5IDUwLjg1OTUgMjQ3Ljc0NCA1MC44OTMyIDI0Ny4xOEM1MC4wMzIyIDI0Ni41OTggNDkuMzM0MiAyNDUuODA1IDQ4Ljg2NTIgMjQ0Ljg3OEM0OC4zOTYzIDI0My45NSA0OC4xNzIgMjQyLjkxOCA0OC4yMTM2IDI0MS44NzlDNDcuMzQ1MSAyNDEuMzA4IDQ2LjY0NDkgMjQwLjUxNCA0Ni4xODU1IDIzOS41ODFDNDUuNzA2NyAyMzguNjU3IDQ1LjQ4MTkgMjM3LjYyMiA0NS41MzM5IDIzNi41ODNDNDQuNjY2IDIzNi4wMDggNDMuOTY2MSAyMzUuMjE0IDQzLjUwNTggMjM0LjI4QzQyLjMwMDcgMjMxLjg4OSA0Mi43OTA2IDIyOS4yIDQ0LjYyNzcgMjI4LjI2OUM0Ni40NjQ3IDIyNy4zMzggNDguOTIzOSAyMjguNTM4IDUwLjEzMzkgMjMwLjkyOUM1MC42MTE4IDIzMS44NTUgNTAuODM1IDIzMi44OTIgNTAuNzgwNSAyMzMuOTMyQzUxLjY0MzggMjM0LjUxMSA1Mi4zNDM4IDIzNS4zMDIgNTIuODEzIDIzNi4yM0M1My4yODIzIDIzNy4xNTcgNTMuNTA1MiAyMzguMTkgNTMuNDYwMiAyMzkuMjI5QzU0LjMyMzIgMjM5LjgwOSA1NS4wMjI4IDI0MC42MDEgNTUuNDkyIDI0MS41MjlDNTUuOTYxMiAyNDIuNDU4IDU2LjE4NDIgMjQzLjQ5MSA1Ni4xMzk4IDI0NC41M0M1Ny4wMDMxIDI0NS4xMDkgNTcuNzAzMSAyNDUuOSA1OC4xNzIzIDI0Ni44MjdDNTguNjQxNiAyNDcuNzU1IDU4Ljg2NDUgMjQ4Ljc4OCA1OC44MTk1IDI0OS44MjZDNTkuNjg5MiAyNTAuNCA2MC4zOTA4IDI1MS4xOTUgNjAuODUyNSAyNTIuMTI5QzYxLjA3MjcgMjUyLjU4MSA2MS4yMzcyIDI1My4wNTggNjEuMzQyMyAyNTMuNTVDNjEuNjQ0MSAyNTMuMTA1IDYyLjAxMjYgMjUyLjcxIDYyLjQzNDggMjUyLjM3OUM2Mi40ODUxIDI1Mi4wMDEgNjIuNTcwNCAyNTEuNjI5IDYyLjY4OTUgMjUxLjI2NkM2My41MTc0IDI0OC43NTggNjUuNzI2OCAyNDcuMjI5IDY3LjYzMjQgMjQ3LjgzN0M2OS41MzggMjQ4LjQ0NCA3MC40MSAyNTEuMDA3IDY5LjU5MTkgMjUzLjUxNUM2OS4yNTM4IDI1NC41OTMgNjguNjA0NCAyNTUuNTQ1IDY3LjcyNTUgMjU2LjI1NEM2Ny42NzQ2IDI1Ni42MyA2Ny41ODkzIDI1Ny4wMDEgNjcuNDcwNyAyNTcuMzYxQzY3LjA2ODYgMjU4LjY5MSA2Ni4xNzMgMjU5LjgxNyA2NC45Njc1IDI2MC41MDdDNjUuMDYyIDI2MC44MjcgNjUuMTMwOCAyNjEuMTU1IDY1LjE3MzIgMjYxLjQ4N0M2NS42NzkgMjYxLjk3MiA2Ni4wOTgxIDI2Mi41NCA2Ni40MTI2IDI2My4xNjdDNjYuNzMzMSAyNjMuNzkyIDY2Ljk0MiAyNjQuNDY5IDY3LjAyOTggMjY1LjE2NkM2Ny41Mzc1IDI2NS42NTEgNjcuOTU4NCAyNjYuMjE5IDY4LjI3NDEgMjY2Ljg0N0M2OC41OTQgMjY3LjQ3MiA2OC44MDI5IDI2OC4xNDkgNjguODkxNCAyNjguODQ2QzY5LjQwMDIgMjY5LjMzMSA2OS44MjEyIDI2OS45MDIgNzAuMTM1NyAyNzAuNTMxQzcxLjM0NTcgMjcyLjkyMiA3MC44NDYgMjc1LjYxNyA2OS4wMTg4IDI3Ni41MzhDNjcuMTkxNSAyNzcuNDU5IDY0LjcyMjUgMjc2LjI3MyA2My41MTI1IDI3My44NzdDNjMuMTkzNSAyNzMuMjUxIDYyLjk4NDcgMjcyLjU3NSA2Mi44OTUzIDI3MS44NzhDNjEuODc0NiAyNzAuODk5IDYxLjIxOCAyNjkuNjAxIDYxLjAzMzcgMjY4LjE5OUM2MC4wMTMxIDI2Ny4yMiA1OS4zNTY1IDI2NS45MjIgNTkuMTcyMiAyNjQuNTE5QzU4LjY2NDkgMjY0LjAzNCA1OC4yNDQxIDI2My40NjYgNTcuOTI3OSAyNjIuODM5QzU3LjYxMTEgMjYyLjIxMiA1Ny40MDI0IDI2MS41MzYgNTcuMzEwNiAyNjAuODRDNTYuODA0OSAyNjAuMzU0IDU2LjM4NTcgMjU5Ljc4NiA1Ni4wNzEyIDI1OS4xNTlDNTUuNzUwNyAyNTguNTM0IDU1LjU0MTggMjU3Ljg1OCA1NS40NTQgMjU3LjE2QzU1LjEzODYgMjU2Ljg2NyA1NC44NTc2IDI1Ni41MzggNTQuNjE2MyAyNTYuMTgxQzUzLjYwODQgMjU2LjM4NyA1Mi41NjM5IDI1Ni4zMjMgNTEuNTg4OCAyNTUuOTk0QzUxLjIyNjcgMjU1Ljg3NCA1MC44NzU5IDI1NS43MjEgNTAuNTQwNSAyNTUuNTM5QzQ5LjQ1MSAyNTUuODI4IDQ4LjMgMjU1Ljc4NyA0Ny4yMzM4IDI1NS40MjFDNDQuNzUwMSAyNTQuNTkzIDQzLjIxNjggMjUyLjM4NCA0My44Mzg5IDI1MC40NzhaIiBmaWxsPSIjM0YzRDU2Ii8+DQo8ZyBvcGFjaXR5PSIwLjEiPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDguMjYyNyAyNDIuOTY3QzQ4LjUyMjQgMjQzLjIyMyA0OC44MDgxIDI0My40NTEgNDkuMTE1MSAyNDMuNjQ4QzQ5LjA3MzYgMjQ0LjM1MSA0OS4xNjY3IDI0NS4wNTYgNDkuMzg5NCAyNDUuNzI1QzQ5LjE5MjYgMjQ1LjQ1OCA0OS4wMTg5IDI0NS4xNzQgNDguODcwMSAyNDQuODc4QzQ4LjU2MzggMjQ0LjI3OSA0OC4zNTg1IDI0My42MzMgNDguMjYyNyAyNDIuOTY3VjI0Mi45NjdaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDUuNTgzIDIzNy42NzZDNDUuODQ0MSAyMzcuOTI5IDQ2LjEyOTYgMjM4LjE1NSA0Ni40MzU0IDIzOC4zNTJDNDYuMzk0MyAyMzkuMDU3IDQ2LjQ4NzMgMjM5Ljc2NCA0Ni43MDk3IDI0MC40MzRDNDYuMTE2MyAyMzkuNjIgNDUuNzI5NyAyMzguNjczIDQ1LjU4MyAyMzcuNjc2VjIzNy42NzZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNTEuNjcyIDIzNS43MDFDNTEuNjk1MyAyMzUuMzM4IDUxLjY4MjIgMjM0Ljk3NCA1MS42MzI4IDIzNC42MTNDNTIuMTExNyAyMzUuMDg2IDUyLjUxMDUgMjM1LjYzNCA1Mi44MTM0IDIzNi4yMzVDNTIuOTYxMyAyMzYuNTMyIDUzLjA4NTggMjM2Ljg0IDUzLjE4NTcgMjM3LjE1NkM1Mi43Nzc1IDIzNi41OCA1Mi4yNjM5IDIzNi4wODYgNTEuNjcyIDIzNS43MDFWMjM1LjcwMVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik02OC42NzEgMjY3Ljc3MkM2OC40NTY4IDI2Ny40NzEgNjguMjE0IDI2Ny4xOTIgNjcuOTQ2IDI2Ni45MzlDNjcuOTAxMyAyNjYuNjA3IDY3LjgyOTIgMjY2LjI3OSA2Ny43MzA1IDI2NS45NTlDNjcuOTQzMSAyNjYuMjQ3IDY4LjEzMTUgMjY2LjU1MSA2OC4yOTM4IDI2Ni44N0M2OC40NDI1IDI2Ny4xNjEgNjguNTY4NiAyNjcuNDYyIDY4LjY3MSAyNjcuNzcyVjI2Ny43NzJaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjYuNzk1IDI2NC4wOTJDNjYuNTgwOCAyNjMuNzkyIDY2LjMzOCAyNjMuNTEzIDY2LjA3IDI2My4yNTlDNjYuMDMgMjYyLjkyNyA2NS45NjEyIDI2Mi41OTkgNjUuODY0MyAyNjIuMjc5QzY2LjI2NzggMjYyLjgyNiA2Ni41NzkgMjYzLjQzNSA2Ni43ODUyIDI2NC4wODJMNjYuNzk1IDI2NC4wOTJaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNTAuOTQ3MSAyNDguMjc4QzUxLjIwNDMgMjQ4LjUzMiA1MS40ODg1IDI0OC43NTcgNTEuNzk0NiAyNDguOTQ5QzUxLjc1OCAyNDkuNTEzIDUxLjgxMDkgMjUwLjA3OCA1MS45NTE0IDI1MC42MjVDNTEuNzg2MyAyNTAuNjU0IDUxLjYyMjcgMjUwLjY5MiA1MS40NjE1IDI1MC43MzhDNTEuMTI1OSAyNTAuNTU3IDUwLjc3NTEgMjUwLjQwNiA1MC40MTMxIDI1MC4yODdDNDcuOTA1IDI0OS40NjQgNDUuMzYyNSAyNTAuMzQxIDQ0Ljc0MDMgMjUyLjI0N0M0NC41ODQ0IDI1Mi43MjEgNDQuNTU1NyAyNTMuMjI4IDQ0LjY1NzEgMjUzLjcxNkM0NC4yNTQgMjUzLjI5MiA0My45Njc0IDI1Mi43NzEgNDMuODI0OSAyNTIuMjA0QzQzLjY4MjQgMjUxLjYzNyA0My42ODkgMjUxLjA0MiA0My44NDM5IDI1MC40NzhDNDQuNDcwOSAyNDguNTcyIDQ3LjAxMzQgMjQ3LjY5NSA0OS41MjE2IDI0OC41MThDNDkuODgyMyAyNDguNjM2IDUwLjIzMTYgMjQ4Ljc4NyA1MC41NjUgMjQ4Ljk2OUM1MC43MjY3IDI0OC45MjUgNTAuODkzMiAyNDguODg2IDUxLjA1NDkgMjQ4Ljg1NkM1MS4wMDc4IDI0OC42NjYgNTAuOTcxOCAyNDguNDczIDUwLjk0NzEgMjQ4LjI3OFYyNDguMjc4WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTY5LjU5MTggMjY5LjYxOUM2OS44MDU1IDI2OS45MDggNjkuOTk0IDI3MC4yMTQgNzAuMTU1MiAyNzAuNTM1QzcwLjMwNDcgMjcwLjgzMiA3MC40MzA5IDI3MS4xNCA3MC41MzI0IDI3MS40NTZDNzAuMzE4MiAyNzEuMTU0IDcwLjA3NTQgMjcwLjg3NCA2OS44MDczIDI3MC42MTlDNjkuNzYzNyAyNzAuMjggNjkuNjkxNiAyNjkuOTQ2IDY5LjU5MTggMjY5LjYxOVYyNjkuNjE5WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTU0LjM1MTcgMjQxLjAwOEM1NC4zNzUxIDI0MC42NDUgNTQuMzYyIDI0MC4yOCA1NC4zMTI1IDIzOS45MkM1NC43OTI2IDI0MC4zOTIgNTUuMTkxNCAyNDAuOTQgNTUuNDkzMSAyNDEuNTQyQzU1LjY0MSAyNDEuODM3IDU1Ljc2NTUgMjQyLjE0MyA1NS44NjU0IDI0Mi40NThDNTUuNDU3MSAyNDEuODgzIDU0Ljk0MzQgMjQxLjM5MSA1NC4zNTE3IDI0MS4wMDhWMjQxLjAwOFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01OC4yMjY4IDI2Mi42MTNDNTguMjcyNyAyNjIuOTc5IDU4LjM1MzEgMjYzLjM0IDU4LjQ2NjkgMjYzLjY5MUM1OC4wNTg3IDI2My4xMzEgNTcuNzQ3MyAyNjIuNTA3IDU3LjU0NTkgMjYxLjg0NEM1Ny43NDk0IDI2Mi4xMiA1Ny45NzczIDI2Mi4zNzcgNTguMjI2OCAyNjIuNjEzVjI2Mi42MTNaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjEuOTQ0NiAyNjkuOTcyQzYxLjk5NCAyNzAuMzM4IDYyLjA3NiAyNzAuNjk5IDYyLjE4OTUgMjcxLjA1QzYxLjk5MjcgMjcwLjc4MyA2MS44MTkgMjcwLjQ5OSA2MS42NzAzIDI3MC4yMDNDNjEuNTA5MSAyNjkuODg4IDYxLjM3NDggMjY5LjU2IDYxLjI2ODYgMjY5LjIyM0M2MS40NzM3IDI2OS40OSA2MS42OTk4IDI2OS43NDEgNjEuOTQ0NiAyNjkuOTcyVjI2OS45NzJaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjAuMDg4MiAyNjYuMjkzQzYwLjEzNCAyNjYuNjU5IDYwLjIxNDQgMjY3LjAyIDYwLjMyODIgMjY3LjM3QzYwLjEzMzEgMjY3LjEwMiA1OS45NTk1IDI2Ni44MTkgNTkuODA4OSAyNjYuNTIzQzU5LjY0NzIgMjY2LjIwOCA1OS41MTI4IDI2NS44OCA1OS40MDcyIDI2NS41NDNDNTkuNjExNyAyNjUuODEyIDU5LjgzOTUgMjY2LjA2MyA2MC4wODgyIDI2Ni4yOTNWMjY2LjI5M1oiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01Ni4zNjU0IDI1OC45MjhDNTYuNDEwNyAyNTkuMjk2IDU2LjQ5MTEgMjU5LjY1OSA1Ni42MDU1IDI2MC4wMTFDNTYuNDE5NyAyNTkuNzQyIDU2LjI1NTkgMjU5LjQ1OSA1Ni4xMTU2IDI1OS4xNjNDNTUuOTUxNCAyNTguODUgNTUuODE1MyAyNTguNTIyIDU1LjcwOSAyNTguMTg0QzU1LjkwNDcgMjU4LjQ1MSA1Ni4xMjQ0IDI1OC43MDEgNTYuMzY1NCAyNTguOTI4VjI1OC45MjhaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjguNTQ4NSAyNDkuNjI1QzY2LjY0MjkgMjQ4Ljk5OCA2NC40MzM1IDI1MC41MjcgNjMuNjEwNSAyNTMuMDU1QzYzLjQ5MTQgMjUzLjQxNyA2My40MDYxIDI1My43ODkgNjMuMzU1OCAyNTQuMTY3QzYyLjkzMjEgMjU0LjQ5NyA2Mi41NjE5IDI1NC44OSA2Mi4yNTg0IDI1NS4zMzNDNjIuMTQ0NyAyNTQuODQxIDYxLjk3MiAyNTQuMzY0IDYxLjc0NDEgMjUzLjkxMkM2MS42NjA4IDI1My43NDYgNjEuNTY3NyAyNTMuNTg0IDYxLjQ2OTcgMjUzLjQyM0M2MS43NDc4IDI1My4wMzYgNjIuMDc3NCAyNTIuNjkgNjIuNDQ5NSAyNTIuMzk0QzYyLjQ5OTggMjUyLjAxNiA2Mi41ODUxIDI1MS42NDQgNjIuNzA0MiAyNTEuMjgxQzYzLjUzMjEgMjQ4Ljc3MyA2NS43NDE1IDI0Ny4yNDQgNjcuNjQ3MSAyNDcuODUyQzY4LjE5MzYgMjQ4LjA2MiA2OC42NzY1IDI0OC40MDkgNjkuMDQ5IDI0OC44NjFDNjkuNDIxNiAyNDkuMzEyIDY5LjY3MSAyNDkuODUzIDY5Ljc3MzIgMjUwLjQyOUM2OS40NDAzIDI1MC4wNjEgNjkuMDE4NiAyNDkuNzg0IDY4LjU0ODUgMjQ5LjYyNVYyNDkuNjI1WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTU5LjcxMTEgMjUxLjU5OUM1OS43MzQ0IDI1MS4yMzYgNTkuNzIxMiAyNTAuODcyIDU5LjY3MTkgMjUwLjUxMkM2MC4xNTE5IDI1MC45ODQgNjAuNTUwOCAyNTEuNTMyIDYwLjg1MjUgMjUyLjEzM0M2MS4wMDA0IDI1Mi40MyA2MS4xMjQ5IDI1Mi43MzggNjEuMjI0OCAyNTMuMDU0QzYwLjgxNzggMjUyLjQ3NyA2MC4zMDQgMjUxLjk4MyA1OS43MTExIDI1MS41OTlWMjUxLjU5OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01Ny4wMzE0IDI0Ni4yOTlDNTcuMDU0NiAyNDUuOTM2IDU3LjA0MTUgMjQ1LjU3MSA1Ni45OTIyIDI0NS4yMTFDNTcuNDcgMjQ1LjY4NSA1Ny44Njg2IDI0Ni4yMzIgNTguMTcyOCAyNDYuODMzQzU4LjMyMDcgMjQ3LjEzIDU4LjQ0NTIgMjQ3LjQzNyA1OC41NDUxIDI0Ny43NTRDNTguMTM2OSAyNDcuMTc3IDU3LjYyMzMgMjQ2LjY4NCA1Ny4wMzE0IDI0Ni4yOTlWMjQ2LjI5OVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik02My44MDY5IDI3My42NTJDNjMuODUzOSAyNzQuMDIgNjMuOTM1OSAyNzQuMzgyIDY0LjA1MTggMjc0LjczNUM2My44NTYgMjc0LjQ2NSA2My42ODI0IDI3NC4xOCA2My41MzI2IDI3My44ODJDNjMuMzcxNCAyNzMuNTY3IDYzLjIzNzEgMjczLjI0IDYzLjEzMDkgMjcyLjkwMkM2My4zMzYgMjczLjE3IDYzLjU2MjEgMjczLjQyIDYzLjgwNjkgMjczLjY1MloiIGZpbGw9ImJsYWNrIi8+DQo8L2c+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00MC4xNzk2IDIyNS45ODVDMzkuMzExMSAyMjUuNDEzIDM4LjYxMDkgMjI0LjYyIDM4LjE1MTUgMjIzLjY4N0MzNi45NDE1IDIyMS4yOTEgMzcuNDQxMiAyMTguNjAxIDM5LjI2ODQgMjE3LjY3NUM0MS4wOTU3IDIxNi43NDkgNDMuNTY0NyAyMTcuOTQgNDQuNzc0NyAyMjAuMzM2QzQ1LjI1MzMgMjIxLjI2IDQ1LjQ3NjUgMjIyLjI5NSA0NS40MjEzIDIyMy4zMzRDNDYuMjg0MyAyMjMuOTE1IDQ2Ljk4MzkgMjI0LjcwNyA0Ny40NTMxIDIyNS42MzVDNDcuOTIyMyAyMjYuNTYzIDQ4LjE0NTQgMjI3LjU5NiA0OC4xMDEgMjI4LjYzNUM0OC45NyAyMjkuMjA4IDQ5LjY3MTYgMjMwLjAwMSA1MC4xMzQgMjMwLjkzM0M1MC4yODEgMjMxLjIyNyA1MC40MDU0IDIzMS41MzIgNTAuNTA2MyAyMzEuODQ1QzQ5Ljg1NzQgMjMwLjkxOCA0OC45MjMxIDIzMC4yMyA0Ny44NDYyIDIyOS44ODVDNDcuNzI2MyAyMzAuMjY3IDQ3LjUzMTMgMjMwLjYyMiA0Ny4yNzI2IDIzMC45MjlDNDcuMDEzOSAyMzEuMjM1IDQ2LjY5NjcgMjMxLjQ4NyA0Ni4zMzk1IDIzMS42N0M0NS45ODI0IDIzMS44NTIgNDUuNTkyNSAyMzEuOTYyIDQ1LjE5MjYgMjMxLjk5MkM0NC43OTI3IDIzMi4wMjIgNDQuMzkwOCAyMzEuOTcyIDQ0LjAxMDUgMjMxLjg0NUM0My42NDczIDIzMi45MTcgNDMuNjQ3MyAyMzQuMDc5IDQ0LjAxMDUgMjM1LjE1MkM0My44MjY0IDIzNC44ODUgNDMuNjYyNyAyMzQuNjA1IDQzLjUyMDYgMjM0LjMxNEM0My4wNDE5IDIzMy4zOSA0Mi44MTcgMjMyLjM1NSA0Mi44NjkxIDIzMS4zMTVDNDIuMDA3IDIzMC43MzQgNDEuMzA4MiAyMjkuOTQyIDQwLjgzOTIgMjI5LjAxNEM0MC4zNzAxIDIyOC4wODYgNDAuMTQ2NCAyMjcuMDUzIDQwLjE4OTQgMjI2LjAxNEw0MC4xNzk2IDIyNS45ODVaIiBmaWxsPSIjM0YzRDU2Ii8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0xMC43Mjg3IDE5Mi4wMTJDOS45ODU2NCAxOTEuNjY0IDkuMjY3MTEgMTkxLjI2NyA4LjU3ODE3IDE5MC44MjFMMTYuNTUzNCAxODQuOTkxTDcuMTc3MTEgMTg5LjgxN0M1LjI4MTMzIDE4OC4zMDkgMy43MTMxIDE4Ni40MzEgMi41NjgzOCAxODQuMjk2QzEuNDIzNjUgMTgyLjE2MSAwLjcyNjUxOSAxNzkuODE1IDAuNTE5NjQzIDE3Ny40MDJMMTYuNDYwMyAxNzcuNTY4TDAuNDg1MzUyIDE3NC44OTNDMC42MjI5MDIgMTcyLjQ1NiAxLjI2MDg0IDE3MC4wNzMgMi4zNTk0MiAxNjcuODkzQzMuNDU3OTkgMTY1LjcxMyA0Ljk5MzY3IDE2My43ODMgNi44NzA3OCAxNjIuMjIyQzguNzQ3ODggMTYwLjY2MiAxMC45MjYyIDE1OS41MDQgMTMuMjcgMTU4LjgyM0MxNS42MTM4IDE1OC4xNDEgMTguMDcyOCAxNTcuOTQ5IDIwLjQ5NCAxNTguMjU5QzIyLjkxNTEgMTU4LjU3IDI1LjI0NjQgMTU5LjM3NSAyNy4zNDI3IDE2MC42MjZDMjkuNDM4OSAxNjEuODc3IDMxLjI1NTIgMTYzLjU0NiAzMi42NzgzIDE2NS41MjlDMzQuMTAxNSAxNjcuNTEyIDM1LjEwMSAxNjkuNzY3IDM1LjYxNDYgMTcyLjE1NEMzNi4xMjgyIDE3NC41NDEgMzYuMTQ0OSAxNzcuMDA3IDM1LjY2MzYgMTc5LjQwMUMzNi44MjA4IDE3OS45MzYgMzcuOTE3NyAxODAuNTkzIDM4LjkzNiAxODEuMzZMMzAuNjA4MSAxOTIuOTQzTDQwLjYwNjUgMTgyLjgxMUM0Mi43MTYzIDE4NC44ODMgNDQuMjc2MyAxODcuNDQ5IDQ1LjE0NTMgMTkwLjI3N0M0Ni4wMTQzIDE5My4xMDQgNDYuMTY1IDE5Ni4xMDMgNDUuNTgzNyAxOTkuMDAzQzQ4LjYwODIgMjAwLjQxMiA1MS4xNzUzIDIwMi42NDQgNTIuOTkxMyAyMDUuNDQzQzU0LjgwNzMgMjA4LjI0MyA1NS43OTkgMjExLjQ5NyA1NS44NTI4IDIxNC44MzNDNTUuOTA2NyAyMTguMTcgNTUuMDIwNiAyMjEuNDU0IDUzLjI5NiAyMjQuMzExQzUxLjU3MTMgMjI3LjE2OCA0OS4wNzc2IDIyOS40ODEgNDYuMTAwMSAyMzAuOTg3QzQzLjEyMjYgMjMyLjQ5MyAzOS43ODE0IDIzMy4xMyAzNi40NTg3IDIzMi44MjdDMzMuMTM2IDIzMi41MjMgMjkuOTY1OCAyMzEuMjkgMjcuMzEwOCAyMjkuMjY5QzI0LjY1NTcgMjI3LjI0OCAyMi42MjI5IDIyNC41MiAyMS40NDQ3IDIyMS4zOThDMjAuMjY2NiAyMTguMjc2IDE5Ljk5MDggMjE0Ljg4NiAyMC42NDg4IDIxMS42MTRDMTcuMDM4OCAyMDkuOTMyIDE0LjA5ODYgMjA3LjA4NSAxMi4yOTk3IDIwMy41MzFDMTAuNTAwOCAxOTkuOTc4IDkuOTQ3NTggMTk1LjkyMyAxMC43Mjg3IDE5Mi4wMTdWMTkyLjAxMloiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTQ0LjAxNjIgMTg3LjQ5NUM0NS44MjI5IDE5MS4wNTIgNDYuMzc1MyAxOTUuMTE0IDQ1LjU4MzggMTk5LjAyNEM0OC42MDg0IDIwMC40MzMgNTEuMTc1NCAyMDIuNjY0IDUyLjk5MTQgMjA1LjQ2NEM1NC44MDc0IDIwOC4yNjMgNTUuNzk5MSAyMTEuNTE3IDU1Ljg1MyAyMTQuODU0QzU1LjkwNjggMjE4LjE5IDU1LjAyMDggMjIxLjQ3NSA1My4yOTYxIDIyNC4zMzFDNTEuNTcxNCAyMjcuMTg4IDQ5LjA3NzcgMjI5LjUwMiA0Ni4xMDAyIDIzMS4wMDdDNDMuMTIyNyAyMzIuNTEzIDM5Ljc4MTYgMjMzLjE1MSAzNi40NTg4IDIzMi44NDdDMzMuMTM2MSAyMzIuNTQzIDI5Ljk2NiAyMzEuMzEgMjcuMzEwOSAyMjkuMjg5QzI0LjY1NTggMjI3LjI2OCAyMi42MjMgMjI0LjU0MSAyMS40NDQ5IDIyMS40MTlDMjAuMjY2OCAyMTguMjk3IDE5Ljk5MDkgMjE0LjkwNiAyMC42NDg5IDIxMS42MzVDMTcuMTU2MSAyMTAuMDEzIDQzLjExOTcgMTg1LjcxNyA0NC4wMTYyIDE4Ny40OTVaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMjMuOTg5MSAxNjEuNzY0QzI1LjQ0NzQgMTYxLjc2NCAyNi42Mjk1IDE2MC41ODIgMjYuNjI5NSAxNTkuMTIzQzI2LjYyOTUgMTU3LjY2NSAyNS40NDc0IDE1Ni40ODIgMjMuOTg5MSAxNTYuNDgyQzIyLjUzMDggMTU2LjQ4MiAyMS4zNDg2IDE1Ny42NjUgMjEuMzQ4NiAxNTkuMTIzQzIxLjM0ODYgMTYwLjU4MiAyMi41MzA4IDE2MS43NjQgMjMuOTg5MSAxNjEuNzY0WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNOC41Nzc5NSAxNjMuNDU5QzEwLjAzNjIgMTYzLjQ1OSAxMS4yMTg0IDE2Mi4yNzcgMTEuMjE4NCAxNjAuODE4QzExLjIxODQgMTU5LjM2IDEwLjAzNjIgMTU4LjE3OCA4LjU3Nzk1IDE1OC4xNzhDNy4xMTk2NyAxNTguMTc4IDUuOTM3NSAxNTkuMzYgNS45Mzc1IDE2MC44MThDNS45Mzc1IDE2Mi4yNzcgNy4xMTk2NyAxNjMuNDU5IDguNTc3OTUgMTYzLjQ1OVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTIuNjQwNDUgMTg3LjE2OEM0LjA5ODczIDE4Ny4xNjggNS4yODA5IDE4NS45ODYgNS4yODA5IDE4NC41MjhDNS4yODA5IDE4My4wNjkgNC4wOTg3MyAxODEuODg3IDIuNjQwNDUgMTgxLjg4N0MxLjE4MjE3IDE4MS44ODcgMCAxODMuMDY5IDAgMTg0LjUyOEMwIDE4NS45ODYgMS4xODIxNyAxODcuMTY4IDIuNjQwNDUgMTg3LjE2OFoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTEwLjY2IDE5OS4wMDhDMTIuMTE4MyAxOTkuMDA4IDEzLjMwMDQgMTk3LjgyNiAxMy4zMDA0IDE5Ni4zNjdDMTMuMzAwNCAxOTQuOTA5IDEyLjExODMgMTkzLjcyNyAxMC42NiAxOTMuNzI3QzkuMjAxNyAxOTMuNzI3IDguMDE5NTMgMTk0LjkwOSA4LjAxOTUzIDE5Ni4zNjdDOC4wMTk1MyAxOTcuODI2IDkuMjAxNyAxOTkuMDA4IDEwLjY2IDE5OS4wMDhaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yMS42MTMxIDIyMy42QzIzLjA3MTQgMjIzLjYgMjQuMjUzNiAyMjIuNDE4IDI0LjI1MzYgMjIwLjk1OUMyNC4yNTM2IDIxOS41MDEgMjMuMDcxNCAyMTguMzE4IDIxLjYxMzEgMjE4LjMxOEMyMC4xNTQ4IDIxOC4zMTggMTguOTcyNyAyMTkuNTAxIDE4Ljk3MjcgMjIwLjk1OUMxOC45NzI3IDIyMi40MTggMjAuMTU0OCAyMjMuNiAyMS42MTMxIDIyMy42WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMjEuNjEzMSAyMjMuNkMyMy4wNzE0IDIyMy42IDI0LjI1MzYgMjIyLjQxOCAyNC4yNTM2IDIyMC45NTlDMjQuMjUzNiAyMTkuNTAxIDIzLjA3MTQgMjE4LjMxOCAyMS42MTMxIDIxOC4zMThDMjAuMTU0OCAyMTguMzE4IDE4Ljk3MjcgMjE5LjUwMSAxOC45NzI3IDIyMC45NTlDMTguOTcyNyAyMjIuNDE4IDIwLjE1NDggMjIzLjYgMjEuNjEzMSAyMjMuNloiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00NS45NzU0IDE5NS43NDZDNDcuNDMzNyAxOTUuNzQ2IDQ4LjYxNTkgMTk0LjU2NCA0OC42MTU5IDE5My4xMDZDNDguNjE1OSAxOTEuNjQ3IDQ3LjQzMzcgMTkwLjQ2NSA0NS45NzU0IDE5MC40NjVDNDQuNTE3MSAxOTAuNDY1IDQzLjMzNSAxOTEuNjQ3IDQzLjMzNSAxOTMuMTA2QzQzLjMzNSAxOTQuNTY0IDQ0LjUxNzEgMTk1Ljc0NiA0NS45NzU0IDE5NS43NDZaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik00NS45NzU0IDE5NS43NDZDNDcuNDMzNyAxOTUuNzQ2IDQ4LjYxNTkgMTk0LjU2NCA0OC42MTU5IDE5My4xMDZDNDguNjE1OSAxOTEuNjQ3IDQ3LjQzMzcgMTkwLjQ2NSA0NS45NzU0IDE5MC40NjVDNDQuNTE3MSAxOTAuNDY1IDQzLjMzNSAxOTEuNjQ3IDQzLjMzNSAxOTMuMTA2QzQzLjMzNSAxOTQuNTY0IDQ0LjUxNzEgMTk1Ljc0NiA0NS45NzU0IDE5NS43NDZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNDguNzkxOSAyMzYuNTA0QzUwLjU0NTYgMjM1LjYxNyA1MS4wNzQ3IDIzMy4xMDggNTAuMDUwOSAyMzAuNzkxQzUwLjEwNDcgMjMwLjg4OSA1MC4xNTg2IDIzMC45ODIgNTAuMjA3NiAyMzEuMDhDNTEuNDE3NiAyMzMuNDc2IDUwLjkxNzkgMjM2LjE2NiA0OS4wODU4IDIzNy4wOTJDNDcuMjUzNiAyMzguMDE4IDQ0Ljc5NDQgMjM2LjgyNyA0My41ODQ0IDIzNC40MzFDNDMuNTM1NSAyMzQuMzMzIDQzLjQ4NjUgMjM0LjIzNSA0My40NDI0IDIzNC4xMzJDNDQuNzAxNCAyMzYuMzMyIDQ3LjAzODEgMjM3LjM5MSA0OC43OTE5IDIzNi41MDRaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNTEuMzkzNCAyNDEuNjU4QzUzLjE0NzIgMjQwLjc3MSA1My42ODEyIDIzOC4yNTggNTIuNjU3MyAyMzUuOTQ1QzUyLjcxMTIgMjM2LjAzOCA1Mi43NjUxIDIzNi4xMzYgNTIuODE0MSAyMzYuMjM0QzU0LjAyNDEgMjM4LjYzIDUzLjUyNDQgMjQxLjMyIDUxLjY5MjIgMjQyLjI0NkM0OS44NjAxIDI0My4xNzIgNDcuNDAwOSAyNDEuOTgxIDQ2LjE5MDkgMjM5LjU4NkM0Ni4xMzcgMjM5LjQ4OCA0Ni4wOTI5IDIzOS4zODUgNDYuMDQ4OCAyMzkuMjg3QzQ3LjMwNzggMjQxLjQ5NiA0OS42NDk0IDI0Mi41NDUgNTEuMzkzNCAyNDEuNjU4WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTUzLjk5OTkgMjQ2LjgwOEM1NS43NTM2IDI0NS45MjIgNTYuMjg3NiAyNDMuNDEzIDU1LjI1ODkgMjQxLjA5NkM1NS4zMTc2IDI0MS4xOTQgNTUuMzY2NiAyNDEuMjg3IDU1LjQyMDUgMjQxLjM5QzU2LjYzMDUgMjQzLjc4MSA1Ni4xMjYgMjQ2LjQ3NSA1NC4yOTg3IDI0Ny4zOTZDNTIuNDcxNCAyNDguMzE3IDUwLjAwNzMgMjQ3LjEzMiA0OC43OTczIDI0NC43MzZDNDguNzQzNCAyNDQuNjM4IDQ4LjY5OTQgMjQ0LjU0IDQ4LjY1NTMgMjQ0LjQzN0M0OS45MDk0IDI0Ni42MzcgNTIuMjQ2MSAyNDcuNjk1IDUzLjk5OTkgMjQ2LjgwOFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01Ni42MDUzIDI1MS45NjNDNTguMzU5MSAyNTEuMDc2IDU4Ljg5MzEgMjQ4LjU2NyA1Ny44NjQzIDI0Ni4yNUM1Ny45MTgyIDI0Ni4zNDMgNTcuOTcyMSAyNDYuNDQxIDU4LjAyMTEgMjQ2LjUzOUM1OS4yMzYgMjQ4LjkzNSA1OC43MzE0IDI1MS42MjUgNTYuOTA0MiAyNTIuNTUxQzU1LjA3NjkgMjUzLjQ3NyA1Mi42MDc5IDI1Mi4yODYgNTEuMzk3OSAyNDkuODlDNTEuMzQ4OSAyNDkuNzkyIDUxLjMwNDggMjQ5LjY4OSA1MS4yNjA3IDI0OS41OTFDNTIuNTE0OCAyNTEuNzg2IDU0Ljg1MTYgMjUyLjg1IDU2LjYwNTMgMjUxLjk2M1oiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01OS4yMTE4IDI1Ny4xMTJDNjAuOTY1NiAyNTYuMjI1IDYxLjQ5NDYgMjUzLjcxNyA2MC40NzA4IDI1MS40MDRDNjAuNTI0NyAyNTEuNDk3IDYwLjU3ODYgMjUxLjU5NSA2MC42Mjc1IDI1MS42OTNDNjEuODM3NSAyNTQuMDg5IDYxLjMzNzkgMjU2Ljc3OSA1OS41MTA2IDI1Ny43MDVDNTcuNjgzNCAyNTguNjMxIDU1LjIxNDQgMjU3LjQzNSA1NC4wMDQ0IDI1NS4wNDVDNTMuOTU1NCAyNTQuOTQyIDUzLjkxMTMgMjU0Ljg0NCA1My44NjIzIDI1NC43NDZDNTUuMTIxMyAyNTYuOTQxIDU3LjQ1OCAyNTcuOTk5IDU5LjIxMTggMjU3LjExMloiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik02MS44MTgyIDI2Mi4yNjVDNjMuNTcyIDI2MS4zNzkgNjQuMTAxMSAyNTguODcgNjMuMDc3MiAyNTYuNTUzQzYzLjEzMTEgMjU2LjY1MSA2My4xODUgMjU2Ljc0NCA2My4yMzQgMjU2Ljg0MkM2NC40NDQgMjU5LjIzOCA2My45NDQzIDI2MS45MjcgNjIuMTE3MSAyNjIuODUzQzYwLjI4OTggMjYzLjc3OSA1Ny44MjA4IDI2Mi41ODkgNTYuNjEwOCAyNjAuMTkzQzU2LjU2MTggMjYwLjA5NSA1Ni41MTI4IDI1OS45OTcgNTYuNDY4OCAyNTkuODk0QzU3LjcyNzcgMjYyLjA3NCA2MC4wNjQ1IDI2My4xNTIgNjEuODE4MiAyNjIuMjY1WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTY0LjQyMzcgMjY3LjQyQzY2LjE3MjYgMjY2LjUzMyA2Ni43MDY1IDI2NC4wMiA2NS42ODI3IDI2MS43MDdDNjUuNzM2NiAyNjEuOCA2NS43OTA1IDI2MS44OTggNjUuODM5NSAyNjEuOTk2QzY3LjA0OTUgMjY0LjM5MiA2Ni41NDk4IDI2Ny4wODIgNjQuNzE3NiAyNjguMDA4QzYyLjg4NTUgMjY4LjkzNCA2MC40MjYzIDI2Ny43MzggNTkuMjE2MyAyNjUuMzQ3QzU5LjE2NzMgMjY1LjI0NCA1OS4xMTgzIDI2NS4xNDYgNTkuMDc0MiAyNjUuMDQ4QzYwLjMzMzIgMjY3LjI0MyA2Mi42Njk5IDI2OC4zMDYgNjQuNDIzNyAyNjcuNDJaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjcuMDI1MiAyNzIuNTY4QzY4Ljc3OSAyNzEuNjgxIDY5LjMxMyAyNjkuMTczIDY4LjI4NDIgMjY2Ljg1NUM2OC4zNDMgMjY2Ljk1MyA2OC4zOTIgMjY3LjA0NyA2OC40NDU5IDI2Ny4xNDlDNjkuNjU1OSAyNjkuNTQgNjkuMTUxMyAyNzIuMjM1IDY3LjMyNDEgMjczLjE1NkM2NS40OTY4IDI3NC4wNzcgNjMuMDMyNyAyNzIuODkyIDYxLjgyMjcgMjcwLjQ5NkM2MS43Njg4IDI3MC4zOTggNjEuNzI0OCAyNzAuMyA2MS42ODA3IDI3MC4xOTdDNjIuOTM5NyAyNzIuMzk3IDY1LjI3MTUgMjczLjQ1NSA2Ny4wMjUyIDI3Mi41NjhaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjguNzU0OCAyNzUuOTU1QzcwLjUwODUgMjc1LjA2OCA3MS4wMzc2IDI3Mi41NiA3MC4wMTM4IDI3MC4yNDJDNzAuMDY3NiAyNzAuMzQgNzAuMTIxNSAyNzAuNDMzIDcwLjE3MDUgMjcwLjUzNkM3MS4zODA1IDI3Mi45MjcgNzAuODgwOCAyNzUuNjIyIDY5LjA1MzYgMjc2LjU0M0M2Ny4yMjYzIDI3Ny40NjQgNjQuNzU3MyAyNzYuMjc4IDYzLjU0NzMgMjczLjg4MkM2My40OTgzIDI3My43ODQgNjMuNDQ5NCAyNzMuNjg2IDYzLjQwNTMgMjczLjU4NEM2NC42NDk2IDI3NS43OTMgNjYuOTg2MyAyNzYuODQyIDY4Ljc1NDggMjc1Ljk1NVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yMS42NTc1IDI1My4wMjVDMjEuMzg1NCAyNTIuMjQ2IDIxLjIyMDYgMjUxLjQzMyAyMS4xNjc2IDI1MC42MDlDMjAuOTg2NSAyNTAuNjA5IDIwLjgwNzQgMjUwLjU3MSAyMC42NDE2IDI1MC40OThDMjAuNDc1OCAyNTAuNDI1IDIwLjMyNjggMjUwLjMxOSAyMC4yMDM5IDI1MC4xODVDMjAuMDgxMSAyNTAuMDUyIDE5Ljk4NyAyNDkuODk1IDE5LjkyNzUgMjQ5LjcyNEMxOS44NjggMjQ5LjU1MyAxOS44NDQ1IDI0OS4zNzIgMTkuODU4MyAyNDkuMTkxQzE5Ljg3MjIgMjQ5LjAxIDE5LjkyMzEgMjQ4LjgzNCAyMC4wMDggMjQ4LjY3NEMyMC4wOTI4IDI0OC41MTQgMjAuMjA5NyAyNDguMzczIDIwLjM1MTQgMjQ4LjI2MUMyMC40OTMyIDI0OC4xNDggMjAuNjU2NiAyNDguMDY1IDIwLjgzMTYgMjQ4LjAxOEMyMS4wMDY2IDI0Ny45NzIgMjEuMTg5MyAyNDcuOTYxIDIxLjM2ODUgMjQ3Ljk4OEMyMS42NjI0IDI0Ni42NTMgMjIuMjQ5NiAyNDUuNCAyMy4wODc2IDI0NC4zMTlDMjMuOTI1NSAyNDMuMjM5IDI0Ljk5MzIgMjQyLjM1OCAyNi4yMTM0IDI0MS43NDJDMjYuMDU1NSAyNDEuNDI5IDI2LjAyODMgMjQxLjA2NyAyNi4xMzc2IDI0MC43MzRDMjYuMjQ2OSAyNDAuNDAxIDI2LjQ4MzkgMjQwLjEyNiAyNi43OTYzIDIzOS45NjhDMjcuMTA4OCAyMzkuODEgMjcuNDcxMiAyMzkuNzgzIDI3LjgwMzggMjM5Ljg5MkMyOC4xMzYzIDI0MC4wMDIgMjguNDExOSAyNDAuMjM5IDI4LjU2OTcgMjQwLjU1MUMyOC42MjcxIDI0MC42NjIgMjguNjY2NyAyNDAuNzgxIDI4LjY4NzMgMjQwLjkwNEMzMC4xMzY4IDI0MC42MzggMzEuNjI4OSAyNDAuNzIxIDMzLjAzOTggMjQxLjE0N0MzNC40NTA3IDI0MS41NzMgMzUuNzM5NiAyNDIuMzMgMzYuNzk5NyAyNDMuMzUzQzM3LjYwOTQgMjQzLjIyMSAzOC40MzMyIDI0My4xOTggMzkuMjQ5MSAyNDMuMjg1TDQwLjMxNyAyNDguMTQ1TDQwLjM0MTUgMjQzLjQ1NkM0MS41NTYyIDI0My43MzcgNDIuNzAxNCAyNDQuMjYxIDQzLjcwODEgMjQ0Ljk5NkM0NC43MTQ4IDI0NS43MzIgNDUuNTYyMyAyNDYuNjYzIDQ2LjE5OTMgMjQ3LjczNUM0Ni44MzYzIDI0OC44MDcgNDcuMjQ5OCAyNDkuOTk3IDQ3LjQxNDggMjUxLjIzMkM0Ny41Nzk3IDI1Mi40NjggNDcuNDkyOCAyNTMuNzI1IDQ3LjE1OTEgMjU0LjkyNkM0Ni44MjU1IDI1Ni4xMjcgNDYuMjUyIDI1Ny4yNDkgNDUuNDczNCAyNTguMjIzQzQ0LjY5NDggMjU5LjE5NiA0My43MjcxIDI2MC4wMDIgNDIuNjI4NyAyNjAuNTkyQzQxLjUzMDIgMjYxLjE4MSA0MC4zMjM4IDI2MS41NDMgMzkuMDgyIDI2MS42NTNDMzcuODQwMyAyNjEuNzY0IDM2LjU4OSAyNjEuNjIyIDM1LjQwMzUgMjYxLjIzNkMzNS4yNzQ2IDI2MS40NjQgMzUuMDgyMyAyNjEuNjUgMzQuODUgMjYxLjc3QzM0LjYwNzggMjYxLjg5MyAzNC4zMzQgMjYxLjkzNyAzNC4wNjU1IDI2MS44OTlDMzMuNzk3MSAyNjEuODYgMzMuNTQ3IDI2MS43NCAzMy4zNDkyIDI2MS41NTRDMzMuMTUxMyAyNjEuMzY5IDMzLjAxNTMgMjYxLjEyNyAzMi45NTk2IDI2MC44NjFDMzIuOTAzOCAyNjAuNTk2IDMyLjkzMSAyNjAuMzIgMzMuMDM3NCAyNjAuMDdDMzIuNjE3NCAyNTkuNzc3IDMyLjIyMjUgMjU5LjQ0OSAzMS44NTY4IDI1OS4wOUMyOS45Mjk5IDI1OS40MDMgMjcuOTUzNiAyNTkuMDk3IDI2LjIxMTIgMjU4LjIxN0MyNC40Njg4IDI1Ny4zMzYgMjMuMDQ5NiAyNTUuOTI3IDIyLjE1NzIgMjU0LjE5MUwyNy4xMjk1IDI1My4zNTNMMjEuNjU3NSAyNTMuMDI1WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPGcgb3BhY2l0eT0iMC4xIj4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTI5LjMzOSAyNTUuMzg3QzMxLjE3NiAyNTIuOTM3IDMyLjMwMjcgMjUwLjA5NiAzMy41OTYgMjQ3LjM0MkMzNC4xMTM5IDI0Ni4yMDkgMzQuNjk2MiAyNDUuMTA3IDM1LjM0IDI0NC4wNEwzNi4zMTk4IDI0Mi45MDhDMzYuNDg2MyAyNDMuMDUgMzYuNjQ4IDI0My4xOTIgMzYuODA5NiAyNDMuMzM5QzM3LjYxOTMgMjQzLjIwNyAzOC40NDMyIDI0My4xODQgMzkuMjU5IDI0My4yNzFMNDAuMzI3IDI0OC4xMzFMNDAuMzQxNyAyNDMuNDU3QzQxLjU1NjMgMjQzLjczOCA0Mi43MDE1IDI0NC4yNjIgNDMuNzA4MiAyNDQuOTk3QzQ0LjcxNSAyNDUuNzMyIDQ1LjU2MjQgMjQ2LjY2NCA0Ni4xOTk1IDI0Ny43MzZDNDYuODM2NSAyNDguODA4IDQ3LjI1IDI0OS45OTcgNDcuNDE0OSAyNTEuMjMzQzQ3LjU3OTkgMjUyLjQ2OSA0Ny40OTI5IDI1My43MjUgNDcuMTU5MyAyNTQuOTI3QzQ2LjgyNTYgMjU2LjEyOCA0Ni4yNTIyIDI1Ny4yNDkgNDUuNDczNiAyNTguMjIzQzQ0LjY5NSAyNTkuMTk3IDQzLjcyNzMgMjYwLjAwMyA0Mi42Mjg4IDI2MC41OTJDNDEuNTMwNCAyNjEuMTgyIDQwLjMyMzkgMjYxLjU0MyAzOS4wODIyIDI2MS42NTRDMzcuODQwNCAyNjEuNzY1IDM2LjU4OTEgMjYxLjYyMyAzNS40MDM3IDI2MS4yMzdDMzUuMjc0NyAyNjEuNDY1IDM1LjA4MjQgMjYxLjY1IDM0Ljg1MDEgMjYxLjc3MUMzNC42MDggMjYxLjg5MyAzNC4zMzQxIDI2MS45MzggMzQuMDY1NyAyNjEuODk5QzMzLjc5NzIgMjYxLjg2MSAzMy41NDcxIDI2MS43NCAzMy4zNDkzIDI2MS41NTVDMzMuMTUxNSAyNjEuMzY5IDMzLjAxNTUgMjYxLjEyNyAzMi45NTk3IDI2MC44NjJDMzIuOTAzOSAyNjAuNTk2IDMyLjkzMTEgMjYwLjMyIDMzLjAzNzYgMjYwLjA3MUMzMi42MTc1IDI1OS43NzcgMzIuMjIyNiAyNTkuNDUgMzEuODU2OSAyNTkuMDkxQzI5Ljk2OTkgMjU5LjM5NCAyOC4wMzU1IDI1OS4xMDggMjYuMzE2NCAyNTguMjczQzI3LjQ3MjYgMjU3LjQ4IDI4LjQ5MzMgMjU2LjUwNSAyOS4zMzkgMjU1LjM4N1oiIGZpbGw9ImJsYWNrIi8+DQo8L2c+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik02MS44NTIyIDI0NC45NzFDNjEuNzczOSAyNDQuODE3IDYxLjcyNjggMjQ0LjY0OCA2MS43MTM3IDI0NC40NzZDNjEuNzAwNiAyNDQuMzAzIDYxLjcyMTggMjQ0LjEzIDYxLjc3NiAyNDMuOTY1QzYxLjgzMDEgMjQzLjgwMSA2MS45MTYzIDI0My42NDkgNjIuMDI5NCAyNDMuNTE4QzYyLjE0MjUgMjQzLjM4NyA2Mi4yODA1IDI0My4yOCA2Mi40MzUyIDI0My4yMDJDNjIuNjIwMSAyNDMuMTA3IDYyLjgyNTEgMjQzLjA1OSA2My4wMzI5IDI0My4wNkM2My40MDY1IDI0MS4wNzYgNjQuNDIwMSAyMzkuMjY5IDY1LjkxODMgMjM3LjkxNkM2NS42NzYgMjM2Ljk3NCA2NS41ODUgMjM2IDY1LjY0ODggMjM1LjAzTDcwLjQ5MzcgMjM0LjIxN0w2NS43ODYgMjMzLjkxOEM2NS44NzEzIDIzMy40NzUgNjUuOTg5MiAyMzMuMDQgNjYuMTM4NyAyMzIuNjE1QzY1Ljk1MzcgMjMyLjQ5MSA2NS44MDM1IDIzMi4zMjMgNjUuNzAyNyAyMzIuMTI1QzY1LjU4NDkgMjMxLjg4OSA2NS41NDAzIDIzMS42MjMgNjUuNTc0NyAyMzEuMzYxQzY1LjYwOTIgMjMxLjEgNjUuNzIxIDIzMC44NTQgNjUuODk1OCAyMzAuNjU3QzY2LjA3MDYgMjMwLjQ1OSA2Ni4zMDA1IDIzMC4zMTkgNjYuNTU1OSAyMzAuMjUzQzY2LjgxMTMgMjMwLjE4NyA2Ny4wODA2IDIzMC4xOTkgNjcuMzI5MSAyMzAuMjg3QzY4LjE5NDMgMjI5LjA1NiA2OS4zNTA0IDIyOC4wNTggNzAuNjk0NiAyMjcuMzgyQzcyLjI3NzcgMjI2LjU3OSA3NC4wNTkgMjI2LjI0OSA3NS44MjQ5IDIyNi40MzJDNzcuNTkwNyAyMjYuNjE2IDc5LjI2NjEgMjI3LjMwNSA4MC42NTAzIDIyOC40MTdDODIuMDM0NSAyMjkuNTI4IDgzLjA2ODcgMjMxLjAxNiA4My42Mjg5IDIzMi43MDFDODQuMTg5MSAyMzQuMzg2IDg0LjI1MTUgMjM2LjE5NiA4My44MDg3IDIzNy45MTZDODQuMDM4OSAyMzguMDE0IDg0LjIzNjMgMjM4LjE3NyA4NC4zNzc2IDIzOC4zODRDODQuNTE4OSAyMzguNTkgODQuNTk4MyAyMzguODMzIDg0LjYwNjYgMjM5LjA4NEM4NC42MTQ4IDIzOS4zMzQgODQuNTUxNSAyMzkuNTgyIDg0LjQyNCAyMzkuNzk3Qzg0LjI5NjYgMjQwLjAxMyA4NC4xMTAzIDI0MC4xODggODMuODg3IDI0MC4zMDJDODMuNzE5NiAyNDAuMzg3IDgzLjUzNjEgMjQwLjQzNSA4My4zNDg1IDI0MC40NDNDODMuMTYxIDI0MC40NTIgODIuOTczOSAyNDAuNDIgODIuNzk5NSAyNDAuMzUxQzgyLjMyNjcgMjQxLjE0MyA4MS43MzcxIDI0MS44NiA4MS4wNTA2IDI0Mi40NzdDODEuNTUyNyAyNDQuNDMxIDgxLjQwMzEgMjQ2LjQ5NSA4MC42MjQ0IDI0OC4zNTZMNzQuMTQzMyAyNDYuNjUxTDc5LjkzODYgMjQ5LjcwNEM3OS4wNjg1IDI1MS4wOTIgNzcuODQ0OCAyNTIuMjI0IDc2LjM5MyAyNTIuOTg0Qzc0Ljk0MTIgMjUzLjc0NCA3My4zMTM1IDI1NC4xMDQgNzEuNjc2OCAyNTQuMDI3QzcwLjA0IDI1My45NSA2OC40NTMxIDI1My40NCA2Ny4wNzg4IDI1Mi41NDdDNjUuNzA0NSAyNTEuNjU1IDY0LjU5MjEgMjUwLjQxMyA2My44NTU5IDI0OC45NDlDNjMuMzQzMyAyNDcuOTMgNjMuMDIxMiAyNDYuODI2IDYyLjkwNTUgMjQ1LjY5MUM2Mi42ODMxIDI0NS42NzEgNjIuNDY5NSAyNDUuNTk0IDYyLjI4NTEgMjQ1LjQ2OEM2Mi4xMDA3IDI0NS4zNDIgNjEuOTUxNyAyNDUuMTcxIDYxLjg1MjIgMjQ0Ljk3MVYyNDQuOTcxWiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNNjEuODUyMiAyNDQuOTcxQzYxLjc3MzkgMjQ0LjgxNiA2MS43MjY4IDI0NC42NDggNjEuNzEzNyAyNDQuNDc2QzYxLjcwMDYgMjQ0LjMwMyA2MS43MjE4IDI0NC4xMyA2MS43NzYgMjQzLjk2NUM2MS44MzAxIDI0My44MDEgNjEuOTE2MyAyNDMuNjQ5IDYyLjAyOTQgMjQzLjUxOEM2Mi4xNDI1IDI0My4zODcgNjIuMjgwNSAyNDMuMjggNjIuNDM1MiAyNDMuMjAyQzYyLjYyMDEgMjQzLjEwNyA2Mi44MjUxIDI0My4wNTkgNjMuMDMyOSAyNDMuMDZDNjMuNDA2NSAyNDEuMDc2IDY0LjQyMDEgMjM5LjI2OSA2NS45MTgzIDIzNy45MTZDNjUuODc5MSAyMzcuNzY0IDY1Ljg0NDggMjM3LjYwNyA2NS44MTU0IDIzNy40NTVDNjUuOTkxMSAyMzcuNTggNjYuMTU1MSAyMzcuNzIxIDY2LjMwNTMgMjM3Ljg3NkM2Ny4xODIxIDIzOC44NTYgNjcuNjMyOCAyNDAuMTI1IDY4LjQ5NSAyNDEuMDk1QzY5LjU3NTMgMjQyLjIxIDcxLjAyNzcgMjQyLjg4OCA3Mi41NzU3IDI0My4wMDFDNzQuMTA5IDI0My4xMDcgNzUuNjQ5NSAyNDIuOTgzIDc3LjE0NjMgMjQyLjYzNEM3OC4zODA3IDI0Mi4zMTYgNzkuNjU0MSAyNDIuMTc1IDgwLjkyODIgMjQyLjIxN0w4MS4yOTA3IDI0Mi4yNjZMODEuMDY1MyAyNDIuNDc3QzgxLjU2NzQgMjQ0LjQzMSA4MS40MTc4IDI0Ni40OTUgODAuNjM5MSAyNDguMzU2TDc0LjE0MzMgMjQ2LjY1MUw3OS45Mzg2IDI0OS43MDRDNzkuMDY4NSAyNTEuMDkyIDc3Ljg0NDggMjUyLjIyNCA3Ni4zOTMgMjUyLjk4NEM3NC45NDEyIDI1My43NDQgNzMuMzEzNSAyNTQuMTA0IDcxLjY3NjggMjU0LjAyN0M3MC4wNCAyNTMuOTUgNjguNDUzMSAyNTMuNDM5IDY3LjA3ODggMjUyLjU0N0M2NS43MDQ1IDI1MS42NTUgNjQuNTkyMSAyNTAuNDEzIDYzLjg1NTkgMjQ4Ljk0OUM2My4zNDMzIDI0Ny45MyA2My4wMjEyIDI0Ni44MjYgNjIuOTA1NSAyNDUuNjkxQzYyLjY4MzEgMjQ1LjY3MSA2Mi40Njk1IDI0NS41OTQgNjIuMjg1MSAyNDUuNDY4QzYyLjEwMDcgMjQ1LjM0MiA2MS45NTE3IDI0NS4xNzEgNjEuODUyMiAyNDQuOTcxVjI0NC45NzFaIiBmaWxsPSJibGFjayIvPg0KPC9nPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMTY5LjY3IDI1LjQzMjRDMTY3LjczMyAyNS4wNjQ3IDE2NS43MzEgMjUuMjgzMSAxNjMuOTE5IDI2LjA1OTVDMTYyLjgzMiAyNi41NDQgMTYxLjY1NSAyNi43OTQzIDE2MC40NjUgMjYuNzk0M0MxNTkuMjc1IDI2Ljc5NDMgMTU4LjA5OSAyNi41NDQgMTU3LjAxMiAyNi4wNTk1QzE1NS43MjcgMjUuNDk2MyAxNTQuMzM1IDI1LjIxOTEgMTUyLjkzMyAyNS4yNDdDMTUxLjUzIDI1LjI3NDkgMTUwLjE1MSAyNS42MDczIDE0OC44ODkgMjYuMjIxMkMxNDguMTY5IDI2LjYwMTcgMTQ3LjM2NyAyNi44MDE4IDE0Ni41NTMgMjYuODA0MkMxNDMuMjYxIDI2LjgwNDIgMTQwLjUyMiAyMy40ODczIDEzOS45NTQgMTkuMTEyMkMxNDAuNjEgMTguNjMxIDE0MS4xNjkgMTguMDI5IDE0MS42IDE3LjMzODZDMTQzLjUzIDE0LjIyNzUgMTQ2LjQ5OSAxMi4yMjg1IDE0OS44NzQgMTIuMjI4NUMxNTMuMjQ5IDEyLjIyODUgMTU2LjE4OSAxNC4xODgzIDE1OC4xMTkgMTcuMjc5OEMxNTguNjk1IDE4LjIwODIgMTU5LjUwMSAxOC45NzI2IDE2MC40NTkgMTkuNDk5NUMxNjEuNDE2IDIwLjAyNjMgMTYyLjQ5MyAyMC4yOTc5IDE2My41ODYgMjAuMjg4SDE2My42NzRDMTY2LjI3IDIwLjI3MzMgMTY4LjUzOSAyMi4zNzUyIDE2OS42NyAyNS40MzI0WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMTc5LjY3NCAxMS43MTQ1TDE3NC4zNTQgMTUuMDkwMkwxNzcuNTgyIDkuMjEwODhDMTc2LjY2NiA4LjQ4MTI5IDE3NS41MzQgOC4wNzc4NSAxNzQuMzYzIDguMDY0NDJIMTc0LjI4QzE3My45MTEgOC4wNjg5MyAxNzMuNTQyIDguMDQxMDYgMTczLjE3OCA3Ljk4MTEzTDE3MS4zNyA5LjEyNzU5TDE3Mi4xNDQgNy43MjE0NkMxNzAuODcgNy4yNzgxIDE2OS43NjcgNi40NDcyMSAxNjguOTg5IDUuMzQ1MjVMMTY1Ljc1MSA3LjM2ODdMMTY3Ljc4OSAzLjY1OTg1QzE2NS45MDMgMS4zOTE0MyAxNjMuMzU2IDAgMTYwLjU1OSAwQzE1Ny4yMDMgMCAxNTQuMTkgMS45OTg5NSAxNTIuMjggNS4xMTAwOEMxNTEuNzA4IDYuMDM5MzUgMTUwLjkwMSA2LjgwMDc5IDE0OS45NCA3LjMxNzA5QzE0OC45NzggNy44MzMzOCAxNDcuODk4IDguMDg2MTUgMTQ2LjgwOCA4LjA0OTcySDE0Ni42NDZDMTQyLjk0MiA4LjA0OTcyIDEzOS45MzUgMTIuMjQ4NSAxMzkuOTM1IDE3LjQzN0MxMzkuOTM1IDIyLjYyNTQgMTQyLjk0MiAyNi44MTkzIDE0Ni42NDYgMjYuODE5M0MxNDcuNDYxIDI2LjgxNjkgMTQ4LjI2MiAyNi42MTY4IDE0OC45ODMgMjYuMjM2M0MxNTAuMjQ0IDI1LjYyMTkgMTUxLjYyNCAyNS4yODk2IDE1My4wMjYgMjUuMjYyNUMxNTQuNDI5IDI1LjIzNTUgMTU1LjgyMSAyNS41MTQzIDE1Ny4xMDUgMjYuMDc5NUMxNTguMTkyIDI2LjU2MjUgMTU5LjM2OSAyNi44MTIgMTYwLjU1OSAyNi44MTJDMTYxLjc0OCAyNi44MTIgMTYyLjkyNSAyNi41NjI1IDE2NC4wMTIgMjYuMDc5NUMxNjUuMjg2IDI1LjUyNjMgMTY2LjY2NSAyNS4yNTM5IDE2OC4wNTQgMjUuMjgwOUMxNjkuNDQyIDI1LjMwOCAxNzAuODA5IDI1LjYzMzggMTcyLjA2MSAyNi4yMzYzQzE3Mi43NzYgMjYuNjA2NiAxNzMuNTY4IDI2LjgwMTQgMTc0LjM3MyAyNi44MDQ2QzE3OC4wODIgMjYuODA0NiAxODEuMDg0IDIyLjYwNTggMTgxLjA4NCAxNy40MjIzQzE4MS4wOTcgMTUuNDMxOCAxODAuNjEyIDEzLjQ2OTYgMTc5LjY3NCAxMS43MTQ1VjExLjcxNDVaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik01OC45NTY5IDkzLjMwODFDNTYuMTkwNiA5Mi43ODQ2IDUzLjMzMTIgOTMuMDk1IDUwLjc0MTYgOTQuMTk5OEM0OS4xODc1IDk0Ljg4ODggNDcuNTA1OCA5NS4yNDI3IDQ1LjgwNTkgOTUuMjM4NUM0NC4xMDYgOTUuMjM0MyA0Mi40MjYgOTQuODcyIDQwLjg3NTQgOTQuMTc1M0MzOS4wNDA2IDkzLjM3MDcgMzcuMDUyOSA5Mi45NzQ2IDM1LjA0OTkgOTMuMDE0NEMzMy4wNDY5IDkzLjA1NDIgMzEuMDc2NSA5My41Mjg4IDI5LjI3NTEgOTQuNDA1NkMyOC4yNDQ4IDk0Ljk0ODQgMjcuMDk4NiA5NS4yMzQxIDI1LjkzNDEgOTUuMjM4NUMyMS4yMzEyIDk1LjIzODUgMTcuMzE3MSA5MC41MDA4IDE2LjUwMzkgODQuMjQ5MUMxNy40NDM3IDgzLjU2NDMgMTguMjQyMSA4Mi43MDQyIDE4Ljg1NTMgODEuNzE2MUMyMS42MTM0IDc3LjI3MjQgMjUuODg1MSA3NC40MTYgMzAuNjgxIDc0LjQxNkMzNS40NzY5IDc0LjQxNiAzOS42OTQ4IDc3LjIzODEgNDIuNDM4MSA4MS42MzI4QzQzLjI2MjYgODIuOTY0OCA0NC40MTc4IDg0LjA2MDYgNDUuNzkxNCA4NC44MTM2QzQ3LjE2NDkgODUuNTY2NSA0OC43MSA4NS45NTEgNTAuMjc2MiA4NS45Mjk2SDUwLjM5ODdDNTQuMTEyIDg1LjkyNDcgNTcuMzU1IDg4LjkyOCA1OC45NTY5IDkzLjMwODFaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik03My4yNjE1IDczLjY4NjVMNjUuNjU4NiA3OC41MDc2TDcwLjI3MzMgNzAuMTE0OUM2OC45NjU0IDY5LjA3MDggNjcuMzQ2NiA2OC40OTMyIDY1LjY3MzMgNjguNDczNkg2NS41NTA4QzY1LjAyMjYgNjguNDgxMyA2NC40OTQ3IDY4LjQ0MiA2My45NzM0IDY4LjM1Nkw2MS40MDY0IDcwLjAxNjlMNjIuNTEzNiA2OC4wMDgxQzYwLjY4NjggNjcuMzY5NyA1OS4xMDkxIDY2LjE2OTEgNTguMDA2NyA2NC41Nzg1TDUzLjM5MiA2Ny41MTgyTDU2LjI5NyA2Mi4xNzc4QzUzLjU5NzggNTguOTM5MyA0OS45NjI4IDU2Ljk1NTEgNDUuOTY1NCA1Ni45NTUxQzQxLjE2OTUgNTYuOTU1MSAzNi44OTc4IDU5LjgwNjUgMzQuMTM5NyA2NC4yNTAzQzMzLjMyMjkgNjUuNTgzNyAzMi4xNjcgNjYuNjc2NyAzMC43OTAxIDY3LjQxNzhDMjkuNDEzMiA2OC4xNTg4IDI3Ljg2NDQgNjguNTIxNCAyNi4zMDE3IDY4LjQ2ODdIMjYuMDQyQzIwLjc0NjQgNjguNDY4NyAxNi40NTUxIDc0LjQ3MDQgMTYuNDU1MSA4MS44NzgzQzE2LjQ1NTEgODkuMjg2MiAyMC43NDY0IDk1LjI4OCAyNi4wNDIgOTUuMjg4QzI3LjIwNzMgOTUuMjg0OSAyOC4zNTQxIDk0Ljk5NzMgMjkuMzgzIDk0LjQ1MDJDMzEuMTg0OCA5My41NzQyIDMzLjE1NTQgOTMuMTAwNCAzNS4xNTg0IDkzLjA2MTVDMzcuMTYxNCA5My4wMjI2IDM5LjE0ODkgOTMuNDE5NSA0MC45ODM0IDk0LjIyNDhDNDIuNTM0IDk0LjkyMTUgNDQuMjEzOSA5NS4yODM4IDQ1LjkxMzggOTUuMjg4QzQ3LjYxMzcgOTUuMjkyMiA0OS4yOTU1IDk0LjkzODMgNTAuODQ5NSA5NC4yNDkzQzUyLjY3MDQgOTMuNDU4OSA1NC42NDAxIDkzLjA2OTUgNTYuNjI0NyA5My4xMDc1QzU4LjYwOTQgOTMuMTQ1NiA2MC41NjI2IDkzLjYxMDIgNjIuMzUxOSA5NC40Njk4QzYzLjM3MSA5NS4wMDMyIDY0LjUwMzQgOTUuMjgzOCA2NS42NTM3IDk1LjI4OEM3MC45NDkzIDk1LjI4OCA3NS4yNDA2IDg5LjI4MTMgNzUuMjQwNiA4MS44NzgzQzc1LjI3NzYgNzkuMDI1IDc0LjU5NyA3Ni4yMDgyIDczLjI2MTUgNzMuNjg2NVY3My42ODY1WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzY2LjQxNSA0NC41NDA5QzM2OC4zNTIgNDQuMTczNSAzNzAuMzU0IDQ0LjM5MTggMzcyLjE2NiA0NS4xNjhDMzczLjI1MiA0NS42NTI2IDM3NC40MjggNDUuOTAzMSAzNzUuNjE3IDQ1LjkwMzFDMzc2LjgwNyA0NS45MDMxIDM3Ny45ODMgNDUuNjUyNiAzNzkuMDY5IDQ1LjE2OEMzODAuMzUzIDQ0LjYwNDggMzgxLjc0NSA0NC4zMjc1IDM4My4xNDggNDQuMzU1NUMzODQuNTUgNDQuMzgzNCAzODUuOTMgNDQuNzE1OCAzODcuMTkxIDQ1LjMyOTdDMzg3LjkxMSA0NS43MDk2IDM4OC43MTMgNDUuOTA5NyAzODkuNTI4IDQ1LjkxMjdDMzkyLjgyIDQ1LjkxMjcgMzk1LjU2MyA0Mi41OTU4IDM5Ni4xMzEgMzguMjIwN0MzOTUuNDc0IDM3Ljc0MDcgMzk0LjkxNSAzNy4xMzg1IDM5NC40ODUgMzYuNDQ3MUMzOTIuNTY1IDMzLjMyNjIgMzg5LjU2MiAzMS4zMTI1IDM4Ni4xOTYgMzEuMzEyNUMzODIuODMxIDMxLjMxMjUgMzc5Ljg4NyAzMy4yNzIzIDM3Ny45NTcgMzYuMzYzOEMzNzcuMzgxIDM3LjI5NjQgMzc2LjU3NCAzOC4wNjQ2IDM3NS42MTUgMzguNTk0MUMzNzQuNjU1IDM5LjEyMzcgMzczLjU3NiAzOS4zOTY3IDM3Mi40OCAzOS4zODY3SDM3Mi4zOTZDMzY5Ljc5IDM5LjM4MTggMzY3LjUxNyA0MS40ODM3IDM2Ni40MTUgNDQuNTQwOVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTM1Ni4zODIgMzAuODIwOEwzNjEuNzAzIDM0LjE4NjdMMzU4LjQ2OSAyOC4zMDc0QzM1OS4zODUgMjcuNTc4NSAzNjAuNTE4IDI3LjE3NTIgMzYxLjY4OCAyNy4xNjFIMzYxLjc3NkMzNjIuMTQ1IDI3LjE2NTIgMzYyLjUxNCAyNy4xMzc0IDM2Mi44NzggMjcuMDc3N0wzNjQuNjgxIDI4LjIyNDFMMzYzLjkwNyAyNi44MThDMzY1LjE5IDI2LjM4MjEgMzY2LjMwNCAyNS41NTQ0IDM2Ny4wOTEgMjQuNDUxNkwzNzAuMzIgMjYuNDk5NkwzNjguMjc3IDIyLjc5MDdDMzcwLjE2OCAyMC41MjIzIDM3Mi42ODYgMTkuMTMwOSAzNzUuNTEyIDE5LjEzMDlDMzc4Ljg2OCAxOS4xMzA5IDM4MS44ODEgMjEuMTI5OCAzODMuNzkxIDI0LjI0MDlDMzg0LjM2MyAyNS4xNzA2IDM4NS4xNyAyNS45MzIzIDM4Ni4xMzEgMjYuNDQ4NkMzODcuMDkyIDI2Ljk2NSAzODguMTczIDI3LjIxNzUgMzg5LjI2MyAyNy4xODA2SDM4OS40NEMzOTMuMTQ4IDI3LjE4MDYgMzk2LjE1MSAzMS4zNzk0IDM5Ni4xNTEgMzYuNTY3OEMzOTYuMTUxIDQxLjc1NjMgMzkzLjE0OCA0NS45NTAyIDM4OS40NCA0NS45NTAyQzM4OC42MjUgNDUuOTQ2NiAzODcuODI0IDQ1Ljc0NjYgMzg3LjEwMyA0NS4zNjcyQzM4NS44NDIgNDQuNzUyOCAzODQuNDYyIDQ0LjQyMDUgMzgzLjA1OSA0NC4zOTM0QzM4MS42NTYgNDQuMzY2MyAzODAuMjY1IDQ0LjY0NTEgMzc4Ljk4MSA0NS4yMTA0QzM3Ny44OTQgNDUuNjkzMiAzNzYuNzE4IDQ1Ljk0MjcgMzc1LjUyOSA0NS45NDI3QzM3NC4zNCA0NS45NDI3IDM3My4xNjUgNDUuNjkzMiAzNzIuMDc4IDQ1LjIxMDRDMzcwLjgwMyA0NC42NTcgMzY5LjQyNCA0NC4zODQ2IDM2OC4wMzQgNDQuNDExN0MzNjYuNjQ1IDQ0LjQzODcgMzY1LjI3NyA0NC43NjQ2IDM2NC4wMjUgNDUuMzY3MkMzNjMuMzEgNDUuNzM4IDM2Mi41MTcgNDUuOTMyOSAzNjEuNzEyIDQ1LjkzNTVDMzU4LjAwOSA0NS45MzU1IDM1NS4wMDEgNDEuNzM2NyAzNTUuMDAxIDM2LjU1MzFDMzU0Ljk3NSAzNC41NTY5IDM1NS40NSAzMi41ODYgMzU2LjM4MiAzMC44MjA4VjMwLjgyMDhaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zMDEuNTg1IDM4MC42MjVDMzMyLjY5OSAzODAuNjI1IDM1Ny45MjEgMzc2LjIzOCAzNTcuOTIxIDM3MC44MjZDMzU3LjkyMSAzNjUuNDE0IDMzMi42OTkgMzYxLjAyNyAzMDEuNTg1IDM2MS4wMjdDMjcwLjQ3MiAzNjEuMDI3IDI0NS4yNDkgMzY1LjQxNCAyNDUuMjQ5IDM3MC44MjZDMjQ1LjI0OSAzNzYuMjM4IDI3MC40NzIgMzgwLjYyNSAzMDEuNTg1IDM4MC42MjVaIiBmaWxsPSIjMkU0NDcwIi8+DQo8cGF0aCBkPSJNMjcyLjA5OCAzMjQuMjgyTDE4NC44MDcgMzIzLjE2TDE4NS4wNjYgMzIwLjkyMUwxODkuMjg0IDI4My45ODRIMjY1Ljk0NUwyNzEuNTg0IDMyMC45MjFMMjcyLjAxNSAzMjMuNzIzTDI3Mi4wOTggMzI0LjI4MloiIGZpbGw9IiNEMEQyRDUiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTI3Mi4wMTUgMzIzLjcyNEgyMjguNDU1TDE4NC44MDcgMzIzLjE2MUwxODUuMDY2IDMyMC45MjJIMjcxLjU4NEwyNzIuMDE1IDMyMy43MjRaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTI4Ni4wOSAzMjEuNDg0SDE3MC4yNThWMzI0LjI4MkgyODYuMDlWMzIxLjQ4NFoiIGZpbGw9IiNEMEQyRDUiLz4NCjxwYXRoIGQ9Ik0zOTYuNjAyIDYyLjE0QzM5Ni42MDggNjAuMjA5NSAzOTUuODQ5IDU4LjM1NTMgMzk0LjQ4OSA1Ni45ODQ3QzM5My4xMyA1NS42MTQxIDM5MS4yODIgNTQuODM5MiAzODkuMzUyIDU0LjgzMDFINjUuODc0M0M2NC45MTc3IDU0LjgzNDYgNjMuOTcxMyA1NS4wMjc1IDYzLjA4OTMgNTUuMzk3OEM2Mi4yMDcyIDU1Ljc2OCA2MS40MDY3IDU2LjMwODUgNjAuNzMzNCA1Ni45ODgyQzYwLjA2MDIgNTcuNjY3OSA1OS41Mjc0IDU4LjQ3MzUgNTkuMTY1NSA1OS4zNTkyQzU4LjgwMzUgNjAuMjQ0OCA1OC42MTk2IDYxLjE5MzEgNTguNjI0MSA2Mi4xNDk4VjI1OC4yNDhIMzk2LjYwMlY2Mi4xNFoiIGZpbGw9IiMzRjNENTYiLz4NCjxwYXRoIGQ9Ik01OC42MjQgMjU2LjI4OVYyNzkuMjU3QzU4LjYyNCAyODEuMTgxIDU5LjM4NzkgMjgzLjAyNSA2MC43NDc2IDI4NC4zODVDNjIuMTA3MiAyODUuNzQ1IDYzLjk1MTQgMjg2LjUwOSA2NS44NzQyIDI4Ni41MDlIMzg5LjM1MkMzOTEuMjc0IDI4Ni41MDkgMzkzLjExOSAyODUuNzQ1IDM5NC40NzggMjg0LjM4NUMzOTUuODM4IDI4My4wMjUgMzk2LjYwMiAyODEuMTgxIDM5Ni42MDIgMjc5LjI1N1YyNTYuMjg5SDU4LjYyNFoiIGZpbGw9IiNEMEQyRDUiLz4NCjxwYXRoIGQ9Ik0zODQuMjkgNjcuMTI3SDcyLjYxNDNWMjQzLjQxMkgzODQuMjlWNjcuMTI3WiIgZmlsbD0id2hpdGUiLz4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiPg0KPHBhdGggZD0iTTIyOS4wOTMgMTkwLjAxOEMyNzYuNTU0IDE5MC4wMTggMzE1LjAyOSAxODcuNDc2IDMxNS4wMjkgMTg0LjMzOUMzMTUuMDI5IDE4MS4yMDMgMjc2LjU1NCAxNzguNjYgMjI5LjA5MyAxNzguNjZDMTgxLjYzMiAxNzguNjYgMTQzLjE1NyAxODEuMjAzIDE0My4xNTcgMTg0LjMzOUMxNDMuMTU3IDE4Ny40NzYgMTgxLjYzMiAxOTAuMDE4IDIyOS4wOTMgMTkwLjAxOFoiIGZpbGw9IiNGMkYyRjIiLz4NCjxwYXRoIGQ9Ik0yMjUuOCAxMjIuMTdDMjExLjc5OSAxMjIuMTcgMjAxLjc0NiAxMzEuMTM3IDIwMS43NDYgMTUyLjA2QzIwMS43NDYgMTc1Ljc3MiAyMTEuNzk5IDE4Mi4wNDkgMjI1LjggMTgyLjA0OUMyMzkuODAxIDE4Mi4wNDkgMjUwLjQ1MyAxNzUuMTc0IDI1MC40NTMgMTUyLjA2QzI1MC40NTMgMTI3LjM1MSAyMzkuODAxIDEyMi4xNyAyMjUuOCAxMjIuMTdaTTIyNS44OTIgMTc0LjE3OEMyMTYuMTk1IDE3NC4xNzggMjExLjEyOCAxNjguNDk5IDIxMS4xMjggMTUyLjA3NUMyMTEuMTI4IDEzNy41ODMgMjE2LjQwMiAxMjkuOTQxIDIyNi4xIDEyOS45NDFDMjM1Ljc5NyAxMjkuOTQxIDI0MS4wNzEgMTM0Ljk2MSAyNDEuMDcxIDE1Mi4wNzVDMjQxLjA3MSAxNjguMDg1IDIzNS41OSAxNzQuMTc4IDIyNS44OTIgMTc0LjE3OFoiIGZpbGw9IiMyRjJFNDEiLz4NCjxwYXRoIGQ9Ik0xOTMuMzYxIDE2NS41MUgxODcuNTczVjE0OC40OTNDMTg3LjU3MyAxNDcuNTg5IDE4Ny4yMTMgMTQ2LjcyMyAxODYuNTczIDE0Ni4wODRDMTg1LjkzMiAxNDUuNDQ0IDE4NS4wNjQgMTQ1LjA4NSAxODQuMTU5IDE0NS4wODVIMTgyLjgwMkMxODIuMzU0IDE0NS4wODUgMTgxLjkxIDE0NS4xNzQgMTgxLjQ5NiAxNDUuMzQ1QzE4MS4wODEgMTQ1LjUxNiAxODAuNzA1IDE0NS43NjcgMTgwLjM4OCAxNDYuMDg0QzE4MC4wNzEgMTQ2LjQgMTc5LjgyIDE0Ni43NzYgMTc5LjY0OCAxNDcuMTg5QzE3OS40NzYgMTQ3LjYwMyAxNzkuMzg4IDE0OC4wNDYgMTc5LjM4OCAxNDguNDkzVjE2NS41MUgxNjMuMDU5QzE2Mi43MjQgMTY1LjUxIDE2Mi4zOTMgMTY1LjQyMyAxNjIuMTAxIDE2NS4yNThDMTYxLjgwOCAxNjUuMDkzIDE2MS41NjQgMTY0Ljg1NiAxNjEuMzkgMTY0LjU2OUMxNjEuMjE3IDE2NC4yODIgMTYxLjEyMSAxNjMuOTU0IDE2MS4xMTEgMTYzLjYxOUMxNjEuMTAyIDE2My4yODQgMTYxLjE3OSAxNjIuOTUyIDE2MS4zMzYgMTYyLjY1NkwxNzguNjE4IDEzMC4wMDRDMTc4LjgzNCAxMjkuNTk3IDE3OC45NjQgMTI5LjE1MSAxNzkuMDAyIDEyOC42OTJDMTc5LjA0IDEyOC4yMzMgMTc4Ljk4NCAxMjcuNzcxIDE3OC44MzkgMTI3LjMzNEMxNzguNjkzIDEyNi44OTggMTc4LjQ2IDEyNi40OTUgMTc4LjE1NCAxMjYuMTUxQzE3Ny44NDcgMTI1LjgwNiAxNzcuNDc1IDEyNS41MjcgMTc3LjA1OCAxMjUuMzMxTDE3Ni4wMzcgMTI0Ljg1QzE3NS4yNDUgMTI0LjQ3NiAxNzQuMzQgMTI0LjQyMSAxNzMuNTA4IDEyNC42OTZDMTcyLjY3NiAxMjQuOTcgMTcxLjk4MiAxMjUuNTU0IDE3MS41NjkgMTI2LjMyNUwxNTAuNDkxIDE2NS42ODVDMTUwLjEzMiAxNjYuMzU1IDE0OS45NDQgMTY3LjEwMyAxNDkuOTQ0IDE2Ny44NjNWMTY3Ljg2M0MxNDkuOTQ0IDE2OC40NyAxNTAuMDY0IDE2OS4wNzEgMTUwLjI5NyAxNjkuNjMyQzE1MC41MjkgMTcwLjE5MiAxNTAuODcgMTcwLjcwMiAxNTEuMyAxNzEuMTMxQzE1MS43MyAxNzEuNTYgMTUyLjI0IDE3MS45IDE1Mi44MDIgMTcyLjEzM0MxNTMuMzY0IDE3Mi4zNjUgMTUzLjk2NiAxNzIuNDg0IDE1NC41NzQgMTcyLjQ4NEgxNzkuMzg4VjE4My4yNDVDMTc5LjM4OCAxODMuNzgxIDE3OS40OTQgMTg0LjMxMiAxNzkuNyAxODQuODA4QzE3OS45MDUgMTg1LjMwMyAxODAuMjA3IDE4NS43NTQgMTgwLjU4NyAxODYuMTMzQzE4MC45NjcgMTg2LjUxMiAxODEuNDE4IDE4Ni44MTMgMTgxLjkxNCAxODcuMDE5QzE4Mi40MTEgMTg3LjIyNCAxODIuOTQzIDE4Ny4zMjkgMTgzLjQ4IDE4Ny4zMjlIMTgzLjQ4QzE4NC4wMTggMTg3LjMyOSAxODQuNTUgMTg3LjIyNCAxODUuMDQ2IDE4Ny4wMTlDMTg1LjU0MyAxODYuODEzIDE4NS45OTQgMTg2LjUxMiAxODYuMzc0IDE4Ni4xMzNDMTg2Ljc1NCAxODUuNzU0IDE4Ny4wNTUgMTg1LjMwMyAxODcuMjYxIDE4NC44MDhDMTg3LjQ2NyAxODQuMzEyIDE4Ny41NzMgMTgzLjc4MSAxODcuNTczIDE4My4yNDVWMTcyLjQ4NEgxOTMuMzYxQzE5NC4yODggMTcyLjQ4NCAxOTUuMTc2IDE3Mi4xMTcgMTk1LjgzMiAxNzEuNDYzQzE5Ni40ODcgMTcwLjgwOSAxOTYuODU1IDE2OS45MjIgMTk2Ljg1NSAxNjguOTk3VjE2OC45OTdDMTk2Ljg1NSAxNjguMDcyIDE5Ni40ODcgMTY3LjE4NSAxOTUuODMyIDE2Ni41MzFDMTk1LjE3NyAxNjUuODc3IDE5NC4yODggMTY1LjUxIDE5My4zNjEgMTY1LjUxVjE2NS41MVoiIGZpbGw9IiMzMzY5Q0UiLz4NCjxwYXRoIGQ9Ik0zMDAuNTU4IDE2NS41MUgyOTQuNzY5VjE0OC40OTNDMjk0Ljc2OSAxNDcuNTg5IDI5NC40MDkgMTQ2LjcyMyAyOTMuNzY5IDE0Ni4wODRDMjkzLjEyOSAxNDUuNDQ0IDI5Mi4yNiAxNDUuMDg1IDI5MS4zNTUgMTQ1LjA4NUgyODkuOTk4QzI4OS41NSAxNDUuMDg1IDI4OS4xMDYgMTQ1LjE3NCAyODguNjkyIDE0NS4zNDVDMjg4LjI3OCAxNDUuNTE2IDI4Ny45MDEgMTQ1Ljc2NyAyODcuNTg0IDE0Ni4wODRDMjg3LjI2NyAxNDYuNCAyODcuMDE2IDE0Ni43NzYgMjg2Ljg0NCAxNDcuMTg5QzI4Ni42NzMgMTQ3LjYwMyAyODYuNTg0IDE0OC4wNDYgMjg2LjU4NCAxNDguNDkzVjE2NS41MUgyNzAuMjU2QzI2OS45MiAxNjUuNTEgMjY5LjU5IDE2NS40MjMgMjY5LjI5NyAxNjUuMjU4QzI2OS4wMDUgMTY1LjA5MyAyNjguNzYgMTY0Ljg1NiAyNjguNTg2IDE2NC41NjlDMjY4LjQxMyAxNjQuMjgyIDI2OC4zMTcgMTYzLjk1NCAyNjguMzA4IDE2My42MTlDMjY4LjI5OCAxNjMuMjg0IDI2OC4zNzYgMTYyLjk1MiAyNjguNTMzIDE2Mi42NTZMMjg1LjgxNSAxMzAuMDA0QzI4Ni4wMyAxMjkuNTk3IDI4Ni4xNjEgMTI5LjE1MSAyODYuMTk5IDEyOC42OTJDMjg2LjIzNiAxMjguMjMzIDI4Ni4xODEgMTI3Ljc3MSAyODYuMDM1IDEyNy4zMzRDMjg1Ljg4OSAxMjYuODk4IDI4NS42NTYgMTI2LjQ5NSAyODUuMzUgMTI2LjE1MUMyODUuMDQ0IDEyNS44MDYgMjg0LjY3MSAxMjUuNTI3IDI4NC4yNTQgMTI1LjMzMUwyODMuMjM0IDEyNC44NUMyODIuNDQxIDEyNC40NzYgMjgxLjUzNiAxMjQuNDIxIDI4MC43MDQgMTI0LjY5NkMyNzkuODcyIDEyNC45NyAyNzkuMTc4IDEyNS41NTQgMjc4Ljc2NSAxMjYuMzI1TDI1Ny42ODcgMTY1LjY4NUMyNTcuMzI4IDE2Ni4zNTUgMjU3LjE0MSAxNjcuMTAzIDI1Ny4xNDEgMTY3Ljg2M1YxNjcuODYzQzI1Ny4xNDEgMTY5LjA4OSAyNTcuNjI4IDE3MC4yNjQgMjU4LjQ5NyAxNzEuMTMxQzI1OS4zNjUgMTcxLjk5NyAyNjAuNTQyIDE3Mi40ODQgMjYxLjc3IDE3Mi40ODRIMjg2LjU4NFYxODMuMjQ1QzI4Ni41ODQgMTg0LjMyOCAyODcuMDE2IDE4NS4zNjcgMjg3Ljc4MyAxODYuMTMzQzI4OC41NSAxODYuODk5IDI4OS41OTEgMTg3LjMyOSAyOTAuNjc3IDE4Ny4zMjlWMTg3LjMyOUMyOTEuNzYyIDE4Ny4zMjkgMjkyLjgwMyAxODYuODk5IDI5My41NyAxODYuMTMzQzI5NC4zMzggMTg1LjM2NyAyOTQuNzY5IDE4NC4zMjggMjk0Ljc2OSAxODMuMjQ1VjE3Mi40ODRIMzAwLjU1OEMzMDEuNDg0IDE3Mi40ODQgMzAyLjM3MyAxNzIuMTE3IDMwMy4wMjggMTcxLjQ2M0MzMDMuNjgzIDE3MC44MDkgMzA0LjA1MSAxNjkuOTIyIDMwNC4wNTEgMTY4Ljk5N1YxNjguOTk3QzMwNC4wNTEgMTY4LjA3MiAzMDMuNjgzIDE2Ny4xODUgMzAzLjAyOCAxNjYuNTMxQzMwMi4zNzMgMTY1Ljg3NyAzMDEuNDg0IDE2NS41MSAzMDAuNTU4IDE2NS41MVoiIGZpbGw9IiMzMzY5Q0UiLz4NCjxwYXRoIGQ9Ik0xOTQuOTU5IDE2My41MTZIMTg5LjE3VjE0Ni40OTlDMTg5LjE3IDE0Ni4wNTIgMTg5LjA4MiAxNDUuNjA4IDE4OC45MSAxNDUuMTk1QzE4OC43MzkgMTQ0Ljc4MiAxODguNDg3IDE0NC40MDYgMTg4LjE3IDE0NC4wODlDMTg3Ljg1MyAxNDMuNzczIDE4Ny40NzcgMTQzLjUyMiAxODcuMDYzIDE0My4zNTFDMTg2LjY0OCAxNDMuMTc5IDE4Ni4yMDUgMTQzLjA5MSAxODUuNzU2IDE0My4wOTFIMTg0LjRDMTgzLjQ5NCAxNDMuMDkxIDE4Mi42MjYgMTQzLjQ1IDE4MS45ODYgMTQ0LjA4OUMxODEuMzQ1IDE0NC43MjkgMTgwLjk4NiAxNDUuNTk1IDE4MC45ODYgMTQ2LjQ5OVYxNjMuNTE2SDE2NC42NTdDMTY0LjMyMSAxNjMuNTE2IDE2My45OTEgMTYzLjQyOSAxNjMuNjk5IDE2My4yNjRDMTYzLjQwNiAxNjMuMDk5IDE2My4xNjEgMTYyLjg2MiAxNjIuOTg4IDE2Mi41NzVDMTYyLjgxNCAxNjIuMjg3IDE2Mi43MTggMTYxLjk2IDE2Mi43MDkgMTYxLjYyNUMxNjIuNjk5IDE2MS4yOSAxNjIuNzc3IDE2MC45NTggMTYyLjkzNCAxNjAuNjYyTDE4MC4yMTYgMTI4LjAxQzE4MC40MzEgMTI3LjYwMyAxODAuNTYyIDEyNy4xNTcgMTgwLjYgMTI2LjY5OEMxODAuNjM4IDEyNi4yMzkgMTgwLjU4MiAxMjUuNzc3IDE4MC40MzYgMTI1LjM0QzE4MC4yOSAxMjQuOTA0IDE4MC4wNTcgMTI0LjUwMSAxNzkuNzUxIDEyNC4xNTZDMTc5LjQ0NSAxMjMuODEyIDE3OS4wNzIgMTIzLjUzMyAxNzguNjU1IDEyMy4zMzdMMTc3LjYzNSAxMjIuODU2QzE3Ni44NDMgMTIyLjQ4MiAxNzUuOTM3IDEyMi40MjcgMTc1LjEwNSAxMjIuNzAyQzE3NC4yNzQgMTIyLjk3NiAxNzMuNTc5IDEyMy41NTkgMTczLjE2NiAxMjQuMzMxTDE1Mi4wODkgMTYzLjY5MUMxNTEuNzMgMTY0LjM2MSAxNTEuNTQyIDE2NS4xMDkgMTUxLjU0MiAxNjUuODY5VjE2NS44NjlDMTUxLjU0MiAxNjcuMDk1IDE1Mi4wMyAxNjguMjcgMTUyLjg5OCAxNjkuMTM3QzE1My43NjYgMTcwLjAwMyAxNTQuOTQ0IDE3MC40OSAxNTYuMTcxIDE3MC40OUgxODAuOTg2VjE4MS4yNUMxODAuOTg2IDE4MS43ODcgMTgxLjA5MiAxODIuMzE4IDE4MS4yOTcgMTgyLjgxNEMxODEuNTAzIDE4My4zMDkgMTgxLjgwNCAxODMuNzYgMTgyLjE4NCAxODQuMTM5QzE4Mi41NjQgMTg0LjUxOCAxODMuMDE1IDE4NC44MTkgMTgzLjUxMiAxODUuMDI0QzE4NC4wMDggMTg1LjIzIDE4NC41NDEgMTg1LjMzNSAxODUuMDc4IDE4NS4zMzVIMTg1LjA3OEMxODYuMTYzIDE4NS4zMzUgMTg3LjIwNCAxODQuOTA1IDE4Ny45NzIgMTg0LjEzOUMxODguNzM5IDE4My4zNzMgMTg5LjE3IDE4Mi4zMzQgMTg5LjE3IDE4MS4yNVYxNzAuNDlIMTk0Ljk1OUMxOTUuNDE4IDE3MC40OSAxOTUuODcyIDE3MC40IDE5Ni4yOTYgMTcwLjIyNUMxOTYuNzIgMTcwLjA0OSAxOTcuMTA1IDE2OS43OTMgMTk3LjQyOSAxNjkuNDY5QzE5Ny43NTQgMTY5LjE0NSAxOTguMDExIDE2OC43NjEgMTk4LjE4NyAxNjguMzM3QzE5OC4zNjIgMTY3LjkxNCAxOTguNDUyIDE2Ny40NjEgMTk4LjQ1MiAxNjcuMDAzVjE2Ny4wMDNDMTk4LjQ1MiAxNjYuNTQ1IDE5OC4zNjIgMTY2LjA5MiAxOTguMTg3IDE2NS42NjlDMTk4LjAxMSAxNjUuMjQ1IDE5Ny43NTQgMTY0Ljg2MSAxOTcuNDI5IDE2NC41MzdDMTk3LjEwNSAxNjQuMjEzIDE5Ni43MiAxNjMuOTU3IDE5Ni4yOTYgMTYzLjc4MUMxOTUuODcyIDE2My42MDYgMTk1LjQxOCAxNjMuNTE2IDE5NC45NTkgMTYzLjUxNlYxNjMuNTE2WiIgc3Ryb2tlPSIjM0YzRDU2IiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiLz4NCjxwYXRoIGQ9Ik0zMDMuNTUxIDE2My41MTZIMjk3Ljc2MlYxNDYuNDk5QzI5Ny43NjIgMTQ1LjU5NSAyOTcuNDAyIDE0NC43MjkgMjk2Ljc2MiAxNDQuMDg5QzI5Ni4xMjIgMTQzLjQ1IDI5NS4yNTMgMTQzLjA5MSAyOTQuMzQ4IDE0My4wOTFIMjkyLjk5MUMyOTIuNTQzIDE0My4wOTEgMjkyLjA5OSAxNDMuMTc5IDI5MS42ODUgMTQzLjM1MUMyOTEuMjcxIDE0My41MjIgMjkwLjg5NCAxNDMuNzczIDI5MC41NzcgMTQ0LjA4OUMyOTAuMjYgMTQ0LjQwNiAyOTAuMDA5IDE0NC43ODIgMjg5LjgzNyAxNDUuMTk1QzI4OS42NjYgMTQ1LjYwOCAyODkuNTc4IDE0Ni4wNTIgMjg5LjU3OCAxNDYuNDk5VjE2My41MTZIMjczLjI0OUMyNzIuOTEzIDE2My41MTYgMjcyLjU4MyAxNjMuNDI5IDI3Mi4yOSAxNjMuMjY0QzI3MS45OTggMTYzLjA5OSAyNzEuNzUzIDE2Mi44NjIgMjcxLjU4IDE2Mi41NzVDMjcxLjQwNiAxNjIuMjg3IDI3MS4zMSAxNjEuOTYgMjcxLjMwMSAxNjEuNjI1QzI3MS4yOTEgMTYxLjI5IDI3MS4zNjkgMTYwLjk1OCAyNzEuNTI2IDE2MC42NjJMMjg4LjgwOCAxMjguMDFDMjg5LjAyMyAxMjcuNjAzIDI4OS4xNTQgMTI3LjE1NyAyODkuMTkyIDEyNi42OThDMjg5LjIyOSAxMjYuMjM5IDI4OS4xNzQgMTI1Ljc3NyAyODkuMDI4IDEyNS4zNEMyODguODgyIDEyNC45MDQgMjg4LjY0OSAxMjQuNTAxIDI4OC4zNDMgMTI0LjE1NkMyODguMDM3IDEyMy44MTIgMjg3LjY2NCAxMjMuNTMzIDI4Ny4yNDcgMTIzLjMzN0wyODYuMjI3IDEyMi44NTZDMjg1LjQzNSAxMjIuNDgyIDI4NC41MjkgMTIyLjQyNyAyODMuNjk3IDEyMi43MDJDMjgyLjg2NSAxMjIuOTc2IDI4Mi4xNzEgMTIzLjU1OSAyODEuNzU4IDEyNC4zMzFMMjYwLjY4IDE2My42OTFDMjYwLjMyMiAxNjQuMzYxIDI2MC4xMzQgMTY1LjEwOSAyNjAuMTM0IDE2NS44NjlDMjYwLjEzNCAxNjcuMDk1IDI2MC42MjIgMTY4LjI3IDI2MS40OSAxNjkuMTM3QzI2Mi4zNTggMTcwLjAwMyAyNjMuNTM1IDE3MC40OSAyNjQuNzYzIDE3MC40OUgyODkuNTc4VjE4MS4yNUMyODkuNTc4IDE4Mi4zMzQgMjkwLjAwOSAxODMuMzczIDI5MC43NzYgMTg0LjEzOUMyOTEuNTQ0IDE4NC45MDUgMjkyLjU4NCAxODUuMzM1IDI5My42NyAxODUuMzM1VjE4NS4zMzVDMjk0Ljc1NSAxODUuMzM1IDI5NS43OTYgMTg0LjkwNSAyOTYuNTYzIDE4NC4xMzlDMjk3LjMzMSAxODMuMzczIDI5Ny43NjIgMTgyLjMzNCAyOTcuNzYyIDE4MS4yNVYxNzAuNDlIMzAzLjU1MUMzMDQuMDEgMTcwLjQ5IDMwNC40NjQgMTcwLjQgMzA0Ljg4OCAxNzAuMjI1QzMwNS4zMTEgMTcwLjA0OSAzMDUuNjk3IDE2OS43OTMgMzA2LjAyMSAxNjkuNDY5QzMwNi4zNDUgMTY5LjE0NSAzMDYuNjAzIDE2OC43NjEgMzA2Ljc3OCAxNjguMzM3QzMwNi45NTQgMTY3LjkxNCAzMDcuMDQ0IDE2Ny40NjEgMzA3LjA0NCAxNjcuMDAzVjE2Ny4wMDNDMzA3LjA0NCAxNjYuMDc4IDMwNi42NzYgMTY1LjE5MSAzMDYuMDIxIDE2NC41MzdDMzA1LjM2NiAxNjMuODgzIDMwNC40NzcgMTYzLjUxNiAzMDMuNTUxIDE2My41MTZWMTYzLjUxNloiIHN0cm9rZT0iIzNGM0Q1NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+DQo8cGF0aCBkPSJNMjI4Ljk5NCAxMjAuMzc1QzIxNC45OTIgMTIwLjM3NSAyMDQuOTM5IDEyOS4zNDIgMjA0LjkzOSAxNTAuMjY1QzIwNC45MzkgMTczLjk3NyAyMTQuOTkyIDE4MC4yNTQgMjI4Ljk5NCAxODAuMjU0QzI0Mi45OTUgMTgwLjI1NCAyNTMuNjQ3IDE3My4zNzkgMjUzLjY0NyAxNTAuMjY1QzI1My42NDcgMTI1LjU1NiAyNDIuOTk1IDEyMC4zNzUgMjI4Ljk5NCAxMjAuMzc1Wk0yMjkuMDg2IDE3Mi4zODNDMjE5LjM4OCAxNzIuMzgzIDIxNC4zMjIgMTY2LjcwNCAyMTQuMzIyIDE1MC4yOEMyMTQuMzIyIDEzNS43ODggMjE5LjU5NSAxMjguMTQ2IDIyOS4yOTMgMTI4LjE0NkMyMzguOTkxIDEyOC4xNDYgMjQ0LjI2NCAxMzMuMTY2IDI0NC4yNjQgMTUwLjI4QzI0NC4yNjQgMTY2LjI5IDIzOC43ODMgMTcyLjM4MyAyMjkuMDg2IDE3Mi4zODNWMTcyLjM4M1oiIHN0cm9rZT0iIzNGM0Q1NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+DQo8cGF0aCBkPSJNMjM0Ljg5MyAxMjQuOTY0QzIzNC43NjcgMTI1LjQ4MyAyMzQuMjIxIDEyNS44OTkgMjMzLjYxNiAxMjYuMTlDMjMyLjM0NSAxMjYuODAxIDIzMC43NzcgMTI2Ljk4MyAyMjkuMjU3IDEyNy4wNDRDMjI4Ljg2OSAxMjcuMDY4IDIyOC40OCAxMjcuMDYgMjI4LjA5MyAxMjcuMDIzQzIyNy4zNDMgMTI2Ljk1IDIyNi42NCAxMjYuNjI4IDIyNi4wOTcgMTI2LjEwN0MyMjYuMDU4IDEyNi4wODIgMjI2LjAyNiAxMjYuMDQ3IDIyNi4wMDUgMTI2LjAwNkMyMjUuOTgzIDEyNS45NjUgMjI1Ljk3MiAxMjUuOTIgMjI1Ljk3MyAxMjUuODc0QzIyNS45NzMgMTI1LjgyNyAyMjUuOTg2IDEyNS43ODIgMjI2LjAwOSAxMjUuNzQyQzIyNi4wMzIgMTI1LjcwMiAyMjYuMDY1IDEyNS42NjggMjI2LjEwNCAxMjUuNjQ0QzIyNi45MTQgMTI0Ljc1NyAyMjguMjY1IDEyNC4yMTIgMjI5LjYyNiAxMjMuODJDMjMwLjY1OCAxMjMuNTIzIDIzMi40NTcgMTIyLjc1MyAyMzMuNTgzIDEyMi44NTdDMjM0LjY3MyAxMjIuOTU4IDIzNS4wNTMgMTI0LjMwOCAyMzQuODkzIDEyNC45NjRaIiBmaWxsPSIjM0YzRDU2Ii8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yMzQuODkzIDEyNC45NjRDMjM0Ljc2NyAxMjUuNDgzIDIzNC4yMjEgMTI1Ljg5OSAyMzMuNjE2IDEyNi4xOUMyMzIuMzQ1IDEyNi44MDEgMjMwLjc3NyAxMjYuOTgzIDIyOS4yNTcgMTI3LjA0NEMyMjguODY5IDEyNy4wNjggMjI4LjQ4IDEyNy4wNiAyMjguMDkzIDEyNy4wMjNDMjI3LjM0MyAxMjYuOTUgMjI2LjY0IDEyNi42MjggMjI2LjA5NyAxMjYuMTA3QzIyNi4wNTggMTI2LjA4MiAyMjYuMDI2IDEyNi4wNDcgMjI2LjAwNSAxMjYuMDA2QzIyNS45ODMgMTI1Ljk2NSAyMjUuOTcyIDEyNS45MiAyMjUuOTczIDEyNS44NzRDMjI1Ljk3MyAxMjUuODI3IDIyNS45ODYgMTI1Ljc4MiAyMjYuMDA5IDEyNS43NDJDMjI2LjAzMiAxMjUuNzAyIDIyNi4wNjUgMTI1LjY2OCAyMjYuMTA0IDEyNS42NDRDMjI2LjkxNCAxMjQuNzU3IDIyOC4yNjUgMTI0LjIxMiAyMjkuNjI2IDEyMy44MkMyMzAuNjU4IDEyMy41MjMgMjMyLjQ1NyAxMjIuNzUzIDIzMy41ODMgMTIyLjg1N0MyMzQuNjczIDEyMi45NTggMjM1LjA1MyAxMjQuMzA4IDIzNC44OTMgMTI0Ljk2NFoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBkPSJNMjE5LjM2OSAxNTAuNDg0QzIyMC44OTkgMTUwLjQ4NCAyMjIuMTM5IDE0OC44ODIgMjIyLjEzOSAxNDYuOTA2QzIyMi4xMzkgMTQ0LjkzIDIyMC44OTkgMTQzLjMyOCAyMTkuMzY5IDE0My4zMjhDMjE3Ljg0IDE0My4zMjggMjE2LjYgMTQ0LjkzIDIxNi42IDE0Ni45MDZDMjE2LjYgMTQ4Ljg4MiAyMTcuODQgMTUwLjQ4NCAyMTkuMzY5IDE1MC40ODRaIiBmaWxsPSIjMkYyRTQxIi8+DQo8cGF0aCBkPSJNMjM0LjQzNyAxNTAuNTY0QzIzNS45NjcgMTUwLjU2NCAyMzcuMjA3IDE0OC45NjIgMjM3LjIwNyAxNDYuOTg2QzIzNy4yMDcgMTQ1LjAxIDIzNS45NjcgMTQzLjQwOCAyMzQuNDM3IDE0My40MDhDMjMyLjkwOCAxNDMuNDA4IDIzMS42NjggMTQ1LjAxIDIzMS42NjggMTQ2Ljk4NkMyMzEuNjY4IDE0OC45NjIgMjMyLjkwOCAxNTAuNTY0IDIzNC40MzcgMTUwLjU2NFoiIGZpbGw9IiMyRjJFNDEiLz4NCjxwYXRoIGQ9Ik0yMzIuMzIgMTU3LjU1NkMyMzIuMzIgMTU5LjE3MyAyMzAuMDU5IDE2MC40ODMgMjI3LjI3IDE2MC40ODNDMjI0LjQ4MSAxNjAuNDgzIDIyMi4yMiAxNTkuMTczIDIyMi4yMiAxNTcuNTU2QzIyMi4yMiAxNTYuMTU2IDIyMy45MTYgMTU0Ljk4NSAyMjYuMTgyIDE1NC42OTlDMjI2LjU0MyAxNTQuNjUxIDIyNi45MDYgMTU0LjYyOCAyMjcuMjcgMTU0LjYyOUMyMjcuODggMTU0LjYyNyAyMjguNDg4IDE1NC42OTIgMjI5LjA4MyAxNTQuODI0QzIzMC45NzYgMTU1LjI0NSAyMzIuMzIgMTU2LjMxIDIzMi4zMiAxNTcuNTU2WiIgZmlsbD0iIzJGMkU0MSIvPg0KPHBhdGggZD0iTTIyMC4wMiAxNDkuNjY5QzIyMS41NSAxNDkuNjY5IDIyMi43OSAxNDguMDY3IDIyMi43OSAxNDYuMDkxQzIyMi43OSAxNDQuMTE1IDIyMS41NSAxNDIuNTE0IDIyMC4wMiAxNDIuNTE0QzIxOC40OTEgMTQyLjUxNCAyMTcuMjUxIDE0NC4xMTUgMjE3LjI1MSAxNDYuMDkxQzIxNy4yNTEgMTQ4LjA2NyAyMTguNDkxIDE0OS42NjkgMjIwLjAyIDE0OS42NjlaIiBzdHJva2U9IiMzRjNENTYiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIvPg0KPHBhdGggZD0iTTIzNS4wODkgMTQ5Ljc1MUMyMzYuNjE4IDE0OS43NTEgMjM3Ljg1OCAxNDguMTQ5IDIzNy44NTggMTQ2LjE3M0MyMzcuODU4IDE0NC4xOTcgMjM2LjYxOCAxNDIuNTk2IDIzNS4wODkgMTQyLjU5NkMyMzMuNTU5IDE0Mi41OTYgMjMyLjMxOSAxNDQuMTk3IDIzMi4zMTkgMTQ2LjE3M0MyMzIuMzE5IDE0OC4xNDkgMjMzLjU1OSAxNDkuNzUxIDIzNS4wODkgMTQ5Ljc1MVoiIHN0cm9rZT0iIzNGM0Q1NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+DQo8cGF0aCBkPSJNMjI3LjkyMSAxNTkuNjcxQzIzMC43MTEgMTU5LjY3MSAyMzIuOTcyIDE1OC4zNiAyMzIuOTcyIDE1Ni43NDRDMjMyLjk3MiAxNTUuMTI3IDIzMC43MTEgMTUzLjgxNiAyMjcuOTIxIDE1My44MTZDMjI1LjEzMiAxNTMuODE2IDIyMi44NzEgMTU1LjEyNyAyMjIuODcxIDE1Ni43NDRDMjIyLjg3MSAxNTguMzYgMjI1LjEzMiAxNTkuNjcxIDIyNy45MjEgMTU5LjY3MVoiIHN0cm9rZT0iIzNGM0Q1NiIgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIi8+DQo8cGF0aCBkPSJNMjI5LjE0MyAxNTUuMDY5QzIyOS4xNDUgMTU1LjI3NCAyMjkuMDY4IDE1NS40NzEgMjI4LjkyOCAxNTUuNjIxQzIyOC44NjMgMTU1LjY5MyAyMjguNzgzIDE1NS43NSAyMjguNjkzIDE1NS43ODlDMjI4LjYwNCAxNTUuODI5IDIyOC41MDggMTU1Ljg0OSAyMjguNDEgMTU1Ljg1SDIyNi43ODFDMjI2LjU4MSAxNTUuODQzIDIyNi4zOTEgMTU1Ljc1NyAyMjYuMjUzIDE1NS42MTFDMjI2LjExNiAxNTUuNDY0IDIyNi4wNDIgMTU1LjI3IDIyNi4wNDggMTU1LjA2OUMyMjYuMDQ3IDE1NC45MTEgMjI2LjA5NCAxNTQuNzU2IDIyNi4xODIgMTU0LjYyM0MyMjYuNTQyIDE1NC41NzMgMjI2LjkwNiAxNTQuNTQ4IDIyNy4yNyAxNTQuNTQ5QzIyNy44ODEgMTU0LjU0NyAyMjguNDg5IDE1NC42MTcgMjI5LjA4MyAxNTQuNzU3QzIyOS4xMjMgMTU0Ljg1NiAyMjkuMTQ0IDE1NC45NjIgMjI5LjE0MyAxNTUuMDY5VjE1NS4wNjlaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTIyMC4wMjEgMTQ1LjkyOUMyMjAuNDcgMTQ1LjkyOSAyMjAuODM1IDE0NS41NjUgMjIwLjgzNSAxNDUuMTE2QzIyMC44MzUgMTQ0LjY2NyAyMjAuNDcgMTQ0LjMwMyAyMjAuMDIxIDE0NC4zMDNDMjE5LjU3MSAxNDQuMzAzIDIxOS4yMDYgMTQ0LjY2NyAyMTkuMjA2IDE0NS4xMTZDMjE5LjIwNiAxNDUuNTY1IDIxOS41NzEgMTQ1LjkyOSAyMjAuMDIxIDE0NS45MjlaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTIzNS4xNzEgMTQ1LjkyOUMyMzUuNjIxIDE0NS45MjkgMjM1Ljk4NiAxNDUuNTY1IDIzNS45ODYgMTQ1LjExNkMyMzUuOTg2IDE0NC42NjcgMjM1LjYyMSAxNDQuMzAzIDIzNS4xNzEgMTQ0LjMwM0MyMzQuNzIxIDE0NC4zMDMgMjM0LjM1NiAxNDQuNjY3IDIzNC4zNTYgMTQ1LjExNkMyMzQuMzU2IDE0NS41NjUgMjM0LjcyMSAxNDUuOTI5IDIzNS4xNzEgMTQ1LjkyOVoiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjMiIGQ9Ik0yMzUuOTg1IDE1My41NzJDMjM2LjQzNSAxNTMuNTcyIDIzNi44IDE1My4yMDcgMjM2LjggMTUyLjc1OEMyMzYuOCAxNTIuMzA5IDIzNi40MzUgMTUxLjk0NSAyMzUuOTg1IDE1MS45NDVDMjM1LjUzNiAxNTEuOTQ1IDIzNS4xNzEgMTUyLjMwOSAyMzUuMTcxIDE1Mi43NThDMjM1LjE3MSAxNTMuMjA3IDIzNS41MzYgMTUzLjU3MiAyMzUuOTg1IDE1My41NzJaIiBmaWxsPSIjMzM2OUNFIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjMiIGQ9Ik0yMTYuMTEgMTUzLjU3MkMyMTYuNTYgMTUzLjU3MiAyMTYuOTI1IDE1My4yMDcgMjE2LjkyNSAxNTIuNzU4QzIxNi45MjUgMTUyLjMwOSAyMTYuNTYgMTUxLjk0NSAyMTYuMTEgMTUxLjk0NUMyMTUuNjYxIDE1MS45NDUgMjE1LjI5NiAxNTIuMzA5IDIxNS4yOTYgMTUyLjc1OEMyMTUuMjk2IDE1My4yMDcgMjE1LjY2MSAxNTMuNTcyIDIxNi4xMSAxNTMuNTcyWiIgZmlsbD0iIzMzNjlDRSIvPg0KPC9nPg0KPHBhdGggZD0iTTIyOS4yOTMgMjc3Ljc5MUMyMzAuNDM4IDI3Ny43OTMgMjMxLjU2OCAyNzcuNTMzIDIzMi41OTcgMjc3LjAzM0MyMzMuNjI3IDI3Ni41MzQgMjM0LjUyOSAyNzUuODA2IDIzNS4yMzYgMjc0LjkwNkMyMzUuNDUgMjc0LjYzMSAyMzUuNjQ3IDI3NC4zNDMgMjM1LjgyNCAyNzQuMDQzTDIzMS42NzQgMjczLjM0M0wyMzYuMTU3IDI3My4zNzJDMjM2LjU4NiAyNzIuNDM3IDIzNi44MjEgMjcxLjQyNCAyMzYuODQ1IDI3MC4zOTZDMjM2Ljg3IDI2OS4zNjcgMjM2LjY4NCAyNjguMzQ0IDIzNi4yOTkgMjY3LjM5TDIzMC4yODggMjcwLjUwNkwyMzUuODMzIDI2Ni40M0MyMzUuMzEzIDI2NS41MzQgMjM0LjYxMyAyNjQuNzU2IDIzMy43NzkgMjY0LjE0MkMyMzIuOTQ0IDI2My41MjkgMjMxLjk5MyAyNjMuMDkzIDIzMC45ODMgMjYyLjg2M0MyMjkuOTczIDI2Mi42MzMgMjI4LjkyNyAyNjIuNjEyIDIyNy45MDkgMjYyLjgwNEMyMjYuODkxIDI2Mi45OTUgMjI1LjkyNCAyNjMuMzk0IDIyNS4wNjYgMjYzLjk3NUMyMjQuMjA5IDI2NC41NTYgMjIzLjQ4IDI2NS4zMDcgMjIyLjkyNSAyNjYuMTgxQzIyMi4zNzEgMjY3LjA1NiAyMjIuMDAyIDI2OC4wMzUgMjIxLjg0MSAyNjkuMDU5QzIyMS42ODEgMjcwLjA4MiAyMjEuNzMyIDI3MS4xMjcgMjIxLjk5MyAyNzIuMTNDMjIyLjI1NCAyNzMuMTMyIDIyMi43MTggMjc0LjA3IDIyMy4zNTYgMjc0Ljg4NlYyNzQuODg2QzIyNC4wNiAyNzUuNzg5IDIyNC45NjEgMjc2LjUyIDIyNS45OSAyNzcuMDI0QzIyNy4wMTggMjc3LjUyNyAyMjguMTQ4IDI3Ny43OSAyMjkuMjkzIDI3Ny43OTFWMjc3Ljc5MVoiIGZpbGw9IiMyRTQ0NzAiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTIzNi44NDcgMjg2LjUwMkwyNzEuNjcyIDMyMS40ODRMMjY2LjMyOCAyODYuNTAySDIzNi44NDdaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMzg0LjM4NCA2Ny4xNDY1SDcyLjM3MDFWNzcuNDQ1SDM4NC4zODRWNjcuMTQ2NVoiIGZpbGw9IiM0NDQwNTMiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMyIgZD0iTTI3NC40MjYgNjguOTM5NUgxODAuOTg2QzE4MC44MjkgNjguOTM5NSAxODAuNzAyIDY5LjA2NjcgMTgwLjcwMiA2OS4yMjM2Vjc0LjkyMTZDMTgwLjcwMiA3NS4wNzg2IDE4MC44MjkgNzUuMjA1OCAxODAuOTg2IDc1LjIwNThIMjc0LjQyNkMyNzQuNTgzIDc1LjIwNTggMjc0LjcxIDc1LjA3ODYgMjc0LjcxIDc0LjkyMTZWNjkuMjIzNkMyNzQuNzEgNjkuMDY2NyAyNzQuNTgzIDY4LjkzOTUgMjc0LjQyNiA2OC45Mzk1WiIgZmlsbD0iIzJFNDQ3MCIvPg0KPHBhdGggZD0iTTI3MS45MTcgNzIuNzIyNUgyNzEuNjg3TDI3MS42MDMgNzIuNjQ5QzI3MS44ODggNzIuMzA2NCAyNzIuMDQ0IDcxLjg3NDggMjcyLjA0NCA3MS40MjkxQzI3Mi4wNDEgNzEuMDYzMiAyNzEuOTMgNzAuNzA2NCAyNzEuNzI1IDcwLjQwMzdDMjcxLjUxOSA3MC4xMDEgMjcxLjIyOSA2OS44NjU5IDI3MC44OSA2OS43MjgxQzI3MC41NTEgNjkuNTkwNCAyNzAuMTc5IDY5LjU1NjEgMjY5LjgyMSA2OS42Mjk2QzI2OS40NjIgNjkuNzAzMSAyNjkuMTM0IDY5Ljg4MTEgMjY4Ljg3NiA3MC4xNDEyQzI2OC42MTkgNzAuNDAxMiAyNjguNDQ0IDcwLjczMTcgMjY4LjM3NSA3MS4wOTA5QzI2OC4zMDUgNzEuNDUgMjY4LjM0MyA3MS44MjE4IDI2OC40ODUgNzIuMTU5MkMyNjguNjI2IDcyLjQ5NjcgMjY4Ljg2NCA3Mi43ODQ3IDI2OS4xNjkgNzIuOTg3QzI2OS40NzQgNzMuMTg5MyAyNjkuODMyIDczLjI5NjcgMjcwLjE5NyA3My4yOTU3QzI3MC42NDQgNzMuMjk0MSAyNzEuMDc1IDczLjEzNjQgMjcxLjQxNyA3Mi44NDk5TDI3MS41IDcyLjkyMzRWNzMuMTUzN0wyNzIuOTM2IDc0LjU4OTJMMjczLjM2MiA3NC4xNThMMjcxLjkxNyA3Mi43MjI1Wk0yNzAuMTk3IDcyLjcyMjVDMjY5Ljk0MSA3Mi43MjM1IDI2OS42OTEgNzIuNjQ4NSAyNjkuNDc4IDcyLjUwNjlDMjY5LjI2NCA3Mi4zNjU0IDI2OS4wOTggNzIuMTYzNyAyNjguOTk5IDcxLjkyNzVDMjY4LjkgNzEuNjkxMiAyNjguODc0IDcxLjQzMSAyNjguOTIzIDcxLjE3OThDMjY4Ljk3MyA3MC45Mjg1IDI2OS4wOTYgNzAuNjk3NiAyNjkuMjc2IDcwLjUxNjJDMjY5LjQ1NyA3MC4zMzQ4IDI2OS42ODcgNzAuMjExMiAyNjkuOTM4IDcwLjE2MDlDMjcwLjE4OSA3MC4xMTA1IDI3MC40NSA3MC4xMzU5IDI3MC42ODYgNzAuMjMzNkMyNzAuOTIzIDcwLjMzMTQgMjcxLjEyNSA3MC40OTcyIDI3MS4yNjcgNzAuNzFDMjcxLjQxIDcwLjkyMjggMjcxLjQ4NiA3MS4xNzMgMjcxLjQ4NiA3MS40MjkxQzI3MS40ODcgNzEuNTk4OSAyNzEuNDU1IDcxLjc2NzMgMjcxLjM5IDcxLjkyNDRDMjcxLjMyNiA3Mi4wODE2IDI3MS4yMzEgNzIuMjI0NSAyNzEuMTEyIDcyLjM0NDhDMjcwLjk5MiA3Mi40NjUxIDI3MC44NDkgNzIuNTYwNSAyNzAuNjkyIDcyLjYyNTNDMjcwLjUzNSA3Mi42OTAxIDI3MC4zNjcgNzIuNzIzMiAyNzAuMTk3IDcyLjcyMjVWNzIuNzIyNVoiIGZpbGw9IiMzRjNENTYiLz4NCjxwYXRoIGQ9Ik0zMzMuNjA4IDM2NS4xMTRDMzMzLjMyNCAzNjQuNjYyIDMzMi45NjQgMzY0LjI2MyAzMzIuNTQ1IDM2My45MzNDMzMwLjQwNCAzNjEuOTA5IDMyOS40MSAzNTguOTQgMzI4Ljg4MSAzNTYuMDNDMzI4LjM1MiAzNTMuMTIgMzI4LjIgMzUwLjE1MSAzMjcuMzUzIDM0Ny4zMDRDMzI2Ljg5MiAzNDUuODQ1IDMyNi4zMTUgMzQ0LjQyNCAzMjUuNjI4IDM0My4wNTdDMzI1LjEzOCAzNDIuMDA4IDMyNC41MjEgMzM5Ljk1NSAzMjMuNjI1IDMzOS4yMkMzMjMuNDQ5IDMzOS4wNjggMzIzLjIzNiAzMzguOTY1IDMyMy4wMDcgMzM4LjkyMUMzMjIuNTg0IDMzOC4wMjEgMzIxLjk4IDMzNy4yMTggMzIxLjIzNCAzMzYuNTZDMzE5LjgzMyAzMzUuMjkxIDMxOC4xMjMgMzM0LjI4MiAzMTcuMTg4IDMzMi42NEMzMTYuOTMgMzMyLjA3MSAzMTYuNjEzIDMzMS41MzEgMzE2LjI0MiAzMzEuMDI5QzMxNS42MSAzMzAuMzMzIDMxNC42MTEgMzMwLjA0OSAzMTQuMDI4IDMyOS4zMTRDMzEzLjI2OCAzMjguMzYzIDMxMy40NCAzMjcuMDAxIDMxMy41MzggMzI1Ljc5MUMzMTMuNjM2IDMyNC41ODEgMzEzLjUzOCAzMjMuMTMxIDMxMi40OSAzMjIuNDk0QzMxMS44NjMgMzIyLjEwNyAzMTEuMDU0IDMyMi4xNDYgMzEwLjQwMyAzMjEuODAzQzMwOS40MjMgMzIxLjMxMyAzMDkuMDM2IDMyMC4wNzggMzA5LjA1NiAzMTguOTc2QzMwOS4wNzUgMzE3Ljg3NCAzMDkuNDE4IDMxNi44MDEgMzA5LjUwNiAzMTUuNjk4QzMwOS43ODEgMzEyLjE5IDMwNy40NjggMzA4LjcwMiAzMDguMzYgMzA1LjMwMkMzMDguNjk4IDMwNC4wMTMgMzA5LjQ3MiAzMDIuODk2IDMxMC4wNDUgMzAxLjY5NkMzMTAuMjQ1IDMwMS4yOTYgMzEwLjQwOSAzMDAuODggMzEwLjUzNSAzMDAuNDUxQzMxMi4wNjMgMzAxLjA1NyAzMTMuNjcgMzAxLjQ0NSAzMTUuMzA2IDMwMS42MDNDMzEyLjYwNyAyOTUuNTQ3IDMxMy4yOTMgMjg4LjUxMSAzMTIuMDM0IDI4Mi4wMDVMMzEyLjE5NiAyODEuNzg1QzMxMy40NjcgMjgwLjEwNyAzMTQuMTg5IDI3OC4wNzggMzE0LjI2MyAyNzUuOTc0QzMxNC4yNjMgMjczLjU1NCAzMTMuMTMxIDI3MS4yOSAzMTIuNjIyIDI2OC45MTlDMzEyLjE4NiAyNjYuOTA1IDMxMi4yMDUgMjY0Ljc5OCAzMTEuNjQyIDI2Mi44MTlDMzExLjI1MSAyNjEuNTg5IDMxMC43MzIgMjYwLjQwMyAzMTAuMDk0IDI1OS4yODJDMzA5LjQ4MyAyNTguMTQ4IDMwOC44NDIgMjU3LjAzMyAzMDguMTY5IDI1NS45MzVDMzA3LjU0MiAyNTMuODU4IDMwNi45MTMgMjUxLjc4MSAzMDYuMjgzIDI0OS43MDNDMzA1LjQwMSAyNDYuNzg4IDMwNC40OTUgMjQzLjgyNCAzMDIuNzggMjQxLjMwNkMzMDIuMTUzIDI0MC4zODUgMzAxLjk2MiAyMzguNTEzIDMwMC45OTcgMjM3Ljk1NUMzMDAuMjEzIDIzNy41NDkgMjk5LjMyNCAyMzcuMzkzIDI5OC40NSAyMzcuNTA5QzI5Ny4wODggMjM2Ljc0NCAyOTUuODkyIDIzNS42NDIgMjk1LjcyMSAyMzQuMTMzQzI5NS43MDQgMjMzLjgwMyAyOTUuNzM3IDIzMy40NzMgMjk1LjgxOSAyMzMuMTUzSDI5NS45ODZDMjk4LjE0MSAyMzIuOTU3IDI5OS4yMzMgMjMxLjA1NiAzMDAuMzU1IDIyOS4zOUMzMDIuMTY4IDIyNi42OTYgMzAxLjQ3NyAyMjMuMDUxIDMwMC4zNTUgMjE5Ljk4NEMzMDAuMDc3IDIxOS4wMTYgMjk5LjU3NCAyMTguMTI3IDI5OC44ODYgMjE3LjM5MkMyOTcuMzEzIDIxNS45MjIgMjk0LjgyNSAyMTYuMjQ1IDI5Mi43OTYgMjE1LjUzNUMyOTIuMTE1IDIxNS4zIDI5MS40NzkgMjE0Ljk0MiAyOTAuNzgzIDIxNC43NzVDMjg5LjQzNiAyMTQuNDYyIDI4OC4wMjUgMjE0LjkwMyAyODYuNzkxIDIxNS41MjVDMjg1LjU1NiAyMTYuMTQ3IDI4NC40MDUgMjE2Ljk1MSAyODMuMTExIDIxNy40NDFDMjgxLjgxOCAyMTcuOTMxIDI4MC4yMjEgMjE4LjMxOCAyNzkuOTAzIDIxOS42NDVDMjc5LjgxNCAyMjAuMDkzIDI3OS44NTEgMjIwLjU1NiAyODAuMDExIDIyMC45ODNDMjgwLjMwOCAyMjEuODM1IDI4MC44MzEgMjIyLjU5IDI4MS41MjQgMjIzLjE2OEMyODAuOTc0IDIyNC4zMDQgMjgwLjY3NiAyMjUuNTQ1IDI4MC42NTEgMjI2LjgwN0MyODAuNjI3IDIyOC4wNjkgMjgwLjg3NiAyMjkuMzIxIDI4MS4zODMgMjMwLjQ3N0MyODEuODg5IDIzMS42MzMgMjgyLjY0IDIzMi42NjUgMjgzLjU4MyAyMzMuNTAzQzI4NC41MjcgMjM0LjM0IDI4NS42NDEgMjM0Ljk2MyAyODYuODQ5IDIzNS4zMjhDMjg3LjIyMiAyMzUuOTI2IDI4Ny41NjkgMjM2LjUzNCAyODcuODg4IDIzNy4xNTZDMjg4LjQ1NiAyMzguMjUzIDI4OC45MzYgMjM5LjU0NyAyODguNzQgMjQwLjcyM0MyODguMzg2IDI0MS4wOTkgMjg4LjA1OCAyNDEuNSAyODcuNzYgMjQxLjkyM0MyODYuMzU0IDI0My44ODMgMjg1LjU1NiAyNDYuMTgxIDI4NC44MjEgMjQ4LjQ3NEMyODMuODM0IDI1MS40MDEgMjgzLjA0NCAyNTQuMzkyIDI4Mi40NTUgMjU3LjQyNUMyODEuMjYgMjU5Ljk2OCAyNzkuOCAyNjIuMzk4IDI3OC45MzMgMjY1LjA2OEMyNzcuMzggMjY1LjA3IDI3NS44MzUgMjY0Ljg2MiAyNzQuMzM4IDI2NC40NTFMMjcwLjIwMyAyNjMuNTE1QzI2OC43NjMgMjYzLjE4NiAyNjcuMjY0IDI2Mi44MzQgMjY2LjEzNyAyNjEuODgzQzI2NS41MzkgMjYxLjM5MyAyNjUuMDc0IDI2MC43NDIgMjY0LjQ2NyAyNjAuMjU3QzI2My44NTkgMjU5Ljc3MiAyNjIuNjM5IDI1OS4yMDMgMjYxLjk3MyAyNTkuNjA1QzI2MS44NTEgMjU5LjY3OSAyNjEuNzM4IDI1OS43NjYgMjYxLjYzNSAyNTkuODY1QzI2MS4wMjggMjU4LjYzNSAyNjAuNDUgMjU3LjQxNSAyNTkuNzQ0IDI1Ni4yMjRDMjU4LjczIDI1NC41NTkgMjU3LjIyMSAyNTMuMDM1IDI1NS4zMTEgMjUyLjcxNkMyNTQuMTQzIDI1Mi41MjkgMjUyLjk0OSAyNTIuODA3IDI1MS45ODUgMjUzLjQ5MUMyNTAuODY4IDI1NC4yODQgMjUwLjE2NyAyNTUuOTQgMjUxLjAwNSAyNTcuMDU3QzI1MS4yMTQgMjU3LjMwNiAyNTEuNDQyIDI1Ny41MzggMjUxLjY4NiAyNTcuNzUzQzI1Mi4yNTMgMjU4LjQwNiAyNTIuNzU5IDI1OS4xMSAyNTMuMTk5IDI1OS44NTVDMjU0Ljc3OSAyNjIuMDcyIDI1Ny4xNDEgMjYzLjYwNiAyNTkuODA4IDI2NC4xNDdMMjU5LjYzNiAyNjQuNjM3QzI1OS4yODkgMjY1LjY1NiAyNTguNTQ5IDI2Ni44ODYgMjU4LjczNSAyNjcuOTQ0TDI3Ny4xMjUgMjc0LjI0QzI3OC4zMDUgMjc0LjcxOCAyNzkuNTU3IDI3NC45OTUgMjgwLjgyOSAyNzUuMDU4QzI4MS4zMjUgMjc1LjA1NCAyODEuODE4IDI3NC45ODggMjgyLjI5OCAyNzQuODYyVjI3NS44MDJWMjc1Ljg0MkMyODIuMzQ3IDI4Mi4zMDQgMjgxLjMxOSAyODguNzIyIDI4MS4xMjcgMjk1LjE4QzI4MS4wOTMgMjk2LjM2IDI4MS4xMjcgMjk3LjYyOSAyODEuODcyIDI5OC41NUMyODIuNzA1IDI5OS41NiAyODQuMTg0IDI5OS43NjEgMjg1LjQ3MyAyOTkuNTNDMjg1Ljc4MyAyOTkuNDc4IDI4Ni4wODcgMjk5LjQwOSAyODYuMzg0IDI5OS4zMjRDMjg2LjgyIDMwMC45NSAyODcuMTM0IDMwMi42MDYgMjg3LjMyNCAzMDQuMjc4TDI4OC41MzkgMzEzLjAyOEMyODguNjk2IDMxMy45MjQgMjg4Ljc2IDMxNC44MzMgMjg4LjczIDMxNS43NDJDMjg4LjU4OCAzMTcuNzk1IDI4Ny41MDYgMzE5LjYzMiAyODYuNzIyIDMyMS41MjlDMjg1LjkzOCAzMjMuNDI1IDI4NS40NzMgMzI1LjY5MyAyODYuNTAxIDMyNy40NjdDMjg2LjgyNSAzMjguMDE1IDI4Ny4yNzEgMzI4LjQ4MSAyODcuNTYgMzI5LjA0OUMyODcuOTI3IDMyOS45MjkgMjg4LjA5NCAzMzAuODggMjg4LjA0OSAzMzEuODMyQzI4OC4xMjUgMzM0LjQ3MSAyODguMTk2IDMzNy4xMTQgMjg4LjI2NSAzMzkuNzU5QzI4OC4wNTEgMzM5LjcyNCAyODcuODMyIDMzOS43NjggMjg3LjY0OCAzMzkuODgyQzI4Ni42MjkgMzQwLjY3NSAyODYuNzQyIDM0NC40NTMgMjg2LjY2OCAzNDUuNjI0QzI4Ni41OSAzNDcuNTg0IDI4Ni42NjggMzQ5LjU4MyAyODYuNTYgMzUxLjU2MkMyODYuNDMzIDM1NC4yMjkgMjg2LjAwNCAzNTYuODc0IDI4NS4yODIgMzU5LjQ0NUMyODUuMTA1IDM2MC4yODEgMjg0LjcxOSAzNjEuMDU4IDI4NC4xNiAzNjEuNzA0QzI4My41ODcgMzYyLjIwMiAyODIuOTAzIDM2Mi41NTYgMjgyLjE2NiAzNjIuNzM3QzI3OS43MjUgMzYzLjUwMiAyNzcuMTczIDM2My44NSAyNzQuNjE3IDM2My43NjZDMjczLjU4MyAzNjMuNzMyIDI3Mi41MDYgMzYzLjYzNCAyNzEuNTQ1IDM2NC4wMjZDMjcwLjU4NSAzNjQuNDE4IDI2OS44MTEgMzY1LjQ5NiAyNzAuMTU5IDM2Ni40NzZDMjcwLjQ1OCAzNjcuMjk5IDI3MS4zNjQgMzY3LjY5MSAyNzIuMTgyIDM2Ny45OTlDMjc0LjA1MSAzNjguNjU4IDI3NS44NTUgMzY5LjQ4OCAyNzcuNTcxIDM3MC40NzlDMjc4LjIzMSAzNzAuOTI5IDI3OC45MjggMzcxLjMyMyAyNzkuNjUzIDM3MS42NTlDMjgwLjM0OCAzNzEuOTA5IDI4MS4wNjcgMzcyLjA4NiAyODEuNzk5IDM3Mi4xODhMMjkwLjQ4NCAzNzMuNjg4QzI5Mi4yNjIgMzczLjk5MSAyOTQuNDAzIDM3NC4xNzggMjk1LjUzNSAzNzIuNzA4QzI5Ni4xNDcgMzcxLjkxNCAyOTYuMjM1IDM3MC44MzYgMjk2LjIwNiAzNjkuODI3QzI5Ni4xNTcgMzY3Ljg2NyAyOTUuNzY1IDM2NS44NzMgMjk2LjAyIDM2My45MTNDMjk2LjIxMyAzNjIuNzU1IDI5Ni41MTggMzYxLjYxOCAyOTYuOTMxIDM2MC41MThDMjk3Ljc5NiAzNTcuOTQ3IDI5OC42NjUgMzU1LjM3OSAyOTkuNTM3IDM1Mi44MTFDMzAwLjQwOSAzNTAuMjM0IDMwMS4yOTEgMzQ3LjYzMyAzMDEuNjI5IDM0NC45MjhDMzAxLjc1MSAzNDMuOTQ4IDMwMS43NDIgMzQyLjgzMSAzMDAuOTkyIDM0Mi4yMTlDMzAwLjgwMyAzNDIuMDYzIDMwMC41ODIgMzQxLjk1IDMwMC4zNDUgMzQxLjg4NkMzMDAuMzE2IDMzOS41MjQgMzAwLjAwNyAzMzcuMTU4IDMwMC4xNCAzMzQuNzk2QzMwMC4xNzQgMzM0LjIwOCAzMDAuMjMzIDMzMy42MiAzMDAuMjgyIDMzMy4wMjdDMzAwLjczNiAzMzMuNDU5IDMwMS4xNDIgMzMzLjkzOSAzMDEuNDkyIDMzNC40NThDMzAyLjMyOSAzMzUuNzcxIDMwMi42MzggMzM3LjUwNiAzMDMuOTE3IDMzOC4zNzhDMzA1LjAwNCAzMzkuMTIyIDMwNi42MTYgMzM5LjA4MyAzMDcuMzggMzQwLjE2MUMzMDcuNjI2IDM0MC41NzUgMzA3LjgxIDM0MS4wMjIgMzA3LjkyOSAzNDEuNDg5QzMwOC4zNzIgMzQyLjY0NCAzMDkuMDM4IDM0My43MDEgMzA5Ljg4OCAzNDQuNkMzMTAuMTggMzQ1LjY3NSAzMTAuNTg2IDM0Ni43MTcgMzExLjA5OCAzNDcuNzA2QzMxMS44MiAzNDkuMjMxIDMxMi41MzkgMzUwLjc1MiAzMTMuMjU0IDM1Mi4yNjdDMzEzLjk4OSAzNTMuOTAzIDMxNC44MDcgMzU1LjUwMSAzMTUuNzAzIDM1Ny4wNTRDMzE2LjM4OCAzNTguMDMyIDMxNi45NCAzNTkuMDk2IDMxNy4zNDQgMzYwLjIxOUMzMTguMDM1IDM2Mi42MzkgMzE2LjkwOCAzNjUuMjk1IDMxNS4xMjUgMzY3LjA3OEMzMTMuMzQyIDM2OC44NjIgMzEwLjk5MSAzNjkuODg2IDMwOC42NzMgMzcwLjg0MUMzMDguNDI5IDM3MC45MjQgMzA4LjIwNiAzNzEuMDU3IDMwOC4wMTcgMzcxLjIzM0MzMDcuODE2IDM3MS40NzEgMzA3LjcxIDM3MS43NzQgMzA3LjcxOCAzNzIuMDg2QzMwNy43MTggMzczLjIxNyAzMDguNjQ5IDM3NC4xODcgMzA5LjcxNyAzNzQuNTM1QzMxMC44MDkgMzc0LjgyOSAzMTEuOTUzIDM3NC44NyAzMTMuMDYzIDM3NC42NThDMzE5LjMyMyAzNzMuODk4IDMyNS41NjQgMzcyLjM3IDMzMS4xIDM2OS4zMjdDMzMxLjkyOCAzNjguOTM1IDMzMi42NjIgMzY4LjM2OCAzMzMuMjUxIDM2Ny42NjZDMzMzLjUzNSAzNjcuMzEzIDMzMy43MTkgMzY2Ljg4OSAzMzMuNzgyIDM2Ni40MzlDMzMzLjg0NSAzNjUuOTkgMzMzLjc4NSAzNjUuNTMyIDMzMy42MDggMzY1LjExNFYzNjUuMTE0WiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyKSIvPg0KPHBhdGggZD0iTTMwNy4xNSAyNTUuMjQ0QzMwOC4xOTUgMjU2Ljg0OCAzMDkuMTc1IDI1OC40OTEgMzEwLjA4OSAyNjAuMTczQzMxMC43MyAyNjEuMjg2IDMxMS4yNSAyNjIuNDYzIDMxMS42NDIgMjYzLjY4NkMzMTIuMjEgMjY1LjY0NiAzMTIuMTk1IDI2Ny43MzggMzEyLjYyMiAyNjkuNzM3QzMxMy4xMTIgMjcyLjA4OSAzMTQuMjU4IDI3NC4zMzMgMzE0LjI1OCAyNzYuNzQzQzMxNC4xODMgMjc4LjgzMiAzMTMuNDYxIDI4MC44NDUgMzEyLjE5MSAyODIuNTA1QzMxMC45MjQgMjg0LjE1IDMwOS40NzUgMjg1LjY0NiAzMDcuODcgMjg2Ljk2M0MzMDQuMTcxIDI3Ny4zNzkgMzAyLjEwNCAyNjcuMjQyIDMwMS43NTYgMjU2Ljk3NEMzMDEuNzA3IDI1NS41NTMgMzAxLjY5NyAyNTQuMDg4IDMwMi4yMTcgMjUyLjc2QzMwMi41MzUgMjUxLjkyOCAzMDQuMDYzIDI0OS42NDQgMzA1LjA0OCAyNTAuNTQxQzMwNS40MDYgMjUwLjg2OSAzMDUuNDk5IDI1Mi4zNDkgMzA1LjcxOSAyNTIuODQ0QzMwNi4xMzIgMjUzLjY4IDMwNi42MSAyNTQuNDgzIDMwNy4xNSAyNTUuMjQ0VjI1NS4yNDRaIiBmaWxsPSIjMkYyRTQxIi8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zMDcuMTUgMjU1LjI0NEMzMDguMTk1IDI1Ni44NDggMzA5LjE3NSAyNTguNDkxIDMxMC4wODkgMjYwLjE3M0MzMTAuNzMgMjYxLjI4NiAzMTEuMjUgMjYyLjQ2MyAzMTEuNjQyIDI2My42ODZDMzEyLjIxIDI2NS42NDYgMzEyLjE5NSAyNjcuNzM4IDMxMi42MjIgMjY5LjczN0MzMTMuMTEyIDI3Mi4wODkgMzE0LjI1OCAyNzQuMzMzIDMxNC4yNTggMjc2Ljc0M0MzMTQuMTgzIDI3OC44MzIgMzEzLjQ2MSAyODAuODQ1IDMxMi4xOTEgMjgyLjUwNUMzMTAuOTI0IDI4NC4xNSAzMDkuNDc1IDI4NS42NDYgMzA3Ljg3IDI4Ni45NjNDMzA0LjE3MSAyNzcuMzc5IDMwMi4xMDQgMjY3LjI0MiAzMDEuNzU2IDI1Ni45NzRDMzAxLjcwNyAyNTUuNTUzIDMwMS42OTcgMjU0LjA4OCAzMDIuMjE3IDI1Mi43NkMzMDIuNTM1IDI1MS45MjggMzA0LjA2MyAyNDkuNjQ0IDMwNS4wNDggMjUwLjU0MUMzMDUuNDA2IDI1MC44NjkgMzA1LjQ5OSAyNTIuMzQ5IDMwNS43MTkgMjUyLjg0NEMzMDYuMTMyIDI1My42OCAzMDYuNjEgMjU0LjQ4MyAzMDcuMTUgMjU1LjI0NFYyNTUuMjQ0WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIGQ9Ik0xNzcuOTk3IDE4OC40MDJDMTc0LjEyMyAxOTIuMjczIDE3My42NTcgMTkzLjk3OCAxNzEuMzMgMTk0Ljc0N0MxNjkuMDAzIDE5NS41MTYgMTYwLjYzMSAxOTkuODUyIDE2My4yNjIgMjA0LjY1OUwxNzAuMzM2IDIwOS4zMzNMMTcwLjU0MSAyMDkuNDdMMTcxLjYyNCAyMTIuNzIzTDE2MC45MjUgMjMxLjc3MkMxNjAuOTI1IDIzMS43NzIgMTQzLjI4OSAyMjMuNzA4IDE0MS41NiAyMzUuNjM4QzEzOS44MzEgMjQ3LjU2OCAxNDAuOTI4IDI1MC44MjYgMTQwLjQ2MyAyNTcuMTk1QzEzOS45OTcgMjYzLjU2NCAxNDAuNjE1IDI2NS40MDYgMTM5LjA2MiAyNjUuNDA2QzEzNy41MDkgMjY1LjQwNiAxMzYuODk3IDI2MS4yMjIgMTM2Ljg5NyAyNjEuMjIyQzEzNi44OTcgMjYxLjIyMiAxMzYuNzk5IDI2MS4wMzEgMTM2LjYyNyAyNjAuNjc0QzEzNC4zMiAyNTUuODc3IDExOC42NTggMjIwLjY2NSAxNDMuNzQ1IDE5Ni40NjJDMTQzLjc0NSAxOTYuNDYyIDE1NS4zNjUgMTk1LjY5OCAxNTguMTYyIDE4Mi4zNzFDMTYwLjA5MiAxNzMuMTYgMTY2Ljg0MyAxNzMuOTU0IDE3MS4zMyAxNzUuODMxQzE3Mi43ODkgMTc2LjQwMyAxNzQuMTQ4IDE3Ny4yMDEgMTc1LjM1NyAxNzguMTk3QzE3Ni40NDUgMTc5LjIyNyAxNzcuNDEzIDE4MC4zNzggMTc4LjI0MiAxODEuNjI3QzE3OS41MjEgMTgzLjY0NSAxODAuMjE3IDE4Ni4xNzggMTc3Ljk5NyAxODguNDAyWiIgZmlsbD0iI0QwRDJENSIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMTcwLjU0MiAyMDkuNDY4TDE3MS42MjQgMjEyLjcyMUwxNjAuOTI1IDIzMS43N0MxNjAuOTI1IDIzMS43NyAxNDMuMjkgMjIzLjcwNiAxNDEuNTYgMjM1LjYzNkMxMzkuODMxIDI0Ny41NjYgMTQwLjkyOCAyNTAuODI0IDE0MC40NjMgMjU3LjE5M0MxMzkuOTk4IDI2My41NjIgMTQwLjYxNSAyNjUuNDA1IDEzOS4wNjIgMjY1LjQwNUMxMzcuNTA5IDI2NS40MDUgMTM2Ljg5NyAyNjEuMjIxIDEzNi44OTcgMjYxLjIyMUMxMzYuODk3IDI2MS4yMjEgMTM2Ljc5OSAyNjEuMDI5IDEzNi42MjcgMjYwLjY3MkMxMzUuODQ4IDI1NC43MTQgMTMxLjkgMjE5Ljg2NSAxNDYuMjE0IDIyMS43MTdDMTQ2LjIxNCAyMjEuNzE3IDE1Ny44MjkgMjI3LjE0NSAxNTkuNjg2IDIyNC45OEMxNjEuMTU2IDIyMy4yNjUgMTY3LjY4MSAyMTMuNDAyIDE3MC4zMzYgMjA5LjM1NUwxNzAuNTQyIDIwOS40NjhaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMTc4LjI0MiAxODEuNTk2TDE3MS4xNjggMTg5LjYzNkMxNzEuMTY4IDE4OS42MzYgMTYyLjk1MyAyMDAuNjMgMTYxLjI0OCAyMDAuMTY1QzE2MC43MzggMjAwLjA1MyAxNjAuMjE4IDE5OS45OTIgMTU5LjY5NSAxOTkuOTgzQzE1OS4xMjcgMTk5Ljk0IDE1OC41ODIgMTk5LjczNiAxNTguMTI0IDE5OS4zOTVDMTU3LjY2NyAxOTkuMDU1IDE1Ny4zMTUgMTk4LjU5MiAxNTcuMTEgMTk4LjA1OUMxNTYuOTA1IDE5Ny41MjcgMTU2Ljg1NSAxOTYuOTQ3IDE1Ni45NjYgMTk2LjM4OEMxNTcuMDc2IDE5NS44MjggMTU3LjM0MyAxOTUuMzEyIDE1Ny43MzYgMTk0Ljg5OEMxNjAuNTM4IDE5MS45NTggMTY1LjcwMSAxODYuMzc4IDE2Ni4wMzkgMTg1LjEzOEMxNjYuMzc3IDE4My44OTggMTY5LjY2NCAxNzguNDY1IDE3MS4zMSAxNzUuODA1QzE3Mi43NjkgMTc2LjM3NyAxNzQuMTI4IDE3Ny4xNzUgMTc1LjMzNyAxNzguMTcxQzE3Ni40MzIgMTc5LjE5OSAxNzcuNDA3IDE4MC4zNDggMTc4LjI0MiAxODEuNTk2VjE4MS41OTZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTM3OC4zODggMjk3LjI2NUMzNzcuMTg4IDI5OS42NjYgMzcxLjA0IDMwOC42NzEgMzY4LjM1MSAzMTIuNjA1TDM2Ny4wOTIgMzE0LjQ1N0MzNjcuMDkyIDMxNC40NTcgMzY2LjYwMiAzMTcuNzExIDM1OC41NzMgMzEzLjY3OEMzNTAuNTQ0IDMwOS42NDYgMTYxLjg5NiAyMzAuMDM2IDE2MS44OTYgMjMwLjAzNkwxNjAuNjE3IDIyNi4xOTVMMTY5LjkyNSAyMTIuMjU2TDM3Ni42ODggMjkyLjE1QzM3Ni42ODggMjkyLjE1IDM3OS45NDEgMjk0LjE2NCAzNzguMzg4IDI5Ny4yNjVaIiBmaWxsPSIjNDU0QjY5Ii8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0zNjguMzUxIDMxMi42MDZMMzY3LjA5MiAzMTQuNDU4QzM2Ny4wOTIgMzE0LjQ1OCAzNjYuNjAyIDMxNy43MTEgMzU4LjU3MyAzMTMuNjc5QzM1MC41NDQgMzA5LjY0NyAxNjEuODk2IDIzMC4wMzYgMTYxLjg5NiAyMzAuMDM2TDE2MC42MTcgMjI2LjE5NUwzNjguMzUxIDMxMi42MDZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTI1NC41NjEgMjYwLjYwNUMyNTIuNjQ2IDI2MC4yOTEgMjUwLjUyIDI2MC40NDMgMjQ5LjAzIDI2MS42ODhDMjQ4LjEzIDI2Mi40NSAyNDcuNTYxIDI2My41MzIgMjQ3LjQ0MyAyNjQuNzA2QzI0Ny4zMTYgMjY2LjA2MyAyNDguMTA0IDI2Ny42NzUgMjQ5LjQ2NiAyNjcuNzc4QzI0OS43OTQgMjY3Ljc4MSAyNTAuMTIyIDI2Ny43NiAyNTAuNDQ2IDI2Ny43MTRDMjUxLjMwNiAyNjcuNzEgMjUyLjE2NSAyNjcuNzgyIDI1My4wMTMgMjY3LjkzQzI1NC42ODEgMjY4LjA4NyAyNTYuMzYzIDI2Ny44NDEgMjU3LjkxNyAyNjcuMjE0QzI1OS40NzEgMjY2LjU4NiAyNjAuODUyIDI2NS41OTUgMjYxLjk0NCAyNjQuMzI0QzI2My4xMTQgMjYyLjg1NCAyNjEuNTcxIDI2Mi4yMTcgMjYwLjE5IDI2MS45MjNDMjU4LjI5OSAyNjEuNTIxIDI1Ni40NTIgMjYwLjkwOSAyNTQuNTYxIDI2MC42MDVaIiBmaWxsPSIjRkJCRUJFIi8+DQo8cGF0aCBkPSJNMjg3LjMyNCAzMDQuODUxTDI4OC41MzkgMzEzLjQ4M0MyODguNjk0IDMxNC4zNzUgMjg4Ljc1NiAzMTUuMjc5IDI4OC43MjUgMzE2LjE4M0MyODguNTgzIDMxOC4yMTYgMjg3LjUgMzIwLjAzOSAyODYuNzIxIDMyMS45MkMyODUuOTQzIDMyMy44MDIgMjg1LjQ2NyAzMjYuMDU1IDI4Ni41MDEgMzI3LjhDMjg2LjgxOSAzMjguMzQzIDI4Ny4yNjUgMzI4LjgwOSAyODcuNTU0IDMyOS4zNzJDMjg3LjkyMSAzMzAuMjQ0IDI4OC4wODkgMzMxLjE4NiAyODguMDQ0IDMzMi4xMzFMMjg4LjM3NyAzNDQuMzc5QzI5Mi4xNTkgMzQ0LjYzNyAyOTUuOTU0IDM0NC42MTYgMjk5LjczMyAzNDQuMzE1QzI5OS44OCAzNDQuMzIyIDMwMC4wMjYgMzQ0LjI3NyAzMDAuMTQ0IDM0NC4xODhDMzAwLjI0NCAzNDQuMDYyIDMwMC4yOTQgMzQzLjkwMyAzMDAuMjg2IDM0My43NDJDMzAwLjQ1MyAzNDAuODc2IDI5OS45NTMgMzM4LjAwNSAzMDAuMTE1IDMzNS4xMzlDMzAwLjE3NCAzMzQuMDkgMzAwLjMyIDMzMy4wNDcgMzAwLjM0IDMzMS45OTNDMzAwLjM5OSAzMjcuNzI2IDI5OC4yOTIgMzIzLjU0NyAyOTguOTI5IDMxOS4zMjhDMjk5LjEyOSAzMTguMjY0IDI5OS4zOTEgMzE3LjIxMiAyOTkuNzEzIDMxNi4xNzhDMzAxLjcyNiAzMDguODI5IDMwMS4zIDMwMS4xMDggMzAwLjg1NCAyOTMuNTE4QzMwMC44NjIgMjkzLjM5NiAzMDAuODI3IDI5My4yNzUgMzAwLjc1NiAyOTMuMTc1QzMwMC42ODQgMjkzLjEwMyAzMDAuNTkyIDI5My4wNTQgMzAwLjQ5MiAyOTMuMDMzQzI5OC4zNDkgMjkyLjM5IDI5Ni4wODIgMjkyLjI3MyAyOTMuODg0IDI5Mi42OUMyOTEuNjg2IDI5My4xMDggMjg5LjYyMSAyOTQuMDQ5IDI4Ny44NjMgMjk1LjQzNEMyODcuMzI5IDI5NS44NjUgMjg1Ljk4MiAyOTYuMjgyIDI4NS42MjkgMjk2Ljc5NkMyODUuMTM5IDI5Ny41MTEgMjg1Ljc4MSAyOTguMjI3IDI4Ni4wNjUgMjk4Ljk4NkMyODYuNjk0IDMwMC44OSAyODcuMTE2IDMwMi44NTYgMjg3LjMyNCAzMDQuODUxVjMwNC44NTFaIiBmaWxsPSIjM0YzRDU2Ii8+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yODcuMzI0IDMwNC44NTFMMjg4LjUzOSAzMTMuNDgzQzI4OC42OTQgMzE0LjM3NSAyODguNzU2IDMxNS4yNzkgMjg4LjcyNSAzMTYuMTgzQzI4OC41ODMgMzE4LjIxNiAyODcuNSAzMjAuMDM5IDI4Ni43MjEgMzIxLjkyQzI4NS45NDMgMzIzLjgwMiAyODUuNDY3IDMyNi4wNTUgMjg2LjUwMSAzMjcuOEMyODYuODE5IDMyOC4zNDMgMjg3LjI2NSAzMjguODA5IDI4Ny41NTQgMzI5LjM3MkMyODcuOTIxIDMzMC4yNDQgMjg4LjA4OSAzMzEuMTg2IDI4OC4wNDQgMzMyLjEzMUwyODguMzc3IDM0NC4zNzlDMjkyLjE1OSAzNDQuNjM3IDI5NS45NTQgMzQ0LjYxNiAyOTkuNzMzIDM0NC4zMTVDMjk5Ljg4IDM0NC4zMjIgMzAwLjAyNiAzNDQuMjc3IDMwMC4xNDQgMzQ0LjE4OEMzMDAuMjQ0IDM0NC4wNjIgMzAwLjI5NCAzNDMuOTAzIDMwMC4yODYgMzQzLjc0MkMzMDAuNDUzIDM0MC44NzYgMjk5Ljk1MyAzMzguMDA1IDMwMC4xMTUgMzM1LjEzOUMzMDAuMTc0IDMzNC4wOSAzMDAuMzIgMzMzLjA0NyAzMDAuMzQgMzMxLjk5M0MzMDAuMzk5IDMyNy43MjYgMjk4LjI5MiAzMjMuNTQ3IDI5OC45MjkgMzE5LjMyOEMyOTkuMTI5IDMxOC4yNjQgMjk5LjM5MSAzMTcuMjEyIDI5OS43MTMgMzE2LjE3OEMzMDEuNzI2IDMwOC44MjkgMzAxLjMgMzAxLjEwOCAzMDAuODU0IDI5My41MThDMzAwLjg2MiAyOTMuMzk2IDMwMC44MjcgMjkzLjI3NSAzMDAuNzU2IDI5My4xNzVDMzAwLjY4NCAyOTMuMTAzIDMwMC41OTIgMjkzLjA1NCAzMDAuNDkyIDI5My4wMzNDMjk4LjM0OSAyOTIuMzkgMjk2LjA4MiAyOTIuMjczIDI5My44ODQgMjkyLjY5QzI5MS42ODYgMjkzLjEwOCAyODkuNjIxIDI5NC4wNDkgMjg3Ljg2MyAyOTUuNDM0QzI4Ny4zMjkgMjk1Ljg2NSAyODUuOTgyIDI5Ni4yODIgMjg1LjYyOSAyOTYuNzk2QzI4NS4xMzkgMjk3LjUxMSAyODUuNzgxIDI5OC4yMjcgMjg2LjA2NSAyOTguOTg2QzI4Ni42OTQgMzAwLjg5IDI4Ny4xMTYgMzAyLjg1NiAyODcuMzI0IDMwNC44NTFWMzA0Ljg1MVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBkPSJNMzEwLjA0IDMwMi4yNDlDMzA5LjQ2NyAzMDMuNDQgMzA4LjY5OCAzMDQuNTQ3IDMwOC4zNTUgMzA1LjgyNkMzMDcuNDYzIDMwOS4yMDEgMzA5Ljc3MSAzMTIuNjg1IDMwOS40OTYgMzE2LjE0NEMzMDkuNDA4IDMxNy4yMzYgMzA5LjA3IDMxOC4yOTkgMzA5LjA0NiAzMTkuMzkyQzMwOS4wMjEgMzIwLjQ4NSAzMDkuNDIzIDMyMS43IDMxMC4zOTMgMzIyLjIwNEMzMTEuMDQ1IDMyMi41MzcgMzExLjg2MyAzMjIuNTAzIDMxMi40NzUgMzIyLjg4NUMzMTMuNTA5IDMyMy41MTcgMzEzLjYyNiAzMjQuOTUzIDMxMy41MjMgMzI2LjE1OEMzMTMuNDIgMzI3LjM2MyAzMTMuMjQ5IDMyOC43MTEgMzE0LjAxMyAzMjkuNjUxQzMxNC41OTYgMzMwLjM4MSAzMTUuNTk1IDMzMC42NjYgMzE2LjIyMyAzMzEuMzU2QzMxNi41OTYgMzMxLjg1MiAzMTYuOTEzIDMzMi4zODggMzE3LjE2OCAzMzIuOTU0QzMxOC4xMDQgMzM0LjU5IDMxOS44MTMgMzM1LjU4OSAzMjEuMjE0IDMzNi44NzNDMzIyLjYxNSAzMzguMTU3IDMyMy44MDEgMzQwLjAzOCAzMjMuMTc0IDM0MS44MTdDMzIyLjcxMyAzNDMuMTIgMzIxLjQyIDM0My45MjMgMzIwLjE3NiAzNDQuNTM2QzMxNy45MDYgMzQ1LjY1OCAzMTUuNTA5IDM0Ni41MDUgMzEzLjAzOCAzNDcuMDU5QzMxMi43NzMgMzQ3LjEzOSAzMTIuNDkyIDM0Ny4xNTQgMzEyLjIyIDM0Ny4xMDNDMzExLjk0NCAzNDcuMDAyIDMxMS42OTkgMzQ2LjgzNCAzMTEuNTA1IDM0Ni42MTNDMzEwLjA2IDM0NS4xOTcgMzA4LjU2NiAzNDMuNzEzIDMwNy44OTkgMzQxLjgwN0MzMDcuNzgxIDM0MS4zNDUgMzA3LjU5NiAzNDAuOTAzIDMwNy4zNTEgMzQwLjQ5NEMzMDYuNTg3IDMzOS40MjEgMzA0Ljk3NSAzMzkuNDYgMzAzLjg4NyAzMzguNzJDMzAyLjYxNCAzMzcuODUzIDMwMi4zMDUgMzM2LjEzMyAzMDEuNDcyIDMzNC44MzVDMzAwLjYzOSAzMzMuNTM3IDI5OS40MiAzMzIuNzYyIDI5OC41MzMgMzMxLjYyMUMyOTcuMDM0IDMyOS43MiAyOTYuNjY3IDMyNy4xODIgMjk1LjU5NCAzMjUuMDEyQzI5NS4xMzggMzI0LjA5MSAyOTQuNTU1IDMyMy4yMjggMjk0LjE5MyAzMjIuMjY4QzI5My44MjcgMzIxLjExNyAyOTMuNjAxIDMxOS45MjYgMjkzLjUyMiAzMTguNzIxQzI5Mi44MzEgMzEyLjk5OCAyOTEuMDcyIDMwNy4yMzcgMjkyLjE3OSAzMDEuNTczQzI5Mi40MjQgMzAwLjMyOCAyOTIuODAxIDI5OS4xMjMgMjkyLjk1OCAyOTcuODRDMjkzLjIyOCAyOTUuNjIgMjkyLjgwMSAyOTMuMzQ3IDI5My4xMyAyOTEuMTMyQzI5My4xMzggMjkwLjg1NCAyOTMuMjA4IDI5MC41ODIgMjkzLjMzNiAyOTAuMzM1QzI5My40NjQgMjkwLjA4OCAyOTMuNjQ3IDI4OS44NzMgMjkzLjg2OSAyODkuNzA3QzI5NC4xMzQgMjg5LjU4OCAyOTQuNDIyIDI4OS41MjkgMjk0LjcxMiAyODkuNTM1QzI5Ny42MTYgMjg5LjM4IDMwMC41MjggMjg5LjQ0NSAzMDMuNDIyIDI4OS43MzFDMzA0Ljg5MiAyODkuODczIDMwNi41MzggMjkwLjE3MiAzMDcuNDE5IDI5MS4zNzJDMzA4LjE2OSAyOTIuNDAxIDMwOC4xMyAyOTMuNzc4IDMwOC4zNyAyOTUuMDI3QzMwOC42NjkgMjk2LjU2NiAzMDkuNDQ3IDI5Ny40MDMgMzEwLjI2NiAyOTguNjA5QzMxMS4wODQgMjk5LjgxNCAzMTAuNjQzIDMwMS4wMDUgMzEwLjA0IDMwMi4yNDlaIiBmaWxsPSIjM0YzRDU2Ii8+DQo8cGF0aCBkPSJNMjk4LjczOSAzNDIuMDYxQzI5OS41MTMgMzQyLjA2MSAzMDAuMzcgMzQyLjAxMiAzMDAuOTY4IDM0Mi41MDJDMzAxLjcxMiAzNDMuMTE0IDMwMS43MjIgMzQ0LjIzNiAzMDEuNjA0IDM0NS4xOTJDMzAxLjI2MiAzNDcuODc2IDMwMC4zODUgMzUwLjQ1OCAyOTkuNTA4IDM1My4wMzFMMjk2LjkwMiAzNjAuNjc5QzI5Ni40ODkgMzYxLjc3IDI5Ni4xODQgMzYyLjg5OSAyOTUuOTkgMzY0LjA0OUMyOTUuNzM2IDM2Ni4wMDkgMjk2LjEyOCAzNjcuOTY5IDI5Ni4xNzcgMzY5LjkyOUMyOTYuMTc3IDM3MC45MDggMjk2LjExMyAzNzEuOTk2IDI5NS41MDEgMzcyLjc4NUMyOTQuMzkzIDM3NC4yMTEgMjkyLjIzMyAzNzQuMDQ0IDI5MC40NTUgMzczLjc2NUwyODEuNzc5IDM3Mi4yOTVDMjgxLjA0NyAzNzIuMTk3IDI4MC4zMjggMzcyLjAyMiAyNzkuNjMzIDM3MS43NzFDMjc4LjkwOSAzNzEuNDM2IDI3OC4yMTMgMzcxLjA0NSAyNzcuNTUxIDM3MC42QzI3NS44MzQgMzY5LjYxOSAyNzQuMDMxIDM2OC43OTkgMjcyLjE2MyAzNjguMTVDMjcxLjM0OSAzNjcuODQ2IDI3MC40MzggMzY3LjQ1OSAyNzAuMTQ0IDM2Ni42NDFDMjY5Ljc5NyAzNjUuNjYxIDI3MC41NzEgMzY0LjU4MyAyNzEuNTMxIDM2NC4xOTFDMjcyLjQ5MSAzNjMuNzk5IDI3My41NjQgMzYzLjg5NyAyNzQuNjAyIDM2My45MjdDMjc3LjE1NiAzNjQuMDA4IDI3OS43MDYgMzYzLjY2NCAyODIuMTQ2IDM2Mi45MDhDMjgyLjg4MiAzNjIuNzI3IDI4My41NjMgMzYyLjM3NSAyODQuMTM1IDM2MS44NzlDMjg0LjcxNiAzNjEuMjI2IDI4NS4xMTIgMzYwLjQyOSAyODUuMjgyIDM1OS41NzFDMjg2LjAyMSAzNTcuMDE4IDI4Ni40NjEgMzU0LjM4NyAyODYuNTk1IDM1MS43MzJDMjg2LjY5NyAzNDkuNzcyIDI4Ni42MjkgMzQ3LjgxMyAyODYuNzA3IDM0NS44NTNDMjg2Ljc1NiAzNDQuNjkyIDI4Ni42NDMgMzQwLjk1NCAyODcuNjYyIDM0MC4xNTVDMjg4LjQ0MSAzMzkuNTU3IDI5MS42NDUgMzQxLjIwOCAyOTIuNjk4IDM0MS40NDhDMjk0LjY3OSAzNDEuOTAyIDI5Ni43MDggMzQyLjEwOCAyOTguNzM5IDM0Mi4wNjFWMzQyLjA2MVoiIGZpbGw9IiMyRjJFNDEiLz4NCjxwYXRoIGQ9Ik0zMjcuMzE4IDM0Ny41MUMzMjguMTY1IDM1MC4zMTcgMzI4LjI5NyAzNTMuMjg2IDMyOC44NDYgMzU2LjE3MkMzMjkuMzk1IDM1OS4wNTcgMzMwLjM2NSAzNjIuMDAyIDMzMi41MDYgMzY0LjAxMUMzMzIuOTIyIDM2NC4zNDEgMzMzLjI4MSAzNjQuNzM5IDMzMy41NjkgMzY1LjE4N0MzMzMuNzQ5IDM2NS42MDYgMzMzLjgxMSAzNjYuMDY3IDMzMy43NDYgMzY2LjUyQzMzMy42ODEgMzY2Ljk3MiAzMzMuNDkzIDM2Ny4zOTcgMzMzLjIwMSAzNjcuNzQ5QzMzMi42MSAzNjguNDQ2IDMzMS44NzcgMzY5LjAwOSAzMzEuMDUxIDM2OS40QzMyNS41MiAzNzIuNDE4IDMxOS4yOTMgMzczLjk0MiAzMTMuMDE4IDM3NC42OTZDMzExLjkwOSAzNzQuOTA0IDMxMC43NjggMzc0Ljg2MiAzMDkuNjc3IDM3NC41NzRDMzA4LjYwOSAzNzQuMjExIDMwNy42NjQgMzczLjI1MSAzMDcuNjgzIDM3Mi4xMjRDMzA3LjY3MyAzNzEuODE1IDMwNy43NzggMzcxLjUxMyAzMDcuOTc3IDM3MS4yNzdDMzA4LjE2OCAzNzEuMTAyIDMwOC4zOTMgMzcwLjk3IDMwOC42MzkgMzcwLjg4OUMzMTAuOTUxIDM2OS45MzkgMzEzLjI5NyAzNjguOTA1IDMxNS4wODUgMzY3LjE1MUMzMTYuODczIDM2NS4zOTcgMzE3Ljk5NSAzNjIuNzQyIDMxNy4zMDUgMzYwLjM2MUMzMTYuODk2IDM1OS4yNDUgMzE2LjM0IDM1OC4xODkgMzE1LjY1NCAzNTcuMjJDMzE0Ljc1OCAzNTUuNjggMzEzLjk0MSAzNTQuMDk1IDMxMy4yMDQgMzUyLjQ3M0wzMTEuMDQ5IDM0Ny45NUMzMTAuNDE3IDM0Ni42MjggMzA5Ljc4IDM0NS4yNjYgMzA5LjY3MiAzNDMuODA2QzMxMi4zOCAzNDMuOTI3IDMxNS4wODQgMzQzLjQ5MyAzMTcuNjE4IDM0Mi41MzJDMzE4LjgwMSAzNDIuMDQ5IDMxOS45MDMgMzQxLjM4OCAzMjAuODg2IDM0MC41NzJDMzIxLjcxOCAzMzkuODc2IDMyMi40NzggMzM4LjU3OCAzMjMuNiAzMzkuNDg0QzMyNC41MDEgMzQwLjIwOSAzMjUuMDY5IDM0Mi4yNTIgMzI1LjU5OCAzNDMuMjg2QzMyNi4yODYgMzQ0LjY0NSAzMjYuODYxIDM0Ni4wNTcgMzI3LjMxOCAzNDcuNTFaIiBmaWxsPSIjMkYyRTQxIi8+DQo8cGF0aCBkPSJNMjk1LjczIDIzNS4yMkMyOTUuOTQ2IDIzNy4xMDEgMjk3Ljc2OCAyMzguMzQxIDI5OS41MDcgMjM5LjA4NUwyODguNDk5IDI0Mi41OThDMjg5LjIxIDI0MS4yMzYgMjg4LjYzNyAyMzkuNTcgMjg3LjkzMSAyMzguMTg5QzI4Ny4zNTcgMjM3LjA5NSAyODYuNzAyIDIzNi4wNDUgMjg1Ljk3MiAyMzUuMDQ4QzI4NS44NjQgMjM0Ljg5NiAyODUuNzQxIDIzNC43MDUgMjg1LjgyIDIzNC41MjlDMjg1Ljg5IDIzNC40MTQgMjg2IDIzNC4zMjggMjg2LjEyOCAyMzQuMjg5QzI4OC4zOTIgMjMzLjI3OSAyOTAuNzIzIDIzMi4yMzYgMjkzLjE5NyAyMzEuODY4QzI5My45MTMgMjMxLjc2NSAyOTUuMjY1IDIzMS40ODEgMjk1Ljc5OSAyMzIuMjA2QzI5Ni4zMzMgMjMyLjkzMiAyOTUuNjI3IDIzNC4zNTIgMjk1LjczIDIzNS4yMloiIGZpbGw9IiNGQkJFQkUiLz4NCjxwYXRoIG9wYWNpdHk9IjAuMSIgZD0iTTI5NS43MyAyMzUuMjJDMjk1Ljk0NiAyMzcuMTAxIDI5Ny43NjggMjM4LjM0MSAyOTkuNTA3IDIzOS4wODVMMjg4LjQ5OSAyNDIuNTk4QzI4OS4yMSAyNDEuMjM2IDI4OC42MzcgMjM5LjU3IDI4Ny45MzEgMjM4LjE4OUMyODcuMzU3IDIzNy4wOTUgMjg2LjcwMiAyMzYuMDQ1IDI4NS45NzIgMjM1LjA0OEMyODUuODY0IDIzNC44OTYgMjg1Ljc0MSAyMzQuNzA1IDI4NS44MiAyMzQuNTI5QzI4NS44OSAyMzQuNDE0IDI4NiAyMzQuMzI4IDI4Ni4xMjggMjM0LjI4OUMyODguMzkyIDIzMy4yNzkgMjkwLjcyMyAyMzIuMjM2IDI5My4xOTcgMjMxLjg2OEMyOTMuOTEzIDIzMS43NjUgMjk1LjI2NSAyMzEuNDgxIDI5NS43OTkgMjMyLjIwNkMyOTYuMzMzIDIzMi45MzIgMjk1LjYyNyAyMzQuMzUyIDI5NS43MyAyMzUuMjJaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTI4OS4zMzMgMjM2Ljc0NEMyOTQuMSAyMzYuNzQ0IDI5Ny45NjUgMjMyLjg3OSAyOTcuOTY1IDIyOC4xMTFDMjk3Ljk2NSAyMjMuMzQ0IDI5NC4xIDIxOS40NzkgMjg5LjMzMyAyMTkuNDc5QzI4NC41NjYgMjE5LjQ3OSAyODAuNzAxIDIyMy4zNDQgMjgwLjcwMSAyMjguMTExQzI4MC43MDEgMjMyLjg3OSAyODQuNTY2IDIzNi43NDQgMjg5LjMzMyAyMzYuNzQ0WiIgZmlsbD0iI0ZCQkVCRSIvPg0KPHBhdGggZD0iTTI4MS44NTIgMjk5LjE1M0MyODIuNjkgMzAwLjE1OCAyODQuMTY0IDMwMC4zNTQgMjg1LjQ1MyAzMDAuMTMzQzI4OC40NjUgMjk5LjY0MyAyOTAuOTI5IDI5Ny40MjQgMjkzLjg3OCAyOTYuNjI1QzI5Ny40OTQgMjk1LjY0NSAzMDEuMzIgMjk2LjkwNCAzMDQuNzM0IDI5OC40NDhDMzA4LjE0OSAyOTkuOTkxIDMxMS41NDQgMzAxLjg3NyAzMTUuMjc2IDMwMi4xNDJDMzExLjkwMSAyOTQuNjE2IDMxMy44MzEgMjg1LjU2MiAzMTAuNjAzIDI3Ny45NzNDMzA5LjgxNCAyNzYuMTE2IDMwOC43MTIgMjc0LjMyOCAzMDguNTM2IDI3Mi4zMTlDMzA4LjMxNSAyNjkuODI1IDMwOS41NiAyNjcuNDIgMzA5Ljc1MSAyNjQuOTQxQzMwOS45MjcgMjYyLjczMSAzMDkuMjYxIDI2MC41MzEgMzA4LjYyNCAyNTguNDI0QzMwNy44MzcgMjU1LjgzOCAzMDcuMDUgMjUzLjI1MSAzMDYuMjYzIDI1MC42NjRDMzA1LjM4MSAyNDcuNzY4IDMwNC40NzUgMjQ0LjgyNCAzMDIuNzY1IDI0Mi4zMzVDMzAyLjEzMyAyNDEuNDE5IDMwMS45NDIgMjM5LjU2MiAzMDAuOTgyIDIzOS4wMDhDMjk4Ljg4NSAyMzcuNzk4IDI5NS43MDYgMjM5LjMyMiAyOTMuNDMzIDIzOS40MDVDMjkxLjE2IDIzOS40ODggMjg5LjA4NyAyNDEuMTA1IDI4Ny43NiAyNDIuOTMzQzI4Ni4zNTQgMjQ0Ljg2MyAyODUuNTU1IDI0Ny4xNjEgMjg0LjgyMSAyNDkuNDM0QzI4My42NTEgMjUyLjgxOSAyODIuNzc3IDI1Ni4yOTkgMjgyLjIxIDI1OS44MzZDMjgyLjEzNiAyNjAuMzY1IDI4Mi4wNzIgMjYwLjg5NCAyODIuMDIzIDI2MS40MjhDMjgxLjUzNCAyNjYuNDYgMjgyLjI0OSAyNzEuNTIxIDI4Mi4yODggMjc2LjU3N1YyNzYuNjExQzI4Mi4zMzcgMjgzLjAyNCAyODEuMzA4IDI4OS4zOTggMjgxLjExNyAyOTUuODA3QzI4MS4wOTggMjk2Ljk3OCAyODEuMTI3IDI5OC4yNTcgMjgxLjg1MiAyOTkuMTUzWiIgZmlsbD0iIzJGMkU0MSIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMjgyLjMwMyAyNzYuNTgxQzI4My45OTQgMjc2LjE1NSAyODUuNTIyIDI3NS4wNjIgMjg2LjgzNSAyNzMuODY3QzI4Ny45NzIgMjcyLjg0OSAyODguOTgyIDI3MS42OTcgMjg5Ljg0MyAyNzAuNDM3QzI5MC45MjcgMjY4Ljc0MyAyOTEuNzk3IDI2Ni45MjEgMjkyLjQzNCAyNjUuMDEzQzI5NC4yNDggMjU5LjkxMSAyOTUuNCAyNTQuNTk4IDI5NS44NjMgMjQ5LjIwM0MyOTUuOTkxIDI0Ny43MzMgMjk2LjAzIDI0Ni4xNTYgMjk1LjE1MyAyNDQuOTlDMjk0LjY2MSAyNDQuMzU4IDI5My45NjkgMjQzLjkxMSAyOTMuMTkxIDI0My43MjNDMjkyLjQxMyAyNDMuNTM0IDI5MS41OTMgMjQzLjYxNSAyOTAuODY3IDI0My45NTFDMjg5LjcxMSAyNDQuNTE0IDI4OC45NjEgMjQ1LjY1NiAyODguMjY1IDI0Ni43NDhDMjg2Ljg4OSAyNDguOTE0IDI4NS41MDIgMjUxLjEwOSAyODQuNjE2IDI1My41MTlDMjg0LjIyNCAyNTQuNTg3IDI4My45MzUgMjU1LjY4NSAyODMuNTUzIDI1Ni43NThDMjgzLjE2NCAyNTcuODE2IDI4Mi43MTYgMjU4Ljg1MiAyODIuMjEgMjU5Ljg1OUMyODIuMTM3IDI2MC4zODggMjgyLjA3MyAyNjAuOTE3IDI4Mi4wMjQgMjYxLjQ1MUMyODEuNTY5IDI2Ni40ODMgMjgyLjI2NCAyNzEuNTI1IDI4Mi4zMDMgMjc2LjU4MVoiIGZpbGw9ImJsYWNrIi8+DQo8cGF0aCBkPSJNMjk1LjEyOCAyNDQuMDQ0QzI5Ni4wMDUgMjQ1LjIxIDI5NS45NjUgMjQ2LjgwMyAyOTUuODQzIDI0OC4yNTNDMjk1LjM4MSAyNTMuNjQ4IDI5NC4yMjggMjU4Ljk2MSAyOTIuNDE0IDI2NC4wNjNDMjkxLjc4MiAyNjUuOTg3IDI5MC45MTEgMjY3LjgyNCAyODkuODIyIDI2OS41MzFDMjg4Ljk2IDI3MC43OSAyODcuOTUgMjcxLjk0MSAyODYuODE0IDI3Mi45NkMyODUuMTQ5IDI3NC40NzkgMjgzLjEyMSAyNzUuODM2IDI4MC44NjIgMjc1Ljg1NkMyNzkuNTkxIDI3NS43OTYgMjc4LjMzOSAyNzUuNTIzIDI3Ny4xNTkgMjc1LjA0OEwyNTguNzY0IDI2OC43ODZDMjU4LjU3OCAyNjcuNzM4IDI1OS4zMTggMjY2LjUxMyAyNTkuNjY1IDI2NS41MDRMMjYwLjY0NSAyNjIuNTk4QzI2MC45MjQgMjYxLjc5NSAyNjEuMjQ4IDI2MC45MjggMjYxLjk3OCAyNjAuNDkyQzI2Mi43MDcgMjYwLjA1NSAyNjMuODY0IDI2MC42NTMgMjY0LjQ3MSAyNjEuMTM4QzI2NS4wNzkgMjYxLjYyMyAyNjUuNTM5IDI2Mi4yNiAyNjYuMTM3IDI2Mi43NTVDMjY3LjI2OCAyNjMuNjk2IDI2OC43NjIgMjY0LjA0OCAyNzAuMjAzIDI2NC4zNzJMMjc0LjMzMiAyNjUuMjk4QzI3NS44MyAyNjUuNzA4IDI3Ny4zNzUgMjY1LjkxNCAyNzguOTI3IDI2NS45MUMyODAuMDc5IDI2Mi4zOTMgMjgyLjI2OCAyNTkuMjk2IDI4My41MDggMjU1LjgwOEMyODMuODkgMjU0Ljc0IDI4NC4xNzkgMjUzLjYzNyAyODQuNTc2IDI1Mi41NjlDMjg1LjQ1OCAyNTAuMTU5IDI4Ni44NDkgMjQ3Ljk2OSAyODguMjI1IDI0NS43OThDMjg4LjkxNiAyNDQuNzExIDI4OS42NjYgMjQzLjU2OSAyOTAuODI3IDI0My4wMDFDMjkxLjU1NSAyNDIuNjYgMjkyLjM3OCAyNDIuNTc4IDI5My4xNiAyNDIuNzY4QzI5My45NDIgMjQyLjk1NyAyOTQuNjM2IDI0My40MDggMjk1LjEyOCAyNDQuMDQ0VjI0NC4wNDRaIiBmaWxsPSIjMkYyRTQxIi8+DQo8cGF0aCBkPSJNMjkyLjA4NiAyMzAuMDYxQzI5Mi4wMjEgMjI5LjQ5MyAyOTEuODQ0IDIyOC45NDQgMjkxLjU2NyAyMjguNDQ0QzI5MS40MjIgMjI4LjE5NCAyOTEuMjAyIDIyNy45OTcgMjkwLjkzOCAyMjcuODhDMjkwLjY3NCAyMjcuNzY0IDI5MC4zNzkgMjI3LjczNSAyOTAuMDk3IDIyNy43OThDMjg5LjIzNSAyMjguMDY3IDI4OC45NDYgMjI5LjQgMjg4LjA0NSAyMjkuNDQ0QzI4Ny40MzcgMjI5LjQ3MyAyODcuMDAxIDIyOC44NTYgMjg2LjgxIDIyOC4yNzhDMjg2LjYxOSAyMjcuNyAyODYuNTE2IDIyNy4wMzggMjg2LjA2IDIyNi42MzFDMjg1Ljc0MyAyMjYuMzk0IDI4NS4zNzkgMjI2LjIyNyAyODQuOTkzIDIyNi4xNDJDMjgyLjkwMSAyMjUuNDggMjgwLjc0IDIyNC4yNiAyODAuMDQ1IDIyMi4xNzhDMjc5Ljg4MSAyMjEuNzU1IDI3OS44NDIgMjIxLjI5NCAyNzkuOTMyIDIyMC44NUMyODAuMjUxIDIxOS41MzIgMjgxLjg5MiAyMTkuMTM1IDI4My4xNDEgMjE4LjY2QzI4NC4zOSAyMTguMTg1IDI4NS41OSAyMTcuMzcyIDI4Ni44MTUgMjE2Ljc1NEMyODguMDQgMjE2LjEzNyAyODkuNDYgMjE1LjcwMSAyOTAuODA3IDIxNi4wMTRDMjkxLjQ5MSAyMTYuMjI5IDI5Mi4xNjMgMjE2LjQ4IDI5Mi44MjEgMjE2Ljc2NEMyOTQuODQ5IDIxNy40NyAyOTcuMzMzIDIxNy4xNDEgMjk4LjkwNSAyMTguNjA2QzI5OS41OTIgMjE5LjMzMyAzMDAuMDk2IDIyMC4yMTMgMzAwLjM3NSAyMjEuMTc0QzMwMS40NzIgMjI0LjIyMSAzMDIuMTY4IDIyNy44MzcgMzAwLjM1IDIzMC41MTJDMjk5LjIyOCAyMzIuMTYzIDI5OC4xNDEgMjM0LjA0OSAyOTUuOTg1IDIzNC4yNUMyOTMuNDc3IDIzNC40NjEgMjkyLjQ4MyAyMzIuMTg3IDI5Mi4wODYgMjMwLjA2MVoiIGZpbGw9IiMyRjJFNDEiLz4NCjxnIG9wYWNpdHk9IjAuMSI+DQo8cGF0aCBvcGFjaXR5PSIwLjEiIGQ9Ik0yODguMjU1IDIyNy4yMzlDMjg4LjA2NCAyMjYuNjYxIDI4Ny45NjEgMjI1Ljk5OSAyODcuNTEgMjI1LjU5M0MyODcuMTkzIDIyNS4zNTYgMjg2LjgyOSAyMjUuMTg5IDI4Ni40NDMgMjI1LjEwM0MyODQuMzQ2IDIyNC40NDEgMjgyLjE5IDIyMy4yMjIgMjgxLjQ5IDIyMS4xMzlDMjgxLjMzIDIyMC43MTYgMjgxLjI5MyAyMjAuMjU1IDI4MS4zODIgMjE5LjgxMkMyODEuNDMgMjE5LjYwMiAyODEuNTE4IDIxOS40MDQgMjgxLjY0MiAyMTkuMjI5QzI4MC44NDMgMjE5LjU3NiAyODAuMTQ4IDIyMC4wMzcgMjc5Ljk1MiAyMjAuODVDMjc5Ljg2MiAyMjEuMjk0IDI3OS45MDEgMjIxLjc1NSAyODAuMDY0IDIyMi4xNzhDMjgwLjc2IDIyNC4yNiAyODIuOTIgMjI1LjQ4IDI4NS4wMTIgMjI2LjE0MkMyODUuMzk5IDIyNi4yMjcgMjg1Ljc2MyAyMjYuMzk0IDI4Ni4wOCAyMjYuNjMxQzI4Ni41MzYgMjI3LjAzOCAyODYuNjM0IDIyNy42OTUgMjg2LjgzIDIyOC4yNzhDMjg3LjAyNSAyMjguODYxIDI4Ny40NTcgMjI5LjQ3MyAyODguMDY0IDIyOS40NDRDMjg4LjY3MSAyMjkuNDE0IDI4OC45NjUgMjI4Ljg2MSAyODkuMzUyIDIyOC4zOTVDMjg4LjgxOCAyMjguMzI3IDI4OC40MzEgMjI3Ljc3OCAyODguMjU1IDIyNy4yMzlaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggb3BhY2l0eT0iMC4xIiBkPSJNMjk3LjQyNiAyMzMuMTk2QzI5NC45MDggMjMzLjQyNiAyOTMuOTE0IDIzMS4xMzMgMjkzLjUwNyAyMjkuMDIyQzI5My40NTMgMjI4LjQ1NSAyOTMuMjg3IDIyNy45MDYgMjkzLjAxNyAyMjcuNDA1QzI5Mi44NzIgMjI3LjE1NSAyOTIuNjUyIDIyNi45NTggMjkyLjM4OCAyMjYuODQyQzI5Mi4xMjQgMjI2LjcyNiAyOTEuODI5IDIyNi42OTYgMjkxLjU0NyAyMjYuNzU4QzI5MS4xMDEgMjI2Ljk3NSAyOTAuNzI1IDIyNy4zMTUgMjkwLjQ2NSAyMjcuNzM4QzI5MC42OSAyMjcuNzYgMjkwLjkwNyAyMjcuODMzIDI5MS4wOTkgMjI3Ljk1MkMyOTEuMjkxIDIyOC4wNzEgMjkxLjQ1MyAyMjguMjMyIDI5MS41NzIgMjI4LjQyNEMyOTEuODQ5IDIyOC45MjQgMjkyLjAyNiAyMjkuNDczIDI5Mi4wOTEgMjMwLjA0MUMyOTIuNDg4IDIzMi4xNTIgMjkzLjQ4MyAyMzQuNDUgMjk2LjAxIDIzNC4yMTVDMjk3LjAwOSAyMzQuMTA1IDI5Ny45MzIgMjMzLjYyNiAyOTguNTk3IDIzMi44NzNDMjk4LjIyNyAyMzMuMDQ1IDI5Ny44MzIgMjMzLjE1NCAyOTcuNDI2IDIzMy4xOTZWMjMzLjE5NloiIGZpbGw9ImJsYWNrIi8+DQo8L2c+DQo8ZGVmcz4NCjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhciIgeDE9IjI5NC44NSIgeTE9IjM3NS40NjQiIHgyPSIyODguMzY0IiB5Mj0iMjE0LjcwNCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPg0KPHN0b3Agc3RvcC1jb2xvcj0iIzgwODA4MCIgc3RvcC1vcGFjaXR5PSIwLjI1Ii8+DQo8c3RvcCBvZmZzZXQ9IjAuNTQiIHN0b3AtY29sb3I9IiM4MDgwODAiIHN0b3Atb3BhY2l0eT0iMC4xMiIvPg0KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjODA4MDgwIiBzdG9wLW9wYWNpdHk9IjAuMSIvPg0KPC9saW5lYXJHcmFkaWVudD4NCjxjbGlwUGF0aCBpZD0iY2xpcDAiPg0KPHJlY3Qgd2lkdGg9IjE3NS4wMzEiIGhlaWdodD0iOTUuMDA5MiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE0MS4wMTcgOTUuMDA5OCkiLz4NCjwvY2xpcFBhdGg+DQo8L2RlZnM+DQo8L3N2Zz4NCg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjY3IiBoZWlnaHQ9IjMxMSIgdmlld0JveD0iMCAwIDY2NyAzMTEiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ1MyAzNUgyMTRDMjA5LjAyOSAzNSAyMDUgMzkuMDI5NCAyMDUgNDRWOTVDMjA1IDk5Ljk3MDYgMjA5LjAyOSAxMDQgMjE0IDEwNEg0NTNDNDU3Ljk3MSAxMDQgNDYyIDk5Ljk3MDYgNDYyIDk1VjQ0QzQ2MiAzOS4wMjk0IDQ1Ny45NzEgMzUgNDUzIDM1Wk0yMTQgMzJDMjA3LjM3MyAzMiAyMDIgMzcuMzcyNiAyMDIgNDRWOTVDMjAyIDEwMS42MjcgMjA3LjM3MyAxMDcgMjE0IDEwN0g0NTNDNDU5LjYyNyAxMDcgNDY1IDEwMS42MjcgNDY1IDk1VjQ0QzQ2NSAzNy4zNzI2IDQ1OS42MjcgMzIgNDUzIDMySDIxNFpNMzI5IDEwMEgyNDlDMjQ3Ljg5NSAxMDAgMjQ3IDEwMC44OTUgMjQ3IDEwMkMyNDcgMTAzLjEwNSAyNDcuODk1IDEwNCAyNDkgMTA0SDMyOUMzMzAuMTA1IDEwNCAzMzEgMTAzLjEwNSAzMzEgMTAyQzMzMSAxMDAuODk1IDMzMC4xMDUgMTAwIDMyOSAxMDBaTTI0OSA5N0MyNDYuMjM5IDk3IDI0NCA5OS4yMzg2IDI0NCAxMDJDMjQ0IDEwNC43NjEgMjQ2LjIzOSAxMDcgMjQ5IDEwN0gzMjlDMzMxLjc2MSAxMDcgMzM0IDEwNC43NjEgMzM0IDEwMkMzMzQgOTkuMjM4NiAzMzEuNzYxIDk3IDMyOSA5N0gyNDlaIiBmaWxsPSIjQjhEMUVDIi8+DQo8Y2lyY2xlIGN4PSI0MzYiIGN5PSI2NyIgcj0iMTAiIGZpbGw9IiMwMDc4RkYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ1MyAxMjBIMjE0QzIwOS4wMjkgMTIwIDIwNSAxMjQuMDI5IDIwNSAxMjlWMTgwQzIwNSAxODQuOTcxIDIwOS4wMjkgMTg5IDIxNCAxODlINDUzQzQ1Ny45NzEgMTg5IDQ2MiAxODQuOTcxIDQ2MiAxODBWMTI5QzQ2MiAxMjQuMDI5IDQ1Ny45NzEgMTIwIDQ1MyAxMjBaTTIxNCAxMTdDMjA3LjM3MyAxMTcgMjAyIDEyMi4zNzMgMjAyIDEyOVYxODBDMjAyIDE4Ni42MjcgMjA3LjM3MyAxOTIgMjE0IDE5Mkg0NTNDNDU5LjYyNyAxOTIgNDY1IDE4Ni42MjcgNDY1IDE4MFYxMjlDNDY1IDEyMi4zNzMgNDU5LjYyNyAxMTcgNDUzIDExN0gyMTRaTTMyOSAxODVIMjQ5QzI0Ny44OTUgMTg1IDI0NyAxODUuODk1IDI0NyAxODdDMjQ3IDE4OC4xMDUgMjQ3Ljg5NSAxODkgMjQ5IDE4OUgzMjlDMzMwLjEwNSAxODkgMzMxIDE4OC4xMDUgMzMxIDE4N0MzMzEgMTg1Ljg5NSAzMzAuMTA1IDE4NSAzMjkgMTg1Wk0yNDkgMTgyQzI0Ni4yMzkgMTgyIDI0NCAxODQuMjM5IDI0NCAxODdDMjQ0IDE4OS43NjEgMjQ2LjIzOSAxOTIgMjQ5IDE5MkgzMjlDMzMxLjc2MSAxOTIgMzM0IDE4OS43NjEgMzM0IDE4N0MzMzQgMTg0LjIzOSAzMzEuNzYxIDE4MiAzMjkgMTgySDI0OVoiIGZpbGw9IiNCOEQxRUMiLz4NCjxjaXJjbGUgY3g9IjQzNiIgY3k9IjE1MiIgcj0iMTAiIGZpbGw9IiMwMDc4RkYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ1MyAyMDVIMjE0QzIwOS4wMjkgMjA1IDIwNSAyMDkuMDI5IDIwNSAyMTRWMjY1QzIwNSAyNjkuOTcxIDIwOS4wMjkgMjc0IDIxNCAyNzRINDUzQzQ1Ny45NzEgMjc0IDQ2MiAyNjkuOTcxIDQ2MiAyNjVWMjE0QzQ2MiAyMDkuMDI5IDQ1Ny45NzEgMjA1IDQ1MyAyMDVaTTIxNCAyMDJDMjA3LjM3MyAyMDIgMjAyIDIwNy4zNzMgMjAyIDIxNFYyNjVDMjAyIDI3MS42MjcgMjA3LjM3MyAyNzcgMjE0IDI3N0g0NTNDNDU5LjYyNyAyNzcgNDY1IDI3MS42MjcgNDY1IDI2NVYyMTRDNDY1IDIwNy4zNzMgNDU5LjYyNyAyMDIgNDUzIDIwMkgyMTRaTTMyOSAyNzBIMjQ5QzI0Ny44OTUgMjcwIDI0NyAyNzAuODk1IDI0NyAyNzJDMjQ3IDI3My4xMDUgMjQ3Ljg5NSAyNzQgMjQ5IDI3NEgzMjlDMzMwLjEwNSAyNzQgMzMxIDI3My4xMDUgMzMxIDI3MkMzMzEgMjcwLjg5NSAzMzAuMTA1IDI3MCAzMjkgMjcwWk0yNDkgMjY3QzI0Ni4yMzkgMjY3IDI0NCAyNjkuMjM5IDI0NCAyNzJDMjQ0IDI3NC43NjEgMjQ2LjIzOSAyNzcgMjQ5IDI3N0gzMjlDMzMxLjc2MSAyNzcgMzM0IDI3NC43NjEgMzM0IDI3MkMzMzQgMjY5LjIzOSAzMzEuNzYxIDI2NyAzMjkgMjY3SDI0OVoiIGZpbGw9IiNCOEQxRUMiLz4NCjxjaXJjbGUgY3g9IjQzNiIgY3k9IjIzNyIgcj0iMTAiIGZpbGw9IiMwMDc4RkYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+DQo8bGluZSB4MT0iMjQ3IiB5MT0iMTA2LjUiIHgyPSIzMzIiIHkyPSIxMDYuNSIgc3Ryb2tlPSIjMDA3OEZGIi8+DQo8bGluZSB4MT0iMjQ3IiB5MT0iMTkxLjUiIHgyPSIzMzIiIHkyPSIxOTEuNSIgc3Ryb2tlPSIjMDA3OEZGIi8+DQo8bGluZSB4MT0iMjQ3IiB5MT0iMjc2LjUiIHgyPSIzMzIiIHkyPSIyNzYuNSIgc3Ryb2tlPSIjMDA3OEZGIi8+DQo8cGF0aCBkPSJNMjA4Ljk0NiA1LjYxNzk3QzIxMC45NDEgMi44NTI2NyAyMTUuMDU5IDIuODUyNjggMjE3LjA1NCA1LjYxNzk3TDI1OS4yNDEgNjQuMDc0QzI2MS42MjggNjcuMzgwOCAyNTkuMjY1IDcyIDI1NS4xODcgNzJIMTcwLjgxM0MxNjYuNzM1IDcyIDE2NC4zNzIgNjcuMzgwOCAxNjYuNzU5IDY0LjA3NEwyMDguOTQ2IDUuNjE3OTdaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTIxMC41NjcgNi43ODgzOEMyMTEuNzY1IDUuMTI5MjEgMjE0LjIzNSA1LjEyOTIgMjE1LjQzMyA2Ljc4ODM5TDI1Ny42MiA2NS4yNDQ0QzI1OS4wNTIgNjcuMjI4NSAyNTcuNjM0IDcwIDI1NS4xODcgNzBIMTcwLjgxM0MxNjguMzY2IDcwIDE2Ni45NDggNjcuMjI4NSAxNjguMzggNjUuMjQ0NEwyMTAuNTY3IDYuNzg4MzhaIiBzdHJva2U9IiM5QUJERTQiIHN0cm9rZS1vcGFjaXR5PSIwLjciIHN0cm9rZS13aWR0aD0iNCIvPg0KPHBhdGggZD0iTTIxMy43MTkgNDkuNTU0N0gyMTEuMjU4TDIxMC4wNjIgMjQuNzM0NEgyMTQuOTE0TDIxMy43MTkgNDkuNTU0N1pNMjA5LjY0MSA1Ni41MTU2QzIwOS42NDEgNTQuMzkwNiAyMTAuNTc4IDUzLjMyODEgMjEyLjQ1MyA1My4zMjgxQzIxMy4zNTkgNTMuMzI4MSAyMTQuMDU1IDUzLjYwMTYgMjE0LjUzOSA1NC4xNDg0QzIxNS4wMzkgNTQuNjk1MyAyMTUuMjg5IDU1LjQ4NDQgMjE1LjI4OSA1Ni41MTU2QzIxNS4yODkgNTcuNTE1NiAyMTUuMDM5IDU4LjI5NjkgMjE0LjUzOSA1OC44NTk0QzIxNC4wMzkgNTkuNDA2MiAyMTMuMzQ0IDU5LjY3OTcgMjEyLjQ1MyA1OS42Nzk3QzIxMS42NDEgNTkuNjc5NyAyMTAuOTY5IDU5LjQzNzUgMjEwLjQzOCA1OC45NTMxQzIwOS45MDYgNTguNDUzMSAyMDkuNjQxIDU3LjY0MDYgMjA5LjY0MSA1Ni41MTU2WiIgZmlsbD0iI0ZGNkMwMCIvPg0KPHJlY3QgeD0iMjQ3IiB5PSIxMDgiIHdpZHRoPSIxNzMiIGhlaWdodD0iOCIgZmlsbD0iIzAwNzhGRiIgZmlsbC1vcGFjaXR5PSIwLjIiIHN0cm9rZT0iI0ZBRkFGQSIgc3Ryb2tlLXdpZHRoPSIyIi8+DQo8cmVjdCB4PSIyNDciIHk9IjE5MyIgd2lkdGg9IjE3MyIgaGVpZ2h0PSI4IiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuMiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIi8+DQo8cmVjdCB4PSIyNDciIHk9IjI3OCIgd2lkdGg9IjE3MyIgaGVpZ2h0PSI4IiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuMiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIyIi8+DQo8cmVjdCB4PSIzNDQiIHk9IjY3IiB3aWR0aD0iNjAiIGhlaWdodD0iNCIgcng9IjIiIGZpbGw9IiMwMDc4RkYiIGZpbGwtb3BhY2l0eT0iMC43Ii8+DQo8cmVjdCB4PSIzNDgiIHk9IjE1MiIgd2lkdGg9IjYwIiBoZWlnaHQ9IjQiIHJ4PSIyIiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuNyIvPg0KPHJlY3QgeD0iMzQ4IiB5PSIyMzciIHdpZHRoPSI2MCIgaGVpZ2h0PSI0IiByeD0iMiIgZmlsbD0iIzAwNzhGRiIgZmlsbC1vcGFjaXR5PSIwLjciLz4NCjxwYXRoIGQ9Ik00NjUuNSA2N0g1MDRDNTE0LjQ5MyA2NyA1MjMgNzUuNTA2NiA1MjMgODZWMTM0LjVDNTIzIDE0NC45OTMgNTE0LjQ5MyAxNTMuNSA1MDQgMTUzLjVINDY1LjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4NCjxwYXRoIGQ9Ik0yMDEuNSAyNDIuNUwxNjMgMjQyLjVDMTUyLjUwNyAyNDIuNSAxNDQgMjMzLjk5MyAxNDQgMjIzLjVMMTQ0IDE3NUMxNDQgMTY0LjUwNyAxNTIuNTA3IDE1NiAxNjMgMTU2TDIwMS41IDE1NiIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPg0KPGxpbmUgeTE9IjMwOS41IiB4Mj0iNjY3IiB5Mj0iMzA5LjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8L3N2Zz4NCg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODcyIiBoZWlnaHQ9IjM2OSIgdmlld0JveD0iMCAwIDg3MiAzNjkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8bGluZSB4MT0iLTEuMzExMzRlLTA3IiB5MT0iMzY3LjUiIHgyPSI4NzIiIHkyPSIzNjcuNSIgc3Ryb2tlPSIjNUNBNEY1IiBzdHJva2Utd2lkdGg9IjMiLz4NCjxyZWN0IHg9IjY5OS4zODUiIHk9IjI5Ny45MjQiIHdpZHRoPSIxMTMuMjMxIiBoZWlnaHQ9IjIyLjM1ODYiIHJ4PSIyIiBmaWxsPSIjODRCQkY3Ii8+DQo8cmVjdCB4PSI2OTQuNDYxIiB5PSIyOTcuOTI0IiB3aWR0aD0iNC45MjMwOCIgaGVpZ2h0PSI2My44ODE4IiByeD0iMSIgZmlsbD0iIzAwNzhGRiIgZmlsbC1vcGFjaXR5PSIwLjM3Ii8+DQo8cmVjdCB4PSI4MTIuNjE1IiB5PSIyOTcuOTI0IiB3aWR0aD0iNC45MjMwOCIgaGVpZ2h0PSI2My44ODE4IiByeD0iMSIgZmlsbD0iIzAwNzhGRiIgZmlsbC1vcGFjaXR5PSIwLjM3Ii8+DQo8cGF0aCBkPSJNNzAwLjIwNSAzNjEuODA3TDcwMS44NDYgMzY1LjAwMUg2OTJMNjkzLjY0MSAzNjEuODA3SDcwMC4yMDVaIiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuMzciLz4NCjxwYXRoIGQ9Ik04MTguMzU5IDM2MS44MDVMODIwIDM2NC45OTlIODEwLjE1NEw4MTEuNzk1IDM2MS44MDVIODE4LjM1OVoiIGZpbGw9IiMwMDc4RkYiIGZpbGwtb3BhY2l0eT0iMC4zNyIvPg0KPHBhdGggZD0iTTcwNS41MzkgMjk3LjkyNEw3MTAuNDYxIDI5Ny45MjRMNzIwLjMwOCAzMjAuMjgyTDcxNS4zODQgMzIwLjI4Mkw3MDUuNTM5IDI5Ny45MjRaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTc2MC45MjQgMjk3LjkyM0w3NjUuODQ2IDI5Ny45MjNMNzc1LjY5MyAzMjAuMjgyTDc3MC43NjkgMzIwLjI4M0w3NjAuOTI0IDI5Ny45MjNaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTczMS4zODUgMjk3LjkyMkw3MzYuMzA4IDI5Ny45MjJMNzQ2LjE1NCAzMjAuMjgyTDc0MS4yMzEgMzIwLjI4Mkw3MzEuMzg1IDI5Ny45MjJaIiBmaWxsPSJ3aGl0ZSIvPg0KPHBhdGggZD0iTTc4Ni43NjkgMjk3LjkyMkw3OTEuNjkzIDI5Ny45MjJMODAxLjUzOCAzMjAuMjgyTDc5Ni42MTYgMzIwLjI4Mkw3ODYuNzY5IDI5Ny45MjJaIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3QgeD0iMTc4LjUiIHk9IjQ3LjUiIHdpZHRoPSIxNyIgaGVpZ2h0PSIzMDMiIHN0cm9rZT0iIzVDQTRGNSIvPg0KPHBhdGggZD0iTTE2NC4wNDQgMzU5LjA1N0MxNjQuMjM2IDM1OS4wMTkgMTY0LjQzMSAzNTkgMTY0LjYyNyAzNTlIMjA2LjA5MUMyMDYuMjc5IDM1OSAyMDYuNDY2IDM1OS4wMTggMjA2LjY1IDM1OS4wNTNDMjEwLjIyOCAzNTkuNzMxIDIwOS43MzMgMzY1IDIwNi4wOTEgMzY1SDE2NC42MjZDMTYwLjk5OSAzNjUgMTYwLjQ4NiAzNTkuNzYxIDE2NC4wNDQgMzU5LjA1N1oiIGZpbGw9IiM1Q0E0RjUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+DQo8cmVjdCB4PSIxNzIiIHk9IjM1MSIgd2lkdGg9IjI5IiBoZWlnaHQ9IjgiIGZpbGw9IiM1Q0E0RjUiIGZpbGwtb3BhY2l0eT0iMC41Ii8+DQo8cmVjdCB4PSIxNDIiIHk9IjQ2IiB3aWR0aD0iMjY1IiBoZWlnaHQ9IjQiIGZpbGw9IiM4QkMyRkYiLz4NCjxyZWN0IHg9IjE0MiIgeT0iNDkiIHdpZHRoPSIyMyIgaGVpZ2h0PSIxMyIgcng9IjQiIGZpbGw9IiNGRkREOUMiLz4NCjxyZWN0IHg9IjE3MS41IiB5PSI1MC41IiB3aWR0aD0iNTQiIGhlaWdodD0iMjAiIHJ4PSI0LjUiIGZpbGw9IiNGRkREOUMiIHN0cm9rZT0iI0ZGREQ5QyIvPg0KPHJlY3QgeD0iMTc5IiB5PSI1MyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjgiIHJ4PSIyIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3QgeD0iMjAxIiB5PSI1MyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjgiIHJ4PSIyIiBmaWxsPSJ3aGl0ZSIvPg0KPGxpbmUgeDE9IjE5Ni4zMDciIHkxPSI0LjM5NDY4IiB4Mj0iMTQyLjMwNyIgeTI9IjQ2LjM5NDciIHN0cm9rZT0iIzk5QzZGOSIvPg0KPGxpbmUgeDE9IjE5Ni40NDciIHkxPSI0LjIyMzYxIiB4Mj0iMTczLjQ0NyIgeTI9IjUwLjIyMzYiIHN0cm9rZT0iIzk5QzZGOSIvPg0KPGxpbmUgeDE9IjE5Ni40MzUiIHkxPSIzLjc1Mzk3IiB4Mj0iMjIyLjQzNSIgeTI9IjQ5Ljc1NCIgc3Ryb2tlPSIjOTlDNkY5Ii8+DQo8bGluZSB4MT0iMTk3LjA5NiIgeTE9IjQuNTA5MzUiIHgyPSI0MDYuMDk2IiB5Mj0iNDUuNTA5NCIgc3Ryb2tlPSIjOTlDNkY5Ii8+DQo8bGluZSB4MT0iNDA1LjUiIHkxPSI0NiIgeDI9IjQwNS41IiB5Mj0iMTAxIiBzdHJva2U9IiM5OUM2RjkiLz4NCjxsaW5lIHgxPSI0MDUuMyIgeTE9IjEwNC40IiB4Mj0iMzkzLjMiIHkyPSIxMTMuNCIgc3Ryb2tlPSIjOTlDNkY5Ii8+DQo8bGluZSB4MT0iNDA1LjUiIHkxPSIxMDQiIHgyPSI0MDUuNSIgeTI9IjExNCIgc3Ryb2tlPSIjOTlDNkY5Ii8+DQo8bGluZSB4MT0iNDA1LjMyIiB5MT0iMTAzLjYxNiIgeDI9IjQxNy4zMiIgeTI9IjExMy42MTYiIHN0cm9rZT0iIzk5QzZGOSIvPg0KPGNpcmNsZSBjeD0iMTk2LjUiIGN5PSIyLjUiIHI9IjIuNSIgZmlsbD0iIzVDQTRGNSIvPg0KPGNpcmNsZSBjeD0iNDA1LjUiIGN5PSIxMDIuNSIgcj0iMS41IiBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIwLjYiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSI3Ny41IiB4Mj0iMTk1IiB5Mj0iNzcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMTE3LjUiIHgyPSIxOTUiIHkyPSIxMTcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMTU3LjUiIHgyPSIxOTUiIHkyPSIxNTcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMTk3LjUiIHgyPSIxOTUiIHkyPSIxOTcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMjM3LjUiIHgyPSIxOTUiIHkyPSIyMzcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMjc3LjUiIHgyPSIxOTUiIHkyPSIyNzcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iMzE3LjUiIHgyPSIxOTUiIHkyPSIzMTcuNSIgc3Ryb2tlPSIjQUREMUZBIi8+DQo8bGluZSB4MT0iMTc5IiB5MT0iODcuNSIgeDI9IjE5NSIgeTI9Ijg3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjEyNy41IiB4Mj0iMTk1IiB5Mj0iMTI3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjE2Ny41IiB4Mj0iMTk1IiB5Mj0iMTY3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjIwNy41IiB4Mj0iMTk1IiB5Mj0iMjA3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjI0Ny41IiB4Mj0iMTk1IiB5Mj0iMjQ3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjI4Ny41IiB4Mj0iMTk1IiB5Mj0iMjg3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9IjMyNy41IiB4Mj0iMTk1IiB5Mj0iMzI3LjUiIHN0cm9rZT0iI0FERDFGQSIvPg0KPGxpbmUgeDE9IjE3OSIgeTE9Ijk3LjUiIHgyPSIxOTUiIHkyPSI5Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIxMzcuNSIgeDI9IjE5NSIgeTI9IjEzNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIxNzcuNSIgeDI9IjE5NSIgeTI9IjE3Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIyMTcuNSIgeDI9IjE5NSIgeTI9IjIxNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIyNTcuNSIgeDI9IjE5NSIgeTI9IjI1Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIyOTcuNSIgeDI9IjE5NSIgeTI9IjI5Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIzMzcuNSIgeDI9IjE5NSIgeTI9IjMzNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIxMDcuNSIgeDI9IjE5NSIgeTI9IjEwNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIxNDcuNSIgeDI9IjE5NSIgeTI9IjE0Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIxODcuNSIgeDI9IjE5NSIgeTI9IjE4Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIyMjcuNSIgeDI9IjE5NSIgeTI9IjIyNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIyNjcuNSIgeDI9IjE5NSIgeTI9IjI2Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIzMDcuNSIgeDI9IjE5NSIgeTI9IjMwNy41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkiIHkxPSIzNDcuNSIgeDI9IjE5NSIgeTI9IjM0Ny41IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iNzcuNjc3OSIgeDI9IjE5NS4zODIiIHkyPSI5Ni42Nzc5IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMTU2LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIxNzUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzguMzgyIiB5MT0iMjM2LjY3OCIgeDI9IjE5NC4zODIiIHkyPSIyNTUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iOTcuNjc3OSIgeDI9IjE5NS4zODIiIHkyPSIxMTYuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMTc2LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIxOTUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzguMzgyIiB5MT0iMjU2LjY3OCIgeDI9IjE5NC4zODIiIHkyPSIyNzUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMTE3LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIxMzYuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMTk2LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIyMTUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzguMzgyIiB5MT0iMjc2LjY3OCIgeDI9IjE5NC4zODIiIHkyPSIyOTUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMzE3LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIzMzYuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMTM3LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIxNTYuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzkuMzgyIiB5MT0iMjE2LjY3OCIgeDI9IjE5NS4zODIiIHkyPSIyMzUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxsaW5lIHgxPSIxNzguMzgyIiB5MT0iMjk2LjY3OCIgeDI9IjE5NC4zODIiIHkyPSIzMTUuNjc4IiBzdHJva2U9IiNBREQxRkEiLz4NCjxyZWN0IHg9IjI4Mi41IiB5PSIxMTQuNSIgd2lkdGg9IjM2NyIgaGVpZ2h0PSIyNTEiIHJ4PSIyMy41IiBmaWxsPSJ3aGl0ZSIgc3Ryb2tlPSIjNUNBNEY1Ii8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTYxNiAxMjNIMzE2LjAwMUMzMDIuMTk0IDEyMyAyOTEuMDAxIDEzNC4xOTMgMjkxLjAwMSAxNDhWMzA4QzI5MS4wMDEgMzIxLjgwNyAzMDIuMTk0IDMzMyAzMTYuMDAxIDMzM0g2MTZDNjI5LjgwNyAzMzMgNjQxIDMyMS44MDcgNjQxIDMwOFYxNDhDNjQxIDEzNC4xOTMgNjI5LjgwNyAxMjMgNjE2IDEyM1pNMzE2LjAwMSAxMjJDMzAxLjY0MiAxMjIgMjkwLjAwMSAxMzMuNjQxIDI5MC4wMDEgMTQ4VjMwOEMyOTAuMDAxIDMyMi4zNTkgMzAxLjY0MiAzMzQgMzE2LjAwMSAzMzRINjE2QzYzMC4zNTkgMzM0IDY0MiAzMjIuMzU5IDY0MiAzMDhWMTQ4QzY0MiAxMzMuNjQxIDYzMC4zNTkgMTIyIDYxNiAxMjJIMzE2LjAwMVpNNjQxLjk5OSAxNDguMzgzSDI5MFYxNDcuMzgzSDY0MS45OTlWMTQ4LjM4M1oiIGZpbGw9IiMwMDc4RkYiLz4NCjxlbGxpcHNlIGN4PSIzMjIuMzk4IiBjeT0iMTM1LjY2MiIgcng9IjQuMTA2ODMiIHJ5PSI0LjI0MDE1IiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuNTciLz4NCjxlbGxpcHNlIGN4PSIzNDUuMjEyIiBjeT0iMTM1LjY2MiIgcng9IjQuMTA2ODMiIHJ5PSI0LjI0MDE1IiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuNTciLz4NCjxlbGxpcHNlIGN4PSIzNjguMDI4IiBjeT0iMTM1LjY2MiIgcng9IjQuMTA2ODMiIHJ5PSI0LjI0MDE1IiBmaWxsPSIjMDA3OEZGIiBmaWxsLW9wYWNpdHk9IjAuNTciLz4NCjxyZWN0IHg9IjMxOC4yOTEiIHk9IjE2Ni42NiIgd2lkdGg9IjE1OS43MDQiIGhlaWdodD0iMTEuMzA2NyIgcng9IjUiIGZpbGw9IiM2M0E3RjQiIGZpbGwtb3BhY2l0eT0iMC41NCIvPg0KPGxpbmUgeDE9IjMxNyIgeTE9IjIwMS41IiB4Mj0iNDc4IiB5Mj0iMjAxLjUiIHN0cm9rZT0iI0FCQ0ZGOSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8bGluZSB4MT0iMzE3IiB5MT0iMjU5LjUiIHgyPSI2MTYiIHkyPSIyNTkuNSIgc3Ryb2tlPSIjQUJDRkY5IiBzdHJva2Utd2lkdGg9IjMiLz4NCjxsaW5lIHgxPSIzMTciIHkxPSIyODUuNSIgeDI9IjYxNiIgeTI9IjI4NS41IiBzdHJva2U9IiNBQkNGRjkiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjMxNyIgeTE9IjMxMS41IiB4Mj0iNDc4IiB5Mj0iMzExLjUiIHN0cm9rZT0iI0FCQ0ZGOSIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cGF0aCBkPSJNMjk3Ljc4NyAzMTcuNzUxQzI5Ni4yNzggMzE1LjI5MyAyOTcuMTIzIDMxMS45OTEgMjk5LjYyOSAzMTAuNTUxTDYxNy43OSAxMjcuNzYyQzYyMy4yNCAxMjQuNjMgNjMwLjAxIDEyNy4zNDYgNjMxLjg1IDEzMy40MDJMNjMyLjY3NSAxMzYuMTE4QzYzMy4zNzUgMTM4LjQyMyA2MzIuMzg0IDE0MC45NDkgNjMwLjMxMSAxNDIuMTQzTDMxMy4xMjMgMzI0LjgyMkMzMDguNTU1IDMyNy40NTMgMzAyLjg1OSAzMjYuMDEyIDMwMC4xMDcgMzIxLjUyOUwyOTcuNzg3IDMxNy43NTFaIiBmaWxsPSIjRkVCNDQ2IiBmaWxsLW9wYWNpdHk9IjAuNiIvPg0KPC9zdmc+DQo=\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODAxIiBoZWlnaHQ9IjI3MCIgdmlld0JveD0iMCAwIDgwMSAyNzAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+DQo8cmVjdCB4PSIyMzAuNSIgeT0iMjQuNSIgd2lkdGg9IjM2MSIgaGVpZ2h0PSIyMDciIHJ4PSIyNC41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPHJlY3QgeD0iMjM4LjUiIHk9IjMyLjUiIHdpZHRoPSIzNDUiIGhlaWdodD0iMTY3IiByeD0iMjQuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxwYXRoIGQ9Ik0zODIuNSAyMzNWMjU0LjVDMzc0LjUgMjU2LjgzMyAzNjAuOTIzIDI2NC4yMzYgMzU2LjUgMjY3QzM1Mi41IDI2OS41IDQ2OC41IDI2Ny41IDQ2NC41IDI2N0M0NjQuNSAyNjggNDQ5LjUgMjU4IDQzNyAyNTQuNUM0MzcgMjU0LjEgNDM3IDI0MCA0MzcgMjMzIiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeTE9IjI2OC41IiB4Mj0iODAxIiB5Mj0iMjY4LjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSIxODAuNSIgeT0iMTI3LjUiIHdpZHRoPSIxMDMiIGhlaWdodD0iMTQxIiByeD0iMTUuNSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSIxODciIHk9IjEzNCIgd2lkdGg9IjkwIiBoZWlnaHQ9IjkxIiByeD0iMTAiIGZpbGw9IiMzQTk3RkYiLz4NCjxyZWN0IHg9IjE4OC41IiB5PSIxMzUuNSIgd2lkdGg9Ijg3IiBoZWlnaHQ9IjEyMSIgcng9IjUuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxyZWN0IHg9IjU2Ny41IiB5PSIxNjUuNSIgd2lkdGg9IjU0IiBoZWlnaHQ9IjEwMiIgcng9IjYuNSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSI1NzIuNSIgeT0iMTcwLjUiIHdpZHRoPSI0NCIgaGVpZ2h0PSI4OCIgcng9IjMuNSIgZmlsbD0id2hpdGUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8cmVjdCB4PSI1NzEiIHk9IjIxMiIgd2lkdGg9IjQ3IiBoZWlnaHQ9IjQ4IiByeD0iNSIgZmlsbD0iIzNBOTdGRiIvPg0KPGNpcmNsZSBjeD0iNTE1IiBjeT0iMTAxIiByPSI0NSIgZmlsbD0iIzNBOTdGRiIvPg0KPGNpcmNsZSBjeD0iMjMxLjUiIGN5PSIyNjMuNSIgcj0iMy41IiBmaWxsPSIjNUNBNEY1Ii8+DQo8Y2lyY2xlIGN4PSI1OTQiIGN5PSIyNjQiIHI9IjIiIGZpbGw9IiM1Q0E0RjUiLz4NCjxsaW5lIHgxPSIyODUiIHkxPSI2NC41IiB4Mj0iMzA0IiB5Mj0iNjQuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxsaW5lIHgxPSIzMTUiIHkxPSI2NC41IiB4Mj0iNDU1IiB5Mj0iNjQuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxsaW5lIHgxPSIzMjgiIHkxPSIxMjUuNSIgeDI9IjQ1NSIgeTI9IjEyNS41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjMyOCIgeTE9IjE1Mi41IiB4Mj0iNDU1IiB5Mj0iMTUyLjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8bGluZSB4MT0iMzI4IiB5MT0iMTc3LjUiIHgyPSIzNDciIHkyPSIxNzcuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxsaW5lIHgxPSIzNTkiIHkxPSIxNzcuNSIgeDI9IjQ1NSIgeTI9IjE3Ny41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjI4NSIgeTE9Ijk2LjUiIHgyPSI0NTUiIHkyPSI5Ni41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjU5Mi41IiB5MT0iMTYuNjE4MyIgeDI9IjYwNy4xOTciIHkyPSI4LjEzMzA3IiBzdHJva2U9IiMxRjg4RkYiIHN0cm9rZS13aWR0aD0iMiIvPg0KPGxpbmUgeDE9IjE3MS43NSIgeTE9IjEyMS42NTYiIHgyPSIxNTkuNzUiIHkyPSIxMDkuNjU2IiBzdHJva2U9IiMxRjg4RkYiIHN0cm9rZS13aWR0aD0iMiIvPg0KPGxpbmUgeDE9IjU4Ny4yMDQiIHkxPSIxNC41NzEzIiB4Mj0iNTkwLjg2NCIgeTI9IjAuOTExMDA1IiBzdHJva2U9IiMxRjg4RkYiIHN0cm9rZS13aWR0aD0iMiIvPg0KPGxpbmUgeDE9IjE3MS4xNDIiIHkxPSIxMjcuMzAzIiB4Mj0iMTU3IiB5Mj0iMTI3LjMwMyIgc3Ryb2tlPSIjMUY4OEZGIiBzdHJva2Utd2lkdGg9IjIiLz4NCjxsaW5lIHgxPSI1OTQuOTI5IiB5MT0iMjIiIHgyPSI2MDkuMDcxIiB5Mj0iMjIiIHN0cm9rZT0iIzFGODhGRiIgc3Ryb2tlLXdpZHRoPSIyIi8+DQo8bGluZSB4MT0iMTc2LjMxOSIgeTE9IjExNy45MTkiIHgyPSIxNzIuNjU4IiB5Mj0iMTA0LjI1OSIgc3Ryb2tlPSIjMUY4OEZGIiBzdHJva2Utd2lkdGg9IjIiLz4NCjxsaW5lIHgxPSI1OTkiIHkxPSIxNzkuNSIgeDI9IjYxMSIgeTI9IjE3OS41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjU4MSIgeTE9IjE5MC41IiB4Mj0iNjExIiB5Mj0iMTkwLjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8bGluZSB4MT0iNTkwIiB5MT0iMjAyLjUiIHgyPSI2MTEiIHkyPSIyMDIuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxsaW5lIHgxPSIxOTYiIHkxPSIyMzEuNSIgeDI9IjIzNSIgeTI9IjIzMS41IiBzdHJva2U9IiNCOEQxRUMiIHN0cm9rZS13aWR0aD0iMyIvPg0KPGxpbmUgeDE9IjE5NiIgeTE9IjI0OC41IiB4Mj0iMjE3IiB5Mj0iMjQ4LjUiIHN0cm9rZT0iI0I4RDFFQyIgc3Ryb2tlLXdpZHRoPSIzIi8+DQo8bGluZSB4MT0iMTk2IiB5MT0iMjM5LjUiIHgyPSIyNTQiIHkyPSIyMzkuNSIgc3Ryb2tlPSIjQjhEMUVDIiBzdHJva2Utd2lkdGg9IjMiLz4NCjxyZWN0IHg9IjUzOS4wOTgiIHk9IjgyLjczNDQiIHdpZHRoPSI1OS4yMzI5IiBoZWlnaHQ9IjciIHJ4PSIzLjUiIHRyYW5zZm9ybT0icm90YXRlKDEzNSA1MzkuMDk4IDgyLjczNDQpIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3QgeD0iNDk3LjIyIiB5PSI3OC41NDQ5IiB3aWR0aD0iNTkuMjMyOSIgaGVpZ2h0PSI3IiByeD0iMy41IiB0cmFuc2Zvcm09InJvdGF0ZSg0NSA0OTcuMjIgNzguNTQ0OSkiIGZpbGw9IndoaXRlIi8+DQo8cmVjdCB4PSIyNTUuODM0IiB5PSIxNjEuOTQ5IiB3aWR0aD0iNTkuMjMyOSIgaGVpZ2h0PSI3IiByeD0iMy41IiB0cmFuc2Zvcm09InJvdGF0ZSgxMzUgMjU1LjgzNCAxNjEuOTQ5KSIgZmlsbD0id2hpdGUiLz4NCjxyZWN0IHg9IjIxMy45NTYiIHk9IjE1Ny43NiIgd2lkdGg9IjU5LjIzMjkiIGhlaWdodD0iNyIgcng9IjMuNSIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgMjEzLjk1NiAxNTcuNzYpIiBmaWxsPSJ3aGl0ZSIvPg0KPHJlY3QgeD0iNjA5Ljk5NiIgeT0iMjI0LjA2NCIgd2lkdGg9IjM2LjY3MyIgaGVpZ2h0PSI0LjMzMzkzIiByeD0iMi4xNjY5NiIgdHJhbnNmb3JtPSJyb3RhdGUoMTM1IDYwOS45OTYgMjI0LjA2NCkiIGZpbGw9IndoaXRlIi8+DQo8cmVjdCB4PSI1ODQuMDY4IiB5PSIyMjEuNDcxIiB3aWR0aD0iMzYuNjczIiBoZWlnaHQ9IjQuMzMzOTMiIHJ4PSIyLjE2Njk2IiB0cmFuc2Zvcm09InJvdGF0ZSg0NSA1ODQuMDY4IDIyMS40NzEpIiBmaWxsPSJ3aGl0ZSIvPg0KPC9zdmc+DQo=\"","/* eslint-disable no-undef */\r\n/* eslint-disable no-array-constructor */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-plusplus */\r\n/* eslint-disable operator-assignment */\r\n/* eslint-disable camelcase */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable func-names */\r\n/**\r\n *\r\n * MD5 (Message-Digest Algorithm)\r\n * http://www.webtoolkit.info/\r\n *\r\n * */\r\n\r\n(function (exports) {\r\n const MD5 = function (string) {\r\n function RotateLeft(lValue, iShiftBits) {\r\n return (lValue << iShiftBits) | (lValue >>> (32 - iShiftBits));\r\n }\r\n\r\n function AddUnsigned(lX, lY) {\r\n /* let lX4; let lY4; let lX8; let lY8; let\r\n lResult; */\r\n const lX8 = (lX & 0x80000000);\r\n const lY8 = (lY & 0x80000000);\r\n const lX4 = (lX & 0x40000000);\r\n const lY4 = (lY & 0x40000000);\r\n const lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);\r\n if (lX4 & lY4) {\r\n return (lResult ^ 0x80000000 ^ lX8 ^ lY8);\r\n }\r\n if (lX4 | lY4) {\r\n if (lResult & 0x40000000) {\r\n return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\r\n }\r\n return (lResult ^ 0x40000000 ^ lX8 ^ lY8);\r\n }\r\n return (lResult ^ lX8 ^ lY8);\r\n }\r\n\r\n function F(x, y, z) {\r\n return (x & y) | ((~x) & z);\r\n }\r\n\r\n function G(x, y, z) {\r\n return (x & z) | (y & (~z));\r\n }\r\n\r\n function H(x, y, z) {\r\n return (x ^ y ^ z);\r\n }\r\n\r\n function I(x, y, z) {\r\n return (y ^ (x | (~z)));\r\n }\r\n\r\n function FF(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n }\r\n\r\n function GG(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n }\r\n\r\n function HH(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n }\r\n\r\n function II(a, b, c, d, x, s, ac) {\r\n a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));\r\n return AddUnsigned(RotateLeft(a, s), b);\r\n }\r\n\r\n function ConvertToWordArray(string) {\r\n let lWordCount;\r\n const lMessageLength = string.length;\r\n const lNumberOfWords_temp1 = lMessageLength + 8;\r\n const lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64;\r\n const lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16;\r\n const lWordArray = Array(lNumberOfWords - 1);\r\n let lBytePosition = 0;\r\n let lByteCount = 0;\r\n while (lByteCount < lMessageLength) {\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));\r\n lByteCount++;\r\n }\r\n lWordCount = (lByteCount - (lByteCount % 4)) / 4;\r\n lBytePosition = (lByteCount % 4) * 8;\r\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);\r\n lWordArray[lNumberOfWords - 2] = lMessageLength << 3;\r\n lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;\r\n return lWordArray;\r\n }\r\n\r\n function WordToHex(lValue) {\r\n let WordToHexValue = '';\r\n\r\n\r\n let WordToHexValue_temp = '';\r\n\r\n\r\n let lByte; let\r\n lCount;\r\n for (lCount = 0; lCount <= 3; lCount++) {\r\n lByte = (lValue >>> (lCount * 8)) & 255;\r\n WordToHexValue_temp = `0${lByte.toString(16)}`;\r\n WordToHexValue += WordToHexValue_temp.substr(WordToHexValue_temp.length - 2, 2);\r\n }\r\n return WordToHexValue;\r\n }\r\n\r\n function Utf8Encode(string) {\r\n string = string.replace(/\\r\\n/g, '\\n');\r\n let utftext = '';\r\n\r\n for (let n = 0; n < string.length; n++) {\r\n const c = string.charCodeAt(n);\r\n\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n } else if ((c > 127) && (c < 2048)) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n } else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n\r\n return utftext;\r\n }\r\n\r\n let x = Array();\r\n let k; let AA; let BB; let CC; let DD; let a; let b; let c; let\r\n d;\r\n const S11 = 7;\r\n\r\n\r\n const S12 = 12;\r\n\r\n\r\n const S13 = 17;\r\n\r\n\r\n const S14 = 22;\r\n const S21 = 5;\r\n\r\n\r\n const S22 = 9;\r\n\r\n\r\n const S23 = 14;\r\n\r\n\r\n const S24 = 20;\r\n const S31 = 4;\r\n\r\n\r\n const S32 = 11;\r\n\r\n\r\n const S33 = 16;\r\n\r\n\r\n const S34 = 23;\r\n const S41 = 6;\r\n\r\n\r\n const S42 = 10;\r\n\r\n\r\n const S43 = 15;\r\n\r\n\r\n const S44 = 21;\r\n\r\n string = Utf8Encode(string);\r\n\r\n x = ConvertToWordArray(string);\r\n\r\n a = 0x67452301;\r\n b = 0xEFCDAB89;\r\n c = 0x98BADCFE;\r\n d = 0x10325476;\r\n\r\n for (k = 0; k < x.length; k += 16) {\r\n AA = a;\r\n BB = b;\r\n CC = c;\r\n DD = d;\r\n a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);\r\n d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);\r\n c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);\r\n b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);\r\n a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);\r\n d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);\r\n c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);\r\n b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);\r\n a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);\r\n d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);\r\n c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);\r\n b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);\r\n a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);\r\n d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);\r\n c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);\r\n b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);\r\n a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);\r\n d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);\r\n c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);\r\n b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);\r\n a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);\r\n d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);\r\n c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);\r\n b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);\r\n a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);\r\n d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);\r\n c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);\r\n b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);\r\n a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);\r\n d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);\r\n c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);\r\n b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);\r\n a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);\r\n d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);\r\n c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);\r\n b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);\r\n a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);\r\n d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);\r\n c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);\r\n b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);\r\n a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);\r\n d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);\r\n c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);\r\n b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);\r\n a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);\r\n d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);\r\n c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);\r\n b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);\r\n a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);\r\n d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);\r\n c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);\r\n b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);\r\n a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);\r\n d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);\r\n c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);\r\n b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);\r\n a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);\r\n d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);\r\n c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);\r\n b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);\r\n a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);\r\n d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);\r\n c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);\r\n b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);\r\n a = AddUnsigned(a, AA);\r\n b = AddUnsigned(b, BB);\r\n c = AddUnsigned(c, CC);\r\n d = AddUnsigned(d, DD);\r\n }\r\n\r\n const temp = WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d);\r\n\r\n return temp.toLowerCase();\r\n };\r\n\r\n // Expose the class either via AMD, CommonJS or the global object\r\n if (typeof define === 'function' && define.amd) {\r\n define(() => MD5);\r\n } else if (typeof module === 'object' && module.exports) {\r\n module.exports = MD5;\r\n } else {\r\n exports.MD5 = MD5;\r\n }\r\n}(this));\r\n","\r\nconst ErrorBoundariesStyle = () => ({ container: { height: '100%' } });\r\n\r\nexport default ErrorBoundariesStyle;\r\n","import STATUS from '../../config/constants/StoreKeyStatus';\r\nimport REQUEST_TYPES from '../../config/constants/RequestTypes';\r\n\r\n\r\n/**\r\n * Concatenate the data for pagination calls\r\n * @param {*} reduxData The Store data currently\r\n * @param {*} payloadData The payload data\r\n */\r\nconst concatData = ({ data: reduxData = [] } = {}, { data: payloadData = [], ...rest } = {}, isDataReversed) => {\r\n const data = isDataReversed ? payloadData.concat(reduxData) : reduxData.concat(payloadData);\r\n return { data, ...rest };\r\n};\r\n\r\nconst getLoadingStatus = (status, requestType) => {\r\n switch (requestType) {\r\n case REQUEST_TYPES.PAGINATE:\r\n case REQUEST_TYPES.UPDATE:\r\n case REQUEST_TYPES.REFRESH:\r\n return (status >= STATUS.LOADED)\r\n ? STATUS.UPDATING\r\n : STATUS.LOADING;\r\n default:\r\n return STATUS.LOADING;\r\n }\r\n};\r\n\r\nconst processPayload = (payload = {}, status, data, requestType = REQUEST_TYPES.INIT, isDataReversed, api) => {\r\n let localPayload = Object.assign({}, payload);\r\n if (localPayload) {\r\n const { data: payloadData = {}, status: payloadStatus = STATUS.UNLOADED } = localPayload;\r\n const { body: { filter, sort } = {} } = api;\r\n localPayload = { ...localPayload, filter, sort };\r\n if (payloadStatus === STATUS.INVALID) {\r\n localPayload.data = {};\r\n localPayload.status = payloadStatus;\r\n return localPayload;\r\n } if (payloadStatus === STATUS.ERROR || payloadStatus === STATUS.PAGINATE_ERROR || payloadStatus === STATUS.TOKEN_EXPIRED) {\r\n localPayload.data = data;\r\n localPayload.status = payloadStatus;\r\n return localPayload;\r\n }\r\n switch (requestType) {\r\n // TODO: Handle UPDATE case\r\n // TODO: Handle Delete Flow\r\n\r\n case REQUEST_TYPES.INIT:\r\n case REQUEST_TYPES.REFRESH:\r\n localPayload.data = payloadData;\r\n localPayload.status = STATUS.LOADED;\r\n break;\r\n case REQUEST_TYPES.PAGINATE:\r\n localPayload.data = concatData(data, payloadData, isDataReversed);\r\n localPayload.status = status > STATUS.LOADED ? STATUS.UPDATED : STATUS.LOADED;\r\n break;\r\n case REQUEST_TYPES.UPDATE:\r\n localPayload.data = data; // Retain state data\r\n localPayload.status = status;\r\n break;\r\n default:\r\n localPayload.data = data;\r\n localPayload.status = status;\r\n }\r\n }\r\n return localPayload;\r\n};\r\n\r\n\r\nconst processStorePayload = (requestType = REQUEST_TYPES.INIT, state, status, data, payload, keys, isDataReversed,\r\n api) => (\r\n (Array.isArray(keys) && keys.length) ? keys.reduce((processedData, key) => {\r\n const { data: keyData = {}, status: keyStatus = STATUS.UNLOADED } = state[key] || {};\r\n const singlePayload = payload[key];\r\n return {\r\n ...processedData,\r\n [key]: processPayload(singlePayload, keyStatus, keyData, requestType, isDataReversed, api),\r\n };\r\n }, {}) : processPayload(payload, status, data, requestType, isDataReversed, api));\r\n\r\n\r\nconst getLoadingData = (requestType, state, keys) => (\r\n keys.reduce((newState, key) => {\r\n const { data = {}, status = STATUS.UNLOADED } = state[key] || {};\r\n return (status > STATUS.INVALID ? {\r\n ...newState,\r\n [key]: {\r\n data,\r\n status: getLoadingStatus(status, requestType),\r\n },\r\n } : newState);\r\n }, state));\r\n\r\nconst reducer = (\r\n state = {},\r\n action,\r\n) => {\r\n const {\r\n type = '',\r\n storeKey = '',\r\n payload,\r\n requestType = REQUEST_TYPES.INIT,\r\n keys = [],\r\n isDataReversed,\r\n api = {},\r\n } = action;\r\n const [, method] = type.split('_');\r\n const actionKey = storeKey || '';\r\n const { data = {}, status = STATUS.UNLOADED } = state[storeKey] || {};\r\n const newState = {};\r\n\r\n const processedPayload = processStorePayload(requestType, state, status, data, payload, keys, isDataReversed, api);\r\n\r\n switch (type) {\r\n case 'permission_update':\r\n case 'currentFacility_update': {\r\n const { userProfile, facility, permissionRoles } = state;\r\n return {\r\n userProfile,\r\n facility,\r\n permissionRoles,\r\n [storeKey]: processedPayload,\r\n };\r\n }\r\n case 'timezone_read': {\r\n return state;\r\n }\r\n case `${actionKey}_clear`:\r\n return {\r\n ...state,\r\n [storeKey]: {},\r\n };\r\n case 'multikeys_clear':\r\n keys.forEach((key) => {\r\n newState[key] = {};\r\n });\r\n return {\r\n ...state,\r\n ...newState,\r\n };\r\n case 'config_read_loading':\r\n return getLoadingData(requestType, state, keys);\r\n case 'facility_read':\r\n case 'config_read':\r\n return {\r\n ...state,\r\n ...processedPayload,\r\n };\r\n\r\n case `${actionKey}_${method}`:\r\n return {\r\n ...state,\r\n [storeKey]: processedPayload,\r\n };\r\n case `${actionKey}_${method}_loading`:\r\n return getLoadingData(requestType, state, [storeKey]);\r\n case 'clear_store':\r\n return {};\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default reducer;\r\n","const loaderStyle = theme => ({\r\n loader: {\r\n ...theme.globalClasses.deactivatedOverlay.style,\r\n position: 'absolute',\r\n backgroundColor: `${theme.palette.common.white}D9`,\r\n opacity: 1,\r\n },\r\n});\r\n\r\nexport default loaderStyle;\r\n","import Loadable from 'react-loadable';\r\nimport { Grid, Loader } from 'Generic/componentlibrary/components/Components';\r\n\r\nconst loading = () =>
;\r\n\r\nconst loader = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst HomePage = Loadable({\r\n loader: () => import('Public/containers/homepage/HomePage' /* webpackChunkName: \"homepage\" */),\r\n loading,\r\n});\r\nconst Dashboard = Loadable({\r\n loader: () => import('Commons/components/business/dashboard/Dashboard' /* webpackChunkName: \"dashboard\" */),\r\n loading,\r\n});\r\nconst Header = Loadable({\r\n loader:\r\n () => import('External/containers/dashboard/widgets/header/components/Header' /* webpackChunkName: \"header\" */),\r\n loading,\r\n});\r\nconst DailySummary = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummary' /* webpackChunkName: \"daily-summary\" */),\r\n loading,\r\n});\r\nconst RentAssessmentHistory = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummaryList' /* webpackChunkName: \"rent-assessment-history\" */),\r\n loading,\r\n});\r\nconst AutoPaymentHistory = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummaryList' /* webpackChunkName: \"auto-payment-history\" */),\r\n loading,\r\n});\r\n\r\nconst AutoInvoicingHistory = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummaryList' /* webpackChunkName: \"auto-invoicing-history\" */),\r\n loading,\r\n});\r\n\r\nconst RentAdjustmentSummary = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummaryList' /* webpackChunkName: \"rent-adjustment-summary\" */),\r\n loading,\r\n});\r\nconst DelinquencySummary = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/DailySummaryList' /* webpackChunkName: \"delinquency-summary\" */),\r\n loading,\r\n});\r\nconst TaskSummary = Loadable({\r\n loader: () => import('Internal/containers/dailysummary/list/components/TaskSummary' /* webpackChunkName: \"task-summary\" */),\r\n loading,\r\n});\r\nconst SavedDocumentsList = Loadable({\r\n loader: () => import('Internal/containers/savedDocuments/list/components/SavedDocumentsList' /* webpackChunkName: \"saved-documents-list\" */),\r\n loading,\r\n});\r\nconst ScheduleList = Loadable({\r\n loader: () => import('Internal/containers/schedule/list/components/ScheduleList' /* webpackChunkName: \"schedule-list\" */),\r\n loading,\r\n});\r\nconst AsyncTaskList = Loadable({\r\n loader: () => import('Internal/containers/asyncTasks/list/components/AsyncTaskList' /* webpackChunkName: \"async-task-list\" */),\r\n loading,\r\n});\r\nconst HeaderInt = Loadable({\r\n loader: () => import('Internal/containers/dashboard/widgets/header/components/Header' /* webpackChunkName: \"header-int\" */),\r\n loading,\r\n});\r\nconst Main = Loadable({\r\n loader: () => import('External/containers/dashboard/widgets/main/components/Main' /* webpackChunkName: \"Main\" */),\r\n loading,\r\n});\r\nconst MainSettings = Loadable({\r\n loader: () => import('External/containers/dashboardSettings/widgets/main/components/Main' /* webpackChunkName: \"MainSettings\" */),\r\n loading,\r\n});\r\nconst MainInt = Loadable({\r\n loader: () => import('Internal/containers/dashboard/widgets/main/components/Main' /* webpackChunkName: \"MainInt\" */),\r\n loading,\r\n});\r\nconst SmartList = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"smart-list\" */),\r\n loading,\r\n});\r\nconst DelinquencyOverview = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"delinquency-overview\" */),\r\n loading,\r\n});\r\n\r\nconst LateEventsTracking = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"late-events-tracking\" */),\r\n loading,\r\n});\r\n\r\nconst LockoutEventsTracking = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"lockout-events-tracking\" */),\r\n loading,\r\n});\r\n\r\nconst ScheduledEventsTracking = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"scheduled-events-tracking\" */),\r\n loading,\r\n});\r\n\r\nconst WrongEntriesTracking = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"wrong-entry-tracking\" */),\r\n loading,\r\n});\r\n\r\nconst JournalConfigurationChanges = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"journal-configuration-changes\" */),\r\n loading,\r\n});\r\n\r\nconst JournalLockoutEvents = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"journal-lockout-events\" */),\r\n loading,\r\n});\r\n\r\nconst JournalUserRoles = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"journal-user-roles\" */),\r\n loading,\r\n});\r\n\r\nconst JournalUserManagements = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"journal-user-managements\" */),\r\n loading,\r\n});\r\n\r\nconst JournalLateEvents = Loadable({\r\n loader: () => import('../components/business/smartlist/components/SmartList' /* webpackChunkName: \"journal-late-events\" */),\r\n loading,\r\n});\r\n\r\nconst FacilityForm = Loadable({\r\n loader: () => import('Internal/containers/facility/form/FacilityForm' /* webpackChunkName: \"facility-form\" */),\r\n loading,\r\n});\r\nconst AccountForm = Loadable({\r\n loader: () => import('Internal/containers/account/form/AccountForm' /* webpackChunkName: \"-account-form\" */),\r\n loading,\r\n});\r\nconst UserForm = Loadable({\r\n loader: () => import('Internal/containers/user/form/UserForm' /* webpackChunkName: \"user-form\" */),\r\n loading,\r\n});\r\nconst UserList = Loadable({\r\n loader: () => import('Internal/containers/user/list/components/UserList' /* webpackChunkName: \"user-form\" */),\r\n loading,\r\n});\r\nconst Logout = Loadable({\r\n loader: () => import('../components/business/logout/components/Logout' /* webpackChunkName: \"log-out\" */),\r\n loading,\r\n});\r\nconst UnitForm = Loadable({\r\n loader: () => import('../../external/containers/unit/form/components/UnitForm' /* webpackChunkName: \"unit-form\" */),\r\n loading,\r\n});\r\nconst SideBar = Loadable({\r\n loader: () => import('../components/business/sidebar/components/SideBar' /* webpackChunkName: \"side-bar\" */),\r\n loading,\r\n});\r\nconst TenantForm = Loadable({\r\n loader: () => import('../../external/containers/tenant/form/components/TenantForm' /* webpackChunkName: \"create-tenant-form\" */),\r\n loading: loader,\r\n});\r\nconst TenantList = Loadable({\r\n loader: () => import('../../external/containers/tenant/list/components/TenantList' /* webpackChunkName: \"tenant-list\" */),\r\n loading: loader,\r\n});\r\nconst LeadForm = Loadable({\r\n loader: () => import('../../external/containers/lead/form/components/LeadForm' /* webpackChunkName: \"lead-form\" */),\r\n loading,\r\n});\r\nconst VendorForm = Loadable({\r\n loader: () => import('../../external/containers/vendor/form/components/VendorForm' /* webpackChunkName: \"vendor-form\" */),\r\n loading: loader,\r\n});\r\nconst InventoryAudit = Loadable({\r\n loader: () => import('../../external/containers/inventory/audit/components/InventoryAudit' /* webpackChunkName: \"inventory-audit\" */),\r\n loading: loader,\r\n});\r\nconst InventoryForm = Loadable({\r\n loader: () => import('../../external/containers/inventory/form/components/InventoryForm' /* webpackChunkName: \"inventory-form\" */),\r\n loading: loader,\r\n});\r\nconst UnitListFormatter = Loadable({\r\n loader: () => import('../../external/containers/unit/list/components/UnitListFormatters' /* webpackChunkName: \"unit-list-formatter\" */),\r\n loading,\r\n});\r\nconst AutoSuggest = Loadable({\r\n loader: () => import('Commons/components/business/autosuggest/components/AutoSuggest' /* webpackChunkName: \"autosuggest\" */),\r\n loading,\r\n});\r\nconst MoveIn = Loadable({\r\n loader: () => import('External/containers/createoccupancy/Wrapper' /* webpackChunkName: \"movein\" */),\r\n loading,\r\n});\r\n\r\nconst MoveOut = Loadable({\r\n loader: () => import('../../external/containers/moveout/MoveOut' /* webpackChunkName: \"moveout\" */),\r\n loading,\r\n});\r\n\r\nconst UserFormExt = Loadable({\r\n loader: () => import('../components/business/user/form/UserForm' /* webpackChunkName: \"user-form-ext\" */),\r\n loading,\r\n});\r\n\r\nconst TenantFilter = Loadable({\r\n loader: () => import('../components/business/filterOverlay/components/FilterOverlay' /* webpackChunkName: \"tenant-filters\" */),\r\n loading,\r\n});\r\n\r\nconst Payment = Loadable({\r\n loader: () => import('../components/business/payment/Payment' /* webpackChunkName: \"payment\" */),\r\n loading,\r\n});\r\n\r\nconst UnitFilter = Loadable({\r\n loader: () => import('../components/business/filterOverlay/components/FilterOverlay' /* webpackChunkName: \"unit-filters\" */),\r\n loading,\r\n});\r\n\r\nconst Configuration = Loadable({\r\n loader: () => import('External/containers/configuration/Configuration' /* webpackChunkName: \"configuration\" */),\r\n loading,\r\n});\r\n\r\nconst FacilityGeneral = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/facilityGeneral/FacilityGeneral' /* webpackChunkName: \"facility-general\" */),\r\n loading,\r\n});\r\n\r\nconst FinancialGeneral = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/FinancialGeneral' /* webpackChunkName: \"financial-general\" */),\r\n loading,\r\n});\r\n\r\nconst FinancialExport = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/FinancialExport' /* webpackChunkName: \"financial-export\" */),\r\n loading,\r\n});\r\n\r\nconst CardProcessor = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/cardprocessor/CardProcessor' /* webpackChunkName: \"card-processor\" */),\r\n loading,\r\n});\r\n\r\nconst GateConfiguration = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/gates/GateConfiguration' /* webpackChunkName: \"gates\" */),\r\n loading,\r\n});\r\n\r\nconst CustomerGeneral = Loadable({\r\n loader: () => import('External/containers/customerConfiguration/components/CustomerGeneral' /* webpackChunkName: \"customer-general\" */),\r\n loading,\r\n});\r\n\r\nconst RentalGeneral = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/RentalGeneral' /* webpackChunkName: \"rental-general\" */),\r\n loading,\r\n});\r\n\r\nconst InsuranceConfiguration = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/insurance/InsuranceConfig' /* webpackChunkName: \"insurance\" */),\r\n loading,\r\n});\r\n\r\nconst UnitTypeForm = Loadable({\r\n loader: () => import('External/containers/unitConfiguration/components/UnitTypeForm' /* webpackChunkName: \"unit-type-form\" */),\r\n loading,\r\n});\r\n\r\nconst LateEventForm = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/lateEvent/LateEventForm' /* webpackChunkName: \"late-event-form\" */),\r\n loading,\r\n});\r\n\r\nconst MoveInConfiguration = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/MoveInConfiguration' /* webpackChunkName: \"move-in-configuration\" */),\r\n loading,\r\n});\r\n\r\nconst MoveOutConfiguration = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/MoveOutConfiguration' /* webpackChunkName: \"move-out-configuration\" */),\r\n loading,\r\n});\r\n\r\nconst ReservationConfiguration = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/ReservationConfiguration' /* webpackChunkName: \"reservation-configuration\" */),\r\n loading,\r\n});\r\n\r\nconst PromoPlanForm = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/PromoPlan/PromoPlanForm' /* webpackChunkName: \"promo-plan-configuration-form\" */),\r\n loading,\r\n});\r\n\r\nconst ChargeCategory = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/ChargeCategory' /* webpackChunkName: \"charge-category\" */),\r\n loading,\r\n});\r\n\r\nconst RetailSaleConfiguration = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/RetailSale' /* webpackChunkName: \"retail-sale\" */),\r\n loading,\r\n});\r\n\r\nconst BevColorSetup = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/bevColorSetup/BevColorSetup' /* webpackChunkName: \"bev-color-setup\" */),\r\n loading,\r\n});\r\n\r\nconst MaintenanceEventForm = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/MaintenanceEventForm' /* webpackChunkName: \"maintenance-event-form\" */),\r\n loading,\r\n});\r\n\r\nconst PaymentMethod = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/PaymentMethod' /* webpackChunkName: \"payment-method\" */),\r\n loading,\r\n});\r\n\r\nconst TaxCode = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/TaxCode' /* webpackChunkName: \"tax-code\" */),\r\n loading,\r\n});\r\n\r\nconst TaxExemptCategory = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/TaxExemptCategory' /* webpackChunkName: \"tax-exempt-category\" */),\r\n loading,\r\n});\r\n\r\nconst PaymentConfiguration = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/PaymentConfiguration' /* webpackChunkName: \"payment-configuration\" */),\r\n loading,\r\n});\r\n\r\nconst ChargeCategoryMapping = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/ChargeCategoryMapping' /* webpackChunkName: \"charge-category-mapping\" */),\r\n loading,\r\n});\r\nconst TenantChangeTracking = Loadable({\r\n loader: () => import('External/containers/customerConfiguration/components/TenantChangeTracking' /* webpackChunkName: \"tenant-change-tracking\" */),\r\n loading,\r\n});\r\n\r\nconst TenantAccountType = Loadable({\r\n loader: () => import('External/containers/customerConfiguration/components/TenantAccountType' /* webpackChunkName: \"tenant-account-type\" */),\r\n loading,\r\n});\r\n\r\nconst LetterConfiguration = Loadable({\r\n loader: () => import('External/containers/customerengagement/components/LetterConfiguration' /* webpackChunkName: \"letter-configuration\" */),\r\n loading,\r\n});\r\n\r\nconst ViolationConfiguration = Loadable({\r\n loader: () => import('External/containers/violation/components/ViolationConfiguration' /* webpackChunkName: \"violation-configuration\" */),\r\n loading,\r\n});\r\n\r\n\r\nconst TenantSections = Loadable({\r\n loader: () => import('External/containers/customerConfiguration/components/TenantSections' /* webpackChunkName: \"tenant-sections\" */),\r\n loading,\r\n});\r\nconst SearchableDropdown = Loadable({\r\n loader: () => import('Generic/dropdown/components/SearchableDropdown' /* webpackChunkName: \"searchable-dropdown\" */),\r\n loading,\r\n});\r\n\r\n\r\nconst WaitingList = Loadable({\r\n loader: () => import('External/containers/waiting/list/components/WaitingList' /* webpackChunkName: \"waiting-list\" */),\r\n loading,\r\n});\r\n\r\nconst ReservationAction = Loadable({\r\n loader: () => import('../../external/containers/reservation/list/config/Formatters' /* webpackChunkName: \"reservation-action-formatter\" */),\r\n render(loaded, props) {\r\n const Component = loaded.Action;\r\n return ;\r\n },\r\n loading,\r\n});\r\n\r\nconst waitingListAction = Loadable({\r\n loader: () => import('../../external/containers/waiting/list/config/Formatters' /* webpackChunkName: \"waiting-list-action-formatter\" */),\r\n render(loaded, props) {\r\n const Component = loaded.Action;\r\n return ;\r\n },\r\n loading,\r\n});\r\n// NOTE: ManualChargesForm is temporary for financial List\r\nconst ManualChargesForm = Loadable({\r\n loader: () => import('../../external/containers/financials/form/components/ManualChargeForm' /* webpackChuckName: \"manual-charge-form\" */),\r\n loading,\r\n});\r\n// NOTE: ManualCharge is temporary for financial List\r\nconst ManualCharge = Loadable({\r\n loader: () => import('../../external/containers/financials/form/components/ManualCharge' /* webpackChunkName: \"manual-charge\" */),\r\n loading,\r\n});\r\n\r\nconst ViolationForm = Loadable({\r\n loader: () => import('../../external/containers/violation/components/ViolationForm' /* webpackChuckName: \"violation-form\" */),\r\n loading,\r\n});\r\n\r\nconst UserProfile = Loadable({\r\n loader: () => import('Commons/components/business/userProfile/components/UserProfile.js' /* webpackChuckName: \"user-profile\" */),\r\n loading,\r\n});\r\n\r\nconst Bev = Loadable({\r\n loader: () => import('Commons/components/business/bev/Bev' /* webpackChuckName: \"bev\" */),\r\n loading,\r\n});\r\n\r\nconst PointOfSale = Loadable({\r\n loader: () => import('External/containers/pointOfSale/components/PointOfSale.js' /* webpackChuckName: \"user-profile\" */),\r\n loading,\r\n});\r\n\r\nconst RetailSaleReturns = Loadable({\r\n loader: () => import('External/containers/retailSaleReturns/Returns.js' /* webpackChuckName: \"retail-sale-returns\" */),\r\n loading,\r\n});\r\n\r\nconst Operations = Loadable({\r\n loader: () => import('External/containers/operations/components/Operations.js' /* webpackChuckName: \"operations\" */),\r\n loading,\r\n});\r\n\r\nconst UserRole = Loadable({\r\n loader: () => import('../../external/containers/userrole/UserRole' /* webpackChunkName: \"user-role\" */),\r\n loading,\r\n});\r\n\r\nconst ReportWorkCenter = Loadable({\r\n loader: () => import('External/containers/report/components/ReportWorkCenter' /* webpackChunkName: \"report-wc\" */),\r\n loading,\r\n});\r\n\r\nconst InventoryList = Loadable({\r\n loader: () => import('External/containers/inventory/list/components/InventoryList' /* webpackChunkName: \"inventory-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst VendorList = Loadable({\r\n loader: () => import('External/containers/vendor/list/components/VendorList' /* webpackChunkName: \"vendor-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst InventoryBulkRestock = Loadable({\r\n loader: () => import('External/containers/inventory/restock/components/InventoryBulkRestock' /* webpackChunkName: \"inventory-bulk-restock\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst InventoryIndividualRestock = Loadable({\r\n loader: () => import('External/containers/inventory/restock/components/InventoryIndividualRestock' /* webpackChunkName: \"inventory-individual-restock\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantInvalidAccessCodeList = Loadable({\r\n loader: () => import('External/containers/wrappedGateAccessCodeComponentsForPendingTasks/TenantInvalidAccessCodeList' /* webpackChunkName: \"tenant-invalid-access-code-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UnitInvalidAccessCodeList = Loadable({\r\n loader: () => import('External/containers/wrappedGateAccessCodeComponentsForPendingTasks/UnitInvalidAccessCodeList' /* webpackChunkName: \"unit-invalid-access-code-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ViewTenant = Loadable({\r\n loader: () => import('../../external/containers/viewtenant/ViewTenant' /* webpackChunkName: \"view-tenant\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantAlerts = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/crmcomponents/TenantAlerts' /* webpackChunkName: \"tenant-alerts\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Documentation = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/headerComponents/Documentation' /* webpackChunkName: \"view-tenant\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UnpaidBills = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/crmcomponents/UnpaidBills' /* webpackChunkName: \"unpaid-bills\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ReservationCRM = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/crmcomponents/Reservation' /* webpackChunkName: \"reservation-crm\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ContactLog = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/crmcomponents/ContactLog' /* webpackChunkName: \"contact-log\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LedgerReview = Loadable({\r\n loader: () => import('../../external/containers/ledgerreview/LedgerReview' /* webpackChunkName: \"ledger-review\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ArActions = Loadable({\r\n loader: () => import('../../external/containers/ledgerreview/formatters/Formatters' /* webpackChunkName: \"ar-actions\" */),\r\n render(loaded, props) {\r\n const Component = loaded.ArActions;\r\n return ;\r\n },\r\n loading,\r\n});\r\n\r\nconst AchOperations = Loadable({\r\n loader: () => import('External/containers/operations/components/achOperations/components/AchOperations' /* webpackChunkName: \"ach-operations\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LetterUtil = Loadable({\r\n loader: () => import('External/containers/operations/components/letterUtil/components/LetterUtil' /* webpackChunkName: \"letter-util\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ManualLateEvent = Loadable({\r\n loader: () => import('External/containers/operations/components/lateEvent/ManualLateEvent' /* webpackChunkName: \"manual-late-event\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst DepositLog = Loadable({\r\n loader: () => import('External/containers/operations/components/depositLog/DepositLog' /* webpackChunkName: \"deposit-log\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst DepositUpdate = Loadable({\r\n loader: () => import('External/containers/operations/components/depositUpdate/DepositUpdate' /* webpackChunkName: \"deposit-update\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UnitDepositUpdate = Loadable({\r\n loader: () => import('External/containers/operations/components/depositUpdate/components/UnitDepositUpdate' /* webpackChunkName: \"unit-deposit-update\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantDepositUpdate = Loadable({\r\n loader: () => import('External/containers/operations/components/depositUpdate/components/TenantDepositUpdate' /* webpackChunkName: \"tenant-deposit-update\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantWebsites = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/tenantFacingWebsites/components/TenantFacingWebsites' /* webpackChunkName: \"tenant-facing-website\" */),\r\n loading,\r\n});\r\n\r\nconst DeliveryMethodDropdown = Loadable({\r\n loader: () => import('Generic/deliveryMethodDropdown/components/DeliveryMethodDropdown' /* webpackChunkName: \"delivery-method-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LeaseGeneral = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/lease/components/LeaseGeneral' /* webpackChunkName: \"lease-general\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LeaseStyleForm = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/lease/components/LeaseStyleForm' /* webpackChunkName: \"lease-style-form\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst PendingTasks = Loadable({\r\n loader: () => import('External/containers/pendingTasks/PendingTasks' /* webpackChunkName: \"pending-tasks\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ExternalDashboard = Loadable({\r\n loader: () => import('External/containers/externalDashboard/ExternalDashboard' /* webpackChunkName: \"external-dashboard\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Docs = Loadable({\r\n loader: () => import('External/containers/documentation/Documentation' /* webpackChunkName: \"docs\" */),\r\n loading: () =>
,\r\n});\r\nconst PendingOverlockUnlockList = Loadable({\r\n loader: () => import('External/containers/pendingOverlockUnlock/list/components/PendingOverlockUnlockList' /* webpackChunkName: \"pending-tasks\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst WrappedInventoryAudit = Loadable({\r\n loader: () => import('External/containers/wrappedInventoryComponentsForPendingTasks/components/wrappedInventoryAudit/WrappedInventoryAudit' /* webpackChunkName: \"pending-tasks\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst WrappedInventoryBulkRestock = Loadable({\r\n loader: () => import('External/containers/wrappedInventoryComponentsForPendingTasks/components/WrappedInventoryBulkRestock/WrappedInventoryBulkRestock' /* webpackChunkName: \"pending-tasks\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Invoicing = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/Invoicing' /* webpackChunkName: \"invoicing-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Conversations = Loadable({\r\n loader: () => import('External/containers/conversation/Conversation' /* webpackChunkName: \"conversations\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Ach = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/Ach' /* webpackChunkName: \"ach-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TransferConfiguration = Loadable({\r\n loader: () => import('External/containers/rentalConfiguration/components/TransferConfiguration' /* webpackChunkName: \"transfer-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst AllBatches = Loadable({\r\n loader: () => import('External/containers/operations/components/achOperations/components/AllBatches' /* webpackChunkName: \"all-batch\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst CurrentBatch = Loadable({\r\n loader: () => import('External/containers/operations/components/achOperations/components/CurrentBatch' /* webpackChunkName: \"current-batch\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TextList = Loadable({\r\n loader: () => import('External/containers/conversation/components/TextList' /* webpackChunkName: \"text-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst EmailList = Loadable({\r\n loader: () => import('External/containers/conversation/components/EmailList' /* webpackChunkName: \"text-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TextOrEmailSelection = Loadable({\r\n loader: () => import('External/containers/conversation/components/TextOrEmailSelection' /* webpackChunkName: \"text-or-email\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ListOrCompose = Loadable({\r\n loader: () => import('External/containers/conversation/components/ListOrCompose' /* webpackChunkName: \"list-or-compose\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst SyrasoftUserRoles = Loadable({\r\n loader: () => import('Internal/containers/syrasoftUserRoles/SyrasoftUserRoles' /* webpackChunkName: \"syrasoft-user-roles\" */),\r\n loading,\r\n});\r\n\r\nconst AccountManagement = Loadable({\r\n loader: () => import('Internal/containers/accountManagement/AccountManagement' /* webpackChunkName: \"account-management\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst FacilityView = Loadable({\r\n loader: () => import('Internal/containers/accountManagement/components/facilityView/FacilityView' /* webpackChunkName: \"facility-view\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UserSetup = Loadable({\r\n loader: () => import('Internal/containers/accountManagement/components/userSetup/UserSetup' /* webpackChunkName: \"user-setup\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UserSetupAction = Loadable({\r\n loader: () => import('Internal/containers/accountManagement/components/userSetup/UserSetupAction' /* webpackChunkName: \"user-edit\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst FacilityList = Loadable({\r\n loader: () => import('Internal/containers/facility/list/components/FacilityList' /* webpackChunkName: \"facility-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst AccountList = Loadable({\r\n loader: () => import('Internal/containers/account/list/components/AccountList' /* webpackChunkName: \"account-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UnitTransfer = Loadable({\r\n loader: () => import('External/containers/unitTransfer/UnitTransfer' /* webpackChunkName: \"unit-transfer\" */),\r\n loading,\r\n});\r\n\r\nconst BusinessGroupManagement = Loadable({\r\n loader: () => import('Internal/containers/accountManagement/components/businessGroupManagement/BusinessGroupManagement' /* webpackChunkName: \"business-group-management\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst RentAdjustmentList = Loadable({\r\n loader: () => import('External/containers/operations/components/rentAdjustment/components/list/RentAdjustmentList' /* webpackChunkName: \"rent-adjustment-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst AutoRentAdjustment = Loadable({\r\n loader: () => import('External/containers/operations/components/rentAdjustment/components/auto/AutoRentAdjustment' /* webpackChunkName: \"auto-rent-adjustment\" */),\r\n loading,\r\n});\r\n\r\nconst ViewRentAdjustment = Loadable({\r\n loader: () => import('External/containers/operations/components/rentAdjustment/components/view/ViewRentAdjustment' /* webpackChunkName: \"rent-adjustment-view\" */),\r\n loading,\r\n});\r\n\r\nconst ManualRentAdjustment = Loadable({\r\n loader: () => import('External/containers/operations/components/rentAdjustment/components/manual/ManualRentAdjustment' /* webpackChunkName: \"manual-rent-adjustment\" */),\r\n loading,\r\n});\r\n\r\nconst RateHistory = Loadable({\r\n loader: () => import('External/containers/unit/form/components/rateHistory/RateHistory' /* webpackChunkName: \"rate-history\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LateEvents = Loadable({\r\n loader: () => import('External/containers/unit/form/components/lateEvents/LateEvents' /* webpackChunkName: \"late-events\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst RateHistoryAction = Loadable({\r\n loader: () => import('External/containers/unit/form/components/rateHistory/RateHistoryFormatters' /* webpackChunkName: \"rate-history-action\" */),\r\n render(loaded, props) {\r\n const Component = loaded.RateHistoryAction;\r\n return ;\r\n },\r\n loading,\r\n});\r\n\r\nconst InternalAppConfiguration = Loadable({\r\n loader: () => import('External/containers/internalappconfiguration/components/InternalApp' /* webpackChunkName: \"internal-app-configuration\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst AutomaticCreditCardDeclines = Loadable({\r\n loader: () => import('External/containers/automaticCreditCardDeclines/list/components/AutomaticCreditCardDeclines' /* webpackChunkName: \"pending-tasks\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst FailedReturns = Loadable({\r\n loader: () => import('External/containers/retailSaleReturns/components/FailedReturns' /* webpackChunkName: \"failed-returns\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantChanges = Loadable({\r\n loader: () => import('External/containers/pendingTasks/components/externalActivity/TenantChanges/TenantChanges' /* webpackChunkName: \"tenant-changes\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst OtherExternalActivity = Loadable({\r\n loader: () => import('External/containers/pendingTasks//components/externalActivity/components/OtherExternalActivity/OtherExternalActivity' /* webpackChunkName: \"other-external-activities\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantEmailChanges = Loadable({\r\n loader: () => import('External/containers/pendingTasks/components/externalActivity/TenantChanges/EmailOrPhoneList' /* webpackChunkName: \"tenant-email-changes\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantDeposit = Loadable({\r\n loader: () => import('External/containers/viewtenant/components/crmcomponents/TenantDeposit' /* webpackChunkName: \"tenant-deposit\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantPhoneChanges = Loadable({\r\n loader: () => import('External/containers/pendingTasks/components/externalActivity/TenantChanges/EmailOrPhoneList' /* webpackChunkName: \"tenant-phone-changes\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantAddressChanges = Loadable({\r\n loader: () => import('External/containers/pendingTasks/components/externalActivity/TenantChanges/AddressOrAlternateContact' /* webpackChunkName: \"tenant-address-changes\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TenantAlternateContactChanges = Loadable({\r\n loader: () => import('External/containers/pendingTasks/components/externalActivity/TenantChanges/AddressOrAlternateContact' /* webpackChunkName: \"tenant-alternate-contact-changes\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst GenerateLeaseAgreement = Loadable({\r\n loader: () => import('External/containers/generateLeaseAgreement/GenerateLeaseAgreement' /* webpackChunkName: \"generate-lease-agreement\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Sandbox = Loadable({\r\n loader: () => import('Internal/containers/sandbox/Sandbox' /* webpackChunkName: \"sandbox\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Onboarding = Loadable({\r\n loader: () => import('External/containers/onboarding/Onboarding' /* webpackChunkName: \"onboarding-main\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst FacilitySetup = Loadable({\r\n loader: () => import('External/containers/onboarding/components/facility/FacilitySetup' /* webpackChunkName: \"facility-setup-onboarding\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst OccupancySetup = Loadable({\r\n loader: () => import('External/containers/onboarding/components/occupancy/OccupancySetup' /* webpackChunkName: \"occupancy-setup\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst TaxCodeSetup = Loadable({\r\n loader: () => import('External/containers/onboarding/components/taxCodeSetup/TaxCodeSetup' /* webpackChunkName: \"tax-code-setup\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Quickbooks = Loadable({\r\n loader: () => import('External/containers/financialConfiguration/components/Quickbooks' /* webpackChunkName: \"quickbooks-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst MigrationList = Loadable({\r\n loader: () => import('Internal/containers/migration/List/components/MigrationList' /* webpackChunkName: \"migration-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst MigrationForm = Loadable({\r\n loader: () => import('Internal/containers/migration/form/components/MigrationForm' /* webpackChunkName: \"migration-form\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst MigrationServerModal = Loadable({\r\n loader: () => import('Internal/containers/migration/components/MigrationServerModal' /* webpackChunkName: \"migration-server-modal\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst MigrationDetails = Loadable({\r\n loader: () => import('Internal/containers/migration/List/components/MigrationDetails' /* webpackChunkName: \"migration-details\" */),\r\n loading: () =>
,\r\n});\r\nconst AccountFacilityForm = Loadable({\r\n loader: () => import('Internal/containers/facility/form/AccountFacilityForm' /* webpackChunkName: \"account-facility-form\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst VehicleConfig = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/vehicles/VehicleConfig' /* webpackChunkName: \"vehicle-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst VehicleList = Loadable({\r\n loader: () => import('External/containers/vehicle/list/components/VehicleList' /* webpackChunkName: \"vehicle-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst WalkAroundConfig = Loadable({\r\n loader: () => import('External/containers/facilityConfiguration/components/walkAround/WalkAroundConfig' /* webpackChunkName: \"walk-around-config\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst WalkAround = Loadable({\r\n loader: () => import('External/containers/walkAround/components/WalkAround' /* webpackChunkName: \"walk-around\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst BatchPayment = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/BatchPayment' /* webpackChunkName: \"batch-payment\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst FinancialExportOperation = Loadable({\r\n loader: () => import('External/containers/operations/components/financialExport/components/FinancialExportOperation' /* webpackChunkName: \"financial-export-operation\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst BatchList = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/BatchList' /* webpackChunkName: \"credit-card-batches\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst BatchDetails = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/BatchDetails' /* webpackChunkName: \"batch-details\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst BatchForm = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/BatchForm' /* webpackChunkName: \"create-credit-card-batch\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LetterTemplateList = Loadable({\r\n loader: () => import('External/containers/customerengagement/components/LetterTemplateList' /* webpackChunkName: \"letter-template-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst ReservationList = Loadable({\r\n loader: () => import('External/containers/reservation/list/components/ReservationList' /* webpackChunkName: \"reservation-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst UnitTypeBulk = Loadable({\r\n loader: () => import('External/containers/unitConfiguration/components/UnitTypeBulk' /* webpackChunkName: \"unit-type-bulk\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst LeaseStyleBulk = Loadable({\r\n loader: () => import('External/containers/unitConfiguration/components/LeaseStyleBulk' /* webpackChunkName: \"lease-style-bulk\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst SingleUnitRentAdjustment = Loadable({\r\n loader: () => import('External/containers/operations/components/rentAdjustment/components/singleUnit/components/SingleUnitRentAdjustment' /* webpackChunkName: \"single-unit-rent-adjustment\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst DelinquencyTracking = Loadable({\r\n loader: () => import('Internal/containers/delinquencyTracking/list/components/DelinquencyTracking' /* webpackChunkName: \"delinquency-tracking\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst Journal = Loadable({\r\n loader: () => import('Internal/containers/journal/list/components/Journal' /* webpackChunkName: \"journal\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst PrintFailuresList = Loadable({\r\n loader: () => import('External/containers/printFailures/PrintFailuresList' /* webpackChunkName: \"print-failures\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst PendingInvoiceDelivery = Loadable({\r\n loader: () => import('External/containers/pendinginvoicedelivery/PendindInvoiceDelivery' /* webpackChunkName: \"pending-invoice-delivery\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst DelinquencyList = Loadable({\r\n loader: () => import('../../external/containers/delinquency/list/components/DelinquencyList' /* webpackChunkName: \"delinquency-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst CCAboutToExpireList = Loadable({\r\n loader: () => import('External/containers/ccAboutToExpire/CCAboutToExpireList' /* webpackChunkName: \"cc-about-to-expire-list\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst SchedulerCreation = Loadable({\r\n loader: () => import('Internal/containers/delinquencyTracking/list/components/SchedulerCreation' /* webpackChunkName: \"scheduler-creation\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst EmailAudit = Loadable({\r\n loader: () => import('External/containers/conversation/EmailAudit' /* webpackChunkName: \"scheduler-creation\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst OtherBatches = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/OtherBatches' /* webpackChunkName: \"credit-card-batches\" */),\r\n loading: () =>
,\r\n});\r\n\r\nconst OtherMethodsBatchPaymentForm = Loadable({\r\n loader: () => import('External/containers/operations/components/batchPayment/components/otherBatches/OtherMethodsBatchPaymentForm' /* webpackChunkName: \"create-cash-check-money-order-batch\" */),\r\n loading: () =>
,\r\n});\r\n\r\nexport {\r\n ManualChargesForm, ManualCharge, Header, HomePage, Dashboard, Main, SmartList,\r\n TenantForm, Logout, UnitForm, LeadForm, HeaderInt, MainInt, FacilityForm, AccountForm, UserForm,\r\n SideBar, UnitListFormatter, AutoSuggest, MoveIn, MoveOut, TenantFilter, Payment, UnitFilter,\r\n MainSettings, Configuration, FacilityGeneral, FinancialGeneral, CustomerGeneral, UserList,\r\n RentalGeneral, TenantChangeTracking, TenantAccountType, LetterConfiguration, TenantSections,\r\n UnitTypeForm, MoveInConfiguration, MoveOutConfiguration, ReservationConfiguration, ChargeCategory,\r\n PaymentMethod, TaxCode, TaxExemptCategory, PaymentConfiguration, ChargeCategoryMapping, UserFormExt,\r\n SearchableDropdown, UserRole, UserProfile, ReservationAction, waitingListAction, VendorForm, Bev, InventoryForm, InventoryAudit,\r\n PointOfSale, ReportWorkCenter, InventoryList, InventoryBulkRestock, InventoryIndividualRestock, VendorList,\r\n ViewTenant, PromoPlanForm, TenantAlerts, UnpaidBills, ReservationCRM, ContactLog, RetailSaleConfiguration,\r\n LedgerReview, ArActions, Operations, LateEventForm, BevColorSetup, MaintenanceEventForm, ManualLateEvent,\r\n DeliveryMethodDropdown, CardProcessor, DailySummary, ScheduleList, TenantWebsites, AsyncTaskList,\r\n LeaseGeneral, LeaseStyleForm, PendingTasks, Docs, PendingOverlockUnlockList, WrappedInventoryAudit,\r\n WrappedInventoryBulkRestock, Invoicing, GateConfiguration, Ach, Conversations, TransferConfiguration,\r\n AchOperations, AllBatches, CurrentBatch, AccountManagement, UnitTransfer, FacilityList, AccountList, TextList,\r\n TextOrEmailSelection, ListOrCompose, BusinessGroupManagement, SyrasoftUserRoles, EmailList, Documentation,\r\n RentAdjustmentList, AutoRentAdjustment, ManualRentAdjustment, ViewRentAdjustment, InternalAppConfiguration,\r\n RateHistoryAction, RateHistory, LateEvents, AutomaticCreditCardDeclines, RetailSaleReturns, InsuranceConfiguration,\r\n FailedReturns, TenantChanges, TenantEmailChanges, TenantAddressChanges, TenantAlternateContactChanges,\r\n TenantPhoneChanges, TenantDeposit, RentAssessmentHistory, AutoPaymentHistory, TaskSummary, OtherExternalActivity,\r\n AutoInvoicingHistory, RentAdjustmentSummary, DelinquencySummary, LetterUtil, SavedDocumentsList,\r\n GenerateLeaseAgreement, FacilitySetup, TaxCodeSetup, Onboarding, OccupancySetup, Sandbox, FacilityView, UserSetup, UserSetupAction,\r\n DepositLog, Quickbooks, AccountFacilityForm, MigrationList, MigrationForm, MigrationServerModal, MigrationDetails, VehicleConfig,\r\n ExternalDashboard, VehicleList, BatchPayment, BatchList, BatchDetails, BatchForm, LetterTemplateList, TenantList,\r\n ReservationList, UnitTypeBulk, LeaseStyleBulk, SingleUnitRentAdjustment, PrintFailuresList, DelinquencyList, DelinquencyTracking,\r\n CCAboutToExpireList, WalkAroundConfig, WalkAround, DelinquencyOverview, LateEventsTracking, LockoutEventsTracking,\r\n ScheduledEventsTracking, WrongEntriesTracking, SchedulerCreation,\r\n FinancialExport, FinancialExportOperation, PendingInvoiceDelivery, EmailAudit, WaitingList,\r\n Journal, JournalConfigurationChanges, JournalLockoutEvents, JournalUserRoles, JournalUserManagements, JournalLateEvents,\r\n TenantInvalidAccessCodeList, UnitInvalidAccessCodeList, ViolationConfiguration, DepositUpdate, UnitDepositUpdate, ViolationForm, TenantDepositUpdate,\r\n OtherBatches, OtherMethodsBatchPaymentForm,\r\n};\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst iconStyle = theme => ({\r\n '@global @font-face': {\r\n fontFamily: \"'cp-icons'\",\r\n src: [`url('${process.env.ASSETS_BUCKET_LOCATION}/cp-assets/cp-icons.woff?37i377') format('woff')`, /* Pretty Modern Browsers */\r\n `url('${process.env.ASSETS_BUCKET_LOCATION}/cp-assets/cp-icons.ttf?37i377') format('ttf')`, /* Safari, Android, iOS */\r\n `url('${process.env.ASSETS_BUCKET_LOCATION}/cp-assets/cp-icons.svg?37i377') format('svg')`], /* Legacy iOS */\r\n\r\n fontWeight: 'normal',\r\n fontStyle: 'normal',\r\n fontDisplay: 'swap',\r\n },\r\n icon: {\r\n cursor: 'pointer',\r\n '&$primaryicon': { color: theme.palette.primary.main },\r\n '&$secondaryicon': { color: theme.palette.secondary.main },\r\n '&$erroricon': { color: theme.palette.error.main },\r\n '&$disabled': {\r\n cursor: 'default',\r\n pointerEvents: 'none',\r\n color: theme.palette.disabled,\r\n },\r\n },\r\n noCursorPointer: { cursor: 'default' },\r\n primaryicon: {},\r\n secondaryicon: {},\r\n erroricon: {},\r\n disabled: {},\r\n fullWidth: { width: '100%' },\r\n 'inline-block': { display: 'inline-block' },\r\n block: { display: 'block' },\r\n cpIcon: {\r\n /* use !important to prevent issues with browser extensions that change fonts */\r\n fontFamily: \"'cp-icons' !important\",\r\n speak: 'none',\r\n fontStyle: 'normal',\r\n fontWeight: 'normal',\r\n fontVariant: 'normal',\r\n textTransform: 'none',\r\n lineHeight: 'normal',\r\n color: 'currentColor',\r\n\r\n /* Better Font Rendering =========== */\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n },\r\n small: { fontSize: '1rem' },\r\n medium: { fontSize: '1.5rem' },\r\n default: {\r\n fontSize: '1.5rem',\r\n [media.desktopUp]: { fontSize: '2rem' },\r\n },\r\n large: { fontSize: '2rem' },\r\n 'cp-view': { '&:before': { content: '\"\\\\E900\"' } },\r\n 'cp-move': { '&:before': { content: '\"\\\\E901\"' } },\r\n 'cp-delete': { '&:before': { content: '\"\\\\E902\"' } },\r\n 'cp-maintenance-events': { '&:before': { content: '\"\\\\E903\"' } },\r\n 'cp-individual': { '&:before': { content: '\"\\\\E904\"' } },\r\n 'cp-signout': { '&:before': { content: '\"\\\\E905\"' } },\r\n 'cp-settings': { '&:before': { content: '\"\\\\E906\"' } },\r\n 'cp-search': { '&:before': { content: '\"\\\\E907\"' } },\r\n 'cp-save': { '&:before': { content: '\"\\\\E908\"' } },\r\n 'cp-reservation': { '&:before': { content: '\"\\\\E909\"' } },\r\n 'cp-close-event': { '&:before': { content: '\"\\\\E90A\"' } },\r\n 'cp-move-out': { '&:before': { content: '\"\\\\E90B\"' } },\r\n 'cp-move-in': { '&:before': { content: '\"\\\\E90C\"' } },\r\n 'cp-menu': { '&:before': { content: '\"\\\\E90D\"' } },\r\n 'cp-lead': { '&:before': { content: '\"\\\\E90F\"' } },\r\n 'cp-info': { '&:before': { content: '\"\\\\E910\"' } },\r\n 'cp-sort': { '&:before': { content: '\"\\\\E911\"' } },\r\n 'cp-deposit-log': { '&:before': { content: '\"\\\\E912\"' } },\r\n 'cp-filter': { '&:before': { content: '\"\\\\E913\"' } },\r\n 'cp-facility': { '&:before': { content: '\"\\\\E914\"' } },\r\n 'cp-edit': { '&:before': { content: '\"\\\\E915\"' } },\r\n 'cp-pending-tasks': { '&:before': { content: '\"\\\\E916\"' } },\r\n 'cp-payment': { '&:before': { content: '\"\\\\E917\"' } },\r\n 'cp-close': { '&:before': { content: '\"\\\\E918\"' } },\r\n 'cp-collapse': { '&:before': { content: '\"\\\\E919\"' } },\r\n 'cp-chevron-right': { '&:before': { content: '\"\\\\E91A\"' } },\r\n 'cp-chevron-left': { '&:before': { content: '\"\\\\E91B\"' } },\r\n 'cp-expand': { '&:before': { content: '\"\\\\E91C\"' } },\r\n 'cp-delinquent-tenant': { '&:before': { content: '\"\\\\E91D\"' } },\r\n 'cp-lock-gate': { '&:before': { content: '\"\\\\E91E\"' } },\r\n 'cp-calendar': { '&:before': { content: '\"\\\\E91F\"' } },\r\n 'cp-calculator': { '&:before': { content: '\"\\\\E920\"' } },\r\n 'cp-business': { '&:before': { content: '\"\\\\E921\"' } },\r\n 'cp-backspace': { '&:before': { content: '\"\\\\E922\"' } },\r\n 'cp-unlock': { '&:before': { content: '\"\\\\E923\"' } },\r\n 'cp-add': { '&:before': { content: '\"\\\\E924\"' } },\r\n 'cp-lock': { '&:before': { content: '\"\\\\E925\"' } },\r\n 'cp-transfer': { '&:before': { content: '\"\\\\E926\"' } },\r\n 'cp-warning': { '&:before': { content: '\"\\\\E927\"' } },\r\n 'cp-close-round': { '&:before': { content: '\"\\\\E928\"' } },\r\n 'cp-history': { '&:before': { content: '\"\\\\E929\"' } },\r\n 'cp-ledger': { '&:before': { content: '\"\\\\E92A\"' } },\r\n 'cp-dollar': { '&:before': { content: '\"\\\\E92B\"' } },\r\n 'cp-check-simple': { '&:before': { content: '\"\\\\E92C\"' } },\r\n 'cp-balance': { '&:before': { content: '\"\\\\E92D\"' } },\r\n 'cp-comment': { '&:before': { content: '\"\\\\E92E\"' } },\r\n 'cp-reset': { '&:before': { content: '\"\\\\E92F\"' } },\r\n 'cp-unit': { '&:before': { content: '\"\\\\E930\"' } },\r\n 'cp-copy': { '&:before': { content: '\"\\\\E931\"' } },\r\n 'cp-2FA': { '&:before': { content: '\"\\\\E932\"' } },\r\n 'cp-preferred': { '&:before': { content: '\"\\\\E933\"' } },\r\n 'cp-asterisk': { '&:before': { content: '\"\\\\E934\"' } },\r\n 'cp-waive-on': { '&:before': { content: '\"\\\\E93F\"' } },\r\n 'cp-waive-off': { '&:before': { content: '\"\\\\E940\"' } },\r\n 'cp-star-outlined': { '&:before': { content: '\"\\\\E935\"' } },\r\n 'cp-star-filled': { '&:before': { content: '\"\\\\E936\"' } },\r\n 'cp-arrow-down': { '&:before': { content: '\"\\\\E937\"' } },\r\n 'cp-email-opened': { '&:before': { content: '\"\\\\E938\"' } },\r\n 'cp-text-outlined': { '&:before': { content: '\"\\\\E939\"' } },\r\n 'cp-bar-code': { '&:before': { content: '\"\\\\E93A\"' } },\r\n 'cp-email-outlined': { '&:before': { content: '\"\\\\E93B\"' } },\r\n 'cp-download': { '&:before': { content: '\"\\\\E93C\"' } },\r\n 'cp-plus': { '&:before': { content: '\"\\\\E93D\"' } },\r\n 'cp-radio-off': { '&:before': { content: '\"\\\\E93E\"' } },\r\n 'cp-fold': { '&:before': { content: '\"\\\\E941\"' } },\r\n 'cp-unfold': { '&:before': { content: '\"\\\\E942\"' } },\r\n 'cp-check-box-outlined': { '&:before': { content: '\"\\\\E943\"' } },\r\n 'cp-check-box': { '&:before': { content: '\"\\\\E944\"' } },\r\n 'cp-search-e2e': { '&:before': { content: '\"\\\\E945\"' } },\r\n 'cp-indeterminate-check-box': { '&:before': { content: '\"\\\\E946\"' } },\r\n 'cp-radio-on': { '&:before': { content: '\"\\\\E947\"' } },\r\n 'cp-rotate-90': { '&:before': { content: '\"\\\\E948\"' } },\r\n 'cp-align-vertical': { '&:before': { content: '\"\\\\E949\"' } },\r\n 'cp-align-horizontal': { '&:before': { content: '\"\\\\E94A\"' } },\r\n 'cp-align-bottom': { '&:before': { content: '\"\\\\E94B\"' } },\r\n 'cp-align-top': { '&:before': { content: '\"\\\\E94C\"' } },\r\n 'cp-align-right': { '&:before': { content: '\"\\\\E94D\"' } },\r\n 'cp-align-left': { '&:before': { content: '\"\\\\E94E\"' } },\r\n 'cp-hide': { '&:before': { content: '\"\\\\E94F\"' } },\r\n 'cp-retailsale': { '&:before': { content: '\"\\\\E950\"' } },\r\n 'cp-vendor': { '&:before': { content: '\"\\\\E951\"' } },\r\n 'cp-restock': { '&:before': { content: '\"\\\\E952\"' } },\r\n 'cp-inventory': { '&:before': { content: '\"\\\\E953\"' } },\r\n 'cp-pos': { '&:before': { content: '\"\\\\E954\"' } },\r\n 'cp-audit': { '&:before': { content: '\"\\\\E955\"' } },\r\n 'cp-attachment': { '&:before': { content: '\"\\\\E956\"' } },\r\n 'cp-back': { '&:before': { content: '\"\\\\E957\"' } },\r\n 'cp-bold': { '&:before': { content: '\"\\\\E958\"' } },\r\n 'cp-bullet-list': { '&:before': { content: '\"\\\\E959\"' } },\r\n 'cp-text-align-center': { '&:before': { content: '\"\\\\E95A\"' } },\r\n 'cp-content-save': { '&:before': { content: '\"\\\\E95B\"' } },\r\n 'cp-equal-spacing': { '&:before': { content: '\"\\\\E95C\"' } },\r\n 'cp-refund': { '&:before': { content: '\"\\\\E95D\"' } },\r\n 'cp-italic': { '&:before': { content: '\"\\\\E95E\"' } },\r\n 'cp-text-align-left': { '&:before': { content: '\"\\\\E95F\"' } },\r\n 'cp-numbered-list': { '&:before': { content: '\"\\\\E960\"' } },\r\n 'cp-text-align-right': { '&:before': { content: '\"\\\\E961\"' } },\r\n 'cp-table': { '&:before': { content: '\"\\\\E962\"' } },\r\n 'cp-report': { '&:before': { content: '\"\\\\E963\"' } },\r\n 'cp-underline': { '&:before': { content: '\"\\\\E964\"' } },\r\n 'cp-image': { '&:before': { content: '\"\\\\E965\"' } },\r\n 'cp-activate': { '&:before': { content: '\"\\\\E966\"' } },\r\n 'cp-deactivate': { '&:before': { content: '\"\\\\E967\"' } },\r\n 'cp-error': { '&:before': { content: '\"\\\\E968\"' } },\r\n 'cp-play': { '&:before': { content: '\"\\\\E969\"' } },\r\n 'cp-info-colored': { '&:before': { content: '\"\\\\E96A\"' } },\r\n 'cp-location': { '&:before': { content: '\"\\\\E96B\"' } },\r\n 'cp-ach': { '&:before': { content: '\"\\\\E96C\"' } },\r\n 'cp-phone': { '&:before': { content: '\"\\\\E96D\"' } },\r\n 'cp-query': { '&:before': { content: '\"\\\\E96E\"' } },\r\n 'cp-refresh': { '&:before': { content: '\"\\\\E96F\"' } },\r\n 'cp-view-tenant-placeholder': { '&:before': { content: '\"\\\\E970\"' } },\r\n 'cp-document': { '&:before': { content: '\"\\\\E971\"' } },\r\n 'cp-promo-plan': { '&:before': { content: '\"\\\\E972\"' } },\r\n 'cp-unit-type': { '&:before': { content: '\"\\\\E973\"' } },\r\n 'cp-moveout-success': { '&:before': { content: '\"\\\\E974\"' } },\r\n 'cp-rent-assessment': { '&:before': { content: '\"\\\\E975\"' } },\r\n 'cp-fax': { '&:before': { content: '\"\\\\E976\"' } },\r\n 'cp-print': { '&:before': { content: '\"\\\\E977\"' } },\r\n 'cp-return': { '&:before': { content: '\"\\\\E978\"' } },\r\n 'cp-deliver-report': { '&:before': { content: '\"\\\\E979\"' } },\r\n 'cp-clock': { '&:before': { content: '\"\\\\E97A\"' } },\r\n 'cp-tenant-add': { '&:before': { content: '\"\\\\E97B\"' } },\r\n 'cp-tenant-search': { '&:before': { content: '\"\\\\E97C\"' } },\r\n 'cp-manual-charge': { '&:before': { content: '\"\\\\E97D\"' } },\r\n 'cp-circled-up': { '&:before': { content: '\"\\\\E97E\"' } },\r\n 'cp-circled-down': { '&:before': { content: '\"\\\\E97F\"' } },\r\n 'cp-vertical-ellipses': { '&:before': { content: '\"\\\\E980\"' } },\r\n 'cp-checkbox-marked-circle-outline': { '&:before': { content: '\"\\\\E981\"' } },\r\n 'cp-success': { '&:before': { content: '\"\\\\E982\"' } },\r\n 'cp-retail-sale-pay': { '&:before': { content: '\"\\\\E983\"' } },\r\n 'cp-mark-duplicate': { '&:before': { content: '\"\\\\E984\"' } },\r\n 'cp-line-spacing': { '&:before': { content: '\"\\\\E985\"' } },\r\n 'cp-operations': { '&:before': { content: '\"\\\\E986\"' } },\r\n 'cp-recurring-charges': { '&:before': { content: '\"\\\\E987\"' } },\r\n 'cp-split': { '&:before': { content: '\"\\\\E988\"' } },\r\n 'cp-collapse-section': { '&:before': { content: '\"\\\\E98A\"' } },\r\n 'cp-expand-section': { '&:before': { content: '\"\\\\E98B\"' } },\r\n 'cp-admin-util': { '&:before': { content: '\"\\\\E98C\"' } },\r\n 'cp-gate': { '&:before': { content: '\"\\\\E98D\"' } },\r\n 'cp-business-group': { '&:before': { content: '\"\\\\E98E\"' } },\r\n 'cp-customer-accounts': { '&:before': { content: '\"\\\\E98F\"' } },\r\n 'cp-letter-migration': { '&:before': { content: '\"\\\\E989\"' } },\r\n 'cp-all-accounts': { '&:before': { content: '\"\\\\E990\"' } },\r\n 'cp-pending': { '&:before': { content: '\"\\\\E90E\"' } },\r\n 'cp-rate-history': { '&:before': { content: '\"\\\\E991\"' } },\r\n 'cp-pause': { '&:before': { content: '\"\\\\E992\"' } },\r\n 'cp-arrow-expand': { '&:before': { content: '\"\\\\E993\"' } },\r\n 'cp-arrow-collapse': { '&:before': { content: '\"\\\\E994\"' } },\r\n 'cp-insert-link': { '&:before': { content: '\"\\\\E995\"' } },\r\n 'cp-rent-adjustment-grid': { '&:before': { content: '\"\\\\E996\"' } },\r\n 'cp-rent-adjustment': { '&:before': { content: '\"\\\\E9997\"' } },\r\n 'cp-migration-check': { '&:before': { content: '\"\\\\E998\"' } },\r\n 'cp-migration': { '&:before': { content: '\"\\\\E999\"' } },\r\n 'cp-insurance': { '&:before': { content: '\"\\\\E99A\"' } },\r\n 'cp-redirect': { '&:before': { content: '\"\\\\E99B\"' } },\r\n 'cp-reject-request': { '&:before': { content: '\"\\\\E99C\"' } },\r\n 'cp-local-drive': { '&:before': { content: '\"\\\\E99D\"' } },\r\n 'cp-crash-photo': { '&:before': { content: '\"\\\\E99E\"' } },\r\n 'cp-primary-photo': { '&:before': { content: '\"\\\\E99F\"' } },\r\n 'cp-webcam': { '&:before': { content: '\"\\\\E9A1\"' } },\r\n 'cp-home': { '&:before': { content: '\"\\\\E9A4\"' } },\r\n 'cp-late-events': { '&:before': { content: '\"\\\\E9A5\"' } },\r\n 'cp-printer-warning': { '&:before': { content: '\"\\\\E9A6\"' } },\r\n 'cp-repair': { '&:before': { content: '\"\\\\E9A7\"' } },\r\n 'cp-validate': { '&:before': { content: '\"\\\\E9A9\"' } },\r\n 'cp-select-printer': { '&:before': { content: '\"\\\\E9AB\"' } },\r\n 'cp-dashboard': { '&:before': { content: '\"\\\\E9AC\"' } },\r\n 'cp-percentage': { '&:before': { content: '\"\\\\E9AE\"' } },\r\n 'cp-unit-late-event': { '&:before': { content: '\"\\\\E9AF\"' } },\r\n 'cp-unit-maintenance-event': { '&:before': { content: '\"\\\\E9B0\"' } },\r\n 'cp-vehicle': { '&:before': { content: '\"\\\\E9B1\"' } },\r\n 'cp-devices': { '&:before': { content: '\"\\\\E9B2\"' } },\r\n 'cp-growth': { '&:before': { content: '\"\\\\E9B3\"' } },\r\n 'cp-printer-available': { '&:before': { content: '\"\\\\E9B4\"' } },\r\n 'cp-printer-unavailable': { '&:before': { content: '\"\\\\E9B8\"' } },\r\n 'cp-import': { '&:before': { content: '\"\\\\E9BD\"' } },\r\n 'cp-help': { '&:before': { content: '\"\\\\E9BE\"' } },\r\n 'cp-reply': { '&:before': { content: '\"\\\\E9AD\"' } },\r\n 'cp-website': { '&:before': { content: '\"\\\\E9C0\"' } },\r\n 'cp-bev-walk-around': { '&:before': { content: '\"\\\\E9C1\"' } },\r\n 'cp-bulk-deposit': { '&:before': { content: '\"\\\\E9C3\"' } },\r\n 'cp-violations': { '&:before': { content: '\"\\\\E9C2\"' } },\r\n});\r\n\r\nexport default iconStyle;\r\n","const labelWithAddOnsStyle = theme => ({\r\n container: { },\r\n spacing: { marginLeft: theme.spacing(1) },\r\n label: { },\r\n clickable: { cursor: 'pointer' },\r\n});\r\nexport default labelWithAddOnsStyle;\r\n","import theme from '../Theme';\r\nimport { GLOBAL_SCROLL_WIDTH, GLOBAL_SCROLL_HEIGHT } from '../Constants';\r\n\r\nconst globalClasses = Object.values(theme.globalClasses).reduce((classes, { className, style }) => ({\r\n ...classes,\r\n [`.${className}`]: style,\r\n}), {});\r\n\r\nconst baseStyle = {\r\n // Snackbar Base Style\r\n bottomLeftSnackbarContainer: { bottom: theme.spacing(13) },\r\n\r\n '@global': {\r\n body: {\r\n margin: 0,\r\n fontFamily: 'Roboto',\r\n backgroundColor: theme.palette.background.default,\r\n color: theme.palette.text.primary,\r\n scrollBehavior: 'smooth',\r\n\r\n '& *::-webkit-scrollbar': {\r\n width: GLOBAL_SCROLL_WIDTH,\r\n height: GLOBAL_SCROLL_HEIGHT,\r\n },\r\n\r\n '& *::-webkit-scrollbar-track': { background: 'transparent' },\r\n\r\n '& *::-webkit-scrollbar-thumb': {\r\n background: theme.palette.button.hover,\r\n borderRadius: 16,\r\n },\r\n },\r\n '*[tooltip]': {\r\n '&:hover': {\r\n position: 'relative',\r\n '&:after': {\r\n content: 'attr(tooltip)', // Use the text provided in tooltip attribute\r\n padding: '4px 6px',\r\n left: 0,\r\n top: 'calc(100% + 4px)',\r\n position: 'absolute',\r\n whiteSpace: 'nowrap',\r\n zIndex: 1500,\r\n fontFamily: 'Open Sans',\r\n fontWeight: 600,\r\n color: theme.palette.text.primary,\r\n background: theme.palette.common.white,\r\n borderRadius: 4,\r\n minHeight: theme.spacing(4),\r\n minWidth: theme.spacing(13),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n boxShadow: theme.shadows[2],\r\n ...theme.typography.body1,\r\n },\r\n },\r\n },\r\n html: { fontSize: 16 },\r\n '@font-face': {\r\n fontFamily: 'Roboto',\r\n fontStyle: 'normal',\r\n fontWeight: 'normal',\r\n },\r\n '*': { '-webkit-font-smoothing': 'antialiased' },\r\n ...globalClasses,\r\n },\r\n};\r\n\r\nexport default baseStyle;\r\n","const transitionStyle = () => ({ fullHeight: { height: '100%' } });\r\n\r\nexport default transitionStyle;\r\n","const buttonTextStyles = theme => ({\r\n loader: { color: theme.palette.common.white },\r\n loadingText: { paddingLeft: 10 },\r\n});\r\n\r\nexport default buttonTextStyles;\r\n","const buttonStyle = theme => ({\r\n button: { ...theme.elements.button },\r\n displayNone: { display: 'none' },\r\n error: {\r\n color: theme.palette.button.error,\r\n borderColor: theme.palette.button.error,\r\n '&:hover': {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.button.error,\r\n },\r\n },\r\n backgroundForErrorText: { backgroundColor: theme.palette.error.light },\r\n light: {\r\n backgroundColor: 'transparent',\r\n '&:hover': { backgroundColor: theme.hexWithOpacity(theme.palette.highlight, 3) },\r\n },\r\n textPrimary: { color: theme.palette.text.primary },\r\n disabled: {},\r\n});\r\n\r\nexport default buttonStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst formStyle = theme => ({\r\n formControl: {},\r\n error: {},\r\n errorTextPadding: { paddingLeft: theme.spacing(2) },\r\n noPadding: { '&$item': { padding: 0 } },\r\n noLeftRightPadding: {\r\n '&$item': {\r\n padding: theme.spacing(2, 0),\r\n [media.laptopUp]: { padding: theme.spacing(1.5, 0) },\r\n [media.desktop]: { padding: theme.spacing(2, 0) },\r\n },\r\n },\r\n firstInlineField: {\r\n '&$item': {\r\n padding: theme.spacing(2, 2, 0, 2),\r\n [media.laptopUp]: { padding: theme.spacing(1.5, 0, 0, 2) },\r\n [media.desktop]: { padding: theme.spacing(2, 2, 0, 2) },\r\n },\r\n },\r\n lastInlineField: {\r\n '&$item': {\r\n padding: theme.spacing(0, 2, 2, 2),\r\n [media.laptopUp]: { padding: theme.spacing(0, 0, 1.5, 2) },\r\n [media.desktop]: { padding: theme.spacing(0, 2, 2, 2) },\r\n },\r\n },\r\n inlineField: {\r\n '&$item': {\r\n padding: theme.spacing(0, 2),\r\n [media.laptopUp]: { padding: theme.spacing(0, 0, 0, 2) },\r\n [media.desktop]: { padding: theme.spacing(0, 2) },\r\n },\r\n },\r\n spacingFormGrid: {\r\n '&$item': {\r\n padding: theme.spacing(2),\r\n [media.laptopUp]: { padding: theme.spacing(1.5, 0, 1.5, 2) },\r\n [media.desktop]: { padding: theme.spacing(2) },\r\n },\r\n },\r\n helperText: {},\r\n item: {},\r\n formComponent: {},\r\n\r\n indicatorWrapper: {\r\n minWidth: theme.spacing(2),\r\n minHeight: 0,\r\n maxWidth: theme.spacing(2),\r\n },\r\n padding: { paddingTop: 3 },\r\n indicator: {\r\n fontSize: 8,\r\n [media.laptop]: { fontSize: 6 },\r\n [media.desktop]: { fontSize: 8 },\r\n cursor: 'default',\r\n lineHeight: 2,\r\n },\r\n required: { color: theme.palette.error.main },\r\n preferred: { color: theme.palette.preferred },\r\n hidden: { display: 'none' },\r\n});\r\n\r\nexport default formStyle;\r\n","import { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\n\r\nconst doesValueExists = (initialValues, key) => {\r\n let currentTarget = deepCopy(initialValues);\r\n const nameArray = key.split('.');\r\n for (let i = 0; i < nameArray.length; i += 1) {\r\n if (nameArray[i] in currentTarget) {\r\n currentTarget = currentTarget[nameArray[i]];\r\n } else {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nconst isFalsyValue = value => ['', undefined, null].includes(value);\r\n\r\nexport const getFieldValue = (initialValues, name, value) => {\r\n if (isFalsyValue(value) && !doesValueExists(initialValues, name)) {\r\n return undefined;\r\n }\r\n\r\n const nameArray = name.split('.');\r\n let current = deepCopy(initialValues);\r\n for (let i = 0; i < nameArray.length; i += 1) {\r\n if (nameArray[i] in current) {\r\n current = current[nameArray[i]];\r\n } else {\r\n return value;\r\n }\r\n }\r\n // Using == as we don't need strict comparison. Works in case BE sends integer and we store string in the form values\r\n // eslint-disable-next-line eqeqeq\r\n if (current == value) {\r\n return current;\r\n }\r\n return value;\r\n};\r\n","const textFieldStyle = theme => ({\r\n defaultCursor: { pointerEvents: 'none' },\r\n textField: {\r\n '&:hover': { '& $underline:not(.Mui-disabled):before': { borderBottomWidth: 2 } },\r\n '& input[type=\"search\"]': {\r\n '&::-webkit-search-decoration, &::-webkit-search-cancel-button': { display: 'none' },\r\n '&::-webkit-search-results-button, &::-webkit-search-results-decoration': { display: 'none' },\r\n },\r\n },\r\n textFieldWidth: ({ width }) => ({ width }),\r\n inputAdornment: { padding: 0 },\r\n endAdornment: {},\r\n startAdornment: {},\r\n number: {\r\n '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {\r\n appearance: 'none',\r\n margin: 0,\r\n },\r\n '&::placeholder': { textAlign: 'left' },\r\n textAlign: 'right',\r\n },\r\n marginTop: { marginTop: 4 },\r\n lightTextField: {\r\n '& $underline': { color: theme.palette.common.white },\r\n '& $underline:hover:not(.Mui-disabled):before': {\r\n borderBottomWidth: 2,\r\n borderBottomColor: theme.palette.common.white,\r\n },\r\n '& $underline:before': { borderColor: theme.palette.common.white },\r\n '& $underline:after': { borderColor: theme.palette.tertiary.main },\r\n\r\n '& $labelRoot': { color: theme.palette.common.white },\r\n '& $labelRoot.Mui-focused': { color: theme.palette.tertiary.main },\r\n },\r\n rightMarginIcon: { marginRight: 8 },\r\n leftMarginIcon: { marginLeft: 8 },\r\n\r\n multiline: {\r\n '& $underline': { '&:after, &:before': { display: 'none' } },\r\n '& $input': {\r\n boxShadow: `0px 0px 0px 1px ${theme.palette.text.primary}`,\r\n borderRadius: 4,\r\n padding: theme.spacing(1),\r\n '&:focus:not(.Mui-disabled)': { boxShadow: `0px 0px 0px 2px ${theme.palette.primary.main}` },\r\n },\r\n '&:hover:not(.Mui-disabled)': { '& $input': { boxShadow: `0px 0px 0px 2px ${theme.palette.text.primary}` } },\r\n\r\n },\r\n labelRoot: {},\r\n underline: {},\r\n input: { '&::placeholder': { ...theme.typography.body2 } },\r\n h5Input: {\r\n '&::placeholder': { ...theme.typography.h5 },\r\n ...theme.typography.h5,\r\n },\r\n h6Input: {\r\n '&::placeholder': { ...theme.typography.h6 },\r\n ...theme.typography.h6,\r\n },\r\n subtitle1Input: {\r\n '&::placeholder': { ...theme.typography.subtitle1 },\r\n ...theme.typography.subtitle1,\r\n },\r\n inputRoot: {},\r\n alignment: { alignItems: 'center' },\r\n\r\n});\r\n\r\nexport default textFieldStyle;\r\n","const alertDialogStyle = theme => ({\r\n padding: { padding: theme.spacing(2, 3) },\r\n dialogTitle: {\r\n padding: 0,\r\n width: 'calc(100% - 2.5rem)', // Removing Icon Width\r\n },\r\n positionRelative: { position: 'relative' },\r\n closeButton: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n padding: 0,\r\n margin: 'auto',\r\n },\r\n iconSize: { fontSize: '1.8rem' },\r\n backdrop: { backgroundColor: `${theme.palette.common.white}B3` },\r\n});\r\n\r\nexport default alertDialogStyle;\r\n","const checkBoxStyle = theme => ({\r\n formLabel: {\r\n '-webkit-user-select': 'none', /* webkit (safari, chrome) browsers */\r\n '-moz-user-select': 'none', /* mozilla browsers */\r\n '-khtml-user-select': 'none', /* webkit (konqueror) browsers */\r\n '-ms-user-select': 'none', /* IE10+ */\r\n },\r\n root: { color: theme.palette.primary.main },\r\n readOnly: {\r\n color: theme.palette.text.disabled,\r\n pointerEvents: 'none',\r\n },\r\n InheritedConfigLabel: { pointerEvents: 'none' },\r\n});\r\n\r\nexport default checkBoxStyle;\r\n","const popdownStyle = {\r\n popdown: { position: 'relative' },\r\n paperHeight: ({ maxHeight }) => ({ maxHeight }),\r\n paper: {\r\n overflowY: 'auto',\r\n wordWrap: 'break-word',\r\n },\r\n popper: { zIndex: 1, '&[x-out-of-boundaries]': { visibility: 'hidden' } },\r\n};\r\n\r\nexport default popdownStyle;\r\n","import arrowTheme from '../../../../theme/ArrowTheme';\r\nimport media from '../../../../theme/MediaQueries';\r\n\r\nconst tooltipStyle = theme => ({\r\n arrow: { color: theme.palette.common.white },\r\n lightTooltip: {\r\n background: theme.palette.common.white,\r\n color: theme.palette.text.primary,\r\n boxShadow: theme.shadows[2],\r\n ...theme.typography.body2,\r\n padding: theme.spacing(1),\r\n [media.laptopUp]: { padding: theme.spacing(1, 2) },\r\n },\r\n arrowShadow: { ...arrowTheme.arrowShadow },\r\n tooltipTarget: {\r\n display: 'inline-flex',\r\n position: 'relative',\r\n cursor: 'pointer',\r\n maxWidth: '100%',\r\n width: 'fit-content',\r\n },\r\n root: { maxWidth: '100%' },\r\n});\r\n\r\nexport default tooltipStyle;\r\n","import { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { useEffect } from 'react';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport snackbarStyles from '../styles/SnackbarStyles';\r\nimport { VARIANT } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(snackbarStyles, { name: 'SnackMessage' });\r\n\r\nconst SnackMessage = React.forwardRef((props, ref) => {\r\n const { variant, title, subtitle, isRealTimeNotification, actions, closeSnackbar, id, onSnackbarMount } = props;\r\n const classes = useStyles(props);\r\n\r\n // TODO: Kept in case we need body and showMore again\r\n // const [expanded, setExpanded] = useState(false);\r\n // const expandMore = () => {\r\n // setExpanded(!expanded);\r\n // };\r\n\r\n const isErrorVariant = () => variant === VARIANT.error.value;\r\n\r\n useEffect(() => {\r\n onSnackbarMount({ key: id, closeSnackbar });\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {\r\n !isRealTimeNotification\r\n && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {title}\r\n \r\n {\r\n true\r\n && (\r\n \r\n {subtitle}\r\n \r\n )\r\n }\r\n \r\n {\r\n (isErrorVariant())\r\n && (\r\n \r\n closeSnackbar(id)}\r\n color=\"secondary\"\r\n icon=\"cp-close\"\r\n className={classes.icon}\r\n />\r\n \r\n )\r\n }\r\n \r\n {/* TODO: Kept it just in case we need body again\r\n\r\n /* \r\n {message}\r\n \r\n {\r\n message && (message.length > 100) && (\r\n \r\n \r\n { !expanded && Show More }\r\n \r\n \r\n )\r\n } */}\r\n \r\n {\r\n isRealTimeNotification\r\n && (\r\n \r\n {\r\n actions.map(({ onClick, label }) => (\r\n {\r\n closeSnackbar(id);\r\n if (onClick) { onClick(); }\r\n }}\r\n variant=\"text\"\r\n key={label}\r\n className={clsx(classes.actionButton,\r\n label === localisable.refresh && classes.refreshButton)}\r\n >\r\n \r\n {label}\r\n \r\n \r\n ))\r\n }\r\n \r\n )\r\n }\r\n \r\n );\r\n});\r\n\r\nSnackMessage.propTypes = {\r\n subtitle: PropTypes.node,\r\n variant: PropTypes.string.isRequired,\r\n title: PropTypes.node.isRequired,\r\n isRealTimeNotification: PropTypes.bool,\r\n actions: PropTypes.arrayOf(PropTypes.shape({\r\n onClick: PropTypes.func,\r\n label: PropTypes.string.isRequired,\r\n })),\r\n closeSnackbar: PropTypes.func,\r\n id: PropTypes.number,\r\n onSnackbarMount: PropTypes.func,\r\n};\r\n\r\nSnackMessage.defaultProps = { actions: [], onSnackbarMount: EMPTY_FUNC };\r\n\r\nexport default SnackMessage;\r\n","import media from 'Commons/theme/MediaQueries';\r\nimport { VARIANT } from '../config/Constants';\r\n\r\n\r\nconst { innerWidth } = window;\r\n\r\nconst snackbarStyles = theme => ({\r\n messageContainer: {\r\n padding: theme.spacing(2),\r\n [media.tabletUp]: { width: `${innerWidth - (innerWidth * 0.75)}px` },\r\n color: theme.palette.common.white,\r\n borderRadius: 4,\r\n },\r\n message: { marginLeft: theme.spacing(2) },\r\n icon: { marginLeft: -5 },\r\n errorColorIcon: { color: theme.palette.error.main },\r\n error: {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.error.icon,\r\n },\r\n warning: {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.warning.icon,\r\n },\r\n success: {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.success.icon,\r\n },\r\n info: {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.information.icon,\r\n },\r\n rtns: {\r\n background: theme.palette.background.rtns,\r\n color: theme.palette.text.rtns,\r\n padding: theme.spacing(2),\r\n },\r\n titleContainer: {\r\n marginLeft: theme.spacing(1),\r\n paddingRight: theme.spacing(1),\r\n wordBreak: 'break-word',\r\n alignItems: 'center',\r\n\r\n },\r\n subtitle: { marginLeft: theme.spacing(2) },\r\n rtnsContainer: { marginTop: theme.spacing(2) },\r\n actionButton: {\r\n color: theme.palette.primary.main,\r\n '&:hover': {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.primary.main,\r\n },\r\n },\r\n refreshButton: { marginLeft: theme.spacing(1) },\r\n titleContainerItem: ({ variant }) => ({\r\n maxWidth: variant === VARIANT.error.value ? '90%' : 'auto',\r\n overflow: 'auto',\r\n maxHeight: 70,\r\n // TODO: remove snackbar styles once error framework is decided\r\n '&::-webkit-scrollbar-track-piece': {\r\n borderRadius: 5,\r\n '-webkit-box-shadow': 'inset 0 0 4px rgba(67,160,71,0.3)',\r\n },\r\n\r\n '&::-webkit-scrollbar-thumb': {\r\n borderRadius: 5,\r\n background: theme.palette[variant] && theme.palette[variant].main,\r\n },\r\n }),\r\n\r\n\r\n // TODO: Kept it just in case we need body again\r\n\r\n // expanded: {\r\n // maxHeight: 106,\r\n // overflow: 'auto',\r\n // paddingRight: 10,\r\n\r\n // '&::-webkit-scrollbar': { width: 3 },\r\n\r\n // '&::-webkit-scrollbar-track': { borderRadius: 5 },\r\n // },\r\n // errorExpanded: {\r\n\r\n // '&::-webkit-scrollbar-track-piece': {\r\n // width: 1,\r\n // borderRadius: 5,\r\n // '-webkit-box-shadow': 'inset 0 0 4px rgba(244,0,0,0.3)',\r\n // },\r\n\r\n // '&::-webkit-scrollbar-thumb': {\r\n // borderRadius: 5,\r\n // background: theme.palette.common.red,\r\n // },\r\n // },\r\n // successExpanded: {\r\n // '&::-webkit-scrollbar-track-piece': {\r\n // borderRadius: 5,\r\n // '-webkit-box-shadow': 'inset 0 0 4px rgba(67,160,71,0.3)',\r\n // },\r\n\r\n // '&::-webkit-scrollbar-thumb': {\r\n // borderRadius: 5,\r\n // background: theme.palette.success.main,\r\n // },\r\n // },\r\n // warningExpanded: {\r\n\r\n // '&::-webkit-scrollbar-track-piece': {\r\n // borderRadius: 5,\r\n // '-webkit-box-shadow': 'inset 0 0 4px rgba(197,138,38,0.3)',\r\n // },\r\n\r\n // '&::-webkit-scrollbar-thumb': {\r\n // borderRadius: 5,\r\n // background: theme.palette.warning.main,\r\n // },\r\n // },\r\n // showMore: {\r\n // marginRight: 'auto',\r\n // right: 0,\r\n // fontWeight: 600,\r\n // paddingTop: 10,\r\n // display: 'block',\r\n // cursor: 'pointer',\r\n // },\r\n // errorShowMore: { color: theme.palette.common.red },\r\n // warningShowMore: { color: theme.palette.warning.main },\r\n // successShowMore: { color: theme.palette.success.main },\r\n});\r\n\r\nexport default snackbarStyles;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst MAIN_PADDING = {\r\n DESKTOP_UP: 24,\r\n TABLET_UP: 16,\r\n DEFAULT: 8,\r\n};\r\n\r\nconst dashboardStyle = theme => ({\r\n root: {\r\n height: '100vh',\r\n flexGrow: 1, /* drawer height can be defined here */\r\n zIndex: 1,\r\n overflow: 'hidden',\r\n position: 'relative',\r\n display: 'flex',\r\n },\r\n alert: {\r\n whiteSpace: 'pre',\r\n paddingBottom: theme.spacing(2),\r\n },\r\n checkbox: { paddingBottom: theme.spacing(2) },\r\n content: {\r\n overflow: 'auto',\r\n marginTop: theme.spacing(15),\r\n [media.tabletUp]: {\r\n padding: MAIN_PADDING.TABLET_UP,\r\n paddingTop: 0,\r\n },\r\n [media.laptopUp]: { marginTop: theme.spacing(10) },\r\n [media.desktop]: {\r\n marginTop: theme.spacing(11),\r\n padding: MAIN_PADDING.DESKTOP_UP,\r\n paddingTop: 0,\r\n },\r\n flexGrow: 1,\r\n backgroundColor: theme.palette.background.default,\r\n padding: MAIN_PADDING.DEFAULT,\r\n paddingTop: 0,\r\n },\r\n mainContent: {\r\n '&$onboarding': {\r\n marginTop: theme.spacing(8),\r\n [media.laptopUp]: { marginTop: theme.spacing(7) },\r\n [media.desktop]: { marginTop: theme.spacing(8) },\r\n padding: 0,\r\n display: 'flex',\r\n },\r\n },\r\n onboarding: {},\r\n alertMinWidth: { minWidth: 350 },\r\n});\r\n\r\nexport default dashboardStyle;\r\n","import { Grid } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { useState } from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Checkbox } from 'Generic/checkbox/components/CheckBox';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport ButtonText from 'Generic/buttontext/components/ButtonText';\r\nimport { acceptLegalAgreement } from './config/ApiRequests';\r\n\r\nconst LegalAgreement = ({ agreementLink, classes, onAction, fid, clearStoreKeys }) => {\r\n const { innerWidth, innerHeight } = window;\r\n const [checked, setChecked] = useState(false);\r\n const [isButtonLoading, setIsButtonLoading] = useState(false);\r\n\r\n const onAcceptAgreement = (_, response) => {\r\n if (response) {\r\n clearStoreKeys(['userProfile', 'facility', 'permissionRoles', 'currentFacility']);\r\n }\r\n setIsButtonLoading(false);\r\n };\r\n\r\n const onProceed = () => {\r\n setIsButtonLoading(true);\r\n acceptLegalAgreement(onAction, fid, onAcceptAgreement);\r\n };\r\n\r\n return (\r\n \r\n \r\n {localisable.agreement}\r\n \r\n \r\n {localisable.termsAndConditions}}\r\n onChange={(_, value) => setChecked(value)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLegalAgreement.propTypes = {\r\n agreementLink: PropTypes.string,\r\n classes: PropTypes.object,\r\n onAction: PropTypes.func,\r\n fid: PropTypes.string,\r\n clearStoreKeys: PropTypes.func,\r\n};\r\n\r\nexport default LegalAgreement;\r\n","const ChipStyle = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.disabled,\r\n padding: '4px 8px',\r\n },\r\n leftIcon: { margin: 0 },\r\n frontCloseIcon: {\r\n backgroundColor: theme.palette.common.white,\r\n opacity: 0.8,\r\n width: 24,\r\n height: 24,\r\n borderRadius: 12,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginRight: 16,\r\n marginLeft: 0,\r\n fontSize: 16,\r\n },\r\n label: { padding: 0 },\r\n labelText: {},\r\n labelPadding: { paddingRight: 8 },\r\n closeIcon: {\r\n fontSize: 14,\r\n marginLeft: 16,\r\n backgroundColor: theme.palette.common.white,\r\n opacity: 0.6,\r\n height: 14,\r\n width: 14,\r\n borderRadius: '50%',\r\n\r\n },\r\n nestedChipPadding: {\r\n '& :first-child': { marginLeft: 0 },\r\n '& :last-child': { marginRight: 0 },\r\n '& *': { marginLeft: 4, marginRight: 4 },\r\n },\r\n\r\n bgrentalStatusVacant: { backgroundColor: theme.palette.rentalStatus.vacant, color: theme.palette.common.white },\r\n bgrentalStatusRented: { backgroundColor: theme.palette.rentalStatus.rented, color: theme.palette.common.white },\r\n bgrentalStatusUnavailable: { backgroundColor: theme.palette.rentalStatus.unavailable, color: theme.palette.common.white },\r\n\r\n bgerror: { backgroundColor: theme.palette.red, color: theme.palette.common.white },\r\n bgstatusError: { backgroundColor: theme.palette.error.main, color: theme.palette.common.white },\r\n\r\n bgstatusActive: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgstatusInactive: { backgroundColor: theme.palette.status.inactive },\r\n bgstatusLocked: { backgroundColor: theme.palette.status.locked, color: theme.palette.common.white },\r\n bgstatusCreated: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n bgrolesPrimary: { backgroundColor: theme.palette.rolesGroup.primary, color: theme.palette.common.white },\r\n bgrolesSecondary: { backgroundColor: theme.palette.rolesGroup.secondary, color: theme.palette.common.white },\r\n bgrolesTertiary: { backgroundColor: theme.palette.rolesGroup.tertiary, color: theme.palette.common.white },\r\n\r\n iconstatusActive: { color: theme.palette.status.active },\r\n iconstatusInactive: { color: theme.palette.status.inactive },\r\n iconstatusLocked: { color: theme.palette.status.locked },\r\n iconstatusCreated: { color: theme.palette.status.created },\r\n iconrolesPrimary: { color: theme.palette.rolesGroup.primary },\r\n iconrolesSecondary: { color: theme.palette.rolesGroup.secondary },\r\n iconrolesTertiary: { color: theme.palette.rolesGroup.tertiary },\r\n disabled: {\r\n cursor: 'default',\r\n pointerEvents: 'none',\r\n color: theme.palette.disabled,\r\n },\r\n\r\n bglight: {\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.text.primary,\r\n border: `1px solid ${theme.palette.text.primary}`,\r\n },\r\n\r\n bgstatusReserved: { backgroundColor: theme.palette.chip.reserved, color: theme.palette.common.white },\r\n bgstatusCancelled: { backgroundColor: theme.palette.status.cancelled, color: theme.palette.common.white },\r\n\r\n bgmaintenanceeventstatusUpcoming: { backgroundColor: theme.palette.status.upcoming, color: theme.palette.common.white },\r\n bgmaintenanceeventstatusPending: { backgroundColor: theme.palette.status.locked, color: theme.palette.common.white },\r\n bgmaintenanceeventstatusCompleted: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n bgmaintenanceeventstatusClosed: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgmaintenanceeventstatusCancelled: { backgroundColor: theme.palette.status.inactive, color: theme.palette.common.black },\r\n bgdelinquencyScheduled: { backgroundColor: theme.palette.tertiary.main, color: theme.palette.common.black },\r\n\r\n bgautoPayment: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n bgbatchPayment: { backgroundColor: theme.palette.status.upcoming, color: theme.palette.common.white },\r\n\r\n bgleadstatusActive: { backgroundColor: theme.palette.primary.main, color: theme.palette.common.white },\r\n bgleadstatusInactive: { backgroundColor: theme.palette.status.inactive, color: theme.palette.common.white },\r\n bgleadstatusConverted: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgleadstatusCold: { backgroundColor: theme.palette.chip.estimate, color: theme.palette.common.white },\r\n bgleadstatusLost: { backgroundColor: theme.palette.status.leadLost, color: theme.palette.common.white },\r\n bgleadstatusDuplicate: { backgroundColor: theme.palette.status.leadDuplicate, color: theme.palette.common.white },\r\n bgratehistoryWaived: { backgroundColor: theme.palette.warning.icon, color: theme.palette.common.white },\r\n bgratehistoryMovedOut: { backgroundColor: theme.palette.occupancy.moveout, color: theme.palette.common.white },\r\n\r\n bghighlight: { backgroundColor: theme.palette.highlight, color: theme.palette.secondary.main },\r\n\r\n bgestimatestatusActive: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgestimatestatusMovedIn: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n bgestimatestatusExpired: { backgroundColor: theme.palette.status.expired, color: theme.palette.common.white },\r\n\r\n bgsetUpPending: { backgroundColor: theme.palette.setUp.pending, color: theme.palette.common.white },\r\n\r\n bgmigrationDumpGenerationSuccess: {\r\n backgroundColor: theme.palette.migration.dumpGenerationSuccess,\r\n color: theme.palette.common.white,\r\n },\r\n bgmigrationNotStarted: { backgroundColor: theme.palette.migration.notStarted },\r\n bgmigrationProgress: { backgroundColor: theme.palette.migration.inProgress, color: theme.palette.common.white },\r\n bgmigrationCompleted: { backgroundColor: theme.palette.migration.completed, color: theme.palette.common.white },\r\n bgmigrationErrored: { backgroundColor: theme.palette.migration.errored, color: theme.palette.common.white },\r\n bgmigrationDeleted: { backgroundColor: theme.palette.migration.deleted, color: theme.palette.common.white },\r\n bgmigrationServerActive: {\r\n backgroundColor: theme.palette.migration.serverActive,\r\n color: theme.palette.common.white,\r\n },\r\n bgmigrationServerInactive: { backgroundColor: theme.palette.migration.serverInactive },\r\n bgtransparent: { backgroundColor: theme.palette.migration.transparent },\r\n\r\n bgdelinquencystatusProcessed: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgdelinquencystatusNotProcessed: { backgroundColor: theme.palette.primary.main, color: theme.palette.common.white },\r\n\r\n bgrentAdjustmentPending: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n bgrentAdjustmentCompleted: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n bgrentAdjustmentStopped: { backgroundColor: theme.palette.status.cancelled, color: theme.palette.common.white },\r\n bgemailAuditYes: { backgroundColor: theme.palette.emailAudit.yes, color: theme.palette.common.white },\r\n bgemailAuditNo: { backgroundColor: theme.palette.emailAudit.no, color: theme.palette.common.white },\r\n\r\n});\r\n\r\nexport default ChipStyle;\r\n","const CHIP_COLOR_MAPPING = {\r\n ratehistorystatusPending: 'leadstatusActive',\r\n ratehistorystatusApplied: 'leadstatusDuplicate',\r\n ratehistorystatusReversed: 'estimatestatusExpired',\r\n ratehistorystatusMovedIn: 'leadstatusConverted',\r\n ratehistorystatusMovedOut: 'ratehistoryMovedOut',\r\n ratehistorystatusWaived: 'ratehistoryWaived',\r\n ratehistorystatusReversedTo: 'leadstatusLost',\r\n ratehistorystatusUnknown: 'bgrentalStatusUnavailable',\r\n};\r\n\r\nexport { CHIP_COLOR_MAPPING };\r\n","import arrowTheme from '../../../../theme/ArrowTheme';\r\n\r\nconst menuStyle = theme => ({\r\n link: { padding: '0 16px' },\r\n anchorElDiv: { display: 'inline-block' },\r\n anchorEl: { display: 'inline' },\r\n popper: {\r\n ...arrowTheme.popper,\r\n '& $reactlink, & $reactlink:hover': { color: theme.palette.text.primary },\r\n },\r\n arrow: { ...arrowTheme.arrow },\r\n arrowShadow: { ...arrowTheme.arrowShadow },\r\n reactlink: {},\r\n});\r\n\r\nexport default menuStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst autoSuggestStyle = theme => ({\r\n autoSuggest: {\r\n padding: 0,\r\n '& $listItem:first-child': { paddingTop: 4 },\r\n '& $listItem:last-child': { paddingBottom: 4 },\r\n },\r\n padding: { paddingLeft: 25 },\r\n listItem: {\r\n color: theme.palette.text.primary,\r\n whiteSpace: 'normal',\r\n height: 'auto',\r\n wordWrap: 'break-word',\r\n padding: '3px 4px',\r\n lineHeight: 1.3,\r\n outline: 'none',\r\n minHeight: 40,\r\n justifyContent: 'center',\r\n },\r\n autoSuggestCard: {\r\n boxShadow: 'none',\r\n border: `1px ${theme.palette.black[300]} solid`,\r\n borderRadius: 4,\r\n cursor: 'pointer',\r\n '&:hover': { backgroundColor: theme.palette.hover },\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n autoSuggestUnitCard: {\r\n boxShadow: 'none',\r\n border: `0px solid ${theme.palette.disabled}4C`,\r\n borderRadius: 0,\r\n padding: '8px 16px',\r\n lineHeight: 1.3,\r\n justifyContent: 'left',\r\n },\r\n paper: {\r\n overflowY: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n width: 0,\r\n background: 'transparent',\r\n },\r\n },\r\n unitListpadding: { padding: '5px 20px', width: '100%' },\r\n searchIcon: {\r\n paddingRight: 8,\r\n paddingBottom: 8,\r\n [media.phabletUp]: { padding: '12px 8px 8px 0' },\r\n },\r\n cardContent: { padding: theme.spacing(1) },\r\n});\r\n\r\nexport default autoSuggestStyle;\r\n","const highlightSelectedTextStyle = theme => ({\r\n highlighted: { backgroundColor: theme.palette.button.hover },\r\n disabled: { color: theme.palette.text.disabled },\r\n});\r\n\r\nexport default highlightSelectedTextStyle;\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst cardStyle = theme => ({\r\n addon: {\r\n width: 'auto',\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n },\r\n topLeft: { left: 0 },\r\n topRight: { right: 0 },\r\n bottomLeft: { bottom: 0, left: 0 },\r\n bottomRight: { bottom: 0, right: 0 },\r\n card: {\r\n boxShadow: theme.boxShadows[0],\r\n width: '100%',\r\n borderSizing: 'border-block',\r\n },\r\n cardContent: {\r\n position: 'relative',\r\n [media.smallMobile]: { padding: 16 },\r\n [media.mobile]: { padding: 16 },\r\n padding: 20,\r\n },\r\n});\r\n\r\nexport default cardStyle;\r\n","import media from '../../../../../theme/MediaQueries';\r\nimport { LIST_ITEMS_FONT_SIZE, LIST_ITEMS_FONT_WEIGHT } from '../config/Constants';\r\n\r\nconst tenantLeadCardStyle = theme => ({\r\n typography: { wordBreak: 'break-all' },\r\n addressLine2: { display: 'inline-block' },\r\n photo: {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n border: `1px solid ${theme.palette.disabled}`,\r\n opacity: 0.8,\r\n boxSizing: 'border-box',\r\n },\r\n tenantImage: {\r\n [media.smallMobile]: { marginRight: 16 },\r\n [media.mobile]: { marginRight: 16 },\r\n marginRight: 32,\r\n },\r\n dataContainer: {\r\n position: 'relative',\r\n height: '100%',\r\n },\r\n textWithChip: {\r\n '& > :nth-last-child(2)': {\r\n [media.mobile]: { maxWidth: '70%' },\r\n maxWidth: '75%',\r\n },\r\n },\r\n name: {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n fontFamily: 'Open sans',\r\n color: theme.palette.text.primary,\r\n },\r\n card: { fontSize: '0.875rem' },\r\n disabled: { color: theme.palette.disabled },\r\n cardChip: {\r\n position: 'absolute',\r\n bottom: 2,\r\n right: 2,\r\n },\r\n icon: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n width: 'auto',\r\n },\r\n icons: {\r\n marginLeft: 2,\r\n fontSize: 24,\r\n },\r\n fullWidthMax: { maxWidth: '100%' },\r\n ellipsis: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n labelsContainer: { display: 'box' },\r\n label: { '&:hover': { color: theme.palette.primary.main } },\r\n listItemsFont: { fontSize: `${LIST_ITEMS_FONT_SIZE}`, fontWeight: `${LIST_ITEMS_FONT_WEIGHT}` },\r\n topMargin: { marginTop: theme.spacing(0.5) },\r\n topMarginForAddress: { marginTop: theme.spacing(2) },\r\n fullWidth: { width: '100%' },\r\n});\r\nexport default tenantLeadCardStyle;\r\n","const cardChipStyle = theme => ({\r\n customChip: {\r\n height: 20,\r\n borderRadius: 13,\r\n },\r\n tenant: { backgroundColor: theme.palette.chip.tenants },\r\n lead: { backgroundColor: theme.palette.chip.leads },\r\n reserved: { backgroundColor: theme.palette.chip.reservation },\r\n estimate: { backgroundColor: theme.palette.chip.estimate },\r\n // Lead estimate card chips\r\n estimateStatusActive: { backgroundColor: theme.palette.status.active, color: theme.palette.common.white },\r\n estimateStatusMovedIn: { backgroundColor: theme.palette.status.created, color: theme.palette.common.white },\r\n estimateStatusExpired: { backgroundColor: theme.palette.status.expired, color: theme.palette.common.white },\r\n //\r\n expired: { backgroundColor: theme.palette.chip.expired },\r\n chipLabel: {\r\n fontSize: 12,\r\n fontWeight: 600,\r\n paddingLeft: 14,\r\n paddingRight: 14,\r\n textTransform: 'uppercase',\r\n color: theme.palette.common.white,\r\n },\r\n});\r\n\r\nexport default cardChipStyle;\r\n","import { Grid, makeStyles }\r\nfrom 'Commons/components/generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { useRef } from 'react';\r\nimport Card from '../../../../generic/card/components/Card';\r\nimport occupancyCardStyles from '../styles/OccupanyCardStyles';\r\nimport localisable from '../../../../../config/strings/localisable';\r\nimport CardChip from '../../../chips/component/CardChip';\r\nimport {\r\n isEstimateExpired, getCardType, getCardLabel,\r\n getUnitTypeDescription, getUnitDescription,\r\n} from '../config/Utils';\r\n\r\n\r\nconst useStyles = makeStyles(occupancyCardStyles, { name: 'OccupancyCard' });\r\n\r\n\r\nconst OccupancyCard = (props) => {\r\n const {\r\n reservationCode = '', estimateCode = '',\r\n customer: {\r\n id: customerId, name: {\r\n firstName: customerFirstName = '',\r\n lastName: customerLastName = '',\r\n } = {},\r\n } = {},\r\n relationalData: { unit: unitList = [], unitType: unitTypeList = [] } = {},\r\n unitId, unitTypeId, cardType, expirationDate = '', reservationDate = '', CardProps, ...otherProps\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const { current: isExpired } = useRef(isEstimateExpired(expirationDate));\r\n const { current: variant } = useRef(getCardType(estimateCode, isExpired));\r\n const { current: label } = useRef(getCardLabel(estimateCode, isExpired));\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n reservationCode\r\n && (\r\n \r\n \r\n {`${localisable.reservation}: ${reservationCode}`}\r\n \r\n\r\n \r\n )\r\n }\r\n {\r\n estimateCode\r\n && (\r\n \r\n \r\n {`${localisable.estimate}: ${estimateCode}`}\r\n \r\n \r\n )\r\n }\r\n {\r\n unitId\r\n && (\r\n \r\n \r\n {getUnitDescription(unitId, unitList)}\r\n \r\n \r\n )\r\n }\r\n {\r\n unitTypeId\r\n && (\r\n \r\n \r\n {getUnitTypeDescription(unitTypeId, unitTypeList)}\r\n \r\n \r\n )\r\n }\r\n {\r\n customerId\r\n && (\r\n \r\n \r\n {`${customerFirstName} ${customerLastName}`}\r\n \r\n {\r\n expirationDate\r\n && (\r\n \r\n {`${localisable.estimateCreatedOn} ${expirationDate}`}\r\n \r\n )\r\n }\r\n {\r\n reservationDate\r\n && (\r\n \r\n {`${localisable.unitReservedOn} ${reservationDate}`}\r\n \r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nOccupancyCard.propTypes = {\r\n reservationCode: PropTypes.string,\r\n estimateCode: PropTypes.string,\r\n tenant: PropTypes.object,\r\n customer: PropTypes.object,\r\n cardType: PropTypes.string,\r\n expirationDate: PropTypes.string,\r\n reservationDate: PropTypes.string,\r\n relationalData: PropTypes.object,\r\n unitId: PropTypes.string,\r\n unitTypeId: PropTypes.string,\r\n CardProps: PropTypes.object,\r\n};\r\n\r\nexport default OccupancyCard;\r\n","\r\nconst occupancyCardStyles = theme => ({\r\n cardChip: {\r\n color: 'primary',\r\n position: 'absolute',\r\n bottom: theme.spacing(2.5),\r\n right: theme.spacing(1),\r\n width: 'auto',\r\n },\r\n chipLabel: { textTransform: 'capitalize', fontWeight: 400 },\r\n card: { cursor: 'pointer', border: `1px solid ${theme.palette.black[500]}` },\r\n typography: { fontWeight: 600 },\r\n});\r\nexport default occupancyCardStyles;\r\n","import { Typography, Grid, withStyles }\r\nfrom 'Commons/components/generic/componentlibrary/components/Components';\r\nimport Link from 'Generic/link/components/Link';\r\nimport { AUTO_SUGGEST_RESOURCE, DASHBOARD_TYPE } from 'Commons/config/constants/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport Card from '../../../../generic/card/components/Card';\r\nimport localisable from '../../../../../config/strings/localisable';\r\nimport unitCardStyles from '../styles/unitCardStyles';\r\n\r\nclass UnitCard extends React.Component {\r\n render() {\r\n const {\r\n name,\r\n unitType, addon, comments, disabled, classes, resource, onSelectCard,\r\n currentAccountId: { data: { id: accountId } = {} } = {},\r\n currentFacility: { data: { id: fid } = {} },\r\n id, onClickAway, ...props\r\n } = this.props;\r\n const disabledClassName = disabled ? classes.disabled : '';\r\n if (resource === AUTO_SUGGEST_RESOURCE.MOVE_OUT) {\r\n return (\r\n \r\n }}>\r\n \r\n {name}\r\n \r\n \r\n \r\n );\r\n }\r\n const getCardLink = () => buildUrl('unitEdit', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n\r\n const renderCard = extraProps => (\r\n \r\n \r\n \r\n {\r\n addon\r\n && (\r\n \r\n {addon}\r\n \r\n )\r\n }\r\n {\r\n name\r\n && (\r\n \r\n }}>\r\n {name}\r\n \r\n \r\n )\r\n }\r\n {\r\n unitType\r\n && (\r\n \r\n \r\n {`${localisable.unitCardType}:`}\r\n {localisable.nbsp}\r\n \r\n \r\n {unitType}\r\n \r\n \r\n )\r\n }\r\n\r\n {\r\n comments\r\n && (\r\n \r\n \r\n {`${localisable.unitCardComments}:`}\r\n {localisable.nbsp}\r\n \r\n {comments}\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n onSelectCard\r\n ? renderCard()\r\n : (\r\n \r\n {renderCard({ onClick: () => onClickAway() })}\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nUnitCard.propTypes = {\r\n name: PropTypes.string,\r\n comments: PropTypes.string,\r\n disabled: PropTypes.bool,\r\n CardProps: PropTypes.object,\r\n classes: PropTypes.object.isRequired,\r\n unitType: PropTypes.string,\r\n addon: PropTypes.object,\r\n onSelectCard: PropTypes.func,\r\n resource: PropTypes.number,\r\n id: PropTypes.string,\r\n currentFacility: PropTypes.object,\r\n currentAccountId: PropTypes.object,\r\n onClickAway: PropTypes.func,\r\n};\r\n\r\nUnitCard.defaultProps = {\r\n disabled: false,\r\n name: '',\r\n unitType: '',\r\n};\r\n\r\nexport default withStyles(unitCardStyles)(UnitCard);\r\n","const unitCardStyles = theme => ({\r\n card: { position: 'relative' },\r\n fonts: { fontSize: '0.875rem' },\r\n disabled: { color: theme.palette.disabled },\r\n icon: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n width: 'auto',\r\n },\r\n singleLineEllipsis: {\r\n ...theme.globalClasses.multilineEllipsis.style,\r\n lineClamp: 1,\r\n width: '80%',\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-all',\r\n },\r\n fullWidth: { width: '100%' },\r\n});\r\nexport default unitCardStyles;\r\n","const threeDotProgressStyle = theme => ({\r\n spinner: {\r\n display: 'inline',\r\n\r\n '& div': {\r\n width: 12,\r\n height: 12,\r\n backgroundColor: theme.palette.text.secondary,\r\n borderRadius: '100%',\r\n display: 'inline-block',\r\n '-webkit-animation': '$sk-bouncedelay 1.4s infinite ease-in-out both',\r\n animation: '$sk-bouncedelay 1.4s infinite ease-in-out both',\r\n },\r\n\r\n '& $bounce1': {\r\n '-webkit-animation-delay': '-0.32s',\r\n animationDelay: '-0.32s',\r\n },\r\n\r\n '& $bounce2': {\r\n '-webkit-animation-delay': '-0.16s',\r\n animationDelay: '-0.16s',\r\n },\r\n\r\n\r\n '@global': {\r\n '@keyframes sk-bouncedelay': {\r\n '0%, 80%, 100%': {\r\n '-webkit-transform': 'scale(0)',\r\n transform: 'scale(0)',\r\n },\r\n '40%': {\r\n '-webkit-transform': 'scale(1.0)',\r\n transform: 'scale(1.0)',\r\n },\r\n },\r\n },\r\n },\r\n bounce1: {},\r\n bounce2: {},\r\n bounce3: {},\r\n});\r\n\r\nexport default threeDotProgressStyle;\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst footerStyle = theme => ({\r\n footer: {\r\n borderRadius: 4,\r\n background: theme.palette.common.white,\r\n padding: theme.spacing(1),\r\n [media.laptopUp]: { padding: theme.spacing(1, 2) },\r\n [media.desktop]: { padding: theme.spacing(2, 4) },\r\n },\r\n divider: { backgroundColor: theme.palette.text.disabled },\r\n buttonBack: {},\r\n buttonPositive: { boxShadow: 'none' },\r\n buttonNegative: {},\r\n button: {},\r\n buttonWrapper: { width: 'auto' },\r\n buttonWidth: {\r\n minWidth: 114,\r\n minHeight: 30,\r\n [media.desktop]: {\r\n minWidth: 120,\r\n minHeight: 32,\r\n },\r\n [media.desktopUp]: {\r\n minWidth: 144,\r\n minHeight: 40,\r\n },\r\n },\r\n});\r\n\r\n\r\nexport default footerStyle;\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst modalStyle = theme => ({\r\n closeButton: {\r\n position: 'absolute',\r\n borderRadius: 0,\r\n outline: 'none',\r\n border: 'none',\r\n top: 0,\r\n right: 0,\r\n margin: '16px 16px 0px 0px',\r\n zIndex: 100,\r\n width: 'auto',\r\n height: 'auto',\r\n '&:hover': { backgroundColor: 'transparent' },\r\n },\r\n expandButton: {\r\n position: 'absolute',\r\n borderRadius: 0,\r\n outline: 'none',\r\n border: 'none',\r\n top: 0,\r\n right: 32,\r\n margin: '16px 16px 0px 0px',\r\n zIndex: 100,\r\n width: 'auto',\r\n height: 'auto',\r\n '&:hover': { backgroundColor: 'transparent' },\r\n },\r\n closeIcon: {},\r\n expandIcon: {},\r\n modalGrid: {\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n position: 'absolute',\r\n flexDirection: 'column',\r\n width: '21vw',\r\n minHeight: '30vh',\r\n backgroundColor: theme.palette.common.white,\r\n border: 'none',\r\n outline: 'none',\r\n [media.mobile]: { width: '95vw' },\r\n [media.tablet]: { width: '35vw' },\r\n [media.laptop]: { width: '25vw' },\r\n [media.desktop]: { width: '25vw' },\r\n },\r\n modal: {},\r\n modalBody: { position: 'relative', flex: '1 1 auto' },\r\n modalHeader: {\r\n minHeight: 50,\r\n position: 'relative',\r\n '& $closeButton': {\r\n bottom: 0,\r\n margin: 'auto 16px auto auto',\r\n },\r\n },\r\n modalFooter: {},\r\n modalDivider: { width: '100%' },\r\n});\r\nexport default modalStyle;\r\n","import React, { memo } from 'react';\r\nimport { Breadcrumbs, Grid, makeStyles, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport Link from '../../link/components/Link';\r\nimport breadCrumbStyle from '../styles/BreadCrumbStyle';\r\n\r\nconst useStyles = makeStyles(breadCrumbStyle, { name: 'BreadCrumbStyle' });\r\nconst Breadcrumb = (props) => {\r\n const { breadCrumbList = [] } = props;\r\n const classes = useStyles();\r\n const getHeader = () => (\r\n \r\n {breadCrumbList.map((breadCrumb) => {\r\n const { name, url } = breadCrumb;\r\n return (\r\n url ? {name} : {name}\r\n );\r\n })}\r\n \r\n );\r\n\r\n return (\r\n breadCrumbList.length ? {getHeader()} : null\r\n );\r\n};\r\n\r\nBreadcrumb.propTypes = { breadCrumbList: PropTypes.array };\r\n\r\nexport default memo(Breadcrumb);\r\n","const breadCrumbStyle = theme => ({\r\n pageHeading: {\r\n margin: theme.spacing(1.5, 0, 0, 0),\r\n width: '100%',\r\n minHeight: theme.spacing(5),\r\n borderRadius: 4,\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n});\r\n\r\nexport default breadCrumbStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst pageStyle = theme => ({\r\n page: {\r\n flex: 1,\r\n overflow: 'auto',\r\n position: 'relative',\r\n },\r\n fullHeight: { height: '100%' },\r\n pageHeader: {\r\n minHeight: theme.spacing(5),\r\n borderRadius: 4,\r\n padding: theme.spacing(0.5, 2),\r\n marginBottom: theme.spacing(0.5),\r\n backgroundColor: theme.palette.common.white,\r\n [media.desktop]: {\r\n marginBottom: theme.spacing(1),\r\n minHeight: theme.spacing(6),\r\n padding: theme.spacing(1, 4),\r\n },\r\n },\r\n withContent: { [media.desktop]: { padding: theme.spacing(1, 4) } },\r\n pageBody: {\r\n flex: 1,\r\n overflow: 'auto',\r\n borderRadius: 4,\r\n padding: theme.spacing(1),\r\n backgroundColor: theme.palette.common.white,\r\n [media.laptopUp]: { padding: theme.spacing(1, 2) },\r\n [media.desktop]: { padding: theme.spacing(2, 4) },\r\n },\r\n pageFooter: {\r\n marginTop: theme.spacing(0.5),\r\n [media.desktop]: { marginTop: theme.spacing(1) },\r\n },\r\n loader: {\r\n ...theme.globalClasses.deactivatedOverlay.style,\r\n position: 'absolute',\r\n backgroundColor: `${theme.palette.common.white}D9`,\r\n opacity: 1,\r\n },\r\n});\r\n\r\nexport default pageStyle;\r\n","const tableRowCountStyle = theme => ({ rowCount: ({ leftAndRightPadding }) => ({ padding: theme.spacing(0, 0, 1, leftAndRightPadding / 16) }) });\r\n\r\nexport default tableRowCountStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst FilterAndSortsStyle = theme => ({\r\n body: {\r\n padding: theme.spacing(2),\r\n [media.desktop]: { padding: theme.spacing(2, 4) },\r\n },\r\n bottomPadding: { paddingBottom: theme.spacing(2) },\r\n searchIcon: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: 34,\r\n },\r\n searchBorder: {\r\n borderRight: `1px solid ${theme.palette.black[300]}`,\r\n marginRight: theme.spacing(1),\r\n paddingRight: theme.spacing(1),\r\n [media.tabletUp]: {\r\n marginRight: theme.spacing(2),\r\n paddingRight: theme.spacing(2),\r\n },\r\n },\r\n autoWidth: { width: 'auto' },\r\n sortLabel: {\r\n alignSelf: 'flex-end',\r\n paddingRight: theme.spacing(2),\r\n },\r\n filterComponent: {\r\n position: 'absolute',\r\n left: 0,\r\n zIndex: 803,\r\n backgroundColor: theme.palette.common.white,\r\n boxShadow: theme.boxShadows[0],\r\n borderRadius: 4,\r\n },\r\n closeIcon: {\r\n position: 'absolute',\r\n zIndex: 804,\r\n top: 0,\r\n right: 0,\r\n },\r\n sortDropdown: { ...theme.typography.body2 },\r\n listItem: { ...theme.typography.body2 },\r\n chip: { height: theme.spacing(4) },\r\n sortModal: { height: '20%', width: '80%' },\r\n sortBody: { padding: theme.spacing(2) },\r\n searchInputField: { width: 'auto' },\r\n searchTextField: {\r\n width: '266px',\r\n '& input': { padding: 0 },\r\n },\r\n filtersAppliedBtn: {\r\n borderRadius: 50,\r\n ...theme.typography.body2,\r\n background: theme.palette.highlight,\r\n color: theme.palette.primary.main,\r\n '&:hover': {\r\n color: theme.palette.secondary.main,\r\n backgroundColor: theme.palette.button.hover,\r\n },\r\n },\r\n noPadding: { padding: 0 },\r\n filterText: { '&:hover': { cursor: 'pointer' } },\r\n buttonWidth: {\r\n minWidth: 92,\r\n minHeight: 35,\r\n },\r\n filterContainer: {},\r\n searchBottomMargin: { marginBottom: theme.spacing(4), paddingTop: theme.spacing(1) },\r\n});\r\n\r\nexport default FilterAndSortsStyle;\r\n","export { default as ConfigurationFilter } from './configurationFilter/components/ConfigurationFilter';\r\nexport { default as InventoryListFilter } from './inventoryListFilter/components/InventoryListFilter';\r\nexport { default as MaintenanceEventFilter } from './maintenanceEventFilter/components/MaintenanceEventFilter';\r\nexport { default as ReservationFilter } from './reservationFilter/components/ReservationFilter';\r\nexport { default as WaitingListFilter } from './waitingListFilter/components/WaitingListFilter';\r\nexport { default as TenantFilter } from './tenantFilter/components/TenantFilter';\r\nexport { default as UnitFilter } from './unitFilter/components/UnitFilter';\r\nexport { default as UserFilter } from './userFilter/components/UserFilter';\r\nexport { default as VendorFilter } from './vendorFilter/components/VendorFilter';\r\nexport { default as DelinquencyFilter } from './delinquencyFilter/components/DelinquencyFilter';\r\nexport { default as LeadFilter } from './leadFilter/components/LeadFilter';\r\nexport { default as PendingOverlockUnlockListFilter } from './pendingOverlockUnlock/components/PendingOverlockUnlockFilter';\r\nexport { default as ConversationListFilter } from './conversationListFilter/components/ConversationListFilter';\r\nexport { default as AllAchBatchesFilter } from './allAchBatchesFilter/components/AllAchBatchesFilter';\r\nexport { default as RentAdjustmentFilter } from './rentAdjustmentFilter/components/RentAdjustmentFilter';\r\nexport { default as AutomaticCreditCardDeclinesFilter } from './automaticCreditCardDeclines/components/AutomaticCreditCardDeclinesFilter';\r\nexport { default as RentAssessmentHistoryFilter } from './rentassessmenthistoryfilter/components/RentAssessmentHistoryFilter';\r\nexport { default as RentAdjustmentSummaryFilter } from './rentAdjustmentSummaryFilter/components/RentAdjustmentSummaryFilter';\r\nexport { default as SavedDocumentsListFilter } from './savedDocumentsListFilter/components/SavedDocumentsListFilter';\r\nexport { default as MigrationStagesFilter } from './migrationFilter/components/MigrationStagesFilter';\r\nexport { default as VehicleFilter } from './vehicleFilter/components/VehicleFilter';\r\nexport { default as EmailAuditFilter } from './emailAuditFilter/components/EmailAuditFilter';\r\nexport { default as LedgerReviewFilter } from './ledgerReviewFilter/components/LedgerReviewFilter';\r\nexport { default as FacilityFilter } from './facilityfilter/components/facilityfilter';\r\nexport { default as CreditCardBatchesFilter } from './creditCardBatchesFilter/components/CreditCardBatchesFilter';\r\nexport { default as CreateBatchFilter } from './createBatchFilter/components/CreateBatchFilter';\r\nexport { default as SavedDocumentFilter } from './savedDocumentFilter/components/SavedDocumentFilter';\r\nexport { default as DelinquencyTrackingOverviewFilter } from './delinquencyTrackingOverviewFilter/components/DelinquencyTrackingOverviewFilter';\r\nexport { default as DelinquencyTrackingLateEventFilter } from './delinquencyTrackingLateEventFilter/components/DelinquencyTrackingLateEventFilter';\r\nexport { default as DelinquencyTrackingLockoutEventFilter } from './delinquencyTrackingLockoutEventFilter/components/DelinquencyTrackingLockoutEventFilter';\r\nexport { default as DelinquencyTrackingScheduledEventFilter } from './delinquencyTrackingSchedulerFilter/components/DelinquencyTrackingSchedulerFilter';\r\nexport { default as DelinquencyTrackingWrongEntryFilter } from './delinquencyTrackingWrongEntriesFilter/components/DelinquencyTrackingWrongEntriesFilter';\r\nexport { default as JournalConfigurationChangesFilter } from './journalConfigurationChangesFilter/components/JournalConfigurationChangesFilter';\r\nexport { default as JournalLockoutEventFilter } from './journalLockoutEventsFilter/components/JournalLockoutEventFilter';\r\nexport { default as JournalUserRoleFilter } from './journalUserRoleFilter/components/JournalUserRoleFilter';\r\nexport { default as JournalUserManagementFilter } from './journalUserManagementFilter/components/JournalUserManagementFilter';\r\nexport { default as JournalLateEventFilter } from './journalLateEventFilter/components/JournalLateEventFilter';\r\nexport { default as OtherBatchesFilter } from './otherBatchesFilter/components/OtherBatchesFilter';\r\n","const checkboxGroupStyle = {\r\n root: {\r\n fontSize: 12,\r\n paddingBottom: 8,\r\n },\r\n};\r\n\r\nexport default checkboxGroupStyle;\r\n","const ConfigurationFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default ConfigurationFilterStyle;\r\n","const InventoryListFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default InventoryListFilterStyle;\r\n","const MaintenanceEventFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default MaintenanceEventFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport { deepMerge } from 'Commons/helpers/utils/DeepCopy';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\n\r\nconst getConfig = ({\r\n filter, requestType, endPoint, start, callback, sendCustomHeader = true,\r\n isStoreUpdate = false, payload,\r\n} = {}, passedConfig) => {\r\n const {\r\n api: { dynamic: { endPoint: passedEndpoint } = {} } = {}, store,\r\n sendCustomHeader: sendHeader = true,\r\n } = passedConfig || {};\r\n\r\n const storeConfig = {\r\n ...store,\r\n ...(payload && { payload }),\r\n };\r\n\r\n const initConfig = {\r\n method: 'read',\r\n requestType,\r\n callback,\r\n ...(passedEndpoint || endPoint) === CONFIG_ENDPOINTS.search && { resourceName: 'configSD' },\r\n };\r\n\r\n if (isObjWithKeys(store)) {\r\n initConfig.store = storeConfig;\r\n }\r\n\r\n if (!isStoreUpdate) {\r\n initConfig.api = {\r\n dynamic: {\r\n methodType: 'POST',\r\n ...(endPoint && { endPoint }),\r\n body: {\r\n view: VIEW.list.value,\r\n filter,\r\n ...(start && { start }),\r\n },\r\n ...(sendCustomHeader && sendHeader ? {\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n } : {}),\r\n },\r\n };\r\n }\r\n\r\n let config = initConfig;\r\n if (passedConfig) {\r\n config = deepMerge(initConfig, passedConfig);\r\n }\r\n return [config];\r\n};\r\n\r\nexport default getConfig;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst multiSelectStyle = theme => ({\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n maxHeight: 96,\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n '&:hover, &:focus, &:active': { backgroundColor: theme.palette.chip.reserved },\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n container: { width: 'auto' },\r\n componentContainerLabel: { margin: theme.spacing(2, 0, 3, 0) },\r\n tooltipContainer: {},\r\n chipContainerLabel: {\r\n margin: theme.spacing(3, 0, 1, 0),\r\n [media.desktop]: { margin: theme.spacing(4, 0, 1, 0) },\r\n },\r\n emptyValueMessage: { margin: theme.spacing(1) },\r\n tooltipLabel: {},\r\n tooltipDisabled: { cursor: 'default' },\r\n indicator: {\r\n fontSize: 8,\r\n [media.laptop]: { fontSize: 6 },\r\n [media.desktop]: { fontSize: 8 },\r\n cursor: 'default',\r\n lineHeight: 2,\r\n color: theme.palette.error.main,\r\n },\r\n indicatorWrapper: {\r\n minWidth: theme.spacing(2),\r\n minHeight: 0,\r\n maxWidth: theme.spacing(2),\r\n },\r\n InputContainer: { width: 'auto' },\r\n});\r\n\r\nexport default multiSelectStyle;\r\n","const ReservationFilterStyle = theme => ({\r\n autoWidth: { width: 'auto' },\r\n dateRangeLabel: { padding: theme.spacing(2, 0) },\r\n clearDate: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n },\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default ReservationFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getUnitTypeApiConfig = (entityId) => {\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint: CONFIG_ENDPOINTS.search,\r\n body: {\r\n view: VIEW.detail.value,\r\n filter: [\r\n {\r\n terms: {\r\n configType: ['Unit_Type'],\r\n entityType: ['Facility'],\r\n entityId: [entityId],\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n };\r\n return {\r\n search: apiConfig,\r\n autoSuggest: apiConfig,\r\n sendCustomHeader: false,\r\n };\r\n};\r\n\r\nexport { getUnitTypeApiConfig };\r\n","const datePickerStyle = {\r\n rightMarginIcon: { marginRight: 8 },\r\n leftMarginIcon: { marginLeft: 8 },\r\n datePickerIcon: {},\r\n datePickerContainer: {},\r\n container: {},\r\n};\r\n\r\nexport default datePickerStyle;\r\n","const RangeFilterStyle = theme => ({\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n dateRangeLabel: { padding: theme.spacing(3, 0, 2, 0) },\r\n input: { paddingBottom: theme.spacing(2) },\r\n clearBalance: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n },\r\n});\r\n\r\nexport default RangeFilterStyle;\r\n","const DATE_RANGE_WIDTH = 170;\r\n\r\n\r\nexport { DATE_RANGE_WIDTH };\r\n","const WaitingListFilterStyle = theme => ({\r\n autoWidth: { width: 'auto' },\r\n dateRangeLabel: { padding: theme.spacing(2, 0) },\r\n clearDate: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n },\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n\r\n firstLabel: { paddingBottom: theme.spacing(1) },\r\n topMargin: { marginTop: theme.spacing(3) },\r\n restLabel: {\r\n paddingTop: '24px',\r\n paddingBottom: '8px',\r\n },\r\n\r\n});\r\n\r\nexport default WaitingListFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport CONFIG_TYPE from 'External/containers/configuration/config/ConfigRequestType';\r\nimport { ENTITY_TYPE } from 'External/containers/configuration/config/Constants';\r\n\r\nconst getUnitTypeApiConfig = (entityId) => {\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint: CONFIG_ENDPOINTS.search,\r\n body: {\r\n view: VIEW.detail.value,\r\n filter: [\r\n {\r\n terms: {\r\n configType: [CONFIG_TYPE.UNIT_TYPE],\r\n entityType: [ENTITY_TYPE.FACILITY],\r\n entityId: [entityId],\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n };\r\n return {\r\n search: apiConfig,\r\n autoSuggest: apiConfig,\r\n sendCustomHeader: false,\r\n };\r\n};\r\n\r\nexport { getUnitTypeApiConfig };\r\n","const TenantFilterStyle = theme => ({\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n withoutTokenCheckbox: { marginLeft: theme.spacing(4) },\r\n});\r\n\r\nexport default TenantFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getUnitTypeApiConfig = (entityId) => {\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint: CONFIG_ENDPOINTS.search,\r\n body: {\r\n view: VIEW.detail.value,\r\n filter: [\r\n {\r\n terms: {\r\n configType: ['Unit_Type'],\r\n entityType: ['Facility'],\r\n entityId: [entityId],\r\n },\r\n },\r\n ],\r\n },\r\n },\r\n },\r\n };\r\n return {\r\n search: apiConfig,\r\n autoSuggest: apiConfig,\r\n sendCustomHeader: false,\r\n };\r\n};\r\n\r\nexport { getUnitTypeApiConfig };\r\n","const UnitFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default UnitFilterStyle;\r\n","const UserFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default UserFilterStyle;\r\n","const VendorFilterStyle = ({\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n});\r\n\r\nexport default VendorFilterStyle;\r\n","const filterStyle = theme => ({\r\n filterSection: { padding: theme.spacing(1, 2) },\r\n filterTextField: { '& *': { boxSizing: 'content-box' } },\r\n buttonLabel: {\r\n fontWeight: 600,\r\n cursor: 'pointer',\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n});\r\n\r\nexport default filterStyle;\r\n","const leadFilterStyle = theme => ({\r\n overflow: {\r\n overflow: 'auto',\r\n marginTop: theme.spacing(3),\r\n maxHeight: 500,\r\n flexWrap: 'nowrap',\r\n },\r\n toDateField: {\r\n marginLeft: theme.spacing(5),\r\n marginRight: ({ isMobile }) => theme.spacing(isMobile ? 2 : 0),\r\n },\r\n marginForLeadStatus: { marginLeft: theme.spacing(12), marginTop: theme.spacing(2) },\r\n autoWidth: { width: 'auto' },\r\n dateRangeLabel: { padding: theme.spacing(2, 0) },\r\n clearDate: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n marginRight: ({ isMobile }) => theme.spacing(isMobile ? 2 : 0),\r\n },\r\n unitTypeTopMargin: { marginTop: theme.spacing(2) },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n});\r\n\r\nexport default leadFilterStyle;\r\n","const PendingOverlockUnlockFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default PendingOverlockUnlockFilterStyle;\r\n","const ConversationListFilterStyle = theme => ({\r\n autoWidth: { width: 'auto' },\r\n clearDate: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n});\r\n\r\nexport default ConversationListFilterStyle;\r\n","const AllAchBatchesFilterStyle = theme => ({\r\n autoWidth: { width: 'auto' },\r\n dateRangeLabel: { padding: theme.spacing(2, 0) },\r\n clearDate: {\r\n alignSelf: 'flex-end',\r\n paddingTop: theme.spacing(1),\r\n },\r\n});\r\n\r\nexport default AllAchBatchesFilterStyle;\r\n","const RentAdjustmentFilterStyle = ({ firstLabel: { paddingBottom: '16px' } });\r\n\r\nexport default RentAdjustmentFilterStyle;\r\n","const AutomaticCreditCardDeclinesFilterStyle = ({\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabels: { padding: '8px 0' },\r\n clearDate: { justifyContent: 'end' },\r\n});\r\n\r\nexport default AutomaticCreditCardDeclinesFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { UNIT_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getApiConfig = (selectedFacility, isAutoSuggest = false) => ({\r\n api: {\r\n dynamic: {\r\n endPoint: isAutoSuggest ? UNIT_ENDPOINTS.autoSuggest : UNIT_ENDPOINTS.search,\r\n body: { view: VIEW.detail.value },\r\n headers: {\r\n 'context-id': selectedFacility,\r\n 'context-type': 'Facility',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst getUnitApiConfig = selectedFacility => ({\r\n search: getApiConfig(selectedFacility),\r\n autoSuggest: getApiConfig(selectedFacility, true),\r\n sendCustomHeader: false,\r\n});\r\n\r\nexport { getUnitApiConfig };\r\n","const RentAdjustmentSummaryFilterStyle = ({ unitMultiSelect: { height: '250px' } });\r\n\r\nexport default RentAdjustmentSummaryFilterStyle;\r\n","const SavedDocumentsListFilterStyle = theme => ({\r\n tenantMultiSelect: { paddingTop: theme.spacing(5) },\r\n firstLabel: { paddingBottom: theme.spacing(2) },\r\n label: {\r\n paddingTop: theme.spacing(5),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n chipWrapper: { minHeight: theme.spacing(16) },\r\n});\r\n\r\nexport default SavedDocumentsListFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { TENANT_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getApiConfig = (selectedFacility, isAutoSuggest = false) => ({\r\n api: {\r\n dynamic: {\r\n endPoint: isAutoSuggest ? TENANT_ENDPOINTS.autoSuggest : TENANT_ENDPOINTS.search,\r\n body: { view: VIEW.detail.value },\r\n headers: {\r\n 'context-id': selectedFacility,\r\n 'context-type': 'Facility',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst getTenantApiConfig = selectedFacility => ({\r\n search: getApiConfig(selectedFacility),\r\n autoSuggest: getApiConfig(selectedFacility, true),\r\n sendCustomHeader: false,\r\n});\r\n\r\nexport { getTenantApiConfig };\r\n","const migrationStagesStyle = theme => (\r\n {\r\n filterLabel: { marginBottom: theme.spacing(2.5) },\r\n migrationLabel: { paddingTop: theme.spacing(2) },\r\n accountLabel: { paddingTop: theme.spacing(2), marginBottom: theme.spacing(2.5) },\r\n accountSearch: { flexDirection: 'column' },\r\n input: { paddingBottom: theme.spacing(0.25), paddingTop: 0 },\r\n });\r\n\r\nexport default migrationStagesStyle;\r\n","const VehicleFilterStyle = theme => ({\r\n firstLabel: { padding: theme.spacing(1, 0, 2, 0) },\r\n restLabel: { padding: theme.spacing(4, 0, 2, 0) },\r\n});\r\n\r\nexport default VehicleFilterStyle;\r\n","const LedgerReviewFilterStyle = theme => ({\r\n paddingTop: { paddingTop: theme.spacing(3) },\r\n justifyRight: { justifyContent: 'flex-end', width: 'auto' },\r\n});\r\n\r\nexport default LedgerReviewFilterStyle;\r\n","const FacilityFilterStyle = theme => ({\r\n firstLabel: { paddingBottom: theme.spacing(2) },\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n withoutTokenCheckbox: { marginLeft: theme.spacing(4) },\r\n});\r\n\r\nexport default FacilityFilterStyle;\r\n","const radioGroupStyle = theme => ({\r\n preferred: { color: theme.palette.primary.main },\r\n required: { color: theme.palette.error.main },\r\n radioButtonGroup: {},\r\n paddingTop: { paddingTop: 12 },\r\n root: { fontSize: 12 },\r\n formControlLabelRoot: {},\r\n readOnly: {\r\n color: theme.palette.text.disabled,\r\n pointerEvents: 'none',\r\n },\r\n InheritedConfigLabel: { pointerEvents: 'none' },\r\n});\r\n\r\nexport default radioGroupStyle;\r\n","const createBatchStyle = theme => (\r\n { firstLabel: { paddingBottom: theme.spacing(2) } }\r\n);\r\n\r\nexport default createBatchStyle;\r\n","const FACILITY_TYPE = [\r\n {\r\n label: 'Anniversary',\r\n value: 'true',\r\n },\r\n {\r\n label: 'Non-Anniversary',\r\n value: 'false',\r\n },\r\n];\r\n\r\n\r\nexport { FACILITY_TYPE };\r\n","const DelinquencyTrackingOverviewFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingOverviewFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getLateEventApiConfig = (entityId, accountId, extraFilters = {}) => {\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint: CONFIG_ENDPOINTS.search,\r\n body: {\r\n view: VIEW.detail.value,\r\n filter: [{\r\n terms: {\r\n value: { status: ['Active'], ...extraFilters },\r\n entityId: [entityId],\r\n entityType: ['Facility'],\r\n configType: ['Late_Event'],\r\n },\r\n }],\r\n },\r\n ...accountId\r\n && {\r\n headers: {\r\n 'context-type': 'Account',\r\n 'context-id': accountId,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n return {\r\n search: apiConfig,\r\n autoSuggest: apiConfig,\r\n sendCustomHeader: false,\r\n };\r\n};\r\n\r\nexport { getLateEventApiConfig };\r\n","const DelinquencyTrackingLateEventFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingLateEventFilterStyle;\r\n","const DelinquencyTrackingLockoutEventFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingLockoutEventFilterStyle;\r\n","import { DELINQUENCY_SCHEDULED_STATUS } from 'Commons/config/constants/Constants';\r\n\r\nconst STATUS = [\r\n {\r\n label: 'Scheduled',\r\n value: DELINQUENCY_SCHEDULED_STATUS.Active.value,\r\n },\r\n {\r\n label: 'Deleted',\r\n value: DELINQUENCY_SCHEDULED_STATUS.Inactive.value,\r\n },\r\n];\r\n\r\n\r\nexport { STATUS };\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getLateEventApiConfig = (entityId, accountId) => {\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint: CONFIG_ENDPOINTS.search,\r\n body: {\r\n view: VIEW.detail.value,\r\n filter: [{\r\n terms: {\r\n value: { status: ['Active'] },\r\n entityId: [entityId],\r\n entityType: ['Facility'],\r\n configType: ['Late_Event'],\r\n },\r\n }],\r\n },\r\n ...accountId\r\n && {\r\n headers: {\r\n 'context-type': 'Account',\r\n 'context-id': accountId,\r\n },\r\n },\r\n },\r\n },\r\n };\r\n return {\r\n search: apiConfig,\r\n autoSuggest: apiConfig,\r\n sendCustomHeader: false,\r\n };\r\n};\r\n\r\nexport { getLateEventApiConfig };\r\n","const DelinquencyTrackingSchedulerFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingSchedulerFilterStyle;\r\n","const DelinquencyTrackingWrongEntriesFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: '16px' },\r\n restLabel: {\r\n paddingTop: '32px',\r\n paddingBottom: '16px',\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingWrongEntriesFilterStyle;\r\n","const JournalConfigurationChangesFilterStyle = theme => ({\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n});\r\n\r\nexport default JournalConfigurationChangesFilterStyle;\r\n","const JournalLockoutEventFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n\r\n});\r\n\r\nexport default JournalLockoutEventFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { TENANT_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getApiConfig = (selectedFacility, isAutoSuggest = false) => ({\r\n api: {\r\n dynamic: {\r\n endPoint: isAutoSuggest ? TENANT_ENDPOINTS.autoSuggest : TENANT_ENDPOINTS.search,\r\n body: { view: VIEW.detail.value },\r\n headers: {\r\n 'context-id': selectedFacility,\r\n 'context-type': 'Facility',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst getTenantApiConfig = selectedFacility => ({\r\n search: getApiConfig(selectedFacility),\r\n autoSuggest: getApiConfig(selectedFacility, true),\r\n sendCustomHeader: false,\r\n});\r\n\r\nexport { getTenantApiConfig };\r\n","const JournalUserRoleFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n\r\n});\r\n\r\nexport default JournalUserRoleFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\n\r\nconst getApiConfig = (contextId, view = VIEW.detail.value) => {\r\n const endPoint = 'user-role/search';\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint,\r\n body: { view },\r\n headers: {\r\n 'context-id': contextId,\r\n 'context-type': 'Account',\r\n },\r\n },\r\n },\r\n };\r\n return apiConfig;\r\n};\r\n\r\nconst getUserRoleApiConfig = accountId => ({\r\n search: getApiConfig(accountId),\r\n autoSuggest: getApiConfig(accountId),\r\n sendCustomHeader: false,\r\n});\r\nexport { getUserRoleApiConfig };\r\n","const JournalUserManagementFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n\r\n});\r\n\r\nexport default JournalUserManagementFilterStyle;\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\n\r\nconst getApiConfig = (contextId, view = VIEW.detail.value) => {\r\n const endPoint = 'user/search';\r\n const apiConfig = {\r\n api: {\r\n dynamic: {\r\n endPoint,\r\n body: { view },\r\n headers: {\r\n 'context-id': contextId,\r\n 'context-type': 'Account',\r\n },\r\n },\r\n },\r\n };\r\n return apiConfig;\r\n};\r\n\r\nconst getUserApiConfig = accountId => ({\r\n search: getApiConfig(accountId),\r\n autoSuggest: getApiConfig(accountId),\r\n sendCustomHeader: false,\r\n});\r\nexport { getUserApiConfig };\r\n","import { VIEW } from 'Commons/config/constants/Constants';\r\nimport { TENANT_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst getApiConfig = (selectedFacility, isAutoSuggest = false) => ({\r\n api: {\r\n dynamic: {\r\n endPoint: isAutoSuggest ? TENANT_ENDPOINTS.autoSuggest : TENANT_ENDPOINTS.search,\r\n body: { view: VIEW.detail.value },\r\n headers: {\r\n 'context-id': selectedFacility,\r\n 'context-type': 'Facility',\r\n },\r\n },\r\n },\r\n});\r\n\r\nconst getTenantApiConfig = selectedFacility => ({\r\n search: getApiConfig(selectedFacility),\r\n autoSuggest: getApiConfig(selectedFacility, true),\r\n sendCustomHeader: false,\r\n});\r\n\r\nexport { getTenantApiConfig };\r\n","const DelinquencyTrackingLateEventFilterStyle = theme => ({\r\n addButton: {\r\n minWidth: theme.spacing(4),\r\n minHeight: theme.spacing(4),\r\n marginLeft: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.secondary.main,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n chipWrapper: {\r\n maxWidth: theme.spacing(36),\r\n marginTop: theme.spacing(2),\r\n overflow: 'auto',\r\n },\r\n ellipsis: {\r\n width: '100%',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n firstLabel: { paddingBottom: theme.spacing(2) },\r\n restLabel: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n\r\n});\r\n\r\nexport default DelinquencyTrackingLateEventFilterStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst smartListActionItemsPanelStyle = theme => ({\r\n actionItemsContainer: { padding: theme.spacing(2, 0, 2, 4) },\r\n actionItem: { paddingRight: theme.spacing(4) },\r\n backToDashboardActionItem: {\r\n paddingRight: theme.spacing(4),\r\n [media.mobile]: { paddingRight: theme.spacing(1) },\r\n },\r\n});\r\n\r\nexport default smartListActionItemsPanelStyle;\r\n","const actionItemsStyle = theme => ({\r\n disabledText: { color: theme.palette.text.disabled },\r\n disabledAction: { cursor: 'default', pointerEvents: 'none' },\r\n});\r\n\r\nexport default actionItemsStyle;\r\n","import PropTypes from 'prop-types';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Typography from '../../typography/components/Typography';\r\n\r\nexport default function HeaderOrFooterCell(props) {\r\n const { text, style, className, classes } = props;\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n}\r\n\r\nHeaderOrFooterCell.propTypes = {\r\n className: PropTypes.string,\r\n style: PropTypes.shape(),\r\n text: PropTypes.node,\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nHeaderOrFooterCell.defaultProps = {\r\n className: '',\r\n style: {},\r\n text: '',\r\n};\r\n","import { TABLE_ROW_HEIGHT_VARIANT } from 'Commons/config/constants/Constants';\r\nimport media from '../../../../theme/MediaQueries';\r\n\r\nconst tableStyle = theme => ({\r\n table: {\r\n display: 'flex',\r\n height: '100%',\r\n color: theme.palette.text.primary,\r\n flexDirection: 'column',\r\n },\r\n tableGrid: {\r\n flexGrow: 1,\r\n display: 'flex',\r\n position: 'relative',\r\n overflow: 'auto',\r\n width: '1024px',\r\n [media.tabletUp]: { width: 'auto' },\r\n },\r\n gridColumn: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n flex: '1 1 auto',\r\n },\r\n fixedGridContainer: {\r\n flex: '0 0 75px',\r\n zIndex: 10,\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n '& $fixedGrid': { overflow: 'hidden !important' },\r\n },\r\n fixedGrid: {},\r\n marginalsGrid: {\r\n overflow: 'hidden !important',\r\n outline: 'none',\r\n },\r\n bodyGrid: {\r\n width: 'auto',\r\n overflow: 'auto',\r\n scrollBehavior: 'smooth',\r\n willChange: 'inherit !important',\r\n outline: 'none',\r\n },\r\n tableFooter: {\r\n position: 'absolute',\r\n width: '100%',\r\n margin: 0,\r\n backgroundColor: `${theme.palette.common.white}CC`,\r\n },\r\n [`atTop${TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER}`]: { top: TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER },\r\n [`atTop${TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER}`]: { top: TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER },\r\n [`atTop${TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER_RESPONSIVE}`]: { top: TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER_RESPONSIVE },\r\n [`atTop${TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER_RESPONSIVE}`]: { top: TABLE_ROW_HEIGHT_VARIANT.HEADER_TWO_LINER_RESPONSIVE },\r\n atBottom: { bottom: 0 },\r\n headerFooterCell: {\r\n display: 'flex',\r\n textAlign: 'left',\r\n width: '100%',\r\n height: '100%',\r\n cursor: 'default',\r\n overflow: 'hidden',\r\n padding: 8,\r\n boxSizing: 'border-box',\r\n fontWeight: 600,\r\n },\r\n cell: {\r\n padding: 8,\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n },\r\n row: {\r\n display: 'flex',\r\n boxSizing: 'border-box',\r\n padding: theme.spacing(0.2, 0),\r\n },\r\n bodyRow: {\r\n '&:hover': {\r\n backgroundColor: theme.palette.hover,\r\n '& $hiddenColumn': { '& > div': { visibility: 'visible' } },\r\n },\r\n },\r\n firstColumn: { paddingLeft: 32 },\r\n firstColumnDefaultPadding: { paddingLeft: 8 },\r\n firstColumnDefaultHeader: { paddingLeft: 12 },\r\n activeRibbon: { borderLeft: `4px solid ${theme.palette.ribbon.active}` },\r\n inactiveRibbon: { borderLeft: `4px solid ${theme.palette.status.inactive}` },\r\n noLeftPadding: { paddingLeft: 0 },\r\n lastColumn: {\r\n paddingRight: 16,\r\n '&$hiddenColumn': { '& > div': { visibility: 'hidden' } },\r\n },\r\n rowBorder: { borderBottom: `1px solid ${theme.palette.black[300]}` },\r\n marginalsBorder: { borderBottom: `1px solid ${theme.palette.black[600]}` },\r\n marginalsBorderTop: { borderTop: `1px solid ${theme.palette.black[600]}` },\r\n hiddenColumn: {},\r\n\r\n alignLeft: { justifyContent: 'flex-start', textAlign: 'left' },\r\n alignRight: { justifyContent: 'flex-end', textAlign: 'right' },\r\n alignCenter: { justifyContent: 'center', textAlign: 'center' },\r\n\r\n vAlignTop: { alignItems: 'flex-start' },\r\n vAlignBottom: { alignItems: 'flex-end' },\r\n vAlignCenter: { alignItems: 'center' },\r\n disabledCell: {\r\n position: 'absolute',\r\n height: '100%',\r\n backgroundColor: theme.hexWithOpacity(theme.palette.common.white, 3),\r\n zIndex: 802,\r\n },\r\n coloredSquare: {\r\n marginRight: theme.spacing(1),\r\n width: 16,\r\n height: 16,\r\n outline: 'none',\r\n alignContent: 'center',\r\n },\r\n activeStatusColor: { background: theme.palette.ribbon.active },\r\n inactiveStatusColor: { background: theme.palette.status.inactive },\r\n activeStatusContainer: { marginRight: theme.spacing(5) },\r\n inactiveStatusContainer: { marginLeft: theme.spacing(3) },\r\n activeInactiveLabel: { padding: theme.spacing(0, 3) },\r\n activeInactiveListPage: {\r\n margin: theme.spacing(1, 4.5, 0, 4.5),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n activeInactiveSettingsPage: { padding: theme.spacing(1, 4.5, 2, 0) },\r\n});\r\n\r\nexport default tableStyle;\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst tablePaperStyle = theme => ({\r\n actionIcons: {\r\n '& > div': { marginLeft: 8 },\r\n '& *': { boxSizing: 'border-box' },\r\n width: 'auto',\r\n },\r\n hoverIcon: { '&:hover': { borderBottom: `1px solid ${theme.palette.text.primary}` } },\r\n icon: { color: theme.palette.text.primary },\r\n optionsStyle: {\r\n zIndex: 800,\r\n '& > div': { padding: '14px 16px' },\r\n },\r\n searchTextField: {\r\n // Using vw since the tablet sizes might vary\r\n [media.tabletLandscape]: { width: '25vw' },\r\n [media.laptopUp]: {\r\n width: '400px',\r\n display: 'block',\r\n },\r\n },\r\n searchInputField: {\r\n padding: 0,\r\n marginTop: 0,\r\n },\r\n tableContainer: {\r\n flex: 1,\r\n backgroundColor: theme.palette.common.white,\r\n '& *': { outline: 'none', boxSizing: 'border-box' },\r\n },\r\n popper: {\r\n position: 'absolute',\r\n right: 0,\r\n },\r\n openSearchTextField: { padding: theme.spacing(1) },\r\n componentLink: {\r\n '&:hover': {\r\n cursor: 'pointer',\r\n color: theme.palette.secondary.main,\r\n },\r\n paddingLeft: theme.spacing(3),\r\n },\r\n pageBody: {\r\n overflow: 'initial',\r\n padding: 0,\r\n },\r\n pageHeader: {},\r\n actionItemLabel: { whiteSpace: 'pre' },\r\n page: {},\r\n title: {},\r\n fullHeight: { height: '100%' },\r\n});\r\nexport default tablePaperStyle;\r\n","import { withStyles, Chip as DefaultChip, Typography, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport CustomIcon from 'Generic/icon/components/Icon';\r\nimport ChipStyle from '../style/FilterChipStyle';\r\n\r\nconst Chip = ({\r\n data,\r\n isInModal,\r\n onDeleteChip,\r\n onSelectChip,\r\n classes,\r\n}) => {\r\n const deleteChip = (event, index) => {\r\n event.stopPropagation();\r\n onDeleteChip(data, index);\r\n };\r\n\r\n const renderNestedChips = () => {\r\n const nestedChips = [];\r\n for (let index = 0; index < data.value.length; index += 1) {\r\n if (data.value[index] === '...') {\r\n nestedChips.push(\r\n \r\n ...\r\n ,\r\n );\r\n break;\r\n } else {\r\n nestedChips.push(\r\n \r\n \r\n \r\n )}\r\n onDelete={event => deleteChip(event, index)}\r\n />,\r\n );\r\n }\r\n }\r\n return nestedChips;\r\n };\r\n\r\n const renderValue = () => {\r\n if (Array.isArray(data.value)) {\r\n return renderNestedChips();\r\n }\r\n return {data.value};\r\n };\r\n\r\n const isNested = () => {\r\n if (isInModal && Array.isArray(data.value)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n return (\r\n deleteChip(event)}\r\n >\r\n \r\n \r\n )}\r\n label={(\r\n \r\n \r\n {data.label}\r\n \r\n \r\n {renderValue()}\r\n \r\n \r\n )}\r\n />\r\n );\r\n};\r\n\r\nChip.propTypes = {\r\n data: PropTypes.shape({\r\n label: PropTypes.string,\r\n value: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.array,\r\n ]),\r\n }),\r\n isInModal: PropTypes.bool,\r\n onDeleteChip: PropTypes.func,\r\n onSelectChip: PropTypes.func,\r\n classes: PropTypes.object,\r\n};\r\n\r\nChip.defaultProps = { data: null, isInModal: false };\r\n\r\nexport default withStyles(ChipStyle)(Chip);\r\n","const ChipStyle = theme => ({\r\n root: {\r\n backgroundColor: theme.palette.disabled,\r\n opacity: 0.6,\r\n marginLeft: 10,\r\n },\r\n rootInModal: {\r\n paddingTop: 5,\r\n paddingBottom: 5,\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n marginLeft: 0,\r\n marginBottom: 10,\r\n height: 'auto',\r\n },\r\n nestedChipRoot: {\r\n marginRight: 6,\r\n backgroundColor: theme.palette.common.white,\r\n fontSize: 14,\r\n height: 24,\r\n '&:hover, &:focus, &:active': { backgroundColor: theme.palette.common.white },\r\n },\r\n nestedChipRootInModal: { marginBottom: 10 },\r\n label: { paddingLeft: 6, paddingRight: 6 },\r\n closeIcon: { fontSize: 14, color: theme.palette.common.black },\r\n deleteIcon: {\r\n backgroundColor: theme.palette.border,\r\n width: 20,\r\n height: 20,\r\n borderRadius: 10,\r\n marginLeft: 0,\r\n },\r\n nestedChipContainerExpanded: { marginTop: 10 },\r\n nestedChip: {\r\n backgroundColor: theme.palette.common.white,\r\n marginRight: 6,\r\n height: 24,\r\n display: 'flex',\r\n flexWrap: 'noWrap',\r\n flex: 1,\r\n },\r\n iconRoot: {\r\n marginLeft: 6,\r\n marginRight: 0,\r\n },\r\n leftIcon: {\r\n backgroundColor: theme.palette.common.white,\r\n width: 24,\r\n height: 24,\r\n minWidth: 24,\r\n borderRadius: 12,\r\n },\r\n title: {\r\n fontWeight: 600,\r\n marginRight: 6,\r\n },\r\n detail: { marginRight: 10 },\r\n});\r\n\r\nexport default ChipStyle;\r\n","import {\r\n FILTER_LABEL_LEFT_MARGIN,\r\n SHOW_MORE_BUTTON_RIGHT_MARGIN,\r\n SHOW_MORE_BUTTON_LEFT_MARGIN,\r\n} from '../config/Constants';\r\nimport media from '../../../../theme/MediaQueries';\r\n\r\nconst AppliedFilterContainerStyle = theme => ({\r\n rootContainer: { background: theme.palette.common.white },\r\n normalContainer: {\r\n alignItems: 'center',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n maxHeight: 75,\r\n padding: '0 0 0 32px',\r\n flex: 1,\r\n },\r\n normalContainerInModal: {\r\n [media.mobile]: { padding: '0 8px' },\r\n [media.phablet]: { padding: '0 8px' },\r\n [media.tablet]: { padding: '0 8px' },\r\n [media.laptopUp]: { padding: '0 32px 10px 32px' },\r\n },\r\n noFiltersApplied: { margin: 0 },\r\n label: {\r\n fontSize: 16,\r\n fontWeight: 600,\r\n margin: FILTER_LABEL_LEFT_MARGIN,\r\n marginRight: 0,\r\n marginLeft: 0,\r\n },\r\n showMoreButton: {\r\n fontSize: 14,\r\n fontWeight: 600,\r\n color: theme.palette.secondary.main,\r\n alignSelf: 'center',\r\n marginRight: SHOW_MORE_BUTTON_RIGHT_MARGIN,\r\n marginLeft: SHOW_MORE_BUTTON_LEFT_MARGIN,\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n container: {\r\n [media.mobile]: {\r\n marginLeft: '2px',\r\n marginTop: '2px',\r\n },\r\n [media.phablet]: {\r\n marginLeft: '2px',\r\n marginTop: '2px',\r\n },\r\n [media.tablet]: {\r\n marginLeft: '2px',\r\n marginTop: '2px',\r\n },\r\n [media.laptopUp]: {\r\n marginLeft: 16,\r\n marginTop: 16,\r\n },\r\n },\r\n mobileSectionHeader: { paddingBottom: 15, marginBottom: 16, borderBottom: `1px solid ${theme.palette.border}` },\r\n title: { '& span': { fontWeight: 'bolder' } },\r\n listItemContainer: { padding: 0 },\r\n noOfFiltersContainer: {\r\n width: '3px',\r\n height: '3px',\r\n display: 'inline',\r\n backgroundColor: theme.palette.common.secondary,\r\n },\r\n noOfFiltersText: {\r\n fontSize: '0.625rem',\r\n color: 'white',\r\n display: 'inline',\r\n },\r\n clearAllButton: { margin: 0 },\r\n});\r\n\r\nexport default AppliedFilterContainerStyle;\r\n","import { FormCheckboxGroup } from 'Commons/components/generic/checkboxgroup/components/CheckBoxGroup';\r\nimport Chip from 'Commons/components/generic/chip/components/Chip';\r\nimport { makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { VARIANT } from 'Commons/components/generic/form/config/FormComponentsConfig';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport { Formik, Form } from 'formik';\r\nimport { memo, useRef } from 'react';\r\nimport { setIn } from 'Commons/helpers/utils/DataHelpers';\r\nimport quickFiltersStyle from '../styles/QuickFilterStyle';\r\n\r\nconst useStyles = makeStyles(quickFiltersStyle, { name: 'QuickFilters' });\r\n\r\n// TODO: Initial implementation, figure out the design. It'll make more sense to have it inside FiltersAnd Sorts component\r\nconst QuickFilters = ({ list, initialValues, applyFilter, classes: classesProps }) => {\r\n const classes = useStyles({ classes: classesProps });\r\n const formPropsRef = useRef({});\r\n const { typographyProps, chipClasses, filledChipClasses } = useConstructor(() => ({\r\n typographyProps: { variant: 'subtitle2', className: classes.chipLabel },\r\n chipClasses: { root: classes.chip },\r\n filledChipClasses: { root: classes.filledChip },\r\n }));\r\n\r\n const onChangeFilter = (_, value, fieldName) => {\r\n const { current: { values = {} } = {} } = formPropsRef;\r\n // TODO: use setValues once that is fixed.\r\n const updatedValues = setIn(deepCopy(values), fieldName, value);\r\n applyFilter(updatedValues);\r\n };\r\n\r\n return (\r\n {\r\n formPropsRef.current = formProps;\r\n return (\r\n
\r\n {\r\n list.map(({ label, fieldName, value }) => (\r\n onChangeFilter(event, fieldValue, fieldName)}\r\n containerClassName={classes.checkboxContainer}\r\n list={[{\r\n value,\r\n icon: (\r\n \r\n ),\r\n checkedIcon: (\r\n \r\n ),\r\n }]}\r\n />\r\n ))\r\n }\r\n \r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nQuickFilters.propTypes = {\r\n applyFilter: PropTypes.func,\r\n initialValues: PropTypes.object,\r\n list: PropTypes.array.isRequired,\r\n classes: PropTypes.object,\r\n};\r\n\r\nQuickFilters.defaultProps = { initialValues: {} };\r\n\r\nexport default memo(QuickFilters);\r\n","const quickFiltersStyle = theme => ({\r\n form: {\r\n display: 'flex',\r\n height: 'auto',\r\n },\r\n checkboxContainer: { width: 'auto' },\r\n chipLabel: { fontWeight: 600 },\r\n chip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: theme.palette.primary.main,\r\n border: `2px solid ${theme.palette.primary.main}`,\r\n },\r\n filledChip: {\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.common.white,\r\n border: `2px solid ${theme.palette.primary.main}`,\r\n },\r\n});\r\n\r\nexport default quickFiltersStyle;\r\n","import { VIEW } from '../../../../config/constants/Constants';\r\n\r\nconst getConfig = ({\r\n store, sortConfig, filters, requestType,\r\n endPoint, start, callback, view, ...rest\r\n} = {}, useAccountContext = false) => [{\r\n method: 'read',\r\n api: {\r\n dynamic: {\r\n methodType: 'POST',\r\n ...(endPoint && { endPoint }),\r\n body: {\r\n // todo make it dynamic\r\n view: view || VIEW.list.value,\r\n sort: sortConfig,\r\n filter: filters,\r\n ...(start && { start }),\r\n ...rest,\r\n },\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: useAccountContext ? 'account' : 'facility',\r\n },\r\n },\r\n },\r\n store: { key: store },\r\n requestType,\r\n callback,\r\n}];\r\n\r\nexport default getConfig;\r\n","import { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\n\r\nconst getAppliedAutoSuggest = (autoSuggestKeys, autoSuggestKey, allFilters) => {\r\n let appliedAutoSuggest = null;\r\n let appliedFilters = {};\r\n autoSuggestKeys.unshift(autoSuggestKey);\r\n appliedFilters = deepCopy(allFilters);\r\n for (let i = 0; i < autoSuggestKeys.length; i += 1) {\r\n const key = autoSuggestKeys[i];\r\n const keyParts = key.split('.');\r\n let curr = appliedFilters;\r\n for (let j = 0; j < keyParts.length - 1; j += 1) {\r\n curr = curr[keyParts[j]] || {};\r\n }\r\n const currentVal = curr[keyParts[keyParts.length - 1]];\r\n if (currentVal && !appliedAutoSuggest) {\r\n appliedAutoSuggest = currentVal;\r\n delete curr[keyParts[keyParts.length - 1]];\r\n break;\r\n }\r\n }\r\n return { appliedAutoSuggest, appliedFilters };\r\n};\r\n\r\nexport { getAppliedAutoSuggest };\r\n","const formattersStyle = theme => ({\r\n labelWrapper: {\r\n flexWrap: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n labelWithIcon: { maxWidth: '100%' },\r\n disabledIcon: { cursor: 'default' },\r\n balance: {\r\n textAlign: 'right',\r\n width: '100%',\r\n },\r\n contentList: { overflow: 'hidden' },\r\n fullHeight: { height: '100%' },\r\n moreItems: {\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: theme.palette.secondary.main,\r\n },\r\n },\r\n cursorDefault: { cursor: 'default' },\r\n faPadding: { paddingLeft: 8 },\r\n iconColor: { color: '#D83320' },\r\n maxWidth: { maxWidth: '100%' },\r\n inline: { flexWrap: 'nowrap', maxWidth: '90%' },\r\n chipFixedWidth: { width: 96 },\r\n overflowHidden: { overflow: 'hidden' },\r\n disabledText: { color: theme.palette.text.disabled },\r\n});\r\n\r\nexport default formattersStyle;\r\n","const actionStyle = theme => ({\r\n actions: {\r\n color: theme.palette.text.primary,\r\n '& $disabled, & $disabled:hover': { color: theme.palette.disabled, cursor: 'initial', pointerEvents: 'none' },\r\n },\r\n disabled: {},\r\n item: {\r\n '&:hover': { color: theme.palette.primary.main },\r\n margin: '2px 8px 2px 0px',\r\n },\r\n});\r\n\r\nexport default actionStyle;\r\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yNS4zMzMzIDEwLjY2NjdIMjRWNEg4VjEwLjY2NjdINi42NjY2N0M0LjQ1MzMzIDEwLjY2NjcgMi42NjY2NyAxMi40NTMzIDIuNjY2NjcgMTQuNjY2N1YyMi42NjY3SDhWMjhIMjRWMjIuNjY2N0gyOS4zMzMzVjE0LjY2NjdDMjkuMzMzMyAxMi40NTMzIDI3LjU0NjcgMTAuNjY2NyAyNS4zMzMzIDEwLjY2NjdaTTEwLjY2NjcgNi42NjY2N0gyMS4zMzMzVjEwLjY2NjdIMTAuNjY2N1Y2LjY2NjY3Wk0yMS4zMzMzIDI1LjMzMzNIMTAuNjY2N1YyMEgyMS4zMzMzVjI1LjMzMzNaTTI0IDIwVjE3LjMzMzNIOFYyMEg1LjMzMzMzVjE0LjY2NjdDNS4zMzMzMyAxMy45MzMzIDUuOTMzMzMgMTMuMzMzMyA2LjY2NjY3IDEzLjMzMzNIMjUuMzMzM0MyNi4wNjY3IDEzLjMzMzMgMjYuNjY2NyAxMy45MzMzIDI2LjY2NjcgMTQuNjY2N1YyMEgyNFoiIGZpbGw9IiM0RDRENEQiLz4NCjxwYXRoIGQ9Ik0yNCAxNi42NjY3QzI0LjczNjQgMTYuNjY2NyAyNS4zMzMzIDE2LjA2OTcgMjUuMzMzMyAxNS4zMzMzQzI1LjMzMzMgMTQuNTk3IDI0LjczNjQgMTQgMjQgMTRDMjMuMjYzNiAxNCAyMi42NjY3IDE0LjU5NyAyMi42NjY3IDE1LjMzMzNDMjIuNjY2NyAxNi4wNjk3IDIzLjI2MzYgMTYuNjY2NyAyNCAxNi42NjY3WiIgZmlsbD0iIzRENEQ0RCIvPg0KPHBhdGggZD0iTTI1LjY0NTggMjQuNzI5MkgyNi4wMjA4VjI1LjEwNDJIMjUuNjQ1OFYyNC43MjkyWk0yNS42NDU4IDIzLjIyOTJIMjYuMDIwOFYyNC4zNTQySDI1LjY0NThWMjMuMjI5MlpNMjUuODMxNSAyMi4yOTE3QzI0Ljc5NjUgMjIuMjkxNyAyMy45NTgzIDIzLjEzMTcgMjMuOTU4MyAyNC4xNjY3QzIzLjk1ODMgMjUuMjAxNyAyNC43OTY1IDI2LjA0MTcgMjUuODMxNSAyNi4wNDE3QzI2Ljg2ODMgMjYuMDQxNyAyNy43MDgzIDI1LjIwMTcgMjcuNzA4MyAyNC4xNjY3QzI3LjcwODMgMjMuMTMxNyAyNi44NjgzIDIyLjI5MTcgMjUuODMxNSAyMi4yOTE3Wk0yNS44MzMzIDI1LjY2NjdDMjUuMDA0NiAyNS42NjY3IDI0LjMzMzMgMjQuOTk1NCAyNC4zMzMzIDI0LjE2NjdDMjQuMzMzMyAyMy4zMzc5IDI1LjAwNDYgMjIuNjY2NyAyNS44MzMzIDIyLjY2NjdDMjYuNjYyMSAyMi42NjY3IDI3LjMzMzMgMjMuMzM3OSAyNy4zMzMzIDI0LjE2NjdDMjcuMzMzMyAyNC45OTU0IDI2LjY2MjEgMjUuNjY2NyAyNS44MzMzIDI1LjY2NjdaIiBmaWxsPSIjRjQ0MzM2Ii8+DQo8cGF0aCBkPSJNMzAuNjY2NyAyNS4zMzMzQzMwLjY2NjcgMjguMjc4OSAyOC4yNzg5IDMwLjY2NjcgMjUuMzMzMyAzMC42NjY3QzIyLjM4NzggMzAuNjY2NyAyMCAyOC4yNzg5IDIwIDI1LjMzMzNDMjAgMjIuMzg3OCAyMi4zODc4IDIwIDI1LjMzMzMgMjBDMjguMjc4OSAyMCAzMC42NjY3IDIyLjM4NzggMzAuNjY2NyAyNS4zMzMzWiIgZmlsbD0iI0Y0NDMzNiIvPg0KPHBhdGggZD0iTTIxLjYgMjQuMjY2N0gyOS4wNjY3VjI2LjRIMjEuNlYyNC4yNjY3WiIgZmlsbD0id2hpdGUiLz4NCjwvc3ZnPg0K\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0yNS4zMzMzIDEwLjY2NjdIMjRWNEg4VjEwLjY2NjdINi42NjY2N0M0LjQ1MzMzIDEwLjY2NjcgMi42NjY2NyAxMi40NTMzIDIuNjY2NjcgMTQuNjY2N1YyMi42NjY3SDhWMjhIMjRWMjIuNjY2N0gyOS4zMzMzVjE0LjY2NjdDMjkuMzMzMyAxMi40NTMzIDI3LjU0NjcgMTAuNjY2NyAyNS4zMzMzIDEwLjY2NjdaTTEwLjY2NjcgNi42NjY2N0gyMS4zMzMzVjEwLjY2NjdIMTAuNjY2N1Y2LjY2NjY3Wk0yMS4zMzMzIDI1LjMzMzNIMTAuNjY2N1YyMEgyMS4zMzMzVjI1LjMzMzNaTTI0IDIwVjE3LjMzMzNIOFYyMEg1LjMzMzMzVjE0LjY2NjdDNS4zMzMzMyAxMy45MzMzIDUuOTMzMzMgMTMuMzMzMyA2LjY2NjY3IDEzLjMzMzNIMjUuMzMzM0MyNi4wNjY3IDEzLjMzMzMgMjYuNjY2NyAxMy45MzMzIDI2LjY2NjcgMTQuNjY2N1YyMEgyNFoiIGZpbGw9IiM0RDRENEQiLz4NCjxwYXRoIGQ9Ik0yNCAxNi42NjY3QzI0LjczNjQgMTYuNjY2NyAyNS4zMzMzIDE2LjA2OTcgMjUuMzMzMyAxNS4zMzMzQzI1LjMzMzMgMTQuNTk3IDI0LjczNjQgMTQgMjQgMTRDMjMuMjYzNiAxNCAyMi42NjY3IDE0LjU5NyAyMi42NjY3IDE1LjMzMzNDMjIuNjY2NyAxNi4wNjk3IDIzLjI2MzYgMTYuNjY2NyAyNCAxNi42NjY3WiIgZmlsbD0iIzRENEQ0RCIvPg0KPHBhdGggZD0iTTI4IDIyLjY2NjdDMjggMjQuODc1OCAyNi4yMDkxIDI2LjY2NjcgMjQgMjYuNjY2N0MyMS43OTA5IDI2LjY2NjcgMjAgMjQuODc1OCAyMCAyMi42NjY3QzIwIDIwLjQ1NzUgMjEuNzkwOSAxOC42NjY3IDI0IDE4LjY2NjdDMjYuMjA5MSAxOC42NjY3IDI4IDIwLjQ1NzUgMjggMjIuNjY2N1oiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTI0IDI2LjY2NjdDMjYuMjA5MSAyNi42NjY3IDI4IDI0Ljg3NTggMjggMjIuNjY2N0MyOCAyMC40NTc1IDI2LjIwOTEgMTguNjY2NyAyNCAxOC42NjY3QzIxLjc5MDkgMTguNjY2NyAyMCAyMC40NTc1IDIwIDIyLjY2NjdDMjAgMjQuODc1OCAyMS43OTA5IDI2LjY2NjcgMjQgMjYuNjY2N1pNMjYuMzY4NiAyMS41MDQ1QzI2LjU1NTIgMjEuMzAxIDI2LjU0MTQgMjAuOTg0NyAyNi4zMzc5IDIwLjc5ODFDMjYuMTM0MyAyMC42MTE1IDI1LjgxOCAyMC42MjUyIDI1LjYzMTQgMjAuODI4OEwyMy4yNSAyMy40MjY3TDIyLjM2ODYgMjIuNDY1MkMyMi4xODIgMjIuMjYxNiAyMS44NjU3IDIyLjI0NzkgMjEuNjYyMSAyMi40MzQ1QzIxLjQ1ODYgMjIuNjIxIDIxLjQ0NDggMjIuOTM3MyAyMS42MzE0IDIzLjE0MDlMMjIuODgxNCAyNC41MDQ1QzIyLjk3NjEgMjQuNjA3OCAyMy4xMDk4IDI0LjY2NjcgMjMuMjUgMjQuNjY2N0MyMy4zOTAyIDI0LjY2NjcgMjMuNTIzOSAyNC42MDc4IDIzLjYxODYgMjQuNTA0NUwyNi4zNjg2IDIxLjUwNDVaIiBmaWxsPSIjMkVDQzcxIi8+DQo8L3N2Zz4NCg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF83ODAxXzI3NDgxKSI+DQo8cGF0aCBkPSJNMjIuODA5NSAxMS4yMzgxSDIxLjc2MTlWNkg5LjE5MDQ4VjExLjIzODFIOC4xNDI4NkM2LjQwMzgxIDExLjIzODEgNSAxMi42NDE5IDUgMTQuMzgxVjIwLjY2NjdIOS4xOTA0OFYyNC44NTcxSDIxLjc2MTlWMjAuNjY2N0gyNS45NTI0VjE0LjM4MUMyNS45NTI0IDEyLjY0MTkgMjQuNTQ4NiAxMS4yMzgxIDIyLjgwOTUgMTEuMjM4MVpNMTEuMjg1NyA4LjA5NTI0SDE5LjY2NjdWMTEuMjM4MUgxMS4yODU3VjguMDk1MjRaTTE5LjY2NjcgMjIuNzYxOUgxMS4yODU3VjE4LjU3MTRIMTkuNjY2N1YyMi43NjE5Wk0yMS43NjE5IDE4LjU3MTRWMTYuNDc2Mkg5LjE5MDQ4VjE4LjU3MTRINy4wOTUyNFYxNC4zODFDNy4wOTUyNCAxMy44MDQ4IDcuNTY2NjcgMTMuMzMzMyA4LjE0Mjg2IDEzLjMzMzNIMjIuODA5NUMyMy4zODU3IDEzLjMzMzMgMjMuODU3MSAxMy44MDQ4IDIzLjg1NzEgMTQuMzgxVjE4LjU3MTRIMjEuNzYxOVoiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBkPSJNMjcgMjEuNzE0M0MyNyAyNC4wMjg2IDI1LjEyMzkgMjUuOTA0OCAyMi44MDk1IDI1LjkwNDhDMjAuNDk1MiAyNS45MDQ4IDE4LjYxOSAyNC4wMjg2IDE4LjYxOSAyMS43MTQzQzE4LjYxOSAxOS4zOTk5IDIwLjQ5NTIgMTcuNTIzOCAyMi44MDk1IDE3LjUyMzhDMjUuMTIzOSAxNy41MjM4IDI3IDE5LjM5OTkgMjcgMjEuNzE0M1oiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIyLjgwOTUgMjUuOTA0OEMyNS4xMjM5IDI1LjkwNDggMjcgMjQuMDI4NiAyNyAyMS43MTQzQzI3IDE5LjM5OTkgMjUuMTIzOSAxNy41MjM4IDIyLjgwOTUgMTcuNTIzOEMyMC40OTUyIDE3LjUyMzggMTguNjE5IDE5LjM5OTkgMTguNjE5IDIxLjcxNDNDMTguNjE5IDI0LjAyODYgMjAuNDk1MiAyNS45MDQ4IDIyLjgwOTUgMjUuOTA0OFpNMjUuMjkwOSAyMC40OTY4QzI1LjQ4NjQgMjAuMjgzNiAyNS40NzIgMTkuOTUyMiAyNS4yNTg3IDE5Ljc1NjdDMjUuMDQ1NSAxOS41NjEyIDI0LjcxNDEgMTkuNTc1NyAyNC41MTg2IDE5Ljc4ODlMMjIuMDIzOCAyMi41MTA1TDIxLjEwMDQgMjEuNTAzMkMyMC45MDQ5IDIxLjI4OTkgMjAuNTczNiAyMS4yNzU1IDIwLjM2MDMgMjEuNDcxQzIwLjE0NzEgMjEuNjY2NSAyMC4xMzI3IDIxLjk5NzggMjAuMzI4MiAyMi4yMTExTDIxLjYzNzcgMjMuNjM5N0MyMS43MzY5IDIzLjc0NzkgMjEuODc3IDIzLjgwOTUgMjIuMDIzOCAyMy44MDk1QzIyLjE3MDYgMjMuODA5NSAyMi4zMTA3IDIzLjc0NzkgMjIuNDA5OSAyMy42Mzk3TDI1LjI5MDkgMjAuNDk2OFoiIGZpbGw9IiMyRUNDNzEiLz4NCjwvZz4NCjxkZWZzPg0KPGNsaXBQYXRoIGlkPSJjbGlwMF83ODAxXzI3NDgxIj4NCjxyZWN0IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0id2hpdGUiLz4NCjwvY2xpcFBhdGg+DQo8L2RlZnM+DQo8L3N2Zz4NCg==\"","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF83ODAzXzI3NDY0KSI+DQo8cGF0aCBkPSJNMjIuODA5NSAxMS4yMzgxSDIxLjc2MTlWNkg5LjE5MDQ4VjExLjIzODFIOC4xNDI4NkM2LjQwMzgxIDExLjIzODEgNSAxMi42NDE5IDUgMTQuMzgxVjIwLjY2NjdIOS4xOTA0OFYyNC44NTcxSDIxLjc2MTlWMjAuNjY2N0gyNS45NTI0VjE0LjM4MUMyNS45NTI0IDEyLjY0MTkgMjQuNTQ4NiAxMS4yMzgxIDIyLjgwOTUgMTEuMjM4MVpNMTEuMjg1NyA4LjA5NTI0SDE5LjY2NjdWMTEuMjM4MUgxMS4yODU3VjguMDk1MjRaTTE5LjY2NjcgMjIuNzYxOUgxMS4yODU3VjE4LjU3MTRIMTkuNjY2N1YyMi43NjE5Wk0yMS43NjE5IDE4LjU3MTRWMTYuNDc2Mkg5LjE5MDQ4VjE4LjU3MTRINy4wOTUyNFYxNC4zODFDNy4wOTUyNCAxMy44MDQ4IDcuNTY2NjcgMTMuMzMzMyA4LjE0Mjg2IDEzLjMzMzNIMjIuODA5NUMyMy4zODU3IDEzLjMzMzMgMjMuODU3MSAxMy44MDQ4IDIzLjg1NzEgMTQuMzgxVjE4LjU3MTRIMjEuNzYxOVoiIGZpbGw9IndoaXRlIi8+DQo8cGF0aCBkPSJNMjcgMjIuNzYxOUMyNyAyNS4wNzYyIDI1LjEyMzkgMjYuOTUyNCAyMi44MDk1IDI2Ljk1MjRDMjAuNDk1MiAyNi45NTI0IDE4LjYxOSAyNS4wNzYyIDE4LjYxOSAyMi43NjE5QzE4LjYxOSAyMC40NDc2IDIwLjQ5NTIgMTguNTcxNCAyMi44MDk1IDE4LjU3MTRDMjUuMTIzOSAxOC41NzE0IDI3IDIwLjQ0NzYgMjcgMjIuNzYxOVoiIGZpbGw9IiNGNDQzMzYiLz4NCjxwYXRoIGQ9Ik0xOS44NzYyIDIxLjkyMzhIMjUuNzQyOVYyMy42SDE5Ljg3NjJWMjEuOTIzOFoiIGZpbGw9IndoaXRlIi8+DQo8L2c+DQo8ZGVmcz4NCjxjbGlwUGF0aCBpZD0iY2xpcDBfNzgwM18yNzQ2NCI+DQo8cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9IndoaXRlIi8+DQo8L2NsaXBQYXRoPg0KPC9kZWZzPg0KPC9zdmc+DQo=\"","const InheritedConfigLabelStyle = theme => ({ readOnly: { backgroundColor: theme.palette.inheritedConfig.main } });\r\n\r\nexport default InheritedConfigLabelStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\n\r\nconst DeliveryMethodDropdownStyles = theme => ({\r\n printCopiesinput: {\r\n paddingBottom: theme.spacing(0.25),\r\n paddingTop: 0,\r\n },\r\n lastInline: {\r\n padding: theme.spacing(2, 2, 0, 0),\r\n [media.laptopUp]: { padding: theme.spacing(3, 0, 0, 2) },\r\n [media.mobile]: { padding: theme.spacing(3, 0, 0, 0) },\r\n },\r\n mobileContainer: { marginTop: theme.spacing(2) },\r\n container: { },\r\n printCopiesContainer: {},\r\n previewLabel: { padding: theme.spacing(2), cursor: 'pointer' },\r\n changePrinterLabel: { cursor: 'pointer', paddingTop: theme.spacing(1), [media.mobile]: { paddingLeft: theme.spacing(1) } },\r\n previewLoader: { padding: theme.spacing(2), margin: theme.spacing(2) },\r\n modalGrid: {\r\n width: '90%',\r\n height: '90%',\r\n [media.tabletUp]: { width: '80%', height: '80%' },\r\n [media.laptopUp]: { width: '80%', height: '80%' },\r\n flexWrap: 'nowrap',\r\n },\r\n printer: { borderBottomColor: theme.palette.common.black },\r\n customLink: { marginLeft: theme.spacing(2), paddingRight: theme.spacing(1), [media.mobile]: { paddingRight: 0 } },\r\n printerIcon: {\r\n color: theme.palette.common.black,\r\n [media.mobile]: { fontSize: '1.75rem' },\r\n },\r\n menuPopper: { zIndex: 1 },\r\n anchorElDiv: {\r\n position: 'relative',\r\n padding: '12px 0',\r\n margin: 'auto 16px auto 16px',\r\n [media.tabletUp]: { margin: 'auto 28px auto 36px' },\r\n },\r\n myShadow: {\r\n '&[x-placement*=\"bottom\"] $arrow': {\r\n '&::before': { /* Overriden arrow shadow by using classes prop */\r\n '-webkit-filter': 'drop-shadow(0px -1px 0px rgba(0,0,0,.1))',\r\n filter: 'drop-shadow(0px -2px 0px rgba(0,0,0,.1))',\r\n },\r\n },\r\n },\r\n printAlertDialogContainerSm: {\r\n width: '40%',\r\n height: '40%',\r\n [media.smallMobile]: { width: '80%', height: '80%' },\r\n [media.mobile]: { width: '80%', height: '70%' },\r\n [media.tabletUp]: { width: '60%', height: '50%' },\r\n [media.laptopUp]: { width: '60%', height: '60%' },\r\n [media.desktopUp]: { width: '40%', height: '40%' },\r\n },\r\n printerAlertNote: { padding: theme.spacing(2) },\r\n printerSelectionPopover: { marginLeft: 0 },\r\n});\r\n\r\n\r\nexport default DeliveryMethodDropdownStyles;\r\n","const DocumentFetcherStyles = () => ({\r\n dialogContentRoot: {\r\n // padding: 0,\r\n /* Temporary Styles - For Loader */\r\n minHeight: '18vh',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\n\r\nexport default DocumentFetcherStyles;\r\n","/* eslint-disable import/prefer-default-export */\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { PROCESSOR_TYPE } from 'External/containers/facilityConfiguration/config/Constants';\r\nimport { INPUT_TYPE } from 'Commons/components/generic/form/config/FormComponentsConfig';\r\n\r\nconst getFooterProps = (paymentRef) => {\r\n // eslint-disable-next-line prefer-const\r\n let { footerProps: { positiveButtonProps = {}, negativeButtonProps = {}, ...FooterProps } = {} } = paymentRef.props;\r\n const { onClose, history = {}, isRefund } = paymentRef.props;\r\n const { deviceInfo: { isMobile } } = window;\r\n const {\r\n toggleAlertState, onClosePayment, state: { isButtonLoading, timeOutMessage, fetchingAmountField } = {},\r\n positiveButtonToolTipMessage, cardProcessorData = {},\r\n } = paymentRef;\r\n const onCloseFunction = onClose ? onClosePayment : history.goBack;\r\n const {\r\n dirty = false, isValid,\r\n values: { amount, cardProcessorId, extra: { payUsing } = {} } = {},\r\n } = paymentRef.formProps;\r\n const { [cardProcessorId]: { data: { processorType } = {} } = {} } = cardProcessorData;\r\n const { prefilled } = paymentRef.state;\r\n const { disabled: isPositiveButtonDisabled } = positiveButtonProps;\r\n let positiveButtonLabelSuffix = '';\r\n if (processorType === PROCESSOR_TYPE.Syrapay.value && payUsing === localisable.enterCardDetails) {\r\n positiveButtonLabelSuffix = localisable.viaSyrapay;\r\n }\r\n positiveButtonProps = {\r\n type: INPUT_TYPE.BUTTON,\r\n label: `${isRefund ? localisable.refund : localisable.pay} ${positiveButtonLabelSuffix}`,\r\n loadingText: isRefund ? localisable.refunding : localisable.makingPayment,\r\n disabled: fetchingAmountField || isPositiveButtonDisabled || timeOutMessage || !amount || Number(amount) === 0\r\n || !(isValid && dirty && !isButtonLoading && !positiveButtonToolTipMessage),\r\n ...positiveButtonProps,\r\n };\r\n negativeButtonProps = {\r\n onClick: () => (dirty && !prefilled\r\n ? toggleAlertState(isMobile && { shouldGoBack: true, discard: true })\r\n : onCloseFunction()),\r\n ...negativeButtonProps,\r\n };\r\n if (isMobile) {\r\n positiveButtonProps = {\r\n ...positiveButtonProps,\r\n variant: 'icon',\r\n icon: 'cp-payment',\r\n type: 'button',\r\n iconType: 'custom',\r\n };\r\n negativeButtonProps = {\r\n ...negativeButtonProps,\r\n variant: 'icon',\r\n icon: 'cp-close',\r\n iconType: 'custom',\r\n };\r\n }\r\n return { positiveButtonProps, negativeButtonProps, FooterProps };\r\n};\r\n\r\nexport { getFooterProps };\r\n","import { Grid, Loader, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { SOURCE, TABLE_ROW_HEIGHT_VARIANT, TIME_WINDOW } from 'Commons/config/constants/Constants';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { DatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport SmartList from 'Commons/components/business/smartlist/components/SmartList';\r\nimport { memo, useEffect, useReducer, useState } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Button from 'Generic/button/components/Button';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport ButtonText from 'Generic/buttontext/components/ButtonText';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport { formatErrors } from 'Commons/redux/error/ErrorHandler';\r\nimport { addToDate, getCurrentDate } from 'Commons/helpers/utils/DateTime';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport { TextField } from 'Generic/textfield/components/TextField';\r\nimport { EXTRA_SMALL_TEXTFIELD_WIDTH, SMALL_TEXTFIELD_WIDTH } from 'External/containers/configuration/config/Constants';\r\nimport { Radio } from 'Generic/radio/components/Radio';\r\nimport Chip from 'Generic/chip/components/Chip';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport BillAheadStyle from '../styles/BillAheadStyle';\r\nimport getBillAheadColumns from '../config/BillAheadColumns';\r\nimport { billAhead, fetchLedgerBalance } from '../config/ApiRequests';\r\nimport {\r\n BILLS_TABLE_LEFT_AND_RIGHT_PADDING,\r\n BILLS_TABLE_MIN_HEIGHT,\r\n BILLS_TABLE_RESPONSIVE_HEIGHT,\r\n BILLS_TABLE_RESPONSIVE_WIDTH,\r\n BILLS_TABLE_TOP_AND_BOTTOM_PADDING,\r\n REDUCER_ACTION,\r\n} from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(BillAheadStyle, { name: 'BillAhead' });\r\n\r\nconst BillAhead = (props) => {\r\n const {\r\n paymentRef: { current: paymentRef } = {}, ledgerId, onAction, currency, clearStoreKeys,\r\n onClose, onLedgerBalance, setReFetchTenantBalance, setPaymentSnackbarProps, unitList,\r\n } = props;\r\n const { clientHeight = 500, clientWidth = 500 } = paymentRef || {};\r\n\r\n const classes = useStyles();\r\n\r\n const { inputClasses, chipClasses } = useConstructor(() => ({\r\n inputClasses: { className: classes.input },\r\n chipClasses: {\r\n root: classes.chip,\r\n label: classes.chipLabel,\r\n },\r\n }));\r\n\r\n const initialState = {\r\n arList: [],\r\n totalAmount: '--',\r\n rentAssessmentDate: undefined,\r\n gettingBillsSuccess: false,\r\n period: undefined,\r\n useEffectiveDate: false,\r\n };\r\n\r\n const reducer = (state, action) => {\r\n switch (action.type) {\r\n case REDUCER_ACTION.ON_GENERATE_BILLS: return { initialState };\r\n case REDUCER_ACTION.ON_GET_BILLS_SUCCESS: return {\r\n ...state,\r\n arList: action.charges,\r\n totalAmount: action.amount,\r\n gettingBillsSuccess: action.success,\r\n };\r\n case REDUCER_ACTION.PRE_GET_BILLS: return {\r\n ...state,\r\n arList: action.charges,\r\n totalAmount: action.amount,\r\n ...(state.useEffectiveDate\r\n ? { rentAssessmentDate: action.effectiveDateOrPeriod }\r\n : { period: action.effectiveDateOrPeriod }),\r\n };\r\n case REDUCER_ACTION.ON_GET_BILLS_ERROR: return {\r\n ...state,\r\n gettingBillsSuccess: action.success,\r\n };\r\n case REDUCER_ACTION.ON_PERIOD_TOGGLE: return {\r\n ...initialState,\r\n ...(state.useEffectiveDate ? { period: undefined } : { rentAssessmentDate: undefined }),\r\n useEffectiveDate: !state.useEffectiveDate,\r\n };\r\n default: return state;\r\n }\r\n };\r\n\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n const [isListLoading, setIsListLoading] = useState(false);\r\n const [isButtonLoading, setIsButtonLoading] = useState(false);\r\n\r\n const getMaxDate = () => addToDate(getCurrentDate(), 12, TIME_WINDOW.MONTHS);\r\n\r\n const onBillFetch = (apiError, response) => {\r\n if (apiError) {\r\n dispatch({ type: REDUCER_ACTION.ON_GET_BILLS_ERROR, success: false });\r\n } else if (response) {\r\n const { success = false, data: { charges = [], totalAmount: amount } = {} } = response;\r\n dispatch({\r\n type: REDUCER_ACTION.ON_GET_BILLS_SUCCESS,\r\n charges,\r\n amount,\r\n success,\r\n });\r\n }\r\n setIsListLoading(false);\r\n };\r\n\r\n const onBillGenerate = (apiError, response) => {\r\n if (apiError) {\r\n const formattedErrors = formatErrors(apiError);\r\n setPaymentSnackbarProps(true, formattedErrors.errorMessage, VARIANT.error.value);\r\n } else if (response) {\r\n setPaymentSnackbarProps(true, localisable.successfulBillGeneration, VARIANT.success.value);\r\n dispatch({ type: REDUCER_ACTION.ON_GENERATE_BILLS });\r\n setReFetchTenantBalance(true);\r\n fetchLedgerBalance(onAction, ledgerId, onLedgerBalance);\r\n clearStoreKeys([SOURCE.tenant.value]);\r\n }\r\n setIsButtonLoading(false);\r\n };\r\n\r\n const generateBills = () => {\r\n if (convertToNumber(state.totalAmount) > 0) {\r\n const body = {\r\n ...(state.useEffectiveDate ? { effectiveDate: state.rentAssessmentDate } : { period: state.period }),\r\n ledgerId,\r\n generate: true,\r\n totalAmount: state.totalAmount,\r\n };\r\n setIsButtonLoading(true);\r\n billAhead(onAction, body, onBillGenerate);\r\n }\r\n };\r\n\r\n const getBills = (effectiveDateOrPeriod, ledgerChange) => {\r\n if (state.rentAssessmentDate !== effectiveDateOrPeriod || (ledgerChange && state.rentAssessmentDate)) {\r\n dispatch({\r\n type: REDUCER_ACTION.PRE_GET_BILLS,\r\n charges: [],\r\n amount: '--',\r\n effectiveDateOrPeriod,\r\n });\r\n if (effectiveDateOrPeriod) {\r\n setIsListLoading(true);\r\n const body = {\r\n ...(state.useEffectiveDate\r\n ? { effectiveDate: effectiveDateOrPeriod }\r\n : { period: effectiveDateOrPeriod }),\r\n ledgerId,\r\n generate: false,\r\n };\r\n billAhead(onAction, body, onBillFetch);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getBills(state.rentAssessmentDate, true);\r\n }, [ledgerId]);\r\n\r\n const getMinHeight = (height, heightToCompare) => (height < heightToCompare ? height : heightToCompare);\r\n\r\n const calculateTableWidth = () => {\r\n const { innerWidth, deviceInfo: { isDesktop } } = window;\r\n if (isDesktop) {\r\n const tableWidth = (clientWidth * 2) - BILLS_TABLE_LEFT_AND_RIGHT_PADDING;\r\n let tableHeight = BILLS_TABLE_MIN_HEIGHT;\r\n if (state.arList.length > 0) {\r\n const dataTableHeight = (state.arList.length + 1) * TABLE_ROW_HEIGHT_VARIANT.ONE_LINER;\r\n const modalHeight = clientHeight - (innerWidth <= screenMaxWidth.laptop ? BILLS_TABLE_TOP_AND_BOTTOM_PADDING.laptop : BILLS_TABLE_TOP_AND_BOTTOM_PADDING.desktop);\r\n tableHeight = getMinHeight(dataTableHeight, modalHeight);\r\n }\r\n return { tableWidth, tableHeight };\r\n }\r\n return { tableWidth: BILLS_TABLE_RESPONSIVE_WIDTH, tableHeight: BILLS_TABLE_RESPONSIVE_HEIGHT };\r\n };\r\n\r\n const getListConfig = () => {\r\n const { tableWidth, tableHeight } = calculateTableWidth();\r\n return {\r\n store: 'ar',\r\n columns: getBillAheadColumns(classes, currency),\r\n name: localisable.billAheadHeader,\r\n emptyBodyText: localisable.noBills,\r\n tableProps: {\r\n headerRowHeight: TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER,\r\n tableWidth,\r\n tableHeight,\r\n classes: {\r\n firstColumn: classes.firstColumn,\r\n lastColumn: classes.lastColumn,\r\n },\r\n rowDivider: false,\r\n leftAndRightPadding: 0,\r\n },\r\n getCustomData: () => state.arList,\r\n };\r\n };\r\n\r\n const onChangeOfEffectiveDate = (dateObj, formattedDate) => {\r\n // When date is not valid we send the same object in the formattedDate as well. If date and formattedDate are same, we can assume that the date is invalid.\r\n if (dateObj !== formattedDate) getBills(formattedDate, false);\r\n };\r\n\r\n const getLoader = () => (\r\n state.rentAssessmentDate\r\n && (\r\n \r\n \r\n \r\n )\r\n );\r\n\r\n const getHeader = () => (\r\n \r\n {localisable.billAhead}\r\n \r\n \r\n );\r\n\r\n const getDateAndAmountSection = () => (\r\n \r\n dispatch({ type: REDUCER_ACTION.ON_PERIOD_TOGGLE })}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const getBillsTable = () => (\r\n \r\n );\r\n\r\n const getErrorNessage = () => (\r\n \r\n \r\n {localisable.billAheadError}\r\n \r\n );\r\n\r\n const getFooter = () => (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const getPeriodSection = () => (\r\n \r\n dispatch({ type: REDUCER_ACTION.ON_PERIOD_TOGGLE })}\r\n />\r\n \r\n {localisable.payAheadFor}\r\n \r\n ),\r\n right: (\r\n \r\n {localisable.periods.toLowerCase()}\r\n \r\n ),\r\n }}\r\n disabled={state.useEffectiveDate}\r\n onChange={(_, value) => getBills(value, false)}\r\n value={state.period}\r\n trackValue={false}\r\n />\r\n \r\n );\r\n\r\n const getUnits = () => (\r\n \r\n \r\n \r\n {localisable.units}\r\n \r\n \r\n {\r\n unitList.map(({ label }) => (\r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n {localisable.amountToBePaid}\r\n \r\n \r\n \r\n {state.totalAmount}\r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n {getHeader()}\r\n {getUnits()}\r\n {getPeriodSection()}\r\n {getDateAndAmountSection()}\r\n {!isListLoading && (state.rentAssessmentDate || state.period)\r\n ? getBillsTable()\r\n : getLoader()\r\n }\r\n {!state.gettingBillsSuccess && (state.rentAssessmentDate || state.period) && !isListLoading\r\n && getErrorNessage()\r\n }\r\n {(state.rentAssessmentDate || state.period) && state.arList.length > 0\r\n && getFooter()\r\n }\r\n \r\n );\r\n};\r\n\r\nBillAhead.propTypes = {\r\n paymentRef: PropTypes.object,\r\n parentSize: PropTypes.shape({ current: PropTypes.object }),\r\n ledgerId: PropTypes.string,\r\n onAction: PropTypes.func,\r\n onClose: PropTypes.func,\r\n onLedgerBalance: PropTypes.func,\r\n setReFetchTenantBalance: PropTypes.func,\r\n setPaymentSnackbarProps: PropTypes.func,\r\n currency: PropTypes.string,\r\n clearStoreKeys: PropTypes.func.isRequired,\r\n unitList: PropTypes.array,\r\n};\r\n\r\nexport default memo(BillAhead);\r\n","const radioStyle = theme => ({\r\n root: {},\r\n readOnly: {\r\n color: theme.palette.text.disabled,\r\n pointerEvents: 'none',\r\n },\r\n InheritedConfigLabel: { pointerEvents: 'none' },\r\n});\r\n\r\nexport default radioStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst BillAheadStyle = theme => ({\r\n periodsSection: {\r\n padding: theme.spacing(1, 0, 0, 0),\r\n marginLeft: theme.spacing(-1),\r\n [media.desktop]: { padding: theme.spacing(2, 0, 0, 0) },\r\n },\r\n unitsSection: {\r\n padding: theme.spacing(2, 0),\r\n [media.desktop]: { padding: theme.spacing(4, 0, 2, 0) },\r\n },\r\n units: { padding: theme.spacing(2, 0, 0, 0) },\r\n dateAndAmountSection: {\r\n padding: theme.spacing(3, 0, 2, 0),\r\n [media.desktop]: { padding: theme.spacing(4, 0, 2, 0) },\r\n },\r\n firstColumn: { paddingLeft: 0 },\r\n lastColumn: { paddingRight: 0 },\r\n autoWidth: { width: 'auto' },\r\n loader: { zIndex: 802, height: '100%' },\r\n totalAmountSection: {\r\n padding: theme.spacing(2, 4, 0, 0),\r\n [media.tabletUp]: { padding: theme.spacing(0, 4, 0, 0) },\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n borderRadius: 0,\r\n outline: 'none',\r\n border: 'none',\r\n top: 0,\r\n right: 0,\r\n margin: theme.spacing(2, 2, 0, 0),\r\n zIndex: 100,\r\n width: 'auto',\r\n height: 'auto',\r\n '&:hover': { backgroundColor: 'transparent' },\r\n },\r\n closeIcon: { color: theme.palette.text.primary },\r\n info: { color: 'Red', paddingTop: theme.spacing(2) },\r\n submit: { paddingTop: theme.spacing(2), [media.desktop]: { paddingTop: theme.spacing(4) } },\r\n lastColumnList: { paddingLeft: theme.spacing(8) },\r\n input: { paddingBottom: theme.spacing(0.25), paddingTop: 0 },\r\n chip: {\r\n height: theme.spacing(4),\r\n background: theme.palette.chip.reserved,\r\n borderColor: theme.palette.chip.reserved,\r\n borderRadius: theme.spacing(2),\r\n '&:hover, &:focus, &:active': { backgroundColor: theme.palette.chip.reserved },\r\n },\r\n chipLabel: {\r\n color: theme.palette.common.white,\r\n fontSize: theme.elements.input.label.fontSize,\r\n },\r\n});\r\n\r\nexport default BillAheadStyle;\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport BillAheadDateFormatter from './Formatters';\r\n\r\nconst getLabel = label => (\r\n \r\n {label}\r\n \r\n);\r\n\r\nconst getBillAheadColumns = (classes, currency) => [\r\n {\r\n label: getLabel(localisable.unit),\r\n key: 'unitLabel',\r\n width: 15,\r\n },\r\n {\r\n label: getLabel(localisable.chargeCategory),\r\n key: 'chargeCategoryDescription',\r\n width: 15,\r\n },\r\n {\r\n label: getLabel(localisable.date),\r\n key: 'toDate',\r\n formatter: BillAheadDateFormatter,\r\n align: 'center',\r\n width: 30,\r\n },\r\n {\r\n label: getLabel(`${localisable.totalAmount} ${currency ? `(${currency})` : ''}`),\r\n key: 'amount',\r\n align: 'right',\r\n width: 15,\r\n },\r\n {\r\n label: getLabel(localisable.description),\r\n key: 'description',\r\n width: 25,\r\n headerClassName: classes.lastColumnList,\r\n className: classes.lastColumnList,\r\n },\r\n];\r\n\r\nexport default getBillAheadColumns;\r\n","import { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { dateFormatter } from 'Commons/helpers/utils/DateTime';\r\nimport Typography from 'Generic/typography/components/Typography';\r\n\r\nconst DateFormatter = (props) => {\r\n const { argument: [, , , { effectiveDate = '', toDate = '' }] } = props;\r\n const startDate = effectiveDate.substr(0, effectiveDate.indexOf('T'));\r\n const endDate = toDate.substr(0, toDate.indexOf('T'));\r\n return (\r\n \r\n {clsx(startDate && dateFormatter(startDate),\r\n startDate && endDate && ' to ', endDate && dateFormatter(endDate))}\r\n \r\n );\r\n};\r\n\r\nDateFormatter.propTypes = { argument: PropTypes.array };\r\n\r\nconst BillAheadDateFormatter = (...data) => ;\r\n\r\nexport default BillAheadDateFormatter;\r\n","const switchStyle = () => ({ readOnly: { pointerEvents: 'none' } });\r\n\r\nexport default switchStyle;\r\n","const formItemStyle = theme => ({\r\n formItem: {\r\n minWidth: theme.spacing(2),\r\n maxWidth: theme.spacing(2),\r\n },\r\n formPadding: ({ padding = theme.spacing(2) }) => ({ padding }),\r\n indicator: {\r\n fontSize: 8,\r\n cursor: 'default',\r\n lineHeight: 2,\r\n },\r\n required: { color: theme.palette.error.main },\r\n preferred: { color: theme.palette.preferred },\r\n label: {\r\n ...theme.typography.caption,\r\n '&$disabled': { color: theme.palette.text.disabled },\r\n },\r\n disabled: {},\r\n item: {},\r\n});\r\n\r\n\r\nexport default formItemStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst PaymentStyle = theme => ({\r\n footer: {},\r\n body: { padding: 0 },\r\n whiteBackground: {\r\n height: '100%',\r\n [media.laptopUp]: { backgroundColor: theme.palette.common.white },\r\n },\r\n formStyle: { width: '100%', height: '100%' },\r\n fullWidth: { width: '100%' },\r\n autoWidth: { width: 'auto' },\r\n relativePosition: {\r\n position: 'relative',\r\n height: '100%',\r\n width: '100%',\r\n },\r\n overflowHidden: { overflow: 'hidden' },\r\n mask: {\r\n position: 'absolute',\r\n height: '100%',\r\n backgroundColor: theme.hexWithOpacity(theme.palette.common.white, 5),\r\n zIndex: 802,\r\n },\r\n modalGrid: {\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'scroll',\r\n left: '50%',\r\n [media.tabletUp]: {\r\n width: '35vw',\r\n height: '95vh',\r\n },\r\n background: 'transparent',\r\n transition: '200ms width ease-in',\r\n },\r\n modalGridBillAheadOpen: {\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'scroll',\r\n left: '55%',\r\n [media.tabletUp]: {\r\n width: '85vw',\r\n height: '85vh',\r\n },\r\n background: 'transparent',\r\n transition: '200ms width ease-in',\r\n },\r\n billAheadOrUnpaidBillsModal: { height: '75%', width: '80%' },\r\n loader: { zIndex: 802, height: '100%' },\r\n noDisplay: { display: 'none' },\r\n pageHeader: { marginBottom: theme.spacing(0), padding: theme.spacing(2, 4) },\r\n sideContainer: {\r\n position: 'relative',\r\n height: '96%',\r\n maxWidth: '85%',\r\n [media.tabletUp]: { maxWidth: '100%' },\r\n backgroundColor: theme.palette.common.white,\r\n marginLeft: theme.spacing(1),\r\n },\r\n billAheadContainer: { padding: theme.spacing(2, 4) },\r\n unpaidBillsContainer: { padding: theme.spacing(2, 2) },\r\n fullHeight: { height: '100%' },\r\n fitPage: {\r\n [media.laptopUp]: { width: '30vw' },\r\n transition: '200ms width ease-in',\r\n },\r\n fitPageBillAheadOpen: {\r\n [media.laptopUp]: { width: '84vw' },\r\n transition: '200ms width ease-in',\r\n },\r\n clickHereForMoreButtonContainer: { paddingTop: theme.spacing(4) },\r\n clickHereForMoreButton: { fontWeight: 500 },\r\n unpaidBillsCloseButton: { position: 'absolute', right: 8, top: 8 },\r\n unpaidBillsListContainer: { paddingTop: theme.spacing(4) },\r\n infoIcon: { marginBottom: theme.spacing(1), color: theme.palette.error.main },\r\n errorAlertContainer: { padding: theme.spacing(1) },\r\n exitButton: { minWidth: 0, marginRight: theme.spacing(2) },\r\n paymentLoginContainer: {\r\n position: 'absolute',\r\n width: '100%',\r\n height: '100%',\r\n background: theme.hexWithOpacity(theme.palette.common.white, 9),\r\n display: 'none',\r\n zIndex: 0,\r\n },\r\n visibleLoginContainer: {\r\n display: 'block',\r\n zIndex: 1000,\r\n },\r\n loginContainer: { width: '100%', height: '100%', boxShadow: 'none', padding: theme.spacing(2, 4) },\r\n});\r\n\r\nexport default PaymentStyle;\r\n","import Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { withStyles, Grid } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { AutoSuggest } from 'Commons/components/business/autosuggest/components/AutoSuggest';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport tenantAutosuggest from 'External/apihelpers/Tenant';\r\nimport { AUTO_SUGGEST_RESOURCE, SOURCE } from 'Commons/config/constants/Constants';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { useState, memo, useEffect, useRef } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport AlertDialog from 'Commons/components/generic/alertdialog/components/AlertDialog';\r\nimport { PERFORM_BILLING } from 'External/containers/rentalConfiguration/config/LateEventConfig';\r\nimport getFormattedAmount from 'Commons/helpers/utils/AmountHelper';\r\nimport { round } from 'Commons/helpers/utils';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport TenantInformationStyle from '../styles/TenantInformationStyle';\r\nimport {\r\n fetchUnits, fetchTenant, fetchTenantDetailsFromLedger,\r\n fetchTenantAlert, fetchLedgerBalance, fetchPendingDelinquency, processLateEvent,\r\n} from '../config/ApiRequests';\r\nimport { ITEM, PAYMENT_METHOD } from '../config/Constants';\r\nimport localisable from '../../../../config/strings/localisable';\r\nimport shouldModifyNegativeAmount from '../utils/CheckAmount';\r\nimport { setFormValuesForUseCardOnFile } from '../utils/DataHandler';\r\nimport { calculateNextAmountPayable } from '../utils/BalanceCalculator';\r\n\r\nconst TenantInformation = ({\r\n classes,\r\n formProps: {\r\n status = {},\r\n setStatus,\r\n setFieldValue,\r\n status: {\r\n tenantInfo,\r\n ledgerInfo,\r\n tenantInfo: { ledger: ledgerList = [], comments, id: tenantId = '', name: tName } = {},\r\n ledgerInfo: { id: ledgerId, balance = 0 } = {},\r\n } = {},\r\n } = {},\r\n isRefund,\r\n onAction,\r\n currency,\r\n onApiError,\r\n ledgerDetails,\r\n tenantDetails,\r\n clearStoreKeys,\r\n setPrefilledFalse,\r\n getAutoSuggestRef,\r\n setFetchedBalance,\r\n toggleLoadingState,\r\n showOnlyTenantName,\r\n getOnLedgerBalance,\r\n updateCurrentStatus,\r\n reFetchTenantBalance,\r\n updateIgnoreWsMessage,\r\n showTenantInformation,\r\n source,\r\n tenantId: preSelectedTenantId,\r\n ledgerId: preSelectedLedgerId,\r\n changeToRefundIfNegativeBalance = false,\r\n shouldAutoFocus,\r\n}) => {\r\n const { deviceInfo: { isDesktop, isMobile } } = window;\r\n const [unitList, setUnitList] = useState([]);\r\n const [openAlert, setOpenAlert] = useState(false);\r\n const [tenantName, setTenantName] = useState('');\r\n const [lateFeeInfo, setLateFeeInfo] = useState(0);\r\n const ledgerRef = useRef({});\r\n const tenantRef = useRef({});\r\n const ledgerIdRef = useRef(false);\r\n const tenantIdRef = useRef(false);\r\n let autoSuggestRef;\r\n const [tenantInfoBalance, setTenantInfoBalance] = useState(balance);\r\n\r\n useEffect(() => { setTenantInfoBalance(round(balance)); }, [balance]);\r\n\r\n useEffect(() => { setTenantName(getName(tName)); }, [tName]);\r\n\r\n const onUnitResponse = (error, response) => {\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n const { data } = response;\r\n setUnitList(data);\r\n setFieldValue('extra.unitList', data);\r\n setFieldValue('extra.unitUpdateTime', Date.now());\r\n }\r\n toggleLoadingState();\r\n };\r\n\r\n const onLedgerBalance = (error, response) => {\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n const { data: [{ balance: ledgerBalance } = {}] = {} } = response;\r\n if (ledgerBalance) {\r\n let resultantBalance = ledgerBalance;\r\n if (isRefund || (changeToRefundIfNegativeBalance && ledgerBalance < 0)) {\r\n resultantBalance = ledgerBalance < 0 ? -ledgerBalance : 0;\r\n } else {\r\n resultantBalance = ledgerBalance > 0 ? ledgerBalance : 0;\r\n }\r\n setFetchedBalance(ledgerBalance);\r\n setFieldValue('extra.ledgerBalance', resultantBalance);\r\n setFieldValue('extra.amountWithoutModifier', round(resultantBalance, 2, true));\r\n setTenantInfoBalance(round(ledgerBalance));\r\n }\r\n }\r\n toggleLoadingState();\r\n };\r\n\r\n useEffect(() => { getOnLedgerBalance(onLedgerBalance); }, []);\r\n\r\n useEffect(() => { getAutoSuggestRef(autoSuggestRef); }, [autoSuggestRef]);\r\n\r\n const onPendingDelinquency = (error, response) => {\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n const { data = [], relationalData: { lateEvent: lateEventConfig = [] } = {} } = response;\r\n if (data && data.length) {\r\n const lateEventConfigMap = {};\r\n lateEventConfig.forEach((config) => {\r\n const { id } = config;\r\n lateEventConfigMap[id] = config;\r\n });\r\n\r\n let totalLateFee = 0;\r\n const idListToProcess = [];\r\n data.forEach(({ fee, id, lateEventConfigId } = {}) => {\r\n if (lateEventConfigId) {\r\n const {\r\n [lateEventConfigId]: {\r\n value: {\r\n late: {\r\n charge: { performBilling = PERFORM_BILLING.Daily.value }\r\n = {},\r\n } = {},\r\n } = {},\r\n } = {},\r\n } = lateEventConfigMap;\r\n if (performBilling === PERFORM_BILLING.At_Payment.value) {\r\n totalLateFee += convertToNumber(fee);\r\n idListToProcess.push(id);\r\n }\r\n }\r\n });\r\n if (totalLateFee) {\r\n setLateFeeInfo({ totalLateFee, idListToProcess });\r\n setOpenAlert(true);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const setCardInfoFromLedger = (cardInfo = {}, isAutoPayEnabled = false) => {\r\n const { expirationDate: { month, year } = {}, ...restCardInfo } = cardInfo;\r\n const { token = '' } = cardInfo;\r\n setFieldValue('cardInfo', {});\r\n if (token) {\r\n setFieldValue('extra.cardInfo', { ...restCardInfo, expirationDate: { month, year } });\r\n setFormValuesForUseCardOnFile(setFieldValue, isAutoPayEnabled);\r\n } else setFieldValue('extra.payUsing', localisable.enterCardDetails);\r\n };\r\n\r\n const setAchInfoFromLedger = (achInfo = {}) => {\r\n setFieldValue('extra.achInfo', achInfo);\r\n };\r\n\r\n const updateLedgerDetails = (ledger) => {\r\n const {\r\n id, balance: ledgerBalance = 0,\r\n financials: { preferredPaymentMethodId, isAutoPayEnabled, cardInfo, achPpd: achInfo } = {},\r\n } = ledger;\r\n let resultantBalance = ledgerBalance;\r\n if (isRefund) {\r\n resultantBalance = ledgerBalance < 0 ? -ledgerBalance : 0;\r\n }\r\n setAchInfoFromLedger(achInfo);\r\n setCardInfoFromLedger(cardInfo, isAutoPayEnabled);\r\n if (JSON.stringify(ledgerRef.current) !== JSON.stringify(ledger)) {\r\n ledgerRef.current = ledger;\r\n if (reFetchTenantBalance) {\r\n toggleLoadingState();\r\n fetchLedgerBalance(onAction, id, onLedgerBalance);\r\n }\r\n toggleLoadingState();\r\n fetchUnits(onAction, id, onUnitResponse);\r\n fetchPendingDelinquency(onAction, id, onPendingDelinquency);\r\n }\r\n if (!shouldModifyNegativeAmount(isRefund, unitList, setFieldValue, id, source, ledgerBalance)) {\r\n setFieldValue('extra.amountWithoutModifier', round(resultantBalance, 2, true));\r\n }\r\n setTenantInfoBalance(round(ledgerBalance));\r\n return {\r\n ledgerInfo: ledger,\r\n amountWithoutModifier: round(resultantBalance, 2, true),\r\n preferredMethod: preferredPaymentMethodId,\r\n autoPayEnabled: isAutoPayEnabled,\r\n };\r\n };\r\n\r\n useEffect(() => {\r\n if (ledgerInfo) {\r\n const updatedStatus = { ...status, ...updateLedgerDetails(ledgerInfo) };\r\n updateCurrentStatus(updatedStatus);\r\n setStatus(updatedStatus);\r\n }\r\n }, [JSON.stringify(ledgerInfo)]);\r\n\r\n const onTenantAlertResponse = (error, response) => {\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n const tenantAlerts = {};\r\n const paymentRelatedAlerts = { [PAYMENT_METHOD.CHECK]: { alertType: ['Do_Not_Accept_Checks'] } };\r\n const { data } = response;\r\n let paymentSpecificAlerts = [];\r\n const nonPaymentSpecificAlerts = [];\r\n Object.keys(paymentRelatedAlerts).forEach((paymentType) => {\r\n paymentRelatedAlerts[paymentType].alertType.forEach((paymentSpecificAlert) => {\r\n data.forEach((alert) => {\r\n const { alertType, status: alertStatus, visibleAt } = alert;\r\n if (alertStatus === 'Active' && (visibleAt.includes('Payment') || visibleAt.includes('All'))) {\r\n if (alertType === paymentSpecificAlert) {\r\n paymentSpecificAlerts.push(alert);\r\n } else {\r\n nonPaymentSpecificAlerts.push(alert);\r\n }\r\n }\r\n });\r\n });\r\n if (paymentSpecificAlerts.length > 0) {\r\n tenantAlerts.paymentRelatedAlert = { [paymentType]: paymentSpecificAlerts };\r\n paymentSpecificAlerts = [];\r\n }\r\n });\r\n if (nonPaymentSpecificAlerts.length > 0) {\r\n tenantAlerts.general = nonPaymentSpecificAlerts;\r\n }\r\n setFieldValue('extra.tenantAlerts', tenantAlerts);\r\n }\r\n toggleLoadingState();\r\n };\r\n\r\n const onSelectTenant = (tenant = {}) => {\r\n const { name, ledger: ledgers = [], unitList: units = [], id: selectedTenantId } = tenant;\r\n const newTenantName = getName(name);\r\n if (tenantName !== newTenantName) {\r\n setTenantName(newTenantName);\r\n }\r\n if (tenantId !== selectedTenantId) {\r\n const ledgerListWithLabelValue = ledgers.map((ledger) => {\r\n const { id } = ledger;\r\n return { ...ledger, value: id };\r\n });\r\n let updatedStatus = { ...status, tenantInfo: { ...tenant, ledger: ledgerListWithLabelValue } };\r\n updatedStatus = {\r\n ...updatedStatus,\r\n ...(ledgerDetails ? updateLedgerDetails(ledgerDetails)\r\n : updateLedgerDetails(ledgerListWithLabelValue[0])),\r\n };\r\n const { id, financials: { cardInfo, isAutoPayEnabled } = {} } = ledgerDetails || ledgers[0];\r\n updateCurrentStatus(updatedStatus);\r\n setStatus(updatedStatus);\r\n setFieldValue('ledgerId', id);\r\n setCardInfoFromLedger(cardInfo, isAutoPayEnabled);\r\n setUnitList(units);\r\n if (JSON.stringify(tenantRef.current) !== JSON.stringify(tenant)) {\r\n tenantRef.current = tenant;\r\n fetchTenantAlert(onAction, selectedTenantId, onTenantAlertResponse);\r\n }\r\n }\r\n };\r\n\r\n const onTenantResponse = (error, response) => {\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n const { data } = response;\r\n if (autoSuggestRef) {\r\n autoSuggestRef.selectCard(data[0]);\r\n } else {\r\n onSelectTenant(data[0]);\r\n }\r\n }\r\n toggleLoadingState();\r\n };\r\n\r\n useEffect(() => {\r\n if (preSelectedTenantId && !tenantIdRef.current) {\r\n tenantIdRef.current = true;\r\n toggleLoadingState();\r\n fetchTenant(onAction, preSelectedTenantId, onTenantResponse);\r\n } else if (preSelectedLedgerId && !ledgerIdRef.current) {\r\n ledgerIdRef.current = true;\r\n toggleLoadingState();\r\n fetchTenantDetailsFromLedger(onAction, preSelectedLedgerId, onTenantResponse);\r\n } else {\r\n if (tenantDetails) {\r\n onSelectTenant(tenantDetails);\r\n }\r\n if (ledgerDetails) {\r\n updateLedgerDetails(ledgerDetails);\r\n }\r\n }\r\n }, [tenantName]);\r\n\r\n const onSelectLedger = (_, selectedLedgerId) => {\r\n if (selectedLedgerId !== ledgerId) {\r\n const ledger = ledgerList.find(({ id }) => id === selectedLedgerId) || {};\r\n setStatus({\r\n ...status,\r\n ...updateLedgerDetails(ledger),\r\n });\r\n setPrefilledFalse();\r\n clearStoreKeys(['unpaidAr']);\r\n }\r\n };\r\n\r\n const renderTenantAutosuggest = () => (\r\n \r\n { autoSuggestRef = ref; }}\r\n fullWidth\r\n PopdownProps={{\r\n addon: { start: null },\r\n placeholder: 'Search Tenant',\r\n classes: { popdown: classes.fullWidth },\r\n additionalIcon: {\r\n left: ,\r\n },\r\n // TODO: Find better solution to handle smaller widths\r\n PaperProps: { width: isMobile ? '280px' : '350px' },\r\n autoFocus: true,\r\n shouldAutoFocus,\r\n }}\r\n resource={AUTO_SUGGEST_RESOURCE.TENANT}\r\n labelRenderer={({ name }) => getName(name)}\r\n onSelectCard={onSelectTenant}\r\n textFieldClasses={{\r\n input: classes.input,\r\n alignment: classes.iconAlignment,\r\n }}\r\n onActionConfig={tenantAutosuggest()}\r\n highlightInputTextInCard\r\n />\r\n \r\n );\r\n\r\n const renderLedgerDropDown = () => (\r\n \r\n ,\r\n },\r\n }}\r\n textFieldClasses={{ alignment: classes.iconAlignment }}\r\n />\r\n \r\n );\r\n\r\n const useNextAmountPayable = () => {\r\n const nextAmountPayable = calculateNextAmountPayable(unitList, ledgerId, false);\r\n setFieldValue('extra.amountWithoutModifier', round(convertToNumber(nextAmountPayable), 2, true));\r\n };\r\n\r\n const renderItems = (iconName = '', itemName) => {\r\n const ledgerBalance = getFormattedAmount(tenantInfoBalance);\r\n let label = `${currency} ${ledgerBalance}`;\r\n let isDisabled = !tenantInfo;\r\n let shouldShowPrepayButton = false;\r\n switch (itemName) {\r\n case ITEM.COMMENT:\r\n label = comments || localisable.noComments;\r\n isDisabled = !comments;\r\n break;\r\n case ITEM.UNIT:\r\n label = unitList.map(({ label: unitName }) => unitName).join(', ') || localisable.noUnits;\r\n break;\r\n case ITEM.TENANT_NAME:\r\n label = tenantName;\r\n break;\r\n case ITEM.LEDGER_NAME:\r\n // eslint-disable-next-line prefer-destructuring\r\n label = ledgerDetails.label;\r\n break;\r\n default:\r\n shouldShowPrepayButton = itemName === ITEM.BALANCE && (ledgerBalance || 0) - 0 === 0\r\n && !!unitList.length && source !== SOURCE.retailSale.value && !isRefund;\r\n break;\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n {tenantInfo ? label : '--'}\r\n \r\n {\r\n shouldShowPrepayButton\r\n && (\r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n };\r\n\r\n const onAlertClose = () => {\r\n setOpenAlert(false);\r\n };\r\n\r\n const { totalLateFee = 0, idListToProcess } = lateFeeInfo;\r\n\r\n const onProcessLateEvent = (error, response) => {\r\n setOpenAlert(false);\r\n if (error) {\r\n onApiError(error);\r\n } else if (response) {\r\n updateIgnoreWsMessage(false);\r\n const updatedBalance = balance + totalLateFee;\r\n const updatedLedgerInfo = { ...ledgerInfo };\r\n updatedLedgerInfo.balance = convertToNumber(updatedBalance);\r\n setStatus({\r\n ...status,\r\n ledgerInfo: updatedLedgerInfo,\r\n });\r\n if (!shouldModifyNegativeAmount(isRefund, unitList, setFieldValue, ledgerId, source, updatedLedgerInfo.balance)) {\r\n setFieldValue('extra.amountWithoutModifier', round(updatedBalance, 2, true));\r\n }\r\n }\r\n };\r\n\r\n const onClickProcess = () => {\r\n updateIgnoreWsMessage(true);\r\n processLateEvent(onAction, idListToProcess, onProcessLateEvent);\r\n };\r\n\r\n const renderLateEventProcessingAlert = () => (\r\n !!totalLateFee\r\n && (\r\n \r\n \r\n {localisable.skipNow.toUpperCase()}\r\n \r\n \r\n {localisable.process.toUpperCase()}\r\n \r\n \r\n )}\r\n >\r\n \r\n {localisable.shouldProcessLateFee.replace(':fee', `${currency}${totalLateFee}`)}\r\n \r\n \r\n )\r\n );\r\n\r\n return (\r\n <>\r\n {\r\n showTenantInformation\r\n && (\r\n \r\n \r\n {tenantDetails ? renderItems('cp-individual', ITEM.TENANT_NAME) : renderTenantAutosuggest()}\r\n {ledgerDetails\r\n ? tenantName && !showOnlyTenantName && renderItems('cp-ledger', ITEM.LEDGER_NAME)\r\n : tenantName && !showOnlyTenantName && renderLedgerDropDown()}\r\n \r\n {tenantName && !showOnlyTenantName && (\r\n \r\n {renderItems('cp-comment', ITEM.COMMENT)}\r\n {renderItems('cp-unit', ITEM.UNIT)}\r\n {renderItems('cp-balance', ITEM.BALANCE)}\r\n \r\n )}\r\n \r\n )\r\n }\r\n {renderLateEventProcessingAlert()}\r\n \r\n );\r\n};\r\n\r\nTenantInformation.propTypes = {\r\n classes: PropTypes.object,\r\n isRefund: PropTypes.bool,\r\n onAction: PropTypes.func,\r\n onApiError: PropTypes.func,\r\n currency: PropTypes.string,\r\n formProps: PropTypes.object,\r\n clearStoreKeys: PropTypes.func,\r\n ledgerDetails: PropTypes.object,\r\n tenantDetails: PropTypes.object,\r\n setFetchedBalance: PropTypes.func,\r\n setPrefilledFalse: PropTypes.func,\r\n getAutoSuggestRef: PropTypes.func,\r\n getOnLedgerBalance: PropTypes.func,\r\n showOnlyTenantName: PropTypes.bool,\r\n toggleLoadingState: PropTypes.func,\r\n updateCurrentStatus: PropTypes.func,\r\n reFetchTenantBalance: PropTypes.bool,\r\n showTenantInformation: PropTypes.bool,\r\n updateIgnoreWsMessage: PropTypes.func,\r\n ledgerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n tenantId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n changeToRefundIfNegativeBalance: PropTypes.bool,\r\n source: PropTypes.string,\r\n shouldAutoFocus: PropTypes.bool,\r\n};\r\n\r\nTenantInformation.defaultProps = {\r\n formProps: {},\r\n currency: '$',\r\n showOnlyTenantName: false,\r\n reFetchTenantBalance: false,\r\n showTenantInformation: true,\r\n updateIgnoreWsMessage: () => { },\r\n setFetchedBalance: () => { },\r\n updateCurrentStatus: () => {},\r\n source: '',\r\n};\r\n\r\nexport default withStyles(TenantInformationStyle)(memo(TenantInformation));\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst TenantInformationStyle = theme => ({\r\n tenantInfoContainer: {\r\n [media.mobileUp]: { padding: '8px 16px' },\r\n [media.tabletUp]: { padding: theme.spacing(0, 4, 2, 4) },\r\n backgroundColor: theme.palette.common.white,\r\n borderRadius: 4,\r\n },\r\n marginFromIconInRightContainer: { marginLeft: 20 },\r\n input: { width: '100%' },\r\n ledger: {\r\n [media.mobileUp]: { paddingTop: theme.spacing(1), width: '52%' },\r\n [media.tabletUp]: { paddingTop: theme.spacing(4), width: '100%' },\r\n },\r\n leftContainer: { [media.tabletUp]: { paddingRight: 16 } },\r\n rightContainer: {\r\n [media.mobileUp]: { padding: theme.spacing(2, 0, 0, 0) },\r\n [media.tabletUp]: { padding: theme.spacing(0, 0, 0, 2) },\r\n },\r\n fullWidth: { width: '100%' },\r\n disabled: { color: theme.palette.text.disabled },\r\n rightContentTopMargin: { marginTop: 8 },\r\n defaultCursor: { cursor: 'default' },\r\n prefilled: {\r\n marginLeft: theme.spacing(1),\r\n borderBottom: '1px solid',\r\n paddingBottom: theme.spacing(1),\r\n width: '100%',\r\n },\r\n ledgerPrefilled: { paddingTop: theme.spacing(4) },\r\n iconAlignment: { alignItems: 'flex-end' },\r\n itemLabelContainer: { width: 'auto', overflow: 'hidden' },\r\n prepayButton: { padding: 0, minHeight: 0, marginTop: 8 },\r\n});\r\n\r\nexport default TenantInformationStyle;\r\n","import { FormControlLabel, Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { memo, useContext, useEffect, useMemo, useRef, useState } from 'react';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { DeliveryMethodDropdown } from 'Generic/deliveryMethodDropdown/components/DeliveryMethodDropdown';\r\nimport { getCurrentDate } from 'Commons/helpers/utils/DateTime';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport TenantAlertDialog from 'Commons/components/business/tenantAlertDialog/components/TenantAlertDialog';\r\nimport { EMPTY_FUNC, SOURCE, STATUS } from 'Commons/config/constants/Constants';\r\nimport { Checkbox, FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { FormRadioGroup } from 'Generic/radiogroup/components/RadioGroup';\r\nimport { XS_12_MD_5, XS_12_MD_7 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport SecondsCountdownTimer from 'Generic/secondscountdowntimer/SecondsCountdownTimer';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport { SMALL_DROPDOWN_MAX_HEIGHT } from 'External/containers/configuration/config/Constants';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport { round } from 'Commons/helpers/utils';\r\nimport { WALK_IN_CUSTOMER_ID } from 'External/containers/pointOfSale/config/Constants';\r\nimport { PROCESSOR_TYPE } from 'External/containers/facilityConfiguration/config/Constants';\r\nimport HostedFormContext from 'Commons/contexts/HostedFormContext';\r\nimport { DROPDOWN_PRINTER_SELECTION_TYPES } from 'Commons/components/generic/deliveryMethodDropdown/config/Constants';\r\nimport PaymentTypeStyle from '../styles/PaymentTypeStyle';\r\nimport { calculateNextAmountPayable } from '../utils/BalanceCalculator';\r\nimport { PAYMENT_ACTION, PAYMENT_METHOD } from '../config/Constants';\r\nimport CreditCard from './CreditCard';\r\nimport localisable from '../../../../config/strings/localisable';\r\nimport ACH from './ACH';\r\nimport Check from './Check';\r\nimport MoneyOrder from './MoneyOrder';\r\nimport { setFormValuesForUseCardOnFile } from '../utils/DataHandler';\r\nimport SyrapayHostedForm from './SyrapayHostedForm';\r\nimport shouldModifyNegativeAmount from '../utils/CheckAmount';\r\n\r\nconst useStyles = makeStyles(PaymentTypeStyle);\r\n\r\nconst PaymentType = ({\r\n formProps: {\r\n values: {\r\n ledgerId: ledger, amount, cardProcessorId, cardInfo: { autoPayEnabled, saveCardForFutureTransactions } = {},\r\n extra: { tenantAlerts = {}, ledgerBalance = null, payUsing, unitList = [] } = {},\r\n doNotProcessCard = false, receiptDeliveryMethod = [], paymentNumber, useAchOnFile, achInfo = {},\r\n achInfo: { autoPayEnabled: autoPayEnabledForAch } = {},\r\n } = {},\r\n status,\r\n setStatus,\r\n setFieldValue,\r\n setFieldTouched,\r\n touched = {},\r\n setTouched,\r\n status: {\r\n selectedPaymentMethod: { id: paymentMethodId, value: { type } = {} } = {},\r\n ledgerInfo: {\r\n id: selectedLedgerId,\r\n balance = 0,\r\n financials: {\r\n cardInfo = {}, cardInfo: { token = '' } = {},\r\n preferredPaymentMethodId, achPpd: { displayAccountNumber } = {}, isAutoPayEnabled,\r\n } = {},\r\n } = {},\r\n tenantInfo: { id: tenantId = '' } = {},\r\n tenantInfo = {},\r\n preferredMethod,\r\n amountWithoutModifier,\r\n onAlertYes = false,\r\n } = {},\r\n } = {}, formProps,\r\n payment: {\r\n requireComment,\r\n refuseCheckFromFlaggedTenants: refuseCheck = false,\r\n defaultCardProcessor,\r\n documentation: { Receipt: { generate: shouldGenerateReceipt = false } = {} } = {},\r\n } = {},\r\n paymentMethods, getCurrentStatus,\r\n currentFacility: { data: { id: fid } = {} } = {},\r\n reFetchTenantBalance, cardProcessorData, source,\r\n parentSize, isRefund, timeOutMessage, isButtonLoading, onSubmitHostedForm,\r\n setPrefilledFalse, onSubmit, getFuncToOpenPaymentMethod, isAmountWithoutModifierTouched, showAlerts,\r\n}) => {\r\n const classes = useStyles(parentSize && parentSize.current ? parentSize.current.getBoundingClientRect() : {});\r\n const isFlagged = !!(tenantAlerts.paymentRelatedAlert && tenantAlerts.paymentRelatedAlert[type]);\r\n const previousPaymentId = useRef();\r\n const paymentMethodDropdownRef = useRef(null);\r\n const [refundPeriodExpiredDisabled, setRefundPeriodExpiredDisabled] = useState(false);\r\n const [mounted, setMounted] = useState(false);\r\n const [paymentMethodsList, setPaymentMethodsList] = useState([]);\r\n const [paymentMethodsObject, setPaymentMethods] = useState({});\r\n const [generalAlertShown, setGeneralAlertShown] = useState(false);\r\n const [alerts, setAlerts] = useState([]);\r\n const [shouldUseTenantAddress, makeUseOfTenantAddress] = useState(false);\r\n const { authenticationKey, disableFormSubmit, closeHostedForm } = useContext(HostedFormContext);\r\n let balanceUpdated = reFetchTenantBalance\r\n && ledgerBalance !== null\r\n && !isAmountWithoutModifierTouched\r\n ? ledgerBalance\r\n : balance;\r\n let amountWithoutModifierUpdated = reFetchTenantBalance\r\n && ledgerBalance !== null\r\n && !isAmountWithoutModifierTouched\r\n ? ledgerBalance\r\n : amountWithoutModifier;\r\n if (isRefund) {\r\n balanceUpdated = balanceUpdated < 0 ? -balanceUpdated : 0;\r\n amountWithoutModifierUpdated = amountWithoutModifierUpdated < 0 ? -amountWithoutModifierUpdated : amountWithoutModifierUpdated;\r\n } else if (amountWithoutModifierUpdated <= 0 && !isAmountWithoutModifierTouched) {\r\n amountWithoutModifierUpdated = (source === SOURCE.retailSale.value)\r\n ? 0 : calculateNextAmountPayable(unitList, selectedLedgerId);\r\n }\r\n const { innerWidth, deviceInfo: { isMobile } = {} } = window;\r\n const { formControlClasses, deliveryMethodContainerProps } = useConstructor(() => ({\r\n formControlClasses: {\r\n classes: {\r\n label: classes.smallFont,\r\n root: classes.noRightMargin,\r\n },\r\n },\r\n deliveryMethodContainerProps: { xs: 12, md: 12, lg: 12, className: classes.receiptDropDownContainer },\r\n }));\r\n const initialCardInfo = useMemo(() => cardInfo, [token]);\r\n useEffect(() => {\r\n setFieldValue('extra.cardInfo', initialCardInfo);\r\n }, [token]);\r\n const shouldEnterCardDetails = useMemo(() => payUsing === localisable.enterCardDetails,\r\n [payUsing]);\r\n\r\n const shouldShowCardComponent = useMemo(() => {\r\n const { [cardProcessorId]: { data: { processorType, refundPeriodExpired = false } = {} } = {} } = cardProcessorData;\r\n if (isRefund) {\r\n setFieldValue('doNotProcessCard', refundPeriodExpired);\r\n setFieldTouched('doNotProcessCard', true);\r\n setRefundPeriodExpiredDisabled(refundPeriodExpired);\r\n }\r\n if (processorType === PROCESSOR_TYPE.Syrapay.value) return payUsing !== localisable.enterCardDetails;\r\n return true;\r\n }, [payUsing, cardProcessorId]);\r\n\r\n const convertPaymentMethodsListToMap = methods => methods.reduce((obj, item) => ({\r\n ...obj,\r\n [item.id]: item,\r\n }), {});\r\n\r\n const doesPaymentMethodUseCard = useMemo(() => type === PAYMENT_METHOD.CREDIT_CARD\r\n || type === PAYMENT_METHOD.DEBIT_CARD,\r\n [type]);\r\n\r\n const doesPaymentMethodSavesInfo = useMemo(() => type === PAYMENT_METHOD.CREDIT_CARD\r\n || type === PAYMENT_METHOD.DEBIT_CARD || type === PAYMENT_METHOD.ACH,\r\n [type]);\r\n\r\n const doesPaymentMethodUsePaymentNumber = useMemo(() => type === PAYMENT_METHOD.CHECK\r\n || type === PAYMENT_METHOD.MONEY_ORDER, [type]);\r\n\r\n const { receiptGridProps, shouldShowPrintCopies, payTypeAndCardProcessorContainer } = useMemo(() => {\r\n if (receiptDeliveryMethod && receiptDeliveryMethod.includes('Print')) {\r\n // return {\r\n // receiptGridProps: { xs: doesPaymentMethodUseCard ? 12 : 7 },\r\n // payTypeAndCardProcessorContainer: { xs: doesPaymentMethodUseCard ? 12 : 5 },\r\n // shouldShowPrintCopies: true,\r\n // };\r\n }\r\n return {\r\n receiptGridProps: {\r\n xs: doesPaymentMethodUseCard ? 12 : 6,\r\n md: doesPaymentMethodUseCard ? 4 : 6,\r\n xl: doesPaymentMethodUseCard && !source ? 4 : 5,\r\n },\r\n payTypeAndCardProcessorContainer: {\r\n xs: 12,\r\n // eslint-disable-next-line no-nested-ternary\r\n lg: 12,\r\n },\r\n shouldShowPrintCopies: false,\r\n };\r\n }, [receiptDeliveryMethod, doesPaymentMethodUseCard, paymentMethodId]);\r\n\r\n const isInEditMode = useMemo(() => payUsing === localisable.enterCardDetails,\r\n [payUsing]);\r\n\r\n const payUsingOptions = useMemo(() => {\r\n const { [cardProcessorId]: { data: { lanes: [laneId] = [] } = {} } = {} } = cardProcessorData;\r\n const payOptions = [{ label: localisable.enterCardDetails, value: localisable.enterCardDetails }];\r\n if (laneId) {\r\n payOptions.unshift({ label: localisable.swipeCard, value: localisable.swipeCard });\r\n }\r\n if (ledger && token && preferredPaymentMethodId === paymentMethodId) {\r\n payOptions.unshift({ label: localisable.useCardOnFile, value: localisable.useCardOnFile });\r\n }\r\n return payOptions;\r\n }, [ledger, cardProcessorId, paymentMethodId, token]);\r\n\r\n const setTodaysDate = () => {\r\n setFieldValue('effectiveDate', getCurrentDate());\r\n };\r\n\r\n useEffect(() => {\r\n const methodListWithLabelValue = paymentMethods.reduce((acc, {\r\n id, value: {\r\n description,\r\n status: paymentMethodStatus = STATUS.Active.value,\r\n } = {},\r\n }) => {\r\n if (paymentMethodStatus === STATUS.Active.value) {\r\n return [...acc, { label: description, value: id }];\r\n }\r\n return acc;\r\n }, []) || [];\r\n const mappedPaymentMethods = convertPaymentMethodsListToMap(paymentMethods);\r\n const selectedMethod = paymentMethods.find(({ id }) => `${id}` === `${preferredMethod || preferredPaymentMethodId}`) || paymentMethods[0] || {};\r\n\r\n let updatedStatus = { ...status };\r\n if (!mounted) updatedStatus = { ...getCurrentStatus(), ...status };\r\n setStatus({ ...updatedStatus, selectedPaymentMethod: selectedMethod });\r\n setPaymentMethods(mappedPaymentMethods);\r\n setPaymentMethodsList(methodListWithLabelValue);\r\n if (tenantId) {\r\n setFieldValue('paymentMethodId', selectedMethod.id);\r\n if (!shouldModifyNegativeAmount(isRefund, unitList, setFieldValue, selectedLedgerId, source, ledgerBalance || balance)) {\r\n setFieldValue('extra.amountWithoutModifier', round(balanceUpdated, 2, true));\r\n }\r\n }\r\n }, [tenantId, preferredMethod, JSON.stringify(paymentMethods)]);\r\n\r\n useEffect(() => {\r\n const date = getCurrentDate();\r\n const alertArray = [\r\n ...(tenantAlerts.general ? tenantAlerts.general : []),\r\n ...(isFlagged ? tenantAlerts.paymentRelatedAlert[type] : []),\r\n ];\r\n const processedAlerts = [];\r\n alertArray.forEach(({ comments, severity, fromDate = date, toDate = date, id, visibleAt }) => {\r\n if ((fromDate <= date) && (!toDate || toDate >= date) && (visibleAt.includes('Payment') || visibleAt.includes('All'))) {\r\n processedAlerts.push({ comments, severity, id });\r\n }\r\n });\r\n setAlerts(processedAlerts);\r\n }, [JSON.stringify(tenantAlerts), paymentMethodId]);\r\n\r\n useEffect(() => {\r\n const cardProcessorList = Object.values(cardProcessorData);\r\n let cardProcessorIdToSet = cardProcessorId;\r\n if (doesPaymentMethodUseCard && cardProcessorList.length) {\r\n if (!cardProcessorIdToSet) {\r\n const [{ id: processorId } = {}] = cardProcessorList;\r\n cardProcessorIdToSet = defaultCardProcessor || processorId;\r\n setFieldValue('cardProcessorId', cardProcessorIdToSet);\r\n }\r\n } else {\r\n cardProcessorIdToSet = undefined;\r\n setFieldValue('cardProcessorId', undefined);\r\n setFieldValue('cardData', undefined);\r\n }\r\n if (doesPaymentMethodUseCard && cardProcessorIdToSet) {\r\n setTodaysDate();\r\n if (token) {\r\n setFormValuesForUseCardOnFile(setFieldValue, isAutoPayEnabled);\r\n } else {\r\n setFieldValue('cardInfo', undefined);\r\n setFieldValue('extra.payUsing', localisable.enterCardDetails);\r\n }\r\n }\r\n if (!doesPaymentMethodUsePaymentNumber && paymentNumber) {\r\n setFieldValue('paymentNumber', undefined);\r\n }\r\n if (type !== PAYMENT_METHOD.ACH) {\r\n if (useAchOnFile) {\r\n setFieldValue('useAchOnFile', undefined);\r\n }\r\n if (Object.keys(achInfo).length) {\r\n setFieldValue('achInfo', undefined);\r\n }\r\n }\r\n }, [type]);\r\n\r\n const onSelectPayType = (_, selectedPaymentMethodId, onAlertYesArgument = false) => {\r\n previousPaymentId.current = paymentMethodId;\r\n if (selectedPaymentMethodId !== paymentMethodId) {\r\n const selectedPaymentMethod = paymentMethodsObject[selectedPaymentMethodId] || {};\r\n setStatus({ ...status, selectedPaymentMethod, onAlertYes: onAlertYesArgument });\r\n setFieldValue('extra.amountWithoutModifier', round(amountWithoutModifierUpdated || amount, 2, true));\r\n if (preferredPaymentMethodId === selectedPaymentMethodId && isObjWithKeys(initialCardInfo)) {\r\n setFieldValue('extra.cardInfo', initialCardInfo);\r\n setFormValuesForUseCardOnFile(setFieldValue, isAutoPayEnabled);\r\n } else {\r\n setFieldValue('cardInfo', {});\r\n setFieldValue('extra.cardInfo', {});\r\n setTouched({ ...touched, cardInfo: { cvvOrPin: false, billingInfo: { month: false, year: false } } });\r\n if (payUsing === localisable.useCardOnFile) {\r\n setFieldValue('cardInfo', undefined);\r\n setFieldValue('extra.payUsing', localisable.enterCardDetails);\r\n }\r\n }\r\n setPrefilledFalse();\r\n }\r\n };\r\n\r\n const onChangePayUsing = (_, payUsingValue, changeAutoPayValue = true) => {\r\n if (payUsingValue === localisable.useCardOnFile) {\r\n setFieldValue('useCardOnFile', true, false);\r\n setFieldValue('cardInfo', {\r\n saveCardForFutureTransactions: true,\r\n autoPayEnabled: isAutoPayEnabled && changeAutoPayValue,\r\n }, false);\r\n } else {\r\n setFieldValue('useCardOnFile', undefined, false);\r\n let saveCard = true;\r\n if (changeAutoPayValue) {\r\n saveCard = undefined;\r\n setFieldValue('cardInfo.autoPayEnabled', undefined, false);\r\n }\r\n setFieldValue('cardInfo.saveCardForFutureTransactions', saveCard, false);\r\n }\r\n };\r\n\r\n const onChangeUseAchOnFile = (payUsingAchOnFile, changeAutoPayValue = true) => {\r\n if (payUsingAchOnFile) {\r\n setFieldValue('extra.payUsing', localisable.useAchOnFile, false);\r\n setFieldValue('useAchOnFile', true, false);\r\n setFieldValue('achInfo', {\r\n saveAchForFutureTransactions: true,\r\n autoPayEnabled: isAutoPayEnabled && changeAutoPayValue,\r\n }, false);\r\n } else {\r\n setFieldValue('useAchOnFile', undefined, false);\r\n let saveAch = true;\r\n if (changeAutoPayValue) {\r\n saveAch = undefined;\r\n setFieldValue('achInfo.autoPayEnabled', undefined, false);\r\n }\r\n setFieldValue('achInfo.saveAchForFutureTransactions', saveAch, false);\r\n }\r\n };\r\n\r\n const onEnableOrDisableAutoPay = (autoPayValue, baseFieldName) => {\r\n if (autoPayValue) {\r\n setFieldValue('extra.payUsing', localisable.enterCardDetails, false);\r\n if (baseFieldName === 'cardInfo') {\r\n onChangePayUsing('', localisable.enterCardDetails, false);\r\n } else {\r\n onChangeUseAchOnFile(false, false);\r\n }\r\n }\r\n };\r\n\r\n const onEnableOrDisableCardProcessing = (_, enableProcessing) => {\r\n if (!enableProcessing) {\r\n setTodaysDate();\r\n }\r\n };\r\n\r\n const renderPayTypeDropDown = () => (\r\n \r\n { paymentMethodDropdownRef.current = ref; }}\r\n maxHeight={SMALL_DROPDOWN_MAX_HEIGHT}\r\n />\r\n {\r\n doesPaymentMethodUseCard\r\n && (\r\n \r\n )\r\n }\r\n \r\n );\r\n\r\n const renderReceiptDropDown = () => (\r\n screenMaxWidth.tablet && innerWidth <= screenMaxWidth.laptop))),\r\n [classes.cardProcessorBottomMargin]: !shouldShowPrintCopies && !source && (doesPaymentMethodUseCard\r\n && !(isMobile || (innerWidth > screenMaxWidth.tablet && innerWidth <= screenMaxWidth.laptop))),\r\n },\r\n shouldShowPrintCopies && doesPaymentMethodUseCard && classes.receiptTopMargin,\r\n )}\r\n {...receiptGridProps}\r\n >\r\n \r\n \r\n );\r\n\r\n const renderCardProcessorDropDown = () => (\r\n \r\n \r\n \r\n );\r\n\r\n const renderCommentsTextField = () => (\r\n setPrefilledFalse()}\r\n />\r\n );\r\n\r\n const renderPayUsing = () => (\r\n \r\n );\r\n\r\n const renderSaveCardCheckboxes = baseFieldName => (\r\n <>\r\n \r\n onEnableOrDisableAutoPay(autoPayValue, baseFieldName)}\r\n\r\n />\r\n \r\n );\r\n\r\n const renderPaymentProcessingDetails = () => (\r\n \r\n \r\n \r\n {isRefund ? localisable.refundInProgress : localisable.paymentInProgress}\r\n \r\n \r\n {isRefund ? localisable.waitingForRefundConfirmation\r\n : localisable.waitingForPaymentConfirmation}\r\n \r\n {\r\n timeOutMessage\r\n && (\r\n \r\n \r\n {timeOutMessage}\r\n \r\n \r\n onSubmit('', {}, PAYMENT_ACTION.CANCEL_TRANSACTION)}\r\n >\r\n {isRefund ? localisable.cancelRefund : localisable.cancelPayment}\r\n \r\n onSubmit('', {}, PAYMENT_ACTION.GET_TRANSACTION_STATUS)}\r\n >\r\n {localisable.noWait}\r\n \r\n \r\n \r\n )\r\n }\r\n {\r\n !timeOutMessage && payUsing !== localisable.swipeCard\r\n && \r\n }\r\n \r\n );\r\n\r\n const openPaymentMethodDropdown = () => {\r\n const { current: paymentMethodDropdown } = paymentMethodDropdownRef;\r\n paymentMethodDropdown.setState({ open: true });\r\n };\r\n\r\n useEffect(() => {\r\n getFuncToOpenPaymentMethod(openPaymentMethodDropdown);\r\n setMounted(true);\r\n }, []);\r\n\r\n const renderPaymentMethod = () => {\r\n if ((isButtonLoading && type === PAYMENT_METHOD.CREDIT_CARD) || timeOutMessage) {\r\n return renderPaymentProcessingDetails();\r\n }\r\n switch (type) {\r\n case PAYMENT_METHOD.DEBIT_CARD:\r\n case PAYMENT_METHOD.CREDIT_CARD:\r\n if (payUsing === localisable.swipeCard) {\r\n return (\r\n \r\n \r\n \r\n {localisable.clickOn} \r\n {isRefund ? localisable.refund : localisable.pay}\r\n  \r\n {localisable.andSwipeTheCard}\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n );\r\n\r\n case PAYMENT_METHOD.ACH: return (\r\n \r\n );\r\n case PAYMENT_METHOD.CHECK: return ;\r\n case PAYMENT_METHOD.MONEY_ORDER: return ;\r\n default: return null;\r\n }\r\n };\r\n\r\n const renderAlert = () => {\r\n let isOpen = alerts.length ? !onAlertYes : false;\r\n if (!(refuseCheck && isFlagged) && generalAlertShown) {\r\n isOpen = false;\r\n }\r\n if (!showAlerts) {\r\n isOpen = false;\r\n }\r\n\r\n const onAlertClose = () => {\r\n setAlerts([]);\r\n if (!(refuseCheck && isFlagged)) {\r\n setGeneralAlertShown(true);\r\n }\r\n };\r\n\r\n const onPaymentTypeChange = (e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n setFieldValue('paymentMethodId', previousPaymentId.current);\r\n onSelectPayType('', previousPaymentId.current, true);\r\n setAlerts([]);\r\n openPaymentMethodDropdown();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n };\r\n\r\n const renderUseAchOnFile = () => (\r\n onChangeUseAchOnFile(true)}>\r\n \r\n {localisable.useAchOnFile}\r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n screenMaxWidth.tablet && innerWidth <= screenMaxWidth.laptop)\r\n || shouldShowPrintCopies) && doesPaymentMethodUseCard\r\n ? 'column' : 'row'\r\n }\r\n justify={\r\n (isMobile || !!source || (innerWidth > screenMaxWidth.tablet && innerWidth <= screenMaxWidth.laptop)\r\n || shouldShowPrintCopies) && doesPaymentMethodUseCard\r\n ? 'flex-end' : 'flex-start'\r\n }\r\n item\r\n xs={12}\r\n className={classes.noWrap}\r\n alignItems=\"baseline\"\r\n >\r\n \r\n {renderPayTypeDropDown()}\r\n {doesPaymentMethodUseCard && renderCardProcessorDropDown()}\r\n {shouldGenerateReceipt && renderReceiptDropDown()}\r\n \r\n \r\n {\r\n doesPaymentMethodUseCard\r\n && (\r\n \r\n {localisable.payUsing}\r\n {renderPayUsing()}\r\n \r\n )\r\n }\r\n {\r\n type === PAYMENT_METHOD.ACH && displayAccountNumber\r\n && (\r\n \r\n {renderUseAchOnFile()}\r\n \r\n )\r\n }\r\n {\r\n shouldShowCardComponent\r\n ? (\r\n \r\n {renderPaymentMethod()}\r\n \r\n )\r\n : (\r\n \r\n {authenticationKey && (\r\n \r\n )}\r\n makeUseOfTenantAddress(!shouldUseTenantAddress)}\r\n />\r\n )}\r\n label={localisable.useTenantAddress}\r\n />\r\n \r\n )\r\n }\r\n {\r\n doesPaymentMethodSavesInfo && !isRefund && !isButtonLoading && !timeOutMessage\r\n && (\r\n \r\n {renderSaveCardCheckboxes(type === PAYMENT_METHOD.ACH ? 'achInfo' : 'cardInfo')}\r\n \r\n )}\r\n \r\n {renderCommentsTextField()}\r\n \r\n {renderAlert()}\r\n \r\n );\r\n};\r\n\r\nPaymentType.propTypes = {\r\n isRefund: PropTypes.bool,\r\n source: PropTypes.string,\r\n payment: PropTypes.object,\r\n showAlerts: PropTypes.bool,\r\n formProps: PropTypes.object,\r\n parentSize: PropTypes.object,\r\n isButtonLoading: PropTypes.bool,\r\n paymentMethods: PropTypes.array,\r\n timeOutMessage: PropTypes.string,\r\n getCurrentStatus: PropTypes.func,\r\n currentFacility: PropTypes.object,\r\n setPrefilledFalse: PropTypes.func,\r\n cardProcessorData: PropTypes.object,\r\n onSubmit: PropTypes.func.isRequired,\r\n reFetchTenantBalance: PropTypes.bool,\r\n getFuncToOpenPaymentMethod: PropTypes.func,\r\n onSubmitHostedForm: PropTypes.func.isRequired,\r\n isAmountWithoutModifierTouched: PropTypes.bool,\r\n refundPeriodExpiredDisabled: PropTypes.bool,\r\n};\r\nPaymentType.defaultProps = {\r\n formProps: {},\r\n payment: {},\r\n paymentMethods: [],\r\n getCurrentStatus: () => { },\r\n reFetchTenantBalance: false,\r\n cardProcessorData: {},\r\n timeOutMessage: '',\r\n getFuncToOpenPaymentMethod: EMPTY_FUNC,\r\n currentFacility: {},\r\n refundPeriodExpiredDisabled: false,\r\n};\r\n\r\nexport default (memo(PaymentType));\r\n","const TenantAlertDialogStyles = theme => ({\r\n error: { color: theme.palette.error.main },\r\n warning: { color: theme.palette.warning.main },\r\n alignCenter: { alignSelf: 'center' },\r\n});\r\n\r\nexport default TenantAlertDialogStyles;\r\n","import { memo, useState, useEffect } from 'react';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { THOUSAND_MILI_SECONDS } from './config/Constants';\r\n\r\nconst SecondsCountdownTimer = ({ maxSeconds, ...props }) => {\r\n const [seconds, setSeconds] = useState(maxSeconds);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setSeconds(secondsValue => secondsValue - 1);\r\n }, THOUSAND_MILI_SECONDS);\r\n setTimeout(() => { clearInterval(interval); }, maxSeconds * THOUSAND_MILI_SECONDS);\r\n }, []);\r\n\r\n return ({seconds} {localisable.sec});\r\n};\r\n\r\nSecondsCountdownTimer.propTypes = { maxSeconds: PropTypes.number };\r\n\r\nexport default memo(SecondsCountdownTimer);\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst PaymentTypeStyle = theme => ({\r\n paymentTypeContainer: {\r\n [media.mobileUp]: { padding: '8px 16px' },\r\n [media.tabletUp]: { padding: '16px 32px' },\r\n borderRadius: 4,\r\n },\r\n secondaryColor: { color: theme.palette.secondary.main },\r\n actionIcons: { marginLeft: 8, marginRight: 8 },\r\n noWrap: { flexWrap: 'nowrap' },\r\n actionsContainer: { width: 'auto' },\r\n inputClasses: { '$&noBorder': { border: '0px' } },\r\n noBorder: { },\r\n dropDown: { '&$disabled': { '&$noBorderBottomDisabled': { borderBottom: 'none' } } },\r\n disabled: {},\r\n noBorderBottom: { borderBottom: 'none' },\r\n receiptDropDown: { alignSelf: 'flex-end' },\r\n payTypeContainer: {\r\n [media.mobile]: { justifyContent: 'space-around' },\r\n [media.tabletUp]: { justifyContent: 'flex-start' },\r\n },\r\n payTypeContainerwithCard: { [media.mobile]: { justifyContent: 'flex-start' } },\r\n noRightMargin: { marginRight: 0 },\r\n noBorderBottomDisabled: { },\r\n dropDownWidth: { maxWidth: 150 },\r\n defaultCursor: { cursor: 'default' },\r\n cardProcessorBottomMargin: { marginBottom: theme.spacing(4) },\r\n smallFont: { fontSize: 12 },\r\n defaultTopMargin: { marginTop: theme.spacing(2) },\r\n error: { color: theme.palette.error.main },\r\n warning: { color: theme.palette.warning.main },\r\n alignCenter: { alignSelf: 'center' },\r\n alert: ({ width = 0, height, left, top } = {}) => ({\r\n height,\r\n width,\r\n position: 'absolute',\r\n left,\r\n top,\r\n }),\r\n paper: {\r\n width: '70%',\r\n minHeight: '25%',\r\n },\r\n radioGroup: { flexDirection: 'row' },\r\n infoIcon: { fontSize: '3rem' },\r\n shortTopMargin: { marginTop: theme.spacing(1) },\r\n errorButton: {\r\n color: theme.hexWithOpacity(theme.palette.error.main, 7),\r\n '&:hover': { backgroundColor: theme.hexWithOpacity(theme.palette.error.main, 1) },\r\n },\r\n waitButton: {\r\n color: theme.palette.primary.main,\r\n '&:hover': { backgroundColor: theme.hexWithOpacity(theme.palette.primary.main, 1) },\r\n },\r\n useAchOnFile: { width: 'auto', paddingTop: theme.spacing(2) },\r\n printCopy: {\r\n padding: theme.spacing(0, 2, 0, 4),\r\n marginBottom: theme.spacing(-1),\r\n [media.laptopUp]: { padding: theme.spacing(0, 0, 0, 4) },\r\n [media.desktop]: { padding: theme.spacing(0, 2, 0, 4) },\r\n },\r\n autoWidth: { width: 'auto' },\r\n receiptTopMargin: { marginTop: theme.spacing(2) },\r\n formControlLabel: { marginBottom: theme.spacing(2) },\r\n receiptDropDownContainer: { display: 'flex', justifyContent: 'flex-start', [media.mobile]: { paddingLeft: theme.spacing(1) } },\r\n});\r\n\r\nexport default PaymentTypeStyle;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { IS_MAX_LENGTH_20 } from 'Commons/config/constants/Validators';\r\nimport paymentMethodStyle from '../styles/PaymentMethodStyle';\r\n\r\nconst useStyles = makeStyles(paymentMethodStyle, { name: 'Check' });\r\n\r\nconst Check = ({\r\n disabled, classes: classesProp,\r\n mapping: { number: { visibility: numberVisibility = true, ...numberProps } = {} } = {},\r\n}) => {\r\n const classes = useStyles({ classes: classesProp });\r\n return (\r\n <>\r\n \r\n {\r\n numberVisibility\r\n && (\r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nCheck.propTypes = {\r\n disabled: PropTypes.bool,\r\n source: PropTypes.string,\r\n mapping: PropTypes.object,\r\n classes: PropTypes.object,\r\n};\r\n\r\nexport default Check;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { SOURCE } from 'Commons/config/constants/Constants';\r\nimport { IS_MAX_LENGTH_20 } from 'Commons/config/constants/Validators';\r\nimport paymentMethodStyle from '../styles/PaymentMethodStyle';\r\n\r\nconst useStyles = makeStyles(paymentMethodStyle);\r\n\r\nconst MoneyOrder = ({ disabled, source }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nMoneyOrder.propTypes = { disabled: PropTypes.bool, source: PropTypes.string };\r\n\r\nexport default MoneyOrder;\r\n","import Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { withStyles, Grid, Typography, Loader } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { FormDatePicker } from 'Generic/datepicker/components/DatePicker';\r\nimport { memo, useEffect, useState, useMemo, useRef, useCallback } from 'react';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\nimport { FormTextField, TextField } from 'Generic/textfield/components/TextField';\r\nimport { FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { isPositiveNumeric, isTwoDecimalPlaces } from 'Commons/helpers/utils/validator/Validator';\r\nimport round from 'Commons/helpers/utils/Round';\r\nimport { FEATURE, SOURCE, TIMEOUT } from 'Commons/config/constants/Constants';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { debounce } from 'Commons/helpers/utils/Utils';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport PaymentInformationStyle from '../styles/PaymentInformationStyle';\r\nimport { MODIFIER_TYPE, PAYMENT_METHOD } from '../config/Constants';\r\nimport { calculateNextAmountPayable } from '../utils/BalanceCalculator';\r\nimport PAYMENT_PERMISSION_KEYS from '../config/PermissionKeys';\r\nimport shouldModifyNegativeAmount from '../utils/CheckAmount';\r\nimport { getPaymentInfo } from '../config/ApiRequests';\r\n\r\nconst PaymentInformation = ({\r\n classes,\r\n formProps: {\r\n values: {\r\n ledgerId: ledger, waiveSurchargeOrDiscount, extra: {\r\n amount: extraAmount,\r\n amountWithoutModifier: extraAmountWithoutModifier,\r\n },\r\n doNotProcessCard, extra: { ledgerBalance = null, unitList = [] } = {}, paymentMethodId,\r\n } = {},\r\n status,\r\n setStatus,\r\n setFieldValue,\r\n status: {\r\n selectedPaymentMethod: { value: { modifier, type } = {} } = {},\r\n amountWithoutModifier,\r\n modifierValue,\r\n ledgerInfo: { balance: statusLedgerBalance = 0, financials: { exemptFromSurcharge: isLedgerExemptedFromSurcharge } = {}, id = '' } = {},\r\n } = {},\r\n },\r\n permission,\r\n reFetchTenantBalance,\r\n setPrefilledFalse,\r\n isUnpaidBillsOpen,\r\n onShowUnpaidBills,\r\n source,\r\n isRefund,\r\n disableAmountEdit,\r\n showUnpaidBills,\r\n getIsAmountWithoutModifierTouched,\r\n getResetIsAmountWithoutModifierTouched,\r\n onAction,\r\n fetchingAmountField,\r\n setFetchingAmountField,\r\n}) => {\r\n const { deviceInfo: { isDesktop } } = window;\r\n const [isWaived, setIsWaived] = useState(false);\r\n const paymentInfoArguments = useRef({});\r\n const [isUpdatingAmountWithoutModifier, setIsUpdatingAmountWithoutModifier] = useState(false);\r\n const [canModifyEffectiveDate, setEffectiveDatePermission] = useState(false);\r\n const [amountValidator, setAmountValidator] = useState({ isTwoDecimalPlaces, isPositiveNumeric });\r\n const isAmountWithoutModifierTouched = useRef(false);\r\n let amountWithoutModifierUpdated = reFetchTenantBalance\r\n && ledgerBalance !== null\r\n && !isAmountWithoutModifierTouched.current\r\n ? ledgerBalance\r\n : amountWithoutModifier;\r\n if (!isRefund && amountWithoutModifierUpdated <= 0 && !isAmountWithoutModifierTouched.current) {\r\n amountWithoutModifierUpdated = source === SOURCE.retailSale.value\r\n ? 0 : calculateNextAmountPayable(unitList, id);\r\n }\r\n const isViewUnpaidBillsVisible = useMemo(() => (!isUnpaidBillsOpen && showUnpaidBills\r\n && ledger && ![SOURCE.ledger.value, FEATURE.movein.value, FEATURE.moveout.value].includes(source)),\r\n [source, ledger, isUnpaidBillsOpen]);\r\n\r\n const doesPaymentMethodUseCard = useMemo(() => type === PAYMENT_METHOD.CREDIT_CARD\r\n || type === PAYMENT_METHOD.DEBIT_CARD,\r\n [type]);\r\n\r\n const getPlusMinusSymbol = useMemo(() => {\r\n if (modifier === MODIFIER_TYPE.DISCOUNT) return isRefund ? '+' : '-';\r\n return isRefund ? '-' : '+';\r\n });\r\n\r\n const resetIsAmountWithoutModifierTouched = () => {\r\n isAmountWithoutModifierTouched.current = false;\r\n };\r\n\r\n const getDollarIcon = (props = {}) => (\r\n \r\n );\r\n\r\n const { amountWithoutModifierAddon, modifierAddon, inputProps } = useConstructor(() => ({\r\n amountWithoutModifierAddon: { start: getDollarIcon() },\r\n modifierAddon: { start: getDollarIcon({ disabled: true }) },\r\n inputProps: { className: classes.input },\r\n }));\r\n\r\n const totalAmountAddon = useMemo(() => ({ start: getDollarIcon({ disabled: !ledger }) }),\r\n [ledger]);\r\n\r\n const shouldShowModifiers = modifier && modifier !== MODIFIER_TYPE.NO_MODIFIER\r\n && !(modifier === MODIFIER_TYPE.SURCHARGE\r\n && isLedgerExemptedFromSurcharge);\r\n\r\n useEffect(() => {\r\n setEffectiveDatePermission(hasPermission(permission, PAYMENT_PERMISSION_KEYS.EFFECTIVE_DATE));\r\n // TODO: Discuss and see if it still make sense\r\n if (!hasPermission(permission, PAYMENT_PERMISSION_KEYS.NEGATIVE_PAYMENT)) {\r\n setAmountValidator({\r\n ...amountValidator,\r\n isPositiveNumeric,\r\n });\r\n }\r\n }, [permission]);\r\n\r\n useEffect(() => {\r\n getIsAmountWithoutModifierTouched(isAmountWithoutModifierTouched.current);\r\n }, [isAmountWithoutModifierTouched.current]);\r\n\r\n useEffect(() => {\r\n getResetIsAmountWithoutModifierTouched(resetIsAmountWithoutModifierTouched);\r\n }, []);\r\n\r\n const updatePaymentFields = (changedAmountWithoutModifier, surchargeOrDiscount,\r\n amount, touchedValue = true) => {\r\n setStatus({\r\n ...status,\r\n amountWithoutModifier: changedAmountWithoutModifier,\r\n modifierValue: surchargeOrDiscount,\r\n });\r\n if (touchedValue) {\r\n isAmountWithoutModifierTouched.current = true;\r\n }\r\n setFieldValue('amount', round(amount, 2, true));\r\n setPrefilledFalse();\r\n };\r\n\r\n const onPaymentInfo = isOnChange => (__, response) => {\r\n paymentInfoArguments.current = {};\r\n if (response) {\r\n const {\r\n data: {\r\n amount,\r\n amountWithoutModifier: changedAmountWithoutModifier,\r\n surchargeOrDiscount,\r\n } = {},\r\n } = response;\r\n updatePaymentFields(changedAmountWithoutModifier, surchargeOrDiscount, amount, isOnChange);\r\n }\r\n setFetchingAmountField();\r\n };\r\n\r\n const paymentInfo = (body, isOnChange) => {\r\n if (isOnChange || (body.paymentMethodId && (body.amountWithoutModifier || body.amount)\r\n && (paymentInfoArguments.current.amountWithoutModifier !== round(body.amountWithoutModifier, 2, true)\r\n || paymentInfoArguments.current.paymentMethodId !== body.paymentMethodId))) {\r\n if (body.amountWithoutModifier) setFetchingAmountField('amount');\r\n else setFetchingAmountField('amountWithoutModifier');\r\n getPaymentInfo(onAction, body, onPaymentInfo(isOnChange));\r\n paymentInfoArguments.current = {\r\n amountWithoutModifier: round(body.amountWithoutModifier, 2, true),\r\n paymentMethodId,\r\n };\r\n }\r\n };\r\n\r\n const onWaiveDiscountOrSurcharge = (_, waived = false) => {\r\n setIsWaived(waived);\r\n if (!waived && round(amountWithoutModifierUpdated, 2, true) !== round(0, 2, true)) {\r\n paymentInfo({\r\n amountWithoutModifier: amountWithoutModifierUpdated,\r\n paymentMethodId,\r\n source: isRefund ? 'Refund' : 'Payment',\r\n });\r\n } else {\r\n updatePaymentFields(amountWithoutModifierUpdated, round(0, 2, true), amountWithoutModifierUpdated, false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (shouldShowModifiers && !isAmountWithoutModifierTouched.current) {\r\n onWaiveDiscountOrSurcharge('', isWaived);\r\n }\r\n }, [amountWithoutModifierUpdated]);\r\n\r\n useEffect(() => {\r\n shouldModifyNegativeAmount(isRefund, unitList, setFieldValue, id, source, ledgerBalance || statusLedgerBalance);\r\n if (shouldShowModifiers) {\r\n onWaiveDiscountOrSurcharge('', isWaived);\r\n }\r\n resetIsAmountWithoutModifierTouched();\r\n }, [JSON.stringify(unitList)]);\r\n\r\n\r\n const onChangeAmountWithoutModifier = (isOnChange, value) => {\r\n if (value) {\r\n if (waiveSurchargeOrDiscount || round(value, 2, true) === round(0, 2, true)) {\r\n updatePaymentFields(value, round(0, 2, true), value, isOnChange);\r\n } else {\r\n paymentInfo({\r\n amountWithoutModifier: round(value, 2, true),\r\n paymentMethodId,\r\n source: isRefund ? 'Refund' : 'Payment',\r\n }, isOnChange);\r\n }\r\n }\r\n };\r\n\r\n const onChangeAmount = (isOnChange, value) => {\r\n if (value) {\r\n if (waiveSurchargeOrDiscount || round(value, 2, true) === round(0, 2, true)) {\r\n updatePaymentFields(value, round(0, 2, true), value);\r\n } else {\r\n paymentInfo({\r\n amount: round(value, 2, true),\r\n paymentMethodId,\r\n source: isRefund ? 'Refund' : 'Payment',\r\n }, isOnChange);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (extraAmount && paymentMethodId) {\r\n onChangeAmount(null, extraAmount);\r\n }\r\n }, [extraAmount]);\r\n\r\n const debounceAmountWithoutModifierChange = useCallback(debounce((e, value) => {\r\n onChangeAmountWithoutModifier(e, value);\r\n }, TIMEOUT), [paymentMethodId]);\r\n\r\n useEffect(() => {\r\n if (extraAmountWithoutModifier && paymentMethodId) {\r\n if (isUpdatingAmountWithoutModifier) {\r\n debounceAmountWithoutModifierChange(true, extraAmountWithoutModifier);\r\n } else {\r\n onChangeAmountWithoutModifier(null, extraAmountWithoutModifier);\r\n }\r\n }\r\n }, [extraAmountWithoutModifier, paymentMethodId]);\r\n\r\n const onChangeAmountField = useCallback(debounce((e, value) => {\r\n if (modifier !== MODIFIER_TYPE.NO_MODIFIER) onChangeAmount(e, value);\r\n }, TIMEOUT), [paymentMethodId]);\r\n\r\n const onBlurAmountField = (event) => {\r\n if (modifier === MODIFIER_TYPE.NO_MODIFIER) {\r\n const currentAmountValue = round(event.target.value || 0, 2, true);\r\n updatePaymentFields(currentAmountValue, round(0, 2, true), currentAmountValue);\r\n }\r\n };\r\n\r\n const onChangeAmountWithoutModifierField = (e, value) => {\r\n setIsUpdatingAmountWithoutModifier(true);\r\n setFieldValue('extra.amountWithoutModifier', value);\r\n };\r\n\r\n const renderEffectiveDatePicker = () => {\r\n const isDisabled = !ledger || !canModifyEffectiveDate || (doesPaymentMethodUseCard && !doNotProcessCard);\r\n return (\r\n \r\n setPrefilledFalse()}\r\n />\r\n \r\n );\r\n };\r\n\r\n const renderModifierTitle = () => (\r\n // Checkbox size will be reduced\r\n \r\n \r\n \r\n );\r\n\r\n const renderAmountWithoutModifierField = () => (\r\n \r\n \r\n {\r\n fetchingAmountField === 'amountWithoutModifier'\r\n ? \r\n : (\r\n setIsUpdatingAmountWithoutModifier(false) }}\r\n typographyVariant=\"h5\"\r\n addon={amountWithoutModifierAddon}\r\n disabled={disableAmountEdit}\r\n />\r\n )\r\n }\r\n \r\n \r\n );\r\n\r\n const renderModifierField = () => (\r\n \r\n \r\n {\r\n fetchingAmountField\r\n ? \r\n : (\r\n \r\n )\r\n }\r\n {renderModifierTitle()}\r\n \r\n \r\n );\r\n\r\n const renderTotalAmountField = () => (\r\n \r\n \r\n {\r\n fetchingAmountField === 'amount'\r\n ? \r\n : (\r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n\r\n const renderAmountInfo = () => (\r\n \r\n {\r\n shouldShowModifiers\r\n && (\r\n \r\n {renderAmountWithoutModifierField()}\r\n \r\n \r\n {getPlusMinusSymbol}\r\n \r\n \r\n {renderModifierField()}\r\n \r\n =\r\n \r\n \r\n )\r\n }\r\n \r\n {renderTotalAmountField()}\r\n {isViewUnpaidBillsVisible && (\r\n \r\n onShowUnpaidBills()}\r\n color=\"primary\"\r\n />\r\n \r\n )}\r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n {renderEffectiveDatePicker()}\r\n \r\n {renderAmountInfo()}\r\n \r\n );\r\n};\r\n\r\nPaymentInformation.propTypes = {\r\n classes: PropTypes.object,\r\n formProps: PropTypes.object,\r\n permission: PropTypes.object,\r\n reFetchTenantBalance: PropTypes.bool,\r\n setPrefilledFalse: PropTypes.func,\r\n onShowUnpaidBills: PropTypes.func,\r\n isUnpaidBillsOpen: PropTypes.bool,\r\n source: PropTypes.string,\r\n isRefund: PropTypes.bool,\r\n disableAmountEdit: PropTypes.bool,\r\n showUnpaidBills: PropTypes.bool,\r\n getIsAmountWithoutModifierTouched: PropTypes.func,\r\n getResetIsAmountWithoutModifierTouched: PropTypes.func,\r\n onAction: PropTypes.func,\r\n fetchingAmountField: PropTypes.string,\r\n setFetchingAmountField: PropTypes.func,\r\n};\r\nPaymentInformation.defaultProps = {\r\n formProps: {},\r\n permission: {},\r\n reFetchTenantBalance: false,\r\n isUnpaidBillsOpen: false,\r\n onShowUnpaidBills: () => {\r\n },\r\n disableAmountEdit: false,\r\n showUnpaidBills: true,\r\n};\r\n\r\nexport default withStyles(PaymentInformationStyle, { index: 1 })(memo(PaymentInformation));\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst PaymentInformationStyle = theme => ({\r\n paymentInfoContainer: {\r\n [media.mobileUp]: { padding: theme.spacing(1, 2) },\r\n [media.tabletUp]: { padding: theme.spacing(2, 4) },\r\n borderRadius: 4,\r\n },\r\n amountContainer: {\r\n padding: theme.spacing(1, 2, 2, 2),\r\n backgroundColor: theme.hexWithOpacity(theme.palette.primary.main, 1),\r\n borderRadius: '4px',\r\n border: `1px solid ${theme.palette.primary.main}`,\r\n width: 'auto',\r\n },\r\n dateAndReceipt: { paddingBottom: theme.spacing(4) },\r\n noWrap: { flexWrap: 'nowrap' },\r\n formControlCheckbox: { margin: 0 },\r\n checkboxLabel: {\r\n marginLeft: 8,\r\n // fontSize: 10,\r\n // [media.desktop]: { fontSize: 12 },\r\n ...theme.typography.caption,\r\n },\r\n checkbox: { color: theme.palette.text.primary, '&$modifierCheckbox': { padding: 0 } },\r\n modifierCheckbox: { },\r\n noPadding: { padding: 0 },\r\n dollarIcon: { verticalAlign: 'super', marginLeft: theme.spacing(-1), marginBottom: theme.spacing(-1) },\r\n datePickerWidth: {\r\n maxWidth: 140,\r\n paddingLeft: 0,\r\n },\r\n processCard: { marginTop: 24, marginLeft: 8 },\r\n helperText: { textAlign: 'center', color: theme.palette.text.primary, width: 'auto' },\r\n viewIcon: { paddingLeft: theme.spacing(2) },\r\n viewIconContainer: { paddingTop: theme.spacing(2) },\r\n input: { textAlign: 'center' },\r\n noDisplay: { display: 'none' },\r\n textAlignCenter: { textAlign: 'center' },\r\n});\r\n\r\nexport default PaymentInformationStyle;\r\n","import { makeStyles, Grid, Button, useLocation } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { memo, useMemo, useState, useRef } from 'react';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { WALK_IN_CUSTOMER_ID } from 'External/containers/pointOfSale/config/Constants';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { DASHBOARD_TYPE } from 'Commons/config/constants/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { ROUTE } from 'External/redux/config/RouteNames';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport headerStyle from '../styles/HeaderStyle';\r\nimport { getPaymentHeaderActionItems } from '../config/HeaderConfig';\r\nimport { clsx } from '../../../../helpers/utils/clsx';\r\nimport PromoPlan from './PromoPlan';\r\n\r\nconst useStyles = makeStyles(headerStyle, { name: 'PaymentHeader' });\r\n\r\nconst Header = ({\r\n header, toggleBillAhead, showModal, togglePromoPlan, submitPromoPlansData,\r\n isBillAheadOpen, tenantId, ledgerId, fid, isPromoPlanOpen,\r\n formProps: {\r\n values: {\r\n extra: {\r\n unitList = [],\r\n unitList: [{ ledger: { id: ledgerOfUnit } = {} } = {}] = [],\r\n } = {},\r\n },\r\n },\r\n promoPlanData,\r\n}) => {\r\n const classes = useStyles();\r\n const { pathname } = useLocation();\r\n const unitsByLedger = useMemo(() => (\r\n unitList.reduce((acc, value) => {\r\n const { ledger: { id: ledger } = {} } = value;\r\n const { [`${ledger}`]: units = [] } = acc;\r\n units.push(value);\r\n return { ...acc, [`${ledger}`]: units };\r\n }, {})\r\n ), [ledgerOfUnit]);\r\n\r\n const isPromoPlanValid = (promoPlan, validChargeCategories) => {\r\n const {\r\n disabled = false, expired = false,\r\n value: { bills = [], accessibility: { features: { Payment } = {} } = {} } = {},\r\n } = promoPlan;\r\n return (\r\n Payment\r\n && !disabled\r\n && !expired\r\n && bills.some(({ chargeCategory }) => validChargeCategories.includes(Number(chargeCategory)))\r\n );\r\n };\r\n\r\n const selectedPromoPlansRef = useRef({});\r\n\r\n const [canApplyPromoPlans, setApplyPromoPlanState] = useState(false);\r\n\r\n const allPromoPlansForUnits = useMemo(() => {\r\n const allPromoPlans = {};\r\n const validChargeCategories = [];\r\n unitList.forEach(({ rentChargeCategoryId }) => {\r\n validChargeCategories.push(Number(rentChargeCategoryId));\r\n });\r\n Object.values(promoPlanData).forEach((promoPlan = {}) => {\r\n const { id, value = {} } = promoPlan;\r\n if (isPromoPlanValid(promoPlan, validChargeCategories)) {\r\n allPromoPlans[id] = { ...promoPlan, ...value };\r\n }\r\n });\r\n setApplyPromoPlanState(false);\r\n return allPromoPlans;\r\n }, [ledgerOfUnit]);\r\n\r\n const { deviceInfo: { isDesktop } } = window;\r\n // TODO: Remove Bill Ahead disable during Unit Transfer when Case 29288 is resolved\r\n const isCurrentPathUnitTransfer = pathname === buildUrl('facilityFeatures',\r\n { fid, feature: ROUTE.TRANSFER }, DASHBOARD_TYPE.EXTERNAL);\r\n const isBillAheadDisabled = !ledgerId || !(unitsByLedger[`${ledgerId}`] || []).length || isCurrentPathUnitTransfer;\r\n const isPromoPlanDisabled = !ledgerOfUnit || !isObjWithKeys(promoPlanData);\r\n\r\n const headerActionItems = useMemo(() => getPaymentHeaderActionItems({\r\n isPromoPlanDisabled,\r\n isBillAheadDisabled,\r\n isBillAheadOpen,\r\n toggleBillAhead,\r\n togglePromoPlan,\r\n showModal,\r\n }),\r\n [isBillAheadOpen, isBillAheadDisabled, isPromoPlanDisabled]);\r\n\r\n const { current: selectedPromoPlans } = selectedPromoPlansRef;\r\n\r\n const setSelectedPromoPlans = (updatedPromoPlans = {}) => {\r\n selectedPromoPlansRef.current = updatedPromoPlans;\r\n setApplyPromoPlanState(true);\r\n };\r\n\r\n const onSubmitPromoPlans = () => {\r\n const selectedPromoPlansCopy = deepCopy(selectedPromoPlans);\r\n togglePromoPlan();\r\n submitPromoPlansData({ ledgerId: ledgerOfUnit, addList: Object.keys(selectedPromoPlansCopy) });\r\n };\r\n\r\n if (header) return header;\r\n\r\n return (\r\n \r\n {localisable.makePayment}\r\n {\r\n tenantId !== WALK_IN_CUSTOMER_ID && (\r\n \r\n {headerActionItems.map(({ shouldShow, onClick, icon, isDisabled, label }) => (\r\n \r\n {\r\n shouldShow\r\n && (\r\n ,\r\n }}\r\n {...!isDisabled && { onClick }}\r\n >\r\n {isDesktop && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n )\r\n }\r\n \r\n ))}\r\n \r\n )\r\n }\r\n {localisable.promoPlans}}\r\n actions={(\r\n <>\r\n \r\n {localisable.cancel}\r\n \r\n \r\n {localisable.apply}\r\n \r\n \r\n )}\r\n >\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n header: PropTypes.any,\r\n showModal: PropTypes.bool,\r\n formProps: PropTypes.object,\r\n isPromoPlanOpen: PropTypes.bool,\r\n togglePromoPlan: PropTypes.func,\r\n toggleBillAhead: PropTypes.func,\r\n promoPlanData: PropTypes.object,\r\n isBillAheadOpen: PropTypes.bool,\r\n submitPromoPlansData: PropTypes.func,\r\n tenantId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n ledgerId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n fid: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n};\r\n\r\nexport default memo(Header);\r\n","const headerStyle = theme => ({\r\n paymentHeader: { minWidth: 'max-content' },\r\n autoWidth: { width: 'auto' },\r\n alertAction: { padding: 0 },\r\n cancelButton: { marginRight: theme.spacing(1) },\r\n});\r\n\r\nexport default headerStyle;\r\n","import localisable from 'Commons/config/strings/localisable';\r\n\r\nconst getPaymentHeaderActionItems = ({\r\n isBillAheadOpen, togglePromoPlan, showModal,\r\n toggleBillAhead, isBillAheadDisabled, isPromoPlanDisabled,\r\n}) => {\r\n const { deviceInfo: { isDesktop } } = window;\r\n return [\r\n {\r\n shouldShow: true,\r\n onClick: togglePromoPlan,\r\n icon: 'cp-promo-plan',\r\n isDisabled: isPromoPlanDisabled,\r\n label: localisable.promoPlan,\r\n },\r\n {\r\n shouldShow: !isBillAheadOpen && (showModal || !isDesktop),\r\n onClick: toggleBillAhead,\r\n icon: 'cp-manual-charge',\r\n isDisabled: isBillAheadDisabled,\r\n label: localisable.billAhead,\r\n },\r\n ];\r\n};\r\n\r\nexport { getPaymentHeaderActionItems };\r\n","import { memo, useMemo } from 'react';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport MultiSelect from 'Commons/components/generic/multiselect/components/MultiSelect';\r\nimport { DROPDOWN_MAX_HEIGHT, TEXT_FIELD_WIDTH } from 'External/containers/configuration/config/Constants';\r\nimport { Dropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport PromoPlanStyle from '../styles/PromoPlanStyle';\r\n\r\nconst useStyles = makeStyles(PromoPlanStyle, { name: 'PaymentPromoPlan' });\r\n\r\nconst PromoPlan = ({ promoPlanData, selectedPromoPlans, setSelectedPromoPlans }) => {\r\n const classes = useStyles();\r\n\r\n const promoPlans = useConstructor(() => Object.entries(promoPlanData).map(([id, value]) => {\r\n const { title } = value;\r\n return { label: title, value: id, id };\r\n }));\r\n\r\n const initiallySelectedPromoPlans = useMemo(() => Object.keys(selectedPromoPlans), [selectedPromoPlans]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nPromoPlan.propTypes = {\r\n promoPlanData: PropTypes.object,\r\n selectedPromoPlans: PropTypes.object,\r\n setSelectedPromoPlans: PropTypes.func,\r\n};\r\n\r\nexport default memo(PromoPlan);\r\n","const PromoPlanStyle = theme => ({ container: { padding: theme.spacing(1, 5, 2, 1) } });\r\n\r\nexport default PromoPlanStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst sectionHeaderStyle = theme => ({\r\n sectionChildren: {},\r\n section: {\r\n paddingBottom: theme.spacing(1),\r\n '& $childPadding': { paddingTop: theme.spacing(2) },\r\n },\r\n marginLeft: { marginLeft: 8 },\r\n header: {\r\n width: '100%',\r\n padding: theme.spacing(1.5, 0),\r\n [media.desktop]: { padding: theme.spacing(2, 0) },\r\n },\r\n inlineFlex: {\r\n width: 'auto',\r\n display: 'inline-flex',\r\n },\r\n divider: {\r\n backgroundColor: theme.palette.text.disabled,\r\n marginBottom: 10,\r\n },\r\n title: { },\r\n collapsedSection: { },\r\n subsection: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n width: '100%',\r\n },\r\n childPadding: {},\r\n noMarginBottom: { marginBottom: 0 },\r\n addonStart: { width: 'auto' },\r\n cursorPointer: { cursor: 'pointer' },\r\n children: {},\r\n disabled: { color: theme.palette.text.disabled },\r\n});\r\n\r\nexport default sectionHeaderStyle;\r\n","import { ZIP_CODE_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\n\r\nconst callApi = (onAction, endPoint, body, callback = () => {}, shouldSendCustomHeader = true, method = 'POST', storeMethod = 'read') => {\r\n if (onAction) {\r\n onAction({\r\n config: [{\r\n api: {\r\n method: storeMethod,\r\n action: {\r\n methodType: method,\r\n endPoint,\r\n ...(body && { body }),\r\n ...shouldSendCustomHeader && {\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'facility',\r\n },\r\n },\r\n },\r\n },\r\n callback,\r\n }],\r\n });\r\n }\r\n};\r\n\r\n\r\nconst fetchZipCodeData = (onAction, zipCode, callback) => {\r\n callApi(onAction, `${ZIP_CODE_ENDPOINTS.search}/${zipCode}`, null, callback, false, 'GET');\r\n};\r\n\r\nexport { fetchZipCodeData };\r\n","const AddressStyles = () => ({\r\n threeDotProgressSpinner: {\r\n '& div': {\r\n width: 10,\r\n height: 10,\r\n },\r\n },\r\n});\r\n\r\nexport default AddressStyles;\r\n","const labelStyle = theme => ({\r\n label: {\r\n ...theme.typography.caption,\r\n '&$disabled': { color: theme.palette.text.disabled },\r\n },\r\n labelItem: { '&.MuiGrid-item': { paddingBottom: 0 } },\r\n disabled: {},\r\n});\r\n\r\nexport default labelStyle;\r\n","const timezoneApiConfig = {\r\n search: {\r\n store: {\r\n key: 'timezone',\r\n actionKey: 'timezone_read',\r\n payload: {},\r\n },\r\n method: 'read',\r\n },\r\n autoSuggest: {\r\n store: {\r\n key: 'timezone',\r\n actionKey: 'timezone_read',\r\n },\r\n method: 'read',\r\n },\r\n};\r\n\r\nexport { timezoneApiConfig };\r\n","const confirmationAlertStyles = theme => ({\r\n noBtn: {\r\n marginRight: theme.spacing(2),\r\n backgroundColor: theme.hexWithOpacity(theme.palette.error.main, 1),\r\n '&:hover': {\r\n color: theme.palette.error.main,\r\n backgroundColor: theme.hexWithOpacity(theme.palette.error.main, 3),\r\n },\r\n },\r\n invoiceAlert: { maxWidth: theme.spacing(67) },\r\n});\r\n\r\nexport default confirmationAlertStyles;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst tabsStyle = theme => ({\r\n tabsRoot: {},\r\n fullWidth: { width: '100%' },\r\n flexContainer: { alignItems: 'center' },\r\n displayNone: { display: 'none' },\r\n defaultIndicator: { display: 'inline' },\r\n disabledTab: {\r\n cursor: 'default',\r\n pointerEvents: 'none',\r\n },\r\n disabledPadding: { paddingBottom: 8 },\r\n tabs: {\r\n minWidth: 'auto',\r\n '& > span': {\r\n display: 'inline-block',\r\n textAlign: 'left',\r\n fontFamily: 'Open Sans',\r\n textTransform: 'capitalize',\r\n [media.mobileUp]: { textTransform: 'uppercase' },\r\n '&:after': {\r\n content: 'close-quote',\r\n display: 'block',\r\n transition: 'transform 150ms ease-in-out',\r\n transformOrigin: '0% 50%',\r\n },\r\n },\r\n fontSize: '1rem',\r\n padding: theme.spacing(1, 2),\r\n },\r\n default: {},\r\n halfBottomAlways: { '& > span': { '&:after': { transform: 'scaleX(0.2)' } } },\r\n halfBottomOnHover: {\r\n '& > span': {\r\n '&:after': { transform: 'scaleX(0)' },\r\n '&:hover': { '&:after': { transform: 'scaleX(0.2)' } },\r\n },\r\n },\r\n selected: {\r\n '& > span': {\r\n '&:after': { transform: 'scaleX(1)' },\r\n '&:hover': { '&:after': { transform: 'scaleX(1)' } },\r\n },\r\n color: theme.palette.primary.main,\r\n },\r\n tabOpacity: { opacity: 1 },\r\n\r\n primaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.primary.main}` } } },\r\n secondaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.secondary.main}` } } },\r\n tertiaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.tertiary.main}` } } },\r\n\r\n /* Specific to Roles Group. TODO: Give generic color name */\r\n rolesGroupPrimaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.rolesGroup.primary}` } } },\r\n rolesGroupSecondaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.rolesGroup.secondary}` } } },\r\n rolesGroupTertiaryBorder: { '& > span': { '&:after': { borderBottom: `solid 3px ${theme.palette.rolesGroup.tertiary}` } } },\r\n separatorPadding: { paddingRight: theme.spacing(2) },\r\n});\r\n\r\nexport default tabsStyle;\r\n","const enums = {\r\n variants: ['Active', 'Inactive', 'Locked', 'Created',\r\n 'LeadActive', 'LeadConverted', 'LeadCold', 'LeadLost', 'LeadDuplicate', 'Unavailable'],\r\n};\r\n\r\nexport default enums;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst triangleStyle = theme => ({\r\n triangle: {\r\n width: 0,\r\n height: 0,\r\n borderStyle: 'solid',\r\n [media.mobileUp]: { borderWidth: '0 120px 50px 0' },\r\n [media.tabletUp]: { borderWidth: '0 150px 70px 0' },\r\n },\r\n triangleContainer: {\r\n position: 'absolute',\r\n right: 0,\r\n top: 0,\r\n },\r\n title: {\r\n position: 'absolute',\r\n [media.mobileUp]: { right: theme.spacing(1), top: theme.spacing(1) },\r\n [media.tabletUp]: { right: theme.spacing(1.5) },\r\n color: theme.palette.common.white,\r\n },\r\n statusActive: { borderColor: `transparent ${theme.palette.status.active} transparent transparent` },\r\n statusInactive: { borderColor: `transparent ${theme.palette.status.inactive} transparent transparent` },\r\n statusLocked: { borderColor: `transparent ${theme.palette.status.locked} transparent transparent` },\r\n statusUnavailable: { borderColor: `transparent ${theme.palette.rentalStatus.unavailable} transparent transparent` },\r\n\r\n statusLeadActive: { borderColor: `transparent ${theme.palette.primary.main} transparent transparent` },\r\n statusLeadCold: { borderColor: `transparent ${theme.palette.chip.estimate} transparent transparent` },\r\n statusLeadLost: { borderColor: `transparent ${theme.palette.status.leadLost} transparent transparent` },\r\n statusLeadConverted: { borderColor: `transparent ${theme.palette.status.active} transparent transparent` },\r\n statusLeadDuplicate: { borderColor: `transparent ${theme.palette.status.leadDuplicate} transparent transparent` },\r\n});\r\n\r\nexport default triangleStyle;\r\n","const reportStyle = () => ({\r\n noCloseButton: { display: 'none' },\r\n reportProgressModal: {},\r\n dialogContentRoot: {\r\n // padding: 0,\r\n /* Temporary Styles - For Loader */\r\n minHeight: '18vh',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n});\r\n\r\nexport default reportStyle;\r\n","const ExpansionPanelStyle = theme => ({\r\n panel: {\r\n width: '100%',\r\n boxShadow: 'none',\r\n boxSizing: 'border-box',\r\n backgroundImage: \"url(\\\"data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='4' ry='4' stroke='black' stroke-width='1' stroke-dasharray='4%2c4 ' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e\\\")\",\r\n borderColor: theme.palette.black[500],\r\n marginTop: theme.spacing(2),\r\n },\r\n panelOpen: { height: 'auto' },\r\n panelClose: { height: theme.spacing(5) },\r\n panelSummary: { padding: theme.spacing(0, 3, 0, 2) },\r\n panelSummaryAdjustment: { marginTop: theme.spacing(-1.25) },\r\n panelSummaryIcon: { color: theme.palette.primary.main },\r\n panelDetails: { paddingLeft: theme.spacing(2) },\r\n expanded: {},\r\n root: { '&$expanded': { minHeight: theme.spacing(6) } },\r\n content: { '&$expanded': { margin: theme.spacing(2, 0) } },\r\n});\r\n\r\nexport default ExpansionPanelStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst InsuranceStyle = theme => ({\r\n heading: {\r\n marginBottom: theme.spacing(2.75),\r\n lineHeight: 1,\r\n },\r\n coverageDetails: {\r\n paddingTop: theme.spacing(2),\r\n [media.laptopUp]: { paddingTop: theme.spacing(1.5) },\r\n [media.desktop]: { paddingTop: theme.spacing(2) },\r\n },\r\n amountField: { alignSelf: 'center' },\r\n indicator: {\r\n fontSize: 8,\r\n [media.laptop]: { fontSize: 6 },\r\n [media.desktop]: { fontSize: 8 },\r\n cursor: 'default',\r\n lineHeight: 2,\r\n },\r\n required: { color: theme.palette.error.main, paddingRight: theme.spacing(1) },\r\n autoWidth: { width: 'auto' },\r\n modalGrid: {\r\n width: '90%',\r\n height: '90%',\r\n [media.tabletUp]: { width: '50%', height: '45%' },\r\n [media.laptopUp]: { width: '35%', height: '65%' },\r\n [media.desktopUp]: { width: '35%', height: '55%' },\r\n flexWrap: 'nowrap',\r\n },\r\n modalBody: { padding: theme.spacing(0, 2), backgroundColor: theme.palette.common.white, justifyContent: 'center' },\r\n modalHeader: {\r\n padding: theme.spacing(2, 2, 4, 2),\r\n minHeight: 0,\r\n },\r\n prorateAmount: {\r\n padding: theme.spacing(2, 0, 0, 2),\r\n [media.laptopUp]: { padding: theme.spacing(1.5, 0, 0, 2) },\r\n [media.desktop]: { padding: theme.spacing(2, 0, 0, 2) },\r\n },\r\n loader: { alignSelf: 'center' },\r\n policyPremiumMoveIn: {\r\n paddingTop: theme.spacing(2),\r\n [media.laptopUp]: { paddingTop: theme.spacing(1.5) },\r\n [media.desktop]: { paddingTop: theme.spacing(2) },\r\n },\r\n policyPremium: {\r\n paddingBottom: theme.spacing(2),\r\n [media.laptopUp]: { paddingBottom: theme.spacing(1.5) },\r\n [media.desktop]: { paddingBottom: theme.spacing(2) },\r\n },\r\n formFieldMargin: { margin: theme.spacing(2, 0, 1, 0) },\r\n fitHeight: { height: 'fit-content' },\r\n});\r\n\r\nexport default InsuranceStyle;\r\n","const accessCodeFieldStyle = theme => ({\r\n title: { marginRight: theme.spacing(1), marginTop: theme.spacing(1.4) },\r\n autoWidth: { width: 'auto' },\r\n labelWithIcon: { marginTop: theme.spacing(2.5) },\r\n});\r\n\r\nexport default accessCodeFieldStyle;\r\n","import Collapse from '@material-ui/core/Collapse';\r\nimport { Grid, List, ListItem, withStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport Link from 'Commons/components/generic/link/components/Link';\r\nimport CompanyLogo from 'Commons/components/generic/logo/components/CompanyLogo';\r\nimport { DASHBOARD_TYPE, FACILITY_LICENSE_STATUS } from 'Commons/config/constants/Constants';\r\nimport enums from 'Commons/config/constants/Enums';\r\nimport { isNonEmptyArray, isValidValue } from 'Commons/helpers/utils/DataHelpers';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { isSyrasoftUser, isLiveData, isInternalDashboard } from 'Commons/helpers/utils/Utils';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Button from 'Generic/button/components/Button';\r\nimport listItemsStyle from '../styles/ListItemsStyle';\r\nimport doesUrlBelongsToAnyGivenPath from '../utils/Helper';\r\nimport {\r\n externalRouteEntityMapping,\r\n externalSettingsRouteEntityMapping,\r\n findMatchingParentEntityIndex,\r\n} from '../utils/ListItemsUtil';\r\nimport Copyright from './Copyright';\r\n\r\nclass SideBarListItems extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { dashboardType } = props;\r\n this.state = { currentParentEntityIndex: 0, parentEntitiesIndex: [] };\r\n this.updateConfig(dashboardType);\r\n }\r\n\r\n componentDidMount() {\r\n const { location: { pathname: locationUrl }, dashboardType } = this.props;\r\n if (dashboardType === DASHBOARD_TYPE.EXTERNAL) {\r\n this.setState({ parentEntitiesIndex: Object.keys(externalRouteEntityMapping).map(Number) });\r\n } else if (dashboardType === DASHBOARD_TYPE.SETTINGS) {\r\n this.setState({ parentEntitiesIndex: Object.keys(externalSettingsRouteEntityMapping).map(Number) });\r\n }\r\n if (dashboardType !== DASHBOARD_TYPE.INTERNAL) {\r\n const initialExpandedIndex = findMatchingParentEntityIndex(dashboardType, locationUrl);\r\n if (initialExpandedIndex !== null) {\r\n this.setState({ currentParentEntityIndex: initialExpandedIndex });\r\n }\r\n }\r\n }\r\n\r\n updateConfig = (dashboardType) => {\r\n if (dashboardType === DASHBOARD_TYPE.INTERNAL) {\r\n // eslint-disable-next-line global-require\r\n this.config = require('Internal/containers/dashboard/widgets/sidebar/configs/Config').default;\r\n } else if (dashboardType === DASHBOARD_TYPE.SETTINGS) {\r\n // eslint-disable-next-line global-require\r\n this.config = require('External/containers/dashboardSettings/widgets/sidebar/configs/Config').default;\r\n } else if (dashboardType === DASHBOARD_TYPE.EXTERNAL) {\r\n // eslint-disable-next-line global-require\r\n this.config = require('External/containers/dashboard/widgets/sidebar/configs/Config').default;\r\n }\r\n }\r\n\r\n getHomeUrlDetails = () => {\r\n const { defaultFacilityId, dashboardType, match: { params: { fid, accountId } = {} } } = this.props;\r\n const facilityId = fid || defaultFacilityId;\r\n return dashboardType === DASHBOARD_TYPE.EXTERNAL\r\n ? { url: buildUrl('facilitySelect', { fid }, DASHBOARD_TYPE.EXTERNAL, accountId) }\r\n : {\r\n url: buildUrl('facilitySelect', { fid: facilityId }, DASHBOARD_TYPE.EXTERNAL, accountId),\r\n target: '_blank',\r\n };\r\n }\r\n\r\n handleCompanyLogoOnClick = ({ url, target }) => {\r\n const { props: { history } = {}, state: { currentParentEntityIndex } } = this;\r\n if (currentParentEntityIndex !== null) {\r\n this.setState({ currentParentEntityIndex: 0 });\r\n }\r\n if (target) window.open(url, target);\r\n else history.push(url);\r\n }\r\n\r\n render() {\r\n const {\r\n classes, open, match: { url, params: { fid, accountId } = {} }, location: { pathname: locationUrl },\r\n dashboardType, permission = {}, history: { match: { params: { '*': currentUrl } } }, // '*' contains the matched part after base url\r\n currentFacility: {\r\n data: {\r\n isPhoneEnabled = false, emailAddress: { isEnabled: isEmailEnabled = false } = {},\r\n metaInfo: { legalAgreement: { isAccepted = false } = {} } = {},\r\n licenseStatus,\r\n } = {},\r\n } = {},\r\n } = this.props;\r\n const { config, getHomeUrlDetails } = this;\r\n this.updateConfig(dashboardType);\r\n const homeUrlDetails = getHomeUrlDetails();\r\n const { currentParentEntityIndex, parentEntitiesIndex } = this.state;\r\n const configArgs = {\r\n currentUrl: locationUrl,\r\n matchUrl: url,\r\n fid,\r\n accountId,\r\n permission,\r\n homeUrlDetails,\r\n isAccepted,\r\n isConversationEnabled: isEmailEnabled || isPhoneEnabled || isSyrasoftUser(),\r\n };\r\n\r\n const renderSideNavItems = () => (\r\n
\r\n {\r\n config(configArgs).map((element, idx) => {\r\n const {\r\n label, children, url: parentUrl, addon: { end, ...addon } = {}, target,\r\n onClick, visible = true, workCenterPaths: parentWorkCenterPaths,\r\n } = element;\r\n if (open && addon) { addon.end = end; }\r\n const isCurrentWCPath = currentUrl === parentUrl\r\n || doesUrlBelongsToAnyGivenPath(locationUrl, parentWorkCenterPaths, url.replace(`/${currentUrl}`, ''));\r\n const handleEntityExpandOrCollapse = (index) => {\r\n if (index === currentParentEntityIndex) this.setState({ currentParentEntityIndex: null });\r\n else this.setState({ currentParentEntityIndex: index });\r\n };\r\n const isInternalDashBoard = (dashboardType === DASHBOARD_TYPE.INTERNAL);\r\n const getListItemClasses = () => {\r\n const parentEntityIndex = !isInternalDashBoard\r\n && findMatchingParentEntityIndex(dashboardType, locationUrl, url.replace(`/${currentUrl}`, ''));\r\n const isChildEntitySelected = idx === parentEntityIndex;\r\n const classNames = [];\r\n if (!isInternalDashBoard) {\r\n if (isValidValue(parentUrl)) {\r\n classNames.push(\r\n classes.childListItems,\r\n classes.labelWithIconMargin,\r\n classes.stickyItems,\r\n open && classes.childEntityPadding,\r\n );\r\n } else {\r\n classNames.push(classes.entityRoot);\r\n if (!isChildEntitySelected) classNames.push(classes.parentEntityPadding);\r\n if (isChildEntitySelected) classNames.push(classes.selectedEntityIndicator);\r\n }\r\n } else if (isInternalDashBoard) classNames.push(classes.listItems);\r\n return clsx(...classNames);\r\n };\r\n return visible && (\r\n
\r\n {(open || isValidValue(parentUrl)) && (\r\n <>\r\n isNonEmptyArray(children)\r\n && handleEntityExpandOrCollapse(idx)}\r\n button\r\n disableGutters={!isInternalDashBoard}\r\n >\r\n {isNonEmptyArray(children)\r\n ? (\r\n ,\r\n }}\r\n classes={{\r\n labelWithIcon: classes.labelWithIconSpacing,\r\n label: classes.textEllipsis,\r\n }}\r\n >\r\n {open && label.toUpperCase()}\r\n \r\n )\r\n : (\r\n isCurrentWCPath) : undefined}\r\n activeClassName={isInternalDashBoard\r\n ? classes.activeLink : null}\r\n target={target}\r\n onClick={onClick}\r\n classes={{ link: classes.link, reactlink: classes.reactlink }}\r\n LabelWithIconProps={{\r\n classes: {\r\n labelWithIcon: clsx(classes.labelWithIcon,\r\n !open && classes.iconCenter),\r\n label: classes.label,\r\n addonEnd: classes.addonEnd,\r\n },\r\n }}\r\n >\r\n {open && label}\r\n \r\n )}\r\n \r\n \r\n )}\r\n {isNonEmptyArray(children) && (\r\n \r\n \r\n {isNonEmptyArray(children) && (\r\n children.map((item) => {\r\n const {\r\n childAddon: { end: childAddonEnd, ...childAddon },\r\n url: elementUrl, label: childLabel, workCenterPaths = [], visible: isChildVisible = true,\r\n } = item;\r\n if (open) { childAddon.end = childAddonEnd; }\r\n const isCurrentChildWCPath = currentUrl === elementUrl\r\n || doesUrlBelongsToAnyGivenPath(locationUrl, workCenterPaths, url.replace(`/${currentUrl}`, ''));\r\n return isChildVisible && (\r\n \r\n isCurrentChildWCPath}\r\n activeClassName={classes.activeLink}\r\n end\r\n target={target}\r\n onClick={onClick}\r\n classes={{\r\n link: classes.link,\r\n reactlink: classes.reactlink,\r\n }}\r\n LabelWithIconProps={{\r\n classes: {\r\n labelWithIcon: !open && classes.iconCenter,\r\n label: clsx(\r\n classes.label, classes.textEllipsis,\r\n ),\r\n addonEnd: classes.addonEnd,\r\n },\r\n }}\r\n >\r\n {open && childLabel}\r\n \r\n \r\n );\r\n })\r\n )}\r\n \r\n \r\n )}\r\n
\r\n );\r\n })\r\n }\r\n
\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n ),\r\n }}\r\n classes={{\r\n labelWithIcon: classes.labelWithIcon,\r\n label: classes.label,\r\n addonEnd: classes.addonEnd,\r\n }}\r\n onClick={() => this.handleCompanyLogoOnClick(homeUrlDetails)}\r\n >\r\n {\r\n open && (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n {licenseStatus === FACILITY_LICENSE_STATUS.Active.value || isInternalDashboard(url) || isLiveData(url) ? renderSideNavItems() : null}\r\n \r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nSideBarListItems.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n open: PropTypes.bool,\r\n match: PropTypes.object,\r\n dashboardType: PropTypes.oneOf(enums.dashboardType),\r\n location: PropTypes.object,\r\n defaultFacilityId: PropTypes.string,\r\n permission: PropTypes.object,\r\n currentFacility: PropTypes.object,\r\n history: PropTypes.object,\r\n};\r\n\r\nexport default withStyles(listItemsStyle)(SideBarListItems);\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst sideBarStyle = theme => ({\r\n drawerPaper: {\r\n position: 'absolute',\r\n width: '60%',\r\n top: 64,\r\n whiteSpace: 'nowrap',\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n background: theme.components.dashboard.sideBar.backgroundColor,\r\n overflowX: 'hidden',\r\n border: 'none',\r\n [media.tablet]: { width: '30%' },\r\n [media.laptopUp]: {\r\n position: 'relative',\r\n width: 220,\r\n },\r\n height: `calc(100% - ${64}px)`,\r\n },\r\n drawerPaperClose: {\r\n overflowX: 'hidden',\r\n transition: theme.transitions.create('width', {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n width: 0,\r\n [media.laptopUp]: { width: theme.spacing(8) },\r\n border: 'none',\r\n height: `calc(100% - ${64}px)`,\r\n },\r\n firstItem: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n padding: '0 8px',\r\n height: 64,\r\n },\r\n});\r\n\r\nexport default sideBarStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst PhoneNumberStyles = theme => ({\r\n flagButton: {\r\n minWidth: 16,\r\n [media.laptopUp]: { minWidth: 16 },\r\n [media.desktopUp]: { minWidth: 20 },\r\n padding: 0,\r\n height: theme.spacing(2),\r\n },\r\n flagIcon: {\r\n width: theme.spacing(2),\r\n marginRight: theme.spacing(1),\r\n },\r\n native: {\r\n width: theme.spacing(4),\r\n height: theme.spacing(4),\r\n padding: theme.spacing(1),\r\n },\r\n nativeRoot: {\r\n padding: 0,\r\n\r\n '& + svg': { display: 'none' },\r\n },\r\n nativeSelect: {\r\n padding: 0,\r\n lineHeight: 0,\r\n height: 11,\r\n },\r\n positionStart: { position: 'relative' },\r\n leftMarginIcon: {},\r\n showAllCountries: {\r\n padding: theme.spacing(2, 2, 2, 2),\r\n '&:hover': { background: theme.palette.highlight },\r\n },\r\n});\r\n\r\nexport default PhoneNumberStyles;\r\n","\r\nimport media from 'Commons/theme/MediaQueries';\r\n\r\nconst nameStyles = {\r\n spacingFormGrid: {\r\n '&$salutation': {\r\n [media.phabletUp]: {\r\n flexGrow: 0,\r\n maxWidth: '18%',\r\n flexBasis: '18%',\r\n },\r\n },\r\n '&$name': {\r\n [media.phabletUp]: {\r\n flexGrow: 0,\r\n maxWidth: '32.6%',\r\n flexBasis: '32.6%',\r\n },\r\n },\r\n },\r\n salutation: {},\r\n name: {},\r\n order: { order: 1 },\r\n};\r\n\r\nexport default nameStyles;\r\n","import { memo } from 'react';\r\nimport { FieldArray } from 'formik';\r\nimport { Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { TextField } from 'Generic/textfield/components/TextField';\r\nimport { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport { Checkbox } from 'Generic/checkbox/components/CheckBox';\r\nimport { ACTION_TYPE, PRIMARY_PHONE } from 'Commons/config/constants/Constants';\r\nimport { SM_4 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_MAX_LENGTH_17, IS_MAX_LENGTH_50 } from 'Commons/config/constants/Validators';\r\nimport FormItem from 'Generic/formitem/components/FormItem';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport useDidUpdateEffect from 'Commons/helpers/hooks/useDidUpdateEffect';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { FormPhoneNumberField } from 'Commons/components/business/phoneNumber/components/PhoneNumberField';\r\nimport {\r\n getCleanPhoneNumber,\r\n getPlainPhoneNumber,\r\n isAnyExistingFieldTouched,\r\n isPhoneNumberValid,\r\n} from 'External/containers/tenant/form/utils/Utils';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport LabelWithAddons from 'Commons/components/generic/labelwithaddons/components/LabelWithAddons';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { PREFERRED_COUNTRIES_LIST } from 'Commons/components/business/phoneNumber/config/Constants';\r\nimport { DEFAULT_PHONE, TEXT_SUPPORTED_COUNTRIES } from '../config/Constants';\r\nimport Label from '../../Label/components/Label';\r\n\r\nconst PhoneItem = memo(\r\n ({\r\n index,\r\n classes,\r\n touched,\r\n onRemove,\r\n arrayHelpers,\r\n isFormActive,\r\n setFieldValue,\r\n setFieldTouched,\r\n isAnyPhoneRequired,\r\n onPhoneOrEmailValid,\r\n phoneExtrasIndex,\r\n isAnyPhonePreferred,\r\n currentFacility,\r\n phone: {\r\n primaryNumber,\r\n textEnabledCellNumber,\r\n phoneNumberList,\r\n phoneNumberList: {\r\n [index]: {\r\n type,\r\n phoneId,\r\n phone = {},\r\n phone: { country, comments } = {},\r\n } = {},\r\n } = [],\r\n } = {},\r\n requiredFields: {\r\n 'phone.primaryNumber': isPrimaryNumberRequired,\r\n 'phone.textEnabledCellNumber': isTextEnabledRequired,\r\n [`phone.phoneNumberList.${type}`]: isPhoneTypeRequired,\r\n } = {},\r\n touched: { phone: { phoneNumberList: { [index]: touchedPhone = {} } = [] } = {} },\r\n }) => {\r\n const gridProps = useConstructor(() => ({\r\n ...SM_4,\r\n className: classes.showAlways,\r\n }));\r\n const { number: isNumberTouched = false } = touchedPhone || {};\r\n let totalRequiredFieldTypeOnScreen = 0;\r\n let totalPhoneOnScreen = 0;\r\n const samePhoneNumbersCount = {};\r\n phoneNumberList.forEach(\r\n ({ phone: phoneObj, type: phoneType, __action_type: actionType } = {}) => {\r\n const cleanedPhoneNumber = getCleanPhoneNumber(getPlainPhoneNumber(phoneObj));\r\n if (cleanedPhoneNumber && actionType !== ACTION_TYPE.DELETE) {\r\n samePhoneNumbersCount[cleanedPhoneNumber] = (samePhoneNumbersCount[cleanedPhoneNumber] || 0) + 1;\r\n }\r\n if (phoneType === type) {\r\n totalRequiredFieldTypeOnScreen += 1;\r\n }\r\n if (actionType !== ACTION_TYPE.DELETE) {\r\n totalPhoneOnScreen += 1;\r\n }\r\n },\r\n );\r\n\r\n const { data: { isPhoneEnabled: messagingEnabled = false } = {} } = currentFacility || {};\r\n\r\n const onChangeTextEnabled = (_, value) => {\r\n setFieldValue('phone.textEnabledCellNumber', value ? getPlainPhoneNumber(phone) : null);\r\n setFieldTouched('phone.textEnabledCellNumber', true, false);\r\n // eslint-disable-next-line no-param-reassign\r\n phoneExtrasIndex.textEnabledNumber = index;\r\n };\r\n\r\n const onChangePrimaryNumber = () => {\r\n setFieldValue(\r\n 'phone.primaryNumber',\r\n phone ? getPlainPhoneNumber(phone) : null,\r\n );\r\n setFieldTouched('phone.primaryNumber', true, false);\r\n // eslint-disable-next-line no-param-reassign\r\n phoneExtrasIndex.primaryNumber = index;\r\n };\r\n\r\n // Only for new phones\r\n useDidUpdateEffect(() => {\r\n if (!phoneId) {\r\n setFieldTouched(`phone.phoneNumberList.${index}.type`, true, false);\r\n }\r\n }, [isNumberTouched, phoneId]);\r\n\r\n const onNumberChange = (_, enteredNumber = '') => {\r\n const cleanedPhone = getCleanPhoneNumber(enteredNumber);\r\n if (phoneExtrasIndex.primaryNumber === -1) {\r\n // eslint-disable-next-line no-param-reassign\r\n phoneExtrasIndex.primaryNumber = index;\r\n }\r\n\r\n if (type === PRIMARY_PHONE.Cell_Phone.value && phoneExtrasIndex.textEnabledNumber === -1) {\r\n // eslint-disable-next-line no-param-reassign\r\n phoneExtrasIndex.textEnabledNumber = index;\r\n }\r\n\r\n if (phoneExtrasIndex.primaryNumber === index) {\r\n setFieldValue('phone.primaryNumber', cleanedPhone);\r\n setFieldTouched('phone.primaryNumber', true, false);\r\n }\r\n\r\n if (phoneExtrasIndex.textEnabledNumber === index) {\r\n setFieldValue('phone.textEnabledCellNumber', TEXT_SUPPORTED_COUNTRIES.includes(country) ? cleanedPhone : null);\r\n setFieldTouched('phone.textEnabledCellNumber', true, false);\r\n }\r\n };\r\n\r\n const onCommentChange = (_, enteredComment = '') => {\r\n setFieldValue(`phone.phoneNumberList.${index}.phone.comments`, enteredComment);\r\n setFieldTouched(`phone.phoneNumberList.${index}.phone.comments`, true, false);\r\n };\r\n\r\n const renderCloseButton = () => (isPhoneTypeRequired\r\n ? false\r\n : !isAnyPhoneRequired || totalPhoneOnScreen > 1)\r\n && isFormActive && (\r\n /* TODO:
*/\r\n \r\n onRemove(index, arrayHelpers)}\r\n />\r\n \r\n /*
*/\r\n );\r\n\r\n const renderPhoneNumber = () => (\r\n <>\r\n \r\n \r\n \r\n \r\n {renderCloseButton()}\r\n \r\n\r\n );\r\n\r\n const onChangePhoneType = (_, value) => {\r\n if (\r\n value !== PRIMARY_PHONE.Cell_Phone.value\r\n && phoneExtrasIndex.textEnabledNumber === index\r\n && TEXT_SUPPORTED_COUNTRIES.includes(country)\r\n ) {\r\n setFieldValue('phone.textEnabledCellNumber', null);\r\n setFieldTouched('phone.textEnabledCellNumber', true, false);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {renderPhoneNumber()}\r\n \r\n \r\n \r\n {type === PRIMARY_PHONE.Cell_Phone.value && (\r\n \r\n {(!messagingEnabled || !TEXT_SUPPORTED_COUNTRIES.includes(country)) ? (\r\n \r\n \r\n )}\r\n className={classes.leftAlign}\r\n >\r\n \r\n {!messagingEnabled ? localisable.messagingService : localisable.notSupportedText}\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n },\r\n);\r\n\r\nconst Phone = ({\r\n phone,\r\n classes,\r\n values,\r\n touched,\r\n resetForm,\r\n isFormActive,\r\n setFieldValue,\r\n currentFacility,\r\n setFieldTouched,\r\n onPhoneOrEmailValid,\r\n initialValues: { phone: phoneInitialValues = {} } = {},\r\n phone: { primaryNumber, textEnabledCellNumber, phoneNumberList = [] } = {},\r\n status: {\r\n requiredFields,\r\n preferredFields,\r\n requiredFieldsObj: { phone: { phoneNumberList: { Any_Phone: isAnyPhoneRequired } = {} } = {} } = {},\r\n preferredFieldsObj: { phone: { phoneNumberList: { Any_Phone: isAnyPhonePreferred } = {} } = {} } = {},\r\n } = {},\r\n}) => {\r\n const phoneExtrasIndex = useConstructor(() => ({\r\n primaryNumber: phoneNumberList.findIndex(\r\n ({ phone: eachPhone }) => getPlainPhoneNumber(eachPhone) === primaryNumber,\r\n ),\r\n textEnabledNumber: phoneNumberList.findIndex(\r\n ({ phone: eachPhone }) => getPlainPhoneNumber(eachPhone) === textEnabledCellNumber,\r\n ),\r\n }));\r\n\r\n const { data: { isPhoneEnabled: isMessagingEnabled = false } = {} } = currentFacility || {};\r\n\r\n const onRemove = (index, arrayHelpers) => {\r\n const { [index]: { phoneId, phone: structuredPhoneObj } = {} } = phoneNumberList;\r\n const fieldsToRemove = ['textEnabledCellNumber', 'primaryNumber'].filter(\r\n field => phone[field] === getPlainPhoneNumber(structuredPhoneObj),\r\n );\r\n\r\n const tenantPhone = deepCopy(phone);\r\n const { phoneNumberList: phones } = tenantPhone;\r\n const { [index]: phoneToRemove } = phones;\r\n\r\n if (phoneId) {\r\n phoneToRemove.__action_type = ACTION_TYPE.DELETE; // eslint-disable-line no-underscore-dangle\r\n setFieldTouched(`phone.phoneNumberList.${index}.phoneId`, true, false);\r\n } else {\r\n phones.splice(index, 1);\r\n }\r\n\r\n if (fieldsToRemove.length) {\r\n const newPrimaryNumberIndex = phones.findIndex(\r\n ({ __action_type: actionType, phone: phoneObj }) => !actionType && isPhoneNumberValid(phoneObj),\r\n );\r\n\r\n phoneExtrasIndex.primaryNumber = newPrimaryNumberIndex;\r\n if (phoneToRemove.type === PRIMARY_PHONE.Cell_Phone.value) phoneExtrasIndex.textEnabledNumber = -1;\r\n\r\n const { [newPrimaryNumberIndex]: { phone: newPrimaryNumPhoneObj } = {} } = phones;\r\n const firstPhoneNumber = newPrimaryNumberIndex > -1 && isPhoneNumberValid(newPrimaryNumPhoneObj)\r\n ? getPlainPhoneNumber(newPrimaryNumPhoneObj)\r\n : null;\r\n\r\n fieldsToRemove.forEach((field) => {\r\n if (field === 'primaryNumber') {\r\n tenantPhone[field] = firstPhoneNumber;\r\n } else {\r\n tenantPhone[field] = null; // Removing textEnabledPhoneNumber\r\n }\r\n setFieldValue(`phone.${field}`, tenantPhone[field]);\r\n setFieldTouched(`phone.${field}`, true, false);\r\n });\r\n }\r\n\r\n if (phoneId) {\r\n setFieldValue('phone', tenantPhone);\r\n } else if (isAnyExistingFieldTouched(phoneInitialValues, touched)) {\r\n // No phoneId and no other dependent fields to remove\r\n arrayHelpers.remove(index);\r\n } else {\r\n // Resetting form as new phones were removed (Technically there is no change in form)\r\n resetForm({ ...values, phone: tenantPhone });\r\n }\r\n };\r\n\r\n const onAdd = (arrayHelpers) => {\r\n if (isAnyExistingFieldTouched(phoneInitialValues, touched)) {\r\n arrayHelpers.push(DEFAULT_PHONE);\r\n } else {\r\n // Resetting as new phones were just added without number (Technically there is no change in form)\r\n const tenantPhone = deepCopy(phone);\r\n const { phoneNumberList: phonesList = [] } = tenantPhone;\r\n const newPhonesList = [...(phonesList || [])];\r\n newPhonesList.push(DEFAULT_PHONE);\r\n resetForm({ ...values, phone: { ...tenantPhone, phoneNumberList: newPhonesList } });\r\n }\r\n };\r\n\r\n return (\r\n {\r\n const phoneNumbers = phoneNumberList.map(\r\n ({ __action_type: actionType, phoneId }, index) => {\r\n const key = phoneId || `${phoneNumberList.length}-${index}`;\r\n\r\n return actionType !== ACTION_TYPE.DELETE ? (\r\n \r\n ) : null;\r\n },\r\n );\r\n\r\n return (\r\n <>\r\n {!isMessagingEnabled ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n )}\r\n >\r\n \r\n {localisable.phone}\r\n \r\n \r\n \r\n )}\r\n {phoneNumbers}\r\n \r\n onAdd(arrayHelpers)}\r\n >\r\n {localisable.tenantFormAddPhone}\r\n \r\n \r\n \r\n );\r\n }}\r\n />\r\n );\r\n};\r\n\r\nPhone.propTypes = {\r\n phone: PropTypes.object,\r\n status: PropTypes.object,\r\n values: PropTypes.object,\r\n classes: PropTypes.object,\r\n resetForm: PropTypes.func,\r\n touched: PropTypes.object,\r\n isFormActive: PropTypes.bool,\r\n setFieldValue: PropTypes.func,\r\n initialValues: PropTypes.object,\r\n setFieldTouched: PropTypes.func,\r\n currentFacility: PropTypes.object,\r\n onPhoneOrEmailValid: PropTypes.func,\r\n};\r\n\r\nPhone.defaultProps = {\r\n status: {},\r\n setFieldValue: () => { },\r\n onPhoneOrEmailValid: () => { },\r\n};\r\n\r\nexport default memo(Phone);\r\n","const deleteOverlayStyle = theme => ({\r\n // Deletion Overlay\r\n overlayMessage: { height: '100%' },\r\n overlayMessageCancel: {\r\n color: theme.palette.common.red,\r\n cursor: 'pointer',\r\n },\r\n overlayMessageCancelStart: {\r\n color: theme.palette.common.red,\r\n padding: '0px 16px',\r\n cursor: 'pointer',\r\n },\r\n overlayMessageOk: {\r\n color: theme.palette.common.black,\r\n padding: '0px 16px',\r\n cursor: 'pointer',\r\n },\r\n deletionOverlay: {\r\n ...theme.globalClasses.deactivatedOverlay.style,\r\n position: 'absolute',\r\n backgroundColor: `${theme.palette.common.white}D9`,\r\n opacity: 1,\r\n },\r\n\r\n});\r\n\r\nexport default deleteOverlayStyle;\r\n","\r\nconst dragAndDropStyles = theme => ({\r\n localDriveIcon: { size: '3rem' },\r\n dragOrCreate: { border: `1px dashed ${theme.palette.status.inactive}` },\r\n dragOrCreateContainer: {\r\n maxWidth: 'none',\r\n flex: 1,\r\n },\r\n autoWidth: { width: 'auto' },\r\n acceptedFormatText: { marginTop: theme.spacing(1) },\r\n closeButton: {},\r\n chooseAFile: { cursor: 'pointer' },\r\n});\r\n\r\nexport default dragAndDropStyles;\r\n","const uploadStatusStyle = theme => ({\r\n modalGrid: {\r\n width: 'calc(46vw + 8px)', // 8px is for scrollbar\r\n height: '62vh',\r\n padding: theme.spacing(2),\r\n flexWrap: 'nowrap',\r\n },\r\n modalHeader: {\r\n minHeight: 'auto',\r\n '& $closeButton': { marginRight: 0 },\r\n },\r\n closeButton: {},\r\n photosToUpload: {\r\n overflow: 'auto',\r\n flex: '1 1 1px',\r\n },\r\n autoWidth: { width: 'auto' },\r\n uploadStatus: { marginTop: theme.spacing(2) },\r\n uploadModalGrid: { padding: theme.spacing(2) },\r\n uploadSuccess: { color: theme.palette.success.main },\r\n uploadError: { color: theme.palette.error.main },\r\n photoName: {\r\n flex: '1 1 1px',\r\n overflow: 'hidden',\r\n maxWidth: 'fit-content',\r\n },\r\n modalFooter: {\r\n marginTop: theme.spacing(1),\r\n height: theme.spacing(4),\r\n },\r\n marginTop8: { marginTop: theme.spacing(1) },\r\n fullHeight: { height: '100%' },\r\n});\r\n\r\nexport default uploadStatusStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst onDemandSectionStyle = theme => ({\r\n borderSolid: { '&$sectionChildren': { borderStyle: 'solid' } },\r\n openHeader: {\r\n padding: theme.spacing(1, 2, 1.5, 2),\r\n [media.desktop]: { padding: theme.spacing(1, 2, 2, 2) },\r\n },\r\n closedHeader: { padding: theme.spacing(1, 2, 0, 2) },\r\n section: {\r\n paddingTop: theme.spacing(0.5),\r\n paddingBottom: theme.spacing(0.5),\r\n '& .subsectionPadding': { paddingRight: theme.spacing(2) },\r\n },\r\n sectionChildren: {\r\n border: `1px dashed ${theme.palette.black[500]}`,\r\n borderRadius: 4,\r\n paddingBottom: theme.spacing(1),\r\n },\r\n paddingLeft: { paddingLeft: theme.spacing(5) },\r\n // Deletion Overlay\r\n onDemandSection: { position: 'relative' },\r\n});\r\n\r\nexport default onDemandSectionStyle;\r\n","const FormikFormWrapperStyle = () => ({\r\n fullHeight: { height: '100%' },\r\n form: { display: 'flex', flexWrap: 'nowrap', overflow: 'hidden', width: '100%' },\r\n fullWidth: { width: '100%' },\r\n});\r\n\r\nexport default FormikFormWrapperStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst SummaryTableStyle = theme => ({\r\n header: { padding: theme.spacing(0, 4) },\r\n singleTableHeader: { [media.laptopUp]: { padding: theme.spacing(0), width: '50%' } },\r\n doubleTableHeader: { [media.laptopUp]: { padding: theme.spacing(0), width: '70%' } },\r\n headerText: {},\r\n autoWidth: { width: 'auto' },\r\n table: {\r\n width: 'auto',\r\n borderWidth: 2,\r\n borderColor: theme.palette.common.black,\r\n backgroundColor: theme.palette.common.white,\r\n [media.mobileUp]: { marginTop: theme.spacing(0) },\r\n [media.tabletUp]: { marginTop: theme.spacing(3) },\r\n [media.laptop]: { marginTop: theme.spacing(1.5) },\r\n },\r\n columnHeader: {\r\n cursor: 'text',\r\n '&$rightAlign': { paddingRight: 0 },\r\n '&$headerText': { fontWeight: '1rem' },\r\n '&$leftCell': { alignItems: 'center', paddingLeft: theme.spacing(1) },\r\n '&$date': { alignItems: 'center' },\r\n '&$totalBalance': { paddingRight: theme.spacing(1) },\r\n },\r\n totalBalance: {},\r\n rightAlign: {},\r\n date: {},\r\n leftCell: {},\r\n tableGrid: { '&$noPadding': { padding: '0px !important' } },\r\n noPadding: {},\r\n});\r\n\r\nexport default SummaryTableStyle;\r\n","import {\r\n balanceFormatter, dateFormatter,\r\n descriptionFormatter,\r\n} from 'Commons/components/business/summaryTable/components/SummaryFormatter';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport getFormattedAmount from 'Commons/helpers/utils/AmountHelper';\r\n\r\n// TODO: Remove after Move-Out Changes\r\nconst getFooterData = (classes, totalBalance, isResponsiveScreen = false) => {\r\n const columns = [\r\n {\r\n key: 'total',\r\n width: isResponsiveScreen ? 45 : 23,\r\n label:\r\n \r\n {localisable.total}\r\n ,\r\n headerClassName: `${classes.totalBalance} ${classes.columnHeader} ${classes.leftCell}`,\r\n align: 'right',\r\n valign: 'center',\r\n },\r\n ...!isResponsiveScreen ? [\r\n {\r\n key: 'date',\r\n width: 41,\r\n label: '',\r\n headerClassName: `${classes.totalBalance} ${classes.columnHeader}`,\r\n align: 'right',\r\n valign: 'center',\r\n },\r\n ] : [],\r\n {\r\n key: 'debit',\r\n width: isResponsiveScreen ? 25 : 18,\r\n label:\r\n \r\n {totalBalance[0]}\r\n ,\r\n formatter: balanceFormatter,\r\n headerClassName: `${classes.totalBalance} ${classes.rightAlign} ${classes.columnHeader}`,\r\n align: 'right',\r\n },\r\n {\r\n key: 'credit',\r\n width: isResponsiveScreen ? 30 : 18,\r\n label:\r\n \r\n {totalBalance[1]}\r\n ,\r\n formatter: balanceFormatter,\r\n headerClassName: `${classes.totalBalance} ${classes.rightAlign} ${classes.columnHeader} `,\r\n align: 'right',\r\n },\r\n ];\r\n return columns;\r\n};\r\n\r\nconst getColumns = (classes, currencySign, totalBalance, isResponsiveScreen = false) => {\r\n const columns = [\r\n {\r\n key: 'particulars',\r\n width: isResponsiveScreen ? 45 : 23,\r\n formatter: descriptionFormatter,\r\n label:\r\n \r\n {localisable.chargeCategoryCaps}\r\n ,\r\n footer:\r\n \r\n {localisable.total}\r\n ,\r\n },\r\n ...!isResponsiveScreen ? [\r\n {\r\n key: 'date',\r\n width: 40,\r\n label: {localisable.dateCaps},\r\n formatter: dateFormatter,\r\n align: 'center',\r\n },\r\n ] : [],\r\n {\r\n key: 'amount',\r\n width: isResponsiveScreen ? 30 : 19,\r\n label:\r\n \r\n {`${localisable.amountCaps} (${currencySign})`}\r\n ,\r\n footer:\r\n \r\n {getFormattedAmount(totalBalance)}\r\n ,\r\n headerClassName: `${classes.rightAlign} ${classes.columnHeader}`,\r\n footerClassName: `${classes.totalBalance} ${classes.rightAlign} ${classes.columnHeader} `,\r\n formatter: balanceFormatter,\r\n align: 'right',\r\n },\r\n ];\r\n return columns;\r\n};\r\n\r\nexport { getFooterData, getColumns };\r\n","import { COMPARISON_OPERATION, TIME_WINDOW } from 'Commons/config/constants/Constants';\r\nimport { compareDatesOrDatetime } from 'Commons/helpers/utils/DateTime';\r\n\r\nconst isUserLocked = (lockedUntil) => {\r\n if (lockedUntil) {\r\n return compareDatesOrDatetime(lockedUntil, undefined, COMPARISON_OPERATION.GTE, TIME_WINDOW.SECONDS);\r\n }\r\n return false;\r\n};\r\n\r\nexport { isUserLocked };\r\n","import getName from 'Commons/helpers/utils/NameHelper';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { useMemo } from 'react';\r\nimport { USER_ACTION_ITEM } from 'Commons/components/business/user/form/config/Constants';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\nimport { USER_MANAGEMENT_PERMISSION_KEY } from 'Commons/components/business/user/config/Constants';\r\nimport LabelWithAddons from 'Generic/labelwithaddons/components/LabelWithAddons';\r\nimport Button from 'Generic/button/components/Button';\r\nimport headerStyle from '../styles/HeaderStyle';\r\n\r\nconst useStyles = makeStyles(headerStyle, { name: 'UserFormHeaderStyle' });\r\n\r\nconst Header = (props) => {\r\n const {\r\n permission,\r\n isFormActive,\r\n isModeCreate,\r\n isUserLocked,\r\n showAlertDialog,\r\n formProps: {\r\n initialValues: {\r\n id: userId,\r\n status: userStatus,\r\n firstName, lastName,\r\n } = {},\r\n } = {},\r\n userProfile: { data: { data: [{ id: userProfileId } = {}] = [] } = {} } = {},\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const isUserSelf = useMemo(() => userProfileId === userId, [userId, userProfileId]);\r\n\r\n const hasUserManagementPermission = useMemo(() => hasPermission(permission, USER_MANAGEMENT_PERMISSION_KEY), [userId]);\r\n\r\n const getIsVisible = (source) => {\r\n const baseChecks = hasUserManagementPermission && !isUserSelf;\r\n switch (source) {\r\n case USER_ACTION_ITEM.ACTIVATE:\r\n case USER_ACTION_ITEM.DEACTIVATE:\r\n return baseChecks;\r\n\r\n case USER_ACTION_ITEM.UNLOCK:\r\n return baseChecks && isUserLocked;\r\n\r\n case USER_ACTION_ITEM.FORCE_PASSWORD_RESET:\r\n return baseChecks;\r\n\r\n default:\r\n return false;\r\n }\r\n };\r\n\r\n const actionItems = useMemo(() => ([\r\n {\r\n key: 1,\r\n icon: 'cp-unlock',\r\n label: localisable.unlockUser,\r\n onClick: () => showAlertDialog(USER_ACTION_ITEM.UNLOCK),\r\n isVisible: getIsVisible(USER_ACTION_ITEM.UNLOCK),\r\n },\r\n {\r\n key: 2,\r\n icon: 'cp-reset',\r\n label: localisable.forcePasswordReset,\r\n onClick: () => showAlertDialog(USER_ACTION_ITEM.FORCE_PASSWORD_RESET),\r\n isVisible: getIsVisible(USER_ACTION_ITEM.FORCE_PASSWORD_RESET),\r\n },\r\n ]), [userStatus, isUserLocked]);\r\n\r\n const renderActionItem = ({ key, label, icon, onClick } = {}) => (\r\n }\r\n className={classes.actionItemButton}\r\n labelClassName={classes.actionItemLabel}\r\n >\r\n \r\n {label}\r\n \r\n \r\n );\r\n\r\n const renderHeaderTitle = () => {\r\n const statusButtonSource = isFormActive ? USER_ACTION_ITEM.DEACTIVATE : USER_ACTION_ITEM.ACTIVATE;\r\n return (\r\n \r\n \r\n {isModeCreate ? localisable.createUser : getName({\r\n firstName,\r\n lastName,\r\n })}\r\n \r\n {\r\n !isModeCreate\r\n && getIsVisible(statusButtonSource) && (\r\n \r\n showAlertDialog(statusButtonSource)}\r\n >\r\n {isFormActive ? localisable.deactivate : localisable.activate}\r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n };\r\n\r\n return isModeCreate ? renderHeaderTitle() : (\r\n \r\n \r\n {renderHeaderTitle()}\r\n \r\n \r\n \r\n {isFormActive && actionItems.map(({ isVisible, ...actionItemConfig } = {}) => (isVisible ? renderActionItem(actionItemConfig) : null))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nHeader.propTypes = {\r\n formProps: PropTypes.object,\r\n permission: PropTypes.object,\r\n isModeCreate: PropTypes.bool,\r\n isFormActive: PropTypes.bool,\r\n isUserLocked: PropTypes.bool,\r\n userProfile: PropTypes.object,\r\n showAlertDialog: PropTypes.func,\r\n};\r\n\r\nexport default Header;\r\n","const headerStyle = theme => ({\r\n actionItemButton: { marginLeft: theme.spacing(4) },\r\n actionItemLabel: { marginLeft: theme.spacing(1), width: 'max-content' },\r\n actionItemIcon: { color: theme.palette.primary.main },\r\n statusChangeButton: { marginLeft: theme.spacing(2) },\r\n});\r\n\r\nexport default headerStyle;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { SM_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_EMAIL, IS_MAX_LENGTH_15, IS_MAX_LENGTH_20, IS_MAX_LENGTH_254 } from 'Commons/config/constants/Validators';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { memo, useState } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport StandardUserAccessible from 'Commons/components/generic/usertypeaccessible/components/StandardUserAccessible';\r\nimport { isMigrationUser, isSyrasoftAdminOrDevLead, isSyrasoftSales } from 'Commons/helpers/utils/Utils';\r\nimport Modal from 'Commons/components/generic/modal/components/Modal';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport { SUPPORT_EMAIL, TECH_SUPPORT_PHONE_NUMBER } from 'External/containers/dashboard/widgets/header/configs/Constants';\r\nimport basicInformationStyle from '../styles/BasicInformationStyle';\r\nimport { verifyEmail } from '../config/ApiRequests';\r\nimport { BAD_REQUEST_STATUS_CODE, ERROR_CODE } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(basicInformationStyle);\r\n\r\n\r\nconst BasicInformation = ({ defaultFacilityList, isFormActive, isModeCreate, formProps, onAction, accountId }) => {\r\n const classes = useStyles();\r\n const [openAlertModal, setAlertModalStatus] = useState(false);\r\n const { errors: { email: emailErrors = '' } = {}, setFieldValue } = formProps || {};\r\n const getTitle = () => (\r\n \r\n \r\n {localisable.basicInformation}\r\n \r\n \r\n );\r\n\r\n const shouldEnableEmailField = () => isModeCreate || isSyrasoftAdminOrDevLead() || isSyrasoftSales() || isMigrationUser();\r\n\r\n const onEmailVerification = (apiError) => {\r\n if (apiError) {\r\n const { body: { errors: [{ errorCode = '' } = {}] = [] } = {}, status } = apiError;\r\n if (status === BAD_REQUEST_STATUS_CODE && errorCode === ERROR_CODE.not_unique) {\r\n setAlertModalStatus(true);\r\n }\r\n }\r\n };\r\n\r\n const handleEmailValidation = (_, value) => {\r\n if (!emailErrors) {\r\n const { initialValues: { email: initialEmailValue = '' } = {} } = formProps;\r\n const body = { email: value };\r\n if (`${initialEmailValue}` !== `${value || ''}`) {\r\n verifyEmail({ onAction, body, accountId, callback: onEmailVerification });\r\n }\r\n }\r\n };\r\n\r\n const getFormElement = () => (\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const handleModalClose = () => {\r\n setFieldValue('email', '');\r\n setAlertModalStatus(false);\r\n };\r\n\r\n const getModalHeader = () => (\r\n \r\n {localisable.userEmailConflict}\r\n \r\n );\r\n\r\n const getModalBody = () => (\r\n \r\n \r\n \r\n {localisable.emailConflictMessage}\r\n \r\n \r\n \r\n \r\n {localisable.customerSupportNumber}: \r\n {TECH_SUPPORT_PHONE_NUMBER}\r\n \r\n \r\n {localisable.customerSupportMail}: \r\n {SUPPORT_EMAIL}\r\n \r\n \r\n \r\n );\r\n\r\n const getModalFooter = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const renderModal = () => (\r\n \r\n {getModalBody()}\r\n \r\n );\r\n\r\n return (\r\n \r\n {\r\n getTitle()\r\n }\r\n {\r\n getFormElement()\r\n }\r\n {\r\n renderModal()\r\n }\r\n \r\n );\r\n};\r\n\r\nBasicInformation.propTypes = {\r\n isFormActive: PropTypes.bool,\r\n isModeCreate: PropTypes.bool,\r\n defaultFacilityList: PropTypes.array,\r\n formProps: PropTypes.object,\r\n onAction: PropTypes.func,\r\n accountId: PropTypes.string,\r\n};\r\n\r\nBasicInformation.defaultProps = { defaultFacilityList: [] };\r\n\r\nexport default memo(BasicInformation);\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst basicInformationStyle = theme => ({\r\n block: { padding: theme.spacing(1, 4) },\r\n title: {\r\n minHeight: 48,\r\n maxHeight: 48,\r\n },\r\n checkbox: { marginTop: theme.spacing(2) },\r\n modalGrid: {\r\n [media.tabletUp]: { width: '529px' },\r\n [media.phablet]: { width: '95vw' },\r\n borderRadius: '4px',\r\n padding: '16px',\r\n gap: '16px',\r\n minHeight: 'fit-content',\r\n },\r\n modalHeader: { display: 'flex', alignItems: 'center', minHeight: '30px' },\r\n closeButton: { minHeight: '30px' },\r\n headerTitle: { fontFamily: 'Open Sans', fontSize: '20px', lineHeight: '30px', fontWeight: '600' },\r\n bodyEnclosure: { display: 'grid', gap: theme.spacing(1), marginBottom: '16px' },\r\n bodyText: { fontSize: '16px', lineHeight: '20px' },\r\n customerSupportBold: { fontWeight: 'bold' },\r\n customerSupportEnclosure: { display: 'grid', gap: theme.spacing(1) },\r\n customerSupport: { fontSize: '16px', lineHeight: '20px' },\r\n footerEnclosure: { display: 'flex', justifyContent: 'flex-end', gap: '16px' },\r\n buttonProps: { minHeight: '33px', borderRadius: '8px', padding: '6px 8px' },\r\n buttonText: { fontSize: '14px', lineHeight: '21px', fontWeight: '400' },\r\n});\r\n\r\nexport default basicInformationStyle;\r\n","import React, { memo } from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport ListRenderer from 'Generic/listrenderer/components/ListRenderer';\r\nimport Chip from 'Generic/chip/components/Chip';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport previewStyles from '../styles/PreviewStyle';\r\n\r\nconst useStyles = makeStyles(previewStyles);\r\n\r\nconst Preview = ({ deleteAll, previewData, onDeleteRole }) => {\r\n const classes = useStyles();\r\n const getTitle = () => (\r\n \r\n \r\n \r\n {localisable.rolePreview}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n const getPreviewData = () => {\r\n if (previewData.length) {\r\n return previewData.map((rolePreview, index) => {\r\n const { name, permissions, id } = rolePreview;\r\n if (permissions.length) {\r\n const updatedPreviewData = permissions.map(({\r\n name: permissionName, type,\r\n id: permissionId, ...permission\r\n }) => {\r\n const entityNumber = permission[`${type}Number`];\r\n return ({\r\n ...permission,\r\n label: `${permissionName} ${clsx(entityNumber && `- ${entityNumber}`)}`,\r\n value: permissionId,\r\n name: permissionName,\r\n id: permissionId,\r\n type,\r\n });\r\n });\r\n return (\r\n \r\n \r\n {name.toUpperCase()}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return null;\r\n });\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n \r\n \r\n {getTitle()}\r\n \r\n \r\n {getPreviewData()}\r\n \r\n \r\n );\r\n};\r\n\r\nPreview.propTypes = {\r\n onDeleteRole: PropTypes.func,\r\n previewData: PropTypes.array,\r\n deleteAll: PropTypes.func,\r\n};\r\n\r\nPreview.defaultProps = {\r\n deleteAll: () => {},\r\n previewData: [],\r\n onDeleteRole: () => {},\r\n};\r\n\r\nexport default memo(Preview);\r\n","import React from 'react';\r\nimport { withStyles } from '../../componentlibrary/components/Components';\r\nimport listRendererStyle from '../style/ListRendererStyle';\r\n\r\nclass ListRenderer extends React.Component {\r\n render() {\r\n const { data, classes, component: Component, parentIndex, ...otherProps } = this.props;\r\n return (\r\n
\r\n {data.map((chipData, index) => (\r\n \r\n ))}\r\n
\r\n );\r\n }\r\n}\r\n\r\nListRenderer.propTypes = { data: PropTypes.array, classes: PropTypes.object, component: PropTypes.any, parentIndex: PropTypes.number };\r\n\r\nexport default withStyles(listRendererStyle)(ListRenderer);\r\n","const listRendererStyle = theme => ({\r\n chipContainer: {\r\n display: 'flex',\r\n alignContent: 'center',\r\n flexWrap: 'wrap',\r\n '& > *': { margin: theme.spacing(1) },\r\n },\r\n});\r\n\r\nexport default listRendererStyle;\r\n","const previewStyle = theme => ({\r\n block: { alignContent: 'flex-start' },\r\n roleTitle: { padding: theme.spacing(1) },\r\n title: {\r\n padding: '20px 28px',\r\n minHeight: 48,\r\n maxHeight: 48,\r\n marginBottom: theme.spacing(1),\r\n },\r\n roleBlockPadding: { padding: '20px 28px' },\r\n iconPadding: { padding: 4 },\r\n});\r\n\r\nexport default previewStyle;\r\n","import React, { useState, memo } from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport { Form, Formik } from 'formik';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport Tabs from 'Generic/tabs/components/Tabs';\r\nimport { HIGHLIGHT_TYPE } from 'Generic/tabs/config/Constants';\r\nimport SmartList from 'Commons/components/business/smartlist/components/SmartList';\r\nimport { TextField } from 'Generic/textfield/components/TextField';\r\nimport { STATUS, TABLE_ROW_HEIGHT_VARIANT } from 'Commons/config/constants/Constants';\r\nimport { ClickAwayListener, Grid, makeStyles, Paper, Popper } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { Dropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport {\r\n getFacilityColumns, getBusinessGroupColumns, getAccountColumns,\r\n ENTITY_TYPE,\r\n} from '../config/RoleSelectionConfig';\r\nimport roleSelectionStyle from '../styles/RoleSelectionStyle';\r\n\r\n\r\nconst useStyles = makeStyles(roleSelectionStyle);\r\n\r\nconst RoleSelection = ({\r\n userRole,\r\n selectAllPreviewData,\r\n onApplyRole,\r\n userPermissions,\r\n onCopyClick,\r\n userList,\r\n userSearch,\r\n fetchSelectedUserPermission,\r\n onCopyUser,\r\n formProps,\r\n isModeCreate,\r\n roleSelectionContainerRef,\r\n ...props\r\n}) => {\r\n const { deviceInfo: { isDesktop } } = window;\r\n const classes = useStyles();\r\n const [selectedRoleData, setSelectedRoleData] = useState(userRole[Object.keys(userRole)[0]] || {});\r\n const { id: selectedRoleId, permission: selectedRolePermission = {} } = selectedRoleData;\r\n const [open, setOpenState] = useState(false);\r\n const [userSelected, setUserSelected] = useState('');\r\n const [anchorEl, setanchorEl] = useState(null);\r\n const getRoleList = () => Object.keys(userRole)\r\n .filter((role) => {\r\n const { status = STATUS.Inactive.value } = userRole[role];\r\n return status === STATUS.Active.value;\r\n })\r\n .map(role => ({ label: userRole[role].name, value: role }));\r\n const roleList = getRoleList();\r\n\r\n const onClick = (event) => {\r\n if (!anchorEl) {\r\n setanchorEl(event.currentTarget);\r\n }\r\n setUserSelected('');\r\n setOpenState(true);\r\n onCopyClick();\r\n };\r\n\r\n const onCopy = (entityList) => {\r\n setOpenState(false);\r\n onCopyUser(entityList);\r\n };\r\n\r\n const showEntityListToCopy = () => (\r\n {\r\n onCopy(values);\r\n actions.setSubmitting(false);\r\n }}\r\n className=\"login\"\r\n render={\r\n () => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n />\r\n );\r\n\r\n const onClickOfUser = (user) => {\r\n const { firstName, lastName } = user;\r\n fetchSelectedUserPermission(user);\r\n setUserSelected(`${firstName} ${lastName}`);\r\n };\r\n\r\n const showUserList = () => (\r\n \r\n {userList.map(user => (\r\n onClickOfUser(user)}>\r\n {user.firstName + user.lastName}\r\n \r\n ))\r\n }\r\n \r\n );\r\n\r\n const getCopyList = () => (\r\n \r\n setOpenState(false)}\r\n >\r\n \r\n \r\n \r\n {localisable.copyRoleFrom}\r\n \r\n \r\n ,\r\n }}\r\n trackValue={!userSelected}\r\n value={userSelected}\r\n onChange={(event) => {\r\n userSearch(event.target.value);\r\n }}\r\n fullWidth\r\n />\r\n \r\n { userSelected\r\n ? showEntityListToCopy()\r\n : showUserList()\r\n }\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const getTitle = () => (\r\n \r\n \r\n \r\n {localisable.roleSelection}\r\n \r\n \r\n \r\n \r\n \r\n {getCopyList()}\r\n \r\n \r\n );\r\n\r\n const selectAll = (tabName) => {\r\n selectAllPreviewData({ tabName, selectedRoleData });\r\n };\r\n\r\n const getRespectedTableData = (tabName) => {\r\n switch (tabName) {\r\n case ENTITY_TYPE.ACCOUNT: return getAccountColumns(selectAll);\r\n case ENTITY_TYPE.BUSINESSGROUP: return getBusinessGroupColumns(selectAll);\r\n default: return getFacilityColumns(selectAll);\r\n }\r\n };\r\n\r\n const onRoleSelect = (value) => {\r\n onApplyRole({ selectedRole: selectedRoleData, selectedEntity: value });\r\n };\r\n\r\n const createCustomDataForRequiredTab = ({ tabName, type }) => {\r\n const { [`${tabName}Data`]: entityData } = props;\r\n return Object.keys(entityData).map((entityId) => {\r\n const [{ permission: { [tabName]: permissions = {} } = {} } = {}] = userPermissions;\r\n return ({\r\n ...entityData[entityId],\r\n type,\r\n onSelectRow: onRoleSelect,\r\n ...permissions[entityId] && {\r\n appliedRoleData: userRole[permissions[entityId].roleId],\r\n checked: true,\r\n },\r\n });\r\n });\r\n };\r\n\r\n const getListConfig = (tabName) => {\r\n const { clientHeight, clientWidth } = roleSelectionContainerRef || {};\r\n return ({\r\n store: `${tabName}`,\r\n columns: getRespectedTableData(tabName),\r\n emptyBodyText: localisable.noDataFound,\r\n tableProps: {\r\n headerRowHeight: TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER,\r\n rowHeight: 48,\r\n tableWidth: isDesktop ? clientWidth - 64 : 500,\r\n tableHeight: isDesktop ? clientHeight - 150 : 300,\r\n hideLastColumn: false,\r\n recalculate: true,\r\n leftAndRightPadding: 0,\r\n },\r\n tablePaperProps: { hideSearch: true },\r\n getCustomData: () => {\r\n switch (tabName) {\r\n case ENTITY_TYPE.ACCOUNT: {\r\n return createCustomDataForRequiredTab({ tabName, type: ENTITY_TYPE.ACCOUNT });\r\n }\r\n case ENTITY_TYPE.BUSINESSGROUP: {\r\n return createCustomDataForRequiredTab({ tabName, type: ENTITY_TYPE.BUSINESSGROUP });\r\n }\r\n default: {\r\n return createCustomDataForRequiredTab({ tabName, type: ENTITY_TYPE.FACILITY });\r\n }\r\n }\r\n },\r\n });\r\n };\r\n\r\n const getTableData = tabName => (\r\n \r\n );\r\n\r\n const getTabData = () => ([\r\n {\r\n id: 0,\r\n label: localisable.account,\r\n color: 'rolesGroupPrimary',\r\n children: getTableData(ENTITY_TYPE.ACCOUNT),\r\n disabled: !(ENTITY_TYPE.ACCOUNT in selectedRolePermission),\r\n },\r\n {\r\n id: 1,\r\n label: localisable.businessGroup,\r\n color: 'rolesGroupSecondary',\r\n children: getTableData(ENTITY_TYPE.BUSINESSGROUP),\r\n disabled: !(ENTITY_TYPE.BUSINESSGROUP in selectedRolePermission),\r\n },\r\n {\r\n id: 2,\r\n label: localisable.facility,\r\n color: 'rolesGroupTertiary',\r\n children: getTableData(ENTITY_TYPE.FACILITY),\r\n disabled: !(ENTITY_TYPE.FACILITY in selectedRolePermission),\r\n },\r\n ]);\r\n\r\n const selectedRolePostProcess = (_, value) => {\r\n setSelectedRoleData(userRole[value]);\r\n };\r\n\r\n const renderPermissionTabs = () => {\r\n const tabs = (\r\n \r\n );\r\n return isDesktop ? tabs : {tabs};\r\n };\r\n\r\n const getRolesType = () => (\r\n \r\n \r\n \r\n \r\n { renderPermissionTabs() }\r\n \r\n );\r\n return (\r\n \r\n {getTitle()}\r\n {getRolesType()}\r\n \r\n );\r\n};\r\n\r\nRoleSelection.propTypes = {\r\n userRole: PropTypes.object,\r\n onApplyRole: PropTypes.func,\r\n facilityData: PropTypes.object,\r\n businessGroupData: PropTypes.object,\r\n accountData: PropTypes.object,\r\n userPermissions: PropTypes.array,\r\n selectAllPreviewData: PropTypes.func,\r\n onCopyClick: PropTypes.func,\r\n userList: PropTypes.array,\r\n userSearch: PropTypes.func,\r\n fetchSelectedUserPermission: PropTypes.func,\r\n onCopyUser: PropTypes.func,\r\n formProps: PropTypes.object,\r\n isModeCreate: PropTypes.bool,\r\n roleSelectionContainerRef: PropTypes.object,\r\n};\r\n\r\nRoleSelection.defaultProps = {\r\n userRole: {},\r\n selectAllPreviewData: () => {},\r\n onApplyRole: () => {},\r\n facilityData: {},\r\n businessGroupData: {},\r\n accountData: {},\r\n userPermissions: [],\r\n onCopyClick: () => {},\r\n userList: [],\r\n userSearch: () => {},\r\n fetchSelectedUserPermission: () => {},\r\n onCopyUser: () => {},\r\n};\r\n\r\nexport default memo(RoleSelection);\r\n","const userFormStyle = theme => ({\r\n form: {\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'auto',\r\n },\r\n pageBody: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: 'transparent',\r\n padding: 0,\r\n overflow: 'hidden',\r\n },\r\n componentContainer: {\r\n backgroundColor: theme.palette.common.white,\r\n borderRadius: 4,\r\n height: '100%',\r\n position: 'relative',\r\n },\r\n leftContainer: {\r\n position: 'relative',\r\n marginRight: theme.spacing(1),\r\n width: '60%',\r\n minWidth: '60%',\r\n maxWidth: '60%',\r\n overflowY: 'auto',\r\n },\r\n roleSelectionContainer: { backgroundColor: theme.palette.common.white },\r\n basicInfoContainer: { flexBasis: 'max-content' },\r\n mask: {\r\n top: 0,\r\n left: 0,\r\n position: 'absolute',\r\n height: '100%',\r\n backgroundColor: theme.hexWithOpacity(theme.palette.common.white, 6),\r\n zIndex: 600,\r\n },\r\n loader: { height: '100%' },\r\n});\r\n\r\nexport default userFormStyle;\r\n","/* eslint-disable eqeqeq */\r\nimport { ENTITY_TYPE } from '../config/RoleSelectionConfig';\r\n\r\nconst roleUpdater = ({ data, color, type, currentRoleId, customRoleData, entityData }) => {\r\n Object.keys(data).forEach((id) => {\r\n if (data[id].roleId == currentRoleId) {\r\n customRoleData.permissions.push({\r\n ...(entityData[id]),\r\n color,\r\n type,\r\n roleId: currentRoleId,\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst preProcessPreviewData = ({ permissions, roles, facilityObject, accountObject, businessGroupObject }) => {\r\n const [{ permission: { account = {}, facility = {}, businessGroup = {} } = {} } = {}] = permissions;\r\n return roles.reduce((initialUserRoleData, role) => {\r\n const { id: currentRoleId, name } = role;\r\n const customRoleData = {\r\n id: currentRoleId,\r\n name,\r\n permissions: [],\r\n };\r\n roleUpdater({ data: account, color: 'rolesPrimary', type: ENTITY_TYPE.ACCOUNT, currentRoleId, customRoleData, entityData: accountObject });\r\n roleUpdater({ data: facility, color: 'rolesTertiary', type: ENTITY_TYPE.FACILITY, currentRoleId, customRoleData, entityData: facilityObject });\r\n roleUpdater({ data: businessGroup, color: 'rolesSecondary', type: ENTITY_TYPE.BUSINESSGROUP, currentRoleId, customRoleData, entityData: businessGroupObject });\r\n initialUserRoleData.push(customRoleData);\r\n return initialUserRoleData;\r\n }, []);\r\n};\r\n\r\nexport default preProcessPreviewData;\r\n","import Theme from 'Commons/theme/Theme';\r\nimport Modal from '../../../generic/modal/components/Modal';\r\nimport overlayStyle from '../styles/OverlayStyle';\r\nimport { Grid, withStyles, Divider, Button, RootRef, Route } from '../../../generic/componentlibrary/components/Components';\r\nimport LabelWithIcon from '../../../generic/labelwithicon/components/LabelWithIcon';\r\nimport Icon from '../../../generic/icon/components/Icon';\r\nimport localisable from '../../../../config/strings/localisable';\r\n\r\nclass Overlay extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.parentRef = React.createRef();\r\n this.state = { selectedActionItem: -1 };\r\n }\r\n\r\n\r\n getHeader = () => {\r\n const { header, classes } = this.props;\r\n return (\r\n \r\n {header}\r\n \r\n );\r\n }\r\n\r\n getChildren = () => {\r\n const { children } = this.props;\r\n if (typeof children === 'function') {\r\n return children();\r\n }\r\n return children;\r\n }\r\n\r\n getKey = (index, label) => `${label}${index}`;\r\n\r\n onClose = (routeProps) => {\r\n const { toggleForm, path } = this.props;\r\n const { history } = routeProps;\r\n if (toggleForm) {\r\n toggleForm();\r\n } else if (history && path) {\r\n history.goBack();\r\n }\r\n }\r\n\r\n onActionItemClick = (event, index, onClick) => {\r\n this.setState({ selectedActionItem: index });\r\n if (onClick) onClick(event);\r\n }\r\n\r\n getDesktopActionHeader() {\r\n const { classes, actionItems } = this.props;\r\n const { selectedActionItem } = this.state;\r\n return (\r\n actionItems.length > 0\r\n && (\r\n <>\r\n \r\n \r\n {\r\n actionItems.map(({ addon, label, onClick }, index) => (\r\n this.onActionItemClick(e, index, onClick)}\r\n className={selectedActionItem === index\r\n ? classes.activeItem : ''}\r\n >\r\n \r\n {label}\r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n getSectionScroller() {\r\n const { sectionScroller } = this.props;\r\n return (sectionScroller\r\n && (\r\n \r\n {React.cloneElement(sectionScroller, { parentRef: this.parentRef })}\r\n \r\n )\r\n );\r\n }\r\n\r\n getMobileActionHeader() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n {localisable.actions}\r\n {/* TODO */}\r\n arrow_drop_down\r\n \r\n \r\n \r\n {this.getSectionScroller()}\r\n \r\n \r\n );\r\n }\r\n\r\n renderActionHeader = () => {\r\n const { hideActionHeader } = this.props;\r\n const { deviceInfo: { isDesktop = false } = {} } = window;\r\n if (!hideActionHeader) {\r\n return (\r\n (!isDesktop) ? this.getMobileActionHeader() : this.getDesktopActionHeader()\r\n );\r\n }\r\n return (<>);\r\n }\r\n\r\n renderModal = (routeProps = {}) => {\r\n const { showHeader, classes, footer, path, ModalProps: { modalClasses, ...ModalProps } = {}, sectionScroller, disableOverlay } = this.props;\r\n const { deviceInfo: { isDesktop = false } = {} } = window;\r\n const {\r\n globalClasses: {\r\n deactivatedOverlay: { className: deactivatedOverlay },\r\n deactivateConfirmationFooter: { className: deactivateConfirmationFooter },\r\n },\r\n } = Theme;\r\n return (\r\n this.onClose(routeProps)}\r\n BackdropProps={{ classes: { root: classes.backdropShadow }, transitionDuration: 0 }}\r\n open={!!path}\r\n classes={{ modalGrid: classes.modalGrid, modalHeader: classes.modalHeader, ...modalClasses }}\r\n {...ModalProps}\r\n >\r\n \r\n \r\n \r\n {this.renderActionHeader()}\r\n \r\n {this.getChildren()}\r\n \r\n {\r\n footer\r\n && (\r\n \r\n {footer}\r\n \r\n )\r\n }\r\n \r\n \r\n {\r\n isDesktop && sectionScroller && (\r\n \r\n {this.getSectionScroller()}\r\n \r\n )\r\n }\r\n \r\n {\r\n disableOverlay &&
\r\n }\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { path } = this.props;\r\n return (\r\n path\r\n ? (\r\n this.renderModal(props)}\r\n />\r\n ) : this.renderModal()\r\n );\r\n }\r\n}\r\n\r\nOverlay.propTypes = {\r\n toggleForm: PropTypes.func,\r\n showHeader: PropTypes.bool,\r\n classes: PropTypes.object.isRequired,\r\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\r\n header: PropTypes.node,\r\n footer: PropTypes.node,\r\n hideActionHeader: PropTypes.bool,\r\n ModalProps: (props, propName, componentName) => {\r\n const { ModalProps: { [propName]: open } = {} } = props;\r\n const { path } = props;\r\n if (!path && !open) {\r\n return new Error(`The prop 'ModalProps.open' is marked required when 'path' is not defined in '${componentName}'`);\r\n }\r\n return null;\r\n },\r\n actionItems: PropTypes.arrayOf(PropTypes.shape({\r\n addon: PropTypes.shape({\r\n start: PropTypes.node,\r\n end: PropTypes.node,\r\n }),\r\n label: PropTypes.node,\r\n onClick: PropTypes.func,\r\n })),\r\n path: PropTypes.string,\r\n sectionScroller: PropTypes.node,\r\n disableOverlay: PropTypes.bool,\r\n};\r\n\r\nOverlay.defaultProps = {\r\n showHeader: true,\r\n actionItems: [],\r\n disableOverlay: false,\r\n hideActionHeader: false,\r\n};\r\n\r\nexport default withStyles(overlayStyle)(Overlay);\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst overlayStyle = theme => ({\r\n overlay: { '& $modalGrid, & $overlayHeader': { boxShadow: theme.boxShadows[0], flexWrap: 'nowrap' } },\r\n modalGrid: {\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n width: 'auto',\r\n transform: 'none',\r\n margin: '24px 16px',\r\n [media.tabletUp]: { margin: 16 },\r\n [media.laptopUp]: { margin: '36px' },\r\n },\r\n modalHeader: { minHeight: 'auto', zIndex: 2 },\r\n backdropShadow: { backgroundColor: 'rgba(255,255,255,0.8)' },\r\n actionItems: {\r\n [media.laptopUp]: { padding: '20px 48px', height: '64px' },\r\n '& $activeItem': { '& $labelWithIcon': { color: theme.palette.common.black } },\r\n },\r\n activeItem: {},\r\n gridItem: { marginRight: 32 },\r\n overlayBody: {\r\n height: 0,\r\n padding: '0px 16px',\r\n [media.laptopUp]: { padding: '0px 48px' },\r\n flex: '1 1 auto',\r\n overflowY: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n width: 0,\r\n background: 'transparent',\r\n },\r\n },\r\n overlayHeader: {\r\n minHeight: theme.components.overlay.header.minHeight,\r\n padding: '14px 16px',\r\n [media.laptopUp]: { padding: '14px 48px' },\r\n },\r\n overlayFooter: {},\r\n sectionBar: {\r\n borderBottom: `1px solid ${theme.palette.border}`,\r\n boxShadow: theme.boxShadows[1],\r\n height: '48px',\r\n },\r\n sectionTitle: {\r\n fontWeight: 600,\r\n color: theme.palette.text.secondary,\r\n borderLeft: `1px solid ${theme.palette.border}`,\r\n borderRight: `1px solid ${theme.palette.border}`,\r\n borderRadius: '0',\r\n padding: '10px',\r\n height: '48px',\r\n justifyContent: 'flex-start',\r\n [media.tabletUp]: { padding: 16 },\r\n [media.laptopUp]: {\r\n border: 'none',\r\n justifyContent: 'center',\r\n },\r\n },\r\n icon: {\r\n position: 'absolute',\r\n right: 0,\r\n paddingRight: '5px',\r\n },\r\n sectionScroller: {\r\n top: 0,\r\n bottom: 0,\r\n position: 'absolute',\r\n },\r\n labelWithIcon: {\r\n color: theme.palette.text.secondary,\r\n '&:hover': { color: theme.palette.common.black },\r\n },\r\n});\r\n\r\nexport default overlayStyle;\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst FilterOverlayStyle = theme => ({\r\n filterHeader: {\r\n fontSize: 16,\r\n color: theme.palette.text.primary,\r\n fontWeight: 'bolder',\r\n },\r\n overlay: {\r\n '& $overlayHeader': {\r\n flexWrap: 'nowrap',\r\n [media.smallMobile]: {\r\n boxShadow: 'none !important',\r\n padding: '0px 16px',\r\n minHeight: 50,\r\n },\r\n [media.mobile]: {\r\n boxShadow: 'none !important',\r\n padding: '0px 16px',\r\n minHeight: 50,\r\n },\r\n [media.phablet]: {\r\n boxShadow: 'none !important',\r\n padding: '0px 16px',\r\n minHeight: 50,\r\n },\r\n [media.tablet]: {\r\n boxShadow: 'none !important',\r\n padding: '0px 16px',\r\n },\r\n },\r\n },\r\n overlayHeader: {},\r\n filterContainer: {\r\n [media.mobile]: {\r\n position: 'absolute',\r\n left: '0px',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n [media.phablet]: {\r\n padding: '2px',\r\n position: 'absolute',\r\n left: '0px',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n [media.tablet]: {\r\n padding: '2px',\r\n position: 'absolute',\r\n left: '0px',\r\n width: '100%',\r\n height: '100%',\r\n },\r\n [media.laptopUp]: { padding: '36px 0px' },\r\n },\r\n filterTypesPaper: {\r\n height: '100%',\r\n width: '100%',\r\n [media.mobile]: { boxShadow: 'none !important' },\r\n [media.smallMobile]: { boxShadow: 'none !important' },\r\n [media.phablet]: { boxShadow: 'none !important' },\r\n [media.tablet]: { boxShadow: 'none !important' },\r\n },\r\n footer: {\r\n zIndex: 50,\r\n boxShadow: theme.boxShadows[0],\r\n },\r\n message: { color: theme.palette.error.main },\r\n modalGrid: {\r\n top: 0,\r\n bottom: 0,\r\n right: 0,\r\n left: 0,\r\n width: 'auto',\r\n transform: 'none',\r\n margin: '24px 16px',\r\n boxShadow: theme.boxShadows[0],\r\n [media.tabletUp]: { margin: '2vw' },\r\n [media.laptopUp]: { margin: '8vw' },\r\n },\r\n});\r\n\r\nexport default FilterOverlayStyle;\r\n","/* eslint-disable no-case-declarations */\r\nimport { TextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport Icon from '../../../generic/icon/components/Icon';\r\nimport { List, ListItem, ListItemText, withStyles, Grid, Typography }\r\nfrom '../../../generic/componentlibrary/components/Components';\r\nimport FilterTypesStyle from '../styles/FilterTypesStyle';\r\nimport DefaultComponent from './FilterComponent';\r\nimport * as SectionLoaders from './SectionLoaders';\r\nimport { FilterTypes as FilterEnums, MinSections } from './configs/FilterConfigs';\r\nimport FILTER_STAGES from './configs/FilterStages';\r\n\r\nclass FilterTypes extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isFiltered: false };\r\n this.sections = { ...props.sections };\r\n this.sectionsList = this.sections ? Object.keys(this.sections) : [];\r\n }\r\n\r\n componentDidMount = () => {\r\n if (this.sectionsList) {\r\n this.setState({ sectionsList: this.sectionsList });\r\n }\r\n }\r\n\r\n isCurrentSectionActive = (section) => {\r\n const { curSection } = this.props;\r\n if (curSection) {\r\n return curSection.label === section.label;\r\n }\r\n return false;\r\n }\r\n\r\n filterSections = (key) => {\r\n if (key.length > 0) {\r\n const { sections } = this.props;\r\n const filteredSections = {};\r\n Object.keys(sections).forEach((section) => {\r\n const searchResult = this.sections[section].label.match(new RegExp(key, 'gi'));\r\n if (searchResult && searchResult.length > 0) {\r\n filteredSections[section] = this.sections[section];\r\n }\r\n });\r\n this.sectionsList = Object.keys(filteredSections);\r\n this.setState({ isFiltered: true });\r\n } else {\r\n const { sections } = this.props;\r\n this.sectionsList = sections ? Object.keys(sections) : [];\r\n this.setState({ isFiltered: false });\r\n }\r\n this.setState({ sectionsList: this.sectionsList });\r\n }\r\n\r\n showAppliedFilters = () => {\r\n const { changeStage } = this.props;\r\n changeStage(FILTER_STAGES.APPLIED_FILTERS);\r\n }\r\n\r\n renderSectionHeader() {\r\n const { device, classes } = this.props;\r\n switch (device) {\r\n case 'isMobile':\r\n case 'isPhablet':\r\n case 'isTablet':\r\n return (\r\n \r\n Filter List\r\n Applied Filters\r\n \r\n );\r\n default:\r\n return (Filter List);\r\n }\r\n }\r\n\r\n renderSearch() {\r\n const { classes } = this.props;\r\n return (\r\n
\r\n ,\r\n }}\r\n onChange={(event) => {\r\n this.filterSections(event.target.value);\r\n }}\r\n fullWidth\r\n />\r\n
\r\n );\r\n }\r\n\r\n renderList() {\r\n const {\r\n props: { classes, device },\r\n sections,\r\n sectionsList,\r\n state: { sectionsList: stateSectionsList, isFiltered },\r\n } = this;\r\n const sectionsRef = stateSectionsList || sectionsList;\r\n return (\r\n \r\n {\r\n <>\r\n {this.renderSectionHeader()}\r\n { (device === 'isDesktop') && ((sectionsRef.length > MinSections[device] && !isFiltered) || isFiltered) && this.renderSearch()}\r\n {sectionsRef.length > 0 && sectionsRef.map(section => (\r\n this.renderListItem(sections[section])\r\n ))}\r\n {sectionsRef.length === 0 && (\r\n \r\n No Filters Found\r\n \r\n )}\r\n \r\n\r\n }\r\n \r\n );\r\n }\r\n\r\n renderListForDevice() {\r\n const { device, stage, classes } = this.props;\r\n switch (device) {\r\n case 'isMobile':\r\n case 'isPhablet':\r\n case 'isTablet':\r\n if (stage === FILTER_STAGES.FILTER_TYPES_LIST) {\r\n return (\r\n \r\n {this.renderList()}\r\n \r\n );\r\n }\r\n return (<>);\r\n default:\r\n return (\r\n \r\n {this.renderList()}\r\n \r\n );\r\n }\r\n }\r\n\r\n renderSectionForDevice() {\r\n const { device, stage } = this.props;\r\n switch (device) {\r\n case 'isMobile':\r\n case 'isPhablet':\r\n case 'isTablet':\r\n if (stage === FILTER_STAGES.FILTER_SECTION) {\r\n return this.renderSectionComponent();\r\n }\r\n return (<>);\r\n default:\r\n return this.renderSectionComponent();\r\n }\r\n }\r\n\r\n renderListItem(section) {\r\n const { classes, device, onSectionClicked } = this.props;\r\n const { label } = section;\r\n return (\r\n {\r\n onSectionClicked(section);\r\n }}\r\n >\r\n {label}\r\n { device !== 'isDesktop' && (this.isCurrentSectionActive(section) ? chevron_right : '')}\r\n \r\n );\r\n }\r\n\r\n renderSectionComponent() {\r\n const { DATE_RANGE, NUMBER_RANGE, CUSTOM } = FilterEnums;\r\n const { curSection } = this.props;\r\n const { formProps, classes, appliedFilters, availableFilters, device, onBack } = this.props;\r\n let CustomComponent = DefaultComponent;\r\n if (Object.keys(curSection).length > 0) {\r\n const { type, componentProps: { component, ...restOfComponentProps } } = curSection;\r\n switch (type) {\r\n case DATE_RANGE:\r\n CustomComponent = SectionLoaders[component] || SectionLoaders.DateRange;\r\n break;\r\n case NUMBER_RANGE:\r\n CustomComponent = SectionLoaders[component] || SectionLoaders.NumberRange;\r\n break;\r\n case CUSTOM:\r\n CustomComponent = SectionLoaders[component] || DefaultComponent;\r\n break;\r\n default:\r\n break;\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n // this.initSections(sections);\r\n return (\r\n \r\n {\r\n this.renderListForDevice()\r\n }\r\n {\r\n this.renderSectionForDevice()\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nFilterTypes.propTypes = {\r\n classes: PropTypes.any,\r\n sections: PropTypes.any.isRequired, // The Sections to display\r\n formProps: PropTypes.any.isRequired, // The formik props from overlay\r\n appliedFilters: PropTypes.any, // The initial applied filters if any\r\n device: PropTypes.any, // The device being rendered on\r\n stage: PropTypes.any, // The current stage\r\n changeStage: PropTypes.func, // Change State\r\n onBack: PropTypes.func, // Handle back icon press in mobile\r\n availableFilters: PropTypes.any.isRequired, // The list of all filters available for work center\r\n curSection: PropTypes.any.isRequired, // The current section that is set by parent container\r\n onSectionClicked: PropTypes.any.isRequired, // When section is changed\r\n};\r\n\r\nexport default withStyles(FilterTypesStyle)(FilterTypes);\r\n","import media from '../../../../theme/MediaQueries';\r\n\r\nconst FilterTypesStyle = theme => ({\r\n divider: {\r\n borderBottomColor: theme.separator.color,\r\n paddingTop: '0px',\r\n },\r\n sectionsContainer: {\r\n boxShadow: '0px 1px 6px 0px rgba(0,0,0,0.16)',\r\n width: '100%',\r\n },\r\n sectionComponent: {\r\n padding: 16,\r\n [media.smallMobile]: { padding: '0px' },\r\n [media.mobile]: { padding: '0px' },\r\n [media.phablet]: { padding: '0px' },\r\n [media.tablet]: { padding: '0px' },\r\n },\r\n section: { width: '100%' },\r\n mobileSectionHeader: {\r\n fontSize: '1rem',\r\n fontWeight: 'bolder',\r\n },\r\n mobileSectionFilters: {\r\n textAlign: 'end',\r\n fontSize: '0.875rem',\r\n fontWeight: 'bolder',\r\n color: theme.palette.common.secondary,\r\n },\r\n list: {\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: '-5px 0px 5px -4px rgba(0, 0, 0, 0.16)',\r\n width: '100%',\r\n height: 'auto',\r\n [media.smallMobile]: {\r\n width: '100%',\r\n left: 0,\r\n position: 'absolute',\r\n boxShadow: 'none',\r\n zIndex: '1',\r\n height: '100%',\r\n flexDirection: 'column',\r\n },\r\n [media.mobile]: {\r\n width: '100%',\r\n left: 0,\r\n position: 'absolute',\r\n boxShadow: 'none',\r\n zIndex: '1',\r\n height: '100%',\r\n flexDirection: 'column',\r\n },\r\n [media.phablet]: {\r\n width: '100%',\r\n left: 0,\r\n position: 'absolute',\r\n boxShadow: 'none',\r\n zIndex: '1',\r\n height: '100%',\r\n flexDirection: 'column',\r\n },\r\n [media.tablet]: {\r\n position: 'absolute',\r\n zIndex: '1',\r\n left: '0px',\r\n width: '100%',\r\n boxShadow: 'none',\r\n height: '100%',\r\n flexDirection: 'column',\r\n },\r\n [media.laptopUp]: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'auto',\r\n },\r\n\r\n '& $listItems': {\r\n height: 'auto',\r\n padding: '5px 20px',\r\n fontSize: '1rem',\r\n lineHeight: 'normal',\r\n [media.laptopUp]: { borderBottom: '0.9px solid rgba(239, 239, 239, 0.5)' },\r\n [media.mobile]: { '&:active': { background: '#F5F5F5' } },\r\n cursor: 'pointer',\r\n },\r\n\r\n '& $child': {\r\n paddingTop: 8,\r\n paddingBottom: 8,\r\n },\r\n\r\n '& $sectionHeader': {},\r\n\r\n '& *::-webkit-scrollbar': { width: 5 },\r\n\r\n '& *::-webkit-scrollbar-track': { borderRadius: 5 },\r\n\r\n '& *::-webkit-scrollbar-track-piece': {\r\n borderRadius: 5,\r\n background: 'transparent',\r\n },\r\n\r\n\r\n '& *::-webkit-scrollbar-thumb': {\r\n borderRadius: 5,\r\n background: '#b4b4b4',\r\n },\r\n },\r\n sectionHeader: {\r\n fontSize: '1rem',\r\n fontWeight: '600',\r\n margin: '24px',\r\n padding: '2px',\r\n marginLeft: 20,\r\n },\r\n listItems: {\r\n height: 'auto',\r\n padding: '16px 28px',\r\n fontSize: '1rem',\r\n lineHeight: 'normal',\r\n [media.tablet]: {\r\n width: 736,\r\n height: 51,\r\n },\r\n [media.laptopUp]: { borderBottom: '0.9px solid rgba(239, 239, 239, 0.5)' },\r\n cursor: 'pointer',\r\n },\r\n activeLabel: {\r\n '& span': {\r\n color: theme.palette.secondary.main,\r\n fontWeight: 'bolder',\r\n },\r\n },\r\n searchFieldContainer: {\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n paddingBottom: 16,\r\n },\r\n searchField: { height: '36px' },\r\n filterTypesContainer: { height: '100%' },\r\n});\r\n\r\nexport default FilterTypesStyle;\r\n","const customTitleBarStyle = theme => ({\r\n auto: { width: 'auto' },\r\n statusButton: { marginLeft: theme.spacing(2) },\r\n action: { textAlign: 'end' },\r\n});\r\n\r\nexport default customTitleBarStyle;\r\n","const colorPickerStyle = theme => ({\r\n coloredSquare: {\r\n position: 'relative',\r\n outline: 'none',\r\n border: 'none',\r\n borderRadius: 0,\r\n maxWidth: 24,\r\n maxHeight: 24,\r\n minWidth: 24,\r\n minHeight: 24,\r\n backgroundColor: ({ color: { hex } = {} } = {}) => hex,\r\n '&:hover': { backgroundColor: ({ color: { hex } = {} } = {}) => hex },\r\n margin: theme.spacing(2),\r\n },\r\n popper: { zIndex: 1 },\r\n readOnly: { pointerEvents: 'none' },\r\n});\r\n\r\nexport default colorPickerStyle;\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nfunction sortByIndex(\r\n { node: { sortableInfo: { index: index1 } } },\r\n { node: { sortableInfo: { index: index2 } } },\r\n) {\r\n return index1 - index2;\r\n}\r\n\r\nexport default class Manager {\r\n refs = {};\r\n\r\n active = null;\r\n\r\n add(collection, ref) {\r\n if (!this.refs[collection]) {\r\n this.refs[collection] = [];\r\n }\r\n\r\n this.refs[collection].push(ref);\r\n }\r\n\r\n remove(collection, ref) {\r\n const index = this.getIndex(collection, ref);\r\n\r\n if (index !== -1) {\r\n this.refs[collection].splice(index, 1);\r\n }\r\n }\r\n\r\n isActive() {\r\n return this.active;\r\n }\r\n\r\n getActive() {\r\n return this.refs[this.active.collection].find(\r\n // eslint-disable-next-line eqeqeq\r\n ({ node }) => node.sortableInfo.index === this.active.index,\r\n );\r\n }\r\n\r\n getIndex(collection, ref) {\r\n return this.refs[collection].indexOf(ref);\r\n }\r\n\r\n getOrderedRefs(collection = this.active.collection) {\r\n return this.refs[collection].sort(sortByIndex);\r\n }\r\n}\r\n","/* This piece of code has been taken from https://github.com/clauderic/react-sortable-hoc */\r\n\r\nexport default class AutoScroller {\r\n constructor(container, onScrollCallback) {\r\n this.container = container;\r\n this.onScrollCallback = onScrollCallback;\r\n }\r\n\r\n clear() {\r\n if (this.interval == null) {\r\n return;\r\n }\r\n\r\n clearInterval(this.interval);\r\n this.interval = null;\r\n }\r\n\r\n update({ translate, minTranslate, maxTranslate, width, height }) {\r\n const direction = {\r\n x: 0,\r\n y: 0,\r\n };\r\n const speed = {\r\n x: 1,\r\n y: 1,\r\n };\r\n const acceleration = {\r\n x: 10,\r\n y: 10,\r\n };\r\n\r\n const {\r\n scrollTop,\r\n scrollLeft,\r\n scrollHeight,\r\n scrollWidth,\r\n clientHeight,\r\n clientWidth,\r\n } = this.container;\r\n\r\n const isTop = scrollTop === 0;\r\n const isBottom = scrollHeight - scrollTop - clientHeight === 0;\r\n const isLeft = scrollLeft === 0;\r\n const isRight = scrollWidth - scrollLeft - clientWidth === 0;\r\n\r\n if (translate.y >= maxTranslate.y - height / 2 && !isBottom) {\r\n // Scroll Down\r\n direction.y = 1;\r\n speed.y = acceleration.y\r\n * Math.abs((maxTranslate.y - height / 2 - translate.y) / height);\r\n } else if (translate.x >= maxTranslate.x - width / 2 && !isRight) {\r\n // Scroll Right\r\n direction.x = 1;\r\n speed.x = acceleration.x\r\n * Math.abs((maxTranslate.x - width / 2 - translate.x) / width);\r\n } else if (translate.y <= minTranslate.y + height / 2 && !isTop) {\r\n // Scroll Up\r\n direction.y = -1;\r\n speed.y = acceleration.y\r\n * Math.abs((translate.y - height / 2 - minTranslate.y) / height);\r\n } else if (translate.x <= minTranslate.x + width / 2 && !isLeft) {\r\n // Scroll Left\r\n direction.x = -1;\r\n speed.x = acceleration.x\r\n * Math.abs((translate.x - width / 2 - minTranslate.x) / width);\r\n }\r\n\r\n if (this.interval) {\r\n this.clear();\r\n this.isAutoScrolling = false;\r\n }\r\n\r\n if (direction.x !== 0 || direction.y !== 0) {\r\n this.interval = setInterval(() => {\r\n this.isAutoScrolling = true;\r\n const offset = {\r\n left: speed.x * direction.x,\r\n top: speed.y * direction.y,\r\n };\r\n this.container.scrollTop += offset.top;\r\n this.container.scrollLeft += offset.left;\r\n\r\n this.onScrollCallback(offset);\r\n }, 5);\r\n }\r\n }\r\n}\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { useState } from 'react';\r\nimport { IS_VALID_PASSWORDS } from 'Commons/config/constants/Validators';\r\nimport { Grid, ExpansionPanel, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { ExpansionPanelSummary } from '@material-ui/core';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport userProfileStyles from 'Commons/components/business/userProfile/styles/UserProfileStyles';\r\nimport localisable from '../../../../config/strings/localisable';\r\n\r\nconst useStyles = makeStyles(userProfileStyles, { name: 'ResetPassword' });\r\n\r\nconst ResetPassword = () => {\r\n const classes = useStyles();\r\n const [oldPassIconChange, setOldPassVisibility] = useState(false);\r\n const [newPassIconChange, setNewPassVisibility] = useState(false);\r\n const [confirmPassIconChange, setConfirmPassVisibility] = useState(false);\r\n\r\n const renderViewHidePasswordIcon = (shouldShow, setStateFunc) => (\r\n setStateFunc(!shouldShow)}\r\n />\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n )}\r\n >\r\n \r\n {localisable.passwordUpdate}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ResetPassword;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { FormCheckbox } from 'Generic/checkbox/components/CheckBox';\r\nimport { useMemo } from 'react';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport userProfileStyles from 'Commons/components/business/userProfile/styles/UserProfileStyles';\r\nimport { isSyrasoftUser } from 'Commons/helpers/utils/Utils';\r\n\r\nconst useStyles = makeStyles(userProfileStyles, { name: 'UserDetails' });\r\n\r\nconst UserDetails = (props) => {\r\n const {\r\n facility,\r\n userData: {\r\n firstName,\r\n lastName,\r\n email,\r\n } = {},\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const facilityList = useMemo(() => {\r\n const { data: { data = [] } = {} } = facility;\r\n return data.map(({ id: value, name: label }) => ({ label, value }));\r\n }, [facility]);\r\n\r\n const renderInfo = (label, value, component) => {\r\n const componentToRender = component || (\r\n {value}\r\n );\r\n return (\r\n \r\n {label}:\r\n \r\n {componentToRender}\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {renderInfo(localisable.firstName, firstName)}\r\n {renderInfo(localisable.lastName, lastName)}\r\n {renderInfo(localisable.email, email)}\r\n {renderInfo(localisable.phone, undefined, (\r\n \r\n ))}\r\n {\r\n !isSyrasoftUser()\r\n && renderInfo(localisable.defaultFacility, undefined, ())\r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUserDetails.propTypes = {\r\n facility: PropTypes.object,\r\n userData: PropTypes.object.isRequired,\r\n};\r\n\r\nUserDetails.defaultProps = { facility: {} };\r\n\r\nexport default UserDetails;\r\n","import { memo, useMemo } from 'react';\r\nimport LevelSelector from 'Commons/components/business/bev/components/common/components/LevelSelector';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { Grid, Loader, makeStyles, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport { ZOOM_BY, ZOOM_LIMITS, ZOOM_VALUE_DISPLAY_OFFSET } from 'Commons/components/business/bev/config/Config';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport canvasHeaderStyles from 'Commons/components/business/bev/components/common/styles/CanvasHeaderStyles';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { SmartSearchableDropdown } from 'Commons/components/generic/dropdown/components/SearchableDropdown';\r\nimport { XS_12 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { MEDIUM_SD_HEIGHT } from 'Commons/components/generic/dropdown/config/Constants';\r\nimport { getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport { SOURCE } from 'Commons/config/constants/Constants';\r\nimport useDidUpdateEffect from 'Commons/helpers/hooks/useDidUpdateEffect';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { getSearchConfig, refreshColor } from '../../../config/ApiRequests';\r\nimport ScrollActionItems from './ScrollActionItems';\r\n\r\nconst useStyles = makeStyles(canvasHeaderStyles, { name: 'canvasHeader' });\r\n\r\n\r\nconst CanvasHeader = (props) => {\r\n const {\r\n levelsList, canvasRef, isSetupMode, zoomValue, onLevelChange, defaultZoomValue,\r\n saveCurrentZoomAsDefault, isButtonLoading, zoomCanvas, setShowInfoCard, onAction,\r\n setShowFullPageLoader, setSnackbarProps, handleErrors, unitList = [], selectedLevel,\r\n setScrollToIndex, searchedUnit, setSearchedUnit, searchedUnit: { label: searchedUnitLabel },\r\n scrollCanvas,\r\n } = props;\r\n\r\n const { deviceInfo: { isMobile } } = window;\r\n const unitApiConfig = useConstructor(() => getSearchConfig(SOURCE.unit.value, undefined));\r\n\r\n const classes = useStyles({ isSetupMode, isMobile });\r\n\r\n const findAndSetUnitIndex = (currentUnitId) => {\r\n const index = unitList.findIndex(({ id }) => id === currentUnitId);\r\n setScrollToIndex(index);\r\n };\r\n\r\n useDidUpdateEffect(() => {\r\n const { id: currentUnitId } = searchedUnit;\r\n findAndSetUnitIndex(currentUnitId);\r\n }, [selectedLevel]);\r\n\r\n const colorRefreshApiResponse = (apiError, response) => {\r\n if (apiError) {\r\n handleErrors(apiError);\r\n setSnackbarProps(true, localisable.bevRefreshColorErrorMsg, 'error');\r\n } else if (response) {\r\n setSnackbarProps(true, localisable.colorRefreshInitiatedMsg);\r\n }\r\n setShowFullPageLoader(false);\r\n };\r\n\r\n const onClickRefreshButton = () => {\r\n setShowFullPageLoader(true);\r\n refreshColor(onAction, colorRefreshApiResponse);\r\n };\r\n\r\n const zoomValueToDisplay = useMemo(() => (`${Math.ceil(zoomValue * 100 - ZOOM_VALUE_DISPLAY_OFFSET).toString().split('.')[0]}%`), [zoomValue]); // Displays 60% less than actual zoom that is set. Eg- 100% will be displayed as 40%, 160% as 100%\r\n\r\n const onUnitSearch = (_, __, unitDetails = {}) => {\r\n const { id: currentUnitId, bev: { level: searchedUnitLevel } = {} } = unitDetails;\r\n if (searchedUnitLevel) {\r\n if (selectedLevel === searchedUnitLevel) findAndSetUnitIndex(currentUnitId);\r\n else onLevelChange(_, searchedUnitLevel, [], true);\r\n }\r\n if (!currentUnitId) setScrollToIndex(-1);\r\n setSearchedUnit(unitDetails);\r\n };\r\n\r\n const renderScrollActions = () => (\r\n \r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n (isSetupMode ? canvasRef.zoom(ZOOM_BY.OUT) : zoomCanvas(ZOOM_BY.OUT))}\r\n disabled={zoomValue <= ZOOM_LIMITS.LOWER}\r\n >\r\n \r\n \r\n {zoomValueToDisplay}\r\n (isSetupMode ? canvasRef.zoom(ZOOM_BY.IN) : zoomCanvas(ZOOM_BY.IN))}\r\n disabled={zoomValue >= ZOOM_LIMITS.UPPER}\r\n >\r\n \r\n \r\n \r\n (isSetupMode ? canvasRef.zoom(0, true)\r\n : zoomCanvas(0, undefined, undefined, true))} // The second arg of canvasRef.zoom() is shouldReset. false by default\r\n disabled={zoomValue === defaultZoomValue}\r\n >\r\n {localisable.reset}\r\n \r\n \r\n \r\n {\r\n zoomValue !== defaultZoomValue && (\r\n <>\r\n \r\n {localisable.shouldSetThisAsDefault}\r\n \r\n \r\n {!isButtonLoading\r\n ? (\r\n {localisable.yes}\r\n \r\n )\r\n : \r\n }\r\n \r\n \r\n )\r\n }\r\n \r\n \r\n {isSetupMode && renderScrollActions()}\r\n {!isSetupMode && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {!isSetupMode && (\r\n \r\n )}\r\n setShowInfoCard(true)}\r\n >\r\n \r\n {localisable.key}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCanvasHeader.propTypes = {\r\n levelsList: PropTypes.array,\r\n canvasRef: PropTypes.object,\r\n isSetupMode: PropTypes.bool,\r\n zoomValue: PropTypes.number,\r\n defaultZoomValue: PropTypes.number,\r\n onLevelChange: PropTypes.func,\r\n saveCurrentZoomAsDefault: PropTypes.func,\r\n isButtonLoading: PropTypes.bool,\r\n zoomCanvas: PropTypes.func.isRequired,\r\n setShowInfoCard: PropTypes.func,\r\n onAction: PropTypes.func,\r\n setShowFullPageLoader: PropTypes.func,\r\n setSnackbarProps: PropTypes.func,\r\n handleErrors: PropTypes.func,\r\n unitList: PropTypes.array,\r\n setScrollToIndex: PropTypes.func,\r\n selectedLevel: PropTypes.string,\r\n searchedUnit: PropTypes.object,\r\n setSearchedUnit: PropTypes.func,\r\n scrollCanvas: PropTypes.func,\r\n};\r\n\r\nCanvasHeader.defaultProps = { unitList: [] };\r\n\r\nexport default memo(CanvasHeader);\r\n","import { memo } from 'react';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { SM_8 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport levelSelectorStyles from '../styles/LevelSelectorStyles';\r\n\r\nconst useStyles = makeStyles(levelSelectorStyles, { name: 'LevelSelector' });\r\n\r\nconst LevelSelector = ({ levelsList, onLevelChange }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nLevelSelector.propTypes = {\r\n levelsList: PropTypes.array,\r\n onLevelChange: PropTypes.func,\r\n};\r\n\r\nLevelSelector.defaultProps = { onLevelChange: () => {}, levelsList: [] };\r\n\r\nexport default memo(LevelSelector);\r\n","const levelSelectorStyles = theme => ({ container: { maxWidth: '45%', marginRight: theme.spacing(0) } });\r\n\r\nexport default levelSelectorStyles;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst canvasHeaderStyles = theme => ({\r\n canvasHeaderContainer: {\r\n position: 'relative',\r\n padding: ({ isSetupMode }) => (theme.spacing(3, isSetupMode ? 5 : 4, 1, 4)),\r\n },\r\n zoomButtonContainer: {\r\n position: 'relative',\r\n borderRadius: 8,\r\n border: `1px ${theme.palette.black[600]} solid`,\r\n },\r\n zoomButton: {\r\n margin: 0,\r\n padding: 0,\r\n maxWidth: 40,\r\n maxHeight: 30,\r\n minWidth: 40,\r\n minHeight: 30,\r\n borderRadius: 10,\r\n '&:hover': {\r\n color: theme.palette.primary.main,\r\n backgroundColor: theme.palette.common.white,\r\n border: 'none',\r\n },\r\n },\r\n zoomButtonDisabled: { '&.Mui-disabled': { border: 'none' } },\r\n zoomInButton: {\r\n border: 'none',\r\n borderTopLeftRadius: 0,\r\n borderBottomLeftRadius: 0,\r\n },\r\n zoomOutButton: {\r\n border: 'none',\r\n borderTopRightRadius: 0,\r\n borderBottomRightRadius: 0,\r\n },\r\n zoomPercentage: {\r\n display: 'inline',\r\n padding: theme.spacing(0, 0.5),\r\n fontSize: 14,\r\n },\r\n textButton: {\r\n '&:hover': { backgroundColor: theme.palette.common.white },\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n resetButton: { margin: theme.spacing(0, 2) },\r\n setAsDefaultContainer: { minHeight: 32, paddingTop: theme.spacing(1) },\r\n setDefaultButton: { margin: theme.spacing(0, 0, 0, 1), minHeight: 21 },\r\n textFontSize: { fontSize: 14 },\r\n divider: {\r\n position: 'absolute',\r\n right: 70,\r\n top: 3,\r\n width: 1,\r\n height: 25,\r\n backgroundColor: theme.palette.black[300],\r\n },\r\n infoButton: {\r\n maxWidth: theme.spacing(5),\r\n maxHeight: theme.spacing(5),\r\n minWidth: theme.spacing(5),\r\n minHeight: theme.spacing(5),\r\n [media.desktop]: {\r\n maxWidth: theme.spacing(7),\r\n maxHeight: theme.spacing(7),\r\n minWidth: theme.spacing(7),\r\n minHeight: theme.spacing(7),\r\n },\r\n borderRadius: '50%',\r\n boxShadow: theme.boxShadows[5],\r\n '&:hover': {\r\n color: theme.palette.common.white,\r\n backgroundColor: theme.palette.secondary.dark,\r\n },\r\n },\r\n refreshButton: { marginRight: theme.spacing(0) },\r\n searchableUnitDropdownGrid: { paddingLeft: theme.spacing(2) },\r\n searchableUnitDropdown: {\r\n width: '200px',\r\n [media.tablet]: { width: '120px' },\r\n },\r\n scrollActionItems: {\r\n alignSelf: 'start',\r\n borderRadius: theme.spacing(1),\r\n border: `1px ${theme.palette.black[600]} solid`,\r\n marginLeft: theme.spacing(2),\r\n },\r\n directionBtn: { height: 30 },\r\n});\r\n\r\nexport default canvasHeaderStyles;\r\n","import PropTypes from 'prop-types';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport { DIRECTIONS } from '../../../config/Constants';\r\n\r\nconst DIRECTION_ICON = {\r\n [DIRECTIONS.LEFT]: 'cp-chevron-left',\r\n [DIRECTIONS.RIGHT]: 'cp-chevron-right',\r\n [DIRECTIONS.DOWN]: 'cp-expand',\r\n [DIRECTIONS.UP]: 'cp-collapse',\r\n};\r\n\r\nconst ActionItem = ({ classes, direction, fabricInstance, scrollCanvas }) => (\r\n \r\n scrollCanvas(direction, fabricInstance)}\r\n />\r\n \r\n);\r\n\r\nActionItem.propTypes = {\r\n classes: PropTypes.object,\r\n direction: PropTypes.string,\r\n fabricInstance: PropTypes.object,\r\n scrollCanvas: PropTypes.func,\r\n};\r\n\r\nconst ScrollActionItems = ({ canvasRef, classes, scrollCanvas }) => {\r\n const fabricInstance = canvasRef ? canvasRef.getFabricCanvasInstance() : EMPTY_FUNC;\r\n return (\r\n \r\n {\r\n [\r\n DIRECTIONS.LEFT, DIRECTIONS.RIGHT,\r\n DIRECTIONS.UP, DIRECTIONS.DOWN,\r\n ].map(direction => (\r\n \r\n ))\r\n }\r\n\r\n \r\n );\r\n};\r\n\r\nScrollActionItems.propTypes = {\r\n canvasRef: PropTypes.object,\r\n classes: PropTypes.object,\r\n scrollCanvas: PropTypes.func,\r\n};\r\n\r\nexport default ScrollActionItems;\r\n","import { memo, useEffect } from 'react';\r\nimport { makeStyles, Grid, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport KeyboardShortcuts from 'Commons/components/business/bev/components/common/components/infoCard/KeyboardShortcuts';\r\nimport ColorLegend from 'Commons/components/business/bev/components/common/components/infoCard/ColorLegend';\r\nimport infoCardStyles from '../../styles/InfoCardStyles';\r\n\r\nconst useStyles = makeStyles(infoCardStyles, { name: 'InfoCard' });\r\n\r\nconst InfoCard = ({\r\n isSetupMode, colorLegendData,\r\n showInfoCard, setShowInfoCard,\r\n canvasGridRef,\r\n}) => {\r\n useEffect(() => {\r\n if (showInfoCard) setShowInfoCard(false);\r\n }, [isSetupMode]);\r\n\r\n const { clientHeight: canvasGridHeight } = canvasGridRef || {};\r\n\r\n\r\n const classes = useStyles({ showInfoCard, isSetupMode, canvasGridHeight });\r\n\r\n return (\r\n <>\r\n \r\n \r\n {isSetupMode ? localisable.bevKeyboardShortcutsCardTitle : localisable.key}\r\n \r\n setShowInfoCard(false)}\r\n />\r\n \r\n {\r\n isSetupMode ? (\r\n \r\n ) : \r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nInfoCard.propTypes = {\r\n isSetupMode: PropTypes.bool,\r\n colorLegendData: PropTypes.object,\r\n showInfoCard: PropTypes.bool,\r\n setShowInfoCard: PropTypes.func,\r\n canvasGridRef: PropTypes.object,\r\n};\r\n\r\nexport default memo(InfoCard);\r\n","import { makeStyles, Grid, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport { shortcuts } from '../../../../config/Config';\r\nimport infoCardStyles from '../../styles/InfoCardStyles';\r\n\r\nconst useStyles = makeStyles(infoCardStyles, { name: 'KeyboardShortcutsCard' });\r\n\r\nconst KeyboardShortcut = ({ label, description }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst KeyboardShortcuts = () => shortcuts.map(({ label, description }) => (\r\n \r\n));\r\n\r\nKeyboardShortcut.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default KeyboardShortcuts;\r\n","import { memo } from 'react';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { BOARD }\r\nfrom 'External/containers/facilityConfiguration/components/bevColorSetup/components/config/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { calculateYIQRatio } from 'Commons/components/business/bev/utils/Utils';\r\nimport { COLORED_SQUARE_BORDER_SHOW_TOLERANCE } from 'Commons/components/business/bev/config/Constants';\r\nimport colorLegendStyles from '../../styles/ColorLegendStyles';\r\n\r\nconst useStyles = makeStyles(colorLegendStyles, { name: 'ColorLegend' });\r\n\r\n\r\nconst SingleColorEntry = ({ color, description }) => {\r\n const classes = useStyles({ color });\r\n\r\n const borderRequired = !color ? true : calculateYIQRatio(color) > COLORED_SQUARE_BORDER_SHOW_TOLERANCE; // TO show a border around the colored square in case the color is hard to see against the white background (in cases where the color is white, lighter yellow etc.)\r\n\r\n return (\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n );\r\n};\r\n\r\nSingleColorEntry.propTypes = {\r\n color: PropTypes.string,\r\n description: PropTypes.string.isRequired,\r\n};\r\n\r\nconst LegendBoardEntry = (props) => {\r\n const { index, title = '', items = [] } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n items.length\r\n ? (\r\n <>\r\n 0 ? classes.legendBoardEntry : ''}>{title}\r\n {\r\n items.map(({\r\n color,\r\n description,\r\n }) => (\r\n \r\n ))\r\n }\r\n \r\n ) : null\r\n );\r\n};\r\n\r\nLegendBoardEntry.propTypes = {\r\n index: PropTypes.number,\r\n title: PropTypes.string,\r\n items: PropTypes.array,\r\n};\r\n\r\nconst ColorLegend = (props) => {\r\n const { colorLegendData = {} } = props;\r\n const getTitle = (board) => {\r\n if (board === BOARD.RENTAL_AVAILABILITY_STATUS) return localisable.bevColorSetupBoard1;\r\n if (board === BOARD.LOCK_OVERLOCK_STATUS) return localisable.bevColorSetupBoard2;\r\n if (board === BOARD.MAINTENANCE_ACTIVITY) return localisable.bevColorSetupBoard3;\r\n if (board === BOARD.DELINQUENCY_STATUS) return localisable.bevColorSetupBoard4;\r\n return '';\r\n };\r\n return (\r\n <>\r\n {\r\n // To maintain order did not use Object.keys(colorLegendData)\r\n [BOARD.RENTAL_AVAILABILITY_STATUS, BOARD.LOCK_OVERLOCK_STATUS,\r\n BOARD.MAINTENANCE_ACTIVITY, BOARD.DELINQUENCY_STATUS].map((board, index) => {\r\n const { [board]: { items: boardItems } = {} } = colorLegendData;\r\n const title = getTitle(board);\r\n return title && (\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n};\r\n\r\nColorLegend.propTypes = { colorLegendData: PropTypes.object };\r\n\r\nexport default memo(ColorLegend);\r\n","const colorLegendStyles = theme => ({\r\n coloredSquareAndDescriptionContainer: {\r\n flexWrap: 'nowrap',\r\n marginTop: theme.spacing(1),\r\n },\r\n coloredSquare: {\r\n marginRight: theme.spacing(2),\r\n width: 12,\r\n height: 12,\r\n outline: 'none',\r\n backgroundColor: ({ color = theme.palette.black[200] }) => color,\r\n flex: 'None',\r\n },\r\n coloredSquareBorder: { border: '1px solid lightgrey' },\r\n legendBoardEntry: { marginTop: theme.spacing(4) },\r\n});\r\n\r\nexport default colorLegendStyles;\r\n","import { memo, useMemo, useRef, useState, useEffect } from 'react';\r\nimport { FieldArray } from 'formik';\r\nimport Modal from 'Generic/modal/components/Modal';\r\nimport { FooterButton } from 'Commons/components/business/footer/components/Footer';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { DEFAULT_LEVEL_LABEL } from 'Commons/components/business/bev/config/Constants';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { getWhiteSpaceTrimmedString } from 'Commons/helpers/utils/StringHelpers';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport Level from './Level';\r\nimport levelManagementStyles from '../styles/LevelManagementStyles';\r\n\r\nconst useStyles = makeStyles(levelManagementStyles, { name: 'levelManagement' });\r\n\r\nconst LevelManagement = (props) => {\r\n const classes = useStyles();\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n const {\r\n handleLevelsSave,\r\n openLevelManagementModal,\r\n closeLevelManagementModal,\r\n isButtonLoading,\r\n formProps,\r\n formProps: {\r\n setFieldValue,\r\n setErrors,\r\n initialValues: {\r\n extra: {\r\n initialLevelsObj = {},\r\n levelsList: initialLevelsList = [],\r\n } = {},\r\n } = {},\r\n errors: {\r\n extra: { levelsList: erredLevelsList = [] } = {},\r\n ...remainingErrors\r\n } = {},\r\n values: { extra: { levelsList = {} } = {} } = {},\r\n } = {},\r\n fetchUnitCountData,\r\n } = props;\r\n\r\n const [showAlertDialog, setShowAlertDialog] = useState(false);\r\n const [idOfLevelBeingEdited, setIdOfLevelBeingEdited] = useState(null);\r\n const [idOfLevelBeingAdded, setIdOfLevelBeingAdded] = useState(null);\r\n const [isUnitCountDataLoading, setIsUnitDataCountLoading] = useState(true);\r\n const [unitCountData, setUnitCountData] = useState({});\r\n const hasSomethingBeenEdited = useRef(false);\r\n\r\n const onFetchUnitCountData = (apiError, response) => {\r\n if (response) {\r\n const { data = {} } = response;\r\n setUnitCountData(data);\r\n setIsUnitDataCountLoading(false);\r\n }\r\n };\r\n\r\n const setHasSomethingBeenEdited = (value) => {\r\n hasSomethingBeenEdited.current = value;\r\n };\r\n\r\n const cleanUpBeforeDiscardOrClose = () => {\r\n setFieldValue('extra.levelsList', initialLevelsList, false);\r\n if (openLevelManagementModal) {\r\n setHasSomethingBeenEdited(false);\r\n setErrors({ ...remainingErrors });\r\n setIdOfLevelBeingEdited(null);\r\n setIdOfLevelBeingAdded(null);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchUnitCountData(onFetchUnitCountData);\r\n return () => cleanUpBeforeDiscardOrClose();\r\n }, [openLevelManagementModal]);\r\n\r\n const levelLabelToLevelKeyMap = useMemo(() => levelsList.reduce((prevValue, level) => {\r\n const { label, value: levelKey } = level;\r\n if (label === null) return prevValue;\r\n return {\r\n ...prevValue,\r\n [getWhiteSpaceTrimmedString(label)]: levelKey,\r\n };\r\n }, {}), [idOfLevelBeingEdited, idOfLevelBeingAdded, levelsList.length]);\r\n\r\n const onLevelAdd = (arrayHelpers) => {\r\n const levelsLength = levelsList.length;\r\n const newLevelKey = levelsLength\r\n ? (Math.max(...levelsList.map(({ value: levelKey }) => convertToNumber(levelKey))) + 1).toString()\r\n : '0';\r\n\r\n const newLabel = levelsLength ? DEFAULT_LEVEL_LABEL.UNTITLED : DEFAULT_LEVEL_LABEL.LEVEL_1;\r\n\r\n arrayHelpers.push({ value: newLevelKey, label: newLabel });\r\n\r\n setHasSomethingBeenEdited(true);\r\n setIdOfLevelBeingEdited(null);\r\n setIdOfLevelBeingAdded(newLevelKey);\r\n };\r\n\r\n const onLevelEdit = (levelKey) => {\r\n setHasSomethingBeenEdited(true);\r\n setIdOfLevelBeingAdded(null);\r\n setIdOfLevelBeingEdited(levelKey);\r\n };\r\n\r\n const onLevelDelete = (arrayHelpers, levelKey, index) => {\r\n setHasSomethingBeenEdited(true);\r\n const isAlreadyExistingLevel = !!initialLevelsObj[levelKey]; // If levelKey doesn't exists in initialLevelsObj, then it's a newly added level\r\n if (isAlreadyExistingLevel) setFieldValue(`extra.levelsList.${index}.label`, null, true);\r\n else arrayHelpers.remove(index);\r\n setIdOfLevelBeingEdited(null);\r\n };\r\n\r\n const onCancelAdd = (arrayHelpers, index) => {\r\n arrayHelpers.remove(index);\r\n setIdOfLevelBeingAdded(null);\r\n };\r\n\r\n const onDiscardChanges = () => {\r\n if (!hasSomethingBeenEdited.current) return;\r\n cleanUpBeforeDiscardOrClose();\r\n };\r\n\r\n const onAlertDialogYesAction = () => {\r\n setShowAlertDialog(false);\r\n closeLevelManagementModal();\r\n };\r\n\r\n const onSaveClick = () => {\r\n setIdOfLevelBeingEdited(null);\r\n setIdOfLevelBeingAdded(null);\r\n handleLevelsSave();\r\n };\r\n\r\n const renderLevels = arrayHelpers => levelsList.map((level, index) => {\r\n const { value: levelKey, label } = level;\r\n const isThisLevelBeingEdited = levelKey === idOfLevelBeingEdited;\r\n const isThisLevelBeingAdded = levelKey === idOfLevelBeingAdded;\r\n if (label === null) return null;\r\n const { [levelKey]: { totalCount: unitsOnLevel = 0 } = {} } = unitCountData;\r\n const levelData = {\r\n levelKey,\r\n unitsOnLevel,\r\n };\r\n return (\r\n \r\n );\r\n });\r\n\r\n const renderHeader = arrayHelpers => (\r\n \r\n {localisable.levelManagement}\r\n onLevelAdd(arrayHelpers)}\r\n className={classes.addButton}\r\n />\r\n \r\n );\r\n\r\n const renderBody = arrayHelpers => (\r\n \r\n \r\n \r\n {localisable.name}\r\n \r\n \r\n {localisable.unitsInTheLevel}\r\n \r\n \r\n \r\n {localisable.actionsLower}\r\n \r\n \r\n \r\n \r\n {renderLevels(arrayHelpers)}\r\n \r\n \r\n );\r\n\r\n const renderFooter = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n return (\r\n <>\r\n (\r\n setShowAlertDialog(true) : closeLevelManagementModal}\r\n classes={{\r\n modalHeader: classes.modalHeader,\r\n modalBody: classes.modalBody,\r\n modalFooter: classes.modalFooter,\r\n modal: classes.modal,\r\n modalGrid: classes.modalGrid,\r\n }}\r\n footer={renderFooter()}\r\n disablePortal\r\n >\r\n {renderBody(arrayHelpers)}\r\n \r\n )}\r\n />\r\n setShowAlertDialog(false)}\r\n title={localisable.warning}\r\n actions={(\r\n \r\n {localisable.ok}\r\n \r\n )}\r\n >\r\n {localisable.discardConfirmation}\r\n \r\n \r\n );\r\n};\r\n\r\nLevelManagement.propTypes = {\r\n formProps: PropTypes.object,\r\n fetchUnitCountData: PropTypes.func,\r\n handleLevelsSave: PropTypes.func,\r\n openLevelManagementModal: PropTypes.bool,\r\n closeLevelManagementModal: PropTypes.func,\r\n isButtonLoading: PropTypes.bool,\r\n};\r\n\r\nLevelManagement.defaultProps = { formProps: {} };\r\n\r\nexport default memo(LevelManagement);\r\n","import { memo, useMemo } from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Actions from 'Commons/components/business/actions/components/Actions';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport ThreeDotProgress from 'Generic/threedotprogress/components/ThreeDotProgress';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { DEFAULT_LEVEL_LABEL } from 'Commons/components/business/bev/config/Constants';\r\nimport { IS_NOT_EMPTY_STRING } from 'Commons/config/constants/Validators';\r\nimport levelManagementStyles from '../styles/LevelManagementStyles';\r\n\r\nconst useStyles = makeStyles(levelManagementStyles, { name: 'levelManagement' });\r\n\r\nconst Level = (props) => {\r\n const classes = useStyles();\r\n const { deviceInfo: { isMobile } = {} } = window;\r\n const {\r\n index,\r\n isAddMode,\r\n isEditMode,\r\n onLevelEdit,\r\n onCancelAdd,\r\n arrayHelpers,\r\n onLevelDelete,\r\n isUnitCountDataLoading,\r\n levelLabelToLevelKeyMap,\r\n levelData: { levelKey, unitsOnLevel = 0 } = {},\r\n formProps: { values: { extra: { levelsList = [] } = {} } = {} } = {},\r\n formProps: { errors: { extra: { levelsList: erredLevelsList = [] } = {} } = {} } = {},\r\n } = props;\r\n\r\n const actionItems = useMemo(() => {\r\n const { label } = levelsList[index];\r\n const actionsConfig = [\r\n {\r\n icon: 'cp-edit',\r\n title: localisable.edit,\r\n disabled: isEditMode || (label !== DEFAULT_LEVEL_LABEL.UNTITLED && !!erredLevelsList.length),\r\n isVisible: !isAddMode,\r\n action: { onClick: () => onLevelEdit(levelKey) },\r\n },\r\n {\r\n icon: 'cp-delete',\r\n title: unitsOnLevel ? localisable.levelDeleteTooltip : localisable.delete,\r\n disabled: isUnitCountDataLoading,\r\n isVisible: !isAddMode,\r\n action: { onClick: unitsOnLevel ? EMPTY_FUNC : () => onLevelDelete(arrayHelpers, levelKey, index) },\r\n isDeleteAction: true,\r\n },\r\n {\r\n icon: 'cp-close',\r\n title: localisable.cancel,\r\n isVisible: isAddMode,\r\n action: { onClick: () => onCancelAdd(arrayHelpers, index) },\r\n },\r\n ].map(({ isVisible = true, icon, disabled, title, action, isDeleteAction = false }) => (isVisible ? ({\r\n component: (\r\n \r\n \r\n \r\n ),\r\n disabled,\r\n action,\r\n }) : {}));\r\n return (\r\n \r\n );\r\n }, [isEditMode, isAddMode, unitsOnLevel, levelKey, isUnitCountDataLoading, erredLevelsList.length]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {isUnitCountDataLoading\r\n ? \r\n : {unitsOnLevel}}\r\n \r\n \r\n {actionItems}\r\n \r\n \r\n );\r\n};\r\n\r\nLevel.propTypes = {\r\n index: PropTypes.number,\r\n isAddMode: PropTypes.bool,\r\n isEditMode: PropTypes.bool,\r\n formProps: PropTypes.object,\r\n levelData: PropTypes.object,\r\n onLevelEdit: PropTypes.func,\r\n onCancelAdd: PropTypes.func,\r\n onLevelDelete: PropTypes.func,\r\n arrayHelpers: PropTypes.object,\r\n isUnitCountDataLoading: PropTypes.bool,\r\n levelLabelToLevelKeyMap: PropTypes.object,\r\n};\r\n\r\nexport default memo(Level);\r\n","import { memo, useEffect } from 'react';\r\nimport { Grid, makeStyles, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { FormRadioGroup } from 'Commons/components/generic/radiogroup/components/RadioGroup';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport Toolbox from './components/Toolbox';\r\nimport UnitFormComponent from './components/UnitFormComponent';\r\nimport PlaceholderFormComponent from './components/PlaceholderFormComponent';\r\nimport Add from './components/Add';\r\nimport bevLeftSidebarStyles from './styles/BevLeftSidebarStyles';\r\nimport { TYPE_OF_ENTITY } from '../../../config/Constants';\r\n\r\nconst useStyles = makeStyles(bevLeftSidebarStyles, { name: 'BevLeftSideBar' });\r\n\r\nconst BevLeftSideBar = (props) => {\r\n const {\r\n currentFacility,\r\n setupModeCanvasRef,\r\n formProps,\r\n formProps: { values: { entityType }, errors: { label: labelError } = {}, setFieldValue } = {},\r\n unitTypeList,\r\n activeDirection,\r\n onDirectionChange,\r\n requiredFieldsConfig,\r\n labelToIdMap,\r\n addToUnitTypeMap,\r\n modifyLabelToIdMap,\r\n setUnitLabelBeforeDuplicateError,\r\n handleMoveToCurrentLocation,\r\n showDuplicateUnitLabelAlert,\r\n setShowDuplicateUnitLabelAlertDialog,\r\n shouldDisableToolBox,\r\n handleAddingEntityOnPlusButtonClick,\r\n setRequiredFieldsConfig,\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const entityTypeRadioList = useConstructor(() => Object.values(TYPE_OF_ENTITY));\r\n\r\n useEffect(() => {\r\n if (labelError === localisable.unitAlreadyExists) {\r\n if (setupModeCanvasRef) {\r\n const fabricCanvasInstance = setupModeCanvasRef.getFabricCanvasInstance();\r\n const actObject = fabricCanvasInstance.getActiveObject();\r\n const { type } = actObject || {};\r\n if (actObject && type === 'group') {\r\n setShowDuplicateUnitLabelAlertDialog(true);\r\n }\r\n }\r\n }\r\n }, [labelError]);\r\n\r\n const handleChangeUnitNumberOrAlertClose = () => {\r\n setShowDuplicateUnitLabelAlertDialog(false);\r\n };\r\n\r\n const shouldDisableMoveToCurrentLocationButton = () => {\r\n if (setupModeCanvasRef && showDuplicateUnitLabelAlert) {\r\n const fabricCanvasInstance = setupModeCanvasRef.getFabricCanvasInstance();\r\n const actObject = fabricCanvasInstance.getActiveObject();\r\n const { type } = actObject || {};\r\n return type !== 'group' || entityType !== TYPE_OF_ENTITY.Unit.value;\r\n }\r\n return false;\r\n };\r\n\r\n const switchComponentForm = () => {\r\n switch (entityType) {\r\n case TYPE_OF_ENTITY.Unit.value:\r\n return (\r\n \r\n );\r\n case TYPE_OF_ENTITY.Placeholder.value:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const handleChangeEntityType = (_, value) => {\r\n const fabricInstance = setupModeCanvasRef ? setupModeCanvasRef.getFabricCanvasInstance() : null;\r\n if (fabricInstance) {\r\n fabricInstance.discardActiveObject();\r\n fabricInstance.renderAll();\r\n }\r\n setFieldValue('entityType', value); // force update after de-selecting\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {localisable.bevCreateEdit}\r\n \r\n \r\n {switchComponentForm()}\r\n <>\r\n {entityType && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.changeUnitNumber.toUpperCase()}\r\n \r\n \r\n {localisable.moveToCurrentLocation.toUpperCase()}\r\n \r\n \r\n )}\r\n >\r\n \r\n {`Unit ${formProps.values.label} already exists. What do you want to do ?`}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nBevLeftSideBar.propTypes = {\r\n currentFacility: PropTypes.object,\r\n setupModeCanvasRef: PropTypes.object,\r\n formProps: PropTypes.object,\r\n unitTypeList: PropTypes.array,\r\n activeDirection: PropTypes.string,\r\n addToUnitTypeMap: PropTypes.func,\r\n onDirectionChange: PropTypes.func,\r\n requiredFieldsConfig: PropTypes.object.isRequired,\r\n labelToIdMap: PropTypes.object.isRequired,\r\n modifyLabelToIdMap: PropTypes.func.isRequired,\r\n handleMoveToCurrentLocation: PropTypes.func.isRequired,\r\n showDuplicateUnitLabelAlert: PropTypes.bool.isRequired,\r\n setShowDuplicateUnitLabelAlertDialog: PropTypes.func.isRequired,\r\n setUnitLabelBeforeDuplicateError: PropTypes.func.isRequired,\r\n shouldDisableToolBox: PropTypes.bool,\r\n handleAddingEntityOnPlusButtonClick: PropTypes.func.isRequired,\r\n setRequiredFieldsConfig: PropTypes.func,\r\n};\r\n\r\nBevLeftSideBar.defaultProps = {\r\n setupModeCanvasRef: {},\r\n unitTypeList: {},\r\n onDirectionChange: () => {\r\n },\r\n shouldDisableToolBox: false,\r\n};\r\n\r\n\r\nexport default memo(BevLeftSideBar);\r\n","import { memo } from 'react';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { Grid, makeStyles, Typography } from 'Generic/componentlibrary/components/Components';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport bevLeftSidebarStyles\r\nfrom 'Commons/components/business/bev/components/setup/bevLeftSideBar/styles/BevLeftSidebarStyles';\r\nimport { POSITIONS, ROTATE_BY, TYPE_OF_ENTITY } from '../../../../config/Constants';\r\n\r\nconst useStyles = makeStyles(bevLeftSidebarStyles, { name: 'BevLeftSideBar' });\r\n\r\nconst IconButtonWithTooltip = ({ tooltip, ...props }) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst Toolbox = ({ setupModeCanvasRef, shouldDisableToolBox, entityType }) => {\r\n const classes = useStyles();\r\n const {\r\n bevLeftAlignTooltip,\r\n bevRightAlignTooltip,\r\n bevTopAlignTooltip,\r\n bevBottomAlignTooltip,\r\n bevHorizontalCenterTooltip,\r\n bevVerticalCenterTooltip,\r\n bevRotateTooltip,\r\n bevDeleteTooltip,\r\n } = localisable;\r\n return (\r\n \r\n \r\n {localisable.bevToolBox}\r\n \r\n \r\n setupModeCanvasRef.align(POSITIONS.LEFT)}\r\n />\r\n setupModeCanvasRef.align(POSITIONS.RIGHT)}\r\n />\r\n setupModeCanvasRef.align(POSITIONS.TOP)}\r\n />\r\n setupModeCanvasRef.align(POSITIONS.BOTTOM)}\r\n />\r\n \r\n \r\n setupModeCanvasRef.align(POSITIONS.HCENTER)}\r\n />\r\n setupModeCanvasRef.align(POSITIONS.VCENTER)}\r\n />\r\n setupModeCanvasRef.rotate(ROTATE_BY.NINETY_DEG)}\r\n />\r\n setupModeCanvasRef.delete()}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nToolbox.propTypes = {\r\n setupModeCanvasRef: PropTypes.object,\r\n shouldDisableToolBox: PropTypes.bool,\r\n entityType: PropTypes.string,\r\n};\r\n\r\nToolbox.defaultProp = {\r\n setupModeCanvasRef: {},\r\n shouldDisableToolBox: false,\r\n};\r\n\r\nIconButtonWithTooltip.propTypes = { tooltip: PropTypes.string };\r\n\r\nexport default memo(Toolbox);\r\n","import { memo, useContext, useMemo } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormSmartSearchableDropdown } from 'Generic/dropdown/components/SearchableDropdown';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { FormRadioGroup } from 'Generic/radiogroup/components/RadioGroup';\r\nimport { SM_6, XL_9 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_MAX_LENGTH_50, IS_NON_ZERO_POSITIVE_NUMERIC } from 'Commons/config/constants/Validators';\r\nimport { getOptionProps, labelFormatter, optionsFormatter } from 'Commons/helpers/utils/SDFormatter';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport bevLeftSidebarStyles\r\nfrom 'Commons/components/business/bev/components/setup/bevLeftSideBar/styles/BevLeftSidebarStyles';\r\nimport { isTwoDecimalPlaces } from 'Commons/helpers/utils/validator/Validator';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport PermissionContext from 'Commons/contexts/PermissionContext';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\nimport { UNIT_PERMISSION_KEYS } from 'External/containers/unit/form/config/UnitPermissionKeys';\r\nimport { COUNT_RADIO_LIST, COUNT_TYPE } from '../../../../config/Constants';\r\nimport { getUnitTypeApiConfig } from '../../../../config/ApiRequests';\r\nimport BevFormField from './BevFormFieldWrapper';\r\n\r\nconst useStyles = makeStyles(bevLeftSidebarStyles, { name: 'UnitFormComponent' });\r\n\r\nconst UnitFormComponent = ({\r\n setupModeCanvasRef,\r\n formProps: { values, setFieldValue } = {},\r\n currentFacility: { data: { id: facilityId } = {} },\r\n unitTypeList,\r\n requiredFieldsConfig,\r\n requiredFieldsConfig: {\r\n label: isLabelRequired = false,\r\n width: isWidthRequired = false,\r\n depth: isDepthRequired = false,\r\n unitType: isUnitTypeRequired = false,\r\n },\r\n labelToIdMap,\r\n addToUnitTypeMap,\r\n modifyLabelToIdMap,\r\n setUnitLabelBeforeDuplicateError,\r\n setShowDuplicateUnitLabelAlertDialog,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const handleFieldChange = ({ target: { name: property, value: newLabel } }) => {\r\n if (property === 'label') {\r\n const { label: prevLabel, id: idOfSelectedUnit } = values;\r\n const idOfAlreadyExistingUnit = labelToIdMap[newLabel];\r\n const labelAlreadyExists = idOfAlreadyExistingUnit && idOfAlreadyExistingUnit !== idOfSelectedUnit;\r\n if (labelAlreadyExists) {\r\n // formProps values will still have the old value(prevLabel). We store that here\r\n setUnitLabelBeforeDuplicateError(idOfSelectedUnit, prevLabel);\r\n setShowDuplicateUnitLabelAlertDialog(true);\r\n } else {\r\n modifyLabelToIdMap(newLabel, idOfSelectedUnit);\r\n }\r\n }\r\n setupModeCanvasRef.modifyEntityData(property, newLabel);\r\n };\r\n\r\n const handleUnitTypeChange = (e, value, data = {}) => {\r\n const { data: { dimension: { width = '', depth = '' } = {} } = {} } = data;\r\n if (value) addToUnitTypeMap(data);\r\n setFieldValue('bev.width', width, false);\r\n setFieldValue('bev.depth', depth, false);\r\n setupModeCanvasRef.modifyEntityData('unitType', value);\r\n setupModeCanvasRef.modifyEntityData('bev.width', width);\r\n setupModeCanvasRef.modifyEntityData('bev.depth', depth);\r\n };\r\n\r\n const unitTypeApiConfig = useMemo(() => getUnitTypeApiConfig(facilityId), [facilityId]);\r\n\r\n const requiredFieldsConfigLength = Object.keys(requiredFieldsConfig).length;\r\n\r\n const [{ id: unitTypeId } = {}] = unitTypeList;\r\n const { tempId: isNewlyAddedUnit, id: unitId } = values;\r\n const permission = useContext(PermissionContext);\r\n\r\n const { validatorsForWidthDepthAndAngleFields, unitTypePermissions } = useConstructor(() => ({\r\n validatorsForWidthDepthAndAngleFields: isTwoDecimalPlaces,\r\n permission,\r\n unitTypePermissions: hasPermission(permission, UNIT_PERMISSION_KEYS.UNIT_TYPE),\r\n }));\r\n\r\n const isReadOnly = () => !unitTypePermissions && unitId && !isNewlyAddedUnit;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nUnitFormComponent.propTypes = {\r\n currentFacility: PropTypes.object,\r\n setupModeCanvasRef: PropTypes.object,\r\n formProps: PropTypes.object,\r\n unitTypeList: PropTypes.array,\r\n requiredFieldsConfig: PropTypes.object.isRequired,\r\n labelToIdMap: PropTypes.object.isRequired,\r\n modifyLabelToIdMap: PropTypes.func.isRequired,\r\n addToUnitTypeMap: PropTypes.func.isRequired,\r\n setUnitLabelBeforeDuplicateError: PropTypes.func.isRequired,\r\n setShowDuplicateUnitLabelAlertDialog: PropTypes.func.isRequired,\r\n};\r\n\r\nUnitFormComponent.defaultProps = {\r\n setupModeCanvasRef: {},\r\n currentFacility: {},\r\n formProps: {},\r\n unitTypeList: {},\r\n};\r\n\r\nexport default memo(UnitFormComponent);\r\n","import { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { SM_6, XL_9 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_MAX_LENGTH_50 } from 'Commons/config/constants/Validators';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport bevLeftSidebarStyles\r\nfrom 'Commons/components/business/bev/components/setup/bevLeftSideBar/styles/BevLeftSidebarStyles';\r\nimport { isTwoDecimalPlaces } from 'Commons/helpers/utils/validator/Validator';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { memo } from 'react';\r\nimport { PLACEHOLDER_TYPE } from '../../../../config/Constants';\r\nimport BevFormField from './BevFormFieldWrapper';\r\n\r\nconst useStyles = makeStyles(bevLeftSidebarStyles, { name: 'PlaceholderFormComponent' });\r\nconst PlaceholderFormComponent = ({\r\n setupModeCanvasRef,\r\n formProps: { setFieldValue, values: { placeholderType } = {} } = {},\r\n requiredFieldsConfig,\r\n requiredFieldsConfig: {\r\n width: isWidthRequired = false,\r\n depth: isDepthRequired = false,\r\n label: isLabelRequired = false,\r\n placeholderType: isTypeRequired = false,\r\n },\r\n setRequiredFieldsConfig,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const placeholderTypeList = useConstructor(() => Object.values(PLACEHOLDER_TYPE));\r\n const { validatorsForWidthDepthAndAngleFields } = useConstructor(() => ({ validatorsForWidthDepthAndAngleFields: isTwoDecimalPlaces }));\r\n\r\n const requiredFieldsConfigLength = Object.keys(requiredFieldsConfig).length;\r\n\r\n const handleFieldChange = ({ target: { name: property, value: newLabel } = {} } = {}) => {\r\n setupModeCanvasRef.modifyEntityData(property, newLabel);\r\n };\r\n\r\n const handlePlaceholderTypeChange = (e, value) => {\r\n if (value !== PLACEHOLDER_TYPE.Others.value) {\r\n setRequiredFieldsConfig({\r\n type: true,\r\n width: true,\r\n depth: true,\r\n label: false,\r\n }, false);\r\n setFieldValue('label', value);\r\n setupModeCanvasRef.modifyEntityData('label', value);\r\n } else {\r\n setFieldValue('label', '', false);\r\n setupModeCanvasRef.modifyEntityData('label', '');\r\n setRequiredFieldsConfig(undefined, true);\r\n }\r\n setupModeCanvasRef.modifyEntityData('placeholderType', value);\r\n };\r\n\r\n return (\r\n \r\n \r\n {isLabelRequired && placeholderType === PLACEHOLDER_TYPE.Others.value && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n\r\nPlaceholderFormComponent.propTypes = {\r\n setupModeCanvasRef: PropTypes.object,\r\n formProps: PropTypes.object,\r\n requiredFieldsConfig: PropTypes.object.isRequired,\r\n setRequiredFieldsConfig: PropTypes.func,\r\n};\r\n\r\nPlaceholderFormComponent.defaultProps = {\r\n setupModeCanvasRef: {},\r\n formProps: {},\r\n};\r\n\r\nexport default memo(PlaceholderFormComponent);\r\n","import { memo, useState } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport bevLeftSidebarStyles\r\nfrom 'Commons/components/business/bev/components/setup/bevLeftSideBar/styles/BevLeftSidebarStyles';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport { DIRECTIONS } from '../../../../config/Constants';\r\n\r\nconst useStyles = makeStyles(bevLeftSidebarStyles, { name: 'BevLeftSideBar' });\r\n\r\nconst Add = ({\r\n formProps,\r\n activeDirection: activeDirectionInParent,\r\n onDirectionChange,\r\n handleAddingEntityOnPlusButtonClick,\r\n}) => {\r\n const { innerWidth } = window;\r\n const classes = useStyles();\r\n const { isValid } = formProps;\r\n const { UP, RIGHT, DOWN, LEFT } = DIRECTIONS;\r\n\r\n const [activeDirection, setActiveDirection] = useState(activeDirectionInParent);\r\n\r\n const onDirectionClick = direction => () => {\r\n const newDirection = activeDirection !== direction ? direction : null;\r\n setActiveDirection(newDirection);\r\n onDirectionChange(newDirection);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {localisable.bevDirectionButtonsDescription}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAdd.propTypes = {\r\n formProps: PropTypes.object.isRequired,\r\n activeDirection: PropTypes.string,\r\n onDirectionChange: PropTypes.func,\r\n handleAddingEntityOnPlusButtonClick: PropTypes.func.isRequired,\r\n};\r\n\r\nAdd.defaultProps = {\r\n activeDirection: DIRECTIONS.RIGHT,\r\n onDirectionChange: () => {},\r\n};\r\n\r\nexport default memo(Add);\r\n","/* eslint-disable no-underscore-dangle */\r\nimport { PureComponent } from 'react';\r\nimport { fabric } from 'fabric';\r\nimport { Grid, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport getUUID from 'Commons/helpers/utils/generateUUID';\r\nimport {\r\n getActualAngle,\r\n getConvertedWH,\r\n getEntitiesDataFromCanvas,\r\n getFontSize,\r\n getTooltip,\r\n reconvertWH,\r\n setTextAngleToZero,\r\n} from 'Commons/components/business/bev/utils/Utils';\r\nimport theme from 'Commons/theme/Theme';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport {\r\n CANVAS_BOUNDARY_CONFIG,\r\n CANVAS_CONFIG,\r\n CANVAS_DIMENSIONS,\r\n defaultNewObjXY,\r\n OBJECT_CONFIG,\r\n UNIT_CONFIG,\r\n} from '../../config/Config';\r\nimport {\r\n ACTIONS,\r\n DEFAULT_RENTAL_STATUS,\r\n DIRECTIONS,\r\n EVENT_TRIGGERED_BY_TYPE,\r\n POSITIONS,\r\n TYPE_OF_ENTITY,\r\n} from '../../config/Constants';\r\nimport rotateIcon from '../../../../../assets/images/RotateIcon.svg';\r\nimport bevStyles from '../../styles/BevStyles';\r\n\r\nclass BevSetup extends PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.canvasWrapperRef = React.createRef();\r\n this.state = { shouldMaskCanvas: false };\r\n }\r\n\r\n componentDidMount() {\r\n const { setupModeDimensions } = CANVAS_DIMENSIONS;\r\n const {\r\n props: {\r\n entities,\r\n formProps: {\r\n resetForm, initialValues,\r\n values: { bev: { level: currentLevel } = {} } = {},\r\n } = {},\r\n },\r\n canvasWrapperRef: { current: canvasWrapperRef },\r\n } = this;\r\n\r\n resetForm({\r\n ...initialValues,\r\n bev: {\r\n ...initialValues.bev,\r\n level: currentLevel,\r\n },\r\n });\r\n\r\n this.modifyFabricCanvasAndObjectPrototype();\r\n\r\n const canvasInstance = new fabric.Canvas('bevSetupCanvas', CANVAS_CONFIG);\r\n\r\n this.attachListenersToCanvasWrapper();\r\n\r\n this.attachEventsToCanvas(canvasInstance);\r\n\r\n const Group = fabric.util.createClass(fabric.Group);\r\n\r\n this.attachEventsToGroup(Group);\r\n\r\n canvasInstance.setDimensions(setupModeDimensions);\r\n\r\n this.labelTooltip = getTooltip(fabric);\r\n\r\n this.fabricCanvas = canvasInstance;\r\n this.Group = Group;\r\n this.entities = entities;\r\n this.drawCanvas();\r\n canvasWrapperRef.focus();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { formProps: { errors: { bev: prevErrorsInBev, label: prevLabelError } = {} } = {} } = prevProps;\r\n const {\r\n props: {\r\n formProps: { errors: { bev: errorsInBev, label: labelError } = {} } = {},\r\n setShouldDisableToolBox,\r\n } = {},\r\n state: { shouldMaskCanvas } = {},\r\n } = this;\r\n if (prevErrorsInBev !== errorsInBev || prevLabelError !== labelError) {\r\n const activeObject = this.fabricCanvas.getActiveObject();\r\n const { type } = activeObject || {};\r\n if ((errorsInBev || labelError) && !shouldMaskCanvas && activeObject && type === 'group') {\r\n this.setOrUnsetRedStrokeOnObject(activeObject, false, true);\r\n setShouldDisableToolBox(true);\r\n // eslint-disable-next-line react/no-did-update-set-state\r\n this.setState({ shouldMaskCanvas: true });\r\n } else if (!errorsInBev && !labelError && shouldMaskCanvas) {\r\n this.setOrUnsetRedStrokeOnObject(activeObject, true, true);\r\n setShouldDisableToolBox(false);\r\n // eslint-disable-next-line react/no-did-update-set-state\r\n this.setState({ shouldMaskCanvas: false });\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.fabricCanvas.clear();\r\n this.fabricCanvas.dispose();\r\n }\r\n\r\n modifyFabricCanvasAndObjectPrototype = () => {\r\n fabric.Object.prototype.objectCaching = false;\r\n // overrides top right corner icon to custom icon\r\n fabric.util.object.extend(fabric.Object.prototype, {\r\n ...OBJECT_CONFIG,\r\n _drawControl(control, ctx, _, left, top) {\r\n if (!this.isControlVisible(control)) {\r\n return;\r\n }\r\n const { cornerSize } = this;\r\n\r\n const customIconImage = new Image();\r\n if (control === 'tr') {\r\n customIconImage.src = rotateIcon;\r\n ctx.drawImage(customIconImage, left, top, cornerSize, cornerSize);\r\n }\r\n },\r\n });\r\n\r\n // overrides top right corner action to rotate and cursor to rotation cursor\r\n fabric.util.object.extend(fabric.Canvas.prototype, {\r\n _getActionFromCorner(target, corner) {\r\n if (!corner) {\r\n return ACTIONS.DRAG;\r\n }\r\n return ACTIONS.ROTATE;\r\n },\r\n getCornerCursor(corner, target, e) {\r\n if (this.actionIsDisabled(corner, target, e)) {\r\n return this.notAllowedCursor;\r\n }\r\n if (corner) {\r\n return this.rotationCursor;\r\n }\r\n return this.defaultCursor;\r\n },\r\n });\r\n }\r\n\r\n attachListenersToCanvasWrapper = () => {\r\n const {\r\n props: { handleKeyDown, handleKeyUp },\r\n canvasWrapperRef: { current: canvasWrapperRef },\r\n } = this;\r\n fabric.util.addListener(canvasWrapperRef, 'keydown', target => handleKeyDown(target, this.fabricCanvas));\r\n fabric.util.addListener(canvasWrapperRef, 'keyup', target => handleKeyUp(target, this.fabricCanvas));\r\n }\r\n\r\n clearFormValues = (additionalBevValues = {}) => {\r\n const {\r\n formProps: {\r\n values,\r\n setValues,\r\n initialValues: { bev: bevInitialValues } = {},\r\n values: { bev: { level: currentLevel } = {} } = {},\r\n } = {},\r\n } = this.props;\r\n setValues({\r\n ...values,\r\n id: undefined,\r\n label: '',\r\n width: undefined,\r\n depth: undefined,\r\n unitType: undefined,\r\n placeholderType: undefined,\r\n entityType: TYPE_OF_ENTITY.Unit.value,\r\n bev: { ...bevInitialValues, level: currentLevel, ...additionalBevValues },\r\n });\r\n }\r\n\r\n handleActiveSelectionType = (event) => {\r\n const { setRequiredFieldsConfig } = this.props;\r\n const { target: { angle } = {} } = event;\r\n setRequiredFieldsConfig({});\r\n this.clearFormValues({ angle });\r\n }\r\n\r\n attachEventsToCanvas = (canvasInstance) => {\r\n const {\r\n handlePanning,\r\n handleMouseMove, handleCanvasMouseUp,\r\n setRequiredFieldsConfig, addToLabelToIdMap,\r\n setUnitTypeList,\r\n isFacilityMigrated,\r\n } = this.props;\r\n\r\n canvasInstance.on('selection:created', (event = {}) => {\r\n const { target, target: { type } = {} } = event;\r\n this.controlObjectShadow(event);\r\n if (type === 'group') {\r\n this.loadEntityDataIntoForm(target);\r\n } else if (type === 'activeSelection') {\r\n this.handleActiveSelectionType(event);\r\n }\r\n });\r\n\r\n canvasInstance.on('selection:updated', (event) => {\r\n const { target, target: { type } = {} } = event;\r\n this.controlObjectShadow(event);\r\n if (type === 'group') {\r\n setUnitTypeList(undefined, true);\r\n this.loadEntityDataIntoForm(target);\r\n } else if (type === 'activeSelection') {\r\n this.handleActiveSelectionType(event);\r\n }\r\n });\r\n\r\n canvasInstance.on('object:rotating', ({ target } = {}) => this.handleRotation(target));\r\n\r\n canvasInstance.on('object:modified', (event) => {\r\n const { target: { type } = {}, transform: { action: eventActionType } = {} } = event;\r\n const eventToSend = type === 'activeSelection' && eventActionType === 'rotate' ? undefined : event;\r\n this.handleObjectModification(eventToSend, eventActionType);\r\n });\r\n\r\n canvasInstance.on('before:selection:cleared', (event) => {\r\n const { e: { type: triggeredBy } = {} } = event;\r\n\r\n if (triggeredBy === EVENT_TRIGGERED_BY_TYPE.MANUAL) return;\r\n\r\n const selection = this.fabricCanvas.getActiveObject();\r\n const { type } = selection;\r\n\r\n this.controlObjectShadow(null, true);\r\n setUnitTypeList(undefined, true, false);\r\n setRequiredFieldsConfig(undefined, true);\r\n this.clearFormValues();\r\n if (type === 'group') {\r\n const [{\r\n label: currentlyActObjLabel,\r\n tempId: currentActObjTempId,\r\n entityType,\r\n }] = getEntitiesDataFromCanvas(selection, undefined, isFacilityMigrated);\r\n if (currentActObjTempId && triggeredBy === 'mousedown'\r\n && entityType === TYPE_OF_ENTITY.Unit.value) { // 'e' would be undefined when this event (before:selection:cleared) is not fired as a result of a mousedown event. Because this event (before:selection:cleared) is also internally fired by fabric when canvas is being cleared ( i.e. calls discardActiveObject() in canvas.clear() which in-turn fires this event ) in which case 'e' would be 'undefined'\r\n addToLabelToIdMap(currentlyActObjLabel, currentActObjTempId);\r\n }\r\n }\r\n });\r\n\r\n canvasInstance.on('mouse:down', event => handlePanning(event, this.fabricCanvas));\r\n canvasInstance.on('mouse:move', event => handleMouseMove(event, this.fabricCanvas, fabric, this.labelTooltip));\r\n canvasInstance.on('mouse:up', () => handleCanvasMouseUp(this.fabricCanvas));\r\n }\r\n\r\n attachEventsToGroup = (Group) => {\r\n const { props: { handleEntityMouseOver, handleEntityMouseOut, moveTooltipWithPointer } } = this;\r\n\r\n Group.prototype.on('mouseup', ({ e } = {}) => {\r\n moveTooltipWithPointer({ e }, this.fabricCanvas, fabric, this.labelTooltip);\r\n // Loading of entity data into form on selection is handled in canvas's 'selection:created/updated' event listener\r\n });\r\n\r\n Group.prototype.on('mouseover', event => handleEntityMouseOver(event, this.fabricCanvas, this.labelTooltip));\r\n\r\n Group.prototype.on('mousedown', () => { this.labelTooltip.visible = false; });\r\n\r\n Group.prototype.on('mouseout', () => handleEntityMouseOut(this.fabricCanvas, this.labelTooltip));\r\n }\r\n\r\n getFabricCanvasInstance = () => (this.fabricCanvas);\r\n\r\n transformCoordsAndUpdateEntityData = (action = '', selectionAngle = 0) => {\r\n const { addToNewAndUpdatedEntitiesList } = this.props;\r\n const activeSelection = this.fabricCanvas.getActiveObject();\r\n const matrix = activeSelection.calcTransformMatrix();\r\n const activeObjects = this.fabricCanvas.getActiveObjects();\r\n activeObjects.forEach((activeObject) => {\r\n const objectPosition = new fabric.Point(activeObject.left, activeObject.top);\r\n const { x, y } = fabric.util.transformPoint(objectPosition, matrix);\r\n addToNewAndUpdatedEntitiesList(activeObject, true, {\r\n bev: {\r\n x,\r\n y,\r\n ...(action === 'rotate' && { angle: getActualAngle(activeObject.angle + selectionAngle) }),\r\n },\r\n });\r\n });\r\n this.fabricCanvas.renderAll();\r\n };\r\n\r\n handleObjectModification = (event, action = '') => {\r\n let objectWasRestricted = false;\r\n if (event) {\r\n objectWasRestricted = this.restrictObjToCanvas(event);\r\n }\r\n if (!objectWasRestricted) {\r\n const {\r\n addToNewAndUpdatedEntitiesList, checkAndHandleLabelOverflow,\r\n formProps: { setFieldValue } = {},\r\n } = this.props;\r\n let actionType = action;\r\n let entity;\r\n let objectsInActiveSelection;\r\n let selectionType;\r\n let selectionAngle;\r\n let x;\r\n let y;\r\n if (event) {\r\n const {\r\n transform: { action: eventActionType } = {},\r\n target,\r\n target: { type, angle, left: xFromEvent, top: yFromEvent } = {},\r\n } = event;\r\n actionType = eventActionType;\r\n entity = target;\r\n selectionType = type;\r\n selectionAngle = angle;\r\n x = xFromEvent;\r\n y = yFromEvent;\r\n } else {\r\n const activeObj = this.fabricCanvas.getActiveObject();\r\n const {\r\n type, angle = 0, left: xFromObject, top: yFromObject,\r\n _objects: objectsInSelection,\r\n } = activeObj || {};\r\n selectionType = type;\r\n selectionAngle = angle;\r\n x = xFromObject;\r\n y = yFromObject;\r\n entity = activeObj;\r\n objectsInActiveSelection = objectsInSelection;\r\n }\r\n if (actionType === 'rotate') {\r\n const propertyModified = 'bev.angle';\r\n if (selectionType === 'group') {\r\n this.modifyEntityData(propertyModified, selectionAngle);\r\n } else if (selectionType === 'activeSelection') {\r\n this.transformCoordsAndUpdateEntityData(actionType, selectionAngle);\r\n this.fabricCanvas.discardActiveObject({ type: EVENT_TRIGGERED_BY_TYPE.MANUAL });\r\n objectsInActiveSelection.forEach((object) => {\r\n checkAndHandleLabelOverflow(fabric, this.fabricCanvas, object, false);\r\n });\r\n const selection = new fabric.ActiveSelection(objectsInActiveSelection,\r\n { canvas: this.fabricCanvas });\r\n this.fabricCanvas.setActiveObject(selection);\r\n this.fabricCanvas.renderAll();\r\n }\r\n setFieldValue(propertyModified, getActualAngle(selectionAngle));\r\n } else if (event && actionType === 'drag') {\r\n const { target: { unitType } = {} } = event;\r\n const { setUnitTypeList } = this.props;\r\n if (selectionType === 'group') {\r\n addToNewAndUpdatedEntitiesList(entity, true, {\r\n bev: {\r\n x,\r\n y,\r\n },\r\n });\r\n } else if (selectionType === 'activeSelection') {\r\n this.transformCoordsAndUpdateEntityData(actionType);\r\n setFieldValue('ignore.multipleModified', true, false);\r\n }\r\n setUnitTypeList(unitType, false, false); // To trigger a render cycle so that the footer is re-rendered and the save button disable condition works as intended\r\n }\r\n }\r\n };\r\n\r\n loadEntityDataIntoForm = (activeObject) => {\r\n const { type, ...entity } = activeObject || {};\r\n if (type === 'group') {\r\n const {\r\n setUnitLabelBeforeDuplicateError, setUnitTypeList,\r\n isFacilityMigrated,\r\n formProps: { values, setValues },\r\n } = this.props;\r\n const [{\r\n id, tempId, label, unitType, entityType,\r\n placeholderType, bev,\r\n } = {}] = getEntitiesDataFromCanvas(entity, undefined, isFacilityMigrated);\r\n const isEntityUnit = entityType === TYPE_OF_ENTITY.Unit.value;\r\n const entityId = id || tempId;\r\n if (isEntityUnit) setUnitTypeList(unitType);\r\n setValues({\r\n ...values,\r\n id: entityId,\r\n tempId,\r\n label,\r\n unitType,\r\n bev,\r\n entityType,\r\n placeholderType,\r\n });\r\n if (isEntityUnit) setUnitLabelBeforeDuplicateError(entityId, label);\r\n }\r\n };\r\n\r\n\r\n /**\r\n * @description Updates the specified property of the entity on change in the form\r\n * @param {string} property The property to update\r\n * @param {*} value The property's new value\r\n * @param {fabric.Group} activeObject the active object on the canvas\r\n * @param {boolean} isSourceDuplicateUnitNumberAlertDialog Will convert Width/Height if true\r\n */\r\n modifyEntityData = (property, value, activeObject = null, isSourceDuplicateUnitNumberAlertDialog = false) => {\r\n const actObject = activeObject || this.fabricCanvas.getActiveObject();\r\n const { type } = actObject || {};\r\n if (actObject && type === 'group') {\r\n const {\r\n props: {\r\n addToNewAndUpdatedEntitiesList, checkAndHandleLabelOverflow,\r\n isFacilityMigrated,\r\n } = {},\r\n } = this;\r\n let propertyAndValueObject = {};\r\n const { _objects: [rectObj, textObj] } = actObject;\r\n switch (property) {\r\n case 'label':\r\n textObj.set('text', value);\r\n propertyAndValueObject = { label: value };\r\n break;\r\n case 'bev.angle': {\r\n const angle = getActualAngle(value);\r\n actObject.rotate(angle);\r\n textObj.set('angle', -angle);\r\n actObject.setCoords();\r\n const { left: x, top: y } = actObject;\r\n propertyAndValueObject = {\r\n bev: {\r\n angle,\r\n x,\r\n y,\r\n },\r\n };\r\n break;\r\n }\r\n case 'bev.width':\r\n case 'bev.depth': {\r\n const numericValue = convertToNumber(value);\r\n if (numericValue > 0) {\r\n const { width, height } = isSourceDuplicateUnitNumberAlertDialog\r\n ? {\r\n width: numericValue,\r\n height: numericValue,\r\n } : getConvertedWH(numericValue, numericValue, isFacilityMigrated);\r\n const { key, newValue } = (property === 'bev.width')\r\n ? {\r\n key: 'width',\r\n newValue: width,\r\n } : {\r\n key: 'height',\r\n newValue: height,\r\n };\r\n rectObj.set(key, newValue);\r\n rectObj.setCoords();\r\n actObject.set(key, newValue);\r\n actObject.setCoords();\r\n propertyAndValueObject = {\r\n bev: {\r\n [key === 'height' ? 'depth' : key]: isSourceDuplicateUnitNumberAlertDialog\r\n ? reconvertWH(numericValue, isFacilityMigrated) : numericValue,\r\n },\r\n };\r\n }\r\n break;\r\n }\r\n case 'unitType':\r\n actObject.set('unitType', value);\r\n propertyAndValueObject = { unitType: value };\r\n break;\r\n case 'placeholderType':\r\n actObject.set('placeholderType', value);\r\n propertyAndValueObject = { placeholderType: value };\r\n break;\r\n case 'bev.level':\r\n actObject.set('level', value);\r\n propertyAndValueObject = { bev: { level: value } };\r\n break;\r\n default:\r\n break;\r\n }\r\n checkAndHandleLabelOverflow(fabric, this.fabricCanvas, actObject, false);\r\n this.fabricCanvas.renderAll();\r\n addToNewAndUpdatedEntitiesList(actObject, true, propertyAndValueObject);\r\n }\r\n };\r\n\r\n /**\r\n * @description Applies/Removes shadow on canvas objects when selecting/deselecting them\r\n * @param {Object} e event object from the fired event\r\n * @param {boolean} clearAll If 'true', will remove shadow on all selected objects. Default value is 'false'.\r\n */\r\n controlObjectShadow = (e, clearAll = false) => {\r\n if (clearAll) {\r\n this.fabricCanvas.getActiveObjects().forEach((obj) => {\r\n obj.setShadow(null);\r\n obj.saveState();\r\n });\r\n } else if (e) {\r\n const { selected = [], deselected = [] } = e;\r\n if (selected.length) {\r\n selected.forEach((obj) => {\r\n obj.setShadow(theme.boxShadows[4]);\r\n obj.saveState();\r\n });\r\n }\r\n if (deselected.length) {\r\n deselected.forEach((obj) => {\r\n obj.setShadow(null);\r\n obj.saveState();\r\n });\r\n }\r\n }\r\n if (e) e.target.saveState();\r\n this.fabricCanvas.renderAll();\r\n };\r\n\r\n setOrUnsetRedStrokeOnObject = (object, shouldUnset = false, shouldCallRenderAll = false) => {\r\n const { type, ...actObject } = object || this.fabricCanvas.getActiveObject() || {};\r\n if (type === 'group') {\r\n const { _objects: [rectObj, textObj] } = actObject;\r\n const { RECT_CONFIG: { stroke: defaultStrokeColor } = {}, ERRED_COLOR } = UNIT_CONFIG;\r\n const strokeColorToSet = shouldUnset ? defaultStrokeColor : ERRED_COLOR;\r\n rectObj.set('stroke', strokeColorToSet);\r\n textObj.set('fill', strokeColorToSet);\r\n }\r\n if (shouldCallRenderAll) this.fabricCanvas.renderAll();\r\n };\r\n\r\n controlEntityHighlighting = (erredEntities, entityTypeToHighlight) => {\r\n if (!isObjWithKeys(erredEntities)) return;\r\n if (!entityTypeToHighlight) return;\r\n\r\n const canvasObjects = this.fabricCanvas.getObjects('group');\r\n const { ERRED_COLOR } = UNIT_CONFIG;\r\n canvasObjects.forEach((obj) => {\r\n const { id, tempId, entityType, _objects: [{ stroke } = {}] = [] } = obj;\r\n\r\n if (entityType !== entityTypeToHighlight) return;\r\n\r\n if (erredEntities[id || tempId]) {\r\n this.setOrUnsetRedStrokeOnObject(obj);\r\n } else if (stroke === ERRED_COLOR) {\r\n this.setOrUnsetRedStrokeOnObject(obj, true);\r\n }\r\n });\r\n this.fabricCanvas.renderAll();\r\n };\r\n\r\n handleRotation = (selectedObject) => {\r\n const { type, angle: selectionAngle, _objects: childObjects } = selectedObject;\r\n if (type === 'activeSelection') {\r\n childObjects.forEach((obj) => {\r\n setTextAngleToZero(this.fabricCanvas, obj, selectionAngle);\r\n });\r\n } else if (type === 'group') {\r\n setTextAngleToZero(this.fabricCanvas, selectedObject);\r\n }\r\n };\r\n\r\n /**\r\n * @description Restricts objects from being dragged and placed outside the canvas area\r\n */\r\n restrictObjToCanvas = (event) => {\r\n let restricted = false;\r\n const obj = event ? event.target : this.fabricCanvas.getActiveObject();\r\n const { left: objLeft, top: objTop, width: objWidth, height: objHeight } = obj.getBoundingRect();\r\n const {\r\n left: leftBoundary,\r\n top: topBoundary,\r\n width: boundaryWidth,\r\n height: boundaryHeight,\r\n } = this.canvasBoundary.getBoundingRect();\r\n const rightBoundary = leftBoundary + boundaryWidth;\r\n const bottomBoundary = topBoundary + boundaryHeight;\r\n if (objLeft < leftBoundary\r\n || objTop < topBoundary\r\n || objLeft + objWidth > rightBoundary\r\n || objTop + objHeight > bottomBoundary) {\r\n obj.set('angle', obj._stateProperties.angle);\r\n this.handleRotation(obj);\r\n obj.set('top', obj._stateProperties.top);\r\n obj.set('left', obj._stateProperties.left);\r\n restricted = true;\r\n }\r\n obj.setCoords();\r\n obj.saveState();\r\n return restricted;\r\n };\r\n\r\n rotate = (degree) => {\r\n const { formProps: { setFieldValue } } = this.props;\r\n const activeObj = this.fabricCanvas.getActiveObject();\r\n if (isObjWithKeys(activeObj)) {\r\n const { angle: currentAngle, type, _objects: objectInSelection } = activeObj;\r\n const newAngle = getActualAngle(currentAngle + degree);\r\n activeObj.rotate(newAngle);\r\n this.handleRotation(activeObj);\r\n activeObj.setCoords();\r\n const objectWasRestricted = this.restrictObjToCanvas();\r\n this.fabricCanvas.renderAll();\r\n if (!objectWasRestricted) {\r\n this.fabricCanvas.fire('object:modified', {\r\n target: type === 'group' ? activeObj : {\r\n type,\r\n _objects: objectInSelection,\r\n },\r\n transform: { action: 'rotate' },\r\n });\r\n setFieldValue('bev.angle', newAngle);\r\n }\r\n }\r\n };\r\n\r\n delete = () => {\r\n const {\r\n props: { handleDeletionOfEntityFromCanvas },\r\n state: { shouldMaskCanvas } = {},\r\n } = this;\r\n if (!shouldMaskCanvas) {\r\n const actObject = this.fabricCanvas.getActiveObject();\r\n const { type } = actObject || {};\r\n if (type !== 'group') return; // If a group of entities is selected, do not delete\r\n\r\n const activeObjects = this.fabricCanvas.getActiveObjects();\r\n this.fabricCanvas.remove(...activeObjects);\r\n this.fabricCanvas.discardActiveObject(undefined);\r\n this.fabricCanvas.renderAll();\r\n\r\n handleDeletionOfEntityFromCanvas(activeObjects);\r\n }\r\n };\r\n\r\n /**\r\n * @description Returns the new coordinates for the object as a fabric.Point class instance after calculating the coordinates by taking into consideration the object's bounding box's width and height\r\n * @param {fabric.Object} obj Canvas object\r\n * @param {string} position The alignment position: 'left', 'right', 'top', 'bottom', 'vCenter', 'hCenter'\r\n * @param {Object} selectionProperties Object with half of selection's width and height as keys\r\n * @return {fabric.Point} fabric.Point instance with new coordinates of the object\r\n */\r\n getNewShiftedCoordinates = (obj, position, selectionProperties) => {\r\n const { LEFT, RIGHT, TOP, BOTTOM, HCENTER, CENTER } = POSITIONS;\r\n const {\r\n selectionWidthHalf = 0,\r\n selectionHeightHalf = 0,\r\n } = selectionProperties;\r\n const { x: objInitialX, y: objInitialY } = obj.getPointByOrigin(CENTER, CENTER);\r\n const { width: objBoundingBoxWidth, height: objBoundingBoxHeight } = obj.getBoundingRect();\r\n const coords = {};\r\n if (position === LEFT) {\r\n coords.x = -selectionWidthHalf + objBoundingBoxWidth / 2;\r\n coords.y = objInitialY;\r\n } else if (position === RIGHT) {\r\n coords.x = selectionWidthHalf - objBoundingBoxWidth / 2;\r\n coords.y = objInitialY;\r\n } else if (position === TOP) {\r\n coords.x = objInitialX;\r\n coords.y = -selectionHeightHalf + objBoundingBoxHeight / 2;\r\n } else if (position === BOTTOM) {\r\n coords.x = objInitialX;\r\n coords.y = selectionHeightHalf - objBoundingBoxHeight / 2;\r\n } else if (position === HCENTER) {\r\n coords.x = 0;\r\n coords.y = objInitialY;\r\n } else {\r\n coords.x = objInitialX;\r\n coords.y = 0;\r\n }\r\n const { x, y } = coords;\r\n return new fabric.Point(x, y);\r\n };\r\n\r\n /**\r\n * @description Aligns objects within the selection to the position specified w.r.t the selection's center[0,0]\r\n * @param {string} position The alignment position: 'left', 'right', 'top', 'bottom', 'vCenter', 'hCenter'\r\n */\r\n align = (position) => {\r\n const { CENTER } = POSITIONS;\r\n const activeObject = this.fabricCanvas.getActiveObject();\r\n if (isObjWithKeys(activeObject)) {\r\n const { type, angle } = activeObject;\r\n if (type === 'activeSelection' && angle === 0) {\r\n const { width: selectionWidth, height: selectionHeight } = activeObject.getBoundingRect();\r\n\r\n const selectionWidthHalf = (selectionWidth / 2);\r\n const selectionHeightHalf = (selectionHeight / 2);\r\n\r\n activeObject.forEachObject((obj) => {\r\n const newCoords = this.getNewShiftedCoordinates(obj, position,\r\n {\r\n selectionWidthHalf,\r\n selectionHeightHalf,\r\n });\r\n obj.setPositionByOrigin(newCoords, CENTER, CENTER);\r\n obj.setCoords();\r\n });\r\n this.fabricCanvas.renderAll();\r\n this.transformCoordsAndUpdateEntityData();\r\n }\r\n }\r\n };\r\n\r\n zoom = (increment, shouldReset = false) => {\r\n const { canvasWrapperRef: { current: canvasWrapperRef }, fabricCanvas, props: { zoomCanvas } = {} } = this;\r\n zoomCanvas(increment, canvasWrapperRef, fabricCanvas, shouldReset, fabric);\r\n };\r\n\r\n getNewObjectXY = () => {\r\n const { getActiveDirection } = this.props;\r\n\r\n const activeObj = this.fabricCanvas.getActiveObject();\r\n\r\n const direction = getActiveDirection();\r\n\r\n if (activeObj && direction) {\r\n const { UP, RIGHT, DOWN } = DIRECTIONS;\r\n\r\n const zoom = this.fabricCanvas.getZoom();\r\n\r\n const {\r\n width: selectedObjWidth = 0,\r\n height: selectedObjHeight = 0,\r\n } = activeObj.getBoundingRect();\r\n\r\n const { x, y } = activeObj.getPointByOrigin('center', 'center');\r\n\r\n const positiveOrNegative = (direction === RIGHT || direction === DOWN) ? 1 : -1;\r\n\r\n let newX = x;\r\n let newY = y;\r\n\r\n switch (direction) {\r\n case UP:\r\n case DOWN: {\r\n newY = y + positiveOrNegative * (selectedObjHeight / zoom + UNIT_CONFIG.PADDING);\r\n // Divide by zoom so that the calculation is consistent when zoomed in/out\r\n break;\r\n }\r\n default: {\r\n newX = x + positiveOrNegative * (selectedObjWidth / zoom + UNIT_CONFIG.PADDING);\r\n break;\r\n }\r\n }\r\n return new fabric.Point(newX, newY);\r\n }\r\n const { x, y } = defaultNewObjXY;\r\n return new fabric.Point(x, y);\r\n };\r\n\r\n /**\r\n * @description Adds a entity to the canvas\r\n * @param {object} entity The entity object to be added\r\n * @param {boolean} isAddByClick Default false. Used to determine if the add was from existing data or from the click of an add button. If from an add button, the added entity is made active on the canvas\r\n */\r\n addEntity(entity, isAddByClick = false) {\r\n if (entity) {\r\n const { CENTER, LEFT, TOP } = POSITIONS;\r\n let tempId;\r\n let originX = CENTER;\r\n let originY = CENTER;\r\n\r\n const {\r\n Group,\r\n props: {\r\n addToLabelToIdMap,\r\n isFacilityMigrated,\r\n addToNewAndUpdatedEntitiesList,\r\n checkAndHandleLabelOverflow,\r\n zoomValue,\r\n },\r\n } = this;\r\n const {\r\n id,\r\n label,\r\n unitType,\r\n placeholderType,\r\n entityType,\r\n rentalStatus = DEFAULT_RENTAL_STATUS,\r\n bev: {\r\n x = defaultNewObjXY.x,\r\n y = defaultNewObjXY.y,\r\n width: bevWidth,\r\n depth: bevHeight,\r\n angle = 0,\r\n level,\r\n } = {},\r\n } = entity;\r\n\r\n if (!(x && y && bevWidth && bevHeight)) return; // If x, y, width or height are 0, do not add to canvas\r\n\r\n const { width, height } = getConvertedWH(bevWidth, bevHeight, isFacilityMigrated);\r\n\r\n const isEntityUnit = entityType === TYPE_OF_ENTITY.Unit.value;\r\n const isEntityPlaceholder = entityType === TYPE_OF_ENTITY.Placeholder.value;\r\n\r\n let newCoords;\r\n\r\n const activeObj = this.fabricCanvas.getActiveObject();\r\n\r\n if (isAddByClick) {\r\n newCoords = this.getNewObjectXY();\r\n const { getActiveDirection } = this.props;\r\n const direction = getActiveDirection();\r\n const cHeight = this.fabricCanvas.getHeight();\r\n const cWidth = this.fabricCanvas.getWidth();\r\n\r\n tempId = getUUID();\r\n\r\n if (direction && activeObj) { // Restricts adding to canvas area\r\n const { x: newX, y: newY } = newCoords;\r\n if ((newX - width / 2) < 0\r\n || (newX + width / 2) > cWidth\r\n || (newY + height / 2) > cHeight\r\n || (newY - height / 2) < 0) {\r\n return;\r\n }\r\n } else { // To add in the top left corner with default X,Y when no direction and entity is selected\r\n originX = LEFT;\r\n originY = TOP;\r\n }\r\n }\r\n\r\n const rect = new fabric.Rect({\r\n fill: UNIT_CONFIG.DEFAULT_BACKGROUND,\r\n width,\r\n height,\r\n strokeWidth: 0.7,\r\n ...UNIT_CONFIG.RECT_CONFIG,\r\n });\r\n\r\n const entityLabel = new fabric.Text(label, {\r\n ...UNIT_CONFIG.LABEL_CONFIG,\r\n fill: theme.palette.black[700],\r\n fontSize: getFontSize(zoomValue),\r\n });\r\n const entityObj = new Group([rect], {\r\n ...(id && { id }),\r\n ...(tempId && { tempId }),\r\n entityType,\r\n left: convertToNumber(isAddByClick ? newCoords.x : x),\r\n top: convertToNumber(isAddByClick ? newCoords.y : y),\r\n width,\r\n height,\r\n angle: isAddByClick && !activeObj ? 0 : convertToNumber(angle),\r\n stateProperties: ['angle', 'top', 'left'],\r\n level,\r\n ...(isEntityUnit && {\r\n unitType,\r\n rentalStatus,\r\n }),\r\n ...(isEntityPlaceholder && { placeholderType }),\r\n originX: LEFT,\r\n originY: TOP,\r\n });\r\n\r\n entityObj.add(entityLabel);\r\n\r\n entityObj.saveState();\r\n\r\n if (isAddByClick) {\r\n entityObj.setPositionByOrigin(newCoords, originX, originY);\r\n\r\n this.fabricCanvas.setActiveObject(entityObj); // This fires selection:updated event, which is handled above in the constructor. The loading of this entity's data into form is taken care of in the event handler. Since this entity is set as active object, the fired event's target will be this entity itself\r\n\r\n if (isEntityUnit) addToLabelToIdMap(label, tempId);\r\n\r\n addToNewAndUpdatedEntitiesList(entityObj);\r\n const { canvasWrapperRef: { current: canvasWrapperRef } } = this;\r\n canvasWrapperRef.focus();\r\n }\r\n\r\n setTextAngleToZero(this.fabricCanvas, entityObj);\r\n\r\n this.fabricCanvas.add(entityObj);\r\n checkAndHandleLabelOverflow(fabric, this.fabricCanvas, entityObj, isAddByClick, zoomValue);\r\n }\r\n }\r\n\r\n drawCanvas() {\r\n const { entities, props: { zoomValue } } = this;\r\n const boundaryRect = new fabric.Rect(CANVAS_BOUNDARY_CONFIG);\r\n this.fabricCanvas.add(boundaryRect);\r\n this.canvasBoundary = boundaryRect;\r\n this.fabricCanvas.add(this.labelTooltip);\r\n if (entities) {\r\n entities.forEach((entity) => {\r\n this.addEntity(entity);\r\n });\r\n }\r\n this.fabricCanvas.bringToFront(this.labelTooltip);\r\n this.fabricCanvas.setZoom(zoomValue);\r\n this.fabricCanvas.renderAll();\r\n }\r\n\r\n render() {\r\n const { props: { classes } = {}, state: { shouldMaskCanvas } = {} } = this;\r\n return (\r\n <>\r\n {\r\n shouldMaskCanvas && (\r\n \r\n )\r\n }\r\n
\r\n \r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nBevSetup.propTypes = {\r\n formProps: PropTypes.object,\r\n entities: PropTypes.array,\r\n zoomValue: PropTypes.number,\r\n getActiveDirection: PropTypes.func,\r\n addToNewAndUpdatedEntitiesList: PropTypes.func,\r\n handleDeletionOfEntityFromCanvas: PropTypes.func,\r\n handlePanning: PropTypes.func,\r\n handleKeyDown: PropTypes.func,\r\n handleKeyUp: PropTypes.func,\r\n handleMouseMove: PropTypes.func,\r\n handleCanvasMouseUp: PropTypes.func,\r\n addToLabelToIdMap: PropTypes.func.isRequired,\r\n setUnitLabelBeforeDuplicateError: PropTypes.func.isRequired,\r\n setUnitTypeList: PropTypes.func.isRequired,\r\n setRequiredFieldsConfig: PropTypes.func.isRequired,\r\n handleEntityMouseOver: PropTypes.func,\r\n handleEntityMouseOut: PropTypes.func,\r\n checkAndHandleLabelOverflow: PropTypes.func.isRequired,\r\n moveTooltipWithPointer: PropTypes.func.isRequired,\r\n isFacilityMigrated: PropTypes.bool,\r\n};\r\n\r\nBevSetup.defaultProps = {\r\n formProps: {},\r\n entities: [],\r\n getActiveDirection: () => {\r\n },\r\n addToNewAndUpdatedEntitiesList: () => {\r\n },\r\n handleDeletionOfEntityFromCanvas: () => {\r\n },\r\n isFacilityMigrated: false,\r\n};\r\n\r\nexport default withStyles(bevStyles)(BevSetup);\r\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik0wIDJIMlYwSDhWMkMxMC42NTIyIDIgMTMuMTk1NyAzLjA1MzU3IDE1LjA3MTEgNC45Mjg5M0MxNi45NDY0IDYuODA0MyAxOCA5LjM0Nzg0IDE4IDEySDIwVjE4SDE4VjIwSDE2VjE4SDE0VjEySDE2QzE2IDkuODc4MjcgMTUuMTU3MSA3Ljg0MzQ0IDEzLjY1NjkgNi4zNDMxNUMxMi4xNTY2IDQuODQyODUgMTAuMTIxNyA0IDggNFY2SDJWNEgwVjJaTTE2IDE0VjE2SDE4VjE0SDE2Wk00IDJWNEg2VjJINFoiIGZpbGw9IiMyRDFCMzgiIGZpbGwtb3BhY2l0eT0iMC43Ii8+DQo8L3N2Zz4NCg==\"","/* eslint-disable no-nested-ternary */\r\n/* eslint-disable no-underscore-dangle */\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport {\r\n BOARD,\r\n RENTAL_AVAILABILITY_STATUS_BOARD_RESERVED_ITEM_ID,\r\n} from 'External/containers/facilityConfiguration/components/bevColorSetup/components/config/Constants';\r\nimport { getConvertedWH, getUnitDetails } from 'Commons/components/business/bev/utils/Utils';\r\nimport { Collection } from 'react-virtualized';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport bevViewStyles from 'Commons/components/business/bev/components/view/styles/BevViewStyles';\r\nimport { memo, useEffect, useRef } from 'react';\r\nimport {\r\n DASHBOARD_TYPE,\r\n EMPTY_FIELD_TEXT,\r\n EMPTY_FUNC,\r\n RESERVATION_STATUS,\r\n SOURCE,\r\n} from 'Commons/config/constants/Constants';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { VACANT_AVAILABILITY_STATUS } from 'External/containers/unit/form/config/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport Chip from 'Commons/components/generic/chip/components/Chip';\r\nimport { AVAILABILITY_STATUS } from 'Commons/components/business/filtersAndSorts/components/unitFilter/config/Constants';\r\nimport { GATE_STATUS } from 'External/containers/facilityConfiguration/config/GateConfig';\r\nimport { RENTAL_STATUS, TRIANGLE_POSITIONS, TRIANGLE_TYPES, TYPE_OF_ENTITY } from '../../config/Constants';\r\nimport { fetchReservation, fetchTenant } from '../../config/ApiRequests';\r\n\r\nconst useStyles = makeStyles(bevViewStyles);\r\n\r\nconst Triangle = ({\r\n corner,\r\n unitId,\r\n entityBevData,\r\n zoomValue,\r\n isFacilityMigrated = false,\r\n}) => {\r\n const classes = useStyles({ entityBevData, zoomValue, isFacilityMigrated });\r\n const {\r\n BOTTOM_RIGHT,\r\n TOP_LEFT,\r\n TOP_RIGHT,\r\n } = TRIANGLE_POSITIONS;\r\n const {\r\n BOTTOMRIGHT,\r\n TOPLEFT,\r\n TOPRIGHT,\r\n } = TRIANGLE_TYPES;\r\n\r\n let triangleType;\r\n\r\n switch (corner) {\r\n case BOTTOM_RIGHT:\r\n triangleType = BOTTOMRIGHT;\r\n break;\r\n case TOP_RIGHT:\r\n triangleType = TOPRIGHT;\r\n break;\r\n case TOP_LEFT:\r\n triangleType = TOPLEFT;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nTriangle.defaultProps = { isFacilityMigrated: false };\r\n\r\nTriangle.propTypes = {\r\n corner: PropTypes.string,\r\n unitId: PropTypes.string,\r\n entityBevData: PropTypes.object,\r\n zoomValue: PropTypes.number,\r\n isFacilityMigrated: PropTypes.bool,\r\n};\r\n\r\nconst TriangleMemoized = memo(Triangle);\r\n\r\nconst Entity = (props) => {\r\n const {\r\n data,\r\n handleUnitClick,\r\n zoomValue,\r\n isFacilityMigrated = false,\r\n isSearchedUnit,\r\n unitTypeData,\r\n unitBevData = [],\r\n unitIdTenantMapper = {},\r\n unitIdReservationMapper = {},\r\n } = props;\r\n const {\r\n id,\r\n label,\r\n entityType,\r\n bev,\r\n bev: {\r\n x: bevX,\r\n y: bevY,\r\n width: bevWidth,\r\n depth: bevHeight,\r\n color: {\r\n [BOARD.LOCK_OVERLOCK_STATUS]: lockOverlockBoard,\r\n [BOARD.MAINTENANCE_ACTIVITY]: maintenanceActivityBoard,\r\n [BOARD.DELINQUENCY_STATUS]: delinquencyStatusBoard,\r\n } = {},\r\n } = {},\r\n unitType,\r\n rentalStatus,\r\n } = data || {};\r\n\r\n const {\r\n width,\r\n depth,\r\n standardMonthlyRate,\r\n currentRate,\r\n nextRentAssessmentDate,\r\n unitGateAccessStatus,\r\n unitAvailabilityStatus,\r\n categoryResult,\r\n unitComments,\r\n tenantBalance,\r\n firstName,\r\n lastName,\r\n lastPaidDate,\r\n lastPaidAmount,\r\n reservationCode,\r\n reservationStatus,\r\n reservedFirstName,\r\n reservedLastName,\r\n } = getUnitDetails(id, unitType, unitTypeData, unitBevData, unitIdTenantMapper, unitIdReservationMapper);\r\n\r\n const { color: bottomRightColor } = lockOverlockBoard || {};\r\n const { color: topRightColor } = maintenanceActivityBoard || {};\r\n const { color: topLeftColor } = delinquencyStatusBoard || {};\r\n const classes = useStyles({ entityBevData: bev, zoomValue, isFacilityMigrated });\r\n\r\n const isEntityUnit = entityType === TYPE_OF_ENTITY.Unit.value;\r\n\r\n if (!(bevX && bevY && bevWidth && bevHeight)) return null;\r\n\r\n const renderTriangles = () => {\r\n const {\r\n BOTTOM_RIGHT,\r\n TOP_LEFT,\r\n TOP_RIGHT,\r\n } = TRIANGLE_POSITIONS;\r\n\r\n const triangles = [];\r\n\r\n const commonProps = {\r\n unitId: id,\r\n entityBevData: bev,\r\n zoomValue,\r\n isFacilityMigrated,\r\n };\r\n\r\n if (bottomRightColor) {\r\n triangles.push(\r\n ,\r\n );\r\n }\r\n if (topRightColor) {\r\n triangles.push(\r\n ,\r\n );\r\n }\r\n if (topLeftColor) {\r\n triangles.push(\r\n ,\r\n );\r\n }\r\n return triangles;\r\n };\r\n\r\n const getChipData = () => {\r\n const chipLabel = (reservationStatus === RESERVATION_STATUS.Reserved) ? reservationStatus\r\n : ((unitGateAccessStatus === GATE_STATUS.Locked.value) ? (localisable.gateLocked)\r\n : ((unitAvailabilityStatus === AVAILABILITY_STATUS.Unavailable.value) ? unitAvailabilityStatus : rentalStatus));\r\n\r\n const chipValue = (reservationStatus === RESERVATION_STATUS.Reserved) ? reservationStatus\r\n : ((unitGateAccessStatus === GATE_STATUS.Locked.value) ? (localisable.gateLocked)\r\n : ((unitAvailabilityStatus === AVAILABILITY_STATUS.Unavailable.value) ? unitAvailabilityStatus : rentalStatus));\r\n\r\n return {\r\n size: 'small',\r\n label: chipLabel,\r\n value: chipValue,\r\n };\r\n };\r\n\r\n const tooltipContent = () => (\r\n \r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.unitType}\r\n \r\n \r\n \r\n {width} X {depth} ({categoryResult})\r\n \r\n \r\n \r\n \r\n {\r\n rentalStatus === RENTAL_STATUS.RENTED ? (\r\n \r\n {localisable.currentRate}\r\n \r\n ) : (\r\n \r\n {localisable.standardRate}\r\n \r\n )\r\n }\r\n \r\n \r\n {\r\n rentalStatus === RENTAL_STATUS.RENTED ? (\r\n `$${currentRate}`\r\n ) : (\r\n `$${standardMonthlyRate}`\r\n )\r\n }\r\n \r\n \r\n {\r\n rentalStatus === RENTAL_STATUS.RENTED && (\r\n \r\n \r\n \r\n {localisable.nextBillingDate}\r\n \r\n \r\n \r\n {nextRentAssessmentDate}\r\n \r\n \r\n )\r\n }\r\n \r\n {reservationStatus === RESERVATION_STATUS.Reserved && rentalStatus === RENTAL_STATUS.VACANT\r\n && (\r\n <>\r\n \r\n \r\n {localisable.reservedBy}\r\n \r\n \r\n \r\n {reservedFirstName} {reservedLastName}\r\n \r\n \r\n \r\n {localisable.reservationCode}\r\n \r\n \r\n \r\n {reservationCode}\r\n \r\n \r\n )\r\n }\r\n {rentalStatus === RENTAL_STATUS.RENTED\r\n && (\r\n \r\n \r\n \r\n \r\n {localisable.tenantName}\r\n \r\n \r\n \r\n {firstName}{lastName}\r\n \r\n \r\n \r\n \r\n \r\n {localisable.tenantBalance}\r\n \r\n \r\n \r\n {`$${tenantBalance}`}\r\n \r\n \r\n \r\n )\r\n }\r\n {rentalStatus === RENTAL_STATUS.RENTED\r\n && (\r\n<>\r\n \r\n \r\n {localisable.lastPaid}\r\n \r\n \r\n \r\n {(lastPaidDate && lastPaidAmount) ? (`${lastPaidDate} / $${lastPaidAmount}`) : '-'}\r\n \r\n\r\n )\r\n }\r\n \r\n \r\n {localisable.unitComments}\r\n \r\n \r\n \r\n {unitComments || EMPTY_FIELD_TEXT}\r\n \r\n \r\n );\r\n\r\n\r\n const renderEntityLabel = () => (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n
\r\n );\r\n\r\n return (\r\n handleUnitClick(data) }}\r\n >\r\n {renderEntityLabel()}\r\n {isEntityUnit && renderTriangles()}\r\n \r\n );\r\n};\r\n\r\nEntity.defaultProps = {\r\n isFacilityMigrated: false,\r\n handleUnitClick: EMPTY_FUNC,\r\n isSearchedUnit: false,\r\n};\r\n\r\nEntity.propTypes = {\r\n data: PropTypes.object,\r\n handleUnitClick: PropTypes.func,\r\n zoomValue: PropTypes.number,\r\n isFacilityMigrated: PropTypes.bool,\r\n isSearchedUnit: PropTypes.bool,\r\n unitTypeData: PropTypes.object,\r\n unitBevData: PropTypes.array,\r\n unitIdTenantMapper: PropTypes.object,\r\n unitIdReservationMapper: PropTypes.object,\r\n};\r\n\r\n\r\nconst BevView = (props) => {\r\n const classes = useStyles();\r\n const {\r\n history,\r\n onAction,\r\n zoomValue,\r\n entities = [],\r\n canvasGridRef,\r\n setShowLoader,\r\n setSnackbarProps,\r\n isFacilityMigrated = false,\r\n currentFacility: { data: { id: fid } = {} } = {},\r\n currentAccountId: { data: { id: accountId } = {} } = {},\r\n unitBev: {\r\n data: {\r\n data: unitBevData = [],\r\n relationalData: { unitType: unitTypeData = {} } = {},\r\n } = {},\r\n } = {},\r\n scrollToIndex,\r\n unitIdTenantMapper = {},\r\n unitIdReservationMapper = {},\r\n } = props;\r\n\r\n const {\r\n clientWidth: containerWidth = 0,\r\n clientHeight: containerHeight = 0,\r\n } = canvasGridRef || {};\r\n\r\n const collectionRef = useRef(null);\r\n const EntityComponent = useConstructor(() => memo(Entity));\r\n\r\n useEffect(() => {\r\n const { current: collectionRefObj } = collectionRef;\r\n if (collectionRefObj) {\r\n collectionRefObj.recomputeCellSizesAndPositions();\r\n }\r\n }, [zoomValue]);\r\n\r\n const handleUnitClick = (unit) => {\r\n let state;\r\n\r\n const {\r\n id: unitId,\r\n label,\r\n rentalStatus,\r\n unitType: unitTypeId,\r\n availabilityStatus,\r\n bev: { color: { [BOARD.RENTAL_AVAILABILITY_STATUS]: { itemId: reservedColorItemId } = {} } = {} } = {},\r\n } = unit;\r\n\r\n if (availabilityStatus === VACANT_AVAILABILITY_STATUS.Unavailable.value) {\r\n history.push(buildUrl('unitEdit', { fid, id: unitId }, DASHBOARD_TYPE.EXTERNAL, accountId));\r\n } else if (rentalStatus === RENTAL_STATUS.VACANT) {\r\n const { value: { description } = {} } = unitTypeData[unitTypeId];\r\n const isUnitReserved = reservedColorItemId === RENTAL_AVAILABILITY_STATUS_BOARD_RESERVED_ITEM_ID;\r\n\r\n const url = buildUrl('moveIn', { fid }, DASHBOARD_TYPE.EXTERNAL, accountId);\r\n\r\n let detail = {\r\n id: unitId,\r\n label,\r\n rentalStatus,\r\n unitType: { id: unitTypeId, value: { description } },\r\n };\r\n\r\n if (isUnitReserved) {\r\n setShowLoader(true);\r\n fetchReservation(onAction, unitId, (_, response) => {\r\n setShowLoader(false);\r\n const { data: [{ id: reservationId, ...restReservationData } = {}] = [] } = response || {};\r\n if (reservationId) {\r\n detail = {\r\n id: reservationId,\r\n ...restReservationData,\r\n unitType: detail.unitType,\r\n unitId,\r\n unit: {\r\n id: unitId,\r\n label,\r\n },\r\n };\r\n state = {\r\n activeStep: 0,\r\n detail,\r\n source: SOURCE.reservation.value,\r\n };\r\n history.push(url, state);\r\n } else {\r\n setSnackbarProps(true, localisable.reservationListEmpty, 'error');\r\n }\r\n }, 1);\r\n } else {\r\n state = {\r\n activeStep: 0,\r\n detail,\r\n source: SOURCE.unit.value,\r\n };\r\n history.push(url, state);\r\n }\r\n } else {\r\n setShowLoader(true);\r\n fetchTenant(onAction, unitId, (_, response) => {\r\n setShowLoader(false);\r\n const { data: [{ id } = {}] = [] } = response || {};\r\n if (id) {\r\n history.push(buildUrl('tenantView', { fid, id }, DASHBOARD_TYPE.EXTERNAL, accountId));\r\n } else {\r\n setSnackbarProps(true, localisable.tenantNotFound, 'error');\r\n }\r\n });\r\n }\r\n };\r\n\r\n // eslint-disable-next-line react/prop-types\r\n const addEntity = ({ index, key }) => {\r\n const { [index]: entityData = {} } = entities;\r\n const isSearchedUnit = index === scrollToIndex;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n const cellSizeAndPositionGetter = ({ index }) => {\r\n const { [index]: entity = {} } = entities;\r\n const {\r\n bev: {\r\n x = 0,\r\n y = 0,\r\n width: bevWidth = 0,\r\n depth: bevHeight = 0,\r\n } = {},\r\n } = entity;\r\n\r\n const {\r\n width,\r\n height,\r\n } = getConvertedWH(bevWidth, bevHeight, isFacilityMigrated);\r\n return {\r\n height: height * zoomValue,\r\n width: width * zoomValue,\r\n x: x * zoomValue,\r\n y: y * zoomValue,\r\n };\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nBevView.propTypes = {\r\n entities: PropTypes.array,\r\n zoomValue: PropTypes.number,\r\n history: PropTypes.object.isRequired,\r\n onAction: PropTypes.func.isRequired,\r\n setSnackbarProps: PropTypes.func.isRequired,\r\n setShowLoader: PropTypes.func.isRequired,\r\n currentFacility: PropTypes.object.isRequired,\r\n currentAccountId: PropTypes.object,\r\n canvasGridRef: PropTypes.object,\r\n unitBev: PropTypes.object,\r\n isFacilityMigrated: PropTypes.bool,\r\n scrollToIndex: PropTypes.number,\r\n unitIdTenantMapper: PropTypes.object,\r\n unitIdReservationMapper: PropTypes.object,\r\n};\r\n\r\nBevView.defaultProps = {\r\n entities: [],\r\n unitBev: {},\r\n isFacilityMigrated: false,\r\n};\r\n\r\nexport default BevView;\r\n","import {\r\n calcTriangleDimension,\r\n getAppropriateTextColor,\r\n getConvertedWH,\r\n getFontSize,\r\n} from 'Commons/components/business/bev/utils/Utils';\r\nimport { BOARD } from 'External/containers/facilityConfiguration/components/bevColorSetup/components/config/Constants';\r\nimport { UNIT_CONFIG } from 'Commons/components/business/bev/config/Config';\r\nimport { TRIANGLE_POSITIONS } from 'Commons/components/business/bev/config/Constants';\r\n\r\nconst getTriangleStyle = ({ entityBevData = {}, isFacilityMigrated = false }, trianglePosition) => {\r\n const {\r\n TOP_LEFT,\r\n TOP_RIGHT,\r\n BOTTOM_RIGHT,\r\n } = TRIANGLE_POSITIONS;\r\n const {\r\n width: bevWidth,\r\n depth: bevHeight,\r\n color: {\r\n [BOARD.LOCK_OVERLOCK_STATUS]: lockOverlockBoard,\r\n [BOARD.MAINTENANCE_ACTIVITY]: maintenanceActivityBoard,\r\n [BOARD.DELINQUENCY_STATUS]: delinquencyStatusBoard,\r\n } = {},\r\n\r\n } = entityBevData;\r\n\r\n const { color: bottomRightColor } = lockOverlockBoard || {};\r\n const { color: topRightColor } = maintenanceActivityBoard || {};\r\n const { color: topLeftColor } = delinquencyStatusBoard || {};\r\n\r\n const { width: unitWidth, height: unitHeight } = getConvertedWH(bevWidth, bevHeight, isFacilityMigrated);\r\n const triangleSideDimension = calcTriangleDimension(unitWidth, unitHeight);\r\n if (bottomRightColor && trianglePosition === BOTTOM_RIGHT) {\r\n return {\r\n right: 0,\r\n bottom: 0,\r\n borderWidth: `0 0 ${triangleSideDimension}px ${triangleSideDimension}px`,\r\n borderColor: `transparent transparent ${bottomRightColor} transparent`,\r\n };\r\n }\r\n if (topRightColor && trianglePosition === TOP_RIGHT) {\r\n return {\r\n right: 0,\r\n top: 0,\r\n borderWidth: `0 ${triangleSideDimension}px ${triangleSideDimension}px 0`,\r\n borderColor: `transparent ${topRightColor} transparent transparent`,\r\n };\r\n }\r\n if (topLeftColor && trianglePosition === TOP_LEFT) {\r\n return {\r\n left: 0,\r\n top: 0,\r\n borderWidth: `${triangleSideDimension}px ${triangleSideDimension}px 0 0`,\r\n borderColor: `${topLeftColor} transparent transparent transparent`,\r\n };\r\n }\r\n return {};\r\n};\r\n\r\nconst bevViewStyles = theme => ({\r\n collection: { outline: 'none' },\r\n entity: ({ entityBevData = {}, zoomValue, isFacilityMigrated = false }) => {\r\n const {\r\n x: bevX,\r\n y: bevY,\r\n width: bevWidth,\r\n depth: bevHeight,\r\n angle = 0,\r\n color: { [BOARD.RENTAL_AVAILABILITY_STATUS]: { color: mainColor = UNIT_CONFIG.DEFAULT_BACKGROUND } = {} } = {},\r\n } = entityBevData;\r\n const { width, height } = getConvertedWH(bevWidth, bevHeight, isFacilityMigrated);\r\n return (\r\n {\r\n backgroundColor: mainColor,\r\n color: getAppropriateTextColor(mainColor),\r\n width,\r\n height,\r\n position: 'absolute',\r\n left: bevX * zoomValue,\r\n top: bevY * zoomValue,\r\n cursor: 'pointer',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n WebkitTransform: `scale(${zoomValue}) rotate(${angle}deg)`,\r\n WebkitTransformOrigin: 'left top',\r\n border: `0.2px solid ${mainColor.slice(0, 7).toLowerCase()\r\n === UNIT_CONFIG.DEFAULT_BACKGROUND.toLowerCase()\r\n ? theme.palette.black[500] : 'white'}`,\r\n overflow: 'hidden',\r\n }\r\n );\r\n },\r\n entityLabelContainer: {\r\n flex: 1,\r\n minWidth: 0,\r\n textAlign: 'center',\r\n },\r\n unitDoubleStrokeEffect: {\r\n border: '2px solid white',\r\n outline: '1px solid black',\r\n },\r\n entityLabel: {\r\n WebkitTransform: ({ entityBevData: { angle = 0 } = {} }) => (`rotate(${-angle}deg)`),\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n fontSize: ({ zoomValue } = {}) => (getFontSize(zoomValue)),\r\n direction: 'rtl',\r\n },\r\n triangle: {\r\n position: 'absolute',\r\n width: 0,\r\n height: 0,\r\n borderStyle: 'solid',\r\n },\r\n tooltipChipRoot: ({ entityBevData = {} }) => {\r\n const { color: { [BOARD.RENTAL_AVAILABILITY_STATUS]: { color: mainColor = UNIT_CONFIG.DEFAULT_BACKGROUND } = {} } = {} } = entityBevData;\r\n return { backgroundColor: mainColor, color: getAppropriateTextColor(mainColor) };\r\n },\r\n bottomRightTriangle: arg => getTriangleStyle(arg, TRIANGLE_POSITIONS.BOTTOM_RIGHT),\r\n topRightTriangle: arg => getTriangleStyle(arg, TRIANGLE_POSITIONS.TOP_RIGHT),\r\n topLeftTriangle: arg => getTriangleStyle(arg, TRIANGLE_POSITIONS.TOP_LEFT),\r\n});\r\n\r\nexport default bevViewStyles;\r\n","import { makeStyles, Grid, Button } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { useState, memo } from 'react';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { TextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport baseUserRoleStyle from 'Commons/components/business/baseUserRole/styles/BaseUserRoleStyle';\r\n\r\nconst useStyles = makeStyles(baseUserRoleStyle, { name: 'UserRoleSideBar' });\r\n\r\nconst UserRoleSideBar = ({\r\n selectedRoleKey, copyRoleName, onSearch, onRoleSelection,\r\n userRoles, clearSearch, isSourceInternalDashboard,\r\n} = {}) => {\r\n const classes = useStyles();\r\n const [isSearchbarOpened, openSearchbar] = useState(false);\r\n return (\r\n \r\n \r\n {!isSourceInternalDashboard && (\r\n \r\n )}\r\n {\r\n isSearchbarOpened\r\n ? (\r\n {\r\n onSearch(event.target.value);\r\n }}\r\n addon={{\r\n end: {\r\n openSearchbar(false);\r\n clearSearch();\r\n }}\r\n />,\r\n }}\r\n />\r\n )\r\n : (\r\n { openSearchbar(true); }}\r\n />\r\n )\r\n }\r\n \r\n {Object.keys(userRoles).map((roleIdOrUserType) => {\r\n const { [roleIdOrUserType]: { name, userTypeLabel } = {} } = userRoles;\r\n return (\r\n onRoleSelection(roleIdOrUserType)}\r\n >{name || userTypeLabel}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nexport default memo(UserRoleSideBar);\r\n","import { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { memo, useEffect, useMemo, useState } from 'react';\r\nimport { SM_2, SM_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { FormTextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport Tabs from 'Commons/components/generic/tabs/components/Tabs';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport baseUserRoleStyle from 'Commons/components/business/baseUserRole/styles/BaseUserRoleStyle';\r\nimport userRoleTabsConfig from 'Commons/components/business/baseUserRole/config/UserRoleTabsConfig';\r\nimport { configurationData, financialsData, occupancyData, retailSaleData, unitData }\r\nfrom '../config/RolePermissionsConfig';\r\nimport {\r\n configurationBgPermissions, configurationFacilityPermissions, financialsDeleteAccessPermissions,\r\n financialsManualChargePemissions, financialsPaymentPermissions, financialsReverseAccessPermissions,\r\n occupancyMoveInPermissions, occupancyMoveOutPermissions, occupancyReservationPermissions,\r\n retailSaleInventoryAuditPermissions, retailSaleSellInventoryPermissions, unitGeneralPermissions,\r\n} from '../config/PermissionNameLists';\r\n\r\nconst useStyles = makeStyles(baseUserRoleStyle, { name: 'UserRoleMainTab' });\r\n\r\nconst UserRoleMainTab = ({\r\n onActivateOrDeactivate = {},\r\n isFormActive,\r\n roleId,\r\n formProps = {},\r\n formProps: {\r\n values: {\r\n permission: {\r\n facility: {\r\n financials: {\r\n payment: { access: payment = false } = {},\r\n charge: {\r\n manualCharge: { access: manualCharge = false } = {},\r\n delete: { access: deleteAccess = false } = {},\r\n reverse: { access: reverseAccess = false } = {},\r\n } = {},\r\n } = {},\r\n unit: { edit: { general = false } = {} } = {},\r\n reservation: { access: performReservation = false } = {},\r\n configurations: { createEdit: { access: facilityEdit = false } = {} } = {},\r\n retailSale: { sell = false, inventoryAudit = false } = {},\r\n occupancy: {\r\n moveIn: { access: performMoveIn = false } = {},\r\n moveOut: { access: performMoveOut = false } = {},\r\n } = {},\r\n } = {},\r\n businessGroup: { configurations: { createEdit: { access: businessGroupEdit = false } = {} } = {} } = {},\r\n } = {},\r\n } = {},\r\n setFieldValue,\r\n setFieldTouched,\r\n } = {},\r\n isModeCreate,\r\n isStandardUser = false,\r\n isSourceInternalDashboard,\r\n curUserPermRoleIdForCurFacility,\r\n} = {}) => {\r\n const classes = useStyles();\r\n const [isMoveInDisabled, setMoveInDisable] = useState(false);\r\n const [isMoveOutDisabled, setMoveOutDisable] = useState(false);\r\n const [occupancyConfig, updateOccupancyConfig] = useState(() => occupancyData(\r\n isMoveInDisabled, isMoveOutDisabled, performReservation,\r\n ));\r\n const [financialsConfig, updateFinancialsConfig] = useState(() => financialsData());\r\n const [retailSaleConfig, updateRetailSaleConfig] = useState(() => retailSaleData());\r\n const [unitConfig, updateUnitConfig] = useState(() => unitData());\r\n const [configuration, updateConfiguration] = useState(() => configurationData());\r\n const isUserEditingOwnRole = useMemo(() => isStandardUser\r\n && Number(curUserPermRoleIdForCurFacility) === Number(roleId), [curUserPermRoleIdForCurFacility, roleId]);\r\n\r\n const setFieldValueAndTouched = (permissionArray) => {\r\n permissionArray.forEach((permission) => {\r\n setFieldValue(permission, false, true);\r\n setFieldTouched(permission);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n updateUnitConfig(unitData(general));\r\n if (!general) {\r\n setFieldValueAndTouched(unitGeneralPermissions);\r\n }\r\n }, [general]);\r\n\r\n useEffect(() => {\r\n updateConfiguration(configurationData(facilityEdit, businessGroupEdit));\r\n if (!facilityEdit) {\r\n setFieldValueAndTouched(configurationFacilityPermissions);\r\n }\r\n if (!businessGroupEdit) {\r\n setFieldValueAndTouched(configurationBgPermissions);\r\n }\r\n }, [facilityEdit, businessGroupEdit]);\r\n\r\n useEffect(() => {\r\n updateRetailSaleConfig(retailSaleData(sell, inventoryAudit));\r\n if (!sell) {\r\n setFieldValueAndTouched(retailSaleSellInventoryPermissions);\r\n }\r\n if (!inventoryAudit) {\r\n setFieldValueAndTouched(retailSaleInventoryAuditPermissions);\r\n }\r\n }, [sell, inventoryAudit]);\r\n\r\n useEffect(() => {\r\n updateFinancialsConfig(financialsData(payment, manualCharge, reverseAccess, deleteAccess));\r\n\r\n if (!payment) {\r\n setFieldValueAndTouched(financialsPaymentPermissions);\r\n }\r\n if (!manualCharge) {\r\n setFieldValueAndTouched(financialsManualChargePemissions);\r\n }\r\n if (!reverseAccess) {\r\n setFieldValueAndTouched(financialsReverseAccessPermissions);\r\n }\r\n if (!deleteAccess) {\r\n setFieldValueAndTouched(financialsDeleteAccessPermissions);\r\n }\r\n }, [payment, manualCharge, deleteAccess, reverseAccess]);\r\n\r\n useEffect(() => {\r\n updateOccupancyConfig(occupancyData(!performMoveIn, !performMoveOut, !performReservation));\r\n setMoveInDisable(!performMoveIn);\r\n setMoveOutDisable(!performMoveOut);\r\n if (!performMoveIn) {\r\n setFieldValueAndTouched(occupancyMoveInPermissions);\r\n }\r\n if (!performMoveOut) {\r\n setFieldValueAndTouched(occupancyMoveOutPermissions);\r\n }\r\n if (!performReservation) {\r\n setFieldValueAndTouched(occupancyReservationPermissions);\r\n }\r\n }, [performMoveOut, performMoveIn, performReservation]);\r\n\r\n return (\r\n \r\n {\r\n \r\n \r\n {\r\n roleId\r\n && !isSourceInternalDashboard && !isUserEditingOwnRole && (\r\n \r\n {isFormActive ? localisable.deactivate : localisable.activate}\r\n \r\n )\r\n }\r\n \r\n }\r\n \r\n \r\n );\r\n};\r\nexport default memo(UserRoleMainTab);\r\n","import React from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport FormTreeView from 'Commons/components/generic/treeview/components/FormTreeView';\r\nimport {\r\n accountData,\r\n maintenanceEventData,\r\n reportsData,\r\n syrapayMerchantPortal,\r\n systemData,\r\n tenantData,\r\n} from './RolePermissionsConfig';\r\n\r\nconst userRoleTabs = ({\r\n formProps,\r\n occupancyConfig,\r\n financialsConfig,\r\n retailSaleConfig,\r\n unitConfig,\r\n configuration,\r\n isModeCreate,\r\n isFormActive,\r\n isStandardUser = false,\r\n isUserEditingOwnRole = false,\r\n isSourceInternalDashboard,\r\n}) => {\r\n const commonCheckBoxProps = { disabled: !isFormActive || isUserEditingOwnRole };\r\n return (\r\n [\r\n {\r\n id: 0,\r\n label: localisable.admin,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 1,\r\n label: localisable.configuration,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 2,\r\n label: localisable.financials,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n // Will be implemented later.\r\n // {\r\n // id: 3,\r\n // label: localisable.lateEvents,\r\n // children: (\r\n //
\r\n // \r\n //
\r\n // ),\r\n // },\r\n {\r\n id: 4,\r\n label: localisable.maintenanceEvent,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 5,\r\n label: localisable.occupancy,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 6,\r\n label: localisable.reports,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 7,\r\n label: localisable.retailSale,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 8,\r\n label: localisable.syrapayMerchantPortal,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n ...isSourceInternalDashboard ? [{\r\n id: 9,\r\n label: localisable.system,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n }] : [],\r\n {\r\n id: 10,\r\n label: localisable.tenant,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n {\r\n id: 11,\r\n label: localisable.unit,\r\n children: (\r\n
\r\n \r\n
\r\n ),\r\n },\r\n ]\r\n );\r\n};\r\n\r\nexport default userRoleTabs;\r\n","import { useState } from 'react';\r\nimport { makeStyles, TreeView as MuiTreeView, TreeItem } from 'Generic/componentlibrary/components/Components';\r\nimport LabelWithIcon from 'Generic/labelwithicon/components/LabelWithIcon';\r\nimport Button from 'Generic/button/components/Button';\r\nimport treeViewStyles from '../styles/TreeViewStyle';\r\n\r\nconst useStyles = makeStyles(treeViewStyles, { name: 'TreeView' });\r\n\r\nconst TreeView = ({ defaultExpanded, TreeItemProps, onNodeSelect, ...props }) => {\r\n const classes = useStyles(props);\r\n const [expanded, setExpanded] = useState(defaultExpanded);\r\n\r\n // eslint-disable-next-line react/prop-types\r\n const processTreeItem = ({ children, nodeId, label, searchField, ...others }) => {\r\n const node = { nodeId, label };\r\n return (\r\n ,\r\n }}\r\n >\r\n {label}\r\n \r\n )\r\n : label\r\n }\r\n onClick={(event) => {\r\n onNodeSelect(event, node);\r\n }}\r\n {...TreeItemProps}\r\n {...others}\r\n >\r\n {/* eslint-disable-next-line no-use-before-define */}\r\n {children ? renderNodeList(children) : null}\r\n \r\n );\r\n };\r\n\r\n const renderNodeList = itemList => itemList.map(treeItem => processTreeItem(treeItem));\r\n\r\n const { config, className, children, classes: ignore, ...others } = props;\r\n\r\n return (\r\n setExpanded(nodeIds)}\r\n defaultExpanded={defaultExpanded}\r\n {...others}\r\n >\r\n {children || renderNodeList(config)}\r\n \r\n );\r\n};\r\n\r\nTreeView.propTypes = {\r\n config: PropTypes.arrayOf(PropTypes.shape({\r\n nodeId: PropTypes.string.isRequired,\r\n label: PropTypes.node,\r\n })),\r\n children: PropTypes.node,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n defaultExpanded: PropTypes.array,\r\n TreeItemProps: PropTypes.object,\r\n onNodeSelect: PropTypes.func,\r\n searchField: PropTypes.string,\r\n};\r\n\r\nTreeView.defaultProps = {\r\n defaultExpanded: [],\r\n onNodeSelect: () => {},\r\n};\r\n\r\nexport default TreeView;\r\n","const searchableTreeViewStyle = theme => ({\r\n treeActions: { marginTop: theme.spacing(2) },\r\n treeView: {\r\n marginTop: theme.spacing(3),\r\n overflow: 'auto',\r\n },\r\n fullHeight: {\r\n flex: '1 1 0px',\r\n overflow: 'auto',\r\n },\r\n root: { flex: 1 },\r\n button: { '&, &:hover': { background: 'transparent' } },\r\n selectAll: { marginLeft: theme.spacing(2) },\r\n clearButton: {},\r\n});\r\n\r\nexport default searchableTreeViewStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst calendarStyle = theme => ({\r\n mainContainer: {\r\n padding: theme.spacing(1, 2),\r\n height: '100%',\r\n width: '100%',\r\n [media.tablet]: { padding: theme.spacing(0, 2, 2, 2) },\r\n [media.mobile]: { padding: theme.spacing(0, 1, 1, 1) },\r\n overflow: 'auto',\r\n },\r\n});\r\n\r\nexport default calendarStyle;\r\n","import React, { memo } from 'react';\r\nimport { Grid, Typography, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { WEEKDAYS_SUNDAY_FIRST } from 'External/containers/pendingTasks/components/reminders/config/Constants';\r\nimport { MAX_WEEKS_IN_MONTH } from 'Commons/config/constants/Constants';\r\nimport Week from './Week';\r\nimport monthStyle from '../styles/MonthStyle';\r\n\r\n\r\nconst useStyles = makeStyles(monthStyle, { name: 'Month' });\r\n\r\nconst Month = ({\r\n calendarWeekStartingDay,\r\n numberOfWeeksToDisplay,\r\n daysOfWeek,\r\n numberOfDays,\r\n startingDay,\r\n prevMonthLastDay,\r\n month,\r\n year,\r\n currentDate,\r\n renderInRows,\r\n data,\r\n shouldTruncateTitle,\r\n truncateTitleLength,\r\n dayComponentProps = {},\r\n ...restProps\r\n}) => {\r\n const classes = useStyles({ renderInRows });\r\n const { shouldTruncateTitleForSixWeekMonth, truncateTitleLengthForSixWeekMonth } = dayComponentProps;\r\n const shouldTruncateTitleValue = numberOfWeeksToDisplay === MAX_WEEKS_IN_MONTH ? shouldTruncateTitleForSixWeekMonth : shouldTruncateTitle;\r\n const truncateTitleLengthValue = numberOfWeeksToDisplay === MAX_WEEKS_IN_MONTH ? truncateTitleLengthForSixWeekMonth : truncateTitleLength;\r\n\r\n return (\r\n <>\r\n \r\n {daysOfWeek.map(({ value: day }) => (\r\n \r\n {day}\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nMonth.propTypes = {\r\n calendarWeekStartingDay: PropTypes.number,\r\n numberOfWeeksToDisplay: PropTypes.number,\r\n daysOfWeek: PropTypes.array,\r\n numberOfDays: PropTypes.number,\r\n startingDay: PropTypes.number,\r\n prevMonthLastDay: PropTypes.number.isRequired,\r\n month: PropTypes.number.isRequired,\r\n year: PropTypes.number.isRequired,\r\n currentDate: PropTypes.object,\r\n renderInRows: PropTypes.bool,\r\n data: PropTypes.object,\r\n dayComponentProps: PropTypes.object,\r\n shouldTruncateTitle: PropTypes.bool,\r\n truncateTitleLength: PropTypes.number,\r\n};\r\n\r\nMonth.defaultProps = {\r\n calendarWeekStartingDay: 0,\r\n numberOfWeeksToDisplay: 6,\r\n daysOfWeek: Object.values(WEEKDAYS_SUNDAY_FIRST),\r\n renderInRows: false,\r\n data: {},\r\n};\r\n\r\nexport default memo(Month);\r\n","import React, { memo } from 'react';\r\nimport { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { getFirstDateOfMonth, getMonthStartingDayIndex } from 'Commons/helpers/utils/DateTime';\r\nimport { addDatePadding, getCompleteDate, getDataForDay } from 'Commons/helpers/utils/CalendarHelper';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Day from './Day';\r\nimport weekStyle from '../styles/WeekStyle';\r\n\r\nconst useStyles = makeStyles(weekStyle, { name: 'Week' });\r\n\r\nconst Week = ({\r\n renderInRows, calendarWeekStartingDay,\r\n numberOfWeeksToDisplay, daysOfWeek, numberOfDays, startingDay,\r\n prevMonthLastDay, month: monthIndex, year: yearNumber, currentDate,\r\n data, maxVisibleContent, ...restProps\r\n}) => {\r\n const classes = useStyles({ renderInRows, maxVisibleContent });\r\n const getDisplayDayInfo = (rowIndex, colIndex, month, year, monthStartingDayIndex = undefined, calendarsWeekStartingDay = 0) => {\r\n let monthStartingDay = monthStartingDayIndex;\r\n if (!monthStartingDay) monthStartingDay = getMonthStartingDayIndex(year, month);\r\n const monthStartingDayAndCalendarStartDayAreSame = monthStartingDay === calendarsWeekStartingDay - 1;\r\n const weekIndex = monthStartingDayAndCalendarStartDayAreSame ? rowIndex - 1 : rowIndex;\r\n const dayNumber = weekIndex * 7 + colIndex - monthStartingDay + 1 + calendarsWeekStartingDay;\r\n const isWithinMonth = dayNumber > 0 && dayNumber <= numberOfDays;\r\n const isPrevMonth = dayNumber <= 0;\r\n const isNextMonth = dayNumber > numberOfDays;\r\n let displayDay = dayNumber;\r\n const selectedMonthFirstDate = getFirstDateOfMonth(year, month);\r\n const completeDate = getCompleteDate(selectedMonthFirstDate, displayDay - 1);\r\n const dataForDay = getDataForDay(data, completeDate) || [];\r\n if (isPrevMonth) {\r\n if (monthStartingDayAndCalendarStartDayAreSame) {\r\n displayDay = prevMonthLastDay + dayNumber;\r\n } else {\r\n displayDay = prevMonthLastDay - monthStartingDay + calendarsWeekStartingDay + colIndex + 1;\r\n }\r\n }\r\n if (isNextMonth) displayDay = dayNumber - numberOfDays;\r\n displayDay = addDatePadding(displayDay);\r\n const isDisabled = !isWithinMonth;\r\n return { displayDay, isDisabled, isWithinMonth, isPrevMonth, isNextMonth, dataForDay, completeDate };\r\n };\r\n\r\n return (\r\n <>\r\n {[...Array(numberOfWeeksToDisplay).keys()].map((_, rowIndex) => (\r\n \r\n {daysOfWeek.map((__, index) => {\r\n const {\r\n displayDay,\r\n isDisabled,\r\n dataForDay = [],\r\n completeDate,\r\n } = getDisplayDayInfo(rowIndex, index, monthIndex, yearNumber, startingDay, calendarWeekStartingDay);\r\n return (\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\n\r\nWeek.propTypes = {\r\n daysOfWeek: PropTypes.array,\r\n numberOfWeeksToDisplay: PropTypes.number,\r\n startingDay: PropTypes.number,\r\n numberOfDays: PropTypes.number,\r\n prevMonthLastDay: PropTypes.number,\r\n calendarWeekStartingDay: PropTypes.number,\r\n month: PropTypes.number,\r\n year: PropTypes.number,\r\n currentDate: PropTypes.object,\r\n renderInRows: PropTypes.bool,\r\n data: PropTypes.object,\r\n maxVisibleContent: PropTypes.number,\r\n};\r\n\r\nWeek.defaultProps = {\r\n numberOfWeeksToDisplay: 6,\r\n daysOfWeek: [],\r\n startingDay: 0,\r\n calendarWeekStartingDay: 0,\r\n data: {},\r\n maxVisibleContent: 1,\r\n};\r\n\r\n\r\nexport default memo(Week);\r\n","import React, { memo } from 'react';\r\nimport { Grid, Typography, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { getDate } from 'Commons/helpers/utils/DateTime';\r\nimport { GridListWithShowMore } from 'Commons/components/business/formatters/components/Formatters';\r\nimport dayStyle from '../styles/DayStyle';\r\n\r\nconst useStyles = makeStyles(dayStyle, { name: 'Day' });\r\n\r\nconst Day = ({\r\n displayDay,\r\n completeDate,\r\n dataForDay,\r\n currentDate,\r\n disabled, shouldTruncateTitle, truncateTitleLength,\r\n renderInRows,\r\n maxVisibleContent,\r\n onClickMoreItems,\r\n ...restProps\r\n}) => {\r\n const { deviceInfo: { isDesktop, isLaptop, isTablet } } = window;\r\n const currentDateStr = getDate(currentDate);\r\n const classes = useStyles({ isDateToday: completeDate === currentDateStr, renderInRows, isDesktop, isLaptop, isTablet });\r\n\r\n const renderSingleDayData = (singleDayData = []) => (\r\n \r\n );\r\n return (\r\n \r\n \r\n \r\n {displayDay}\r\n \r\n \r\n {renderSingleDayData(dataForDay)}\r\n
\r\n );\r\n};\r\n\r\nDay.propTypes = {\r\n displayDay: PropTypes.string,\r\n dataForDay: PropTypes.array,\r\n disabled: PropTypes.bool,\r\n shouldTruncateTitle: PropTypes.bool,\r\n truncateTitleLength: PropTypes.number,\r\n currentDate: PropTypes.object,\r\n completeDate: PropTypes.string,\r\n renderInRows: PropTypes.bool,\r\n maxVisibleContent: PropTypes.number,\r\n onClickMoreItems: PropTypes.func,\r\n};\r\n\r\nDay.defaultProps = {\r\n displayDay: '',\r\n dataForDay: [],\r\n disabled: false,\r\n shouldTruncateTitle: false,\r\n truncateTitleLength: 10,\r\n maxVisibleContent: 1,\r\n};\r\n\r\nexport default memo(Day);\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst dayStyle = (theme) => {\r\n const minHeight = 57.5;\r\n return {\r\n dayContainer: { padding: theme.spacing(0), minHeight: `${minHeight / 10 * 12}px`, minWidth: '70px' },\r\n disabled: { opacity: 0.3 },\r\n dateBadge: ({ isDateToday, renderInRows, isDesktop, isTablet }) => {\r\n const laptopAndMobile = {\r\n width: 30,\r\n height: isDesktop && renderInRows ? 27 : 28,\r\n };\r\n const desktopAndTablet = {\r\n width: 30,\r\n // eslint-disable-next-line no-nested-ternary\r\n height: isTablet ? 22 : isDesktop && renderInRows ? 27 : 28,\r\n };\r\n\r\n return ({\r\n ...(isDateToday && { border: `1px solid ${theme.palette.primary.main}` }),\r\n borderRadius: '50%',\r\n alignSelf: 'center',\r\n textAlign: 'center',\r\n ...desktopAndTablet,\r\n [media.laptop]: laptopAndMobile,\r\n [media.tablet]: desktopAndTablet,\r\n [media.mobile]: laptopAndMobile,\r\n });\r\n },\r\n dot: {\r\n width: '10px',\r\n height: '10px',\r\n borderRadius: '50%',\r\n display: 'inline-block',\r\n marginRight: '5px',\r\n },\r\n inactive: { backgroundColor: '#d14141' }, // inactive data on a perticular day\r\n active: { backgroundColor: '#6DCF77' }, // active data on a perticular day\r\n moreItems: {\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: theme.palette.secondary.main,\r\n },\r\n },\r\n inline: { maxWidth: '100%' },\r\n };\r\n};\r\n\r\nexport default dayStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst weekStyle = (theme) => {\r\n const minHeight = 66.5;\r\n return {\r\n paper: {\r\n padding: theme.spacing(1),\r\n textAlign: 'left',\r\n color: theme.palette.text.secondary,\r\n border: '1px solid #E6E7EB',\r\n minHeight: `${minHeight}px`,\r\n },\r\n dayContainer: ({ renderInRows, maxVisibleContent }) => ({ padding: theme.spacing(1), minHeight: renderInRows ? `${minHeight / 10 * 12}px` : `calc(80px + ${maxVisibleContent - 1}*15px)`, minWidth: '70px' }),\r\n weekDays: ({ renderInRows }) => ({ ...(!renderInRows && { width: '55px', minWidth: '50px', [media.desktopUp]: { width: '100px', minWidth: '100px' } }) }),\r\n };\r\n};\r\n\r\nexport default weekStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst monthStyle = (theme) => {\r\n const minHeight = 57.5;\r\n return {\r\n paper: {\r\n padding: theme.spacing(1),\r\n textAlign: 'left',\r\n color: theme.palette.text.secondary,\r\n border: '1px solid #E6E7EB',\r\n minHeight: `${minHeight}px`,\r\n },\r\n weekDayContainer: ({ renderInRows }) => ({ padding: theme.spacing(1), minHeight: `${minHeight / 10 * 12}px`, minWidth: renderInRows ? '70px' : '56px' }),\r\n weekDays: ({ renderInRows }) => ({ ...(!renderInRows && { width: '55px', minWidth: '50px', [media.desktopUp]: { width: '100px', minWidth: '100px' } }) }),\r\n };\r\n};\r\n\r\nexport default monthStyle;\r\n","import React, { memo } from 'react';\r\nimport { Grid, Typography, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { Dropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { DatePicker } from 'Generic/datepicker/components/DatePicker';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport { getCurrentDate } from 'Commons/helpers/utils/DateTime';\r\nimport { CALENDAR_VIEW_TYPE, DATE_FORMAT, EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { DATE_SEEK_DIRECTION } from 'External/containers/pendingTasks/components/reminders/config/Constants';\r\nimport calendarHeaderStyle from '../styles/CalendarHeaderStyle';\r\n\r\nconst useStyles = makeStyles(calendarHeaderStyle, { name: 'CalendarHeader' });\r\n\r\nconst Header = ({\r\n displayedDate,\r\n selectedView,\r\n viewTypeList,\r\n handleViewChange,\r\n onDateSeek,\r\n datePickerDateFormat,\r\n onDateChange,\r\n createButtonText,\r\n onCreateButtonClick,\r\n getDisplayText,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const renderDateSeekButton = seekDirection => (\r\n onDateSeek(seekDirection)}\r\n />\r\n );\r\n\r\n return (\r\n <>\r\n \r\n \r\n onDateChange(value)}\r\n trackValue={false}\r\n dataType=\"date\"\r\n format={datePickerDateFormat}\r\n width={100}\r\n classes={{ datePickerContainer: classes.datePickerContainer }}\r\n textFieldClasses={{\r\n marginTop: classes.dateTextFieldInputMarginTop,\r\n input: classes.dateTextFieldInput,\r\n }}\r\n InputProps={{\r\n classes: { disabled: classes.disabledDatePickerOverride },\r\n ...(getDisplayText && { inputComponent: () => getDisplayText(displayedDate, selectedView) }),\r\n }}\r\n disableUnderline\r\n openPickerOnInputFieldFocus\r\n addon={{ end: null }}\r\n additionalIcon={{\r\n left: renderDateSeekButton(DATE_SEEK_DIRECTION.BACKWARD),\r\n right: renderDateSeekButton(DATE_SEEK_DIRECTION.FORWARD),\r\n }}\r\n PopoverProps={{ anchorOrigin: { vertical: 'bottom', horizontal: 'right' } }}\r\n {...(selectedView === CALENDAR_VIEW_TYPE.Month.value && { views: ['month', 'year'] })}\r\n />\r\n \r\n \r\n handleViewChange(value)}\r\n skipSort\r\n />\r\n \r\n { createButtonText\r\n && (\r\n \r\n \r\n {createButtonText}\r\n \r\n \r\n )\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\n\r\nHeader.propTypes = {\r\n displayedDate: PropTypes.string,\r\n selectedView: PropTypes.string,\r\n viewTypeList: PropTypes.array,\r\n handleViewChange: PropTypes.func,\r\n onDateSeek: PropTypes.func,\r\n datePickerDateFormat: PropTypes.string,\r\n onDateChange: PropTypes.func,\r\n createButtonText: PropTypes.string,\r\n onCreateButtonClick: PropTypes.func,\r\n getDisplayText: PropTypes.func,\r\n};\r\n\r\nHeader.defaultProps = {\r\n displayedDate: getCurrentDate(false),\r\n viewTypeList: [],\r\n handleViewChange: EMPTY_FUNC,\r\n onDateSeek: EMPTY_FUNC,\r\n datePickerDateFormat: DATE_FORMAT,\r\n onDateChange: EMPTY_FUNC,\r\n onCreateButtonClick: EMPTY_FUNC,\r\n};\r\n\r\nexport default memo(Header);\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst calendarHeaderStyle = theme => ({\r\n headerContainer: {\r\n padding: theme.spacing(0, 4, 2, 0),\r\n [media.laptop]: { padding: theme.spacing(0, 2, 1, 2) },\r\n [media.tablet]: { padding: theme.spacing(0, 2, 2, 2) },\r\n [media.mobile]: { padding: theme.spacing(0, 1, 1, 1) },\r\n },\r\n createButtonGrid: { cursor: 'pointer' },\r\n datePickerContainer: { width: 'auto' },\r\n dateTextFieldInputMarginTop: { marginTop: 0 },\r\n dateTextFieldInput: { padding: 0, textAlign: 'center', cursor: 'pointer' },\r\n disabledDatePickerOverride: { color: theme.palette.text.primary },\r\n titleSpacing: { marginRight: 'auto' },\r\n});\r\n\r\nexport default calendarHeaderStyle;\r\n","import media from 'Commons/theme/MediaQueries';\r\n\r\nconst ICON_CONTAINER_WIDTH = {\r\n desktop: 48,\r\n responsive: 32,\r\n};\r\nconst ICON_CONTAINER_HEIGHT = {\r\n desktop: 48,\r\n responsive: 32,\r\n};\r\n\r\nconst sideIconStyles = theme => ({\r\n iconContainer: {\r\n width: '100%',\r\n border: `1px solid ${theme.palette.common.black}`,\r\n minHeight: 50,\r\n borderRadius: 4,\r\n [media.laptopUp]: {\r\n minHeight: 36,\r\n width: ICON_CONTAINER_WIDTH.responsive,\r\n height: ICON_CONTAINER_HEIGHT.responsive,\r\n border: 'none',\r\n backgroundColor: theme.palette.primary.main,\r\n borderTopLeftRadius: ICON_CONTAINER_WIDTH.responsive / 2,\r\n borderBottomLeftRadius: ICON_CONTAINER_WIDTH.responsive / 2,\r\n },\r\n [media.desktop]: {\r\n minHeight: 50,\r\n width: ICON_CONTAINER_WIDTH.desktop,\r\n height: ICON_CONTAINER_HEIGHT.desktop,\r\n borderTopLeftRadius: ICON_CONTAINER_WIDTH.desktop / 2,\r\n borderBottomLeftRadius: ICON_CONTAINER_WIDTH.desktop / 2,\r\n },\r\n cursor: 'pointer',\r\n },\r\n sideIcon: { color: theme.palette.common.white, marginLeft: theme.spacing(1) },\r\n disabled: { [media.laptopUp]: { backgroundColor: theme.palette.disabled, pointerEvents: 'none' } },\r\n});\r\n\r\nexport default sideIconStyles;\r\n","const smartListWithFormStyle = {\r\n fullHeight: { height: '100%' },\r\n form: { width: '100%' },\r\n};\r\n\r\nexport default smartListWithFormStyle;\r\n","const stepperStyle = {\r\n hidden: { display: 'none' },\r\n stepText: {},\r\n pageBody: { background: 'transparent', flexWrap: 'noWrap' },\r\n};\r\n\r\nexport default stepperStyle;\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport useFormatter from 'Commons/components/business/formatters/components/FormatterHOC';\r\nimport { SOURCE } from 'Commons/config/constants/Constants';\r\nimport userListFormatterStyle from '../style/UserListFormatterStyle';\r\n\r\nconst {\r\n Label: labelFormatter,\r\n Action: actionFormatter,\r\n Status: statusFormatter,\r\n Phone: phoneFormatter,\r\n// eslint-disable-next-line react-hooks/rules-of-hooks\r\n} = useFormatter({ source: SOURCE.user.value, formattersRequested: ['Label', 'Action', 'Status', 'Phone'], stylesheet: userListFormatterStyle });\r\n\r\nconst {\r\n userListEmail,\r\n listName,\r\n userListPhoneNumber,\r\n listStatus,\r\n actions,\r\n} = localisable;\r\n\r\nconst getUserColumns = () => [\r\n // { TODO\r\n // label: ,\r\n // key: '',\r\n // formatter: RowSelector,\r\n // width: 10,\r\n // },\r\n {\r\n label: listName,\r\n key: 'label',\r\n formatter: labelFormatter,\r\n width: 22,\r\n },\r\n {\r\n label: userListEmail,\r\n key: 'email',\r\n width: 24,\r\n },\r\n {\r\n label: userListPhoneNumber,\r\n key: 'phoneNumber',\r\n formatter: phoneFormatter,\r\n width: 22,\r\n },\r\n {\r\n label: listStatus,\r\n key: 'status',\r\n width: 18,\r\n formatter: statusFormatter,\r\n },\r\n {\r\n label: actions,\r\n key: 'actions',\r\n formatter: actionFormatter,\r\n width: 14,\r\n },\r\n];\r\n\r\nexport default getUserColumns;\r\n","/* eslint-disable no-unused-vars */\r\nconst DateRangeStyle = theme => ({\r\n dateContainer: {\r\n marginLeft: 16,\r\n marginTop: 16,\r\n },\r\n title: { fontWeight: 'bolder' },\r\n});\r\n\r\nexport default DateRangeStyle;\r\n","import media from '../../../../../../theme/MediaQueries';\r\n\r\n/* eslint-disable no-unused-vars */\r\nconst NumberRangeStyle = theme => ({\r\n container: { width: '100%' },\r\n mobileSectionHeader: { borderBottom: '0.9px solid rgba(239, 239, 239, 0.5)' },\r\n title: {\r\n fontWeight: 'bolder',\r\n [media.smallMobile]: {\r\n '& span': { fontWeight: 'bolder' },\r\n padding: 0,\r\n },\r\n [media.mobile]: {\r\n '& span': { fontWeight: 'bolder' },\r\n padding: 0,\r\n },\r\n [media.phablet]: {\r\n '& span': { fontWeight: 'bolder' },\r\n padding: 0,\r\n },\r\n [media.tablet]: {\r\n '& span': { fontWeight: 'bolder' },\r\n paddingLeft: 8,\r\n },\r\n },\r\n});\r\n\r\nexport default NumberRangeStyle;\r\n","/**\r\n * @description Calculates the priorities based on the critical config\r\n * @param {Object} critical The critical config\r\n */\r\nconst calculate = (critical = {}) => {\r\n const priorities = {};\r\n const criticalKeys = Object.keys(critical);\r\n if (critical) {\r\n criticalKeys.forEach((key) => {\r\n // If no dependency, just push with priority 1\r\n if (!critical[key].dependency) {\r\n priorities[key] = 1;\r\n } else if (critical[key].dependency) {\r\n // If there is a dependency, then calculate the current keys priority, and increment by\r\n // adding dependee keys priorities\r\n const newPriority = critical[key].dependency.reduce(\r\n (prev, cur) => ({\r\n priority: (priorities[prev] || 1) + (priorities[cur] || 1),\r\n key,\r\n }),\r\n {\r\n priority: 1,\r\n key,\r\n },\r\n );\r\n // Once calculated push to the priorities\r\n // priorities.push(newPriority);\r\n priorities[key] = newPriority.priority;\r\n }\r\n });\r\n }\r\n return priorities;\r\n};\r\n\r\nconst indexByPriorities = (priorities) => {\r\n const prioritiesIndex = {};\r\n // TODO: Object.keys is currently retaining the order, need to revisit in ES8\r\n Object.keys(priorities).forEach((key) => {\r\n if (prioritiesIndex[priorities[key]] && prioritiesIndex[priorities[key]].length > 0) {\r\n prioritiesIndex[priorities[key]].push(key);\r\n } else {\r\n prioritiesIndex[priorities[key]] = [key];\r\n }\r\n });\r\n return prioritiesIndex;\r\n};\r\n\r\nconst groupPriorities = (priorities) => {\r\n const prioritiesListByIndex = indexByPriorities(priorities);\r\n return Object.values(prioritiesListByIndex);\r\n};\r\n/**\r\n * @description Given a config, this returns the priority for each critical keys\r\n * and its dependencies\r\n * @param {*} config The keys that were extracted from dependency config for a route/component\r\n * @param {*} pathTraversed The path that has been traversed so far\r\n */\r\nconst calculatePriority = ({ critical = {} }) => {\r\n const priorities = calculate(critical);\r\n return groupPriorities(priorities);\r\n};\r\n\r\nexport default calculatePriority;\r\n","import configTypes from './Config';\r\n\r\nconst accountContextRequiredConfig = [\r\n ...configTypes,\r\n 'userRole',\r\n 'user',\r\n];\r\n\r\nexport default accountContextRequiredConfig;\r\n","import { CONFIG_ENDPOINTS } from 'Commons/config/constants/Endpoints';\r\nimport {\r\n getActionConfig,\r\n getDynamicConfigFromOnMount,\r\n getCustomHeaderConfigByStoreKey,\r\n} from './getConfig';\r\nimport STATUS from '../../../config/constants/StoreKeyStatus';\r\nimport REQUEST_TYPES from '../../../config/constants/RequestTypes';\r\nimport calculatePriority from './calculatePriority';\r\nimport { action } from '../../../redux/helper/Store';\r\nimport configTypes from '../../../redux/config/Config';\r\nimport accountContextRequiredConfig from '../../../redux/config/AccountContextConfig';\r\nimport { deepMerge } from '../../../helpers/utils/DataHelpers';\r\nimport { deepCopy } from '../../../helpers/utils/DeepCopy';\r\n\r\nconst emptyCallback = () => { };\r\n\r\n/**\r\n* @description Dispatch actions to store helper\r\n* @param {Array} apiQueue Current batch that needs to be dispatched\r\n*/\r\nconst dispatchAPIQueueActions = (apiQueue = [], dispatch, storeData) => (apiQueue.length ? apiQueue.forEach((api) => {\r\n action(api, dispatch, storeData);\r\n}) : null);\r\nexport default class BatchProcessor {\r\n constructor() {\r\n this.nextBatchToProcess = [];\r\n this.status = {\r\n loading: false,\r\n error: false,\r\n };\r\n this.curStoreKeys = {};\r\n this.statusToKeyMap = {};\r\n }\r\n\r\n init(componentConfig = {}, dispatch, routeProps = {}) {\r\n this.componentRouteProps = { ...routeProps };\r\n this.componentConfig = componentConfig;\r\n this.dispatch = dispatch;\r\n this.batchedCriticalKeys = calculatePriority(componentConfig.dependencyConfig || {}) || [];\r\n return this.batchedCriticalKeys;\r\n }\r\n\r\n resolveCustomHeaderFromStore(key = '') {\r\n const { id, type } = getCustomHeaderConfigByStoreKey(key);\r\n if (typeof id === 'function') {\r\n const contextId = id(this.curStoreKeys);\r\n return {\r\n id: contextId,\r\n type,\r\n };\r\n }\r\n if (id) {\r\n return {\r\n id,\r\n type,\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n getCustomHeader({ type, key, context }) {\r\n if (type === 'store' && key) {\r\n return this.resolveCustomHeaderFromStore(key);\r\n }\r\n if (type === 'default' && context) {\r\n return context;\r\n }\r\n return null;\r\n }\r\n\r\n getAccountContext = () => {\r\n const { currentAccountId: { data: { id } = {} } = {} } = this.curStoreKeys;\r\n const { match: { params: { accountId } = {} } = {} } = this.componentRouteProps;\r\n if (id || accountId) {\r\n return { id: id || accountId, type: 'Account' };\r\n }\r\n return null;\r\n }\r\n\r\n processCustomHeaders(apiOptions = {}, storeKey) {\r\n const { api: { customHeaderOptions, headers = {}, ...apiConfig } = {}, store, ...rest } = apiOptions;\r\n const { endPoint } = apiConfig;\r\n let contextHeaders;\r\n // TODO: Find better approach to identify config searches\r\n if (accountContextRequiredConfig.includes(storeKey) || endPoint === CONFIG_ENDPOINTS.search) {\r\n contextHeaders = this.getAccountContext();\r\n }\r\n if (customHeaderOptions) {\r\n contextHeaders = this.getCustomHeader(customHeaderOptions);\r\n }\r\n if (contextHeaders) {\r\n const { id = '', type = '' } = contextHeaders;\r\n if (id && type) {\r\n return {\r\n api: {\r\n ...apiConfig,\r\n headers: {\r\n ...headers, // Merging other headers users might have sent\r\n 'context-id': id,\r\n 'context-type': type,\r\n },\r\n },\r\n store,\r\n ...rest,\r\n };\r\n }\r\n }\r\n return apiOptions;\r\n }\r\n\r\n getRequestOptions(actionKey, options) {\r\n const { api } = options;\r\n const { storeKey, actionType } = this.getStoreKeyFromAction(actionKey);\r\n if (api) {\r\n const apiFetchConfig = api.action\r\n ? {\r\n api: { ...deepMerge(api.action, api.dynamic || {}) },\r\n store: this.getStoreConfig(storeKey, actionType),\r\n }\r\n : this.getRequestConfigForKey(actionKey, api.dynamic || {});\r\n return this.processCustomHeaders(apiFetchConfig, storeKey);\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @description Getting the storeKeys to dispatch\r\n * @param {*} criticalKeysBatches\r\n */\r\n groupStoreKeysToDispatch(criticalKeysBatches) {\r\n return criticalKeysBatches.map(batch => batch.map(keys => keys.key));\r\n }\r\n\r\n clearStore = () => {\r\n this.dispatch({\r\n type: 'clear_store',\r\n payload: {},\r\n storeKey: {},\r\n });\r\n }\r\n\r\n getGroupedBatch = (actionType, batch) => {\r\n let regularBatch = [];\r\n const configBatch = [];\r\n\r\n if (actionType === 'read') {\r\n batch.forEach((key) => {\r\n if (configTypes.includes(key)) {\r\n configBatch.push(key);\r\n } else {\r\n regularBatch.push(key);\r\n }\r\n });\r\n } else {\r\n regularBatch = batch;\r\n }\r\n\r\n return {\r\n regularBatch,\r\n configBatch,\r\n };\r\n }\r\n\r\n getStoreConfig = (key, actionType, storeDetail = {}) => ({\r\n ...storeDetail,\r\n key,\r\n actionKey: `${key}_${actionType}`,\r\n payload: {},\r\n dispatch: this.dispatch,\r\n })\r\n\r\n /**\r\n * Get the request options\r\n * @param {*} actionType\r\n * @param {*} batch\r\n * @param {Object} options Any dynamic config that needs to be appended\r\n */\r\n calculateRequestQ(actionType, batch = [], options = {}) {\r\n const { regularBatch, configBatch } = this.getGroupedBatch(actionType, batch);\r\n let configBatchApiRequests = 0;\r\n let configRequest;\r\n\r\n let requestAPIQueue = regularBatch.map((key) => {\r\n const { api, store } = this.getRequestOptions(`${key}_${actionType}`, options);\r\n if (store) {\r\n store.dispatch = this.dispatch;\r\n }\r\n return {\r\n ...options,\r\n api,\r\n store,\r\n };\r\n });\r\n\r\n if (configBatch.length) {\r\n configBatchApiRequests = 1;\r\n const storeKey = 'config';\r\n // Calling getRequestConfigForKey to avoid dual merging of dynamic config\r\n const { api: configRequestApi } = this.getRequestConfigForKey(`${storeKey}_${actionType}`, {});\r\n const { body: { filter: initialFilter } } = configRequestApi;\r\n\r\n const configFilter = [];\r\n const includeRestricted = [];\r\n let configHeaders;\r\n\r\n configBatch.forEach((key) => {\r\n const { api: { body: { filter = [], __includeRestricted = [] } = {}, headers } = {} } = this.getRequestOptions(`${key}_${actionType}`, options) || {};\r\n configHeaders = headers;\r\n configFilter.push(...filter);\r\n includeRestricted.push(...__includeRestricted);\r\n }, initialFilter);\r\n\r\n configRequestApi.body.filter = configFilter;\r\n // eslint-disable-next-line no-underscore-dangle\r\n configRequestApi.body.__includeRestricted = includeRestricted;\r\n configRequestApi.headers = configHeaders;\r\n\r\n const { api: { dynamic = {} } = {}, ...restOptions } = options;\r\n const mergedApi = deepCopy(deepMerge(dynamic, configRequestApi));\r\n\r\n // Set only if all requested configurations has action config\r\n if (configFilter.length === configBatch.length) {\r\n configRequest = {\r\n ...restOptions,\r\n api: mergedApi,\r\n store: {\r\n key: 'config',\r\n keys: configBatch,\r\n actionKey: 'config_read',\r\n payload: {},\r\n dispatch: this.dispatch,\r\n },\r\n };\r\n }\r\n }\r\n // Adding config batch to requestApiQueue\r\n if (configRequest) {\r\n requestAPIQueue.push(configRequest);\r\n }\r\n\r\n // Remove keys that do not have a request body\r\n requestAPIQueue = requestAPIQueue.filter(singleRequest => ((singleRequest.api || singleRequest.store)\r\n ? singleRequest : false));\r\n return {\r\n requestAPIQueue,\r\n error: (regularBatch.length + configBatchApiRequests) !== requestAPIQueue.length,\r\n };\r\n }\r\n\r\n /**\r\n * Process a batch of store keys, make API calls and update Redux Store\r\n * @param {Array} batchedCriticalKeys All the store keys that needs to be batched and fetched\r\n * @param {*} actionType The action type\r\n * @param {Object} options Additional options\r\n */\r\n nextBatch(\r\n batchedCriticalKeys = [],\r\n actionType = 'read',\r\n options = {\r\n requestType: REQUEST_TYPES.INIT,\r\n api: {},\r\n callback: emptyCallback,\r\n },\r\n ) {\r\n // Dereferencing params\r\n const storeOptions = { ...options, processCustomHeaders: this.processCustomHeaders.bind(this) };\r\n const localBatchedCriticalKeys = [...batchedCriticalKeys];\r\n const {\r\n requestType = REQUEST_TYPES.INIT,\r\n api,\r\n store,\r\n } = storeOptions;\r\n const batchToProcess = batchedCriticalKeys.length > 0\r\n ? Object.assign(batchedCriticalKeys) : this.nextBatchToProcess;\r\n if (requestType === REQUEST_TYPES.INIT) {\r\n Object.keys(this.curStoreKeys).forEach((key) => {\r\n if (this.curStoreKeys[key].status > STATUS.LOADING && batchToProcess.indexOf(key) > -1) {\r\n batchToProcess.splice(batchToProcess.indexOf(key), 1);\r\n }\r\n });\r\n }\r\n\r\n if (batchToProcess.length > 0) {\r\n // Transform the store keys to action keys\r\n // Append Action Type\r\n let { requestAPIQueue, error } = this.calculateRequestQ(actionType, batchToProcess, storeOptions); // eslint-disable-line prefer-const\r\n // If there are any keys that do not have request body, then the component cannot be loaded\r\n if (!error) {\r\n // Remove Keys whose state are invalid\r\n requestAPIQueue = this.getRequestQ(requestAPIQueue, requestType);\r\n dispatchAPIQueueActions(requestAPIQueue, this.dispatch, this.curStoreKeys);\r\n this.status.error = false;\r\n } else {\r\n this.status.error = true;\r\n }\r\n } else if (localBatchedCriticalKeys.length === 0) {\r\n // Developer had not passed a batch, only API or only Store call\r\n if (api) {\r\n // If action config already passed\r\n // By passing store\r\n const {\r\n action: actionApiConfig = {},\r\n dynamic = {},\r\n } = api;\r\n storeOptions.api = { ...actionApiConfig, ...dynamic };\r\n const batchOptions = this.processCustomHeaders(storeOptions);\r\n action(batchOptions, this.dispatch, this.curStoreKeys);\r\n } else if (store) {\r\n // If payload passed then dispatch it\r\n if (store.payload) {\r\n store.dispatch = this.dispatch;\r\n action(storeOptions, undefined, this.curStoreKeys);\r\n }\r\n }\r\n } else {\r\n // All store keys are resolved\r\n }\r\n // this.status.error = false;\r\n }\r\n\r\n getPropsForState(state, componentConfig = {}) {\r\n let localState = Object.assign(state);\r\n // Iterate through state keys component is interested in\r\n const { all = [], critical = [] } = componentConfig;\r\n if (all.length) {\r\n localState = Object.keys(localState)\r\n .filter(key => all.includes(key))\r\n .reduce((obj, key) => ({\r\n ...obj,\r\n [key]: localState[key],\r\n }), {});\r\n this.curStoreKeys = localState;\r\n // For processing batch\r\n this.statusToKeyMap = this.indexKeyByStatus(localState, critical);\r\n\r\n // Check if any processed key got unloaded\r\n this.checkAndResetBatch(this.statusToKeyMap);\r\n\r\n if (!this.statusToKeyMap[STATUS.INVALID] && !this.statusToKeyMap[STATUS.ERROR]) {\r\n const resolvedKeys = this.statusToKeyMap[STATUS.RESOLVED] || [];\r\n if (resolvedKeys.length) {\r\n this.processResolvedKeys(localState, resolvedKeys);\r\n // Need to set error to false, if it was resolved later\r\n this.status.error = false;\r\n }\r\n } else {\r\n this.status.error = true;\r\n }\r\n }\r\n return localState;\r\n }\r\n\r\n getRequestConfigForKey(key = '', dynamicConfig = {}) {\r\n const localDynamicConfig = Object.assign({}, dynamicConfig);\r\n\r\n // Get the store key\r\n const { storeKey, actionType } = this.getStoreKeyFromAction(key);\r\n const { store: storeDetail = {}, ...actionConfigRequest } = getActionConfig(storeKey, actionType) || {};\r\n const storeConfig = this.getStoreConfig(storeKey, actionType, storeDetail);\r\n\r\n // Adding timestamp to dynamic config\r\n if (Object.keys(localDynamicConfig).length > 0) {\r\n localDynamicConfig.timestamp = Date.now();\r\n } else {\r\n const { componentConfig: { onMount } = {} } = this;\r\n const dynamicConfigForMount = onMount && onMount[storeKey] && getDynamicConfigFromOnMount(onMount, storeKey, this.curStoreKeys,\r\n actionConfigRequest, this.componentRouteProps, storeConfig);\r\n if (dynamicConfigForMount) {\r\n return dynamicConfigForMount;\r\n }\r\n }\r\n // Check if we have required API request config\r\n // const api = { ...actionConfigRequest, ...localDynamicConfig };\r\n const api = JSON.parse(JSON.stringify(deepMerge(actionConfigRequest, localDynamicConfig)));\r\n return Object.keys(api).length\r\n ? {\r\n api,\r\n store: storeConfig,\r\n }\r\n : undefined;\r\n }\r\n\r\n getStoreKeyFromAction(actionKey = '') {\r\n const [storeKey = '', actionType = ''] = actionKey.split('_');\r\n // return storeKeyToReturn;\r\n return {\r\n storeKey,\r\n actionType,\r\n };\r\n }\r\n\r\n getRequestQ(requestAPIQueue, requestType = REQUEST_TYPES.INIT) {\r\n const newRequestAPIQueue = requestAPIQueue.filter((singleRequest) => {\r\n const localSingleRequest = Object.assign(singleRequest);\r\n const { storeKey } = this.getStoreKeyFromAction(localSingleRequest.key);\r\n const { all = {} } = this.componentConfig;\r\n // Checking if the storeKey is part of props or has already been subscribed to redux store\r\n if ((all.indexOf(storeKey) > -1)) {\r\n // Redux Store Subscribed\r\n const { storeKey: { status = STATUS.UNLOADED } = {} } = this.curStoreKeys;\r\n if ((status > STATUS.INVALID)) {\r\n localSingleRequest.storeKey = storeKey;\r\n localSingleRequest.requestType = requestType;\r\n return localSingleRequest;\r\n }\r\n }\r\n return true;\r\n });\r\n return newRequestAPIQueue;\r\n }\r\n\r\n indexKeyByStatus(currentState = {}, criticals = []) {\r\n const statusToKeyMap = {};\r\n criticals.forEach((criticalKey) => {\r\n const { status = STATUS.UNLOADED } = currentState[criticalKey] || {};\r\n statusToKeyMap[status] = (statusToKeyMap[status] || []).concat(criticalKey);\r\n if (status > STATUS.LOADING && status !== STATUS.ERROR) {\r\n statusToKeyMap[STATUS.RESOLVED] = (statusToKeyMap[STATUS.RESOLVED] || []).concat(criticalKey);\r\n }\r\n });\r\n return statusToKeyMap;\r\n }\r\n\r\n checkAndResetBatch(statusToKeyMap = {}) {\r\n const currentUnloadedKeys = statusToKeyMap[STATUS.UNLOADED] || [];\r\n if (!currentUnloadedKeys.length) {\r\n return false;\r\n }\r\n\r\n for (let batchIndex = 0; batchIndex <= this.currentBatchIndex; batchIndex += 1) {\r\n const matchedKeys = this.batchedCriticalKeys[batchIndex] ? currentUnloadedKeys.filter(\r\n unloadedKey => this.batchedCriticalKeys[batchIndex].includes(unloadedKey),\r\n ) : [];\r\n if (matchedKeys.length) {\r\n this.resetBatch(batchIndex);\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n clearKeys = (storeKeys = []) => {\r\n this.dispatch({\r\n type: 'multikeys_clear',\r\n payload: {},\r\n keys: storeKeys,\r\n });\r\n }\r\n\r\n resetBatch(batchIndex) {\r\n this.nextBatchToProcess = [...(this.batchedCriticalKeys[batchIndex] || [])];\r\n this.currentBatchIndex = batchIndex;\r\n this.nextBatch(this.nextBatchToProcess, 'read');\r\n }\r\n\r\n areCriticalsResolved() {\r\n const { componentConfig: { critical = [] } } = this;\r\n const resolvedKeys = this.statusToKeyMap[STATUS.RESOLVED] || [];\r\n return resolvedKeys.length === critical.length;\r\n }\r\n\r\n areCriticalKeysValid() {\r\n const invalidKeys = [\r\n ...(this.statusToKeyMap[STATUS.ERROR] || []),\r\n ...(this.statusToKeyMap[STATUS.INVALID] || []),\r\n ];\r\n return invalidKeys.length;\r\n }\r\n\r\n isError() {\r\n return this.status.error;\r\n }\r\n\r\n isLoading() {\r\n return (!this.areCriticalsResolved());\r\n }\r\n\r\n start() {\r\n this.currentBatchIndex = 0;\r\n if (this.batchedCriticalKeys[this.currentBatchIndex]) {\r\n this.nextBatchToProcess = [...this.batchedCriticalKeys[this.currentBatchIndex]];\r\n this.nextBatch(this.nextBatchToProcess, 'read');\r\n }\r\n }\r\n\r\n updateBatch(method = 'read') {\r\n if (this.nextBatchToProcess.length === 0) {\r\n this.currentBatchIndex += 1;\r\n if (this.batchedCriticalKeys && this.batchedCriticalKeys[this.currentBatchIndex]) {\r\n // console.log('Process Next batch');\r\n this.nextBatchToProcess = [...this.batchedCriticalKeys[this.currentBatchIndex]];\r\n this.nextBatch(this.nextBatchToProcess, method);\r\n } else {\r\n // console.log('Finished Processing Batch');\r\n this.status.loading = false;\r\n }\r\n }\r\n }\r\n\r\n processResolvedKeys(state, resolvedKeys = []) {\r\n let indexOfResolvedKey = -1;\r\n resolvedKeys.forEach((resolvedKey) => {\r\n indexOfResolvedKey = this.nextBatchToProcess.indexOf(resolvedKey);\r\n if (indexOfResolvedKey > -1) {\r\n this.nextBatchToProcess.splice(indexOfResolvedKey, 1);\r\n }\r\n });\r\n this.updateBatch();\r\n }\r\n}\r\n","import { capitalize } from 'Commons/helpers/utils/DataHelpers';\r\nimport { isInternalDashboard } from 'Commons/helpers/utils/Utils';\r\n/* eslint-disable global-require */\r\n\r\n\r\n/**\r\n* @description Search Action config and return the HTTP request, if key and method exists\r\n* @param {*} storeKey The store key to search in action config\r\n* @param {*} method the method type to get\r\n*/\r\nexport const getActionConfig = (storeKey = '', method = '') => {\r\n const ActionConfig = isInternalDashboard()\r\n ? require('../../../../internal/redux/config/Action').default\r\n : require('../../../../external/redux/config/Action').default;\r\n return ActionConfig && ActionConfig[storeKey] && ActionConfig[storeKey][method]\r\n ? { timestamp: Date.now(), ...ActionConfig[storeKey][method] }\r\n : null;\r\n};\r\n\r\n/**\r\n* @description Search for dynamic config in onMountConfigs\r\n* @param {String} storeKey The key to search for in config\r\n* @param {Object} store The store keys component has access to\r\n* @param {String} actionConfig The static config of the store key\r\n*/\r\nexport const getDynamicConfigFromOnMount = (onMount = {}, storeKey, store = {}, actionConfig = {}, routeProps = {}, storeConfig) => {\r\n const onMountConfigs = isInternalDashboard()\r\n ? require('../../../../internal/redux/config/onMountConfigs').default\r\n : require('../../../../external/redux/config/onMountConfigs').default;\r\n const key = capitalize(storeKey);\r\n const { [storeKey]: { funcName = `resolve${key}` } = {} } = onMount;\r\n // If store key exists return config\r\n const getOnMountConfig = onMountConfigs && onMountConfigs[funcName];\r\n const onMountConfig = getOnMountConfig && getOnMountConfig(store, actionConfig, routeProps, storeConfig);\r\n if (onMountConfig) {\r\n const { api, ...rest } = onMountConfig;\r\n return {\r\n ...(api && {\r\n api: {\r\n ...api,\r\n timestamp: Date.now(),\r\n },\r\n }),\r\n ...rest,\r\n };\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const getCustomHeaderConfigByStoreKey = (storeKey) => {\r\n const CustomHeaderStoreConfig = isInternalDashboard()\r\n ? require('../../../../internal/redux/config/CustomHeadersConfigs').StoreCustomHeaders\r\n : require('../../../../external/redux/config/CustomHeadersConfigs').StoreCustomHeaders;\r\n // If store key exists return config\r\n if (CustomHeaderStoreConfig && storeKey) {\r\n return CustomHeaderStoreConfig[storeKey];\r\n }\r\n return null;\r\n};\r\n","export default ['permission', 'currentFacility', 'currentAccountId', 'currentPrinter'];\r\n","import { isExternalDashboard, isLiveData, isInternalDashboard } from 'Commons/helpers/utils/Utils';\r\nimport GLOBAL_STORE_KEYS from './config/GlobalStoreKeys';\r\n\r\nlet Dependency = require('../../../../external/redux/config/Dependency').default;\r\n\r\nconst TYPE = { ROUTE_BASED: 0, COMPONENT_BASED: 1 };\r\n\r\nexport default class ConfigLoader {\r\n constructor() {\r\n this.initialized = false;\r\n }\r\n\r\n init(route, componentName) {\r\n this.componentName = componentName;\r\n this.route = route || {};\r\n this.initializeDependency();\r\n this.initializeType();\r\n this.initializeConfig();\r\n return this.config;\r\n }\r\n\r\n initializeType() {\r\n this.type = Dependency[this.componentName] ? TYPE.COMPONENT_BASED : TYPE.ROUTE_BASED;\r\n }\r\n\r\n initializeConfig() {\r\n if (this.type === TYPE.COMPONENT_BASED) {\r\n this.initializeConfigByComponentName();\r\n } else {\r\n this.initializeConfigByRoute();\r\n }\r\n }\r\n\r\n initializeDependency() {\r\n const { url = '' } = this.route;\r\n if (isInternalDashboard(url)) {\r\n // eslint-disable-next-line global-require\r\n Dependency = require('../../../../internal/redux/config/Dependency').default;\r\n } else if (isExternalDashboard(url) || isLiveData(url)) {\r\n // eslint-disable-next-line global-require\r\n Dependency = require('../../../../external/redux/config/Dependency').default;\r\n }\r\n }\r\n\r\n initializeConfigByComponentName() {\r\n this.dependencyConfig = Dependency[this.componentName] || {};\r\n this.config = this.flattenStoreKeys(Dependency[this.componentName]);\r\n this.initialized = true;\r\n }\r\n\r\n initializeConfigByRoute() {\r\n const { pathList = [] } = this.route;\r\n let dependency = Dependency;\r\n const depth = pathList.length;\r\n this.currentRoute = this.getCurrentPath();\r\n pathList.map((route) => {\r\n dependency = dependency[route] || {};\r\n return true;\r\n });\r\n this.dependencyConfig = dependency[this.currentRoute] || {};\r\n this.config = this.flattenStoreKeys({ ...dependency[this.currentRoute], depth });\r\n this.initialized = true;\r\n }\r\n\r\n flattenStoreKeys({ critical = {}, lazy = {}, onDemand = {}, depth = -1, onMount = null, permissionKey = '' } = {}) {\r\n const keys = {\r\n critical: Object.keys(critical),\r\n lazy: Object.keys(lazy),\r\n onDemand: Object.keys(onDemand),\r\n onMount,\r\n permissionKey,\r\n dependencyConfig: this.dependencyConfig,\r\n };\r\n return {\r\n ...keys,\r\n depth,\r\n all: [...GLOBAL_STORE_KEYS, ...keys.critical, ...keys.lazy, ...keys.onDemand],\r\n };\r\n }\r\n\r\n getCurrentPath() {\r\n const { path = '', pathList = [] } = this.route;\r\n const parentPath = pathList.length ? `/${pathList.join('/')}` : '';\r\n return path.slice(parentPath.length + 1, path.length);\r\n }\r\n\r\n getRouteList() {\r\n return {\r\n pathList: this.getPathList(),\r\n urlList: this.route.urlList.concat(this.route.url),\r\n };\r\n }\r\n\r\n getPathList() {\r\n return this.currentRoute ? this.route.pathList.concat(this.currentRoute) : this.route.pathList;\r\n }\r\n\r\n get() {\r\n return this.config;\r\n }\r\n}\r\n","const enums = { status: ['Active', 'Created', 'Inactive', 'Deleted'] };\r\n\r\nexport default enums;\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst STATUS = mapEnum(enums.status);\r\n\r\n\r\nexport { STATUS };\r\n","import { mapEnum } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './Enums';\r\n\r\nconst USER_ROLE_CATEGORY_TYPE = mapEnum(enums.userRoleCategoryType);\r\n\r\nexport { USER_ROLE_CATEGORY_TYPE };\r\n","export default {\r\n userRoleCategoryType: [\r\n 'Admin', 'Configuration', 'Financials', 'Maintenance_Event', 'Occupancy', 'Reports', 'Retail_Sale',\r\n 'Syrapay_Merchant_Portal', 'Tenant', 'Unit',\r\n ],\r\n};\r\n","import { Grid, Loader, Typography, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport { Form, Formik } from 'formik';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport { getDiffProperties, isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport Button from 'Generic/button/components/Button';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport { isUserLocked } from 'Commons/components/business/user/form/utils/Helpers';\r\nimport Header from 'Commons/components/business/user/form/components/Header';\r\nimport { EMPTY_FUNC, SOURCE, STATUS } from 'Commons/config/constants/Constants';\r\nimport { VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport { createRef } from 'react';\r\nimport INTERNAL_ROUTES from 'Internal/redux/config/RouteNames';\r\nimport { getUserActionBreadCrumb } from 'Internal/containers/accountManagement/components/userSetup/config/BreadCrumbItem';\r\nimport { convertToNumber, isLiveData } from 'Commons/helpers/utils/Utils';\r\nimport {\r\n forcePasswordReset,\r\n getUserData,\r\n saveEditedUserAction,\r\n saveNewUserAction,\r\n unlockUser,\r\n userAssociation,\r\n userPermissionSearch,\r\n userSearch,\r\n} from './config/ApiRequests';\r\nimport BasicInformation from './components/BasicInformation';\r\nimport Preview from './components/Preview';\r\nimport RoleSelection from './components/RoleSelection';\r\nimport userFormStyle from './styles/UserFormStyle';\r\nimport { ENTITY_TYPE } from './config/RoleSelectionConfig';\r\nimport preProcessPreviewData from './utils/previewDataPreProcessor';\r\nimport { storeKeyToEntityTypeMapping, USER_ACTION_ITEM } from './config/Constants';\r\n\r\nclass UserForm extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n const {\r\n fetchLazy,\r\n match: { url } = {},\r\n facility: { data: { data: facility = [] } = {} } = {},\r\n } = props;\r\n fetchLazy('read', { api: { dynamic: { body: isLiveData(url) ? { size: 1000 } : {} } } });\r\n this.defaultAlertDialogConfig = {\r\n title: localisable.warning,\r\n buttonText: localisable.okInCapitals,\r\n alertMessage: localisable.discardConfirmation,\r\n };\r\n this.state = {\r\n userList: [],\r\n loading: false,\r\n previewData: [],\r\n isDataUpdated: false,\r\n shouldShowAlert: false,\r\n initialFormStatus: {},\r\n alertDialogConfig: this.defaultAlertDialogConfig,\r\n ...this.isModeCreate() && {\r\n userInfo: {},\r\n initialFormStatus: { formStatus: STATUS.Active.value },\r\n },\r\n roleSelectionContainerRefSet: false,\r\n };\r\n this.alertDialogConfig = this.defaultAlertDialogConfig;\r\n this.userPermissions = [];\r\n this.initialPermissions = [];\r\n this.facilityObject = this.convertArrayToObject(facility);\r\n this.defaultFacilityList = [];\r\n this.roleSelectionContainerRef = createRef();\r\n }\r\n\r\n setFacilityObject = () => {\r\n if (!this.facilityObject) {\r\n const { facility: { data: { data: facility = [] } = {} } = {} } = this.props;\r\n this.facilityObject = this.convertArrayToObject(facility);\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const { getBreadCrumbList } = this.props;\r\n this.setFacilityObject();\r\n this.unblock = this.allowNavigation(this.shouldLeave, ['create', 'edit']);\r\n if (!this.isModeCreate()) {\r\n this.fetchUser();\r\n }\r\n if (getBreadCrumbList) {\r\n const { match: { params: { accountId } = {} } = {}, location: { state: { fid } } } = this.props;\r\n const { facilityObject: { [fid]: { name } = {} } } = this;\r\n const mode = this.isModeCreate() ? 'create' : 'edit';\r\n getBreadCrumbList(getUserActionBreadCrumb(mode, name, accountId, fid));\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setFacilityObject();\r\n const { unblock = () => { } } = this;\r\n unblock();\r\n }\r\n\r\n shouldLeave = () => {\r\n const { dirty, isValid } = this.formProps;\r\n const { isDataUpdated } = this.state;\r\n const { clearStoreKeys = EMPTY_FUNC } = this.props;\r\n if (dirty || isValid || isDataUpdated) {\r\n this.setState({ discard: true });\r\n return false;\r\n }\r\n if (this.isFormUpdated) {\r\n clearStoreKeys(['user']);\r\n }\r\n return true;\r\n }\r\n\r\n getRoleSelectionContainerRef = (ref) => {\r\n if (ref) {\r\n this.roleSelectionContainerRef = ref;\r\n this.setState({ roleSelectionContainerRefSet: true });\r\n }\r\n };\r\n\r\n isFormActive = () => {\r\n const { status: { formStatus } = {} } = this.formProps;\r\n return [STATUS.Active.value, STATUS.Created.value].includes(formStatus);\r\n }\r\n\r\n setLoading = (value = true) => this.setState({ loading: value })\r\n\r\n convertArrayToObject = (data = []) => data.reduce((obj, element) => ({\r\n ...obj,\r\n [element.id]: element,\r\n }), {})\r\n\r\n getRoleList = () => {\r\n const { userRole: { data: { data: rolesData = [] } = {} } = {} } = this.props;\r\n return rolesData.reduce((obj, role) => ({\r\n ...obj,\r\n [role.id]: role,\r\n }), {});\r\n }\r\n\r\n fetchUser = () => {\r\n const { onAction, match: { params: { userId, accountId } } } = this.props;\r\n getUserData({\r\n onAction,\r\n accountId,\r\n userId,\r\n callback: this.onUserFetch,\r\n });\r\n }\r\n\r\n preProcessPermissions = (permissions) => {\r\n const [{ permission: { roleId = '', ...remainingRoleMappings } = {}, ...otherValues }] = permissions;\r\n const [accountId] = Object.keys(this.accountObject);\r\n return [{\r\n ...otherValues,\r\n permission: {\r\n ...roleId && { account: { [accountId]: { roleId } } },\r\n ...remainingRoleMappings,\r\n },\r\n }];\r\n }\r\n\r\n onUserFetch = (apiError, response, isUserFetch) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n } else if (response) {\r\n if (isUserFetch) {\r\n const {\r\n data: [userInfo] = [],\r\n relationalData: { userAuthDetails: [{ lockedUntil } = {}] = [] } = {},\r\n } = response;\r\n const { status } = userInfo || {};\r\n this.setState({\r\n userInfo,\r\n isUserLockedValue: isUserLocked(lockedUntil),\r\n initialFormStatus: { formStatus: status },\r\n });\r\n } else {\r\n let { data: { permissions } } = response;\r\n permissions = permissions && this.preProcessPermissions(permissions);\r\n this.initialPreviewData(permissions);\r\n }\r\n }\r\n }\r\n\r\n initialPreviewData = (permissions = []) => {\r\n this.initialPermissions = deepCopy(permissions);\r\n this.getPreviewData(permissions);\r\n }\r\n\r\n getPreviewData = (permissions = [], dataUpdated) => {\r\n const { facilityObject, accountObject, businessGroupObject } = this;\r\n const { userRole: { data: { data: rolesData = [] } = {} } = {} } = this.props;\r\n this.userPermissions = [];\r\n permissions.forEach((permissionData) => {\r\n const facilityPermissions = {};\r\n const {\r\n permission: { facility = {}, ...restNestedPermissions } = {},\r\n ...restPermissionData\r\n } = permissionData || {};\r\n Object.keys(facility).forEach((id) => {\r\n const { [id]: facilityData = {} } = facilityObject;\r\n if (isObjWithKeys(facilityData)) {\r\n facilityPermissions[id] = facility[id];\r\n }\r\n });\r\n this.userPermissions.push({\r\n ...restPermissionData,\r\n permission: { ...restNestedPermissions, facility: facilityPermissions },\r\n });\r\n });\r\n const initialUserRoleData = preProcessPreviewData({\r\n permissions: this.userPermissions,\r\n roles: rolesData,\r\n facilityObject,\r\n accountObject,\r\n businessGroupObject,\r\n });\r\n this.getDefaultFacilitiesList();\r\n this.setState({ previewData: initialUserRoleData, isDataUpdated: dataUpdated });\r\n }\r\n\r\n onApplyRole = ({ selectedRole, selectedEntity }) => {\r\n const { previewData = [] } = this.state;\r\n const { id: selectedRoleId, name: selectedRoleLabel } = selectedRole;\r\n const updatedPreviewData = deepCopy(previewData);\r\n const { onRowSelect, type: entityType, ...roleData } = selectedEntity;\r\n // eslint-disable-next-line no-nested-ternary\r\n const color = (entityType === ENTITY_TYPE.FACILITY)\r\n ? 'rolesTertiary'\r\n : (entityType === ENTITY_TYPE.BUSINESSGROUP)\r\n ? 'rolesSecondary'\r\n : 'rolesPrimary';\r\n this.updateUserPermissions({ selectedRole, selectedEntity });\r\n const indexOfUpdatedRole = updatedPreviewData.findIndex(roles => roles.id === selectedRoleId);\r\n if (indexOfUpdatedRole >= 0) {\r\n const roleToUpdate = updatedPreviewData[indexOfUpdatedRole];\r\n const { permissions } = roleToUpdate;\r\n permissions.push({ color, type: entityType, ...roleData });\r\n } else {\r\n const permissionsData = [];\r\n permissionsData.push({ color, type: entityType, ...roleData });\r\n updatedPreviewData.push({ id: selectedRoleId, name: selectedRoleLabel, permissions: permissionsData });\r\n }\r\n this.defaultFacilityList.push({ label: selectedEntity.name, value: selectedEntity.id });\r\n this.setState({ previewData: updatedPreviewData, isDataUpdated: true });\r\n }\r\n\r\n getRespectiveData = (tabName) => {\r\n switch (tabName) {\r\n case ENTITY_TYPE.BUSINESSGROUP: return this.businessGroupObject;\r\n case ENTITY_TYPE.ACCOUNT: return this.accountObject;\r\n default: return this.facilityObject;\r\n }\r\n }\r\n\r\n selectAllPreviewData = ({ tabName, selectedRoleData }) => {\r\n const { id: roleId } = selectedRoleData;\r\n const [{ permission = {} } = {}] = this.userPermissions;\r\n const getRespectedData = this.getRespectiveData(tabName);\r\n permission[tabName] = Object.keys(getRespectedData).reduce((obj, tabKey) => ({\r\n ...obj,\r\n [tabKey]: { roleId },\r\n }), {});\r\n this.getPreviewData([{ permission: { ...permission } }], true);\r\n }\r\n\r\n updateUserPermissions = ({ selectedRole, selectedEntity }) => {\r\n const { type: entityType, id: entityId } = selectedEntity;\r\n const { id: selectedRoleId } = selectedRole;\r\n const [{ permission = {} } = {}] = this.userPermissions;\r\n if (permission && permission[entityType]) {\r\n permission[entityType][entityId] = { roleId: convertToNumber(selectedRoleId) };\r\n } else {\r\n permission[entityType] = { [entityId]: { roleId: convertToNumber(selectedRoleId) } };\r\n this.userPermissions.push({ permission: { ...permission } });\r\n }\r\n }\r\n\r\n getUserFooter = () => {\r\n const { isValid } = this.formProps;\r\n const { isDataUpdated, isButtonLoading } = this.state;\r\n const positiveButtonProps = { disabled: !((isValid || isDataUpdated) && !isButtonLoading) };\r\n return this.getFooter({ positiveButtonProps });\r\n }\r\n\r\n onDeleteRole = (parentIndex, index, data) => {\r\n const { previewData } = this.state;\r\n const { type: typeOfDeleteData, id: deletedId } = data;\r\n const [{ permission = {} } = {}] = this.userPermissions;\r\n const updatedPreviewData = deepCopy(previewData);\r\n const { id, name, permissions } = updatedPreviewData[parentIndex];\r\n permissions.splice(index, 1);\r\n updatedPreviewData[parentIndex] = { id, name, permissions };\r\n delete permission[typeOfDeleteData][deletedId];\r\n this.defaultFacilityList.splice(this.defaultFacilityList.findIndex(\r\n facility => facility.value === deletedId,\r\n ), 1);\r\n this.setState({ previewData: updatedPreviewData, isDataUpdated: true });\r\n }\r\n\r\n deleteAllRoles = () => {\r\n const { setValues, values: { defaultFacility, ...otherValues } } = this.formProps;\r\n this.userPermissions = [];\r\n this.defaultFacilityList = [];\r\n setValues({ ...otherValues });\r\n this.setState({ previewData: [], isDataUpdated: true });\r\n }\r\n\r\n setUserListData = (apiError, response) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n }\r\n if (response) {\r\n const { success, data } = response;\r\n const { match: { params: { userId } = {} } = {} } = this.props;\r\n if (success) {\r\n if (!this.userList) {\r\n this.userList = deepCopy(data);\r\n if (userId) {\r\n this.userList = this.userList.filter(({ id }) => id !== userId);\r\n }\r\n }\r\n this.setState({ userList: this.userList });\r\n }\r\n }\r\n this.setState({ isButtonLoading: false });\r\n }\r\n\r\n onCopyClick = () => {\r\n const { userList } = this.state;\r\n if (!this.userList) {\r\n this.onUserSearch();\r\n } else if (this.userList.length !== userList.length) {\r\n this.setState({ userList: this.userList });\r\n }\r\n }\r\n\r\n fetchSelectedUserPermission = (user) => {\r\n const { onAction } = this.props;\r\n const { id } = user;\r\n userPermissionSearch({ onAction, userId: id, callback: this.copyUserList });\r\n }\r\n\r\n copyUserList = (apiError, response) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n }\r\n if (response) {\r\n const { success, data } = response;\r\n if (success) {\r\n this.copiedList = data;\r\n }\r\n }\r\n this.setState({ isButtonLoading: false });\r\n }\r\n\r\n onUserSearch = (data) => {\r\n const { onAction } = this.props;\r\n let filter = [];\r\n if (data) {\r\n filter = [{ match: { firstName: data } }];\r\n }\r\n userSearch({ onAction, filter, callback: this.setUserListData });\r\n }\r\n\r\n onCopy = (entityList) => {\r\n const { permissions: [{ permission }] } = this.copiedList;\r\n const data = Object.keys(entityList).reduce((obj, entity) => {\r\n const tempObj = obj;\r\n if (entityList[entity]) {\r\n if (permission[entity]) {\r\n tempObj[entity] = deepCopy(permission[entity]);\r\n }\r\n }\r\n return tempObj;\r\n }, {});\r\n this.getPreviewData([{ permission: { ...data } }], true);\r\n }\r\n\r\n renderMask = () => {\r\n const { classes } = this.props;\r\n return ();\r\n }\r\n\r\n getComponents = () => {\r\n const {\r\n classes,\r\n businessGroup: { data: { data: businessGroup, data: [{ account: accountId } = {}] = [] } = {} } = {},\r\n account: { data: { data: account } = {} } = {},\r\n facility: { data: { data: facility = [] } = {} } = {},\r\n onAction,\r\n } = this.props;\r\n const {\r\n userInfo: { userType } = {}, previewData, userList,\r\n roleSelectionContainerRefSet,\r\n } = this.state;\r\n const { userPermissions = {}, formProps } = this;\r\n if (businessGroup && !this.businessGroupObject) {\r\n this.businessGroupObject = this.convertArrayToObject(businessGroup);\r\n if (this.accountObject) {\r\n const { [accountId]: accountBelongsToUser } = this.accountObject;\r\n this.accountObject = { [accountId]: accountBelongsToUser };\r\n }\r\n }\r\n if (account && !this.accountObject) {\r\n this.accountObject = this.convertArrayToObject(\r\n accountId ? account.filter(({ id }) => id === accountId) : account,\r\n );\r\n }\r\n if (facility && !this.facilityObject) {\r\n this.facilityObject = this.convertArrayToObject(facility);\r\n }\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n\r\n \r\n {(!!this.businessGroupObject || !!this.accountObject) && roleSelectionContainerRefSet ? (\r\n \r\n ) : this.renderLoader()}\r\n {!this.isFormActive() && this.renderMask()}\r\n \r\n \r\n \r\n {\r\n (!!this.businessGroupObject || !!this.accountObject) && (\r\n \r\n )\r\n }\r\n {!this.isFormActive() && this.renderMask()}\r\n \r\n \r\n );\r\n }\r\n\r\n saveNewUser = (user) => {\r\n this.shouldAssignRoles = !!this.userPermissions.length;\r\n const { defaultFacility, ...otherUserData } = user;\r\n this.setState({ isButtonLoading: true });\r\n const { onAction, match: { params: { accountId }, path } } = this.props;\r\n const internalRoute = path.split('/')[1];\r\n const userData = internalRoute === INTERNAL_ROUTES.INTERNAL_MAIN ? { ...otherUserData, account_id_list: [Number(accountId)] } : { ...otherUserData };\r\n saveNewUserAction({ onAction, user: { ...userData }, accountId, callback: this.onNewUserSave });\r\n }\r\n\r\n onNewUserSave = (apiError, response) => {\r\n const { userInfo } = this.state;\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n this.setState({ isButtonLoading: false });\r\n }\r\n if (response) {\r\n const { success, data } = response;\r\n if (success) {\r\n const [userData] = data;\r\n const { id } = userData;\r\n this.setSnackbarProps(true, localisable.userFormCreated);\r\n if (this.shouldAssignRoles) {\r\n this.onUserAssociate(id);\r\n } else {\r\n this.setState({\r\n discard: false,\r\n isDataUpdated: false,\r\n isButtonLoading: false,\r\n userInfo: { ...userInfo, ...this.editFormData },\r\n });\r\n this.goBack();\r\n }\r\n }\r\n }\r\n }\r\n\r\n onEditedUserSave = (apiError, response) => {\r\n const { userInfo } = this.state;\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n this.setState({ isButtonLoading: false });\r\n }\r\n if (response) {\r\n const { success } = response;\r\n if (success) {\r\n this.setSnackbarProps(true, localisable.userFormUpdated);\r\n this.setState({\r\n discard: false,\r\n isDataUpdated: false,\r\n isButtonLoading: false,\r\n userInfo: { ...userInfo, ...this.editFormData },\r\n });\r\n this.goBack();\r\n }\r\n }\r\n }\r\n\r\n getPermission = (roleList = [], permission = {}, role = '') => {\r\n Object.keys(permission).forEach((entity) => {\r\n Object.keys(permission[entity]).forEach((entityId) => {\r\n roleList.push({\r\n entityType: storeKeyToEntityTypeMapping[entity],\r\n entityId,\r\n actionType: role,\r\n roleId: permission[entity][entityId].roleId,\r\n });\r\n });\r\n });\r\n }\r\n\r\n getAssignedRoles = () => {\r\n const roleList = [];\r\n if (this.isModeCreate()) {\r\n if (this.userPermissions && this.userPermissions.length) {\r\n const [{ permission = {} } = {}] = this.userPermissions;\r\n this.getPermission(roleList, permission, 'Assign');\r\n }\r\n } else {\r\n if (Object.keys(this.updatedRoles).length) {\r\n const { 0: { permission = {} } } = this.updatedRoles;\r\n this.getPermission(roleList, permission, 'Assign');\r\n }\r\n if (Object.keys(this.deletedRoles).length) {\r\n const { 0: { permission = {} } } = this.deletedRoles;\r\n this.getPermission(roleList, permission, 'Delete');\r\n }\r\n }\r\n return roleList;\r\n }\r\n\r\n onUserAssociate = (id) => {\r\n const { onAction, match: { params: { accountId } } } = this.props;\r\n const permissions = this.getAssignedRoles();\r\n userAssociation({ onAction, id, accountId, permissions, callback: this.onAssociateUser });\r\n }\r\n\r\n onAssociateUser = (apiError, response) => {\r\n const { userInfo } = this.state;\r\n const { onAction, match: { params: { userId } } } = this.props;\r\n const { defaultFacility } = this.editFormData;\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n this.setState({ isButtonLoading: false });\r\n }\r\n if (response) {\r\n const { success, data } = response;\r\n if (success) {\r\n if (!this.isModeCreate()) {\r\n if (Object.keys(this.editFormData).length) {\r\n const { match: { params: { accountId } } } = this.props;\r\n saveEditedUserAction({\r\n onAction,\r\n userId,\r\n accountId,\r\n editFormData: this.editFormData,\r\n callback: this.onEditedUserSave,\r\n });\r\n } else {\r\n this.setSnackbarProps(true, localisable.userFormUpdated);\r\n this.setState({\r\n discard: false,\r\n isDataUpdated: false,\r\n isButtonLoading: false,\r\n userInfo: { ...userInfo, ...this.editFormData },\r\n });\r\n this.goBack();\r\n }\r\n } else if (defaultFacility) {\r\n const [{ user: createdUserId } = {}] = data;\r\n const { match: { params: { accountId } } } = this.props;\r\n saveEditedUserAction({\r\n onAction,\r\n userId: createdUserId,\r\n accountId,\r\n editFormData: { defaultFacility },\r\n callback: this.onEditedUserSave,\r\n });\r\n } else {\r\n this.setSnackbarProps(true, localisable.userFormCreated);\r\n this.setState({\r\n discard: false,\r\n isDataUpdated: false,\r\n isButtonLoading: false,\r\n userInfo: { ...userInfo, ...this.editFormData },\r\n });\r\n this.goBack();\r\n }\r\n }\r\n }\r\n }\r\n\r\n goBack = () => {\r\n const { history, clearStoreKeys } = this.props;\r\n this.shouldChangeRoute = true;\r\n clearStoreKeys(['user']);\r\n history.goBack();\r\n }\r\n\r\n getDefaultFacilitiesList = () => {\r\n const { userPermissions } = this;\r\n if (userPermissions.length) {\r\n const { permission: { facility: facilityPermissions = {} } = {} } = userPermissions[0];\r\n if (facilityPermissions) {\r\n this.defaultFacilityList = Object.keys(facilityPermissions).map(\r\n facility => ({ label: this.facilityObject[facility].name, value: facility }),\r\n );\r\n }\r\n }\r\n }\r\n\r\n saveEditedUser = () => {\r\n this.setState({ isButtonLoading: true });\r\n const { onAction, match: { params: { userId } } } = this.props;\r\n this.updatedRoles = getDiffProperties(this.initialPermissions, this.userPermissions);\r\n this.deletedRoles = getDiffProperties(this.userPermissions, this.initialPermissions);\r\n this.shouldAssignRoles = (Object.keys(this.updatedRoles).length || Object.keys(this.deletedRoles).length);\r\n if (this.shouldAssignRoles) {\r\n this.onUserAssociate(userId);\r\n } else {\r\n const { match: { params: { accountId } } } = this.props;\r\n saveEditedUserAction({\r\n onAction,\r\n userId,\r\n accountId,\r\n editFormData: this.editFormData,\r\n callback: this.onEditedUserSave,\r\n });\r\n }\r\n }\r\n\r\n handleUnlockUserOrForcePasswordResetResponse = (apiError, response, actionItemSource) => {\r\n let isSuccess = false;\r\n let message = localisable.somethingWentWrong;\r\n let variant = VARIANT.error.value;\r\n if (apiError) {\r\n message = actionItemSource === USER_ACTION_ITEM.UNLOCK\r\n ? localisable.failedToUnlockUser\r\n : localisable.failedToForcePasswordReset;\r\n } else if (response) {\r\n const { success = false } = response;\r\n if (success) {\r\n message = localisable.mailSentToUserSuccessfully;\r\n variant = VARIANT.success.value;\r\n isSuccess = true;\r\n }\r\n }\r\n this.setSnackbarProps(true, message, variant);\r\n this.setState({\r\n loading: false,\r\n ...(isSuccess && actionItemSource === USER_ACTION_ITEM.UNLOCK && { isUserLockedValue: false }),\r\n });\r\n }\r\n\r\n handlePositiveAlertButtonClick = (userId, actionItemSource) => {\r\n const { onAction } = this.props;\r\n if ([USER_ACTION_ITEM.ACTIVATE, USER_ACTION_ITEM.DEACTIVATE].includes(actionItemSource)) {\r\n this.handleStatusChangeYes(userId, SOURCE.user.value, {\r\n customHeaderOptions: {\r\n type: 'store',\r\n key: 'account',\r\n },\r\n });\r\n return;\r\n }\r\n this.setLoading();\r\n switch (actionItemSource) {\r\n case USER_ACTION_ITEM.UNLOCK:\r\n unlockUser(onAction, userId,\r\n (apiError, response) => this.handleUnlockUserOrForcePasswordResetResponse(apiError, response, actionItemSource));\r\n break;\r\n case USER_ACTION_ITEM.FORCE_PASSWORD_RESET:\r\n forcePasswordReset(onAction, userId,\r\n (apiError, response) => this.handleUnlockUserOrForcePasswordResetResponse(apiError, response, actionItemSource));\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n onAlertYesAction = (userId, actionItemSource) => {\r\n const { state: { discard } = {}, formProps: { dirty } = {}, defaultAlertDialogConfig } = this;\r\n this.setState({ discard: false, shouldShowAlert: false });\r\n if (discard && dirty && !actionItemSource) {\r\n this.handleYes();\r\n } else if (actionItemSource) {\r\n this.handlePositiveAlertButtonClick(userId, actionItemSource);\r\n }\r\n this.alertDialogConfig = defaultAlertDialogConfig;\r\n }\r\n\r\n renderHeader = () => {\r\n const {\r\n formProps,\r\n setLoading,\r\n isModeCreate,\r\n isFormActive,\r\n showAlertDialog,\r\n props: { permission, userProfile = {} },\r\n state: { isUserLockedValue } = {},\r\n } = this;\r\n return (\r\n \r\n );\r\n }\r\n\r\n showAlertDialog = (source) => {\r\n const { userInfo: { firstName, lastName } = {} } = this.state;\r\n const userName = getName({ firstName, lastName });\r\n let alertDialogConfig = this.defaultAlertDialogConfig;\r\n if (source === USER_ACTION_ITEM.ACTIVATE) {\r\n alertDialogConfig = {\r\n ...alertDialogConfig,\r\n source,\r\n buttonText: `${localisable.yes}, ${localisable.activate}`.toUpperCase(),\r\n alertMessage: localisable.userActivateConfirmation,\r\n };\r\n } else if (source === USER_ACTION_ITEM.DEACTIVATE) {\r\n alertDialogConfig = {\r\n ...alertDialogConfig,\r\n source,\r\n buttonColor: 'error',\r\n buttonText: `${localisable.yes}, ${localisable.deactivate}`.toUpperCase(),\r\n alertMessage: localisable.userDeactivateConfirmation,\r\n };\r\n } else if (source === USER_ACTION_ITEM.UNLOCK) {\r\n alertDialogConfig = {\r\n ...alertDialogConfig,\r\n source,\r\n title: localisable.unlockUser,\r\n buttonText: localisable.unlock.toUpperCase(),\r\n alertMessage: `${localisable.anEmailWillBeSentTo} ${userName} ${localisable.forUnlock}`,\r\n };\r\n } else if (source === USER_ACTION_ITEM.FORCE_PASSWORD_RESET) {\r\n alertDialogConfig = {\r\n ...alertDialogConfig,\r\n source,\r\n title: localisable.forcePasswordReset,\r\n buttonText: localisable.resetPassword.toUpperCase(),\r\n alertMessage: localisable.forcePasswordResetConfirmation,\r\n };\r\n }\r\n this.alertDialogConfig = alertDialogConfig;\r\n this.setState({ shouldShowAlert: true });\r\n }\r\n\r\n onAlertClose = () => {\r\n const { state: { discard } = {}, formProps: { dirty } = {}, defaultAlertDialogConfig } = this;\r\n if (discard && dirty) {\r\n this.setState({ discard: false });\r\n this.targetLocation = '';\r\n } else {\r\n this.alertDialogConfig = defaultAlertDialogConfig;\r\n this.setState({ shouldShowAlert: false });\r\n }\r\n }\r\n\r\n renderAlertDialog = () => {\r\n const {\r\n formProps: { dirty = false }, onAlertClose,\r\n state: {\r\n shouldShowAlert,\r\n discard = false,\r\n },\r\n props: { match: { params: { userId } = {} } = {} } = {},\r\n alertDialogConfig: { title, source: actionItemSource, buttonColor, buttonText, alertMessage } = {},\r\n } = this;\r\n return (\r\n \r\n \r\n {localisable.cancelLabel}\r\n \r\n this.onAlertYesAction(userId, actionItemSource)}\r\n variant=\"text\"\r\n color={buttonColor}\r\n >\r\n {buttonText}\r\n \r\n \r\n )}\r\n >\r\n {alertMessage}\r\n \r\n );\r\n }\r\n\r\n renderLoader = () => {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderComponent() {\r\n const {\r\n props: { classes, showBreadCrumb, breadCrumbList } = {},\r\n state: {\r\n loading,\r\n userInfo,\r\n initialFormStatus,\r\n userInfo: { firstName, lastName } = {},\r\n } = {},\r\n } = this;\r\n return (\r\n userInfo\r\n ? (\r\n <>\r\n {\r\n this.formProps = formProps;\r\n return (\r\n
\r\n \r\n {this.getComponents()}\r\n \r\n \r\n );\r\n }}\r\n />\r\n {this.renderAlertDialog()}\r\n \r\n )\r\n : this.renderLoader()\r\n\r\n );\r\n }\r\n}\r\n\r\nUserForm.propTypes = {\r\n mode: PropTypes.oneOf(['edit', 'create']),\r\n onAction: PropTypes.func,\r\n fetchLazy: PropTypes.func,\r\n};\r\n\r\nUserForm.defaultProps = {\r\n mode: 'create',\r\n onAction: () => { },\r\n fetchLazy: () => { },\r\n};\r\n\r\nexport default withStyles(userFormStyle)(UserForm);\r\n","/* eslint-disable no-restricted-syntax */\r\nimport {\r\n DASHBOARD_TYPE, EMPTY_FUNC, FACILITY_LICENSE_STATUS,\r\n SESSION_TIMEOUT,\r\n} from 'Commons/config/constants/Constants';\r\nimport { withStyles, Grid } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport BaseComponent from 'Commons/components/business/basecomponent/components/BaseComponent';\r\nimport SideBarContext from 'Commons/contexts/SideBarContext';\r\nimport PermissionContext from 'Commons/contexts/PermissionContext';\r\nimport WSChangeGroupContext from 'Commons/contexts/WSChangeGroupContext';\r\nimport WebSocketInstance from 'Commons/components/business/socket/WebSocket';\r\nimport COOKIE_KEY from 'Commons/redux/config/CookieKey';\r\nimport { getCookie, deleteCookie, setCookie } from 'Commons/redux/helper/CookieManager';\r\nimport GeneralPages from 'Generic/generalPages/components/GeneralPages';\r\nimport { VARIANT } from 'Generic/generalPages/config/Config';\r\nimport WSUpdatePropsContext from 'Commons/contexts/WSUpdatePropsContext';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport {\r\n isSettings, isInternalDashboard, isLiveData,\r\n isExternalDashboard, isLiveSettings, isPulledSettings, getJsonFromUrl, isSyrasoftUser,\r\n} from 'Commons/helpers/utils/Utils';\r\nimport INTERNAL_ROUTES from 'Internal/redux/config/RouteNames';\r\nimport StandaloneAppDownloadContext from 'Commons/contexts/StandaloneAppDownloadContext';\r\nimport { changeFacilityRequest } from 'External/containers/dashboard/widgets/header/configs/ApiRequests';\r\nimport { CRUD_METHODS, DEFAULT_EXTERNAL_ROUTE } from 'Commons/redux/config/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport {\r\n CURRENT_FACILITY_STORE_KEY,\r\n FACILITY_STORE_KEY,\r\n} from 'External/containers/dashboard/widgets/header/configs/Constants';\r\nimport { VARIANT as SNACKBAR_VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport dashboardStyle from './styles/DashboardStyle';\r\nimport { updateFacilityStore, updateSessionTimeout } from './config/ApiRequests';\r\nimport { BLUR_EVENT_LISTENER, FOCUS_EVENT_LISTENER, getEventListeners } from './config/EventListeners';\r\nimport LegalAgreement from './LegalAgreement';\r\nimport { clsx } from '../../../helpers/utils/clsx';\r\n\r\nconst JSZip = require('jszip');\r\n\r\nclass Dashboard extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n const {\r\n downloadStandaloneApp, setFinishedDownloadCallback, onFocus, onBlur, connectWebsocket,\r\n resolveCurrentFacilityDetails, resolveAppropriateRoute,\r\n props: { userProfile: { data: { data: [{ userType } = {}] = [{}] } = {} } } = {},\r\n } = this;\r\n const { withProvider } = window;\r\n window.userType = userType;\r\n this.SideBar = withProvider('SideBar', props, false);\r\n this.childrenToNotify = [];\r\n this.initializeDashboardComponents(props);\r\n this.resolveQuickbooksUrl(props);\r\n this.standaloneAppDownloadDetails = { downloadStandaloneApp, setFinishedDownloadCallback };\r\n this.eventListeners = getEventListeners({ onFocus, onBlur });\r\n resolveCurrentFacilityDetails();\r\n connectWebsocket();\r\n resolveAppropriateRoute();\r\n this.headerKey = 0;\r\n this.storesToNotClearSilently = FACILITY_STORE_KEY;\r\n }\r\n\r\n resolveQuickbooksUrl = () => {\r\n const {\r\n props:\r\n {\r\n history, location: { search = '' } = {},\r\n match: { params: { accountId } = {} } = {},\r\n } = {},\r\n } = this;\r\n const facilityId = getCookie(COOKIE_KEY.DEFAULT_FACILITY_ID);\r\n const qbInfo = getJsonFromUrl(search);\r\n const { error: qbError = {}, code = '', realmId = '' } = qbInfo;\r\n if (facilityId && ((code && realmId) || isObjWithKeys(qbError))) {\r\n let url = buildUrl('configType', { fid: facilityId, config: 'quickbook' },\r\n DASHBOARD_TYPE.SETTINGS,\r\n accountId);\r\n if (isObjWithKeys(qbError)) {\r\n url += `?error=${qbError}`;\r\n } else {\r\n url += `?code=${code}&realmId=${realmId}`;\r\n }\r\n if (url) {\r\n history.replace(url);\r\n }\r\n }\r\n }\r\n\r\n resolveCurrentFacilityDetails = () => {\r\n const {\r\n props: {\r\n match: { params: { fid } = {} } = {}, location: { state = {} } = {},\r\n facility: { data: { data = [] } = {} } = {},\r\n } = {}, props = {},\r\n } = this;\r\n let facilityId;\r\n if (state) {\r\n const { fid: stateFid } = state;\r\n facilityId = stateFid;\r\n }\r\n // TODO: Find an appropriate way to handle defaultFacilityId\r\n this.defaultFacilityId = getCookie(COOKIE_KEY.DEFAULT_FACILITY_ID);\r\n this.stateFacilityId = facilityId;\r\n deleteCookie(COOKIE_KEY.DEFAULT_FACILITY_ID);\r\n const currentFacilityId = fid || facilityId || this.defaultFacilityId;\r\n if (this.defaultFacilityId) {\r\n changeFacilityRequest(CRUD_METHODS.UPDATE, data.find(({ id }) => id === this.defaultFacilityId), props);\r\n }\r\n this.selectedEntityId = currentFacilityId;\r\n this.facilityMap = this.preProcessData(data);\r\n }\r\n\r\n connectWebsocket = () => {\r\n WebSocketInstance.connect(this.selectedEntityId);\r\n WebSocketInstance.addCallback(this.onWebSocketMessage);\r\n }\r\n\r\n resolveAppropriateRoute = () => {\r\n const { props: { match: { url } = {} } = {} } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n let stateToSet = { open: isDesktop, showAlert: false };\r\n\r\n if (isLiveData(url)) {\r\n this.isLiveData = true;\r\n stateToSet = { ...stateToSet, showAlert: true };\r\n } else {\r\n this.checkAndUpdateRoute();\r\n }\r\n this.state = stateToSet;\r\n }\r\n\r\n doesFacilityBelongToCurrentAccount = () => {\r\n const { facilityMap = {} } = this;\r\n if (facilityMap[this.selectedEntityId]) {\r\n return true;\r\n }\r\n [this.selectedEntityId] = Object.keys(facilityMap) || [''];\r\n return false;\r\n }\r\n\r\n preProcessData = (facilityData) => {\r\n const facilityMap = {};\r\n facilityData.reduce((processedData, item) => {\r\n const { id } = item;\r\n facilityMap[id] = item;\r\n return processedData;\r\n }, {});\r\n return facilityMap;\r\n }\r\n\r\n updateCurrentRouteIfInvalid = () => {\r\n const {\r\n props = {},\r\n props: {\r\n history,\r\n match: { url } = {},\r\n } = {},\r\n doesFacilityBelongToCurrentAccount = EMPTY_FUNC,\r\n facilityMap = {},\r\n } = this;\r\n if (isExternalDashboard(url) && !isSettings(url) && !doesFacilityBelongToCurrentAccount()) {\r\n const dashboardUrl = buildUrl('dashboard', { fid: this.selectedEntityId });\r\n changeFacilityRequest('update', facilityMap[this.selectedEntityId], props);\r\n history.replace(dashboardUrl);\r\n }\r\n }\r\n\r\n checkAndUpdateRoute = () => {\r\n const {\r\n dashboardType, initializeInternalDashboardComponents,\r\n initializeExternalDashboardComponents,\r\n props: {\r\n history, clearStoreKeys,\r\n facility: {\r\n data: {\r\n data: facilities = [],\r\n relationalData: { isSystemAccount = false } = {},\r\n } = {},\r\n } = {},\r\n } = {},\r\n } = this;\r\n if (!facilities.length\r\n && isSystemAccount\r\n && dashboardType === DASHBOARD_TYPE.EXTERNAL\r\n ) {\r\n initializeInternalDashboardComponents();\r\n clearStoreKeys(['userProfile', 'facility', 'permissionRoles']);\r\n history.replace(`/${INTERNAL_ROUTES.INTERNAL_MAIN}`);\r\n } else if (!isSyrasoftUser() && !isSystemAccount && dashboardType === DASHBOARD_TYPE.INTERNAL) {\r\n initializeExternalDashboardComponents();\r\n history.replace(DEFAULT_EXTERNAL_ROUTE);\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const { setUpdateTimeoutInterval } = this;\r\n this.isUserActive = true;\r\n this.manageEventListeners({ shouldAddEventListeners: true });\r\n setUpdateTimeoutInterval();\r\n }\r\n\r\n componentWillUnmount = () => {\r\n clearInterval(this.updateTimeoutInterval);\r\n this.manageEventListeners({ shouldAddEventListeners: false });\r\n }\r\n\r\n manageEventListeners = ({ shouldAddEventListeners = true }) => {\r\n const { eventListeners } = this;\r\n const addOrRemoveEventListener = shouldAddEventListeners ? window.addEventListener : window.removeEventListener;\r\n eventListeners.forEach(({ listener, action }) => {\r\n addOrRemoveEventListener(listener, action);\r\n });\r\n }\r\n\r\n onFocusOrBlur = (listener) => {\r\n const { setUpdateTimeoutInterval, updateTimeoutInterval, checkAndUpdateSessionTimeout } = this;\r\n this.isUserActive = true;\r\n checkAndUpdateSessionTimeout();\r\n if (listener === FOCUS_EVENT_LISTENER) setUpdateTimeoutInterval();\r\n else {\r\n clearInterval(updateTimeoutInterval);\r\n this.isUserActive = false;\r\n }\r\n }\r\n\r\n onFocus = () => this.onFocusOrBlur(FOCUS_EVENT_LISTENER)\r\n\r\n onBlur = () => this.onFocusOrBlur(BLUR_EVENT_LISTENER)\r\n\r\n setUpdateTimeoutInterval = () => {\r\n const { checkAndUpdateSessionTimeout } = this;\r\n this.updateTimeoutInterval = setInterval(checkAndUpdateSessionTimeout, SESSION_TIMEOUT);\r\n }\r\n\r\n checkAndUpdateSessionTimeout = () => {\r\n const { props: { onAction } = {}, onSessionTimeoutUpdate, isUserActive } = this;\r\n if (isUserActive) {\r\n updateSessionTimeout(onAction, onSessionTimeoutUpdate);\r\n }\r\n }\r\n\r\n onSessionTimeoutUpdate = (_, response) => {\r\n if (response) {\r\n const { data: { token, tokenExpiry } = {} } = response;\r\n if (token && tokenExpiry) {\r\n setCookie(COOKIE_KEY.TOKEN, token);\r\n }\r\n }\r\n }\r\n\r\n onRefresh = () => {\r\n const { props: { clearStoreKeys = EMPTY_FUNC, match: { params: { fid } = {} } = {} } = {} } = this;\r\n WebSocketInstance.discardChannelsGroup(fid);\r\n clearStoreKeys([FACILITY_STORE_KEY, CURRENT_FACILITY_STORE_KEY]);\r\n }\r\n\r\n updateFacilityStoreWithLicenseStatus = (updatedFacilityId) => {\r\n const { facility: { data: { data: facilityData = [], ...data } = {} } = {}, onAction } = this.props;\r\n const updatedFacilityData = [];\r\n facilityData.forEach((eachFacility) => {\r\n const { id, licenseStatus } = eachFacility;\r\n let updatedFacility = eachFacility;\r\n if (`${id}` === `${updatedFacilityId}`) {\r\n updatedFacility = {\r\n ...eachFacility,\r\n licenseStatus: licenseStatus === FACILITY_LICENSE_STATUS.Active.value\r\n ? FACILITY_LICENSE_STATUS.Expired.value : FACILITY_LICENSE_STATUS.Active.value,\r\n };\r\n }\r\n updatedFacilityData.push(updatedFacility);\r\n });\r\n this.headerKey += 1;\r\n updateFacilityStore(onAction, { data: updatedFacilityData, ...data });\r\n }\r\n\r\n handleFacilityStatusRTNSMessage = (message = {}) => {\r\n const { resourceId, resourceName, eventType, fields = {} } = message;\r\n const { match: { params: { fid } = {} } = {} } = this.props;\r\n if (resourceName === 'facility' && eventType === 'Updated' && (fields && 'licenseStatus' in fields)) {\r\n if (`${resourceId}` === `${fid}`) {\r\n this.setSnackbarProps(true,\r\n localisable.rtnsBlockedSave,\r\n SNACKBAR_VARIANT.rtns.value);\r\n this.setState({ receivedWSMessage: true }, () => { this.state.receivedWSMessage = false; });\r\n } else this.updateFacilityStoreWithLicenseStatus(resourceId);\r\n } else if (resourceName === 'gate_configuration' && eventType === 'updated') {\r\n this.setSnackbarProps(true,\r\n localisable.rtnsFacilityConfigMessage,\r\n SNACKBAR_VARIANT.rtns.value);\r\n this.setState({ receivedWSMessage: true }, () => { this.state.receivedWSMessage = false; });\r\n }\r\n }\r\n\r\n handleUnitAvailabilityForWaiting = (message = {}) => {\r\n const { displayMessage, resourceName = '' } = message;\r\n if (resourceName === 'Unit_Availability_For_Waiting') {\r\n const unitTypeMessage = localisable.unitTypeAvailableMessage.replace('UNIT_TYPE', displayMessage);\r\n this.alert = {\r\n title: localisable.waitingListAlert,\r\n message: `${unitTypeMessage}\\n${localisable.customersWaitingOnUnitType}`,\r\n };\r\n this.setState({ showAlert: true });\r\n }\r\n }\r\n\r\n onWebSocketMessage = (wsMessage) => {\r\n const { childrenToNotify = [], handleFacilityStatusRTNSMessage, handleUnitAvailabilityForWaiting } = this;\r\n childrenToNotify.forEach((notifyChild = EMPTY_FUNC) => {\r\n notifyChild(wsMessage);\r\n });\r\n handleFacilityStatusRTNSMessage(wsMessage);\r\n handleUnitAvailabilityForWaiting(wsMessage);\r\n }\r\n\r\n // TODO: Remove children function when they unmount, Case 29287\r\n updateWsProps = (wsProps) => {\r\n const { childrenToNotify = [] } = this;\r\n const { messageCallback, shouldClearCallbacks = true } = wsProps;\r\n if (!messageCallback || messageCallback === EMPTY_FUNC) {\r\n if (shouldClearCallbacks) {\r\n this.childrenToNotify = [];\r\n } else {\r\n this.childrenToNotify.shift(); // remove 0th\r\n }\r\n } else {\r\n this.childrenToNotify = [messageCallback].concat(childrenToNotify);\r\n }\r\n }\r\n\r\n changeWebSocketGroup = (currentFacility, prevFacility) => {\r\n this.selectedEntityId = currentFacility;\r\n WebSocketInstance.updateChannelsGroup(currentFacility, prevFacility);\r\n }\r\n\r\n initializeDashboardComponents = () => {\r\n const {\r\n props: { match: { url } = {} } = {}, initializeExternalDashboardComponents,\r\n initializeInternalDashboardComponents, initializeSettingsDashboardComponents,\r\n } = this;\r\n initializeExternalDashboardComponents();\r\n if (isInternalDashboard(url)) {\r\n initializeInternalDashboardComponents();\r\n } else if (isSettings(url) || isLiveSettings(url) || isPulledSettings(url)) {\r\n initializeSettingsDashboardComponents();\r\n }\r\n }\r\n\r\n initializeExternalDashboardComponents = () => {\r\n const { withProvider } = window;\r\n this.dashboardType = DASHBOARD_TYPE.EXTERNAL;\r\n this.Header = withProvider('Header', this.props, false);\r\n this.Main = withProvider('Main', this.props, false);\r\n }\r\n\r\n initializeInternalDashboardComponents = () => {\r\n const { withProvider } = window;\r\n this.dashboardType = DASHBOARD_TYPE.INTERNAL;\r\n this.Header = withProvider('HeaderInt', this.props, false);\r\n this.Main = withProvider('MainInt', this.props, false);\r\n }\r\n\r\n initializeSettingsDashboardComponents = () => {\r\n const { withProvider } = window;\r\n this.dashboardType = DASHBOARD_TYPE.SETTINGS;\r\n this.Header = withProvider('Header', this.props, false);\r\n this.Main = withProvider('MainSettings', this.props, false);\r\n }\r\n\r\n toggleDrawer = () => {\r\n this.setState(prevState => ({ open: !prevState.open }));\r\n };\r\n\r\n closeDrawer = () => {\r\n this.setState({ open: false });\r\n }\r\n\r\n hasAccess = () => {\r\n const { unauthorised } = this.props;\r\n const { match: { params: { fid } }, facility: { data: { data = [] } = {} } = {} } = this.props;\r\n const wrongFacilityId = fid ? data.some(({ id }) => id === fid) : true;\r\n return wrongFacilityId || unauthorised;\r\n }\r\n\r\n /* Below functions till renderComponents are used to download standalone app from the configuration page. Writing this\r\n code here allows the user to leave the standalone app download page and to work on other parts of the app. Status\r\n of download is sent using Context Provider to the relevant component */\r\n\r\n setFinishedDownloadCallback = (callback = EMPTY_FUNC) => {\r\n this.onDownloadFinish = callback;\r\n }\r\n\r\n updateStandaloneAppDownloadingStartDetails = (response) => {\r\n this.standaloneAppDownloadDetails.downloadStarted = true;\r\n this.standaloneAppDownloadDetails.contentLength = +response.headers.get('Content-Length');\r\n this.standaloneAppDownloadDetails.receivedLength = 0;\r\n }\r\n\r\n addFilesToFolder = (folder, files = []) => {\r\n files.forEach(({ name, data }) => {\r\n folder.file(name, data);\r\n });\r\n }\r\n\r\n getExeFile = (chunks, { name = 'syrasoft-cloud-assist.exe' }) => {\r\n const { standaloneAppDownloadDetails: { receivedLength } = {} } = this;\r\n const standaloneInstallerFile = new Uint8Array(receivedLength);\r\n let position = 0;\r\n for (const chunk of chunks) {\r\n standaloneInstallerFile.set(chunk, position); // (4.2)\r\n position += chunk.length;\r\n }\r\n return { name, data: standaloneInstallerFile };\r\n }\r\n\r\n getConfigFile = (configData = {}) => ({\r\n name: 'config.json',\r\n data: JSON.stringify(configData),\r\n })\r\n\r\n downloadZippedFolder = (zippedContent) => {\r\n const zippedData = window.URL.createObjectURL(zippedContent);\r\n const link = document.createElement('a');\r\n document.body.appendChild(link);\r\n link.href = zippedData;\r\n link.download = 'syrasoft-cloud-assist.zip';\r\n link.hidden = true;\r\n link.click();\r\n window.URL.revokeObjectURL(zippedData);\r\n link.remove();\r\n }\r\n\r\n postDownloadStandaloneApp = (chunks, file, additionalFiles, configData) => {\r\n const { addFilesToFolder, getExeFile, getConfigFile, downloadZippedFolder } = this;\r\n const zip = JSZip();\r\n const folder = zip.folder('syrasoft-cloud-assist');\r\n const files = [getExeFile(chunks, file), getConfigFile(configData)].concat(additionalFiles);\r\n addFilesToFolder(folder, files);\r\n zip.generateAsync({ type: 'blob' }).then((content) => {\r\n downloadZippedFolder(content);\r\n });\r\n }\r\n\r\n downloadInstaller = async (file, additionalDownloadedFiles, configData) => {\r\n const {\r\n onDownloadFinish = EMPTY_FUNC, updateStandaloneAppDownloadingStartDetails,\r\n postDownloadStandaloneApp,\r\n } = this;\r\n const { url } = file;\r\n const s3Response = await fetch(url);\r\n updateStandaloneAppDownloadingStartDetails(s3Response);\r\n const reader = s3Response.body.getReader();\r\n const chunks = [];\r\n while (true) {\r\n // eslint-disable-next-line no-await-in-loop\r\n const { done, value } = await reader.read();\r\n if (done) {\r\n this.standaloneAppDownloadDetails.downloadStarted = false;\r\n onDownloadFinish();\r\n postDownloadStandaloneApp(chunks, file, additionalDownloadedFiles, configData);\r\n break;\r\n } else {\r\n chunks.push(value);\r\n this.standaloneAppDownloadDetails.receivedLength += value.length;\r\n }\r\n }\r\n }\r\n\r\n downloadStandaloneApp = async (file = {}, additionalFiles = [], configData = {}) => {\r\n const { downloadInstaller } = this;\r\n const additionalDownloadedFiles = [];\r\n additionalFiles.forEach((fileToDownload) => {\r\n const { url, name } = fileToDownload;\r\n fetch(url).then((response) => {\r\n if (response.ok) {\r\n response.blob().then((data) => {\r\n additionalDownloadedFiles.push({ data, name });\r\n });\r\n }\r\n });\r\n });\r\n downloadInstaller(file, additionalDownloadedFiles, configData);\r\n }\r\n\r\n getAgreementDetails = () => {\r\n const {\r\n match: { params: { fid } = {} } = {},\r\n facility: { data: { data = [], relationalData: { agreementLink } = {} } = {} } = {},\r\n } = this.props;\r\n const currentFacility = data.find(({ id }) => id === (fid || this.stateFacilityId || this.defaultFacilityId));\r\n const { metaInfo: { legalAgreement: { isAccepted = false } = {} } = {} } = currentFacility || {};\r\n return [isSyrasoftUser() ? true : isAccepted, agreementLink];\r\n }\r\n\r\n renderAlertMessage = () => {\r\n const { alert: { message: alertMessage = '' } = {} } = this;\r\n return alertMessage\r\n ? {alertMessage}\r\n : (\r\n <>\r\n {localisable.working}\r\n {` ${localisable.liveData}`}\r\n . {localisable.beCautious}\r\n \r\n );\r\n }\r\n\r\n onCloseAlert = () => {\r\n this.alert = {};\r\n this.setState({ showAlert: false });\r\n }\r\n\r\n getAlertActions = () => {\r\n const { onCloseAlert } = this;\r\n return (\r\n \r\n \r\n {localisable.ok}\r\n \r\n \r\n );\r\n }\r\n\r\n renderComponent() {\r\n const {\r\n classes, routeList, history, location, match, permission,\r\n match: { url, params: { fid } = {} } = {}, onAction, clearStoreKeys,\r\n userProfile: { data: { data: [{ userType }] = [{}] } = {} },\r\n } = this.props;\r\n const [isAccepted, agreementLink] = this.getAgreementDetails();\r\n const routeProps = { history, match, location, routeList };\r\n const { open, showAlert } = this.state;\r\n const {\r\n Header, Main, SideBar, dashboardType, changeWebSocketGroup, headerKey,\r\n updateWsProps, defaultFacilityId, standaloneAppDownloadDetails,\r\n facilityMap: { [this.selectedEntityId || fid]: { metaInfo: { isOnboarding = false } = {} } = {} } = {},\r\n alert: { title: alertTitle = '' } = {}, renderAlertMessage, onCloseAlert, getAlertActions,\r\n } = this;\r\n return (\r\n <>\r\n
\r\n \r\n \r\n \r\n \r\n {\r\n !isOnboarding\r\n && (\r\n \r\n )\r\n }\r\n {\r\n isAccepted || (isSettings(url) || url.match(/^\\/l\\/s/g))\r\n ? (\r\n \r\n \r\n \r\n \r\n \r\n )\r\n : (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n
\r\n \r\n \r\n {renderAlertMessage()}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderUnauthorise() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n\r\n renderError() {\r\n return (\r\n \r\n );\r\n }\r\n\r\n renderLoading() {\r\n return (\r\n

\r\n Dashboard Loading...\r\n

\r\n );\r\n }\r\n}\r\n\r\nDashboard.propTypes = { classes: PropTypes.object, history: PropTypes.any };\r\n\r\nexport default withStyles(dashboardStyle)(Dashboard);\r\n","import Snackbar from 'Commons/components/generic/snackbar/components/Snackbar';\r\nimport BaseComponent from '../../basecomponent/components/BaseComponent';\r\nimport eventEmitter from '../../../../helpers/EventEmitters';\r\n\r\nexport default class Logout extends BaseComponent {\r\n componentDidMount = () => {\r\n this.logout();\r\n }\r\n\r\n onSnackbarMount = ({ closeSnackbar }) => closeSnackbar()\r\n\r\n logout = () => {\r\n const { onAction } = this.props;\r\n onAction({\r\n config: [\r\n {\r\n method: 'read',\r\n api: {\r\n action: {\r\n methodType: 'GET',\r\n endPoint: 'auth/sign-out',\r\n },\r\n },\r\n callback: this.onLogout,\r\n },\r\n ],\r\n });\r\n }\r\n\r\n onLogout = (err, resp) => {\r\n if (err) {\r\n console.error('Logout Error:', err);\r\n } else {\r\n const { success = false } = resp;\r\n if (success) {\r\n const { clear } = this.props;\r\n clear();\r\n eventEmitter.emit('logout', {});\r\n }\r\n }\r\n }\r\n\r\n // Not using renderComponent method, as it will introduce unnecessary checks\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import PropTypes from 'prop-types';\r\nimport { Drawer, withStyles }\r\nfrom 'Commons/components/generic/componentlibrary/components/Components';\r\nimport enums from 'Commons/config/constants/Enums';\r\nimport ListItems from './ListItems';\r\nimport sideBarStyle from '../styles/SideBarStyle';\r\n\r\nclass SideBar extends React.Component {\r\n render() {\r\n const { classes, open, className, match, closeDrawer, dashboardType, ...props } = this.props;\r\n return (\r\n \r\n {/*
*/}\r\n {/* To keep the first item style */}\r\n\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n\r\nSideBar.propTypes = {\r\n classes: PropTypes.object.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n className: PropTypes.string,\r\n match: PropTypes.object.isRequired,\r\n closeDrawer: PropTypes.func,\r\n dashboardType: PropTypes.oneOf(enums.dashboardType),\r\n};\r\n\r\nSideBar.defaultProps = { className: '' };\r\n\r\nexport default withStyles(sideBarStyle)(SideBar);\r\n","import Modal from 'Commons/components/generic/modal/components/Modal';\r\nimport { Formik, Form } from 'formik';\r\nimport { Grid, Loader, withStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { getDiffProperties, isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport validateForm from 'Commons/helpers/utils/VerifyUser';\r\nimport {\r\n changePassword, changeUserDetails,\r\n getUserDetails,\r\n} from 'Commons/components/business/userProfile/config/ApiRequests';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport { encryptPasswords } from 'Commons/helpers/utils/FormDataHelper';\r\nimport ResetPassword from './ResetPassword';\r\nimport userProfileStyles from '../styles/UserProfileStyles';\r\nimport UserDetails from './UserDetails';\r\n\r\nclass UserProfile extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isButtonLoading: false };\r\n this.onAction = this.props.onAction || null;\r\n this.requestsInQueue = 0;\r\n const { facility: { data: { relationalData: { globalEncryptionKey } = {} } = {} } = {} } = props;\r\n this.globalEncryptionKey = globalEncryptionKey;\r\n }\r\n\r\n componentDidMount = () => {\r\n this.fetchUserProfile();\r\n };\r\n\r\n fetchUserProfile = () => {\r\n const { onAction, match: { params: { userId } } } = this.props;\r\n const includeRelations = !this.globalEncryptionKey && { Global_Encryption_Key: {} };\r\n getUserDetails(onAction, userId, (error, responseData) => this.onUserProfileFetch(error, responseData), includeRelations);\r\n }\r\n\r\n onUserProfileFetch = (err, res) => {\r\n if (err) {\r\n this.handleErrors(err);\r\n } else if (res) {\r\n const { data: [userData = {}] = [], relationalData: { globalEncryptionKey } = {} } = res;\r\n if (!this.globalEncryptionKey) this.globalEncryptionKey = globalEncryptionKey;\r\n this.setState({ initialValues: userData });\r\n }\r\n };\r\n\r\n saveUserDetails = (userDetails) => {\r\n const { onAction, match: { params: { userId } } } = this.props;\r\n this.requestsInQueue = this.requestsInQueue + 1;\r\n this.setState({ isButtonLoading: true });\r\n changeUserDetails(onAction, userId, userDetails,\r\n (error, responseData) => this.onEditUserDetails(error, responseData));\r\n }\r\n\r\n onEditUserDetails = (err, res) => {\r\n const {\r\n resetForm = {}, values = {},\r\n setTouched, setStatus, setErrors,\r\n } = this.formProps;\r\n this.requestsInQueue -= 1;\r\n if (err) {\r\n this.handleErrors(err, { setTouched, setStatus, setErrors });\r\n this.hasErrors = true;\r\n } else if (res) {\r\n const { data: [updatedData = {}] = [] } = res;\r\n resetForm(values);\r\n this.initialValues = values;\r\n this.setSnackbarProps(true, localisable.successPassword);\r\n if (!this.requestsInQueue && !this.hasErrors) {\r\n this.onClose();\r\n } else {\r\n this.initialValues = { ...this.initialValues, ...updatedData };\r\n }\r\n }\r\n this.showSnackbar();\r\n };\r\n\r\n showSnackbar = () => {\r\n if (!this.requestsInQueue) {\r\n this.setState({ isButtonLoading: false });\r\n } else {\r\n this.setState({ isButtonLoading: true });\r\n }\r\n }\r\n\r\n savePassword = async (values) => {\r\n const { globalEncryptionKey, props: { onAction } = {} } = this;\r\n this.setState({ isButtonLoading: true });\r\n if (values.newPassword === values.confirmPassword) {\r\n this.requestsInQueue = this.requestsInQueue + 1;\r\n const valuesWithEncryptedPassword = await encryptPasswords(values, globalEncryptionKey);\r\n changePassword(onAction, valuesWithEncryptedPassword,\r\n (error, responseData) => this.onChangeUserPassword(error, responseData));\r\n }\r\n }\r\n\r\n onChangeUserPassword = (err, res) => {\r\n const { setFieldValue, setTouched, setStatus, setErrors } = this.formProps;\r\n this.requestsInQueue -= 1;\r\n if (err) {\r\n this.handleErrors(err, { setTouched, setStatus, setErrors });\r\n this.hasErrors = true;\r\n } else if (res) {\r\n this.setSnackbarProps(true, localisable.passwordChanged);\r\n if (!this.requestsInQueue && !this.hasErrors) {\r\n this.onClose();\r\n } else {\r\n setFieldValue('extra', undefined);\r\n }\r\n }\r\n this.showSnackbar();\r\n }\r\n\r\n save = () => {\r\n const {\r\n initialValues, values: { extra = {}, ...value },\r\n touched: { extra: ignore, ...touched } = {},\r\n } = this.formProps;\r\n this.requestsInQueue = 0;\r\n this.hasErrors = false;\r\n\r\n this.touchedKeys = deepCopy(touched);\r\n const { processedValues, propertiesToCheck } = this.preProcessValues(value, touched);\r\n const userDetails = getDiffProperties(initialValues, processedValues,\r\n { properties: propertiesToCheck, excludeProperties: this.excludeProperties || undefined });\r\n\r\n if (isObjWithKeys(userDetails)) {\r\n this.saveUserDetails(userDetails);\r\n }\r\n\r\n if (isObjWithKeys(extra)) {\r\n this.savePassword(extra);\r\n }\r\n }\r\n\r\n validateFormForSamePassword = (values) => {\r\n const { phoneNumber, extra = {} } = values;\r\n const newErrors = {};\r\n if (phoneNumber && phoneNumber.length > 15) newErrors.phoneNumber = `${localisable.isMaxLength} 15`;\r\n const passwordErrors = validateForm(extra);\r\n if (isObjWithKeys(passwordErrors)) newErrors.extra = passwordErrors;\r\n return newErrors;\r\n }\r\n\r\n onCancel = () => {\r\n const { props: { history } = {} } = this;\r\n history.goBack();\r\n }\r\n\r\n renderComponent() {\r\n const {\r\n state: {\r\n initialValues: { firstName = '', lastName = '' } = {},\r\n initialValues,\r\n },\r\n props: { classes, facility, userProfile: { data: { data: [userData = {}] = [] } = {} } = {} } = {},\r\n } = this;\r\n return (\r\n \r\n {\r\n initialValues\r\n ? (\r\n {\r\n this.formProps = formProps;\r\n return (\r\n \r\n {`${firstName} ${lastName}`}\r\n \r\n )}\r\n footer={this.getFooter({ classes: { footer: classes.footer } })}\r\n bodyClassName={classes.pageBody}\r\n headerClassName={classes.pageHeader}\r\n >\r\n
\r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n />\r\n )\r\n : (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n\r\nUserProfile.propTypes = {\r\n history: PropTypes.object,\r\n match: PropTypes.object,\r\n};\r\n\r\nexport default withStyles(userProfileStyles)(UserProfile);\r\n","import { Form, Formik } from 'formik';\r\nimport BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport { Grid, Loader, Typography, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport STORE_KEY_STATUS from 'Commons/config/constants/StoreKeyStatus';\r\nimport RequestTypes from 'Commons/config/constants/RequestTypes';\r\nimport { VARIANT as SNACKBAR_VARIANT } from 'Generic/snackbar/config/Constants';\r\nimport {\r\n getActualCanvasCoords,\r\n getEllipsedText,\r\n getEllipsesTextObj,\r\n getEntitiesDataFromCanvas,\r\n getFontSize,\r\n getNextLabel,\r\n getProcessedBevValues,\r\n getReconvertedWH,\r\n} from 'Commons/components/business/bev/utils/Utils';\r\nimport CanvasHeader from 'Commons/components/business/bev/components/common/components/CanvasHeader';\r\nimport {\r\n fetchPlaceholders,\r\n fetchUnitCountByLevelData,\r\n fetchUnits,\r\n saveLevelData,\r\n savePlaceholdersData,\r\n saveUnitsData,\r\n saveZoomValue,\r\n fetchTenant,\r\n fetchReservation,\r\n} from 'Commons/components/business/bev/config/ApiRequests';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport {\r\n DEFAULT_VIEWPORT_TRANSFORM,\r\n INITIAL_REQUIRED_FIELDS_CONFIG,\r\n TIMEOUT,\r\n UNIT_CONFIG,\r\n ZOOM_LIMITS,\r\n} from 'Commons/components/business/bev/config/Config';\r\nimport {\r\n BEV_MODES,\r\n COUNT_TYPE,\r\n DIRECTIONS,\r\n EMPTY_LIST,\r\n KEY_CODES,\r\n PLACEHOLDER_TYPE,\r\n POSITIONS,\r\n STATUS_TO_UPDATE_ON,\r\n TYPE_OF_ENTITY,\r\n} from 'Commons/components/business/bev/config/Constants';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { DASHBOARD_TYPE, EMPTY_FUNC, EMPTY_OBJECT, SOURCE, STATUS, VIEW, WS_EVENT_TYPE } from 'Commons/config/constants/Constants';\r\nimport InfoCard from 'Commons/components/business/bev/components/common/components/infoCard/InfoCard';\r\nimport { CREATE_ON_TYPE } from 'External/containers/facilityConfiguration/config/MaintenanceEventConfig';\r\nimport { BOARD } from 'External/containers/facilityConfiguration/components/bevColorSetup/components/config/Constants';\r\nimport { getIn, getValue, isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport { round } from 'Commons/helpers/utils';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport { getWhiteSpaceTrimmedString } from 'Commons/helpers/utils/StringHelpers';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport CONFIG_TYPE from 'External/containers/configuration/config/ConfigRequestType';\r\nimport STORE_KEY from 'Commons/redux/config/StoreKey';\r\nimport LevelManagement from './components/setup/levelManagement/components/LevelManagement';\r\nimport BevLeftSideBar from './components/setup/bevLeftSideBar/BevLeftSideBar';\r\nimport BevSetup from './components/setup/BevSetup';\r\nimport BevView from './components/view/BevView';\r\nimport bevStyles from './styles/BevStyles';\r\n\r\nconst LoadBev = ({ isDataLoaded, children, classes, isView, setCanvasGridRef }) => (\r\n \r\n {isDataLoaded ? children : }\r\n \r\n);\r\n\r\nclass Bev extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n const {\r\n level = {},\r\n currentFacility = {},\r\n unitBevMini: { data: { data: labelToIdMap = {} } = {} } = {},\r\n facilityGeneral: {\r\n data: {\r\n data: [{\r\n id: facilityGeneralConfigId,\r\n value: { bevZoomValue = '1.4' } = {},\r\n } = {}] = [],\r\n } = {},\r\n } = {},\r\n bevColors: { data: bevData = {} },\r\n rentalGeneral: { data: { data: [{ value: { period: { standard: standardPeriod } = {} } = {} } = {}] = [] } = {} } = {},\r\n } = props;\r\n\r\n let colorLegendData = {};\r\n if (bevData) {\r\n const { data: [{ value: { boards = {} } = {} } = {}] = [] } = bevData;\r\n if (boards) {\r\n colorLegendData = boards;\r\n }\r\n }\r\n\r\n const { data: { metaInfo: { migrated: isFacilityMigrated = false } = {} } = {} } = currentFacility || {};\r\n const [{ id: levelConfigId, value: { levels: levelsObj = {} } = {} } = {}] = getIn(level, 'data.data') || [];\r\n this.isFacilityMigrated = isFacilityMigrated;\r\n this.standardPeriod = standardPeriod;\r\n this.unitTypeMap = {};\r\n this.levelConfigId = levelConfigId;\r\n this.levelsList = this.getLevelsListFromLevelsObj(levelsObj);\r\n const [{ value: firstLevelKey } = {}] = this.levelsList;\r\n this.defaultLevel = firstLevelKey;\r\n this.initialValues = {\r\n label: '',\r\n bev: { level: this.defaultLevel, angle: 0 },\r\n countType: COUNT_TYPE.INCREMENT,\r\n entityType: TYPE_OF_ENTITY.Unit.value,\r\n count: 1,\r\n extra: {\r\n initialLevelsObj: levelsObj,\r\n levelsList: this.levelsList,\r\n },\r\n };\r\n this.newAndUpdatedUnits = {};\r\n this.newAndUpdatedPlaceholders = {};\r\n this.unitBevStoreStatus = STORE_KEY_STATUS.UNLOADED;\r\n this.placeholderStoreStatus = STORE_KEY_STATUS.UNLOADED;\r\n this.units = EMPTY_LIST;\r\n this.placeholders = EMPTY_LIST;\r\n this.isDragging = false;\r\n this.facilityGeneralConfigId = facilityGeneralConfigId;\r\n this.defaultZoomValue = convertToNumber(bevZoomValue);\r\n this.colorLegendData = colorLegendData;\r\n this.initialLabelToIdMap = { ...labelToIdMap };\r\n this.labelToIdMap = { ...labelToIdMap };\r\n this.unitLabelBeforeDuplicateError = {};\r\n this.activeDirection = DIRECTIONS.RIGHT;\r\n this.bulkRequestErredUnitsMap = {};\r\n this.bulkRequestErredPlaceholdersMap = {};\r\n this.shouldReMapUnitTypeIds = false;\r\n this.colorLegendDataUpdated = false;\r\n this.zoomToSet = this.defaultZoomValue;\r\n this.entitiesBulkSaveAwaitResponseCount = 0;\r\n this.unitIdTenantMapper = {};\r\n this.unitIdReservationMapper = {};\r\n this.state = {\r\n setupModeCanvasRef: null,\r\n canvasGridRef: null,\r\n isButtonLoading: false,\r\n savedUnitsData: null,\r\n zoomValue: this.defaultZoomValue,\r\n openLevelManagementModal: false,\r\n panningMode: false,\r\n requiredFieldsConfig: INITIAL_REQUIRED_FIELDS_CONFIG,\r\n showDuplicateUnitLabelAlert: false,\r\n shouldDisableToolBox: false,\r\n unitTypeList: [],\r\n showInfoCard: false,\r\n showLoader: false,\r\n showFullPageLoader: false,\r\n scrollToIndex: -1,\r\n searchedUnit: {},\r\n dependentDataFetched: false,\r\n };\r\n this.storesToNotClearSilently = [CONFIG_TYPE.BEV_COLORS, CONFIG_TYPE.LATE_EVENT, CONFIG_TYPE.MAINTENANCE_EVENT,\r\n CONFIG_TYPE.LEVEL, CONFIG_TYPE.FACILITY_GENERAL];\r\n this.clearStoreOnUnmount = true;\r\n this.unitBulkSaveResponse = {};\r\n this.placeholderBulkSaveResponse = {};\r\n }\r\n\r\n onRefresh = (message = {}) => {\r\n const { formProps: { values: { bev: { level: currentLevel = {} } = {} } = {} } = {} } = this;\r\n const {\r\n resourceName = {},\r\n fields: {\r\n configType = {},\r\n id: levelConfigId,\r\n value: { levels: wsLevelsObj = {} } = {},\r\n } = {},\r\n } = message;\r\n if (configType === CONFIG_TYPE.LEVEL) {\r\n const mockResponseWs = {\r\n data: [{ id: levelConfigId, value: { levels: wsLevelsObj } }],\r\n isMockResponseWs: true,\r\n };\r\n this.onLevelsSave(undefined, mockResponseWs);\r\n } else if (resourceName === SOURCE.unit.value || resourceName === SOURCE.reservation.value || resourceName === SOURCE.ledger.value) {\r\n this.onLevelChange(undefined, currentLevel,\r\n [STORE_KEY.UNIT_BEV_MINI, STORE_KEY.PLACEHOLDER]);\r\n }\r\n }\r\n\r\n shouldShowSnackbar = (wsMessage) => {\r\n const {\r\n resourceName = {},\r\n eventType = {},\r\n fields: {\r\n configType = {},\r\n value: { levels: wsLevelsObj = {} } = {},\r\n bev: wsBev = {},\r\n } = {},\r\n } = wsMessage;\r\n const { formProps: { values: { extra: { initialLevelsObj: formLevels = {} } = {} } = {} } = {} } = this;\r\n if (configType === CONFIG_TYPE.LEVEL) {\r\n const levelDiff = Object.keys(formLevels).length - Object.keys(wsLevelsObj).length;\r\n if (levelDiff === 0) return localisable.levelNameChanged;\r\n if (levelDiff < 0) return localisable.levelAdded;\r\n return localisable.levelDeleted;\r\n } if (resourceName === SOURCE.unit.value) {\r\n if (eventType === WS_EVENT_TYPE.CREATED) return localisable.unitAdded;\r\n if (Object.keys(wsBev).length > 1) return localisable.unitLayoutChanged;\r\n return localisable.unitStatusChanged;\r\n }\r\n if (resourceName === SOURCE.reservation.value) {\r\n if (eventType === WS_EVENT_TYPE.CREATED) return localisable.reservationMade;\r\n }\r\n if (resourceName === SOURCE.ledger.value) {\r\n if (eventType === WS_EVENT_TYPE.UPDATED) return localisable.ledgerChanged;\r\n }\r\n return null;\r\n };\r\n\r\n onWebSocketMessage = (wsMessage = {}) => {\r\n const msg = this.shouldShowSnackbar(wsMessage);\r\n if (msg) {\r\n this.updateSnackbarActionsFor([], wsMessage, () => true, false, this.test);\r\n this.setSnackbarProps(true, msg, SNACKBAR_VARIANT.rtns.value);\r\n this.setState({ receivedWSMessage: true });\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n const { props: { defaultLevel } = {} } = this;\r\n this.unblock = this.allowNavigation(this.shouldLeave);\r\n this.fetchOrRefreshEntitiesData(defaultLevel);\r\n };\r\n\r\n componentWillUnmount() {\r\n const { unblock = EMPTY_FUNC, shouldClearStore = false } = this;\r\n unblock();\r\n const {\r\n clearStoreKeys = EMPTY_FUNC,\r\n facilityGeneral: { data: { data: [{ value: { bevZoomValue = 1 } = {} } = {}] = [] } = {} } = {},\r\n } = this.props;\r\n const storeKeysToClear = this.clearStoreOnUnmount ? [STORE_KEY.LEVEL, STORE_KEY.UNIT_BEV,\r\n STORE_KEY.UNIT_BEV_MINI, STORE_KEY.PLACEHOLDER] : [];\r\n if (this.defaultZoomValue !== bevZoomValue) storeKeysToClear.push('facilityGeneral');\r\n if (shouldClearStore) clearStoreKeys(storeKeysToClear);\r\n }\r\n\r\n postProcessRefresh = () => { this.clearStoreOnUnmount = false; };\r\n\r\n componentDidUpdate(prevProps) {\r\n const { mode: prevMode } = prevProps;\r\n const {\r\n unitBev: { data: { relationalData: { unitType: unitTypeData = {} } = {} } = {} } = {},\r\n maintenanceEvent,\r\n lateEvent, mode,\r\n } = this.props;\r\n const maintenanceEventData = getValue(\r\n maintenanceEvent,\r\n 'data.data',\r\n );\r\n const lateEventData = getValue(lateEvent, 'data.data');\r\n const {\r\n [BOARD.MAINTENANCE_ACTIVITY]: { items: board3Items = [] } = {},\r\n [BOARD.DELINQUENCY_STATUS]: { items: board4Items = [] } = {},\r\n } = this.colorLegendData;\r\n let areSomeUnitTypeIdsNotInMap = false;\r\n if (isObjWithKeys(this.unitTypeMap) && isObjWithKeys(unitTypeData) && this.shouldReMapUnitTypeIds) {\r\n areSomeUnitTypeIdsNotInMap = Object.values(unitTypeData).some(({ id } = {}) => !this.unitTypeMap[id]);\r\n }\r\n if (!isObjWithKeys(this.unitTypeMap) || areSomeUnitTypeIdsNotInMap) {\r\n this.unitTypeMap = Object.values(unitTypeData).reduce((prevValue, { value: { description, dimension } = {}, id }) => ({\r\n ...prevValue,\r\n [id]: {\r\n label: description,\r\n id,\r\n data: { dimension },\r\n },\r\n }), {});\r\n this.shouldReMapUnitTypeIds = false;\r\n }\r\n const isBoard3ItemsEmpty = !board3Items || board3Items.length === 0;\r\n if (maintenanceEventData.length && isBoard3ItemsEmpty) {\r\n const items = [];\r\n maintenanceEventData.forEach(({ value: { color, description, createOn } = {} } = {}) => {\r\n if (color && createOn === CREATE_ON_TYPE.Unit.value) {\r\n items.push(\r\n { color, description },\r\n );\r\n }\r\n });\r\n this.colorLegendData[BOARD.MAINTENANCE_ACTIVITY] = { items };\r\n this.colorLegendDataUpdated = true;\r\n }\r\n if (lateEventData.length && !board4Items.length) {\r\n const items = lateEventData.map(({ value: { color, description } = {} } = {}) => ({ color, description }));\r\n this.colorLegendData[BOARD.DELINQUENCY_STATUS] = { items };\r\n this.colorLegendDataUpdated = true;\r\n }\r\n if (prevMode !== mode) {\r\n this.unblock = this.allowNavigation(this.shouldLeave);\r\n }\r\n }\r\n\r\n shouldLeave = () => {\r\n const {\r\n props: { mode } = {},\r\n formProps: { dirty } = {},\r\n newAndUpdatedUnits = {},\r\n newAndUpdatedPlaceholders = {},\r\n } = this;\r\n const areNewEntitiesAddedOrUpdated = isObjWithKeys({ ...newAndUpdatedUnits, ...newAndUpdatedPlaceholders });\r\n if ((dirty || areNewEntitiesAddedOrUpdated) && mode === BEV_MODES.SETUP) {\r\n this.setState({ discard: true });\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n getLevelsListFromLevelsObj = levelsObj => Object.keys(levelsObj || {}).map(levelKey => ({ label: levelsObj[levelKey], value: levelKey }));\r\n\r\n getLevelsObjFromLevelsList = (levelsList = []) => {\r\n const levelsObj = {};\r\n for (let index = 0; index < levelsList.length; index += 1) {\r\n const { [index]: { label, value: levelKey } = {} } = levelsList;\r\n levelsObj[levelKey] = label === null ? null : getWhiteSpaceTrimmedString(label);\r\n }\r\n return levelsObj;\r\n };\r\n\r\n onLevelChange = (_, level, storeKeysToClear = [], setLevelInForm = false) => {\r\n const {\r\n props: { mode, clearStoreKeys = EMPTY_FUNC } = {},\r\n formProps: { setFieldValue } = {},\r\n } = this;\r\n if (mode === BEV_MODES.SETUP) {\r\n this.newAndUpdatedUnits = {};\r\n this.newAndUpdatedPlaceholders = {};\r\n this.bulkRequestErredUnitsMap = {};\r\n this.bulkRequestErredPlaceholdersMap = {};\r\n this.unitLabelBeforeDuplicateError = {};\r\n this.labelToIdMap = { ...this.initialLabelToIdMap };\r\n this.shouldReMapUnitTypeIds = true;\r\n }\r\n this.fetchOrRefreshEntitiesData(level, RequestTypes.REFRESH, RequestTypes.REFRESH);\r\n if (setLevelInForm) setFieldValue('bev.level', level);\r\n if (storeKeysToClear.length) clearStoreKeys(storeKeysToClear);\r\n };\r\n\r\n setSearchedUnit = (unitDetails) => {\r\n this.setState({ searchedUnit: unitDetails });\r\n };\r\n\r\n onFetchTenant = (_, response) => {\r\n const { data: tenantBevData = [] } = response || {};\r\n const unitIdTenantMapping = EMPTY_OBJECT;\r\n tenantBevData.forEach((tenant) => {\r\n const { unitList = [] } = tenant;\r\n if (unitList.length) {\r\n unitList.forEach(({ id: currentUnitId }) => {\r\n if (currentUnitId) {\r\n unitIdTenantMapping[currentUnitId] = tenant;\r\n }\r\n });\r\n }\r\n });\r\n this.unitIdTenantMapper = { ...this.unitIdTenantMapper, ...unitIdTenantMapping };\r\n this.setState(prevState => ({ dependentDataFetched: !prevState.dependentDataFetched }));\r\n };\r\n\r\n onFetchReservation = (_, response) => {\r\n const { data: reservationBevData = [] } = response || {};\r\n const unitIdReservationMapping = EMPTY_OBJECT;\r\n reservationBevData.forEach((reservation) => {\r\n const { unitId: reservedUnitId = '' } = reservation;\r\n if (reservedUnitId) {\r\n unitIdReservationMapping[reservedUnitId] = reservation;\r\n }\r\n });\r\n this.unitIdReservationMapper = { ...this.unitIdReservationMapper, ...unitIdReservationMapping };\r\n this.setState(prevState => ({ dependentDataFetched: !prevState.dependentDataFetched }));\r\n };\r\n\r\n fetchOrRefreshEntitiesData = (levelToFetch, unitDataReqType = RequestTypes.INIT,\r\n placeholderDataReqType = RequestTypes.INIT) => {\r\n const {\r\n props: { onAction, fetchLazy, currentFacility: { data: { id: fid } = {} }, unitBevMini },\r\n formProps: { values: { bev: { level } = {} } = {} } = {},\r\n } = this;\r\n const { data: { data: unitBevArray = [] } = {} } = unitBevMini || {};\r\n const unitIds = Object.values(unitBevArray);\r\n const levelToFetchFor = levelToFetch || level;\r\n fetchPlaceholders(onAction, levelToFetchFor, fid, placeholderDataReqType);\r\n fetchUnits(fetchLazy, levelToFetchFor, unitDataReqType);\r\n if (unitIds.length) {\r\n fetchTenant(onAction, unitIds, this.onFetchTenant, VIEW.detail.value, 1000, true);\r\n fetchReservation(onAction, unitIds, this.onFetchReservation, 1000, true);\r\n }\r\n };\r\n\r\n setSetupModeCanvasRef = (ref) => {\r\n this.setState({ setupModeCanvasRef: ref });\r\n };\r\n\r\n setCanvasGridRef = (ref) => {\r\n this.setState({ canvasGridRef: ref });\r\n };\r\n\r\n setPanningMode = (value) => {\r\n this.setState({ panningMode: value });\r\n };\r\n\r\n setRequiredFieldsConfig = (value, shouldReset = false) => {\r\n this.setState({ requiredFieldsConfig: shouldReset ? INITIAL_REQUIRED_FIELDS_CONFIG : value });\r\n };\r\n\r\n setShowDuplicateUnitLabelAlertDialog = value => (this.setState({ showDuplicateUnitLabelAlert: value }));\r\n\r\n setUnitLabelBeforeDuplicateError = (id, label) => {\r\n if (!id || !label) return;\r\n this.unitLabelBeforeDuplicateError[id] = label;\r\n };\r\n\r\n setShouldDisableToolBox = (value) => {\r\n this.setState({ shouldDisableToolBox: value });\r\n };\r\n\r\n setUnitTypeList = (unitTypeId, shouldClearList = false, shouldClearFormField = true) => {\r\n const { formProps: { setFieldValue } = {} } = this;\r\n const unitTypeData = this.unitTypeMap[unitTypeId];\r\n if (shouldClearFormField) setFieldValue('unitType', undefined);\r\n if (unitTypeData || shouldClearList) this.setState({ unitTypeList: shouldClearList ? [] : [unitTypeData] });\r\n };\r\n\r\n addToUnitTypeMap = (unitTypeData) => {\r\n const { id, label, data: { dimension } = {} } = unitTypeData;\r\n if (!id || this.unitTypeMap[id]) return;\r\n this.unitTypeMap[id] = {\r\n id,\r\n label,\r\n data: { dimension },\r\n };\r\n }\r\n\r\n setShowInfoCard = (value) => {\r\n const { showInfoCard } = this.state;\r\n if (showInfoCard === value) return;\r\n this.setState({ showInfoCard: value });\r\n }\r\n\r\n setShowLoader = (value) => {\r\n this.setState({ showLoader: value });\r\n }\r\n\r\n setShowFullPageLoader = (value) => {\r\n this.setState({ showFullPageLoader: value });\r\n }\r\n\r\n addToLabelToIdMap = (label, unitId) => {\r\n if (this.labelToIdMap[label]) return;\r\n this.labelToIdMap[label] = unitId;\r\n };\r\n\r\n modifyLabelToIdMap = (newKeyToReplaceOldKeyWith, idOfSelectedUnit) => {\r\n const oldKey = this.unitLabelBeforeDuplicateError[idOfSelectedUnit];\r\n const valueOfOldKey = this.labelToIdMap[oldKey];\r\n\r\n if (valueOfOldKey !== idOfSelectedUnit) {\r\n if (oldKey !== newKeyToReplaceOldKeyWith) {\r\n this.labelToIdMap[newKeyToReplaceOldKeyWith] = idOfSelectedUnit;\r\n this.setUnitLabelBeforeDuplicateError(idOfSelectedUnit, newKeyToReplaceOldKeyWith);\r\n }\r\n return;\r\n }\r\n\r\n delete this.labelToIdMap[oldKey];\r\n this.labelToIdMap[newKeyToReplaceOldKeyWith] = valueOfOldKey;\r\n this.setUnitLabelBeforeDuplicateError(idOfSelectedUnit, newKeyToReplaceOldKeyWith);\r\n };\r\n\r\n changeMode = () => {\r\n const {\r\n props: {\r\n mode,\r\n history,\r\n currentFacility: { data: { id: fid } = {} } = {},\r\n currentAccountId: { data: { id: accountId } = {} } = {},\r\n } = {},\r\n } = this;\r\n history.push(buildUrl(mode === BEV_MODES.SETUP ? 'bevView' : 'bevSetup', { fid }, DASHBOARD_TYPE.EXTERNAL, accountId));\r\n };\r\n\r\n onDirectionChange = (direction) => {\r\n this.activeDirection = direction;\r\n };\r\n\r\n getActiveDirection = () => this.activeDirection;\r\n\r\n zoomCanvas = (incrementValue, canvasWrapperRef, fabricCanvasInstance, shouldReset = false, fabricInstance) => {\r\n const {\r\n props: { mode } = {}, state: { zoomValue: currentZoomValue } = {},\r\n zoomToSet: prevZoomToSet,\r\n } = this;\r\n const { SETUP } = BEV_MODES;\r\n const zoomToSet = round((shouldReset ? this.defaultZoomValue\r\n : (prevZoomToSet || currentZoomValue)) + incrementValue, 1);\r\n if (zoomToSet < ZOOM_LIMITS.LOWER || zoomToSet > ZOOM_LIMITS.UPPER) return;\r\n if (this.timeout) clearTimeout(this.timeout);\r\n if (prevZoomToSet && prevZoomToSet !== zoomToSet) {\r\n this.timeout = setTimeout(() => {\r\n if (mode === SETUP) {\r\n fabricCanvasInstance.setZoom(zoomToSet);\r\n let canvasObjects = fabricCanvasInstance.getObjects('group');\r\n canvasObjects.forEach((obj) => {\r\n const { _objects: [, textObj, ellipsesTextObj] = [] } = obj;\r\n textObj.set('fontSize', getFontSize(zoomToSet));\r\n if (ellipsesTextObj) ellipsesTextObj.set('fontSize', getFontSize(zoomToSet));\r\n });\r\n if (zoomToSet < 0.8) {\r\n const { viewportTransform } = fabricCanvasInstance;\r\n viewportTransform[4] = 0;\r\n viewportTransform[5] = 0;\r\n }\r\n canvasWrapperRef.focus();\r\n fabricCanvasInstance.renderAll();\r\n canvasObjects = fabricCanvasInstance.getObjects('group');\r\n canvasObjects.forEach((obj) => {\r\n this.checkAndHandleLabelOverflow(fabricInstance, fabricCanvasInstance, obj, false, zoomToSet);\r\n });\r\n fabricCanvasInstance.renderAll();\r\n }\r\n this.setState({ zoomValue: zoomToSet });\r\n }, TIMEOUT);\r\n }\r\n this.zoomToSet = zoomToSet;\r\n };\r\n\r\n saveCurrentZoomAsDefault = () => {\r\n const {\r\n props: { onAction } = {},\r\n facilityGeneralConfigId,\r\n onSaveCurrentZoomAsDefault,\r\n state: { zoomValue } = {},\r\n } = this;\r\n this.setState({ isButtonLoading: true });\r\n saveZoomValue(onAction, facilityGeneralConfigId, zoomValue, onSaveCurrentZoomAsDefault);\r\n };\r\n\r\n onSaveCurrentZoomAsDefault = (apiError, response) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n this.setSnackbarProps(true, localisable.zoomValueSaveFailed, 'error');\r\n } else if (response) {\r\n const { data: [{ id: facilityGeneralConfigId, value: { bevZoomValue = '1' } = {} } = {}] = [] } = response;\r\n if (!this.facilityGeneralConfigId) {\r\n this.facilityGeneralConfigId = facilityGeneralConfigId;\r\n }\r\n this.setSnackbarProps(true, localisable.zoomValueSaved);\r\n this.defaultZoomValue = convertToNumber(bevZoomValue);\r\n this.setState({ zoomValue: this.defaultZoomValue });\r\n this.shouldClearStore = true;\r\n }\r\n this.setState({ isButtonLoading: false });\r\n };\r\n\r\n handlePanning = (event, fabricCanvasInstance) => {\r\n const { e: { clientX, clientY } } = event;\r\n const { state: { panningMode } = {} } = this;\r\n if (panningMode) {\r\n fabricCanvasInstance.discardActiveObject(undefined);\r\n fabricCanvasInstance.setCursor('grabbing');\r\n this.isDragging = true;\r\n // eslint-disable-next-line no-param-reassign,no-underscore-dangle\r\n fabricCanvasInstance._previousPointer.x = clientX;\r\n // eslint-disable-next-line no-param-reassign,no-underscore-dangle\r\n fabricCanvasInstance._previousPointer.y = clientY;\r\n }\r\n };\r\n\r\n /**\r\n * @description Handles the keyDown event based on the keyCode\r\n * @param {Object} target target object from the fired event\r\n * @param {fabric.Canvas} fabricCanvasInstance The canvas instance\r\n */\r\n handleKeyDown = (target, fabricCanvasInstance) => {\r\n const { isDragging, props: { mode } = {}, state: { panningMode } = {} } = this;\r\n const { SPACE_BAR } = KEY_CODES;\r\n switch (target.keyCode) {\r\n // case DELETE:\r\n // if (target.repeat) {\r\n // return;\r\n // }\r\n // setupModeCanvasRef.delete();\r\n // break;\r\n case SPACE_BAR:\r\n target.preventDefault();\r\n if (isDragging && target.repeat) {\r\n fabricCanvasInstance.setCursor('grabbing');\r\n } else {\r\n fabricCanvasInstance.setCursor('grab');\r\n }\r\n if (!panningMode) this.setPanningMode(true);\r\n if (mode === BEV_MODES.SETUP) {\r\n // eslint-disable-next-line no-param-reassign\r\n fabricCanvasInstance.selection = false;\r\n fabricCanvasInstance.forEachObject((obj) => {\r\n // eslint-disable-next-line no-param-reassign\r\n obj.selectable = false;\r\n }, this);\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * @description Handles the keyUp event based on the keyCode\r\n * @param {Object} target target object from the fired event\r\n * @param {fabric.Canvas} fabricCanvasInstance The canvas instance\r\n */\r\n handleKeyUp = (target, fabricCanvasInstance) => {\r\n const { props: { mode } = {}, state: { panningMode } = {} } = this;\r\n const { SPACE_BAR } = KEY_CODES;\r\n switch (target.keyCode) {\r\n case SPACE_BAR:\r\n this.isDragging = false;\r\n fabricCanvasInstance.setCursor('default');\r\n if (panningMode) this.setPanningMode(false);\r\n // eslint-disable-next-line no-param-reassign\r\n fabricCanvasInstance.selection = true;\r\n fabricCanvasInstance.forEachObject((obj) => {\r\n // eslint-disable-next-line no-param-reassign\r\n if (mode === BEV_MODES.SETUP) obj.selectable = true;\r\n obj.setCoords();\r\n }, this);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n moveTooltipWithPointer = (event, fabricCanvasInstance, fabricInstance, labelTooltipInstance) => {\r\n if (labelTooltipInstance.visible) {\r\n const { e } = event;\r\n const zoomValue = fabricCanvasInstance.getZoom();\r\n const pointer = fabricCanvasInstance.getPointer(e, false);\r\n labelTooltipInstance.setPositionByOrigin(new fabricInstance.Point(pointer.x,\r\n pointer.y + labelTooltipInstance.height + UNIT_CONFIG.TOOLTIP_OFFSET_FROM_POINTER / zoomValue),\r\n 'center', 'center');\r\n fabricCanvasInstance.renderAll();\r\n }\r\n };\r\n\r\n handleMouseMove = (event, fabricCanvasInstance, fabricInstance, labelTooltipInstance) => {\r\n const { state: { panningMode } = {} } = this;\r\n if (panningMode) {\r\n this.restrictPanning(event, fabricCanvasInstance);\r\n } else {\r\n this.moveTooltipWithPointer(event, fabricCanvasInstance, fabricInstance, labelTooltipInstance);\r\n }\r\n };\r\n\r\n handleCanvasMouseUp = (fabricCanvasInstance) => {\r\n const { state: { panningMode } = {} } = this;\r\n if (panningMode) {\r\n this.isDragging = false;\r\n fabricCanvasInstance.setCursor('grab');\r\n }\r\n };\r\n\r\n handleEntityMouseOver = (event, fabricCanvasInstance, labelTooltipInstance) => {\r\n const { target: { hasLabelOverflowed, _objects: [, { text }] = [] } = {} } = event;\r\n if (hasLabelOverflowed) {\r\n const { _objects: [tooltipRectObj, tooltipTextObj] = [] } = labelTooltipInstance;\r\n tooltipTextObj.set('text', text);\r\n const tooltipWidth = tooltipTextObj.width + UNIT_CONFIG.LEFT_RIGHT_TOOLTIP_PADDING;\r\n const tooltipHeight = tooltipTextObj.height + UNIT_CONFIG.TOP_BOTTOM_TOOLTIP_PADDING;\r\n ['width', 'height', 'visible'].forEach((property) => {\r\n let value = true;\r\n if (property === 'width') {\r\n value = tooltipWidth;\r\n } else if (property === 'height') value = tooltipHeight;\r\n tooltipRectObj.set(property, value);\r\n labelTooltipInstance.set(property, value);\r\n });\r\n fabricCanvasInstance.renderAll();\r\n }\r\n };\r\n\r\n handleEntityMouseOut = (fabricCanvasInstance, labelTooltipInstance) => {\r\n labelTooltipInstance.set('visible', false);\r\n fabricCanvasInstance.renderAll();\r\n };\r\n\r\n scrollCanvas = (direction, fabricInstance) => {\r\n const multiplier = 5; // Adjust as needed\r\n let dx = 0;\r\n let dy = 0;\r\n switch (direction) {\r\n case DIRECTIONS.UP:\r\n dy = -10 * multiplier;\r\n break;\r\n case DIRECTIONS.DOWN:\r\n dy = 10 * multiplier;\r\n break;\r\n case DIRECTIONS.LEFT:\r\n dx = 10 * multiplier;\r\n break;\r\n case DIRECTIONS.RIGHT:\r\n dx = -10 * multiplier;\r\n break;\r\n default:\r\n break;\r\n }\r\n const { _previousPointer: lastPos, _previousPointer: { x: clientX = 0, y: clientY = 0 } = {} } = fabricInstance;\r\n if (lastPos === undefined) {\r\n // eslint-disable-next-line no-underscore-dangle, no-param-reassign\r\n fabricInstance._previousPointer = { x: 0, y: 0 };\r\n }\r\n this.isDragging = true;\r\n this.restrictPanning({ e: { clientX: clientX + dx, clientY: clientY + dy } }, fabricInstance);\r\n this.isDragging = false;\r\n\r\n fabricInstance.forEachObject((obj) => {\r\n // eslint-disable-next-line no-param-reassign\r\n obj.selectable = true;\r\n obj.setCoords();\r\n }, this);\r\n };\r\n\r\n restrictPanning = (event, fabricCanvasInstance) => {\r\n const { isDragging, state: { canvasGridRef: { clientWidth: gridWidth, clientHeight: gridHeight } = {} } = {} } = this;\r\n const { viewportTransform, _previousPointer: lastPos } = fabricCanvasInstance;\r\n fabricCanvasInstance.setCursor('grab');\r\n const { e: { clientX, clientY } } = event;\r\n if (isDragging) {\r\n fabricCanvasInstance.setCursor('grabbing');\r\n const zoom = fabricCanvasInstance.getZoom();\r\n if (zoom < 0.6) { // When zoom value is < 0.6, the canvas is pinned to top-left corner\r\n viewportTransform[4] = 0;\r\n viewportTransform[5] = 0;\r\n } else { // When zoom value is > 0.6, the panning is restricted to the canvas boundary\r\n const canvasWidth = fabricCanvasInstance.getWidth();\r\n const canvasHeight = fabricCanvasInstance.getHeight();\r\n\r\n viewportTransform[4] += clientX - lastPos.x;\r\n viewportTransform[5] += clientY - lastPos.y;\r\n\r\n if (viewportTransform[4] >= 0) {\r\n // PANNING LEFT\r\n viewportTransform[4] = 0;\r\n } else if (viewportTransform[4] < -(canvasWidth * zoom - gridWidth)) {\r\n // PANNING RIGHT\r\n viewportTransform[4] = -(canvasWidth * zoom - gridWidth);\r\n }\r\n\r\n if (viewportTransform[5] >= 0) {\r\n // PANNING UP\r\n viewportTransform[5] = 0;\r\n } else if (viewportTransform[5] < -(canvasHeight * zoom - gridHeight)) {\r\n // PANNING DOWN\r\n viewportTransform[5] = -(canvasHeight * zoom - gridHeight);\r\n }\r\n }\r\n\r\n fabricCanvasInstance.renderAll();\r\n lastPos.x = clientX;\r\n lastPos.y = clientY;\r\n }\r\n };\r\n\r\n checkAndHandleLabelOverflow = (fabricInstance, fabricCanvasInstance, unit,\r\n shouldCallRenderAll = true, zoomToSet) => {\r\n const { _objects: [rectObj, textObj, ellipsesTextObj], angle } = unit;\r\n const unitCoords = unit.getPointByOrigin('center', 'center');\r\n\r\n const allLabelCornerCoords = (() => {\r\n const coordsTemplate = [\r\n {\r\n x: -1,\r\n y: -1,\r\n },\r\n {\r\n x: 1,\r\n y: -1,\r\n },\r\n {\r\n x: 1,\r\n y: 1,\r\n },\r\n {\r\n x: -1,\r\n y: 1,\r\n },\r\n ];\r\n const { width, height } = textObj;\r\n return coordsTemplate.map((coord) => {\r\n const { x: templateX, y: templateY } = coord;\r\n return {\r\n x: templateX * width / 2,\r\n y: templateY * height / 2,\r\n };\r\n });\r\n })();\r\n\r\n const originalZoom = fabricCanvasInstance.getZoom();\r\n const originalViewportTransform = fabricCanvasInstance.viewportTransform;\r\n fabricCanvasInstance.setZoom(1);\r\n fabricCanvasInstance.setViewportTransform(DEFAULT_VIEWPORT_TRANSFORM);\r\n\r\n const isOverflowing = allLabelCornerCoords.some((cornerCoord, index) => {\r\n const actualCanvasCoords = getActualCanvasCoords(index, cornerCoord,\r\n unitCoords, this.isFacilityMigrated);\r\n return fabricCanvasInstance.isTargetTransparent(rectObj, actualCanvasCoords.x, actualCanvasCoords.y);\r\n });\r\n\r\n unit.set('hasLabelOverflowed', isOverflowing);\r\n if (isOverflowing) {\r\n textObj.set('visible', !isOverflowing);\r\n const ellipsedLabel = getEllipsedText(fabricCanvasInstance, rectObj,\r\n textObj, allLabelCornerCoords, unitCoords, this.isFacilityMigrated);\r\n if (!ellipsesTextObj) {\r\n const newEllipsesTextObj = getEllipsesTextObj(fabricInstance, ellipsedLabel, zoomToSet);\r\n newEllipsesTextObj.set('angle', -angle);\r\n newEllipsesTextObj.setCoords();\r\n unit.add(newEllipsesTextObj);\r\n } else {\r\n ellipsesTextObj.set('visible', isOverflowing);\r\n ellipsesTextObj.set('text', ellipsedLabel);\r\n }\r\n } else {\r\n textObj.set('visible', !isOverflowing);\r\n if (ellipsesTextObj) {\r\n unit.remove(ellipsesTextObj);\r\n }\r\n }\r\n\r\n fabricCanvasInstance.setZoom(originalZoom);\r\n fabricCanvasInstance.setViewportTransform(originalViewportTransform);\r\n\r\n if (shouldCallRenderAll) fabricCanvasInstance.renderAll();\r\n };\r\n\r\n getNewAndUpdatedEntityDataVarNameByType = (entityType) => {\r\n if (entityType === TYPE_OF_ENTITY.Unit.value) return 'newAndUpdatedUnits';\r\n return 'newAndUpdatedPlaceholders';\r\n }\r\n\r\n getBulkErredEntitiesMapVarName = (entityType) => {\r\n if (entityType === TYPE_OF_ENTITY.Unit.value) return 'bulkRequestErredUnitsMap';\r\n return 'bulkRequestErredPlaceholdersMap';\r\n }\r\n\r\n addToNewAndUpdatedEntitiesList = (entity, isUpdate = false, updatedPropertyAndValue = {},\r\n shouldClearPrevValues = false) => {\r\n let key;\r\n let value;\r\n const { entityType } = entity;\r\n const isEntityPlaceholder = entityType === TYPE_OF_ENTITY.Placeholder.value;\r\n const newAndUpdatedEntityDataVarName = this.getNewAndUpdatedEntityDataVarNameByType(entityType);\r\n\r\n if (!isUpdate) {\r\n const [{\r\n tempId, entityType: exclude,\r\n placeholderType: type, ...restData\r\n }] = getEntitiesDataFromCanvas(entity, undefined, this.isFacilityMigrated);\r\n key = tempId;\r\n value = { ...restData, ...(isEntityPlaceholder && { type }) };\r\n } else if (isObjWithKeys(updatedPropertyAndValue)) {\r\n const { id, tempId } = entity;\r\n key = id || tempId;\r\n const {\r\n bev: prevBev,\r\n ...restPrevValues\r\n } = shouldClearPrevValues ? {} : this[newAndUpdatedEntityDataVarName][key] || {};\r\n const {\r\n bev, placeholderType: type, placeholderStatus: status,\r\n ...restUpdatedProperties\r\n } = updatedPropertyAndValue;\r\n value = {\r\n ...restPrevValues,\r\n ...((bev || prevBev) && { bev: { ...prevBev, ...bev } }),\r\n ...restUpdatedProperties,\r\n ...(id && {\r\n id,\r\n __action_type: 'Update',\r\n ...(isEntityPlaceholder && { ...(status && { status }) }),\r\n }),\r\n ...(isEntityPlaceholder && {\r\n ...(type && {\r\n type,\r\n ...type !== PLACEHOLDER_TYPE.Others.value && { label: type },\r\n }),\r\n }),\r\n };\r\n\r\n if (((entityType === TYPE_OF_ENTITY.Unit.value && !value.unitType)\r\n || (entityType === TYPE_OF_ENTITY.Placeholder.value && !value.type)) && !value.label && !value.id) {\r\n delete this[newAndUpdatedEntityDataVarName][key];\r\n return;\r\n }\r\n }\r\n\r\n const { bev: unprocessedBevValues } = value || {};\r\n if (isObjWithKeys(unprocessedBevValues)) {\r\n value.bev = getProcessedBevValues(unprocessedBevValues);\r\n }\r\n\r\n if (key && value) this[newAndUpdatedEntityDataVarName][key] = value;\r\n };\r\n\r\n /**\r\n * @description Handles the deletion of given entities from canvas based on whether\r\n * it's a new entity or an existing one\r\n * @param {fabric.Group[]} entities Array of fabric.Group objects\r\n */\r\n handleDeletionOfEntityFromCanvas = (entities) => {\r\n let entityList = entities;\r\n if (!Array.isArray(entities)) {\r\n entityList = [entities];\r\n }\r\n entityList.forEach((entity) => {\r\n const { id, tempId, entityType } = entity;\r\n\r\n const isEntityUnit = entityType === TYPE_OF_ENTITY.Unit.value;\r\n if (isEntityUnit) return; // Delete is not allowed for units currently\r\n\r\n const isEntityPlaceholder = entityType === TYPE_OF_ENTITY.Placeholder.value;\r\n const newAndUpdatedEntityDataVarName = this.getNewAndUpdatedEntityDataVarNameByType(entityType);\r\n const bulkErredEntitiesMapVarName = this.getBulkErredEntitiesMapVarName(entityType);\r\n\r\n if (tempId) {\r\n delete this[newAndUpdatedEntityDataVarName][tempId];\r\n if (isEntityUnit) {\r\n const { _objects: [, textObj] = [] } = entity;\r\n const { text: label } = textObj;\r\n delete this.labelToIdMap[label];\r\n const idAgainstLabel = this.labelToIdMap[label];\r\n if (idAgainstLabel === tempId) delete this.labelToIdMap[label];\r\n }\r\n } else if (id) {\r\n this.addToNewAndUpdatedEntitiesList(entity, true, {\r\n bev: {\r\n x: 0,\r\n y: 0,\r\n },\r\n ...(isEntityPlaceholder && { placeholderStatus: STATUS.Inactive.value }),\r\n }, true);\r\n delete this[bulkErredEntitiesMapVarName][id];\r\n }\r\n });\r\n const { formProps: { setFieldValue } = {} } = this;\r\n setFieldValue('id', undefined, true);\r\n };\r\n\r\n removeSuccessfulEntitiesAndGetErredEntities = (responseUnitsList = [], responsePlaceholdersList = []) => {\r\n const idListOfUnitsInRequest = Object.keys(this.newAndUpdatedUnits);\r\n const idListOfPlaceholdersInRequest = Object.keys(this.newAndUpdatedPlaceholders);\r\n const bulkRequestErredUnitsMap = {};\r\n const bulkRequestErredPlaceholdersMap = {};\r\n responseUnitsList.forEach((unit, index) => {\r\n const unitId = idListOfUnitsInRequest[index];\r\n const { label, id, errors } = unit;\r\n if (!errors) {\r\n delete this.newAndUpdatedUnits[unitId];\r\n // Update the newly assigned id in labelToIdMap\r\n const tempId = this.labelToIdMap[label];\r\n\r\n this.labelToIdMap[label] = id;\r\n this.initialLabelToIdMap[label] = id;\r\n\r\n const valueAtTempId = this.unitLabelBeforeDuplicateError[tempId];\r\n delete this.unitLabelBeforeDuplicateError[tempId];\r\n this.unitLabelBeforeDuplicateError[id] = valueAtTempId;\r\n } else if (unit.errors) {\r\n bulkRequestErredUnitsMap[unitId] = {\r\n id: unitId,\r\n errors,\r\n };\r\n }\r\n });\r\n responsePlaceholdersList.forEach((placeholder, index) => {\r\n const placeholderId = idListOfPlaceholdersInRequest[index];\r\n const { errors } = placeholder;\r\n if (!errors) {\r\n delete this.newAndUpdatedPlaceholders[placeholderId];\r\n } else if (placeholder.errors) {\r\n bulkRequestErredPlaceholdersMap[placeholderId] = {\r\n id: placeholderId,\r\n errors,\r\n };\r\n }\r\n });\r\n return { bulkRequestErredUnitsMap, bulkRequestErredPlaceholdersMap };\r\n };\r\n\r\n highlightErredEntities = (bulkRequestErredEntitiesMap, entityType) => {\r\n const { state: { setupModeCanvasRef } = {} } = this;\r\n setupModeCanvasRef.controlEntityHighlighting(bulkRequestErredEntitiesMap, entityType);\r\n };\r\n\r\n getFormattedPlaceholderReqBody = (newAndUpdatedPlaceholdersParam) => {\r\n const newAndUpdatedMappedPlaceholders = Object.values(newAndUpdatedPlaceholdersParam);\r\n // eslint-disable-next-line camelcase\r\n return newAndUpdatedMappedPlaceholders.map(({ id, __action_type, ...restPlaceholderData }) => ({ ...(id && { id, __action_type }), value: { ...restPlaceholderData } }));\r\n };\r\n\r\n handleOnSubmit = () => {\r\n const {\r\n props: { onAction }, newAndUpdatedUnits,\r\n newAndUpdatedPlaceholders,\r\n getFormattedPlaceholderReqBody,\r\n } = this;\r\n const stateToSet = {};\r\n this.entitiesBulkSaveAwaitResponseCount = 0;\r\n const unitBulkReqBody = Object.values(newAndUpdatedUnits);\r\n const placeholderBulkReqBody = getFormattedPlaceholderReqBody(newAndUpdatedPlaceholders);\r\n if (unitBulkReqBody.length) {\r\n stateToSet.isButtonLoading = true;\r\n this.setState(stateToSet);\r\n this.entitiesBulkSaveAwaitResponseCount += 1;\r\n saveUnitsData(onAction, unitBulkReqBody,\r\n (err, res) => this.onEntityBulkSaveResponse(err, res, TYPE_OF_ENTITY.Unit.value));\r\n }\r\n if (placeholderBulkReqBody.length) {\r\n stateToSet.isButtonLoading = true;\r\n this.setState(stateToSet);\r\n this.entitiesBulkSaveAwaitResponseCount += 1;\r\n savePlaceholdersData(onAction, placeholderBulkReqBody,\r\n (err, res) => this.onEntityBulkSaveResponse(err, res, TYPE_OF_ENTITY.Placeholder.value));\r\n }\r\n };\r\n\r\n checkAndCallOnEntitiesSave = () => {\r\n if ((this.entitiesBulkSaveAwaitResponseCount > 1 && isObjWithKeys(this.unitBulkSaveResponse)\r\n && isObjWithKeys(this.placeholderBulkSaveResponse)) || this.entitiesBulkSaveAwaitResponseCount === 1) {\r\n this.onEntitiesSave();\r\n }\r\n }\r\n\r\n onEntityBulkSaveResponse = (apiError, response, entityType) => {\r\n switch (entityType) {\r\n case TYPE_OF_ENTITY.Unit.value:\r\n this.unitBulkSaveResponse = { apiError, response };\r\n break;\r\n case TYPE_OF_ENTITY.Placeholder.value:\r\n this.placeholderBulkSaveResponse = { apiError, response };\r\n break;\r\n default:\r\n break;\r\n }\r\n this.checkAndCallOnEntitiesSave();\r\n }\r\n\r\n onEntitiesSave = () => {\r\n const {\r\n props: { clearStoreKeys } = {},\r\n formProps: {\r\n resetForm,\r\n initialValues, initialValues: {\r\n extra: initialExtraValues,\r\n bev: prevInitialBevValues = {},\r\n } = {},\r\n values: { bev: { level: currentLevel } = {} } = {},\r\n } = {},\r\n unitBulkSaveResponse: {\r\n apiError: unitApiError,\r\n response: unitBulkSaveResponseBody,\r\n } = {},\r\n placeholderBulkSaveResponse: {\r\n apiError: placeholderApiError,\r\n response: placeholderBulkSaveResponseBody,\r\n } = {},\r\n } = this;\r\n\r\n if (unitApiError || placeholderApiError) {\r\n this.bulkRequestErredUnitsMap = this.newAndUpdatedUnits;\r\n this.highlightErredEntities(this.bulkRequestErredUnitsMap, TYPE_OF_ENTITY.Unit.value);\r\n\r\n this.bulkRequestErredPlaceholdersMap = this.newAndUpdatedPlaceholders;\r\n this.highlightErredEntities(this.bulkRequestErredPlaceholdersMap, TYPE_OF_ENTITY.Placeholder.value);\r\n\r\n this.setSnackbarProps(true, localisable.bevUnitDataSaveFailed, 'error');\r\n } else {\r\n const { data: unitResponseData = [] } = unitBulkSaveResponseBody || {};\r\n const { data: placeholderResponseData = [] } = placeholderBulkSaveResponseBody || {};\r\n const {\r\n bulkRequestErredUnitsMap,\r\n bulkRequestErredPlaceholdersMap,\r\n } = this.removeSuccessfulEntitiesAndGetErredEntities(unitResponseData, placeholderResponseData);\r\n\r\n this.bulkRequestErredUnitsMap = bulkRequestErredUnitsMap;\r\n this.bulkRequestErredPlaceholdersMap = bulkRequestErredPlaceholdersMap;\r\n\r\n if (isObjWithKeys(bulkRequestErredUnitsMap) || isObjWithKeys(bulkRequestErredPlaceholdersMap)) {\r\n const { state: { setupModeCanvasRef } = {} } = this;\r\n const fabricCanvasInstance = setupModeCanvasRef.getFabricCanvasInstance();\r\n fabricCanvasInstance.discardActiveObject(undefined);\r\n this.setSnackbarProps(true, localisable.bevSetupDataPartiallySaved, 'error');\r\n this.highlightErredEntities(bulkRequestErredUnitsMap, TYPE_OF_ENTITY.Unit.value);\r\n this.highlightErredEntities(bulkRequestErredPlaceholdersMap, TYPE_OF_ENTITY.Placeholder.value);\r\n } else {\r\n this.setSnackbarProps(true, localisable.bevSetupDataSaved);\r\n clearStoreKeys([STORE_KEY.UNIT_BEV, STORE_KEY.PLACEHOLDER]);\r\n this.fetchOrRefreshEntitiesData(currentLevel);\r\n }\r\n resetForm({\r\n ...initialValues,\r\n extra: { ...initialExtraValues, levelsList: this.levelsList },\r\n bev: { ...prevInitialBevValues, level: currentLevel },\r\n });\r\n this.shouldClearStore = true;\r\n }\r\n\r\n // Reset the response related variables\r\n this.unitBulkSaveResponse = {};\r\n this.placeholderBulkSaveResponse = {};\r\n this.entitiesBulkSaveAwaitResponseCount = 0;\r\n\r\n this.setState({\r\n isButtonLoading: false,\r\n shouldDisableToolBox: false,\r\n });\r\n };\r\n\r\n shouldDataUpdate = () => {\r\n const {\r\n unitBev: { status: unitDataStatus = STORE_KEY_STATUS.UNLOADED } = {},\r\n placeholders: { status: placeholderDataStatus = STORE_KEY_STATUS.UNLOADED } = {},\r\n } = this.props;\r\n const isUnitBevDataLoaded = unitDataStatus !== null\r\n ? STATUS_TO_UPDATE_ON.includes(unitDataStatus)\r\n : false;\r\n const isPlaceholderDataLoaded = placeholderDataStatus !== null\r\n ? STATUS_TO_UPDATE_ON.includes(placeholderDataStatus)\r\n : false;\r\n this.isDataLoaded = isUnitBevDataLoaded && isPlaceholderDataLoaded;\r\n\r\n const shouldUpdate = (this.unitBevStoreStatus !== unitDataStatus\r\n || this.placeholderStoreStatus !== placeholderDataStatus) && this.isDataLoaded;\r\n\r\n this.unitBevStoreStatus = unitDataStatus;\r\n this.placeholderStoreStatus = placeholderDataStatus;\r\n\r\n return shouldUpdate;\r\n };\r\n\r\n getEntitiesData = () => {\r\n if (this.shouldDataUpdate()) {\r\n const { unitBev: { data: { data = EMPTY_LIST } = {} } = {} } = this.props;\r\n this.placeholders = this.getPlaceholders();\r\n this.units = data.map(({\r\n id,\r\n label,\r\n rentalStatus,\r\n bev,\r\n entityType = TYPE_OF_ENTITY.Unit.value,\r\n unitType: { id: unitType } = {},\r\n availabilityStatus,\r\n }) => ({\r\n id,\r\n label,\r\n rentalStatus,\r\n bev,\r\n unitType,\r\n entityType,\r\n availabilityStatus,\r\n }));\r\n }\r\n return [...this.units, ...this.placeholders];\r\n };\r\n\r\n getPlaceholders = () => {\r\n const { props: { placeholder: { data: { data = EMPTY_LIST } = {} } = {} } = {} } = this;\r\n return data.map(({ id, value: { label, type, bev } = {} } = {}) => ({\r\n id,\r\n label,\r\n placeholderType: type,\r\n entityType: TYPE_OF_ENTITY.Placeholder.value,\r\n bev,\r\n }));\r\n }\r\n\r\n\r\n onLevelManagementClick = () => {\r\n this.setState({ openLevelManagementModal: true });\r\n };\r\n\r\n closeLevelManagementModal = () => {\r\n this.setState({ openLevelManagementModal: false });\r\n };\r\n\r\n fetchUnitCountData = (callback) => {\r\n const { props: { onAction } = {} } = this;\r\n fetchUnitCountByLevelData(onAction, callback);\r\n };\r\n\r\n handleLevelsSave = () => {\r\n const {\r\n props: { onAction } = {},\r\n formProps: { values: { extra: { levelsList = [] } = {} } = {} } = {},\r\n onLevelsSave, levelConfigId,\r\n } = this;\r\n const processedLevelsData = this.getLevelsObjFromLevelsList(levelsList);\r\n this.setState({ isButtonLoading: true });\r\n saveLevelData(onAction, levelConfigId, processedLevelsData, onLevelsSave);\r\n };\r\n\r\n onLevelsSave = (apiError, response) => {\r\n if (apiError) {\r\n this.handleErrors(apiError);\r\n this.setSnackbarProps(true, localisable.levelsSaveFailed, 'error');\r\n } else if (response) {\r\n const { data: [{ id: levelConfigId, value: { levels: levelsObj = {} } = {} } = {}] = [], isMockResponseWs = false } = response;\r\n const {\r\n formProps: {\r\n resetForm, setValues,\r\n initialValues, initialValues: { bev: prevInitialBevValues = {} } = {},\r\n values,\r\n values: { bev: { level: currentLevel, ...restCurrentBevValues } = {} } = {},\r\n },\r\n } = this;\r\n const [firstLevel] = Object.keys(levelsObj);\r\n this.levelsList = this.getLevelsListFromLevelsObj(levelsObj);\r\n const extraValueObj = {\r\n initialLevelsObj: levelsObj,\r\n levelsList: this.levelsList,\r\n };\r\n resetForm({\r\n ...initialValues,\r\n extra: extraValueObj,\r\n bev: { ...prevInitialBevValues, level: firstLevel },\r\n });\r\n setValues({\r\n ...values,\r\n extra: extraValueObj,\r\n ...((!this.levelConfigId || !levelsObj[currentLevel])\r\n && { bev: { ...restCurrentBevValues, level: firstLevel } }),\r\n });\r\n if (!this.levelConfigId) this.levelConfigId = levelConfigId;\r\n if (!levelsObj[currentLevel]) this.onLevelChange(undefined, firstLevel);\r\n if (!isMockResponseWs) {\r\n this.setSnackbarProps(true, localisable.levelsSaved);\r\n this.closeLevelManagementModal();\r\n }\r\n this.shouldClearStore = true;\r\n }\r\n this.setState({ isButtonLoading: false });\r\n };\r\n\r\n getCanvasObjectOfExistingUnit = (unitId, fabricCanvasInstance) => {\r\n let canvasObjects = [];\r\n if (fabricCanvasInstance) canvasObjects = fabricCanvasInstance.getObjects('group');\r\n return canvasObjects.find((object) => {\r\n const { id, tempId } = object;\r\n return id === unitId || tempId === unitId;\r\n });\r\n };\r\n\r\n handleMoveToCurrentLocation = () => {\r\n const {\r\n formProps: {\r\n values: {\r\n label,\r\n entityType,\r\n placeholderType,\r\n bev: { level: currentLevel } = {},\r\n } = {},\r\n errors: { label: labelError } = {},\r\n } = {},\r\n state: { setupModeCanvasRef } = {},\r\n labelToIdMap,\r\n } = this;\r\n if (labelError === localisable.unitAlreadyExists) {\r\n const fabricCanvasInstance = setupModeCanvasRef.getFabricCanvasInstance();\r\n const actObject = fabricCanvasInstance.getActiveObject();\r\n const { type, id, tempId } = actObject || {};\r\n\r\n if (fabricCanvasInstance && actObject && type === 'group') {\r\n const { CENTER } = POSITIONS;\r\n const idOfExistingUnit = labelToIdMap[label];\r\n\r\n const canvasObjectOfDuplicateUnit = actObject;\r\n const canvasObjectOfExistingUnit = this.getCanvasObjectOfExistingUnit(idOfExistingUnit, fabricCanvasInstance);\r\n\r\n if (canvasObjectOfExistingUnit) { // This means the existing unit is on the current level\r\n const { angle, width, height, unitType } = canvasObjectOfDuplicateUnit;\r\n const propertyToValueMap = {\r\n 'bev.angle': angle,\r\n 'bev.width': width,\r\n 'bev.depth': height,\r\n unitType,\r\n entityType,\r\n placeholderType,\r\n };\r\n // The following line will update the canvas object as well as make an entry into newAndUpdatedUnits\r\n Object.keys(propertyToValueMap)\r\n .forEach(property => setupModeCanvasRef.modifyEntityData(property, propertyToValueMap[property], canvasObjectOfExistingUnit, true));\r\n\r\n const centerCoordsOfDuplicateUnit = canvasObjectOfDuplicateUnit.getCenterPoint();\r\n canvasObjectOfExistingUnit.setPositionByOrigin(centerCoordsOfDuplicateUnit, CENTER, CENTER);\r\n canvasObjectOfExistingUnit.setCoords();\r\n const { left: x, top: y } = canvasObjectOfExistingUnit;\r\n this.addToNewAndUpdatedEntitiesList(canvasObjectOfExistingUnit, true, {\r\n bev: {\r\n x,\r\n y,\r\n },\r\n });\r\n\r\n fabricCanvasInstance.remove(canvasObjectOfDuplicateUnit);\r\n this.handleDeletionOfEntityFromCanvas(canvasObjectOfDuplicateUnit);\r\n } else { // This means the existing unit is on a different level --OR-- has x,y = 0,0 and is not on canvas\r\n if (id) {\r\n this.addToNewAndUpdatedEntitiesList({\r\n id,\r\n tempId,\r\n entityType,\r\n }, true, {\r\n bev: {\r\n x: 0,\r\n y: 0,\r\n },\r\n }, true);\r\n } else {\r\n delete this.newAndUpdatedUnits[tempId];\r\n }\r\n canvasObjectOfDuplicateUnit.set('id', idOfExistingUnit);\r\n canvasObjectOfDuplicateUnit.set('tempId', undefined);\r\n setupModeCanvasRef.modifyEntityData('bev.level', currentLevel, canvasObjectOfDuplicateUnit);\r\n const { left: x, top: y, angle, width, height, unitType } = canvasObjectOfDuplicateUnit;\r\n this.addToNewAndUpdatedEntitiesList(canvasObjectOfDuplicateUnit, true, {\r\n bev: {\r\n x,\r\n y,\r\n angle,\r\n ...getReconvertedWH(width, height, this.isFacilityMigrated),\r\n },\r\n unitType,\r\n });\r\n }\r\n let initialLabelOfDuplicateUnit = '';\r\n if (id) {\r\n Object.keys(this.initialLabelToIdMap)\r\n .some((initialLabel) => {\r\n if (this.initialLabelToIdMap[initialLabel] === (id || tempId).toString()) {\r\n initialLabelOfDuplicateUnit = initialLabel;\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n const labelBeforeDuplicateError = this.unitLabelBeforeDuplicateError[id || tempId];\r\n delete this.unitLabelBeforeDuplicateError[id || tempId];\r\n delete this.labelToIdMap[labelBeforeDuplicateError];\r\n if (id) this.labelToIdMap[initialLabelOfDuplicateUnit] = id;\r\n fabricCanvasInstance.setActiveObject(canvasObjectOfExistingUnit || canvasObjectOfDuplicateUnit);\r\n fabricCanvasInstance.renderAll();\r\n }\r\n setupModeCanvasRef.loadEntityDataIntoForm(fabricCanvasInstance.getActiveObject());\r\n }\r\n this.setState({ showDuplicateUnitLabelAlert: false });\r\n };\r\n\r\n handleYes = () => {\r\n const { history } = this.props;\r\n const { targetLocation } = this;\r\n this.shouldChangeRoute = true;\r\n this.newAndUpdatedUnits = {};\r\n this.newAndUpdatedPlaceholders = {};\r\n this.bulkRequestErredUnitsMap = {};\r\n this.bulkRequestErredPlaceholdersMap = {};\r\n this.unitLabelBeforeDuplicateError = {};\r\n this.labelToIdMap = { ...this.initialLabelToIdMap };\r\n if (targetLocation) {\r\n history.push(targetLocation);\r\n } else {\r\n history.goBack();\r\n }\r\n };\r\n\r\n renderFooter = () => {\r\n const {\r\n props: { classes } = {},\r\n state: { isButtonLoading, setupModeCanvasRef } = {},\r\n formProps: { isValid, setStatus, dirty, status: { errors, values, ...status } = {} } = {},\r\n newAndUpdatedUnits = {},\r\n newAndUpdatedPlaceholders = {},\r\n bulkRequestErredUnitsMap = {},\r\n bulkRequestErredPlaceholdersMap = {},\r\n } = this;\r\n let isFormValid = isValid;\r\n if (setupModeCanvasRef) {\r\n const fabricCanvasInstance = setupModeCanvasRef.getFabricCanvasInstance();\r\n const activeObject = fabricCanvasInstance.getActiveObject();\r\n const { type } = activeObject || {};\r\n if (!isValid && (!activeObject || type === 'activeSelection')) isFormValid = true;\r\n }\r\n const areNewEntitiesAddedOrUpdated = isObjWithKeys({ ...newAndUpdatedUnits, ...newAndUpdatedPlaceholders });\r\n const areThereErredEntities = isObjWithKeys({ ...bulkRequestErredUnitsMap, ...bulkRequestErredPlaceholdersMap });\r\n const positiveButtonProps = {\r\n disabled: (!isFormValid || !dirty || isButtonLoading || !areNewEntitiesAddedOrUpdated) && !areThereErredEntities,\r\n onClick: () => {\r\n setStatus(status);\r\n this.handleOnSubmit();\r\n },\r\n };\r\n return this.getFooter({ positiveButtonProps, ...{ className: classes.footer } });\r\n };\r\n\r\n getHeader = (isSetupMode) => {\r\n const { props: { classes } = {}, onLevelManagementClick, changeMode } = this;\r\n return (\r\n \r\n \r\n \r\n {isSetupMode ? (localisable.bevSetup) : (localisable.bevView)}\r\n \r\n \r\n \r\n {isSetupMode && (\r\n \r\n {\r\n localisable.levelManagement\r\n }\r\n \r\n )}\r\n \r\n {\r\n isSetupMode\r\n ? (localisable.bevViewModeLinkText)\r\n : (localisable.bevSetupModeLinkText)\r\n }\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n validate = (values) => {\r\n const { bev: { width, depth, angle } = {} } = values || {};\r\n if (width <= 0 || depth <= 0 || angle < 0 || angle > 360) {\r\n return {\r\n bev: {\r\n ...width <= 0 && { width: localisable.isPositiveNumeric },\r\n ...depth <= 0 && { depth: localisable.isPositiveNumeric },\r\n ...((angle < 0 || angle > 360) && { angle: angle < 0 ? localisable.isPositiveNumeric : localisable.isValidAngle }),\r\n },\r\n };\r\n }\r\n return {};\r\n };\r\n\r\n checkForDuplicateUnitLabelError = () => {\r\n const { errors: { label: labelError } = {} } = this.formProps;\r\n if (labelError === localisable.unitAlreadyExists) {\r\n this.setShowDuplicateUnitLabelAlertDialog(true);\r\n }\r\n };\r\n\r\n handleAddingEntityOnPlusButtonClick = () => {\r\n const { setupModeCanvasRef } = this.state;\r\n const { type } = setupModeCanvasRef.fabricCanvas.getActiveObject() || {};\r\n if (type !== 'activeSelection') {\r\n const {\r\n values,\r\n values: { unitType, entityType, placeholderType, bev: { width, depth, angle, level } = {} } = {},\r\n } = this.formProps;\r\n\r\n const newLabel = getNextLabel(values, type === 'group');\r\n\r\n const isEntityUnit = entityType === TYPE_OF_ENTITY.Unit.value;\r\n const isEntityPlaceholder = entityType === TYPE_OF_ENTITY.Placeholder.value;\r\n\r\n const newEntity = {\r\n entityType,\r\n label: newLabel,\r\n ...(isEntityUnit && { unitType }),\r\n ...(isEntityPlaceholder && { placeholderType }),\r\n bev: {\r\n width,\r\n depth,\r\n angle,\r\n level,\r\n },\r\n };\r\n setupModeCanvasRef.addEntity(newEntity, true);\r\n if (isEntityUnit) this.checkForDuplicateUnitLabelError();\r\n }\r\n };\r\n\r\n handleAddingUnitOnEnter = (event) => {\r\n const { keyCode } = event;\r\n const { isValid } = this.formProps;\r\n const { openLevelManagementModal } = this.state;\r\n if (keyCode === KEY_CODES.ENTER) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n if (isValid && !openLevelManagementModal) {\r\n this.handleAddingEntityOnPlusButtonClick();\r\n }\r\n }\r\n };\r\n\r\n // Used for search in view mode\r\n setScrollToIndex = (index) => {\r\n this.setState({ scrollToIndex: index });\r\n };\r\n\r\n renderComponent() {\r\n const {\r\n validate,\r\n zoomCanvas,\r\n levelsList,\r\n handleKeyUp,\r\n labelToIdMap,\r\n initialValues,\r\n onLevelChange,\r\n handlePanning,\r\n handleKeyDown,\r\n scrollCanvas,\r\n setShowLoader,\r\n getEntitiesData,\r\n colorLegendData,\r\n activeDirection,\r\n handleMouseMove,\r\n restrictPanning,\r\n setUnitTypeList,\r\n setShowInfoCard,\r\n addToUnitTypeMap,\r\n setCanvasGridRef,\r\n defaultZoomValue,\r\n handleLevelsSave,\r\n setSnackbarProps,\r\n addToLabelToIdMap,\r\n onDirectionChange,\r\n isFacilityMigrated,\r\n fetchUnitCountData,\r\n modifyLabelToIdMap,\r\n handleEntityMouseOut,\r\n handleCanvasMouseUp,\r\n handleEntityMouseOver,\r\n moveTooltipWithPointer,\r\n colorLegendDataUpdated,\r\n setShouldDisableToolBox,\r\n saveCurrentZoomAsDefault,\r\n closeLevelManagementModal,\r\n setRequiredFieldsConfig,\r\n handleMoveToCurrentLocation,\r\n checkAndHandleLabelOverflow,\r\n setUnitLabelBeforeDuplicateError,\r\n handleAddingEntityOnPlusButtonClick,\r\n setShowDuplicateUnitLabelAlertDialog,\r\n setShowFullPageLoader, handleErrors,\r\n setScrollToIndex, setSearchedUnit,\r\n unitIdTenantMapper, standardPeriod,\r\n unitIdReservationMapper,\r\n state: {\r\n setupModeCanvasRef, requiredFieldsConfig,\r\n zoomValue, openLevelManagementModal, isButtonLoading, canvasGridRef,\r\n showDuplicateUnitLabelAlert, shouldShowAlert, discard = false,\r\n shouldDisableToolBox, unitTypeList, showInfoCard, showLoader,\r\n showFullPageLoader, scrollToIndex, searchedUnit,\r\n } = {},\r\n props: { classes, currentFacility, currentAccountId, onAction, history, mode, unitBev } = {},\r\n formProps: {\r\n dirty = false,\r\n values: { bev: { level } = {} } = {},\r\n } = {},\r\n } = this;\r\n const { SETUP } = BEV_MODES;\r\n const isSetupMode = mode === SETUP;\r\n const entities = getEntitiesData();\r\n return (\r\n <>\r\n {\r\n this.formProps = formProps;\r\n const { handleSubmit } = formProps;\r\n return (\r\n \r\n {showFullPageLoader ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n {\r\n isSetupMode && (\r\n <>\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n )}\r\n headerClassName={clsx(classes.canvasHeader, !isSetupMode && classes.viewCanvasHeader)}\r\n bodyClassName={classes.pageBody}\r\n {...(isSetupMode && { footer: this.renderFooter() })}\r\n className={classes.page}\r\n >\r\n \r\n {\r\n isSetupMode ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n {\r\n showLoader && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n )}\r\n \r\n );\r\n }\r\n }\r\n />\r\n \r\n {localisable.ok}\r\n \r\n )}\r\n >\r\n {localisable.discardConfirmation}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nLoadBev.propTypes = {\r\n isDataLoaded: PropTypes.bool,\r\n classes: PropTypes.object,\r\n children: PropTypes.node,\r\n isView: PropTypes.bool,\r\n setCanvasGridRef: PropTypes.func,\r\n};\r\n\r\nexport default withStyles(bevStyles)(Bev);\r\n","import moment from 'moment';\r\nimport { Form } from 'formik';\r\nimport FilterComponent from '../../FilterComponent';\r\nimport { FormDatePicker } from '../../../../../generic/datepicker/components/DatePicker';\r\nimport { SM_6 } from '../../../../../../config/constants/GridSpacingConstants';\r\nimport { Grid, withStyles } from '../../../../../generic/componentlibrary/components/Components';\r\nimport DateRangeStyle from '../styles/DateRangeStyle';\r\n\r\nclass DateRange extends FilterComponent {\r\n render() {\r\n const {\r\n section: { filters: [filter = ''] },\r\n classes,\r\n appliedFilters,\r\n } = this.props;\r\n if (appliedFilters[filter]) {\r\n this.initialValue = appliedFilters[filter].value;\r\n }\r\n return (\r\n
\r\n {this.renderComponentTitle()}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nDateRange.propTypes = {\r\n section: PropTypes.any.isRequired, // The current section\r\n componentLabel: PropTypes.string.isRequired, // The label of component\r\n classes: PropTypes.any,\r\n appliedFilters: PropTypes.any, // The current applied filters, to bind initial value\r\n};\r\n\r\nexport default withStyles(DateRangeStyle)(DateRange);\r\n","import { Form } from 'formik';\r\nimport { FormTextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport { SM_12_MD_6_LG_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { Grid, withStyles } from '../../../../../generic/componentlibrary/components/Components';\r\nimport NumberRangeStyle from '../styles/NumberRangeStyle';\r\nimport FilterComponent from '../../FilterComponent';\r\n\r\nclass NumberRange extends FilterComponent {\r\n render() {\r\n const {\r\n section: { filters: [filter = ''] },\r\n // componentLabel,\r\n classes,\r\n appliedFilters,\r\n } = this.props;\r\n if (appliedFilters[filter]) {\r\n this.initialValue = appliedFilters[filter].value;\r\n }\r\n\r\n return (\r\n
\r\n {this.renderComponentTitle()}\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nNumberRange.propTypes = {\r\n section: PropTypes.any.isRequired, // The current section\r\n componentLabel: PropTypes.string.isRequired, // The label of component\r\n classes: PropTypes.any,\r\n device: PropTypes.any, // The type of device\r\n appliedFilters: PropTypes.any, // The current applied filters, to bind initial value\r\n};\r\n\r\nexport default withStyles(NumberRangeStyle)(NumberRange);\r\n","import { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { FORM_COMPONENTS } from 'Generic/form/config/FormComponentsConfig';\r\nimport { screenMaxWidth } from 'Commons/config/constants/ScreenWidths';\r\nimport Form from '../../form/components/Form';\r\nimport { Switch as MaterialUiSwitch, FormControlLabel, withStyles } from '../../componentlibrary/components/Components';\r\nimport switchStyle from '../styles/SwitchStyle';\r\n\r\nclass Switch extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n const { trackValue } = props;\r\n this.state = {};\r\n if (trackValue) {\r\n const { checked } = props;\r\n this.state = { checked };\r\n }\r\n }\r\n\r\n onChange = (event) => {\r\n const { onChange, trackValue } = this.props;\r\n const { target: { checked } } = event;\r\n if (trackValue) {\r\n this.setState({ checked });\r\n }\r\n onChange(event, checked);\r\n }\r\n\r\n renderSwitch = (props) => {\r\n const { checked: stateChecked } = this.state;\r\n const { trackValue, value, readOnly, classes } = this.props;\r\n const { innerWidth } = window;\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n onChange, checked, trackValue, form, label, value,\r\n FormControlLabelProps, readOnly, classes, ...props\r\n } = this.props;\r\n return label ? (\r\n \r\n )\r\n : this.renderSwitch(props);\r\n }\r\n}\r\n\r\n\r\nSwitch.propTypes = {\r\n form: PropTypes.object,\r\n onChange: PropTypes.func,\r\n checked: PropTypes.bool,\r\n trackValue: PropTypes.bool,\r\n name: PropTypes.string,\r\n value: PropTypes.bool,\r\n FormControlLabelProps: PropTypes.object,\r\n label: PropTypes.node,\r\n readOnly: PropTypes.bool,\r\n classes: PropTypes.object.isRequired,\r\n};\r\n\r\nSwitch.defaultProps = {\r\n form: { setFieldValue: () => { } },\r\n onChange: () => { },\r\n checked: false,\r\n trackValue: true,\r\n readOnly: false,\r\n};\r\n\r\nconst SwitchComponent = withStyles(switchStyle)(Switch);\r\nSwitchComponent.displayName = FORM_COMPONENTS.SWITCH;\r\nconst FormSwitch = Form(SwitchComponent);\r\n\r\nexport {\r\n SwitchComponent as Switch,\r\n FormSwitch,\r\n};\r\n","import { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport Button from 'Generic/button/components/Button';\r\nimport customTitleBarStyles from '../styles/CustomTitleBarStyles';\r\n\r\nconst useStyles = makeStyles(customTitleBarStyles);\r\n\r\nconst CustomTitleBar = ({\r\n readOnly,\r\n configId,\r\n isFormActive,\r\n showAlertDialog,\r\n headerActions,\r\n className,\r\n statusButtonProps,\r\n configFormClassRef,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const renderRegularStatusButton = () => (\r\n \r\n {isFormActive ? localisable.deactivate : localisable.activate}\r\n \r\n );\r\n\r\n const renderStatusButton = () => (configFormClassRef\r\n ? configFormClassRef.renderStatusButton({ buttonProps: statusButtonProps })\r\n : renderRegularStatusButton());\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {configId && renderStatusButton()}\r\n \r\n \r\n {\r\n headerActions.map(({ id, action }) => (\r\n \r\n {action}\r\n \r\n ))\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nCustomTitleBar.propTypes = {\r\n readOnly: PropTypes.bool,\r\n configId: PropTypes.string,\r\n className: PropTypes.string,\r\n isFormActive: PropTypes.bool,\r\n showAlertDialog: PropTypes.func,\r\n headerActions: PropTypes.array,\r\n statusButtonProps: PropTypes.object,\r\n configFormClassRef: PropTypes.object,\r\n};\r\n\r\nCustomTitleBar.defaultProps = {\r\n readOnly: false,\r\n showAlertDialog: EMPTY_FUNC,\r\n headerActions: [],\r\n statusButtonProps: {},\r\n};\r\n\r\nexport default React.memo(CustomTitleBar);\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { SM_11, SM_3_XS_4, SM_4_XS_6, SM_4_XS_8, SM_6_XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_MAX_LENGTH_25, IS_MAX_LENGTH_50, ZIP_CODE_VALIDATOR } from 'Commons/config/constants/Validators';\r\nimport { memo, useRef, useState } from 'react';\r\nimport { INPUT_TYPE, VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { fetchZipCodeData } from 'Commons/components/business/formcomponents/address/config/ApiRequests';\r\nimport ThreeDotProgress from 'Generic/threedotprogress/components/ThreeDotProgress';\r\nimport AddressStyles from 'Commons/components/business/formcomponents/address/styles/AddressStyles';\r\nimport { EMPTY_FUNC, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport { getValue } from 'Commons/helpers/utils/DataHelpers';\r\nimport Label from '../../Label/components/Label';\r\n\r\nconst useStyles = makeStyles(AddressStyles, { name: 'Address' });\r\n\r\nconst Address = (props) => {\r\n const {\r\n mapping: {\r\n line1: {\r\n visibility: addressLine1Visibility = true,\r\n ...addressLine1Props\r\n } = {},\r\n line2: {\r\n visibility: addressLine2Visibility = true,\r\n ...addressLine2Props\r\n } = {},\r\n state: {\r\n name: stateFieldName,\r\n visibility: stateVisibility = true,\r\n disabled: isStateDisabled = false,\r\n ...stateProps\r\n } = {},\r\n country: {\r\n name: countryFieldName,\r\n visibility: countryVisibility = true,\r\n disabled: isCountryDisabled = false,\r\n ...countryProps\r\n } = {},\r\n city: {\r\n name: cityFieldName,\r\n visibility: cityVisibility = true,\r\n disabled: isCityDisabled = false,\r\n ...cityProps\r\n } = {},\r\n zipCode: {\r\n name: zipCodeFieldName,\r\n visibility: zipVisibility = true,\r\n ...zipProps\r\n } = {},\r\n } = {},\r\n disabled,\r\n addressLabelVisibility,\r\n values = {},\r\n setFieldValue,\r\n setFieldTouched,\r\n onAction,\r\n status,\r\n setStatus,\r\n handleSubmit,\r\n disableFormSubmit,\r\n getWasFormSubmissionCancelled,\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const zipCodeFromValues = getValue(values, zipCodeFieldName);\r\n const cityFromValues = getValue(values, cityFieldName);\r\n const stateFromValues = getValue(values, stateFieldName);\r\n const countryFromValues = getValue(values, countryFieldName);\r\n\r\n const { current: threeDotProgressClasses = '' } = useRef({ spinner: classes.threeDotProgressSpinner });\r\n const { current: zipRelatedFieldsAddon } = useRef({ end: () });\r\n\r\n const prevZipCode = useRef(zipCodeFromValues || '');\r\n\r\n const { current: defaultZipRelatedFieldsObject = {} } = useRef({\r\n [cityFieldName]: false,\r\n [stateFieldName]: false,\r\n [countryFieldName]: false,\r\n });\r\n\r\n const { current: allZipRelatedFieldNames = [] } = useRef(Object.keys(defaultZipRelatedFieldsObject));\r\n\r\n const zipRelatedFieldsNotFilled = useRef([]);\r\n const zipRelatedFieldsNotEditedByUser = useRef([]);\r\n\r\n const zipRelatedFieldsEditedByUser = useRef({ ...defaultZipRelatedFieldsObject });\r\n\r\n const [zipRelatedFieldsDisabledAndLoadingStatus, setZipRelatedFieldsDisabledAndLoadingStatus] = useState({ ...defaultZipRelatedFieldsObject });\r\n\r\n const isZipRelatedFieldDisabledAndLoading = (fieldName) => {\r\n const { [fieldName]: isDisabledAndLoading = false } = zipRelatedFieldsDisabledAndLoadingStatus;\r\n return isDisabledAndLoading;\r\n };\r\n\r\n const isCurrentZipCodeDifferentFromPrev = () => {\r\n const zipCode = zipCodeFromValues || '';\r\n return zipCode !== prevZipCode.current;\r\n };\r\n\r\n const getZipRelatedFieldsNotFilled = () => allZipRelatedFieldNames.filter(fieldName => !getValue(values, fieldName));\r\n\r\n const getZipRelatedFieldsNotEditedByUser = () => allZipRelatedFieldNames.filter((fieldName) => {\r\n const { current: { [fieldName]: isEditedByUser = false } = {} } = zipRelatedFieldsEditedByUser;\r\n return !isEditedByUser;\r\n });\r\n\r\n const shouldFetchZipCodeData = () => {\r\n zipRelatedFieldsNotFilled.current = getZipRelatedFieldsNotFilled();\r\n const isAnyFieldNotFilled = !!zipRelatedFieldsNotFilled.current.length;\r\n\r\n zipRelatedFieldsNotEditedByUser.current = getZipRelatedFieldsNotEditedByUser();\r\n const isAnyFieldNotEditedByUser = !!zipRelatedFieldsNotEditedByUser.current.length;\r\n\r\n return isCurrentZipCodeDifferentFromPrev() && (isAnyFieldNotFilled || isAnyFieldNotEditedByUser);\r\n };\r\n\r\n const setCityField = (value) => {\r\n setFieldValue(cityFieldName, value);\r\n setFieldTouched(cityFieldName, true, false);\r\n };\r\n\r\n const setStateField = (value) => {\r\n setFieldValue(stateFieldName, value);\r\n setFieldTouched(stateFieldName, true, false);\r\n };\r\n\r\n const setCountryField = (value) => {\r\n setFieldValue(countryFieldName, value);\r\n setFieldTouched(countryFieldName, true, false);\r\n };\r\n\r\n const setOrUnsetAddressFields = ({ city, state, country } = {}, isReset = false) => {\r\n const {\r\n current: {\r\n [cityFieldName]: isCityEditedByUser = false,\r\n [stateFieldName]: isStateEditedByUser = false,\r\n [countryFieldName]: isCountryEditedByUser = false,\r\n } = {},\r\n } = zipRelatedFieldsEditedByUser;\r\n if (isReset) {\r\n if (cityFromValues && !isCityEditedByUser) setCityField('');\r\n if (stateFromValues && !isStateEditedByUser) setStateField('');\r\n if (countryFromValues && !isCountryEditedByUser) setCountryField('');\r\n } else {\r\n if (!!city && !isCityEditedByUser) {\r\n setCityField(city);\r\n }\r\n if (!!state && !isStateEditedByUser) {\r\n setStateField(state);\r\n }\r\n if (!!country && !isCountryEditedByUser) {\r\n setCountryField(country);\r\n }\r\n }\r\n };\r\n\r\n const setRelevantZipRelatedFieldsDisabledAndLoadingStatus = () => {\r\n const uniqueFieldNames = new Set([...zipRelatedFieldsNotFilled.current, ...zipRelatedFieldsNotEditedByUser.current]);\r\n const newState = [...uniqueFieldNames].reduce((acc, fieldName) => ({\r\n ...acc,\r\n [fieldName]: true,\r\n }), {});\r\n\r\n // Reset the fields being populated\r\n zipRelatedFieldsNotEditedByUser.current = [];\r\n zipRelatedFieldsNotFilled.current = [];\r\n\r\n setZipRelatedFieldsDisabledAndLoadingStatus(prevState => ({ ...prevState, ...newState }));\r\n };\r\n\r\n const setIsZipCodeDataBeingFetched = (value = true) => {\r\n setStatus({\r\n ...status,\r\n isZipCodeDataBeingFetched: value,\r\n });\r\n };\r\n\r\n const onZipCodeDataFetch = (apiError, response) => {\r\n setIsZipCodeDataBeingFetched(false);\r\n if (response) {\r\n const { data: [data = {}] = [] } = response;\r\n setOrUnsetAddressFields(data);\r\n }\r\n if (getWasFormSubmissionCancelled()) { // Since we disabled form submission before fetch zip code data, we need to reset the form submission cancellation flag\r\n disableFormSubmit(false);\r\n handleSubmit(); // Call the form submit handler now that we're done fetching the zip code data\r\n }\r\n setZipRelatedFieldsDisabledAndLoadingStatus({ ...defaultZipRelatedFieldsObject });\r\n };\r\n\r\n const zipCodeFieldOnBlur = (event) => {\r\n const { relatedTarget } = event;\r\n const { innerText, type } = relatedTarget || {};\r\n const zipCode = zipCodeFromValues || '';\r\n\r\n if (zipCode.length < 3) { // If zip code is less than 3 chars, then unset the fields\r\n setOrUnsetAddressFields(undefined, true);\r\n return;\r\n }\r\n\r\n if (onAction && shouldFetchZipCodeData()) {\r\n setRelevantZipRelatedFieldsDisabledAndLoadingStatus();\r\n setIsZipCodeDataBeingFetched();\r\n if (relatedTarget !== null && [INPUT_TYPE.BUTTON, INPUT_TYPE.SUBMIT].includes(type)\r\n && [localisable.save, localisable.next].includes(innerText)) { // To identify if the footer's Save/Next(In case of Move-In and related flows) button was clicked\r\n disableFormSubmit(); // This will prevent the form from submitting so that the zip code data can be fetched and set in the form\r\n }\r\n fetchZipCodeData(onAction, zipCode, onZipCodeDataFetch);\r\n }\r\n\r\n prevZipCode.current = zipCodeFromValues;\r\n };\r\n\r\n const zipRelatedFieldsOnChange = fieldName => ({ target: { value } = {} } = {}) => {\r\n zipRelatedFieldsEditedByUser.current[fieldName] = !!value;\r\n };\r\n\r\n const getZipRelatedFieldAddon = fieldName => (isZipRelatedFieldDisabledAndLoading(fieldName) ? zipRelatedFieldsAddon : EMPTY_OBJECT);\r\n\r\n return (\r\n \r\n {\r\n addressLabelVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n addressLine1Visibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n addressLine2Visibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n\r\n {\r\n cityVisibility\r\n && ( // TODO: Make the field as Dropdown\r\n \r\n )\r\n }\r\n {\r\n stateVisibility\r\n && ( // TODO: Make the field as Dropdown\r\n \r\n )\r\n }\r\n {\r\n zipVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n countryVisibility\r\n && (\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nAddress.propTypes = {\r\n config: PropTypes.object,\r\n disabled: PropTypes.bool,\r\n mapping: PropTypes.object,\r\n setConfig: PropTypes.func,\r\n withoutSection: PropTypes.bool,\r\n addressLabelVisibility: PropTypes.bool,\r\n onAction: PropTypes.func,\r\n values: PropTypes.object,\r\n setFieldValue: PropTypes.func,\r\n setFieldTouched: PropTypes.func,\r\n status: PropTypes.object,\r\n setStatus: PropTypes.func,\r\n handleSubmit: PropTypes.func,\r\n disableFormSubmit: PropTypes.func,\r\n getWasFormSubmissionCancelled: PropTypes.func,\r\n};\r\n\r\nAddress.defaultProps = {\r\n setConfig: EMPTY_FUNC,\r\n withoutSection: false,\r\n config: {},\r\n addressLabelVisibility: true,\r\n setFieldValue: EMPTY_FUNC,\r\n setFieldTouched: EMPTY_FUNC,\r\n setStatus: EMPTY_FUNC,\r\n handleSubmit: EMPTY_FUNC,\r\n disableFormSubmit: EMPTY_FUNC,\r\n getWasFormSubmissionCancelled: EMPTY_FUNC,\r\n};\r\n\r\nexport default memo(Address);\r\n","import useRouter from 'Commons/components/business/provider/useRouter';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\n\r\nconst CustomRoute = ({\r\n component: Component, path,\r\n removeRefOfUnmountedComponent, getKey,\r\n ...props\r\n}) => {\r\n const { location, match, history } = useRouter(path);\r\n\r\n const key = getKey({ location, match, history });\r\n const keyProp = key ? { key } : {};\r\n removeRefOfUnmountedComponent(Component); // updates component instance in Router\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nCustomRoute.propTypes = {\r\n component: PropTypes.any,\r\n path: PropTypes.string,\r\n removeRefOfUnmountedComponent: PropTypes.func,\r\n getKey: PropTypes.func,\r\n};\r\n\r\nCustomRoute.defaultProps = {\r\n removeRefOfUnmountedComponent: EMPTY_FUNC,\r\n getKey: EMPTY_FUNC,\r\n};\r\n\r\nexport default CustomRoute;\r\n","const checkZipCodeDataFetchStatus = (classRef, actions, formStatus) => {\r\n const { isZipCodeDataBeingFetched = false } = formStatus;\r\n if (isZipCodeDataBeingFetched) {\r\n classRef.setState({ isButtonLoading: true });\r\n // eslint-disable-next-line no-param-reassign\r\n classRef.shouldReEvaluateEditFormData = true;\r\n actions.setSubmitting(false);\r\n }\r\n};\r\n\r\nexport { checkZipCodeDataFetchStatus };\r\n","import React from 'react';\r\nimport { Form } from 'formik';\r\nimport getUUID from 'Commons/helpers/utils/generateUUID';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { withStyles } from '../../componentlibrary/components/Components';\r\nimport FormikFormWrapperStyle from '../styles/FormikFormWrapperStyle';\r\n\r\nconst FormikFormWrapper = (props) => {\r\n const {\r\n children,\r\n classes,\r\n formId,\r\n onSubmit,\r\n fullWidth,\r\n fullHeight,\r\n validateForm,\r\n className,\r\n } = props;\r\n\r\n const validateAndSubmitForm = (eventId) => {\r\n if (eventId === formId) {\r\n onSubmit();\r\n }\r\n };\r\n return (\r\n {\r\n if (validateForm) {\r\n validateAndSubmitForm(e.target.id);\r\n } else {\r\n onSubmit();\r\n }\r\n }}\r\n className={clsx(`${classes.form}`,\r\n fullWidth && `${classes.fullWidth}`,\r\n fullHeight && `${classes.fullHeight}`, className)}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nFormikFormWrapper.propTypes = {\r\n onSubmit: PropTypes.func,\r\n children: PropTypes.node,\r\n classes: PropTypes.object,\r\n formId: PropTypes.string,\r\n fullWidth: PropTypes.bool,\r\n fullHeight: PropTypes.bool,\r\n validateForm: PropTypes.bool,\r\n className: PropTypes.string,\r\n};\r\n\r\nFormikFormWrapper.defaultProps = {\r\n formId: getUUID(),\r\n fullWidth: false,\r\n fullHeight: false,\r\n validateForm: true,\r\n onSubmit: EMPTY_FUNC,\r\n};\r\n\r\n\r\nexport default withStyles(FormikFormWrapperStyle)(FormikFormWrapper);\r\n","const FormikContext = React.createContext();\r\n\r\nexport default FormikContext;\r\n","import BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport SmartList from 'Commons/components/business/smartlist/components/SmartList';\r\nimport { Grid, Loader, withStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { Form, Formik } from 'formik';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { EMPTY_FUNC, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport ImportData from 'External/containers/onboarding/components/importData/components/ImportData';\r\nimport { createRef } from 'react';\r\nimport { getDiffProperties, isFunction, isNumber, isObjWithKeys, isValidObject, removeFalseKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport { deepMerge } from 'Commons/helpers/utils/DeepCopy';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport smartListWithFormStyle from '../styles/SmartListWithFormStyle';\r\nimport { AUTO_SAVE_INTERVAL, HORIZONTAL_SPACING_SMART_LIST, VERTICAL_SPACING_SMART_LIST } from '../config/Constants';\r\nimport { SmartListWithFormDefaultProps, SmartListWithFormProps } from '../config/SmartListWithFormProps';\r\nimport {\r\n getValuesAndTouchedUponDelete,\r\n geUpdatedTouchedOnAdd,\r\n resetInvalidRows,\r\n setInitialValuesTouched,\r\n} from '../utils/Utils';\r\n\r\nclass SmartListWithForm extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n this.state = { bodyRef: createRef() };\r\n this.autoSaveIntervalId = undefined;\r\n }\r\n\r\n componentDidMount() {\r\n const {\r\n formProps: { setFieldValue, setFieldTouched } = {},\r\n props: { getAddRowFunc, getDeleteRowFunc, autoSave = false, invalidData } = {}, addRow, deleteRow,\r\n } = this;\r\n getAddRowFunc(addRow);\r\n getDeleteRowFunc(deleteRow);\r\n if (invalidData) {\r\n setInitialValuesTouched(setFieldValue, setFieldTouched, '', invalidData);\r\n }\r\n if (autoSave) this.setAutoSaveInterval();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { props: { autoSave = false } = {} } = this;\r\n const { autoSave: prevAutoSave = false } = prevProps;\r\n if (prevAutoSave !== autoSave) {\r\n if (autoSave) {\r\n if (this.autoSaveIntervalId) return;\r\n this.setAutoSaveInterval();\r\n } else this.unsetAutoSaveInterval();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unsetAutoSaveInterval();\r\n }\r\n\r\n setAutoSaveInterval = () => {\r\n this.autoSaveIntervalId = setInterval(() => {\r\n this.autoSaving = true;\r\n this.createEditFormData();\r\n this.handleSubmit();\r\n }, AUTO_SAVE_INTERVAL);\r\n }\r\n\r\n unsetAutoSaveInterval = () => {\r\n clearInterval(this.autoSaveIntervalId);\r\n this.autoSaveIntervalId = null;\r\n }\r\n\r\n getDefaultTableProps = (bodyRef, tableProps = {}) => {\r\n const { props: { fullHeight } = {} } = this;\r\n const { deviceInfo: { isDesktop } } = window;\r\n const { clientHeight = 500, clientWidth = 500 } = bodyRef || {};\r\n const {\r\n customHorizontalSpacing = HORIZONTAL_SPACING_SMART_LIST,\r\n customVerticalSpacing = VERTICAL_SPACING_SMART_LIST,\r\n } = tableProps;\r\n return {\r\n ...fullHeight\r\n && {\r\n tableWidth: isDesktop ? clientWidth - customHorizontalSpacing : 1500,\r\n tableHeight: clientHeight - customVerticalSpacing,\r\n },\r\n };\r\n }\r\n\r\n updateListConfig = (listConfigToUpdate = {}) => {\r\n const {\r\n props: { formConfigForColumns = {}, updateDeletedRow, handleAddRowInternally, importSource } = {},\r\n getDefaultTableProps,\r\n state: { bodyRef: { current: bodyRef } = {} } = {}, formProps = {}, getCustomData, addRow, deleteRow,\r\n } = this;\r\n const {\r\n columns = [], formatterProps = {}, tableProps = {},\r\n tablePaperProps = {}, tablePaperProps: { tablePaperComponents = [] } = {},\r\n } = listConfigToUpdate;\r\n const updatedColumns = columns.map((column = {}, index) => {\r\n const { [index]: { formFieldInfo = {} } = {} } = formConfigForColumns;\r\n return { ...column, formFieldInfo };\r\n });\r\n return {\r\n ...listConfigToUpdate,\r\n columns: updatedColumns,\r\n tableProps: {\r\n ...tableProps,\r\n ...getDefaultTableProps(bodyRef, tableProps),\r\n },\r\n tablePaperProps: {\r\n ...tablePaperProps,\r\n tablePaperComponents: [\r\n ...tablePaperComponents,\r\n ...(importSource\r\n ? [{\r\n open: () => this.setState({ isImporting: true }),\r\n name: `${localisable.import} ${importSource}`,\r\n icon: 'cp-import',\r\n isVisible: true,\r\n }] : []),\r\n ],\r\n },\r\n formatterProps: {\r\n ...formatterProps,\r\n formProps,\r\n ...updateDeletedRow && { updateDeletedRow },\r\n ...handleAddRowInternally && { openForm: addRow },\r\n deleteRow,\r\n },\r\n getCustomData,\r\n };\r\n }\r\n\r\n getFormValues = (values) => {\r\n if (typeof values === 'object') {\r\n return Object.values(values).filter(({ deleted }) => !deleted);\r\n } return values;\r\n }\r\n\r\n addRow = (indexToInsertOn = 0) => {\r\n const {\r\n formProps: { setFieldValue, values = {}, setValues = EMPTY_FUNC, touched = {}, setTouched } = EMPTY_OBJECT,\r\n props: { handleEditFormData = false },\r\n } = this;\r\n const data = this.getFormValues(values);\r\n data.splice(indexToInsertOn, 0, {});\r\n let updatedValues;\r\n if (handleEditFormData) {\r\n setTouched(geUpdatedTouchedOnAdd(touched));\r\n updatedValues = Object.assign({}, data);\r\n } else {\r\n updatedValues = data;\r\n }\r\n setValues(updatedValues);\r\n if (handleEditFormData) {\r\n setFieldValue('0', {});\r\n }\r\n }\r\n\r\n deleteRow = (indexToDeleteFrom = 0) => {\r\n const {\r\n formProps: {\r\n resetForm, values = {}, setFieldValue, initialValues,\r\n setValues = EMPTY_FUNC, touched = {}, setTouched,\r\n } = EMPTY_OBJECT,\r\n props: { handleEditFormData },\r\n } = this;\r\n const data = this.getFormValues(values);\r\n if (handleEditFormData) {\r\n const initialList = isValidObject(initialValues) ? Object.values(initialValues) : initialValues;\r\n this.createEditFormData();\r\n const [\r\n resetFormValue,\r\n valueToSet,\r\n touchedData,\r\n ] = getValuesAndTouchedUponDelete(indexToDeleteFrom, data, initialList, this.editFormData, touched);\r\n resetForm(resetFormValue);\r\n setValues(valueToSet);\r\n setTouched(touchedData);\r\n setFieldValue('extra.deleted', true);\r\n } else {\r\n const updatedValues = data.filter((_, index) => indexToDeleteFrom !== index);\r\n setValues(updatedValues);\r\n }\r\n }\r\n\r\n getCustomData = () => {\r\n const { formProps: { values = {} } = {} } = this;\r\n let listValues = [];\r\n if (isValidObject(values)) {\r\n Object.keys(values).forEach((key) => {\r\n if (isNumber(key)) {\r\n listValues.push(values[key]);\r\n }\r\n });\r\n } else {\r\n listValues = values;\r\n }\r\n return listValues;\r\n }\r\n\r\n getPageBodyRef = (ref) => {\r\n const { current: bodyRef } = ref || {};\r\n const { modifiedListConfig: { tableProps = {} } = {}, getDefaultTableProps } = this;\r\n this.modifiedListConfig = {\r\n ...this.modifiedListConfig,\r\n tableProps: {\r\n ...tableProps,\r\n ...getDefaultTableProps(bodyRef, tableProps),\r\n },\r\n };\r\n this.setState({ bodyRef: ref });\r\n }\r\n\r\n getListConfig = (currentFacility) => {\r\n const { props: { listConfig } = {}, modifiedListConfig = {} } = this;\r\n const isListConfigOfFuncType = isFunction(listConfig);\r\n if (\r\n !isObjWithKeys(modifiedListConfig) // For first time\r\n || (isListConfigOfFuncType) // For func type configs, only on arg value change\r\n ) {\r\n const listConfigToUpdate = isListConfigOfFuncType ? listConfig(currentFacility) : listConfig;\r\n this.modifiedListConfig = this.updateListConfig(listConfigToUpdate);\r\n }\r\n return this.modifiedListConfig;\r\n }\r\n\r\n toggleButtonLoadingState = (updatedValues, indexesToSet, toggleCallback = EMPTY_FUNC) => {\r\n if (updatedValues) {\r\n const { values = {}, setValues, resetForm, setFieldValue, setFieldTouched } = this.formProps;\r\n resetForm(updatedValues);\r\n setValues(deepMerge(values, updatedValues));\r\n resetInvalidRows(setFieldValue, setFieldTouched, '', values, indexesToSet);\r\n const isAutoSaving = this.autoSaving;\r\n this.autoSaving = false;\r\n toggleCallback(isAutoSaving);\r\n }\r\n this.setState(prevProps => ({ isButtonLoading: !prevProps.isButtonLoading }));\r\n }\r\n\r\n handleSubmit = () => {\r\n const { editFormData, props: { onSubmit }, toggleButtonLoadingState, formProps: { dirty, values } } = this;\r\n if (dirty) {\r\n onSubmit(values, editFormData, toggleButtonLoadingState);\r\n }\r\n }\r\n\r\n onImport = (importedData) => {\r\n this.setState({ isImporting: false }, () => {\r\n const {\r\n props: { invalidData = {}, onSubmit, preProcessImportedData },\r\n formProps: { values, setFieldValue, setFieldTouched, touched: currentTouched, initialValues },\r\n getFormValues, preProcessValues, toggleButtonLoadingState,\r\n } = this;\r\n let processedImportedData = importedData;\r\n if (preProcessImportedData) {\r\n processedImportedData = preProcessImportedData(importedData);\r\n }\r\n const formValues = getFormValues(values);\r\n const importedTouched = setInitialValuesTouched(setFieldValue, setFieldTouched, '',\r\n removeFalseKeys(Object.assign({}, [...formValues.map(() => (null)), ...processedImportedData])));\r\n const dirtyTouched = setInitialValuesTouched(setFieldValue, setFieldTouched, '', invalidData);\r\n const updatedValues = [\r\n ...Object.values(invalidData),\r\n ...formValues.slice(Object.keys(invalidData).length),\r\n ...processedImportedData,\r\n ];\r\n const updatedTouched = { ...currentTouched, ...importedTouched, ...dirtyTouched };\r\n const { processedValues, propertiesToCheck } = preProcessValues(updatedValues, updatedTouched);\r\n const editFormData = getDiffProperties(initialValues, processedValues, {\r\n properties: propertiesToCheck,\r\n excludeProperties: this.excludeProperties || undefined,\r\n });\r\n this.autoSaving = true;\r\n onSubmit(updatedValues, editFormData, toggleButtonLoadingState);\r\n });\r\n }\r\n\r\n onImpostClose = () => {\r\n this.setState({ isImporting: false }, () => {\r\n const {\r\n props: { invalidData = {} },\r\n formProps: { setFieldValue, setFieldTouched },\r\n } = this;\r\n setInitialValuesTouched(setFieldValue, setFieldTouched, '', invalidData);\r\n });\r\n }\r\n\r\n renderComponent = () => {\r\n const {\r\n getListConfig, getFooter, getPageBodyRef, handleSubmit, onImport, onImpostClose,\r\n props: {\r\n fullHeight, ContainerProps: { footer = getFooter, ...ContainerProps }, classes, initialValues, onSubmit,\r\n listConfig, title, FormikProps, getFormProps, footerProps, pageKey, isInitialValid, importSource, ...props\r\n } = {},\r\n state: { isImporting },\r\n } = this;\r\n return (\r\n isImporting\r\n ? (\r\n \r\n )\r\n : (\r\n <>\r\n {\r\n initialValues ? (\r\n {\r\n const { values = {} } = formProps;\r\n this.formProps = formProps;\r\n if (getFormProps) {\r\n getFormProps(formProps);\r\n }\r\n return (\r\n
\r\n { this.setState({ formRef: formProps }); }}\r\n key={pageKey}\r\n {...title && { header: title }}\r\n {...ContainerProps}\r\n >\r\n isNumber(key)).length}\r\n {...props}\r\n />\r\n \r\n \r\n );\r\n }}\r\n />\r\n )\r\n : (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nSmartListWithForm.propTypes = SmartListWithFormProps;\r\n\r\nSmartListWithForm.defaultProps = SmartListWithFormDefaultProps;\r\n\r\nexport default withStyles(smartListWithFormStyle)(SmartListWithForm);\r\n","import { GATE_TYPE, GATE_VENDOR } from 'External/containers/facilityConfiguration/config/GateConfig';\r\nimport { memo } from 'react';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport { FormTextField } from 'Commons/components/generic/textfield/components/TextField';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport { generateRandomNumber } from 'Commons/helpers/utils/RandomNumberGenerator';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport accessCodeFieldStyle from '../styles/AccessCodeFieldStyle';\r\n\r\nconst useStyles = makeStyles(accessCodeFieldStyle, { name: 'AccessCodeField' });\r\n\r\nconst AccessCodeField = ({\r\n title, required, containerProps, hideAutoGenerateText, accessCodesMap: allAccessCodes,\r\n setFieldValue, name, currentAccessCode, unitsMapOfSameTenant, setFieldTouched, className, labelWithIconClassName,\r\n excludeFromValidation, tenantId, unitId, hideAutoGenerateButton = false, labelWithIconTooltipClassName,\r\n readOnly, gateConfig: {\r\n vendor = GATE_VENDOR.NONE.value, type: gateType,\r\n accessCode: { validRange: { start = 0, end = 1 } = {}, allowReuse, validRange, length, type: accessCodeType } = {},\r\n }, ...props\r\n}) => {\r\n const classes = useStyles(props);\r\n\r\n const validator = useConstructor(() => {\r\n const { relationalData: relationalAccessCodeData = {}, ...accessCodesMap } = allAccessCodes;\r\n\r\n return {\r\n isValidGateAccessCode: {\r\n value: {\r\n reusePolicy: allowReuse,\r\n accessCodesMap,\r\n relationalAccessCodeData,\r\n unitsMapOfSameTenant,\r\n validRange,\r\n length,\r\n tenantId,\r\n unitId,\r\n accessCodeType,\r\n isLedgerBasedGate: gateType === GATE_TYPE.Ledger_Based.value,\r\n },\r\n },\r\n };\r\n });\r\n\r\n const regenerateAccessCode = () => {\r\n const regeneratedAccessCode = generateRandomNumber(start, end, allAccessCodes);\r\n setFieldValue(name, regeneratedAccessCode);\r\n setFieldTouched(name, true);\r\n };\r\n\r\n const renderAccessCodeField = () => (\r\n <>\r\n {title && {title}: }\r\n \r\n {\r\n !hideAutoGenerateButton && (\r\n \r\n }}\r\n onClick={regenerateAccessCode}\r\n >\r\n {\r\n !hideAutoGenerateText\r\n && {localisable.autoGenerate}\r\n }\r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n\r\n if (vendor === GATE_VENDOR.NONE.value) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {renderAccessCodeField()}\r\n \r\n );\r\n};\r\n\r\nAccessCodeField.propTypes = {\r\n title: PropTypes.string,\r\n required: PropTypes.bool,\r\n readOnly: PropTypes.bool,\r\n gateConfig: PropTypes.object,\r\n excludeFromValidation: PropTypes.oneOfType([\r\n PropTypes.number,\r\n PropTypes.string,\r\n ]), // Access code will not be validated against this value\r\n containerProps: PropTypes.object,\r\n accessCodesMap: PropTypes.object,\r\n name: PropTypes.string.isRequired,\r\n hideAutoGenerateText: PropTypes.bool,\r\n hideAutoGenerateButton: PropTypes.bool,\r\n unitsMapOfSameTenant: PropTypes.object,\r\n tenantId: PropTypes.string,\r\n unitId: PropTypes.string,\r\n setFieldValue: PropTypes.func.isRequired,\r\n setFieldTouched: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n labelWithIconClassName: PropTypes.string,\r\n labelWithIconTooltipClassName: PropTypes.string,\r\n currentAccessCode: PropTypes.string,\r\n};\r\n\r\nAccessCodeField.defaultProps = {\r\n className: '',\r\n gateConfig: {},\r\n required: false,\r\n readOnly: false,\r\n excludeFromValidation: '',\r\n containerProps: {},\r\n accessCodesMap: {},\r\n unitsMapOfSameTenant: {},\r\n hideAutoGenerateButton: false,\r\n};\r\n\r\nexport default memo(AccessCodeField);\r\n","const InventoryContext = React.createContext();\r\n\r\nexport default InventoryContext;\r\n","export default (clearStoreKeys = () => {}, additionalKeysToClear = [], clearLead = true) => {\r\n const storeKeys = [\r\n 'tenant', 'unit', 'preRequisite',\r\n 'vacantUnitsCountByUnitType', ...(Array.isArray(additionalKeysToClear) && additionalKeysToClear),\r\n ];\r\n if (clearLead) storeKeys.push('lead');\r\n clearStoreKeys(storeKeys);\r\n};\r\n","import { SOURCE, WS_EVENT_TYPE } from 'Commons/config/constants/Constants';\r\nimport { RESOURCE_NAME_TO_STORE_KEY } from 'Commons/components/business/basecomponent/config/Constants';\r\nimport { convertToNumber } from 'Commons/helpers/utils/Utils';\r\n\r\nconst isUnitUpdated = (wsMessage, classRef) => {\r\n const { resourceId, eventType, resourceName } = wsMessage;\r\n const { formProps: { values: { unitId } = {} } = {}, state: { isButtonLoading } = {} } = classRef;\r\n if (RESOURCE_NAME_TO_STORE_KEY[resourceName] === SOURCE.unit.value\r\n && unitId && convertToNumber(unitId) === resourceId\r\n && eventType === WS_EVENT_TYPE.UPDATED\r\n && !isButtonLoading) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nconst isConfigurationChanged = (wsMessage, classRef) => {\r\n const { resourceName, eventType } = wsMessage;\r\n const { state: { isButtonLoading } = {} } = classRef;\r\n if (['financial_configuration', 'rental_configuration'].includes(resourceName)\r\n && eventType === WS_EVENT_TYPE.UPDATED\r\n && !isButtonLoading) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\n\r\nconst isTenantInfoUpdated = (wsMessage, tenantId, isButtonLoading) => {\r\n const { resourceId, eventType, resourceName } = wsMessage;\r\n if (RESOURCE_NAME_TO_STORE_KEY[resourceName] === SOURCE.tenant.value\r\n && tenantId && convertToNumber(tenantId) === resourceId\r\n && eventType === WS_EVENT_TYPE.UPDATED\r\n && !isButtonLoading) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport { isUnitUpdated, isConfigurationChanged, isTenantInfoUpdated };\r\n","import { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport Link from '../../link/components/Link';\r\nimport { Popper, Paper, MenuList, MenuItem, ClickAwayListener, withStyles }\r\nfrom '../../componentlibrary/components/Components';\r\nimport menuStyle from '../styles/MenuStyle';\r\n\r\n\r\nconst timeoutDuration = 100;\r\n\r\nclass Menu extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.anchorEl = React.createRef();\r\n this.state = {\r\n mouseOverAnchor: false,\r\n mouseOverMenu: false,\r\n open: false,\r\n arrowRef: null,\r\n };\r\n }\r\n\r\n onClick = () => {\r\n const { props: { onOpenOrClose } } = this;\r\n this.setState((prevState) => {\r\n const open = !prevState.open;\r\n onOpenOrClose(open);\r\n return { open };\r\n });\r\n };\r\n\r\n onClickAway = (e) => {\r\n this.setState(() => {\r\n if (!this.anchorEl.current.contains(e.target)) {\r\n return { open: false };\r\n }\r\n return null;\r\n });\r\n const { onOpenOrClose } = this.props;\r\n onOpenOrClose(false);\r\n };\r\n\r\n leaveMenu = () => {\r\n setTimeout(() => {\r\n this.setState({ mouseOverMenu: false });\r\n }, timeoutDuration);\r\n }\r\n\r\n enterMenu = () => {\r\n this.setState({ mouseOverMenu: true });\r\n }\r\n\r\n leaveAnchor = () => {\r\n setTimeout(() => {\r\n this.setState({ mouseOverAnchor: false });\r\n }, timeoutDuration);\r\n }\r\n\r\n enterAnchor = () => {\r\n this.setState({ mouseOverAnchor: true });\r\n }\r\n\r\n handleArrowRef = (node) => {\r\n this.setState({ arrowRef: node });\r\n };\r\n\r\n render() {\r\n const {\r\n children, list = [], event, classes,\r\n anchorElProps: { className: anchorElClassName = '', ...otherAnchorElProps },\r\n PopperProps: { className: popperClassName = '', modifiers, ...otherPopperProps },\r\n PaperProps, MenuListProps, MenuItemProps, LinkProps,\r\n } = this.props;\r\n const { open: onClickOpen, mouseOverAnchor, mouseOverMenu, arrowRef } = this.state;\r\n const anchorEl = this.anchorEl.current;\r\n const eventProp = event === 'onHover'\r\n ? { onMouseEnter: this.enterAnchor, onMouseLeave: this.leaveAnchor }\r\n : { onClick: this.onClick };\r\n const open = event === 'onHover' ? (mouseOverAnchor || mouseOverMenu) : onClickOpen;\r\n const paperHoverProps = event === 'onHover'\r\n ? { onMouseEnter: this.enterMenu, onMouseLeave: this.leaveMenu }\r\n : {};\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n list.map((item, index) => {\r\n const { label, url, addon, node, divider, target } = item;\r\n const key = index;\r\n return (\r\n \r\n {\r\n node\r\n || (\r\n \r\n {label}\r\n \r\n )\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nMenu.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n list: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.shape({\r\n addon: PropTypes.shape({ start: PropTypes.node, end: PropTypes.node }),\r\n url: PropTypes.string,\r\n label: PropTypes.node,\r\n divider: PropTypes.bool,\r\n target: PropTypes.any,\r\n })), PropTypes.node]).isRequired,\r\n event: PropTypes.string,\r\n PopperProps: PropTypes.object,\r\n PaperProps: PropTypes.object,\r\n MenuListProps: PropTypes.object,\r\n MenuItemProps: PropTypes.object,\r\n anchorElProps: PropTypes.object,\r\n LinkProps: PropTypes.object,\r\n classes: PropTypes.object.isRequired,\r\n onOpenOrClose: PropTypes.func,\r\n};\r\n\r\nMenu.defaultProps = {\r\n event: 'onClick',\r\n PopperProps: {},\r\n PaperProps: {},\r\n MenuListProps: {},\r\n MenuItemProps: {},\r\n anchorElProps: {},\r\n LinkProps: {},\r\n onOpenOrClose: EMPTY_FUNC,\r\n};\r\n\r\nexport const MenuComponent = Menu;\r\nexport default withStyles(menuStyle)(Menu);\r\n","import useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { FormSmartSearchableDropdown } from 'Generic/dropdown/components/SearchableDropdown';\r\nimport { labelFormatter, getOptionProps } from 'Commons/helpers/utils/SDFormatter';\r\nimport { MEDIUM_SD_HEIGHT } from 'Commons/components/generic/dropdown/config/Constants';\r\nimport { timezoneApiConfig } from '../config/ApiRequests';\r\nimport { getTimezoneLabel } from '../utils/TimezoneHelpers';\r\n\r\nconst TimezoneDropdown = ({ value, ...props }) => {\r\n const timezoneList = useConstructor(() => (value ? [{ value, label: getTimezoneLabel(value) }] : []));\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nTimezoneDropdown.propTypes = { value: PropTypes.string };\r\n\r\nexport default TimezoneDropdown;\r\n","import { isSyrasoftUser } from 'Commons/helpers/utils/Utils';\r\nimport { memo } from 'react';\r\n\r\nconst SyrasoftUserAccessible = ({ children }) => (isSyrasoftUser() ? <>{children} : null);\r\n\r\nSyrasoftUserAccessible.propTypes = { children: PropTypes.node };\r\n\r\nexport default memo(SyrasoftUserAccessible);\r\n","\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport { EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport confirmationAlertStyles from '../styles/ConfirmationAlertStyles';\r\n\r\n\r\nconst useStyles = makeStyles(confirmationAlertStyles, { name: 'ConfirmationAlert' });\r\n\r\nconst ConfirmationAlert = ({\r\n open,\r\n title,\r\n onClose,\r\n message,\r\n onClickNo,\r\n onClickYes,\r\n noButtonLabel,\r\n noButtonProps,\r\n yesButtonProps,\r\n yesButtonLabel,\r\n ...props\r\n}) => {\r\n const classes = useStyles(props);\r\n return (\r\n \r\n {\r\n noButtonLabel\r\n && (\r\n \r\n {noButtonLabel}\r\n \r\n )\r\n }\r\n {\r\n yesButtonLabel && (\r\n \r\n {yesButtonLabel}\r\n \r\n )}\r\n \r\n )}\r\n dialogClasses={{ paperWidthSm: classes.invoiceAlert }}\r\n >\r\n {message}\r\n \r\n );\r\n};\r\n\r\nConfirmationAlert.propTypes = {\r\n open: PropTypes.bool,\r\n title: PropTypes.node,\r\n message: PropTypes.node,\r\n onClose: PropTypes.func,\r\n onClickNo: PropTypes.func,\r\n onClickYes: PropTypes.func,\r\n noButtonLabel: PropTypes.node,\r\n yesButtonLabel: PropTypes.node,\r\n noButtonProps: PropTypes.object,\r\n yesButtonProps: PropTypes.object,\r\n};\r\n\r\nConfirmationAlert.defaultProps = {\r\n open: false,\r\n noButtonProps: EMPTY_OBJECT,\r\n yesButtonProps: EMPTY_OBJECT,\r\n message: `${localisable.invoiceAlreadyScheduled} ${localisable.wantToCancelScheduled}`,\r\n};\r\n\r\nexport default React.memo(ConfirmationAlert);\r\n","import { memo } from 'react';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { STATUS } from 'Commons/config/constants/Constants';\r\nimport enums from '../config/Enums';\r\nimport triangleStyle from '../styles/TriangleStyle';\r\n\r\nconst useStyles = makeStyles(triangleStyle);\r\nconst { deviceInfo: { isMobile } } = window;\r\n\r\nconst Triangle = ({\r\n children, triangleClassName, titleClassName, variant,\r\n classes: classesProp, typographyVariant,\r\n}) => {\r\n const classes = useStyles({ classes: classesProp });\r\n return (\r\n
\r\n
\r\n \r\n {children}\r\n \r\n
\r\n );\r\n};\r\n\r\nTriangle.propTypes = {\r\n children: PropTypes.node,\r\n triangleClassName: PropTypes.string,\r\n titleClassName: PropTypes.string,\r\n classes: PropTypes.object,\r\n variant: PropTypes.oneOf(enums.variants),\r\n typographyVariant: PropTypes.string,\r\n};\r\n\r\nTriangle.defaultProps = {\r\n variant: STATUS.Active.value,\r\n triangleClassName: '',\r\n titleClassName: '',\r\n};\r\n\r\nexport default memo(Triangle);\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { Grid, makeStyles } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport { SM_2_XS_4, SM_6, XS_8, XS_4 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { SUFFIX, SALUTATIONS } from 'Commons/config/constants/Constants';\r\nimport { FormDropdown } from 'Commons/components/generic/dropdown/components/Dropdown';\r\nimport { IS_MAX_LENGTH_50, IS_MAX_LENGTH_100 } from 'Commons/config/constants/Validators';\r\nimport { memo } from 'react';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport nameStyles from '../styles/NameStyles';\r\n\r\nconst useStyles = makeStyles(nameStyles, { name: 'Name' });\r\n\r\nconst { deviceInfo: { isMobile } } = window;\r\n\r\nconst NameFields = ({\r\n mapping: {\r\n firstName: { visibility: firstNameVisibility = true, ...firstNameProps } = {},\r\n lastName: { visibility: lastNameVisibility = true, ...lastNameProps } = {},\r\n salutation: { visibility: salutationVisibility = true, ...salutationProps } = {},\r\n suffix: { visibility: suffixVisibility = true, ...suffixProps } = {},\r\n preferredName: { visibility: preferredNameVisibility = true, ...preferredNameProps } = {},\r\n businessName: { visibility: businessNameVisibility = true, ...businessNameProps } = {},\r\n reverseLastNameAndSuffix = isMobile,\r\n } = {},\r\n touched = {},\r\n}) => {\r\n const classes = useStyles();\r\n const { name: { salutation: isSalutationTouched = false, suffix: isSuffixTouched = false } = {} } = touched || {};\r\n\r\n const renderLastNameAndSuffix = () => (\r\n <>\r\n {\r\n lastNameVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n suffixVisibility\r\n && (\r\n \r\n )\r\n }\r\n \r\n );\r\n return (\r\n <>\r\n {\r\n salutationVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n firstNameVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n reverseLastNameAndSuffix\r\n ? (\r\n \r\n {renderLastNameAndSuffix()}\r\n \r\n )\r\n : renderLastNameAndSuffix()\r\n }\r\n\r\n {\r\n preferredNameVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n {\r\n businessNameVisibility\r\n && (\r\n \r\n )\r\n }\r\n\r\n \r\n );\r\n};\r\n\r\nNameFields.propTypes = { mapping: PropTypes.object, touched: PropTypes.object };\r\n\r\n// TODO: Remove setConfig after Lead is refactored to new form standards\r\nconst Name = ({ noGrid, mapping, setConfig, touched, ...props }) => (noGrid\r\n ? \r\n : (\r\n \r\n \r\n \r\n )\r\n);\r\n\r\nName.propTypes = {\r\n setConfig: PropTypes.func,\r\n noGrid: PropTypes.bool,\r\n mapping: PropTypes.object,\r\n touched: PropTypes.object,\r\n};\r\n\r\nexport default memo(Name);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { useDropzone } from 'react-dropzone';\r\nimport dragAndDropStyles from '../styles/DragAndDropStyles';\r\n\r\nconst useStyles = makeStyles(dragAndDropStyles, { name: 'DragAndDrop' });\r\n\r\nconst DragAndDrop = ({ accept, onDrop, subtitle }) => {\r\n const classes = useStyles();\r\n const { getRootProps, getInputProps } = useDropzone({ accept, onDrop });\r\n const { onClick, ...rootProps } = getRootProps({ className: classes.dragOrCreateContainer });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {localisable.chooseAFile}\r\n \r\n  \r\n {localisable.orDragItHere}\r\n \r\n \r\n {subtitle}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n\r\nDragAndDrop.propTypes = {\r\n onDrop: PropTypes.func,\r\n accept: PropTypes.any,\r\n subtitle: PropTypes.string,\r\n};\r\n\r\nexport default React.memo(DragAndDrop);\r\n","import { SketchPicker } from 'react-color';\r\nimport { useRef, useState } from 'react';\r\nimport {\r\n makeStyles, Popper, FormControlLabel,\r\n ClickAwayListener,\r\n} from 'Generic/componentlibrary/components/Components';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Form from 'Generic/form/components/Form';\r\nimport DEFAULT_COLOR_PICKER_COLOR from 'Generic/colorPicker/config/Constants';\r\nimport { FORM_COMPONENTS } from 'Generic/form/config/FormComponentsConfig';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport colorPickerStyle from '../styles/ColorPickerStyle';\r\n\r\nconst useStyles = makeStyles(colorPickerStyle, { name: 'ColorPicker' });\r\n\r\nconst ColorPicker = ({\r\n onChange, label, disableAlpha = true, classes: classesProp, buttonClassName, trackValue, value, readOnly,\r\n PopperProps: { className: popperClassName, parentRef, ...PopperProps }, formLabelClassName,\r\n FormControlLabelProps: { className: formLabelClass, ...otherLabelProps } = {},\r\n}) => {\r\n const coloredSquareRef = useRef();\r\n const [isColorPickerOpen, openColorPicker] = useState(false);\r\n const [color, setColor] = useState({ hex: value || DEFAULT_COLOR_PICKER_COLOR.hex });\r\n\r\n const classes = useStyles({ classes: classesProp, color });\r\n\r\n const handleOpenClose = () => {\r\n openColorPicker(!isColorPickerOpen);\r\n };\r\n\r\n const handleChange = (newColor) => {\r\n const rgbColorValue = newColor.rgb;\r\n const alphaInHex = (Math.round(rgbColorValue.a * 255)).toString(16);\r\n let hexWithAlpha = newColor.hex + (alphaInHex.length === 1 ? `0${alphaInHex}` : alphaInHex);\r\n if (disableAlpha) { // This will override the alpha channel value and set it to FF (0 transparency)\r\n rgbColorValue.a = 1;\r\n hexWithAlpha = `${newColor.hex}ff`;\r\n }\r\n const colorValues = {\r\n hex: hexWithAlpha,\r\n rgb: rgbColorValue,\r\n };\r\n setColor(colorValues);\r\n onChange({}, hexWithAlpha);\r\n };\r\n\r\n const renderColorPicker = () => (\r\n <>\r\n \r\n {isColorPickerOpen && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n return (\r\n label\r\n ? (\r\n \r\n )\r\n : renderColorPicker()\r\n );\r\n};\r\n\r\nColorPicker.propTypes = {\r\n onChange: PropTypes.func,\r\n classes: PropTypes.object,\r\n buttonClassName: PropTypes.string,\r\n PopperProps: PropTypes.object,\r\n label: PropTypes.node,\r\n name: PropTypes.string,\r\n trackValue: PropTypes.bool,\r\n formLabelClassName: PropTypes.string,\r\n FormControlLabelProps: PropTypes.object,\r\n value: PropTypes.string,\r\n readOnly: PropTypes.bool,\r\n disableAlpha: PropTypes.bool,\r\n};\r\n\r\nColorPicker.defaultProps = {\r\n onChange: () => { },\r\n PopperProps: {},\r\n trackValue: true,\r\n readOnly: false,\r\n disableAlpha: true,\r\n};\r\n\r\nColorPicker.displayName = FORM_COMPONENTS.COLOR_PICKER;\r\nconst FormColorPicker = Form(ColorPicker);\r\n\r\nexport default ColorPicker;\r\n\r\nexport { FormColorPicker };\r\n","const PointOfSaleContext = React.createContext();\r\n\r\nexport default PointOfSaleContext;\r\n","const RouteContext = React.createContext();\r\n\r\nexport default RouteContext;\r\n","const AchContext = React.createContext();\r\n\r\nexport default AchContext;\r\n","/* This piece of code has been taken form https://github.com/clauderic/react-sortable-hoc */\r\n\r\nimport * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { findDOMNode } from 'react-dom';\r\nimport { provideDisplayName, omit } from '../utils';\r\n\r\nconst propTypes = {\r\n index: PropTypes.number.isRequired,\r\n collection: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n disabled: PropTypes.bool,\r\n};\r\n\r\nconst omittedProps = Object.keys(propTypes);\r\n\r\nexport default function SortableElement(\r\n WrappedComponent,\r\n config = { withRef: false },\r\n) {\r\n return class WithSortableElement extends React.Component {\r\n static displayName = provideDisplayName(\r\n 'sortableElement',\r\n WrappedComponent,\r\n );\r\n\r\n static contextTypes = { manager: PropTypes.object.isRequired };\r\n\r\n static propTypes = propTypes;\r\n\r\n static defaultProps = { collection: 0 };\r\n\r\n componentDidMount() {\r\n this.register();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n const { collection, disabled, index, node } = this;\r\n if (node) {\r\n if (prevProps.index !== index) {\r\n node.sortableInfo.index = index;\r\n }\r\n\r\n if (prevProps.disabled !== disabled) {\r\n node.sortableInfo.disabled = disabled;\r\n }\r\n }\r\n\r\n if (prevProps.collection !== collection) {\r\n this.unregister(prevProps.collection);\r\n this.register();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unregister();\r\n }\r\n\r\n register = () => {\r\n const { props: { collection, disabled, index }, context: { manager } } = this;\r\n // eslint-disable-next-line react/no-find-dom-node\r\n const node = findDOMNode(this);\r\n\r\n node.sortableInfo = {\r\n collection,\r\n disabled,\r\n index,\r\n manager,\r\n };\r\n\r\n this.node = node;\r\n this.ref = { node };\r\n\r\n manager.add(collection, this.ref);\r\n };\r\n\r\n // eslint-disable-next-line react/destructuring-assignment\r\n unregister = (collection = this.props.collection) => {\r\n const { context: { manager } } = this;\r\n manager.remove(collection, this.ref);\r\n };\r\n\r\n render() {\r\n const { props } = this;\r\n const ref = config.withRef ? 'wrappedInstance' : null;\r\n\r\n return ;\r\n }\r\n };\r\n}\r\n","import { memo, useState } from 'react';\r\nimport { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\n\r\nconst PasswordField = (props) => {\r\n const { name, disabled } = props;\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n return (\r\n setShowPassword(!showPassword)}\r\n color=\"primary\"\r\n disabled={disabled}\r\n icon={!showPassword ? 'cp-view' : 'cp-hide'}\r\n />,\r\n }}\r\n {...props}\r\n />\r\n );\r\n};\r\n\r\nPasswordField.propTypes = { name: PropTypes.string.isRequired, disabled: PropTypes.bool };\r\nPasswordField.defaultProps = { disabled: false };\r\n\r\n\r\nexport default memo(PasswordField);\r\n","import { useState } from 'react';\r\nimport ViewReport from './ViewReport';\r\n\r\nconst ReportViewer = ({\r\n children,\r\n component: Component,\r\n componentProps: ComponentProps,\r\n ...props\r\n}) => {\r\n const [viewReport, setViewReport] = useState(false);\r\n const eventProps = { onClick: () => setViewReport(true) };\r\n\r\n const onCloseLoader = () => {\r\n setViewReport(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {children}\r\n \r\n {\r\n viewReport\r\n && (\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nReportViewer.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n component: PropTypes.elementType,\r\n componentProps: PropTypes.object,\r\n};\r\n\r\nReportViewer.defaultProps = { component: 'div' };\r\n\r\nexport default React.memo(ReportViewer);\r\n","import { useEffect, useRef, useState } from 'react';\r\nimport { Grid, Loader, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Modal from 'Generic/modal/components/Modal';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { compareDatesOrDatetime, getCurrentDate } from 'Commons/helpers/utils/DateTime';\r\nimport Footer from 'Commons/components/business/footer/components/Footer';\r\nimport { COMPARISON_OPERATION, EMPTY_OBJECT, INSURANCE_SOURCE } from 'Commons/config/constants/Constants';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport { RENTAL_INFO_FIELDS } from 'External/containers/createoccupancy/config/Fields';\r\nimport ExpansionPanel from 'Commons/components/business/expansionPanel/components/ExpansionPanel';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport { BILLING_TYPE } from 'External/containers/rentalConfiguration/config/RentalFormConfigs';\r\nimport InsuranceStyle from '../styles/InsuranceStyle';\r\nimport {\r\n cancelInsurance,\r\n fetchInsuranceConfiguration,\r\n fetchInsuranceCoverage,\r\n fetchInsuranceInfo,\r\n saveInsuranceInfo,\r\n} from '../config/ApiRequests';\r\nimport InsuranceBody from './InsuranceBody';\r\n\r\nconst useStyles = makeStyles(InsuranceStyle, { name: 'Insurance' });\r\n\r\nconst Insurance = ({\r\n facilityId, onAction, handleErrors, fetchRentalInfo, setInsuranceUpdated,\r\n source = INSURANCE_SOURCE.MOVE_IN, closeModal, unitId, setSnackbarProps, isAnniversary = false,\r\n formProps: {\r\n setFieldValue, resetForm, values,\r\n values: {\r\n rentalInfo: { moveInDate, insurance: { insurancePremiumProrateAmount } = {} } = {},\r\n [source === INSURANCE_SOURCE.EDIT_UNIT\r\n ? 'insurance'\r\n : 'extra']: { policyId, coverageId, proratePremium, prorateAmount, skipFirstPeriod = false } = {},\r\n },\r\n }, facilityProrateInfo, facilityProrateInfo: { type: { billing } = {} },\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [insuranceCoverageById, setCoverageById] = useState({});\r\n const [isButtonLoading, setIsButtonLoading] = useState(false);\r\n const [isCancelling, setIsCancelling] = useState(false);\r\n const [insuranceCoverage, setInsuranceCoverage] = useState([]);\r\n const [initialInsuranceDetails, setInitialInsuranceDetails] = useState({\r\n initialPolicyId: policyId,\r\n initialCoverageId: coverageId,\r\n });\r\n const [{\r\n planId,\r\n provider,\r\n isInsuranceEnabled,\r\n policyRequired,\r\n }, setInsuranceConfigs] = useState({\r\n planId: null,\r\n provider: null,\r\n isInsuranceEnabled: false,\r\n policyRequired: false,\r\n });\r\n const isComponentMounted = useRef(false);\r\n\r\n const onInsuranceCoverageFetch = (apiError, response) => {\r\n if (!isComponentMounted.current) return; // If the component gets unmounted before the response is received, do not update the state. Otherwise, it will throw an error saying \"Can't perform a React state update on an unmounted component\"\r\n if (apiError) {\r\n handleErrors(apiError);\r\n } else if (response) {\r\n const {\r\n data: {\r\n Insurance_Coverage: { data = [] } = {},\r\n Insurance_Provider: { data: [{ value: { plans = [] } = {} } = {}] = [] } = {},\r\n } = {},\r\n } = response;\r\n const { description: planDescription = '' } = planId\r\n ? plans.find(({ planId: id }) => id === planId) || {}\r\n : {};\r\n const coverageList = [];\r\n const coverageById = {};\r\n data.forEach(({\r\n id,\r\n value: { description, monthlyPremium, coverageAmount, startDate, expirationDate },\r\n }) => {\r\n const isStartValid = startDate\r\n ? compareDatesOrDatetime(startDate, moveInDate, COMPARISON_OPERATION.LTE)\r\n : true;\r\n const isExpirationValid = expirationDate\r\n ? compareDatesOrDatetime(expirationDate, moveInDate, COMPARISON_OPERATION.GTE)\r\n : true;\r\n if (isStartValid && isExpirationValid) {\r\n coverageList.push({\r\n label: planDescription ? `${planDescription} - ${description}` : description,\r\n value: id,\r\n });\r\n coverageById[id] = { description, monthlyPremium, coverageAmount };\r\n }\r\n });\r\n setInsuranceCoverage(coverageList);\r\n setCoverageById(coverageById);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isInsuranceEnabled) {\r\n fetchInsuranceCoverage(onAction, facilityId, planId, undefined, provider, onInsuranceCoverageFetch);\r\n }\r\n }, [moveInDate]);\r\n\r\n const onInsuranceConfigFetch = (apiError, response) => {\r\n if (!isComponentMounted.current) return; // If the component gets unmounted before the response is received, do not update the state. Otherwise, it will throw an error saying \"Can't perform a React state update on an unmounted component\"\r\n if (apiError) {\r\n handleErrors(apiError);\r\n } else if (response) {\r\n const { data: { Insurance: { data: [insuranceConfig = {}] = [] } = {} } = {} } = response;\r\n const { value: { isEnabled = false, planId: pId, mandatePolicyId, providerId } = {} } = insuranceConfig;\r\n setInsuranceConfigs({\r\n planId: pId,\r\n provider: providerId,\r\n isInsuranceEnabled: isEnabled,\r\n policyRequired: mandatePolicyId,\r\n });\r\n fetchInsuranceCoverage(onAction, facilityId, pId, coverageId, provider, onInsuranceCoverageFetch);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n isComponentMounted.current = true;\r\n fetchInsuranceConfiguration(onAction, facilityId, onInsuranceConfigFetch);\r\n return () => {\r\n isComponentMounted.current = false;\r\n };\r\n }, []);\r\n\r\n const onInsuranceInfo = (apiError, response) => {\r\n if (apiError) {\r\n handleErrors(apiError);\r\n } else if (response) {\r\n const { data: { insurancePremiumProrateAmount: insuranceProrateAmount } = {} } = response;\r\n setFieldValue('insurance.prorateAmount', insuranceProrateAmount);\r\n }\r\n setInsuranceUpdated();\r\n };\r\n\r\n const getInsuranceInfo = () => {\r\n let value = {};\r\n if (coverageId) {\r\n value = {\r\n coverageId,\r\n proratePremium,\r\n skipFirstPeriod,\r\n policyId,\r\n };\r\n }\r\n if (source === INSURANCE_SOURCE.MOVE_IN) {\r\n fetchRentalInfo(value, RENTAL_INFO_FIELDS.INSURANCE);\r\n } else if (coverageId && initialInsuranceDetails.initialCoverageId !== coverageId) {\r\n value.effectiveDate = getCurrentDate();\r\n fetchInsuranceInfo(onAction, unitId, value, onInsuranceInfo);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (coverageId) {\r\n const baseFieldName = source === INSURANCE_SOURCE.EDIT_UNIT ? 'insurance' : 'extra';\r\n setFieldValue(`${baseFieldName}.proratePremium`, false);\r\n setFieldValue(`${baseFieldName}.skipFirstPeriod`, false);\r\n }\r\n }, [coverageId]);\r\n\r\n useEffect(() => {\r\n getInsuranceInfo();\r\n }, [proratePremium, skipFirstPeriod]);\r\n\r\n const clearEditUnitFields = () => {\r\n resetForm({\r\n ...values,\r\n insurance: {\r\n policyId: initialInsuranceDetails.initialPolicyId,\r\n coverageId: initialInsuranceDetails.initialCoverageId,\r\n },\r\n });\r\n };\r\n\r\n const handleModalClose = () => {\r\n clearEditUnitFields();\r\n closeModal();\r\n };\r\n\r\n const handlePanelCloseOrOpen = () => {\r\n setFieldValue('extra.coverageId', undefined);\r\n setFieldValue('extra.policyId', undefined);\r\n setFieldValue('extra.proratePremium', undefined);\r\n setFieldValue('extra.skipFirstPeriod', undefined);\r\n };\r\n\r\n const onInsuranceSave = (apiError, response) => {\r\n if (apiError) {\r\n handleErrors(apiError);\r\n } else if (response) {\r\n setInitialInsuranceDetails({ initialPolicyId: policyId, initialCoverageId: coverageId });\r\n setSnackbarProps(true, localisable.insuranceSaved);\r\n fetchInsuranceCoverage(onAction, facilityId, planId, undefined, provider, onInsuranceCoverageFetch);\r\n }\r\n setIsButtonLoading(false);\r\n setInsuranceUpdated();\r\n };\r\n\r\n const onCancelInsurance = (apiError, response) => {\r\n if (apiError) {\r\n handleErrors(apiError);\r\n } else if (response) {\r\n setSnackbarProps(true, localisable.insuranceCancelled);\r\n resetForm({\r\n ...values,\r\n insurance: {},\r\n });\r\n setInitialInsuranceDetails({});\r\n }\r\n setIsCancelling(false);\r\n setInsuranceUpdated();\r\n };\r\n\r\n const onSubmit = () => {\r\n const body = {\r\n coverageId,\r\n proratePremium,\r\n policyId,\r\n skipFirstPeriod,\r\n effectiveDate: getCurrentDate(),\r\n };\r\n setIsButtonLoading(true);\r\n saveInsuranceInfo(onAction, unitId, body, onInsuranceSave);\r\n };\r\n\r\n const handleInsuranceCancel = () => {\r\n setIsCancelling(true);\r\n cancelInsurance(onAction, unitId, onCancelInsurance);\r\n };\r\n\r\n const onChangeSkipFirstPeriod = (_, skip) => {\r\n let resetProratePremium = proratePremium && isAnniversary;\r\n if (!isAnniversary && proratePremium) {\r\n resetProratePremium = skip\r\n ? billing === BILLING_TYPE.Prorate_First.value\r\n : billing === BILLING_TYPE.Prorate_Second.value;\r\n }\r\n if (resetProratePremium) {\r\n setFieldValue(`${source === INSURANCE_SOURCE.EDIT_UNIT ? 'insurance' : 'extra'}.proratePremium`, false);\r\n }\r\n };\r\n\r\n const getInsuranceFooter = () => (\r\n \r\n );\r\n\r\n const getInsuranceBody = () => (isCancelling ? \r\n : (\r\n \r\n ));\r\n\r\n const getInsuranceHeader = () => (source === INSURANCE_SOURCE.MOVE_IN\r\n ? localisable.insurance\r\n : (\r\n \r\n \r\n \r\n {localisable.insurance}\r\n \r\n \r\n {\r\n initialInsuranceDetails.initialCoverageId\r\n && (\r\n \r\n \r\n {localisable.cancel}\r\n \r\n \r\n )\r\n }\r\n \r\n ));\r\n\r\n return isInsuranceEnabled && (\r\n source === INSURANCE_SOURCE.MOVE_IN\r\n ? (\r\n \r\n {getInsuranceBody()}\r\n \r\n )\r\n : (\r\n \r\n {getInsuranceBody()}\r\n \r\n )\r\n );\r\n};\r\n\r\nInsurance.propTypes = {\r\n onAction: PropTypes.func,\r\n unitId: PropTypes.string,\r\n source: PropTypes.string,\r\n closeModal: PropTypes.func,\r\n formProps: PropTypes.object,\r\n facilityId: PropTypes.string,\r\n handleErrors: PropTypes.func,\r\n isAnniversary: PropTypes.bool,\r\n fetchRentalInfo: PropTypes.func,\r\n setSnackbarProps: PropTypes.func,\r\n setInsuranceUpdated: PropTypes.func,\r\n facilityProrateInfo: PropTypes.object,\r\n};\r\n\r\nInsuranceBody.defaultProps = { facilityProrateInfo: EMPTY_OBJECT };\r\n\r\nexport default Insurance;\r\n","const VehicleModalContext = React.createContext();\r\n\r\nexport default VehicleModalContext;\r\n","import Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport ThreeDotProgress from 'Commons/components/generic/threedotprogress/components/ThreeDotProgress';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport { clsx } from 'Commons/helpers/utils';\r\nimport { Divider, Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport LabelWithAddons from 'Generic/labelwithaddons/components/LabelWithAddons';\r\nimport Modal from 'Generic/modal/components/Modal';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport { FILE_UPLOAD_STATUS } from '../config/Constants';\r\nimport uploadStatusStyle from '../styles/UploadStatusStyles';\r\n\r\nconst getStatusConfig = classes => ({\r\n [FILE_UPLOAD_STATUS.ERROR]: { icon: 'cp-reset', nameClassName: classes.uploadError, key: 'error' },\r\n [FILE_UPLOAD_STATUS.SUCCESS]: { className: classes.uploadSuccess, icon: 'cp-success', key: 'success' },\r\n [FILE_UPLOAD_STATUS.LOADING]: { node: , key: 'pending' },\r\n});\r\n\r\nconst useStyles = makeStyles(uploadStatusStyle, { name: 'UploadStatus' });\r\n\r\nconst FileItem = ({ id, status, name, classes, onRetry }) => {\r\n const { icon, className, node, nameClassName } = getStatusConfig(classes)[status] || {};\r\n const start = useConstructor(() => );\r\n const isErrored = status === FILE_UPLOAD_STATUS.ERROR;\r\n const end = isErrored ? (\r\n \r\n ) : null;\r\n return (\r\n <>\r\n \r\n \r\n {name}\r\n \r\n {\r\n node || (\r\n onRetry(id) : undefined}\r\n className={className}\r\n />\r\n )\r\n }\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nFileItem.propTypes = {\r\n name: PropTypes.string,\r\n onRetry: PropTypes.func,\r\n id: PropTypes.number,\r\n status: PropTypes.string,\r\n classes: PropTypes.object,\r\n};\r\n\r\nconst UploadStatus = ({ open, fileList, onRetry, onClose }) => {\r\n const classes = useStyles();\r\n const { modalHeader, modalClasses, bodyContainerProps } = useConstructor(() => ({\r\n modalHeader: {localisable.uploadStatus},\r\n modalClasses: {\r\n modalGrid: classes.uploadModalGrid,\r\n modalHeader: classes.modalHeader,\r\n closeButton: classes.closeButton,\r\n modalFooter: classes.modalFooter,\r\n },\r\n bodyContainerProps: { direction: 'column' },\r\n }));\r\n\r\n const getFooter = () => {\r\n const uploadSummary = { loading: 0, success: 0, error: 0 };\r\n\r\n fileList.forEach(({ status } = {}) => {\r\n if (status) {\r\n uploadSummary[status.toLowerCase()] += 1;\r\n }\r\n });\r\n const { loading, success, error } = uploadSummary;\r\n\r\n return (\r\n \r\n \r\n {`${loading} ${localisable.uploadPending}, ${success} ${localisable.successful}, ${error} ${localisable.unsuccessful}`}\r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {\r\n fileList.map(({ file, status }, index) => (\r\n \r\n ))\r\n }\r\n \r\n \r\n );\r\n};\r\n\r\nUploadStatus.propTypes = {\r\n open: PropTypes.bool,\r\n onRetry: PropTypes.func,\r\n onClose: PropTypes.func,\r\n fileList: PropTypes.array,\r\n};\r\n\r\nexport default UploadStatus;\r\n","import { useEffect, useState } from 'react';\r\nimport { Dropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { SCROLL_TIME, DEFAULT_SECTION_ID } from '../config/Constants';\r\n\r\nlet sectionRefMap = {};\r\nlet sectionsOffset = [];\r\nlet isScrolling = null;\r\nlet isScrollListenerDisabled = false;\r\n\r\nconst initializeList = (config) => {\r\n const sectionConfig = [...config];\r\n // Resetting Helper Variables\r\n sectionRefMap = {};\r\n sectionsOffset = [];\r\n\r\n // Structuring helper objects and config\r\n return sectionConfig.map(({ label, id, ref }) => {\r\n sectionRefMap[id] = ref;\r\n if (ref) {\r\n sectionsOffset.push({ id, offsetTop: ref.current.offsetTop });\r\n }\r\n return { label, value: id };\r\n });\r\n};\r\n\r\nconst SectionScroller = ({\r\n config,\r\n parentRef: { current: parentRef } = {}, DropdownProps,\r\n ...props\r\n}) => {\r\n const [list, setList] = useState(() => initializeList(config));\r\n const [currentSectionId, setCurrentSectionId] = useState(DEFAULT_SECTION_ID);\r\n /**\r\n * @description Functions uses binary search to find the scroll position in the sections\r\n * @param {array} sections Sections offset and its id\r\n * @param {number} left Initial index of offset array\r\n * @param {number} right Last index of offset array\r\n * @param {number} pos Position to be searched\r\n */\r\n const getActiveId = (sections, left, right, pos) => {\r\n if (right >= left) {\r\n const mid = Math.trunc(left + (right - left) / 2);\r\n const midExists = sections[mid] !== undefined && sections[mid] !== null;\r\n const midPlusOneExists = sections[mid + 1] !== undefined && sections[mid + 1] !== null;\r\n if (midExists && midPlusOneExists && sections[mid].offsetTop && sections[mid + 1].offsetTop) {\r\n if (pos >= sections[mid].offsetTop\r\n && (sections[mid + 1] ? (pos < sections[mid + 1].offsetTop) : true)) {\r\n return sections[mid].id;\r\n }\r\n if (sections[mid].offsetTop > pos) {\r\n return getActiveId(sections, left, mid - 1, pos);\r\n }\r\n }\r\n return getActiveId(sections, mid + 1, right, pos);\r\n }\r\n return DEFAULT_SECTION_ID;\r\n };\r\n\r\n // Listener for scroll change\r\n const handleScroll = (event) => {\r\n let { target: { scrollTop } } = event;\r\n const firstIndex = 0;\r\n const lastIndex = sectionsOffset.length - 1;\r\n scrollTop += sectionsOffset[firstIndex].offsetTop;\r\n\r\n if ((scrollTop <= sectionsOffset[firstIndex].offsetTop) || (scrollTop > sectionsOffset[lastIndex].offsetTop)) {\r\n if (currentSectionId !== DEFAULT_SECTION_ID) {\r\n setCurrentSectionId(() => DEFAULT_SECTION_ID);\r\n }\r\n return;\r\n }\r\n\r\n if (!isScrollListenerDisabled) {\r\n const scrolledActiveId = getActiveId(sectionsOffset, firstIndex, lastIndex, scrollTop);\r\n if (currentSectionId !== scrolledActiveId) { // If scroll position is not in the current section, reset it to default section\r\n setCurrentSectionId(() => DEFAULT_SECTION_ID);\r\n }\r\n } else {\r\n if (isScrolling) clearTimeout(isScrolling);\r\n isScrolling = setTimeout(() => {\r\n isScrollListenerDisabled = false;\r\n }, SCROLL_TIME);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n setList(initializeList(config));\r\n }, [config]);\r\n\r\n useEffect(() => {\r\n if (parentRef) {\r\n parentRef.addEventListener('scroll', handleScroll);\r\n }\r\n return () => {\r\n if (parentRef) {\r\n parentRef.removeEventListener('scroll', handleScroll);\r\n }\r\n };\r\n }, [currentSectionId]);\r\n\r\n const onChange = (_, selectedSection) => {\r\n isScrollListenerDisabled = true;\r\n const ref = sectionRefMap[selectedSection];\r\n if (ref && ref.current) {\r\n if (ref.current) {\r\n ref.current.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n }\r\n setCurrentSectionId(() => selectedSection);\r\n };\r\n\r\n const updateSectionPosition = (id) => {\r\n onChange(null, id);\r\n };\r\n\r\n useEffect(() => {\r\n const { getUpdateScrollPositionFunc } = props;\r\n getUpdateScrollPositionFunc(updateSectionPosition);\r\n }, []);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nSectionScroller.propTypes = {\r\n config: PropTypes.array,\r\n parentRef: PropTypes.object,\r\n DropdownProps: PropTypes.object,\r\n getUpdateScrollPositionFunc: PropTypes.func,\r\n};\r\n\r\nSectionScroller.defaultProps = { getUpdateScrollPositionFunc: EMPTY_FUNC };\r\n\r\nexport default SectionScroller;\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport LabelWithIcon from 'Commons/components/generic/labelwithicon/components/LabelWithIcon';\r\nimport { Loader } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\n\r\nconst ScanBarcodeButton = ({ open, onClick, LabelWithIconProps }) => (\r\n \r\n : , // Change to barcode icon when uploaded\r\n }}\r\n onClick={onClick}\r\n {...LabelWithIconProps}\r\n >\r\n \r\n {open ? localisable.scanningBarcode : localisable.scanBarcode}\r\n \r\n \r\n);\r\n\r\nScanBarcodeButton.propTypes = {\r\n open: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n LabelWithIconProps: PropTypes.any,\r\n};\r\n\r\nexport default ScanBarcodeButton;\r\n","import { memo } from 'react';\r\nimport Table from 'Generic/table/components/Table';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport { TABLE_ROW_HEIGHT_VARIANT } from 'Commons/config/constants/Constants';\r\nimport getFormattedAmount from 'Commons/helpers/utils/AmountHelper';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport SummaryTableStyle from '../styles/SummaryTableStyle';\r\nimport { getColumns } from './SummaryTableConfig';\r\nimport {\r\n MIN_TABLE_WIDTH_FOR_SINGLE_LINE_ROW,\r\n MIN_TABLE_WIDTH_FOR_DOUBLE_LINE_ROW,\r\n MIN_TABLE_WIDTH_FOR_RESPONSIVE_VERSION,\r\n} from '../config/Constants';\r\n\r\n\r\nconst useStyles = makeStyles(SummaryTableStyle);\r\nconst { innerWidth, deviceInfo: { isMobile, isPhablet } } = window;\r\nconst tableProps = isMobile || isPhablet ? { tableWidth: innerWidth - 64 } : {};\r\n\r\n// TODO:will change the name to Summary table and delete the other summaryTable when MoveOut is done\r\n\r\nconst SummaryTable = ({\r\n source, data, title,\r\n total, currency, isAnotherTablePresent, ...props\r\n}) => {\r\n const classes = useStyles();\r\n const { tableWidth: tableWidthFromParent } = props;\r\n const { tableWidth: tableWidthFromSelf } = tableProps;\r\n const tableWidth = tableWidthFromParent || tableWidthFromSelf;\r\n let rowHeight = 60;\r\n if (tableWidth > MIN_TABLE_WIDTH_FOR_SINGLE_LINE_ROW) {\r\n rowHeight = 40;\r\n } else if (tableWidth > MIN_TABLE_WIDTH_FOR_DOUBLE_LINE_ROW) {\r\n rowHeight = 50;\r\n }\r\n const isResponsiveScreen = tableWidth < MIN_TABLE_WIDTH_FOR_RESPONSIVE_VERSION;\r\n\r\n return (\r\n <>\r\n \r\n {title}\r\n \r\n {currency}\r\n {`${getFormattedAmount(total)}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSummaryTable.propTypes = {\r\n source: PropTypes.string,\r\n data: PropTypes.array,\r\n title: PropTypes.string,\r\n total: PropTypes.string,\r\n currency: PropTypes.string,\r\n tableWidth: PropTypes.number,\r\n isAnotherTablePresent: PropTypes.bool,\r\n};\r\n\r\nSummaryTable.defaultProps = {\r\n data: [],\r\n title: '',\r\n total: '',\r\n currency: '$',\r\n isAnotherTablePresent: false,\r\n};\r\n\r\nexport default memo(SummaryTable);\r\n","const CustomMergeFieldContext = React.createContext();\r\n\r\nexport default CustomMergeFieldContext;\r\n","import { useRef, useEffect } from 'react';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { DEMO_FACILITY_ID_LIST } from 'Commons/config/constants/Constants';\r\nimport { isProduction, convertToNumber } from 'Commons/helpers/utils/Utils';\r\nimport { AUTHENTICATION_KEY } from '../config/Constants';\r\nimport syrapayHostedFormStyle from '../styles/SyrapayHostedFormStyle';\r\n\r\nconst useStyle = makeStyles(syrapayHostedFormStyle, { name: 'SyrapayMerchantPortal' });\r\n\r\nconst SyrapayMerchantPortal = ({ facilityId, authenticationKey }) => {\r\n const classes = useStyle();\r\n const submitButtonRef = useRef(null);\r\n\r\n useEffect(() => {\r\n if (authenticationKey) submitButtonRef.current.click();\r\n }, [authenticationKey]);\r\n\r\n const getMerchantPortalUrl = () => {\r\n if (isProduction()) {\r\n return DEMO_FACILITY_ID_LIST.includes(convertToNumber(facilityId))\r\n ? process.env.TEST_MERCHANT_PORTAL_URL : process.env.MERCHANT_PORTAL_URL;\r\n }\r\n return process.env.MERCHANT_PORTAL_URL;\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSyrapayMerchantPortal.propTypes = {\r\n facilityId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n authenticationKey: PropTypes.string,\r\n};\r\n\r\nSyrapayMerchantPortal.defaultProps = { authenticationKey: '' };\r\n\r\nexport default SyrapayMerchantPortal;\r\n","import { Form, Formik } from 'formik';\r\nimport BaseForm from 'Commons/components/business/baseform/components/BaseForm';\r\nimport { Grid, Loader, Typography } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport { deepMerge, flattenObject, isObjWithKeys } from 'Commons/helpers/utils/DataHelpers';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport AlertDialog from 'Generic/alertdialog/components/AlertDialog';\r\nimport Button from 'Generic/button/components/Button';\r\nimport { DASHBOARD_TYPE, SOURCE, STATUS, WS_EVENT_TYPE } from 'Commons/config/constants/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport { isInternalDashboard, isSyrasoftUser } from 'Commons/helpers/utils/Utils';\r\nimport INTERNAL_ROUTES from 'Internal/redux/config/RouteNames';\r\nimport { ROUTE } from 'External/redux/config/RouteNames';\r\nimport UserRoleSideBar from 'Commons/components/business/baseUserRole/components/UserRoleSideBar';\r\nimport UserRoleMainTab from 'Commons/components/business/baseUserRole/components/UserRoleMainTab';\r\n\r\nclass BaseUserRole extends BaseForm {\r\n constructor(props) {\r\n super(props);\r\n const {\r\n match: { url },\r\n currentFacility: { data: { permissionRoleId: curUserPermRoleIdForCurFacility } = {} } = {},\r\n } = props;\r\n this.state = {\r\n userRoles: {},\r\n allRoles: {},\r\n isSearchbarOpened: false,\r\n shouldShowAlert: false,\r\n receivedWSMessage: false,\r\n selectedId: undefined,\r\n selectedUserType: undefined,\r\n };\r\n this.curUserPermRoleIdForCurFacility = curUserPermRoleIdForCurFacility;\r\n this.isStandardUser = !isSyrasoftUser();\r\n this.isSourceInternalDashboard = isInternalDashboard(url);\r\n this.dashboardType = this.isSourceInternalDashboard ? DASHBOARD_TYPE.INTERNAL : DASHBOARD_TYPE.SETTINGS;\r\n this.baseURL = this.isSourceInternalDashboard ? INTERNAL_ROUTES.SYRASOFT_USER_ROLES : ROUTE.USER_ROLE;\r\n this.unblock = this.allowNavigation(this.shouldLeave);\r\n }\r\n\r\n onCancel = () => {\r\n const { formProps: { dirty } = {}, props: { history } = {}, areChangesMade = false, isCreateRole } = this;\r\n if (isCreateRole() ? dirty && areChangesMade : dirty) {\r\n this.targetLocation = '';\r\n this.setState({ discard: true });\r\n } else {\r\n history.goBack();\r\n }\r\n }\r\n\r\n componentDidUpdate() {\r\n this.unblock = this.allowNavigation(this.shouldLeave);\r\n }\r\n\r\n componentWillUnmount() {\r\n const { unblock = () => { }, props: { clearStoreKeys = () => {} } = {} } = this;\r\n unblock();\r\n if (this.shouldClearStoreKey) {\r\n clearStoreKeys(['userRole']);\r\n }\r\n }\r\n\r\n preProcessRoles = () => {}\r\n\r\n handleInitialRouteChange = () => {\r\n const {\r\n history, location: { pathname } = {},\r\n match: { params: { userType: userTypeFromParams, roleId, accountId } = {} },\r\n } = this.props;\r\n const {\r\n dashboardType, urlBuilderName,\r\n urlBuilderNameForCreate,\r\n urlBuilderNameForEdit,\r\n state: {\r\n userRoles,\r\n selectedUserType,\r\n selectedId,\r\n },\r\n } = this;\r\n const isBasePath = pathname === buildUrl(urlBuilderName, undefined, dashboardType, accountId);\r\n\r\n if ((isBasePath || roleId || userTypeFromParams) && isObjWithKeys(userRoles)) {\r\n const { [selectedUserType || selectedId]: { status, ...rest } = {} } = userRoles;\r\n if (isBasePath) {\r\n history.replace(buildUrl(urlBuilderNameForEdit,\r\n { selectedId, selectedUserType },\r\n dashboardType, accountId));\r\n }\r\n this.initialValues = { ...rest };\r\n this.initialStatus = { formStatus: this.isSourceInternalDashboard ? STATUS.Active.value : status };\r\n } else if (!this.isSourceInternalDashboard) {\r\n history.replace(buildUrl(urlBuilderNameForCreate, undefined, dashboardType, accountId));\r\n this.state.selectedId = '';\r\n this.initialValues = { permission: { account: {} } };\r\n this.initialStatus = { formStatus: STATUS.Active.value };\r\n }\r\n }\r\n\r\n createOrUpdateUserRole = () => {}\r\n\r\n copyRoleName = () => {\r\n const { dirty } = this.formProps;\r\n if (dirty) {\r\n this.nextIdToSelect = localisable.copy;\r\n this.setState({ discard: true });\r\n } else {\r\n this.selectOrCopyRole(localisable.copy);\r\n }\r\n }\r\n\r\n resetCurrentForm = () => {\r\n const { initialValues, formProps: { resetForm, setStatus } = {} } = this;\r\n resetForm(initialValues);\r\n setStatus({ formStatus: STATUS.Active.value });\r\n }\r\n\r\n onCreateRole = () => {\r\n const {\r\n dashboardType,\r\n urlBuilderNameForCreate,\r\n formProps: { dirty } = {},\r\n props: { match: { params: { accountId } = {} } = {} } = {},\r\n } = this;\r\n if (dirty) {\r\n this.targetLocation = buildUrl(urlBuilderNameForCreate, undefined, dashboardType, accountId);\r\n this.setState({ discard: true });\r\n } else {\r\n this.createRole();\r\n }\r\n }\r\n\r\n createRole = () => {\r\n const { history, match: { params: { accountId } = {} } = {} } = this.props;\r\n this.initialValues = {};\r\n this.resetCurrentForm();\r\n this.setState({ selectedId: '' });\r\n history.replace(buildUrl(this.urlBuilderNameForCreate, undefined, this.dashboardType, accountId));\r\n }\r\n\r\n onSearch = (value) => {\r\n const { allRoles } = this.state;\r\n let filteredRoles = allRoles;\r\n if (value) {\r\n const lowerValue = value.toLowerCase();\r\n filteredRoles = Object.values(allRoles).reduce((updatedRoles, role) => {\r\n const { id, name, userType } = role;\r\n const roleName = this.isSourceInternalDashboard ? userType : name;\r\n if ((roleName).toLowerCase().includes(lowerValue)) {\r\n return {\r\n ...updatedRoles,\r\n [userType || id]: {\r\n id,\r\n ...role,\r\n },\r\n };\r\n }\r\n return updatedRoles;\r\n }, {});\r\n }\r\n this.setState({ userRoles: filteredRoles });\r\n }\r\n\r\n clearSearch = () => {\r\n const { allRoles } = this.state;\r\n this.setState({ userRoles: allRoles });\r\n }\r\n\r\n onUserRoleUpdate = (error, response) => {\r\n let updatedState = { isButtonLoading: false };\r\n const { setErrors, setTouched, setStatus } = this.formProps;\r\n const actions = { setErrors, setTouched, setStatus };\r\n if (error) {\r\n this.handleErrors(error, actions);\r\n } else if (response) {\r\n const { data: [data = {}] = [] } = response;\r\n const { userRoles, selectedId, selectedUserType, allRoles } = this.state;\r\n const { resetForm } = this.formProps;\r\n const key = this.isSourceInternalDashboard ? selectedUserType : selectedId;\r\n const { status, ...updatedRole } = deepMerge(userRoles[key], data);\r\n this.initialValues = { ...updatedRole };\r\n this.initialStatus = { formStatus: this.isSourceInternalDashboard ? STATUS.Active.value : status };\r\n resetForm(this.initialValues);\r\n this.setSnackbarProps(true, localisable.roleUpdated);\r\n if (!this.shouldClearStoreKey) {\r\n this.shouldClearStoreKey = true;\r\n }\r\n updatedState = {\r\n ...updatedState,\r\n userRoles: {\r\n ...userRoles,\r\n [key]: { ...userRoles[key], ...updatedRole, status },\r\n },\r\n allRoles: {\r\n ...allRoles,\r\n [key]: { ...userRoles[key], ...updatedRole, status },\r\n },\r\n };\r\n }\r\n this.setState(updatedState);\r\n }\r\n\r\n onStatusChange = actions => (apiError, response) => {\r\n let updatedState = { loading: false };\r\n if (apiError) {\r\n this.handleErrors(apiError, actions);\r\n } else if (response) {\r\n const { success } = response;\r\n const {\r\n formProps: { status, setStatus } = {}, isFormActive,\r\n state: { selectedId, userRoles, allRoles } = {},\r\n } = this;\r\n const updatedStatus = !isFormActive() ? STATUS.Active.value : STATUS.Inactive.value;\r\n if (success) {\r\n setStatus({\r\n ...status,\r\n formStatus: updatedStatus,\r\n });\r\n updatedState = {\r\n ...updatedState,\r\n userRoles: { ...userRoles, [selectedId]: { ...userRoles[selectedId], status: updatedStatus } },\r\n allRoles: { ...allRoles, [selectedId]: { ...allRoles[selectedId], status: updatedStatus } },\r\n status: updatedStatus,\r\n };\r\n }\r\n }\r\n this.setState(updatedState);\r\n }\r\n\r\n onUserRoleCreate = (err, response) => {\r\n let updatedState = { isButtonLoading: false };\r\n if (err) {\r\n this.handleErrors(err);\r\n } else if (response) {\r\n const {\r\n state: { userRoles, allRoles },\r\n props: { history, match: { params: { accountId } = {} } = {} },\r\n formProps: { resetForm },\r\n urlBuilderNameForEdit,\r\n } = this;\r\n const { data: [{ id, status, ...data } = {}] = [] } = response;\r\n this.initialValues = { id, ...data };\r\n this.initialStatus = { formStatus: status };\r\n resetForm(this.initialValues);\r\n updatedState = {\r\n ...updatedState,\r\n userRoles: { ...userRoles, [id]: { id, status, ...data } },\r\n allRoles: { ...allRoles, [id]: { id, status, ...data } },\r\n selectedId: id,\r\n };\r\n this.setSnackbarProps(true, localisable.roleCreated);\r\n if (!this.shouldClearStoreKey) {\r\n this.shouldClearStoreKey = true;\r\n }\r\n history.replace(buildUrl(urlBuilderNameForEdit, { selectedId: id }, DASHBOARD_TYPE.SETTINGS, accountId));\r\n }\r\n this.setState(updatedState);\r\n }\r\n\r\n shouldLeave = () => {\r\n const { formProps: { dirty } = {}, targetLocation, areChangesMade } = this;\r\n if ((this.isCreateRole() ? areChangesMade : dirty) && !targetLocation.includes(this.baseURL)) {\r\n this.setState({ discard: true }, () => { });\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n isModeCreate = () => {\r\n const { state: { selectedId } = {} } = this;\r\n return !selectedId;\r\n }\r\n\r\n selectOrCopyRole = (idOrUserType) => {\r\n const {\r\n state: { allRoles, selectedId } = {},\r\n props: { history, match: { params: { accountId } = {} } = {} } = {},\r\n formProps: { resetForm, setStatus, status, setFieldValue } = {},\r\n dashboardType,\r\n urlBuilderNameForCreate,\r\n urlBuilderNameForEdit,\r\n } = this;\r\n const isCopying = idOrUserType === localisable.copy;\r\n this.nextIdToSelect = '';\r\n const { status: currentStatus, name, ...role } = allRoles[isCopying ? selectedId : idOrUserType];\r\n this.initialValues = { ...role, name };\r\n resetForm(this.initialValues);\r\n const formStatusToSet = isCopying ? STATUS.Active.value : currentStatus;\r\n setStatus({ ...status, formStatus: this.isSourceInternalDashboard ? STATUS.Active.value : formStatusToSet });\r\n const selectedIdToSet = isCopying ? '' : idOrUserType;\r\n\r\n this.setState({\r\n selectedId: this.isSourceInternalDashboard ? undefined : selectedIdToSet,\r\n selectedUserType: this.isSourceInternalDashboard ? idOrUserType : undefined,\r\n });\r\n\r\n if (isCopying) {\r\n history.replace(buildUrl(urlBuilderNameForCreate, undefined, dashboardType, accountId));\r\n setFieldValue('name', `${name}-${localisable.copy}`);\r\n } else {\r\n history.replace(buildUrl(urlBuilderNameForEdit,\r\n { selectedId: idOrUserType, selectedUserType: idOrUserType },\r\n dashboardType, accountId));\r\n }\r\n }\r\n\r\n onRoleSelection = (idOrUserType) => {\r\n const { dirty } = this.formProps;\r\n const { areChangesMade, isCreateRole } = this;\r\n this.nextIdToSelect = idOrUserType;\r\n if (isCreateRole() ? areChangesMade : dirty) {\r\n this.setState({ discard: true });\r\n } else {\r\n this.selectOrCopyRole(idOrUserType);\r\n }\r\n }\r\n\r\n handleYes = () => {\r\n const {\r\n nextIdToSelect, targetLocation,\r\n urlBuilderNameForCreate,\r\n dashboardType,\r\n props: { history, match: { params: { accountId } = {} } = {} } = {},\r\n } = this;\r\n if (nextIdToSelect) {\r\n this.selectOrCopyRole(nextIdToSelect);\r\n } else {\r\n this.shouldChangeRoute = true;\r\n if (targetLocation === buildUrl(urlBuilderNameForCreate, undefined, dashboardType, accountId)) {\r\n this.createRole();\r\n return;\r\n }\r\n if (targetLocation) {\r\n history.push(targetLocation);\r\n } else {\r\n history.goBack();\r\n }\r\n }\r\n }\r\n\r\n shouldUpdateRTNSSnackbarActions = (wsMessage = {}) => {\r\n const { eventType } = wsMessage;\r\n return eventType === WS_EVENT_TYPE.CREATED;\r\n }\r\n\r\n handleWsMessage = (message = {}) => {\r\n this.onWebSocketMessage(message);\r\n }\r\n\r\n renderHeader = (pageTitlePrefix) => {\r\n const { classes, match: { params: { roleId } = {} } = {} } = this.props;\r\n return roleId || this.isSourceInternalDashboard\r\n ? (\r\n \r\n \r\n {pageTitlePrefix}\r\n \r\n {!this.isSourceInternalDashboard && (\r\n \r\n )}\r\n \r\n )\r\n : (\r\n \r\n \r\n {localisable.createRole}\r\n \r\n \r\n );\r\n }\r\n\r\n isCreateRole = () => this.props.location.pathname.includes('create');\r\n\r\n renderComponent() {\r\n const {\r\n isStandardUser = false,\r\n initialValues,\r\n initialValues: { name, userType } = {},\r\n initialStatus, isFormActive, showAlertDialog, onCancel,\r\n onAlertClose,\r\n renderHeader,\r\n isModeCreate,\r\n formProps: { dirty },\r\n state: { shouldShowAlert, discard = false, loading = false, selectedId, selectedUserType },\r\n props: { classes, match: { params: { roleId } = {} } = {} },\r\n curUserPermRoleIdForCurFacility,\r\n isCreateRole,\r\n areChangesMade,\r\n } = this;\r\n /*\r\n -- For reference --\r\n userType - For non-std perm - user type\r\n selectedUserType - For non-std perm when a role is selected\r\n name - For std perm - role name\r\n selectedId - For std perm when a role is selected\r\n */\r\n const roleName = name || userType;\r\n const pageTitlePrefix = this.isSourceInternalDashboard ? localisable.syrasoftUserRoles : localisable.userRole;\r\n return (\r\n initialValues\r\n ? (\r\n {\r\n const { status: { formStatus } = {}, values: formValues, dirty: formDirty } = formProps;\r\n if (formDirty) {\r\n const flattenValues = flattenObject(formValues);\r\n this.areChangesMade = Object.values(flattenValues).some(value => value);\r\n }\r\n this.formProps = formProps;\r\n return (\r\n
\r\n \r\n \r\n \r\n this.onAlertYesAction(roleId, SOURCE.userRole.value)}\r\n variant=\"text\"\r\n >\r\n {localisable.ok}\r\n \r\n )}\r\n >\r\n {this.getAlertMessage(SOURCE.userRole.value)}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n />\r\n ) : (\r\n \r\n \r\n \r\n )\r\n );\r\n }\r\n}\r\n\r\nBaseUserRole.propTypes = {\r\n onAction: PropTypes.func,\r\n userRole: PropTypes.object,\r\n history: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default BaseUserRole;\r\n","const LetterTemplateContext = React.createContext();\r\n\r\nexport default LetterTemplateContext;\r\n","import { Component } from 'react';\r\nimport Link from './Link';\r\nimport { Grid } from '../../componentlibrary/components/Components';\r\nimport LabelWithIcon from '../../labelwithicon/components/LabelWithIcon';\r\n\r\nclass LinkList extends Component {\r\n renderLink(link) {\r\n const { LinkProps = {} } = this.props;\r\n const { classes = {} } = LinkProps;\r\n const { id, name, showGrid, paymentHandler, ...linkProps } = link;\r\n const { addon, LabelWithIconProps, className } = linkProps;\r\n return (\r\n !showGrid\r\n ? (\r\n \r\n {name}\r\n \r\n )\r\n : (\r\n \r\n \r\n {name}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n render() {\r\n const { list, LinkProps, ...gridProps } = this.props;\r\n return (\r\n \r\n {list.map(link => this.renderLink(link))}\r\n \r\n );\r\n }\r\n}\r\n\r\nLinkList.propTypes = {\r\n className: PropTypes.string,\r\n list: PropTypes.arrayOf(PropTypes.shape({\r\n to: PropTypes.string,\r\n name: PropTypes.string.isRequired,\r\n })).isRequired,\r\n alignItems: PropTypes.string,\r\n LinkProps: PropTypes.object,\r\n};\r\n\r\nLinkList.defaultProps = {\r\n className: '',\r\n alignItems: 'center',\r\n};\r\n\r\nexport default LinkList;\r\n","import { FormTextField } from 'Generic/textfield/components/TextField';\r\nimport { XS_FALSE, SM_8_XS_12, XS_12 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport { IS_EMAIL, IS_MAX_LENGTH_254 } from 'Commons/config/constants/Validators';\r\nimport { useEffect, memo, useState } from 'react';\r\nimport { FormCheckbox } from 'Commons/components/generic/checkbox/components/CheckBox';\r\nimport { makeStyles, Grid } from 'Generic/componentlibrary/components/Components';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { VARIANT } from 'Generic/form/config/FormComponentsConfig';\r\nimport { isEmail } from 'Commons/helpers/utils/validator/Validator';\r\nimport { FORM_TYPE } from 'External/containers/createoccupancy/config/Constants';\r\nimport Button from 'Commons/components/generic/button/components/Button';\r\nimport Tooltip from 'Commons/components/generic/tooltip/components/Tooltip';\r\nimport Icon from 'Commons/components/generic/icon/components/Icon';\r\nimport Typography from 'Commons/components/generic/typography/components/Typography';\r\nimport Phone from './Phone';\r\nimport contactStyle from '../styles/ContactStyle';\r\n\r\nconst useStyles = makeStyles(contactStyle, { name: 'Contact' });\r\n\r\nconst Contact = ({\r\n phone,\r\n status,\r\n values,\r\n touched,\r\n resetForm,\r\n isFormActive,\r\n initialValues,\r\n setFieldValue,\r\n setFieldTouched,\r\n currentFacility,\r\n onPhoneOrEmailValid,\r\n email: { emailAddress, isEmailEnabled, additionalEmailAddress } = {},\r\n initialValues: { email: { emailAddress: initialEmailAddress } = {} } = {},\r\n values: { ignore: { formType } = {} } = {},\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [isAdditionalEmailOpen, setIsAdditionalEmailOpen] = useState(() => !!additionalEmailAddress);\r\n\r\n useEffect(() => {\r\n if (!emailAddress && isEmailEnabled) {\r\n setFieldTouched('email.isEmailEnabled', true, false);\r\n setFieldValue('email.isEmailEnabled', false);\r\n }\r\n if (emailAddress\r\n && initialEmailAddress !== emailAddress\r\n && !isEmail(emailAddress)) { // The isEmail validator returns error message in case the email is invalid, hence the !isEmail\r\n onPhoneOrEmailValid(emailAddress, 'email.emailAddress');\r\n }\r\n }, [emailAddress, initialEmailAddress]);\r\n\r\n const checkEmail = () => {\r\n if (!isEmailEnabled) {\r\n setFieldTouched('email.isEmailEnabled', true, false);\r\n setFieldValue('email.isEmailEnabled', true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {/* To avoid the empty padding */}\r\n \r\n \r\n\r\n \r\n {formType === FORM_TYPE.TENANT ? (\r\n <>\r\n {isAdditionalEmailOpen ? (\r\n \r\n {localisable.additionalEmails}\r\n \r\n
  • {localisable.additionalEmailConfiguredMsg}
  • \r\n
  • {localisable.additionalEmailCommunicationMsg}
  • \r\n
  • {localisable.additionalEmailDuplicateCheckMsg}
  • \r\n \r\n )}\r\n classes={{ lightTooltip: classes.lightTooltip }}\r\n event=\"onClick\"\r\n >\r\n \r\n \r\n
    \r\n )}\r\n placeholder={`${localisable.enterEmail} (${localisable.commaSeparatedEmailNote})`}\r\n validate={{ validateCommaSeparatedEmail: { value: { additionalEmailsToCheck: [emailAddress], errorMsg: localisable.primaryEmailInAdditionalEmailErrorMsg } } }}\r\n fullWidth\r\n GridProps={XS_12}\r\n componentClasses={{ leftMarginIcon: classes.leftMarginIcon }}\r\n addon={{\r\n end: {\r\n setIsAdditionalEmailOpen(false);\r\n setFieldValue('email.additionalEmailAddress', '');\r\n setFieldTouched('email.additionalEmailAddress', true);\r\n }}\r\n />,\r\n }}\r\n />\r\n ) : null }\r\n {!isAdditionalEmailOpen && emailAddress && (\r\n setIsAdditionalEmailOpen(true)}\r\n className={classes.additionalEmailAddress}\r\n >\r\n {`${localisable.add} ${localisable.additionalEmails}`}\r\n \r\n )}\r\n \r\n ) : null}\r\n \r\n\r\n \r\n\r\n \r\n );\r\n};\r\n\r\nContact.propTypes = {\r\n phone: PropTypes.object,\r\n email: PropTypes.object,\r\n status: PropTypes.object,\r\n values: PropTypes.object,\r\n touched: PropTypes.object,\r\n resetForm: PropTypes.func,\r\n isFormActive: PropTypes.bool,\r\n setFieldValue: PropTypes.func,\r\n initialValues: PropTypes.object,\r\n setFieldTouched: PropTypes.func,\r\n currentFacility: PropTypes.object,\r\n onPhoneOrEmailValid: PropTypes.func,\r\n};\r\n\r\nContact.defaultProps = {\r\n phone: {},\r\n touched: {},\r\n initialValues: {},\r\n setFieldValue: () => {},\r\n onPhoneOrEmailValid: () => {},\r\n};\r\n\r\nexport default memo(Contact);\r\n","import { FormDatePicker } from 'Commons/components/generic/datepicker/components/DatePicker';\r\nimport { SM_12, SM_4_XS_6 } from 'Commons/config/constants/GridSpacingConstants';\r\nimport Comments from 'Commons/components/business/comments/components/Comments';\r\nimport { memo } from 'react';\r\nimport { Grid } from 'Generic/componentlibrary/components/Components';\r\n// import { FormDropdown } from 'Generic/dropdown/components/Dropdown';\r\nimport localisable from 'Commons/config/strings/localisable';\r\n\r\nconst OtherInformation = ({\r\n mapping: {\r\n comments: {\r\n visibility: commentsVisibility = true,\r\n ...commentsProps\r\n } = {},\r\n dateOfBirth: {\r\n visibility: dateOfBirthVisibility = true,\r\n ...dateOfBirthProps\r\n } = {},\r\n } = {},\r\n}) => (\r\n <>\r\n \r\n {\r\n /* TODO: Backend Support\r\n \r\n */\r\n }\r\n {\r\n dateOfBirthVisibility\r\n && (\r\n \r\n )\r\n }\r\n \r\n {\r\n commentsVisibility\r\n && (\r\n \r\n )\r\n }\r\n \r\n);\r\n\r\n\r\nOtherInformation.propTypes = { mapping: PropTypes.object };\r\n\r\n\r\nexport default memo(OtherInformation);\r\n","import Button from 'Generic/button/components/Button';\r\nimport { useEffect, useRef, useState } from 'react';\r\nimport { makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport { getValue, hasValue, isObjWithKeys, isValidValue } from 'Commons/helpers/utils/DataHelpers';\r\nimport FieldsCache from 'Commons/helpers/FieldsCache';\r\nimport DeleteOverlay from 'Commons/components/business/deleteOverlay/components/DeleteOverlay';\r\nimport { DELETE_OVERLAY_ACTION, DELETE_OVERLAY_DELETION_STATUS } from 'Commons/config/constants/Constants';\r\nimport { isPrimitiveType } from 'Commons/helpers/api/Formatter';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Section from './Section';\r\nimport onDemandSectionStyle from '../styles/OnDemandStyle';\r\n\r\nconst useStyles = makeStyles(onDemandSectionStyle, { name: 'OnDemandSection' });\r\n\r\nconst doesSectionContainValue = (sectionObj) => {\r\n if (Array.isArray(sectionObj)) {\r\n return sectionObj.some(item => doesSectionContainValue(item));\r\n }\r\n\r\n if (!isPrimitiveType(sectionObj)) {\r\n const keys = Object.keys(sectionObj);\r\n return keys.length ? keys.some(key => doesSectionContainValue(sectionObj[key])) : false;\r\n }\r\n\r\n return isValidValue(sectionObj);\r\n};\r\n\r\nconst OnDemandSection = ({\r\n id,\r\n open,\r\n values,\r\n touched,\r\n children,\r\n formikKey,\r\n fieldsCache,\r\n isFormActive,\r\n initialValues,\r\n setFieldValue,\r\n onClick: onSectionClick,\r\n onAddOrRemoveSection,\r\n defaultValues,\r\n setValues,\r\n resetForm,\r\n setTouched,\r\n validateForm,\r\n classes: onDemandClasses,\r\n isAnySectionFieldVisible,\r\n ...props\r\n}) => {\r\n const isNew = useRef();\r\n const [{ existInTheForm, deleteStatus, markedForDeletion }, setSectionStatus] = useState(() => {\r\n const sectionValue = getValue(initialValues, formikKey);\r\n const sectionHasValue = doesSectionContainValue(sectionValue);\r\n isNew.current = !sectionHasValue;\r\n return { existInTheForm: sectionHasValue, markedForDeletion: false, deleteStatus: '' };\r\n });\r\n const [deletedValues, setDeletedValues] = useState({});\r\n const [sectionTouched, setSectionTouched] = useState({});\r\n\r\n const classes = useStyles();\r\n\r\n const getDeleteStatus = () => (isNew.current\r\n ? DELETE_OVERLAY_DELETION_STATUS.NEW : DELETE_OVERLAY_DELETION_STATUS.EXISTING);\r\n\r\n const isTouched = () => hasValue(touched, formikKey);\r\n\r\n useEffect(() => {\r\n if (open !== existInTheForm) {\r\n onSectionClick(id, existInTheForm);\r\n }\r\n onAddOrRemoveSection(id, existInTheForm);\r\n }, [existInTheForm]);\r\n\r\n const onAction = (currentKey, action = DELETE_OVERLAY_ACTION.DELETE) => {\r\n let newSectionStatus = {};\r\n switch (action) {\r\n case DELETE_OVERLAY_ACTION.ADD:\r\n // User clicked on plus button to add new add on demand section\r\n newSectionStatus = {\r\n existInTheForm: true,\r\n markedForDeletion: false,\r\n deleteStatus: '',\r\n };\r\n if (setValues && defaultValues) {\r\n setValues({ ...values, [formikKey]: defaultValues });\r\n }\r\n break;\r\n case DELETE_OVERLAY_ACTION.OK:\r\n // User clicked on ok after marking for deletion\r\n // Valid only for newly added on demand section\r\n newSectionStatus = {\r\n existInTheForm: false,\r\n markedForDeletion: false,\r\n deleteStatus: '',\r\n };\r\n setFieldValue(currentKey, undefined);\r\n if (setValues && defaultValues) {\r\n const updatedValue = { ...values };\r\n delete updatedValue[formikKey];\r\n setValues(updatedValue);\r\n }\r\n break;\r\n case DELETE_OVERLAY_ACTION.UNDO:\r\n // User Clicked on cancel after marking for deletion\r\n newSectionStatus = {\r\n existInTheForm: true,\r\n markedForDeletion: false,\r\n deleteStatus: '',\r\n };\r\n if (isObjWithKeys(deletedValues)) {\r\n setValues({ ...values, [formikKey]: { ...deletedValues, markedForDelete: undefined } });\r\n setDeletedValues({});\r\n }\r\n if (isObjWithKeys(sectionTouched)) {\r\n setTouched(sectionTouched);\r\n setSectionTouched({});\r\n }\r\n fieldsCache.delete(formikKey);\r\n break;\r\n default:\r\n // User Clicked on remove button\r\n newSectionStatus = {\r\n existInTheForm: true,\r\n markedForDeletion: true,\r\n deleteStatus: getDeleteStatus(),\r\n };\r\n if (existInTheForm) {\r\n const updatedValues = { ...values };\r\n const updatedInitialValues = { ...initialValues };\r\n const updatedTouched = { ...touched };\r\n delete updatedValues[formikKey];\r\n delete updatedInitialValues[formikKey];\r\n delete updatedTouched[formikKey];\r\n resetForm(updatedInitialValues);\r\n setValues({ ...updatedValues, [formikKey]: { markedForDelete: true } });\r\n setTouched(updatedTouched);\r\n setSectionTouched(touched);\r\n fieldsCache.add(formikKey);\r\n setDeletedValues(values[formikKey]);\r\n }\r\n break;\r\n }\r\n setSectionStatus(newSectionStatus);\r\n };\r\n\r\n const onClick = () => {\r\n let action = DELETE_OVERLAY_ACTION.ADD;\r\n if (existInTheForm) {\r\n action = DELETE_OVERLAY_ACTION.DELETE;\r\n if (isNew.current && !isTouched()) {\r\n action = DELETE_OVERLAY_ACTION.OK;\r\n }\r\n }\r\n onAction(formikKey, action);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n ),\r\n },\r\n }\r\n : {})\r\n }\r\n open={open}\r\n classes={{\r\n sectionChildren: `${classes.sectionChildren} ${existInTheForm ? classes.borderSolid : ''} ${!isAnySectionFieldVisible ? classes.paddingLeft : ''}`,\r\n header: open ? classes.openHeader : classes.closedHeader,\r\n section: classes.section,\r\n children: classes.onDemandSection,\r\n ...onDemandClasses,\r\n }}\r\n onDemandSection\r\n controlled\r\n onClick={onSectionClick}\r\n {...props}\r\n >\r\n {children}\r\n {markedForDeletion && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nOnDemandSection.propTypes = {\r\n id: PropTypes.any,\r\n open: PropTypes.bool,\r\n onClick: PropTypes.func,\r\n children: PropTypes.node,\r\n values: PropTypes.object,\r\n touched: PropTypes.object,\r\n setFieldValue: PropTypes.func,\r\n isFormActive: PropTypes.bool,\r\n initialValues: PropTypes.object,\r\n fieldsCache: PropTypes.instanceOf(FieldsCache),\r\n formikKey: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\r\n onAddOrRemoveSection: PropTypes.func,\r\n defaultValues: PropTypes.object,\r\n setValues: PropTypes.func,\r\n resetForm: PropTypes.func,\r\n setTouched: PropTypes.func,\r\n validateForm: PropTypes.func,\r\n classes: PropTypes.object,\r\n isAnySectionFieldVisible: PropTypes.bool,\r\n};\r\n\r\nOnDemandSection.defaultProps = {\r\n touched: () => { },\r\n values: {},\r\n formikKey: [],\r\n setFieldValue: () => { },\r\n classes: {},\r\n};\r\n\r\nexport default OnDemandSection;\r\n","import { useEffect, useState } from 'react';\r\nimport Link from 'Commons/components/generic/link/components/Link';\r\nimport { Grid } from 'Generic/componentlibrary/components/Components';\r\nimport ThreeDotProgress from 'Generic/threedotprogress/components/ThreeDotProgress';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport localisable from 'Commons/config/strings/localisable';\r\n\r\n\r\nconst DocumentLink = (props) => {\r\n const {\r\n text, url, GridProps, intervalDuration,\r\n retryCount, ...linkProps\r\n } = props;\r\n const [isLinkReady, setIsLinkReady] = useState(false);\r\n const [retry, setRetry] = useState(retryCount);\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (retry === 0) clearInterval(interval);\r\n else {\r\n fetch(url).then((response) => {\r\n if (response.ok) {\r\n setIsLinkReady(true);\r\n clearInterval(interval);\r\n setRetry(0);\r\n }\r\n });\r\n setRetry(retry - 1);\r\n }\r\n }, intervalDuration);\r\n\r\n return () => clearInterval(interval);\r\n }, [retry]);\r\n\r\n return (\r\n \r\n {\r\n isLinkReady\r\n && (\r\n \r\n {text}\r\n \r\n )\r\n }\r\n { !isLinkReady\r\n && (retry !== 0\r\n ? \r\n : (\r\n \r\n {localisable.takingLongerThanExpected}\r\n \r\n ))\r\n }\r\n \r\n );\r\n};\r\n\r\nDocumentLink.propTypes = {\r\n GridProps: PropTypes.object,\r\n text: PropTypes.string,\r\n url: PropTypes.string,\r\n retryCount: PropTypes.number,\r\n intervalDuration: PropTypes.number,\r\n};\r\n\r\nDocumentLink.defaultProps = {\r\n retryCount: 5,\r\n intervalDuration: 5000,\r\n};\r\n\r\nexport default DocumentLink;\r\n","import PAYMENT_PERMISSION_KEYS from 'Commons/components/business/payment/config/PermissionKeys';\r\nimport hasPermission from 'Commons/helpers/utils/PermissionChecker';\r\n\r\nconst getPaymentPermissions = (permission = {}) => {\r\n const paymentPermissions = {};\r\n Object.keys(PAYMENT_PERMISSION_KEYS).forEach((key) => {\r\n paymentPermissions[PAYMENT_PERMISSION_KEYS[key]] = hasPermission(permission, PAYMENT_PERMISSION_KEYS[key]);\r\n });\r\n return paymentPermissions;\r\n};\r\n\r\nexport default getPaymentPermissions;\r\n","\r\nimport { useState } from 'react';\r\nimport Button from 'Generic/button/components/Button';\r\nimport TreeView from 'Generic/treeview/components/TreeView';\r\nimport FormTreeView from 'Generic/treeview/components/FormTreeView';\r\nimport { TextField } from 'Generic/textfield/components/TextField';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport useDidUpdateEffect from 'Commons/helpers/hooks/useDidUpdateEffect';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport { Grid, makeStyles, Loader } from 'Generic/componentlibrary/components/Components';\r\nimport { setObjectValueWithDefault, deepMerge } from 'Commons/helpers/utils/DataHelpers';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { deepCopy } from 'Commons/helpers/utils/DeepCopy';\r\nimport searchableTreeViewStyle from '../styles/SearchableTreeViewStyle';\r\nimport { TEXTFIELD_ADDON, CHECKBOX_PROPS } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(searchableTreeViewStyle, { name: 'SearchableTreeView' });\r\n\r\nconst SearchableTreeView = ({\r\n title,\r\n config,\r\n loading,\r\n GridProps,\r\n className,\r\n formProps,\r\n fullHeight,\r\n keyToClear,\r\n placeholder,\r\n onNodeSelect,\r\n TextFieldProps,\r\n showActionItem,\r\n useFormTreeView,\r\n ...props\r\n}) => {\r\n const TreeViewComponent = useFormTreeView ? FormTreeView : TreeView;\r\n const TreeViewProps = useFormTreeView ? { formProps, CheckboxProps: CHECKBOX_PROPS } : { onNodeSelect };\r\n const [treeViewItems, setTreeViewItems] = useState(config);\r\n const classes = useStyles();\r\n\r\n useDidUpdateEffect(() => {\r\n setTreeViewItems(config);\r\n }, [config]);\r\n\r\n const onTextChange = (_, inputText) => {\r\n // NOTE: Filter is supported only for flat trees (i.e only for parent nodes)\r\n const pattern = new RegExp(`^${inputText}`, 'i');\r\n const filteredTreeItems = config.filter(({ searchField }) => pattern.test(searchField));\r\n setTreeViewItems(filteredTreeItems);\r\n };\r\n\r\n const onClickClearSelection = () => {\r\n const { setValues, setFieldValue } = formProps;\r\n if (keyToClear) {\r\n setFieldValue(keyToClear, {});\r\n } else {\r\n setValues({});\r\n }\r\n };\r\n\r\n const onClickSelectAll = () => {\r\n const { setValues, values: formValues = {} } = formProps;\r\n const values = {};\r\n config.forEach(({ name }) => {\r\n setObjectValueWithDefault(values, name, true); // Setting value for nested names\r\n });\r\n setValues(deepCopy(deepMerge(formValues, values)));\r\n };\r\n\r\n return (\r\n \r\n {title && {title}}\r\n \r\n {\r\n showActionItem\r\n && (\r\n \r\n \r\n {localisable.clearSelection}\r\n \r\n \r\n {localisable.selectAll}\r\n \r\n \r\n )\r\n }\r\n {\r\n loading\r\n ? (\r\n \r\n \r\n \r\n )\r\n : (\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nSearchableTreeView.propTypes = {\r\n title: PropTypes.node,\r\n loading: PropTypes.bool,\r\n config: PropTypes.array,\r\n fullHeight: PropTypes.bool,\r\n className: PropTypes.string,\r\n GridProps: PropTypes.object,\r\n formProps: PropTypes.object,\r\n keyToClear: PropTypes.string,\r\n onNodeSelect: PropTypes.func,\r\n placeholder: PropTypes.string,\r\n showActionItem: PropTypes.bool,\r\n useFormTreeView: PropTypes.bool,\r\n TextFieldProps: PropTypes.object,\r\n};\r\n\r\nSearchableTreeView.defaultProps = {\r\n config: [],\r\n formProps: {},\r\n TextFieldProps: {},\r\n placeholder: localisable.search,\r\n};\r\n\r\nexport default React.memo(SearchableTreeView);\r\n","import LabelWithAddons from 'Generic/labelwithaddons/components/LabelWithAddons';\r\nimport localisable from 'Commons/config/strings/localisable';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\n\r\nconst AddMoreFilesButton = ({ title, onClick, classes }) => {\r\n const startIcon = useConstructor(() => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n {title || localisable.addMorePhotos}\r\n \r\n );\r\n};\r\n\r\n\r\nAddMoreFilesButton.propTypes = {\r\n title: PropTypes.string,\r\n onClick: PropTypes.func,\r\n classes: PropTypes.object,\r\n};\r\n\r\nexport default React.memo(AddMoreFilesButton);\r\n","const downloadFile = async (url, fileName) => {\r\n // different browsers handle download as per their working,\r\n // if a content type is recognized by the browser it may open it on the page instead of downloading.\r\n // Thus we are getting a blob and using that to download file\r\n try {\r\n const response = await fetch(url, {\r\n method: 'GET',\r\n responseType: 'blob', // Set the responseType to 'blob'\r\n });\r\n\r\n const blob = await response.blob();\r\n const fileUrl = URL.createObjectURL(blob);\r\n\r\n // Create an invisible link element\r\n const link = document.createElement('a');\r\n link.href = fileUrl;\r\n link.download = fileName;\r\n\r\n // Trigger a click on the link to initiate the download\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n // Remove the link from the DOM\r\n document.body.removeChild(link);\r\n } catch (error) {\r\n console.error('Error downloading file:', error);\r\n }\r\n};\r\n\r\nexport { downloadFile };\r\n","import React, { memo, useEffect, useMemo, useState } from 'react';\r\nimport { makeStyles, Grid } from 'Commons/components/generic/componentlibrary/components/Components';\r\nimport useConstructor from 'Commons/helpers/hooks/useConstructor';\r\nimport {\r\n compareDatesOrDatetime, createFormattedDate,\r\n getCurrentDate, getDate, getDay,\r\n getFirstDateOfMonth, getLastDateOfMonth,\r\n getMonth, calculateWeeksInMonth, getYear, convertToMomentObj,\r\n} from 'Commons/helpers/utils/DateTime';\r\nimport {\r\n CALENDAR_VIEW_TYPE, COMPARISON_OPERATION,\r\n DATE_FORMAT, EMPTY_FUNC, MAX_WEEKS_IN_MONTH,\r\n NUMBER_OF_DAYS_IN_WEEK,\r\n} from 'Commons/config/constants/Constants';\r\nimport { DATE_SEEK_DIRECTION } from 'External/containers/pendingTasks/components/reminders/config/Constants';\r\nimport { rearrangeWeekdays } from 'Commons/helpers/utils/CalendarHelper';\r\nimport calendarStyle from '../styles/CalendarStyle';\r\nimport Month from './Month';\r\nimport Header from './Header';\r\n\r\n\r\nconst useStyles = makeStyles(calendarStyle, { name: 'Calendar' });\r\n\r\nconst getCalendarData = (calculateValue, calendarWeekStartingDay = 0, showFixedNumberOfWeeks = false) => {\r\n const year = getYear(calculateValue);\r\n const month = getMonth(calculateValue);\r\n const firstDayOfMonth = getFirstDateOfMonth(year, month, false);\r\n const lastDayOfMonth = getLastDateOfMonth(year, month, false);\r\n\r\n const numberOfDays = lastDayOfMonth.date();\r\n const startingDay = firstDayOfMonth.day(); // 0: Sunday, 1: Monday, ..., 6: Saturday\r\n const prevMonthLastDay = getLastDateOfMonth(year, month - 1 >= 0 ? month - 1 : 11, false).date();\r\n const numberOfWeeksInMonth = calculateWeeksInMonth(year, month, calendarWeekStartingDay);\r\n const numberOfWeeksToDisplay = showFixedNumberOfWeeks ? MAX_WEEKS_IN_MONTH : numberOfWeeksInMonth;\r\n\r\n const calendarData = { year, month, numberOfDays, startingDay, prevMonthLastDay, numberOfWeeksInMonth, numberOfWeeksToDisplay };\r\n return calendarData;\r\n};\r\n\r\nconst Calendar = ({\r\n showFixedNumberOfWeeks, calendarWeekStartingDay,\r\n viewTypeList,\r\n renderInRows, maxVisibleContent, data = {},\r\n datePickerDateFormat, createButtonText, onCreateButtonClick,\r\n getDisplayText, onChangeSelectedViewType,\r\n onDateChange: onpropDateChange, showHeader,\r\n trackValue, value, onClickMoreItems,\r\n shouldTruncateTitle, truncateTitleLength,\r\n ...restProps\r\n}) => {\r\n const classes = useStyles({ renderInRows });\r\n const WEEKDAYS_LIST = useConstructor(() => rearrangeWeekdays(calendarWeekStartingDay));\r\n const currentDate = useMemo(() => getCurrentDate(false), []);\r\n\r\n const [selectedView, setSelectedView] = useState(CALENDAR_VIEW_TYPE.Month.value);\r\n const [displayedDate, setDisplayedDate] = useState(trackValue ? getDate(value, false) : currentDate); // to store the date in the moment.js format, initialized with the 'currentDate'\r\n const [calenderDataValue, setCalenderDataValue] = useState(() => getCalendarData(trackValue ? displayedDate : value, calendarWeekStartingDay, showFixedNumberOfWeeks)); // to store the date in the moment.js format, initialized with the 'currentDate'\r\n\r\n useEffect(() => {\r\n const calculateValue = trackValue ? displayedDate : value;\r\n setCalenderDataValue(getCalendarData(calculateValue, calendarWeekStartingDay, showFixedNumberOfWeeks));\r\n }, [displayedDate, value]);\r\n\r\n const handleViewChange = (_, viewTypeValue) => {\r\n if (trackValue) {\r\n setSelectedView(viewTypeValue);\r\n }\r\n onChangeSelectedViewType(viewTypeValue);\r\n // Reset displayed date on view change for 'Week' and 'Day'\r\n const selectedDateValue = trackValue ? displayedDate : value;\r\n const newDate = createFormattedDate(getYear(selectedDateValue), getMonth(selectedDateValue), getDay(selectedDateValue), false);\r\n if (trackValue) {\r\n setDisplayedDate(newDate);\r\n }\r\n onpropDateChange(newDate);\r\n };\r\n\r\n const onDateSeek = (seekDirection) => {\r\n const increment = seekDirection === DATE_SEEK_DIRECTION.FORWARD ? 1 : -1;\r\n let nextDate = displayedDate;\r\n if (selectedView === CALENDAR_VIEW_TYPE.Month.value) {\r\n nextDate = displayedDate.clone().add(increment, 'months');\r\n } else if (selectedView === CALENDAR_VIEW_TYPE.Week.value) {\r\n nextDate = displayedDate.clone().add(increment * NUMBER_OF_DAYS_IN_WEEK, 'days');\r\n } else if (selectedView === CALENDAR_VIEW_TYPE.Day.value) {\r\n nextDate = displayedDate.clone().add(increment, 'days');\r\n }\r\n if (trackValue) {\r\n setDisplayedDate(nextDate);\r\n }\r\n onpropDateChange(nextDate);\r\n };\r\n\r\n const onDateChange = (date) => {\r\n if (compareDatesOrDatetime(displayedDate, date, COMPARISON_OPERATION.NE)) {\r\n if (trackValue) {\r\n setDisplayedDate(convertToMomentObj(date));\r\n }\r\n onpropDateChange(convertToMomentObj(date));\r\n }\r\n };\r\n\r\n const renderCalendar = () => {\r\n const {\r\n year, month, numberOfDays,\r\n startingDay, prevMonthLastDay,\r\n numberOfWeeksToDisplay,\r\n } = calenderDataValue;\r\n if (selectedView === CALENDAR_VIEW_TYPE.Month.value) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n return (\r\n \r\n {showHeader && (\r\n \r\n )\r\n }\r\n \r\n {renderCalendar()}\r\n \r\n \r\n );\r\n};\r\n\r\nCalendar.propTypes = {\r\n showFixedNumberOfWeeks: PropTypes.bool,\r\n calendarWeekStartingDay: PropTypes.number,\r\n renderInRows: PropTypes.bool,\r\n showHeader: PropTypes.bool,\r\n maxVisibleContent: PropTypes.number,\r\n datePickerDateFormat: PropTypes.string,\r\n createButtonText: PropTypes.string,\r\n onCreateButtonClick: PropTypes.func,\r\n viewTypeList: PropTypes.array,\r\n data: PropTypes.object,\r\n getDisplayText: PropTypes.func,\r\n trackValue: PropTypes.bool,\r\n onClickMoreItems: PropTypes.func,\r\n value: PropTypes.string,\r\n onChangeSelectedViewType: PropTypes.func,\r\n onDateChange: PropTypes.func,\r\n shouldTruncateTitle: PropTypes.bool,\r\n truncateTitleLength: PropTypes.number,\r\n};\r\n\r\nCalendar.defaultProps = {\r\n showFixedNumberOfWeeks: false,\r\n calendarWeekStartingDay: 0, // Sunday == 0, Monday == 1\r\n renderInRows: false,\r\n maxVisibleContent: 1, // max data to render each day,\r\n datePickerDateFormat: DATE_FORMAT,\r\n onCreateButtonClick: EMPTY_FUNC,\r\n viewTypeList: Object.values(CALENDAR_VIEW_TYPE),\r\n showHeader: false,\r\n trackValue: true,\r\n onClickMoreItems: EMPTY_FUNC,\r\n onChangeSelectedViewType: EMPTY_FUNC,\r\n onDateChange: EMPTY_FUNC,\r\n shouldTruncateTitle: false,\r\n truncateTitleLength: 10,\r\n};\r\n\r\nexport default memo(Calendar);\r\n","import { EMPTY_FUNC } from 'Commons/config/constants/Constants';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { Grid, makeStyles } from 'Generic/componentlibrary/components/Components';\r\nimport Icon from 'Generic/icon/components/Icon';\r\nimport Tooltip from 'Generic/tooltip/components/Tooltip';\r\nimport { useCallback } from 'react';\r\nimport sideIconStyles from '../styles/SideIconStyles';\r\n\r\nconst useStyles = makeStyles(sideIconStyles, { name: 'SideIcon' });\r\n\r\nconst SideIcon = ({\r\n open,\r\n icon,\r\n tooltip,\r\n onClick,\r\n children,\r\n className,\r\n disabled,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const renderIcon = useCallback(() => {\r\n const iconComponent = (\r\n \r\n );\r\n return disabled\r\n ? iconComponent\r\n : (\r\n \r\n {iconComponent}\r\n \r\n );\r\n }, [icon, disabled]);\r\n\r\n return (\r\n \r\n { icon && renderIcon() }\r\n \r\n );\r\n};\r\n\r\nSideIcon.propTypes = {\r\n open: PropTypes.bool,\r\n icon: PropTypes.string,\r\n onClick: PropTypes.func,\r\n tooltip: PropTypes.node,\r\n children: PropTypes.node,\r\n disabled: PropTypes.bool,\r\n className: PropTypes.string,\r\n};\r\n\r\nSideIcon.defaultProps = {\r\n open: false,\r\n disabled: false,\r\n onClick: EMPTY_FUNC,\r\n};\r\n\r\nexport default React.memo(SideIcon);\r\n","module.exports = \"data:image/svg+xml;base64,DQo8c3ZnIHdpZHRoPSIxMTIiIGhlaWdodD0iMTEyIiB2aWV3Qm94PSIwIDAgMTEyIDExMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxwYXRoIGQ9Ik05OS4zMTc3IDU0LjVMOTQgNDkuMTE1TDk2LjA5MzEgNDdMMTA1IDU2TDk2LjA5MzEgNjVMOTQgNjIuODg1TDk5LjMxNzcgNTcuNUg3VjU0LjVIOTkuMzE3N1oiIGZpbGw9IiM0RDRENEQiLz4NCjwvc3ZnPg0K\"","import {\r\n Stepper as MUIStepper, Step, StepLabel,\r\n makeStyles, Grid, StepContent,\r\n} from 'Generic/componentlibrary/components/Components';\r\nimport Typography from 'Generic/typography/components/Typography';\r\nimport Page from 'Commons/components/business/page/components/Page';\r\nimport { clsx } from 'Commons/helpers/utils/clsx';\r\nimport { memo, useState } from 'react';\r\nimport { EMPTY_FUNC, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport { isPrimitiveType } from 'Commons/helpers/api/Formatter';\r\nimport stepperStyle from '../styles/StepperStyle';\r\nimport { STEPPER_ORIENTATION } from '../config/Constants';\r\n\r\nconst useStyles = makeStyles(stepperStyle, { name: 'Stepper' });\r\n\r\n// TODO: Make it more generic and config driven\r\nconst Stepper = ({\r\n steps, activeStep, onStepChange, stepCompletionConfig, fullHeight, ContainerProps, detachStepperBody,\r\n StepperProps, StepProps, StepLabelProps, StepBodyProps, unmountStepContentOnExit, trackValue,\r\n updateStepCompletionConfig, ...props\r\n}) => {\r\n const classes = useStyles(props);\r\n const [currentStep, setCurrentStep] = useState(activeStep || 0);\r\n\r\n const onClickStepLabel = (index) => {\r\n if (trackValue) setCurrentStep(index);\r\n if (onStepChange) onStepChange(index);\r\n };\r\n\r\n const onNextStep = () => {\r\n const stepValue = trackValue ? currentStep : activeStep;\r\n if (stepValue < steps.length) {\r\n onClickStepLabel(stepValue + 1);\r\n updateStepCompletionConfig(stepValue + 1);\r\n }\r\n };\r\n\r\n const onBack = () => {\r\n const stepValue = trackValue ? currentStep : activeStep;\r\n if (stepValue > 0) onClickStepLabel(stepValue - 1);\r\n };\r\n\r\n const renderStepBody = () => steps.map(({ label, component: Component = Grid } = {}, index) => {\r\n const { classes: ignore, ...restProps } = props;\r\n return (\r\n !unmountStepContentOnExit || (activeStep === index)\r\n ? (\r\n \r\n \r\n \r\n )\r\n : null\r\n );\r\n });\r\n\r\n const onClickStepIcon = (index) => {\r\n const {\r\n [index]: { isCompleted: isTargetStepCompleted = false } = {},\r\n [index - 1]: { isCompleted: isPrevStepCompleted = false } = {},\r\n [activeStep]: { isCompleted: isActiveStepCompleted = false } = {},\r\n } = stepCompletionConfig;\r\n if (isTargetStepCompleted\r\n || (index > activeStep && isActiveStepCompleted && isPrevStepCompleted)\r\n || (index < activeStep)) {\r\n onClickStepLabel(index);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n steps.map(({ label } = {}, index) => {\r\n const { [index]: { isCompleted = false } = {} } = stepCompletionConfig;\r\n return (\r\n onClickStepIcon(index)}\r\n {...StepProps}\r\n >\r\n \r\n {\r\n isPrimitiveType(label)\r\n ? (\r\n \r\n {label}\r\n \r\n )\r\n : { label }\r\n }\r\n\r\n \r\n {\r\n !detachStepperBody\r\n && (\r\n \r\n {renderStepBody()}\r\n \r\n )\r\n }\r\n \r\n );\r\n })\r\n }\r\n \r\n \r\n {\r\n detachStepperBody\r\n && (\r\n \r\n {renderStepBody()}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nStepper.propTypes = {\r\n classes: PropTypes.object,\r\n fullHeight: PropTypes.bool,\r\n trackValue: PropTypes.bool,\r\n onStepChange: PropTypes.func,\r\n StepBodyProps: PropTypes.object,\r\n ContainerProps: PropTypes.object,\r\n detachStepperBody: PropTypes.bool,\r\n steps: PropTypes.array.isRequired,\r\n stepCompletionConfig: PropTypes.object,\r\n activeStep: PropTypes.number.isRequired,\r\n unmountStepContentOnExit: PropTypes.bool,\r\n updateStepCompletionConfig: PropTypes.func,\r\n StepperProps: PropTypes.shape({\r\n classes: PropTypes.object,\r\n nonLinear: PropTypes.bool,\r\n connector: PropTypes.element,\r\n component: PropTypes.elementType,\r\n alternativeLabel: PropTypes.bool,\r\n orientation: PropTypes.oneOf([STEPPER_ORIENTATION.HORIZONTAL, STEPPER_ORIENTATION.VERTICAL]),\r\n }),\r\n StepProps: PropTypes.shape({\r\n last: PropTypes.bool,\r\n index: PropTypes.bool,\r\n active: PropTypes.bool,\r\n expanded: PropTypes.bool,\r\n disabled: PropTypes.bool,\r\n completed: PropTypes.bool,\r\n classes: PropTypes.object,\r\n component: PropTypes.elementType,\r\n }),\r\n StepLabelProps: PropTypes.shape({\r\n icon: PropTypes.node,\r\n error: PropTypes.bool,\r\n optional: PropTypes.node,\r\n classes: PropTypes.object,\r\n StepIconProps: PropTypes.object,\r\n stepIconComponent: PropTypes.elementType,\r\n slotProps: PropTypes.shape({ label: PropTypes.object }),\r\n componentsProps: PropTypes.shape({ label: PropTypes.object }),\r\n }),\r\n};\r\n\r\nStepper.defaultProps = {\r\n fullHeight: false,\r\n trackValue: false,\r\n StepProps: EMPTY_OBJECT,\r\n detachStepperBody: false,\r\n StepperProps: EMPTY_OBJECT,\r\n StepBodyProps: EMPTY_OBJECT,\r\n StepLabelProps: EMPTY_OBJECT,\r\n ContainerProps: EMPTY_OBJECT,\r\n unmountStepContentOnExit: false,\r\n stepCompletionConfig: EMPTY_OBJECT,\r\n updateStepCompletionConfig: EMPTY_FUNC,\r\n};\r\n\r\nexport default memo(Stepper);\r\n","import localisable from 'Commons/config/strings/localisable';\r\nimport { withStyles } from\r\n'Commons/components/generic/componentlibrary/components/Components';\r\nimport BaseComponent from 'Commons/components/business/basecomponent/components/BaseComponent';\r\nimport STATUS from 'Commons/config/constants/StoreKeyStatus';\r\nimport { TABLE_ROW_HEIGHT_VARIANT, SOURCE, DASHBOARD_TYPE, EMPTY_OBJECT } from 'Commons/config/constants/Constants';\r\nimport buildUrl from 'Commons/helpers/utils/UrlBuilder';\r\nimport getName from 'Commons/helpers/utils/NameHelper';\r\nimport getUserColumns from '../config/UserListConfig';\r\nimport userListFormattersStyle from '../style/UserListFormatterStyle';\r\nimport { USER_DEFAULT_SORT, USER_DEFAULT_FILTER } from '../config/Constants';\r\n\r\nclass UserList extends BaseComponent {\r\n constructor(props) {\r\n super(props);\r\n const { withProvider } = window;\r\n this.SmartList = withProvider('SmartList', this.props);\r\n }\r\n\r\n getUserListConfig = () => {\r\n const { classes, match: { params: { accountId } } } = this.props;\r\n return {\r\n source: SOURCE.user.value,\r\n store: 'user',\r\n columns: getUserColumns(classes),\r\n createUrl: buildUrl('userCreate', EMPTY_OBJECT, DASHBOARD_TYPE.SETTINGS, accountId),\r\n name: localisable.userDisplayName,\r\n emptyBodyText: localisable.userListEmpty,\r\n tableProps: {\r\n headerRowHeight: TABLE_ROW_HEIGHT_VARIANT.HEADER_ONE_LINER,\r\n rowHeight: 48,\r\n },\r\n tablePaperProps: { hideSearch: true, pageTitle: localisable.users },\r\n getCustomData: (props) => {\r\n const { user: { data: { data: userData = [] } = {}, status = STATUS.UNLOADED } = {} } = props;\r\n if (status !== this.prevStatus && (status === STATUS.LOADED || status === STATUS.UPDATED)) {\r\n this.userData = userData.map((user) => {\r\n const { firstName, lastName } = user;\r\n return { ...user, label: getName({ lastName, firstName }) };\r\n });\r\n }\r\n this.prevStatus = status;\r\n return this.userData;\r\n },\r\n defaultSort: USER_DEFAULT_SORT,\r\n defaultFilters: USER_DEFAULT_FILTER,\r\n filtersAndSortsProps: { hideSearch: true },\r\n showFilterAndSorts: true,\r\n useAccountContext: true,\r\n };\r\n }\r\n\r\n render() {\r\n const { routeList, ...props } = this.props;\r\n const { SmartList } = this;\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nUserList.propTypes = {\r\n match: PropTypes.object,\r\n routeList: PropTypes.object,\r\n};\r\n\r\nexport default withStyles(userListFormattersStyle)(UserList);\r\n","const enums = { fieldState: ['view', 'edit', 'reset'] };\r\n\r\nexport default enums;\r\n","import { createEnumMap } from 'Commons/helpers/utils/Formatter';\r\nimport enums from './enums';\r\n\r\nconst FIELD_STATE = createEnumMap(enums.fieldState);\r\n\r\nexport default FIELD_STATE;\r\n\r\nexport { FIELD_STATE };\r\n"],"sourceRoot":""}