{"version":3,"sources":["common/components/Export/logo.png","i18n.ts","common/enums/laguages.ts","common/services/i18n/localizations/base-language.ts","common/services/i18n/localizations/fr-BE.ts","common/services/i18n/localizations/de-DE.ts","common/services/i18n/localizations/da-DK.ts","common/services/i18n/localizations/it-CH.ts","common/services/i18n/localizations/nl-BE.ts","common/services/i18n/localizations/pl-PL.ts","common/services/i18n/localizations/sk-SK.ts","common/services/i18n/localizations/sv-SE.ts","common/services/i18n/localizations/at-DE.ts","common/services/i18n/localizations/be-FR.ts","common/services/i18n/localizations/be-NL.ts","common/services/i18n/localizations/sz-FR.ts","common/services/i18n/localizations/sz-DE.ts","common/services/i18n/localizations/nb-NO.ts","common/constants/countries.ts","common/services/i18n/components/LocalizedRouter.tsx","common/services/i18n/components/LocalizedSwitch.tsx","common/services/i18n/index.ts","common/styles/colors.ts","common/services/i18n/components/LanguageSwitcher.style.ts","context/context.ts","common/constants/routes.ts","context/interval.ts","common/services/i18n/components/LanguageSwitcher.tsx","common/services/i18n/utils/routeLocalization.ts","components/Header/components/MyAccount.style.ts","components/Header/components/MyAccount.tsx","components/Header/Header.style.ts","components/Header/Header.tsx","components/Footer/Footer.style.ts","components/Footer/Footer.tsx","data-services/HTTPService.ts","data-services/Auth/AuthMapper.ts","data-services/Auth/AuthService.ts","components/Auth/Login/Login.style.ts","common/styles/buttonStyles.ts","common/components/ShowPassword.tsx","components/Auth/Login/Login.tsx","components/Home/Home.style.ts","components/Home/Home.tsx","common/utils/validators.ts","common/components/ChevronDown.tsx","common/components/DropDownSelect.style.ts","common/components/DropDownSelect.tsx","common/styles/typography.ts","components/Auth/Register/Register.style.ts","LoadingSpinner.tsx","components/Auth/Register/Register.tsx","components/NewAccount/CreateNewAccount.style.ts","components/NewAccount/CreateNewAccount.tsx","components/MyAccount/SaveChanges.style.ts","components/MyAccount/SaveChanges.tsx","components/MyAccount/StatusModal.style.ts","components/MyAccount/StatusModal.tsx","components/MyAccount/ChangePassword.style.ts","components/MyAccount/ChangePassword.tsx","components/MyAccount/StatusChangePassword.style.ts","components/MyAccount/StatusChangePassword.tsx","components/MyAccount/MyAccount.style.ts","components/MyAccount/ChangeEmail.style.ts","components/MyAccount/ChangeEmail.tsx","components/MyAccount/MyAccount.tsx","components/Home/HomeLogedIn.style.ts","components/Home/HomeLogedIn.tsx","components/AboutTool/About.style.ts","components/AboutTool/About.tsx","common/components/UncheckedBox.tsx","common/components/DeleteModal.style.ts","common/components/DeleteModal.tsx","common/components/Check.tsx","common/components/Actions/CheckAll.style.ts","common/components/Actions/CheckAll.tsx","common/components/ExportModal.style.ts","common/components/ExportModal.tsx","common/components/Actions/Export.style.ts","common/components/Actions/Export.tsx","common/components/Actions/Delete.style.ts","common/components/Actions/Delete.tsx","common/components/Actions/Sort.style.ts","common/components/Actions/Sort.tsx","components/Projects/Components/Actions.style.ts","common/components/NothingSelectedModal.style.ts","common/components/NothingSelectedModal.tsx","common/styles/nothingIsSelectedModalGeneralStyle.ts","components/Projects/Components/Actions.tsx","data-services/Projects/ProjectMapper.ts","data-services/Projects/ProjectsService.ts","components/Projects/Components/ProjectHeader.style.ts","components/Projects/Components/ProjectHeader.tsx","common/components/CheckedBoldBox.tsx","components/Projects/ProjectsList.style.ts","common/components/Export/getDetectorTypeFormatted.ts","common/components/SensorData/SensorDataEnums/SensorDataEnum.ts","common/components/SensorData/SensorData.ts","common/components/SensorData/GetSensorDescription.ts","common/components/Export/GetDefaultDescription.ts","common/components/Export/Helvetica-Font.ts","common/components/Export/Helvetica-Font-Bold.ts","common/components/Export/ExportLightSceneHelper.ts","common/components/Export/ExportPDF.ts","common/components/Export/ExportExcel.ts","components/Projects/ProjectsList.tsx","common/components/ChevronUp.tsx","common/components/Pencil.tsx","components/Projects/Components/SaveChanges.style.ts","components/Projects/Components/SaveChanges.tsx","data-services/common/SensorSettingsService.ts","common/components/SensorData/GetProjectDetails.ts","common/components/SensorDataComponent/SensorDataComponent.style.ts","common/components/SensorDataComponent/SensorDataComponent.tsx","components/Projects/Components/ProjectDetails.style.ts","data-services/Templates/RawDetectorJsonSource.ts","data-services/Templates/TemplateMapper.ts","components/Projects/Components/ProjectDetails.tsx","components/Projects/Project.style.ts","components/Projects/Project.tsx","components/Detector/components/AddTemplate.style.ts","components/Detector/components/AddTemplate.tsx","components/Detector/components/DetectorDetails.style.ts","components/Detector/components/DetectorDetails.tsx","data-services/Detectors/DetectorsService.ts","data-services/Detectors/DetectorMapper.ts","common/components/TextMask/TextMask.tsx","components/Detector/components/DetectorsHeader/DetectorsHeader.style.ts","components/Detector/components/DetectorsHeader/DetectorsHeader.tsx","components/Detector/components/DetectorsNoSearch/DetectorsNoSearch.style.ts","components/Detector/components/DetectorsNoSearch/DetectorsNoSearch.tsx","components/Detector/Detector.style.ts","components/Detector/Detector.tsx","common/components/UncheckedGreyBox.tsx","components/Templates/components/Filter/FilterTemplates.style.ts","components/Templates/components/Filter/FilterTemplates.tsx","common/components/Actions/Send.style.ts","common/components/Actions/Send.tsx","components/Templates/components/MyTemplates/MyTemplateDetails.style.ts","components/Templates/components/MyTemplates/MyTemplateDetails.tsx","data-services/Templates/TemplatesService.ts","common/components/SendModal.style.ts","common/components/SendModal.tsx","data-services/common/SendService.ts","common/components/StatusModal.style.ts","common/components/StatusModal.tsx","components/Templates/components/SaveChanges.style.ts","components/Templates/components/SaveChanges.tsx","components/Templates/components/MyTemplates/MyTemplates.style.ts","components/Templates/components/MyTemplates/MyTemplates.tsx","components/Templates/components/ReceivedTemplates/ReceivedTemplatesDetails.style.ts","components/Templates/components/ReceivedTemplates/ReceivedTemplatesDetails.tsx","components/Templates/components/ReceivedTemplates/ReceivedTemplates.style.ts","components/Templates/components/ReceivedTemplates/ReceivedTemplates.tsx","components/Templates/components/HeaderTemplate/TemplateHeader.style.ts","components/Templates/components/HeaderTemplate/TemplateHeader.tsx","components/Templates/Templates.style.ts","components/Templates/Templates.tsx","components/Auth/ResetPassword/ForgotPassword.style.ts","components/Auth/ResetPassword/ForgotPassword.tsx","common/components/Auth/ResponseStatus.style.ts","common/components/Auth/ResponseStatus.tsx","components/Auth/ResetPassword/ResetPassword.style.ts","components/Auth/ResetPassword/ResetPassword.tsx","components/Auth/PrivateRoute.tsx","components/Auth/LoggedOutRoute.tsx","components/NewAccount/RegisterStatus.style.ts","components/NewAccount/RegisterStatus.tsx","components/NewAccount/AccountActivated.style.ts","components/NewAccount/AccountActivated.tsx","components/NewAccount/ActivationFailed.style.ts","components/NewAccount/ActivationFailed.tsx","components/NewAccount/ActivationLinkExpired.style.ts","components/NewAccount/ActivationLinkExpired.tsx","components/Auth/ResetPassword/EmailSentConfirmation.style.ts","components/Auth/ResetPassword/EmailSentConfirmation.tsx","App.style.ts","components/MyAccount/ChangeEmailStatus.style.ts","components/MyAccount/ChangeEmailStatus.tsx","components/InstallerView/InstallerView.style.ts","components/InstallerView/InstallerIcon.tsx","components/InstallerView/InstallerCertifiedIcon.tsx","components/InstallerView/InstallerView.tsx","data-services/ImpersonateUserData/ImpersonateUserDataService.ts","components/InstallerView/InstallerViewLoggedIn.tsx","components/MyAccount/ChangeEmailConfirmation.style.ts","components/MyAccount/ChangeEmailConfirmation.tsx","data-services/ErrorHandler.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["module","exports","i18n","use","Backend","initReactI18next","init","debug","lng","fallbackLng","whitelist","interpolation","escapeValue","returnEmptyString","returnNull","AppLanguage","Belgium_NL","Belgium_FR","Danish","German","French","English","Netherlands","Norway","Austria","Poland","Switzerland_DE","Slovakia","Switzerland_FR","Sweden","Switzerland_IT","LangObjectName","AppCountries","hasThisCountryWithThisLanguageSpecialLocaleCode","country","language","en","home","about","projectsMy","detector","templates","register","registerConfirmation","accountActivated","activationFailed","activationLinkExpired","404","changeEmailConfirmation","myAccount","forgotPassword","resetEmailConfirmation","resetPassword","changeEmail","installerView","installerViewLoggedIn","project","customerServicesLink","termsAndConditionsLink","privacyPolicyLink","fr_BE","de_DE","da_DK","it_CH","nl_BE","pl_PL","sk_SK","sv_SE","at_DE","be_FR","be_NL","sz_FR","sz_DE","nb_NO","languageList","name","key","languageId","localeCode","localCodeGoogle","languageCountryList","LocalizedRouter","_ref","children","RouterComponent","appStrings","React","createElement","Route","path","_ref2","location","currentPath","window","pathname","cPathEnding","localStorage","getItem","setItem","currentPathEnding","split","length","pathNameParts","pathNameLanguage","currentLanguage","_languageList$find","toLowerCase","Redirect","to","join","find","l","langObject","includes","IntlProvider","locale","messages","LocalizedSwitch","formatMessage","useIntl","Switch","Children","map","child","isValidElement","cloneElement","props","localizeRoutePath","id","localizations","useStyles","makeStyles","theme","createStyles","select","minWidth","height","background","colors","borderRadius","color","fontSize","fontFamily","lineHeight","textTransform","padding","display","justifyContent","chevronDown","width","dropdown","top","spacing","boxShadow","dropdownItem","backgroundColor","cursor","textDecoration","navlinkDropdownItem","AuthContext","createContext","useAuth","useContext","AppRoute","Map","Home","About","ProjectsMy","Project","Detector","Templates","Register","RegisterConfirmation","ResetEmailConfirmation","AccountActivated","ActivationLinkExpired","ChangeEmailConfirmation","MyAccount","ForgotPassword","ResetPassword","ChangeEmailStatus","InstallerView","InstallerViewLoggedIn","Page404","ChangePasswordSuccess","useInterval","callback","delay","savedCallback","useRef","useEffect","current","interval","setInterval","clearInterval","LanguageSwitcher","classes","useLocation","authStore","setCurrentLanguage","useState","getCurrentLanguageCode","anchorEl","setAnchorEl","query","URLSearchParams","search","handleClose","open","Boolean","undefined","Fragment","Button","aria-describedby","className","onClick","event","currentTarget","InputAdornment","position","src","alt","Popover","onClose","anchorOrigin","vertical","horizontal","transformOrigin","getContentAnchorEl","Object","keys","lang","NavLink","code","changeLanguage","updateCurrentLanguageCode","getMatchingRoute","route","routeKey","matchingRoute","indexOf","splitRouteBySlash","projectId","toString","getLocalizedRoute","formater","userName","paddingLeft","fontWeight","letterSpacing","textAlign","myAccountName","breakpoints","down","_authStore$userHistor","history","useHistory","t","useTranslation","hideInstallerBar","isLoggedIn","push","Typography","component","userHistory","redirectToMyAccount","logout","setAuthTokens","removeItems","setIsLogged","setIsSuperUser","setImpersonatedUserHistory","setImpersonatedUserEmail","headerContainer","paddingRight","minHeight","wrapContainer","up","logo","alignSelf","imageRendering","paddingTop","flexGrow","menu","flexWrap","align","alignStart","items","borderBottom","overflow","paddingBottom","marginLeft","alignItems","languages","marginTop","marginBottom","underline","badge","right","hideInstaller","disableInstaller","float","marginRight","menuButton","drawerPaper","drawerHeader","mixins","toolbar","drawerMenu","Header","_localStorage$getItem","globalAccess","hasAccessToPlatform","seeInstallerBar","setSeeInstallerBar","setUserHistory","hiddenInstaller","setHiddenInstaller","toImpersonateUserEmail","impersonatedUserEmail","impersonatedUserFullname","setImpersonatedUserFullname","setOpen","useTheme","isSM","useMediaQuery","impersonatedUserHist","getImpersonatedUserHistory","localizeRouteKey","hideInstallerView","reload","AppBar","Toolbar","Grid","container","direction","item","Link","MenuItem","disableGutters","selected","activeClassName","isActive","countReceivedTemplates","Badge","IconButton","edge","aria-label","MenuIcon","style","installer","verticalAlign","deactivateInstallerView","SwipeableDrawer","anchor","onOpen","paper","List","CloseIcon","Divider","ListItem","button","ListItemText","primary","bottom","footerContainer","mixBlendMode","footerTitle","maxWidth","footerItem","whiteSpace","footerHiddenItem","Footer","href","getCustomerServicesLink","langCode","target","rel","getTermsAndConditionsLink","getPrivacyPolicyLink","axios","defaults","baseURL","process","interceptors","request","existingToken","headers","error","Promise","reject","httpService","constructor","get","url","options","post","body","put","delete","sendMessage","method","arguments","extraOptions","this","Error","mapFromLoginResponseToIUserModel","data","email","firstName","lastName","jwt","expiresAt","isSuperUser","baseUrl","resendRegisterEmail","async","status","message","inputAlign","borderLeft","formContainer","margin","verticalInputSpacing","lastTextfield","inputLabel","textInput","border","labelPassword","verticalSpacing","errorBorder","mainTitle","common","common14px","commonWithBorder","lightButtonWithBorder","useButtonStyles","primaryButton","primaryButtonLargeWidth","primaryButton14px","inactiveButton","secondaryButton","lightButton","lightButtonLargeWidth","lightButtonNoBorder","lightButtonWithBorderLargeWidth","ShowPassword","showPassword","Login","buttonClasses","setShowPassword","setEmail","password","setPassword","isAccountActivated","setIsAccountActivated","isloginDataValid","setIsLoginDataValid","maintenancePage","isLoginFormValid","onSubmit","e","preventDefault","_i18n$language","browserLanguage","response","access","value","user","statusCode","login","localeCodeToSet","setUser","persistUser","setCurrentUserId","InputLabel","TextField","type","variant","fullWidth","focused","onChange","textDecorationSkipInk","InputProps","endAdornment","handleClickShowPassword","Box","textDecorationLine","resendData","encodeURIComponent","redirectToRegister","disabled","homeContainer","flexDirection","alignContent","descriptionContainer","descriptionCard","fade","alignCenter","title","description","loginContainer","buttonSize","Card","CardMedia","image","CardContent","handleClick","RegExp","test","icon","pointerEvents","ChevronDown","borderWidth","dropdownList","maxHeight","overflowY","popupSelect","DropDownSelect","dropdownType","selectOptions","selectedOption","handleChangeSelect","FormControl","Select","IconComponent","MenuProps","index","commonHeaderThree","commonHeaderTwo","commonParagraph","commonParagraph14px","paragraph14pxHumanist","mainHeader","primaryHeader","useTypographyStyles","root","headerThreeBlack","wordBreak","headerTwoBlack","headerThreeLight","lineNoWrap","paragraphPrimary","paragraphBlack","paragraphBlack14px","paragraphLight","tabTitles","modalLabel","modalLabelCursorDefault","modalContent","modalContentCursorDefault","registerWrapper","registerItem","opacity","required","spaceItems","recaptcha","privacyText","LoadingSpinner","_languagesAndCountrie","recaptchaRef","createRef","setFirstName","setLastName","reCaptchaValue","setReCaptchaValue","isFirstNameValid","setIsFirstNameValid","isLastNameValid","setIsLastNameValid","isEmailValid","setIsEmailValid","isPasswordValid","setIsPasswordValid","isEmailInUse","setIsEmailInUse","isFormValid","setIsFormValid","isRecaptcha","setIsRecaptcha","recaptchaKey","setRecaptchaKey","newLocaleCode","setNewLocaleCode","isSubmitting","setIsSubmitting","getLanguageCountryList","languagesAndCountries","languageCountry","c","selectedLanguageModel","setSelectedLanguageModel","_languagesAndCountrie2","newLanguageModel","handleRecaptcha","Modal","newUser","reCaptcha","redirectToConfirmation","_recaptchaRef$current2","reset","placeholder","newName","charAt","toUpperCase","slice","newLastName","newEmail","validators","newPassword","countryCode","replaceState","_authStore$getCurrent","newAccountWrapper","newAccountItem","registerContainer","CreateNewAccount","modalParagraph","buttonsContainer","lightButtonColor","SaveChanges","typographyClasses","saveChanges","closeModal","cancel","buttonContainer","contentWrapper","content","StatusModal","textContainer","form","ChangePassword","oldPassword","setOldPassword","setNewPassword","showOldPassword","setShowOldPassword","showNewPassword","setShowNewPassword","badOldPassword","setBadOldPassword","badNewPassword","setBadNewPassword","changePasswordResponse","handleShowOldPassword","handleShowNewPassword","handleSaveChanges","StatusChangePassword","myAccountWrapper","pictureContainer","myAccountForm","inputItem","buttonsItem","inputAsterixOnLeftLabel","changeLabel","textInputEmailPassword","labelPasswordOrEmail","modalCard","left","transform","modalStatusCard","modalChangePasswordCard","placeholderInput","inputLabelAsterisk","ChangeEmail","repeatEmail","setRepeatEmail","isRepeatEmailValid","setIsRepeatEmailValid","emailMissingOnSave","setEmailMissingOnSave","repeatEmailMissingOnSave","setRepeatEmailMissingOnSave","isSuccesful","buttonStyles","isChangeEmailSuccesful","setIsChangeEmailSuccesful","setChangePasswordResponse","openSaveModal","setOpenSaveModal","openChangePasswordModal","setOpenChangePasswordModal","openChangeEmailModal","setOpenChangeEmailModal","openStatusModal","setOpenStatusModal","openChangePasswordStatusModal","setOpenChangePasswordStatusModal","isFormChanged","setIsFormChanged","handleCloseSaveModal","handleClosePasswordChangeModal","handleCloseEmailChangeModal","handleCloseStatusModal","handleCloseChangePasswordStatus","forceDeauthentication","handleIsFormChangedValidation","formChanged","addEventListener","ev","returnValue","removeEventListener","handleCancelSaveModal","emailAddress","updateUserData","updateUser","console","log","changePasswordService","changeEmailService","xs","handleOpenEmailChangeModal","handleOpenPasswordChangeModal","input","resetForm","homeLogedInWrapper","homeLogedInItem","homeLogedInContent","paragraph","list","itemList","listItemText","HomeLogedIn","ListItemIcon","commonContent","aboutContainer","aboutItem","card","cardContentLightSmall","cardContentLightLarge","cardContentBlack","cardContentBlackSmall","cardMedia","objectFit","cardMediaSmall","aboutHeaderImage","aboutHeaderTextContent","aboutHeaderTextHeader","aboutHeaderTextParagraph","aboutSubHeaderTextHeader","UncheckedboxSVG","viewBox","fill","xmlns","x","y","rx","stroke","strokeWidth","DeleteModal","remove","deleteButtonName","Check","d","CheckAll","allItemIds","selectedItemIds","setSelectedItemsIds","startIcon","toggleSelectAllItems","fetchData","exportType","ExportModal","exportPDF","exportExcel","export","Export","openExportModal","Delete","openDeleteModal","notchedOutline","Sort","sortingOptions","sortedBy","sortItems","sort","modalDeleteCard","actionsBar","actionsWrapper","modalExportCard","NothingIsSelectedModal","useNothingIsSelectedModalStyles","Actions","nothingIsSelectedModalStyles","projects","allProjectIds","projectNames","selectedProjects","setSelectedProjects","deleteProjects","sortProjects","exportProjectsPDF","exportProjectsExcel","setSortedBy","setOpenExportModal","openExportNothingIsSelectedModal","setOpenExportNothingIsSelectedModal","setOpenDeleteModal","openDeleteNothingIsSelectedModal","setOpenDeleteNothingIsSelectedModal","handleCloseExportModal","handleCloseDeleteModal","NothingSelectedModal","handleOpenExportModal","handleOpenDeleteModal","mapFromIProjectResponseModelToIProject","userId","sensorSettings","createdAt","updatedAt","daliCount","two30Count","getAllProjects","withFullInfo","sortBy","offset","limit","impersonateIfNeeded","p","getProjectById","initialUrl","heading","ProjectHeader","CheckedBoldBox","mask-type","maskUnits","mask","projectsWrapper","projectsContainer","overflowX","table","projectsTableHead","columnName","projectName","check","rowContent","isStringNullOrEmpty","str","getDetectorTypeFormatted","sensorInfo","sensorInformation","detectorFamily","detectorOutputInfo","detectorType","res","detectorShortDescription","ZonesEnum","PirEnum","SensorError","CfgSystemCommonFunc0","CfgSystemCommonFunc1","CfgZoneCommonFunc1","EnZoneCommonFunc1","EnSystemFunc1","EnSystemFunc2","EnSystemApp7","CfgSystemDaliFunc2","PushButtonFunction","PushButtonCfgInfo","DaliPushButton","CfgZoneType","LightLevelArray","SensorData","detectorInfo","UserConfigModel","SensorProfileModel","Zones","WiredPushButtonModel","BlePushButtonModel","DaliPushButtonModel","SensorInformation","HvacShortAddressExternalRelay","CutOffShortAddressExternalRelay","GetSetTunableWhiteListModelReply","GetSetTunableWhitePresetModelReply","DaliDeviceDataScenesModelReplies","GetSetWirelessLinkFunctionModelReply","GetPresAndHoldTiming","buttons","label","GetPbOperationDuration","JSON","parse","userConfigModel","sensorProfile","zones","wiredPushButtonModel","blePushButtonModel","daliPushButtonModel","hvacShortAddressExternalRelay","cutOffShortAddressExternalRelay","getSetTunableWhiteListModelReply","Hours","getSetTunableWhitePresetModelReply","Presets","daliDeviceDataScenesModelReplies","getSetWirelessLinkFunctionModelReply","GetLuxLevel","zone","GetZone","CFG_ZONE_V_SETPOINT","GetLightSwitchOnLevel","CFG_ZONE_TURNON_LEVEL","GetSwitchAboveLux","GetBit","CFG_ZONE_COMMON_FUNC1","CFG_OVEREXP_ACTIVE","GetSwitchOffDelay","CFG_ZONE_T_OFFPIR_DELAY","GetLightBehaviour","CFG_AUTO_ON","GetDaylight","CFG_ZONE_DAYLIGHT","GetDeskMaxArtificialLight","CFG_ZONE_DESKMAXARTIFICIALLIGHT","GetOrientationLightLevel","CFG_ZONE_ORIENTATION_LEVEL","GetOrientationLightSwitchOffDelay","CFG_ZONE_T_ORIENTATION_DELAY","GetHvacOnTimer","CFG_T_HVACCON_DELAY","GetHvacOffTimer","CFG_T_HVACOFF_DELAY","GetStdByOffTimer","CFG_T_STDBY_MIN_DELAY","GetIntRelayNumber","hwProfileInfo","NUM_INTRELAY","GetZonesLengthDali","NUM_ZONES","IsInFactoryMode","CFG_SYSTEM_CONFIGSTATE","IsIntRelayOnHvac","CFG_SYSTEM_COMMON_FUNC0","CFG_INT_RELAY_HVAC","IsExtHvacRelayUsed","GetExtHvacRelay","IsIntRelayOnStandBy","CFG_INT_RELAY_STDBY_MIN","IsExtStandbyRelayUsed","GetExtStandbyRelay","IsIntRelayOnLighting","CFG_INT_RELAY_LIGHTING","IsChannel2OnLighting","Zone2","CFG_ZONE_TYPE","SEZ","GetSystemRedLedSwitch","swProfileInfo","EN_SYSTEM_FUNC1","SYSTEM_YGM_INDICATION","GetRedLedSwitch","CFG_SYSTEM_COMMON_FUNC1","CFG_YGM_INDICATION","GetBurnInState","CFG_SYSTEM_DALI_FUNC2","CFG_BURNIN_ACTIVE","GetSystemWalkTestState","SYSTEM_WALK","GetSystem8HourTestState","Zone1","EN_ZONE_COMMON_FUNC1","SYSTEM_8HOUR","GetWalkTestState","CFG_WALKTEST_ACTIVE","Get8HourTestState","CFG_8HOUR_ACTIVE","GetSystemBurnInState","EN_SYSTEM_FUNC2","SYSTEM_BURNIN","IsTunableWhiteAvailable","EN_SYSTEM_APP7","APP7_FUNCTIONS_TUNABLE_WHITE","GetDaylightControlDimming","CFG_USR_DYN_SP_ACTIVE","AreZonesConfigured","CFG_DALI_CONFIGURED","CFG_T_LP","GetDevicesInZone","i","GetDevicesInMUZ","DevicesInMUZ","GeOnDelayHVAC","GeOffDelayHVAC","GetWirelessCommunication","CFG_WIRELESS_SLAVE_ENABLED","GetWirelessLinkEnabled","CFG_WIRELESS_LINK_ENABLED","IsChannel2Configured","PushButton1","PUSH_BUTTON_CFG_INFO","ZONE_2_CHANNEL_2","Zone3","Zone4","Zone5","GetSensitivityForElement","pirZone","ZoneA","CFG_V_PIRA","ZoneB","CFG_V_PIRB","ZoneC","CFG_V_PIRC","GetNbOfPirElements","NUM_PIR","GetNetworkId","CFG_SYSTEM_NETWORK_ID","source","parameterBit","ReturnSensitivity","level","ReturnTime","seconds","Math","floor","GetChannels","channels","GetFineTunning","fineTunning","GetSensitivity","GetPushButtons","pushButtons","wiredButton","controlledChannels","ExtractFunctionSimpleButtonString","PUSH_BUTTON_FUNCTION1","GetCommunication","isSensorSetting","communication","GetSettingsDali","includeMuz","isDetectorSetting","settings","devicesInMuz","nbZones","zonesSettings","generalDetails","devices","multiZoneDevices","GetSettingsDaliComfort","defaultSettings","getHvacSettings","isHvacRelayUsed","getStandBySettings","isStandByRelayUsed","getVLightingSettings","isVLightingRelayUsed","letter","sensitivityFineTunning","GetFineTunningDali","GetFineTunningDaliSlave","GetPushButtonsDali","GetButtonActionandControl","pushButtonsData","el","pushButtonFunction","ON_OFF","ONLY_ON","ONLY_OFF","ExtractButtonFunctionString","pushButtonCfgInfo","isSwitch","SWITCH","NO_FUNCTION","TW_WARMER_COOLER","TW_WARMER","TW_COOLER","TW1","TW2","TW3","TW4","CALL_SCENE","AUTO","LEVEL","TWO_LEVEL_ACTIVE","DLC_ACTIVE","FDOOR_OPEN","FDOOR_CLOSED","BuildInformationItems","pushButtonSensorData","functionId","informationItems","functionName","PUSH_BUTTON_FUNCTION2","functionType","Param2","Param1","parameter","round","GetButtonsControl","filter","GetPushButtonCfgInfoTranslation","ZONE_1_CHANNEL_1","ZONE_3","ZONE_4","MUZ","ZONE_5_INTERNAL_RELAY","buttonControlZones","Number","GetButtonsDaliComfort","count","wiredAction1","wiredControls","wiredAction2","wiredControls2","Array","isArray","wiredAction","blePushButtons","forEach","element","buttonKey","repeat","buttonAction","buttonControls","isAnyPushButtonUsed","PushButtons","some","PushButton","daliButton","isPushButtonUsed","j","pushButton","inputAction","inputControls","GetPresenceLightLevel","CFG_ZONE_PRESENCE_LEVEL","GetPresenceDelay","CFG_ZONE_T_PRESENCE_DELAY","GetNoPresenceLightLevel","CFG_ZONE_NON_PRESENCE_LEVEL","GetNoPresenceDelay","CFG_ZONE_T_NON_PRESENCE_DELAY","GetFunctionsDaliComfort","functionsDaliComfort","isHumanCentricLighting","Command","isTunableWhitePresetUsed","Kelvin","getActiveCurve","tunableWhiteListByHour","activeCurveHour","activeCurveValue","counter","property","getTunableWhitePreset","preset","LuxSetting","base64ToArray","base64","binary_string","atob","len","bytes","Uint8Array","charCodeAt","buffer","getDecivesAndLuxLevelsForScene","sceneNumber","devicesAndLuxLevels","daliDevicesScenes","daliDeviceLuxLevel","Scenes","GetLightSceneLuxLevelInterval","valueStr","parseInt","minPercent","maxPercent","lastIndexOf","getNumberOfFoldingDoors","networkIdList","NetworkIdList","fDoors","getNumberOfAdjAreasDetectors","nbDetectors","isFoldingDoorWired","Parameter","get230vInputsWiredToFoldingDoor","V230Inputs","presenceLightLevel","presenceDelay","noPresenceLightLevel","noPresenceDelay","tunablePreset","lightScenesAvailable","scene","entries","entry","differentValues","prop","reverse","val","diff","Function","nbFDoors","lightLevel","GetSensorDescription230VMaster","SensorDataMethods","tabs","GetSensorDescription230VSlave","GetSensorDescriptionDaliMaster","GetSensorDescriptionDaliMasterComfort","functions","GetSensorDescriptionDaliSlave","GetSensorDescription","family","daliComfort","GetDefaultDescription","comfort_dali","comfort_dali_json","comfort_dali_zones","comfort_dali_zones_json","defaultDetectors","master_230V_one_json","master_230V_two_json","secondary_230V_json","master_dali_json","secondary_dali_json","outputInfo","currentDetector","sensorData","defaultDetector","default","defaultDetectorObj","tab","tabName","properties","currentValue","isDefault","defaultProperty","startsWith","HelveticaFont","HelveticaFontBold","sortLightSceneGroupsByPercentage","getPercentageFromGroup","group","words","replace","inputArray","arrayOfGroups","idx","percentage","luminaries","groupA","groupB","isExportingProjects","getTextLines","doc","text","textMaxLength","splitTextToSize","heightToAdd","heightUnit","textLines","convertPixelsToMilimeters","pixels","returnMacFormatted","mac","num","addHeaderFooter","forToc","setFontSize","setTextColor","setFont","setLineWidth","Image","logoSrc","addImage","setDrawColor","line","getPageWidth","getPageHeight","addHeaderFooterDetector","date","Date","month","toLocaleString","year","getFullYear","valuesInBold","widthInPixelsForValuesInBold","getTextWidth","xg","macAddress","customName","detectorTypeFormatted","templateName","addHeaderFooterTable","day","getDate","reportExportedOn","dayOrdinal","widthInPixelsForReportExportedOn","generatePage","isDetectorsetting","detectorObj","secondRowX","receivedFrom","moment","tz","receivedOn","guess","format","showTitle","addTitle","countNeededRows","currentHeight","lengthArr","k","additionalHeight","addPage","pixelsIfTextOnMoreRows","row","lightGroups","lightGroup","summaryTable","summary","buildSummary","page","detectorDescription","addSummary","isTemplate","insertPage","rowsCounter","reduce","acc","acc2","acc3","totalSummaryPages","ceil","pagesCounter","projectTypes","typeName","typeValues","formatedCustomName","substring","currentPage","addPageNumber","numPages","getNumberOfPages","setPage","exportDetectorsPDF","detectors","contactDetails","jsPDF","orientation","unit","addFileToVFS","addFont","obj1","obj2","save","title_style","size","bold","argb","title_fill","pattern","fgColor","h1","h3","value_style","value_bold","DetectorsInfoMethods","addSubtab","dataMatrix","currentTab","currentSubTab","_item$btnName","arr","btnName","orderId","values","addSubtabValue","addProperty","_item$btnName2","addPropertyValue","addTranslatedValues","_item$name","_item$name2","_item$name3","pressAndHoldTiming","pushButtonOperation","returnBtnName","btnCounter","orderedArr","currentButton","orderedPushButtons","blePushButton1","blePushButtonTitle","daliPushButton1","daliPushButtonsTitle","generateWorksheet","worksheet","generateDetectorsInfo","detectorList","tabValues","currentSubtab","getColumn","col","currentLetter","detectorCounter","detailsRow","getCell","isReceivedTemplate","font","_detector$customName","_detector$macAddress$","_detector$macAddress","views","state","xSplit","ySplit","activeCell","tabRow","subtab","subtabName","subtabValues","propertyName","alignment","wrapText","cell","getRow","hidden","saveExcel","workbook","buf","xlsx","writeBuffer","saveAs","Blob","exportDetectorsExcel","Excel","sheetName","addWorksheet","ProjectsList","setProjects","setProjectNames","singleProject","setSingleProject","timeZone","allSelected","setAllSelected","isFetching","setIsFetching","dataLeftToFetch","setDataLeftToFetch","setOffset","allDataFetched","setAllDataFetched","redirectToProject","getImpersonatedUserEmail","sortedProjectsByName","sortedProjectsByDate","projectsToSort","a","b","_a$name","_b$name","_a$name2","_b$name2","handleChange","checked","affectedProjectIndex","splice","fetchProject","concat","prev","ids","removeProjects","projectIds","handleExportProjectsExcel","handleExportProjectsPDF","_authStore$userHistor2","_authStore$userHistor3","selectedProjectsExport","v230Settings","setting","_setting$sensorInform","daliSettings","_setting$sensorInform2","TableContainer","Table","TableHead","TableRow","TableCell","TableBody","Checkbox","checkedIcon","inputProps","disableRipple","ChevronUp","Pencil","fillRule","clipRule","saveNewName","getNameAndValue","settingList","getValue","GetProjectDetails","getName","fineTunningDescription","daliDescription","trim","detectorActions","infoItem","closeButton","newLineProperty","SensorDataComponent","typoClasses","setSensorData","SensorDescription","secondary","infoItemCursorDefault","closeIcon","spaceBetween","newMotionDetectors","getDetectorTypeFormattedForFilterMenu","translation","shortDescription","substr","detectorTypeWords","detecorsJsonOb","getFilterDataFormattedForDetector","detectorCategory","DetectorFamily","inputForGetDetectorTypeFormatted","DetectorOutputInfo","DetectorType","DetectorShortDescription","mapFromTemplateResponseModelToITemplateModel","templateSensorId","favoriteName","lastUpload","uploadedAt","pinCode","bleSensorInformationId","settingType","daliBusDevices","controlGearDeviceCount","inputDeviceCount","mapReceivedTemplates","ProjectDetails","_setting$macAddress","_setting$macAddress$m","aria-labelledby","match","projectViewWrapper","headerWrapper","editName","inputName","nestedInfo","flex","titleHeader","iconAlign","checkAlign","cursorPointer","listContent","typo","projectDetails","projectDetailsFW","flexBasis","projectDetailsTable","projectDetailsContainer","useTypoClasses","currentLanguageCode","setCurrentLanguageCode","selectedSettings","setSelectedSettings","setProject","setSetting","newProjectName","setNewProjectName","openDali2","setOpenDali2","open230V","setOpen230V","openDetailsModal","setOpenDetailsModal","openEditModal","setOpenEditModal","isProjectSaved","setIsProjectSaved","useParams","filterKey","setFilterKey","handleCloseEditModal","handleCloseDetailsModal","singleExport","handleCheck","filterProjects","newFilter","newSettings","isVisible","filterSensors","editProject","updateProject","deleteSettings","sensorSettingIds","removeSensorSettings","handleClickSettings","decodeVersion","version","decoded","cutUnwanted","SoftwareVersions","ListFWItem","ListFWGroup","sensorSwVersionModel","sensorActorVersionModel","handleExportProjectPDF","selectedDetectorsExport","handleExportProjectExcel","Input","defaultValue","disableUnderline","handleEditProject","then","sensor","InputBase","onKeyDown","handleExpandDali2","Collapse","in","timeout","unmountOnExit","handleExpand230V","wrapperButton","AddTemplate","setFavoriteName","saveTemplate","primaryStyle","secondaryStyle","DetectorDetails","getDetectorByMacAddress","sensorSettingId","isFavorite","zonesToSend","mapFromDetectorResponseToIDetectorModel","TextMaskCustom","inputRef","other","MaskedInput","assign","ref","inputElement","placeholderChar","showMask","guide","DetectorsHeader","noSearchContainer","itemContainer","imgContainer","DetectorsNoSearch","detectorContainer","searchContainer","endAlign","iconButton","tableContainer","headingRow","star","noSearchBody","infoFavorite","infoContent","buttonWraper","detectorDetailsContainer","addTemplateCard","errorContent","modalSendCard","macAddressSuffix","_appStore$userHistory","_appStore$userHistory2","_appStore$userHistory3","_appStore$userHistory4","appStore","setDetector","setDetectors","searchedValue","setSearchedValue","setError","setIsFavorite","openAddFavoriteModal","setOpenAddFavoriteModal","showNote","setShowNote","isDetectorNotificationSeen","selectedDetectors","setSelectedDetectors","handleCloseAddFavoriteModal","handleOpenDetailsModal","getDetector","macQueryParam","macInput","toSearch","existDetectors","macSearch","markAsFavorite","DetectorHeader","inputComponent","onFocus","keyCode","keyPress","handleOpenAddFavoriteModal","getPinCodeStr","colSpan","handleNoteInfo","updateUserHistory","UncheckedGreyBox","boldText","greyedOutText","checkbox","FilterTemplates","getSelectedTabFilters","filtersSet","selectedNames","selectedFilters","setSelectedFilters","isFilterSelected","f","handleSelectedFilters","filters","filterName","disablePadding","send","Send","openSendModal","templateActions","infoEditableItem","saveButton","MyTemplateDetails","template","setNewName","innput","setInnput","inputSpanLabel","document","getElementById","clientWidth","justifyItems","gridArea","visibility","closeTemplateDetailsModal","getTemplateById","templateId","isReceived","getTemplates","getReceivedTemplates","modalParagraphSubTitle","emailInput","bottomButton","SendModal","duplicateEmails","setDuplicateEmails","subTitle","emails","setEmails","checkAreDuplicateEmails","r","handleAddEmail","showAddIcon","removeEmail","handleSend","shareMany","buttonsContainerTwo","retry","retryMethod","saveUpdates","myTemplatesContainer","tableLayout","favorite","actionItems","templateDetailsContainer","modalSaveCard","MyTemplates","filtersData","selectedMyTemplates","setTemplates","selectedTemplatesIds","setSelectedTemplatesIds","setTemplate","templateIdToRemove","setTemplateIdToRemove","templateIdToSave","setTemplateIdToSave","newTemplateName","setNewTemplateName","setOpenSendModal","openSendNothingIsSelectedModal","setOpenSendNothingIsSelectedModal","sendStatus","setSendStatus","emailList","setEmailList","isSending","setIsSending","handleCloseSendModal","handleOpenStatusModal","myTemplatesSortingOptions","sortMyTemplatesByName","myTemplatesToSort","sortMyTemplByDetectorType","detectorTypeA","detectorTypeB","sortMyTemplatesByDate","isAfter","fetchTemplateById","myTemplate","fetchTemplateData","newData","handleScroll","documentElement","scrollTop","innerHeight","scrollHeight","deleteTemplate","removeTemplate","prevData","temp","getEmailListWithoutEmptyFields","sendTemplate","shareTemplates","editTemplate","updateTemplate","exists","findIndex","prevTemplates","copiedTemplates","getStatusContent","handleOpenSendModal","handleOpenSaveModal","myTemplates","handleOpenShareManyModal","selectedTemplates","ReceivedTemplatesDetails","receivedTemplate","receivedTemplatesContainer","detailsModalContainer","ReceivedTemplates","selectedReceivedTemplatesIds","setSelectedReceivedTemplatesIds","idTemplateToRemove","setIdTemplateToRemove","receivedTemplates","setReceivedTemplates","setReceivedTemplate","selectedReceivedTemplates","receivedTemplatesSortingOptions","sortTemplatesByName","templatesToSort","templateNameA","templateNameB","sortTemplatesByDetectorType","sortTemplatesByDate","sortTemplatesBySender","fetchReceivedTemplates","deleteReceivedTemplate","removeReceivedTemplate","sendReceivedTemplate","shareManyReceivedTemplates","rTemplate","rTemplates","dataTemplates","rt","headerTemplate","TemplateHeader","templatesWrapper","appBar","templatesTabsContainer","wraperTabs","with","tabLabel","filerContainer","TabPanel","role","tabProps","Template","setValue","myTemplatesFilters","setMyTemplatesFilters","receivedTemplatesFilters","setReceivedTemplatesFilters","setSelectedReceivedTemplates","setSelectedMyTemplates","setCurrentTab","getTabsData","familyName","vTemplates","newFilters","daliTemplates","daliFilter","newDaliFilter","fillWithTheRestOfTheFilters","sortFilters","filterType","MR_part","localeCompare","LR_part","HC_part","allDetectorsOfType","getAllDetectorsByType","detectorFormatted","getTabFilters","Tabs","handleTabs","newValue","Tab","badgeContent","myNewTemplates","handleCurrentTimeNiko","currentDate","valueOf","lastMyTemplatesSeen","newReceivedTemplates","handleCurrentTime","lastReceivedTemplatesSeen","forgotPasswordWrapper","formTitle","sendResetPassword","userData","sendResetPasswordLink","handleSendResetPassword","wrapper","ResponseStatus","redirectToLogin","resetPasswordWrapper","repeatPassword","setRepeatPassword","isReset","setIsReset","isError","setIsError","errorMessage","setErrorMessage","isRepeatPasswordValid","setIsRepeatPasswordValid","token","handleShowPassword","developerMessage","newRepeatPassword","handleResetPassword","PrivateRoute","Component","rest","redirectURL","render","LoggedOutRoute","statusWrapper","link","textDecorationColor","RegisterStatus","resendEmail","useCallback","ActivationFailed","EmailSentConfirmation","mainContent","titleRight","descriptionRightGrid","InstallerIcon","InstallerCertifiedIcon","isImpersonatedUserCallSuccessful","setIsImpersonatedUserCallSuccessful","installerTitle","impersonatedUserData","getImpersonatedUserData","getImpersonatedUserHistoryProperty","impersonatedUserHistory","ErrorHandler","responseInterceptor","eject","App","keyss","matchingCode","lowerCaseCurrentLangCode","localToken","authTokens","isLogged","setNewReceivedTemplates","setMyNewTemplates","handleUserHistory","getUserHistory","getIsSuperUser","onFocusFunction","Provider","objData","stringify","updateData","currentUserId","obToSave","removeItem","languageCode","usersHistory","countMyNewTemplates","getNewMyTemplatesCount","clear","BrowserRouter","CssBaseline","getToImpersonateUserEmail","from","hostname","insertionPoint","jss","setup","ReactDOM","StrictMode","Suspense","fallback","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.7d9bd1f9.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport Backend from 'i18next-xhr-backend';\r\n\r\ni18n\r\n .use(Backend)\r\n .use(initReactI18next)\r\n .init({\r\n debug: false,\r\n lng: 'en',\r\n fallbackLng: 'en',\r\n whitelist: ['en', 'da-DK', 'fr-BE', 'de-DE', 'it-CH', 'nl-BE', 'pl-PL', 'sk-SK', 'sv-SE', 'at-DE', 'be-FR', 'be-NL', 'sz-FR', 'sz-DE', 'nb-NO'],\r\n interpolation: {\r\n escapeValue: false,\r\n },\r\n returnEmptyString: false,\r\n returnNull: false\r\n });\r\n\r\nexport default i18n;\r\n","export interface ILang {\r\n [index: string]: string;\r\n}\r\n\r\nexport interface ICountry {\r\n [index: string]: string;\r\n}\r\n\r\nexport const AppLanguage: ILang = {\r\n Belgium_NL: 'be-NL',\r\n Belgium_FR: 'be-FR',\r\n Danish: 'da-DK',\r\n German: 'de-DE',\r\n French: 'fr-BE',\r\n English: 'en',\r\n Netherlands: 'nl-BE',\r\n Norway: 'nb-NO',\r\n Austria: 'at-DE',\r\n Poland: 'pl-PL',\r\n Switzerland_DE: 'sz-DE',\r\n Slovakia: 'sk-SK',\r\n Switzerland_FR: 'sz-FR',\r\n Sweden: 'sv-SE',\r\n Switzerland_IT: 'it-CH'\r\n}\r\n\r\nexport const LangObjectName: ICountry = {\r\n [AppLanguage.English]: 'en',\r\n [AppLanguage.French]: 'fr_BE',\r\n [AppLanguage.Danish]: 'da_DK',\r\n [AppLanguage.German]: 'de_DE',\r\n [AppLanguage.Sweden]: 'sv_SE',\r\n [AppLanguage.Netherlands]: 'nl_BE',\r\n [AppLanguage.Norway]: 'nb_NO',\r\n [AppLanguage.Poland]: 'pl_PL',\r\n [AppLanguage.Slovakia]: 'sk_SK',\r\n [AppLanguage.Austria]: 'at_DE',\r\n [AppLanguage.Switzerland_FR]: 'sz_FR',\r\n [AppLanguage.Switzerland_DE]: 'sz_DE',\r\n [AppLanguage.Switzerland_IT]: 'it_CH',\r\n [AppLanguage.Belgium_FR]: 'be_FR',\r\n [AppLanguage.Belgium_NL]: 'be_NL',\r\n}\r\n\r\nexport const AppCountries: ICountry = {\r\n [AppLanguage.English]: 'International (EN)',\r\n [AppLanguage.French]: 'France',\r\n [AppLanguage.Danish]: 'Danmark',\r\n [AppLanguage.German]: 'Deutschland',\r\n [AppLanguage.Sweden]: 'Sverige',\r\n [AppLanguage.Netherlands]: 'Nederland',\r\n [AppLanguage.Norway]: 'Norge',\r\n [AppLanguage.Poland]: 'Polski',\r\n [AppLanguage.Slovakia]: 'Slovensko',\r\n [AppLanguage.Austria]: 'Österreich',\r\n [AppLanguage.Switzerland_FR]: 'Suisse',\r\n [AppLanguage.Switzerland_DE]: 'Schweiz',\r\n [AppLanguage.Switzerland_IT]: 'Svizzera',\r\n [AppLanguage.Belgium_FR]: 'Belgique',\r\n [AppLanguage.Belgium_NL]: 'België',\r\n}\r\n\r\nexport const hasThisCountryWithThisLanguageSpecialLocaleCode = (country: any, language: any): any => {\r\n \r\n if (language === \"Dutch\") {\r\n if (country === \"Netherlands\") {\r\n return \"nl-BE\";\r\n }\r\n return \"be-NL\";\r\n }\r\n\r\n if (language === \"French\") {\r\n if (country === \"France\") {\r\n return \"fr-BE\";\r\n }\r\n if (country === \"Switzerland\") {\r\n return \"sz-FR\";\r\n }\r\n return \"be-FR\";\r\n }\r\n\r\n if (language === \"German\") {\r\n if (country === \"Austria\") {\r\n return \"at-DE\";\r\n }\r\n if (country === \"Switzerland\") {\r\n return \"sz-DE\";\r\n }\r\n return \"de-DE\";\r\n }\r\n\r\n return undefined;\r\n};\r\n","export interface ILanguage {\r\n [key: string]: string;\r\n}\r\n\r\nconst baseLanguage: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/en/need-help/customer-services\",\r\n termsAndConditionsLink: \"https://www.niko.eu/en/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/en/legal/privacy-policy\"\r\n};\r\n\r\nexport type LanguageStrings = typeof baseLanguage;\r\nexport const en = baseLanguage;\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const fr_BE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/fr-fr/besoin-d'aide/service-clients\",\r\n termsAndConditionsLink: \"https://www.niko.eu/fr-fr/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/fr-fr/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const de_DE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/de-de/hilfe-benotigt/kundendienst\",\r\n termsAndConditionsLink: \"https://www.niko.eu/de-de/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/de-de/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const da_DK: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/da-dk/brug-for-hj%C3%A6lp/kundeservice\",\r\n termsAndConditionsLink: \"https://www.niko.eu/da-dk/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/da-dk/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const it_CH: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/en/need-help/customer-services\",\r\n termsAndConditionsLink: \"https://www.niko.eu/en/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/en/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const nl_BE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/nl-nl/hulp-nodig/klantendienst\",\r\n termsAndConditionsLink: \"https://www.niko.eu/nl-nl/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/nl-nl/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const pl_PL: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/pl-pl/pomoc/obs%C5%82uga-klienta\",\r\n termsAndConditionsLink: \"https://www.niko.eu/pl-pl/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/pl-pl/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const sk_SK: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n customerServicesLink: \"https://www.niko.eu/sk-sk/pomoc/z%C3%A1kazn%C3%ADcky-servis\",\r\n termsAndConditionsLink: \"https://www.niko.eu/sk-sk/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/sk-sk/pr%C3%A1vnej/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const sv_SE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n customerServicesLink: \"https://www.niko.eu/sv-se/beh%C3%B6ver-du-hj%C3%A4lp/kundservice\",\r\n termsAndConditionsLink: \"https://www.niko.eu/sv-se/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/sv-se/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const at_DE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/de-at/hilfe-benotigt/kundendienst\",\r\n termsAndConditionsLink: \"https://www.niko.eu/de-at/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/de-at/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const be_FR: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/fr-be/besoin-d'aide/service-clients\",\r\n termsAndConditionsLink: \"https://www.niko.eu/fr-be/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/fr-be/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const be_NL: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/nl-be/hulp-nodig/klantendienst\",\r\n termsAndConditionsLink: \"https://www.niko.eu/nl-be/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/nl-be/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const sz_FR: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n customerServicesLink: \"https://www.niko.eu/fr-ch/need-help/service-clients\",\r\n termsAndConditionsLink: \"https://www.niko.eu/fr-ch/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/fr-ch/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const sz_DE: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n customerServicesLink: \"https://www.niko.eu/de-ch/hilfe-benotigt/kundendienst\",\r\n termsAndConditionsLink: \"https://www.niko.eu/de-ch/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/de-ch/legal/privacy-policy\"\r\n};\r\n","import { ILanguage } from \"./base-language\";\r\n\r\nexport const nb_NO: ILanguage = {\r\n /** Routes */\r\n home: \"/home\",\r\n about: \"/about\",\r\n projectsMy: \"/projects/my\",\r\n detector: \"/detector\",\r\n templates: \"/templates\",\r\n register: \"/register\",\r\n registerConfirmation: \"/register/confirmation\",\r\n accountActivated: \"/register/accountActivated\",\r\n activationFailed: \"/register/activationFailed\",\r\n activationLinkExpired: \"/activationLinkExpired\",\r\n 404: \"/404\",\r\n changeEmailConfirmation: \"/changeEmailConfirmation\",\r\n myAccount: \"/myAccount\",\r\n forgotPassword: \"/login/forgotPassword\",\r\n resetEmailConfirmation: \"/login/resetEmailConfirmation\",\r\n resetPassword: \"/login/resetPassword/:token\",\r\n changeEmail: \"/changeEmail\",\r\n installerView: \"/installerView\",\r\n installerViewLoggedIn: \"/installerViewLoggedIn\",\r\n project: \"/project/:id\",\r\n\r\n /** Footer links for Customer services, Terms and conditions, Privacy policy**/\r\n customerServicesLink: \"https://www.niko.eu/en/need-help/customer-services\",\r\n termsAndConditionsLink: \"https://www.niko.eu/en/legal\",\r\n privacyPolicyLink: \"https://www.niko.eu/en/legal/privacy-policy\"\r\n};\r\n","import { ILanguageModel } from \"../../models/LanguageModel\";\r\nimport { ILanguageCountryModel } from \"../../models/LanguageCountryModel\";\r\n\r\nexport const languageList: ILanguageModel[] = [\r\n {\r\n name: \"Select\",\r\n key: \"0\",\r\n languageId: \"\",\r\n localeCode: \"\",\r\n localCodeGoogle: \"\",\r\n },\r\n {\r\n name: \"Danish\",\r\n key: \"1\",\r\n languageId: \"735d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"da-DK\",\r\n localCodeGoogle: \"da\",\r\n },\r\n {\r\n name: \"Dutch\",\r\n key: \"2\",\r\n languageId: \"675d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"nl-BE\",\r\n localCodeGoogle: \"nl\",\r\n },\r\n {\r\n name: \"English\",\r\n key: \"3\",\r\n languageId: \"6b5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"en\",\r\n localCodeGoogle: \"en\",\r\n },\r\n {\r\n name: \"French\",\r\n key: \"4\",\r\n languageId: \"6f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"fr-BE\",\r\n localCodeGoogle: \"fr\",\r\n },\r\n {\r\n name: \"German\",\r\n key: \"5\",\r\n languageId: \"795d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"de-DE\",\r\n localCodeGoogle: \"de\",\r\n },\r\n {\r\n name: \"Italian\",\r\n key: \"6\",\r\n languageId: \"7b5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"it-CH\",\r\n localCodeGoogle: \"it\",\r\n },\r\n {\r\n name: \"Norwegian\",\r\n key: \"7\",\r\n languageId: \"775d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"nb-NO\",\r\n localCodeGoogle: \"no\",\r\n },\r\n {\r\n name: \"Polish\",\r\n key: \"8\",\r\n languageId: \"7d5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"pl-PL\",\r\n localCodeGoogle: \"pl\",\r\n },\r\n {\r\n name: \"Slovak\",\r\n key: \"9\",\r\n languageId: \"7f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sk-SK\",\r\n localCodeGoogle: \"sk\",\r\n },\r\n {\r\n name: \"Swedish\",\r\n key: \"10\",\r\n languageId: \"755d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sv-SE\",\r\n localCodeGoogle: \"sv\",\r\n },\r\n];\r\n\r\nexport const languageCountryList: ILanguageCountryModel[] = [\r\n {\r\n name: \"België\",\r\n key: \"14\",\r\n languageId: \"675d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"be-NL\",\r\n localCodeGoogle: \"nl\",\r\n country: \"Belgium\",\r\n },\r\n {\r\n name: \"Belgique\",\r\n key: \"13\",\r\n languageId: \"6f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"be-FR\",\r\n localCodeGoogle: \"fr\",\r\n country: \"Belgium\",\r\n },\r\n {\r\n name: \"Danmark\",\r\n key: \"1\",\r\n languageId: \"735d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"da-DK\",\r\n localCodeGoogle: \"da\",\r\n country: \"Denmark\",\r\n },\r\n {\r\n name: \"Deutschland\",\r\n key: \"5\",\r\n languageId: \"795d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"de-DE\",\r\n localCodeGoogle: \"de\",\r\n country: \"Germany\",\r\n },\r\n {\r\n name: \"France\",\r\n key: \"4\",\r\n languageId: \"6f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"fr-BE\",\r\n localCodeGoogle: \"fr\",\r\n country: \"France\",\r\n },\r\n {\r\n name: \"International (EN)\",\r\n key: \"3\",\r\n languageId: \"6b5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"en\",\r\n localCodeGoogle: \"en\",\r\n country: \"Belgium\",\r\n },\r\n {\r\n name: \"Nederland\",\r\n key: \"2\",\r\n languageId: \"675d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"nl-BE\",\r\n localCodeGoogle: \"nl\",\r\n country: \"Netherlands\",\r\n },\r\n {\r\n name: \"Norway\",\r\n key: \"7\",\r\n languageId: \"775d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"nb-NO\",\r\n localCodeGoogle: \"no\",\r\n country: \"Norway\",\r\n },\r\n {\r\n name: \"Österreich\",\r\n key: \"10\",\r\n languageId: \"795d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"at-DE\",\r\n localCodeGoogle: \"de\",\r\n country: \"Austria\",\r\n },\r\n {\r\n name: \"Polski\",\r\n key: \"8\",\r\n languageId: \"7d5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"pl-PL\",\r\n localCodeGoogle: \"pl\",\r\n country: \"Poalnd\",\r\n },\r\n {\r\n name: \"Schweiz\",\r\n key: \"12\",\r\n languageId: \"795d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sz-DE\",\r\n localCodeGoogle: \"de\",\r\n country: \"Switzerland\",\r\n },\r\n {\r\n name: \"Slovensko\",\r\n key: \"9\",\r\n languageId: \"7f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sk-SK\",\r\n localCodeGoogle: \"sk\",\r\n country: \"Slovakia\",\r\n },\r\n {\r\n name: \"Suisse\",\r\n key: \"11\",\r\n languageId: \"6f5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sz-FR\",\r\n localCodeGoogle: \"fr\",\r\n country: \"Switzerland\",\r\n },\r\n {\r\n name: \"Sverige\",\r\n key: \"15\",\r\n languageId: \"755d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"sv-SE\",\r\n localCodeGoogle: \"sv\",\r\n country: \"Sweden\",\r\n },\r\n {\r\n name: \"Svizzera\",\r\n key: \"6\",\r\n languageId: \"7b5d95ea-6990-e611-80e3-c4346bad32b4\",\r\n localeCode: \"it-CH\",\r\n localCodeGoogle: \"it\",\r\n country: \"Switzerland\",\r\n }\r\n];\r\n\r\nexport const countryList = [\r\n { name: \"Select\", languageId: languageList[0].languageId, key: \"0\" },\r\n { name: \"Austria\", languageId: languageList[5].languageId, key: \"Austria\" },\r\n { name: \"Belgium\", languageId: languageList[2].languageId, key: \"Belgium\" },\r\n { name: \"Denmark\", languageId: languageList[1].languageId, key: \"Denmark\" },\r\n { name: \"France\", languageId: languageList[4].languageId, key: \"France\" },\r\n { name: \"Germany\", languageId: languageList[5].languageId, key: \"Germany\" },\r\n {\r\n name: \"International (EN)\",\r\n languageId: languageList[3].languageId,\r\n key: \"International (EN)\",\r\n },\r\n {\r\n name: \"Netherlands\",\r\n languageId: languageList[2].languageId,\r\n key: \"Netherlands\",\r\n },\r\n { name: \"Norway\", languageId: languageList[7].languageId, key: \"Norway\" },\r\n { name: \"Poland\", languageId: languageList[8].languageId, key: \"Poland\" },\r\n {\r\n name: \"Slovakia\",\r\n languageId: languageList[9].languageId,\r\n key: \"Slovakia\",\r\n },\r\n { name: \"Sweden\", languageId: languageList[10].languageId, key: \"Sweden\" },\r\n {\r\n name: \"Switzerland\",\r\n languageId: languageList[5].languageId,\r\n key: \"Switzerland\",\r\n },\r\n];\r\n","import React from 'react';\r\nimport { IntlProvider } from 'react-intl';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { languageList } from '../../../constants/countries';\r\nimport { ILang, LangObjectName } from '../../../enums/laguages';\r\nimport { LanguageStrings } from '../localizations';\r\n\r\ninterface Props {\r\n RouterComponent: React.ComponentClass;\r\n languages: { [k: number]: string };\r\n appStrings: { [prop: string]: LanguageStrings };\r\n defaultLanguage?: ILang;\r\n}\r\n\r\nexport const LocalizedRouter: React.FC = ({\r\n children,\r\n RouterComponent,\r\n appStrings,\r\n}) => (\r\n \r\n \r\n {({ location }) => {\r\n const currentPath = window.location.pathname;\r\n let cPathEnding = localStorage.getItem(\"currentPathEnding\");\r\n if (cPathEnding != null) {\r\n localStorage.setItem(\"previousPathEnding\", cPathEnding);\r\n }\r\n\r\n const currentPathEnding = currentPath.split('/')[currentPath.split('/').length-1]\r\n localStorage.setItem(\"currentPathEnding\", currentPathEnding);\r\n\r\n /**\r\n * If language is not in route path, redirect to language root\r\n */\r\n let pathNameParts = location.pathname.split('/');\r\n let pathNameLanguage = pathNameParts[1];\r\n let currentLanguage = localStorage.getItem(\"currentLanguageCode\");\r\n\r\n if (!currentLanguage) {\r\n pathNameLanguage = languageList.find(l => l.localeCode.toLowerCase() === pathNameLanguage.toLowerCase())?.localeCode || \"en\";\r\n localStorage.setItem(\"currentLanguageCode\", pathNameLanguage);\r\n currentLanguage = pathNameLanguage;\r\n }\r\n else if (currentLanguage.toLowerCase() != pathNameLanguage.toLowerCase()) {\r\n pathNameParts[1] = currentLanguage;\r\n return ;\r\n }\r\n\r\n const langObject = LangObjectName[currentLanguage];\r\n\r\n const { pathname } = location;\r\n if (!pathname.includes(`/${currentLanguage}/`)) {\r\n return ;\r\n }\r\n\r\n /**\r\n * Return Intl provider with default language set\r\n */\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }}\r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport { Switch, RouteProps } from 'react-router';\r\nimport { useIntl } from 'react-intl';\r\n\r\nexport const LocalizedSwitch: React.FC = ({ children }) => {\r\n /**\r\n * inject params and formatMessage through hooks, so we can localize the route\r\n */\r\n const { formatMessage, locale } = useIntl();\r\n\r\n /**\r\n * Apply localization to all routes\r\n * Also checks if all children elements are components\r\n */\r\n return (\r\n \r\n {React.Children.map(children, child =>\r\n React.isValidElement(child)\r\n ? React.cloneElement(child, {\r\n ...child.props,\r\n path: localizeRoutePath(child.props.path)\r\n })\r\n : child\r\n )}\r\n \r\n );\r\n\r\n /**\r\n *\r\n * @param path can be string, undefined or string array\r\n * @returns Localized string path or path array\r\n */\r\n function localizeRoutePath(path?: string | string[]) {\r\n switch (typeof path) {\r\n case 'undefined':\r\n return undefined;\r\n case 'object':\r\n return path.map(key => `/${locale}` + formatMessage({ id: key }));\r\n default:\r\n const isFallbackRoute = path === '*';\r\n return isFallbackRoute\r\n ? path\r\n : `/${locale}` + formatMessage({ id: path });\r\n }\r\n }\r\n};\r\n","import * as localizations from './localizations';\r\nimport { ILanguage } from './localizations';\r\n\r\ninterface IAppStrings {\r\n [key: string]: ILanguage\r\n}\r\n\r\nexport const appStrings: IAppStrings = localizations;\r\nexport * from './components/LocalizedRouter';\r\nexport * from './components/LocalizedSwitch';\r\nexport * from './components/LanguageSwitcher';\r\n","const whiteColor = '#FFFFFF';\r\nconst blackColor = '#000000';\r\nconst primaryColor: string = '#1A1A1A';\r\nconst secondaryColor: string = '#F6F6F6';\r\nconst veryLightGreyColor: string = '#E5E5E5';\r\nconst lightGreyColor: string = '#CCCCCC';\r\nconst darkGreyColor: string = '#353535';\r\nconst darkerGreyColor: string = '#4C4C4C';\r\nconst pinkSwan: string = '#B2B2B2';\r\nconst errorRedColor: string = '#FD222C';\r\nconst berry: string = '#AB0066';\r\nconst grey: string = '#7F7F7F';\r\n\r\nexport default {\r\n whiteColor,\r\n primaryColor,\r\n secondaryColor,\r\n veryLightGreyColor,\r\n lightGreyColor,\r\n darkGreyColor,\r\n darkerGreyColor,\r\n pinkSwan,\r\n errorRedColor,\r\n berry,\r\n blackColor,\r\n grey,\r\n}","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n select: {\r\n minWidth: \"156px\",\r\n height: \"32px\",\r\n background: colors.darkGreyColor,\r\n borderRadius: \"24px\",\r\n color: colors.whiteColor,\r\n fontSize: \"12px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"16px\",\r\n textTransform: \"none\",\r\n padding: \"8px 16px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n chevronDown: {\r\n \"& img\": {\r\n width: \"16px\",\r\n height: \"6px\",\r\n },\r\n },\r\n dropdown: {\r\n top: theme.spacing(8),\r\n \"& .MuiPaper-rounded\": {\r\n borderRadius: \"0\",\r\n top: theme.spacing(8),\r\n boxShadow: \"none\",\r\n },\r\n },\r\n dropdownItem: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n width: \"172px\",\r\n padding: \"0 0px\",\r\n fontSize: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n cursor: \"default\",\r\n \"& a\": {\r\n textDecoration: \"none\",\r\n color: colors.primaryColor,\r\n lineHeight: \"24px\",\r\n padding: \"4px 0\",\r\n display: \"inline-block\",\r\n fontSize: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n },\r\n \"&:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n },\r\n navlinkDropdownItem: {\r\n padding: \"4px 16px !important\",\r\n width: \"172px\"\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import { createContext, useContext } from 'react';\r\nimport { IUserContext } from '../models/User';\r\n\r\nconst AuthContext = createContext(null);\r\n\r\nfunction useAuth() {\r\n return useContext(AuthContext);\r\n}\r\n\r\nexport { AuthContext, useAuth }","export enum AppRoute {\r\n Home = \"home\",\r\n About = \"about\",\r\n ProjectsMy = \"projectsMy\",\r\n Project = \"project\",\r\n Detector = \"detector\",\r\n Templates = \"templates\",\r\n Register = \"register\",\r\n RegisterConfirmation = \"registerConfirmation\",\r\n ResetEmailConfirmation = \"resetEmailConfirmation\",\r\n AccountActivated = \"accountActivated\",\r\n ActivationLinkExpired = \"activationLinkExpired\",\r\n ActivationFailed = \"activationFailed\",\r\n ChangeEmailConfirmation = \"changeEmailConfirmation\",\r\n MyAccount = \"myAccount\",\r\n ForgotPassword = \"forgotPassword\",\r\n ResetPassword = \"resetPassword\",\r\n ChangeEmailStatus = \"changeEmail\",\r\n InstallerView = \"installerView\",\r\n InstallerViewLoggedIn = \"installerViewLoggedIn\",\r\n Page404 = \"404\",\r\n ChangePasswordSuccess = \"changePasswordSuccess\"\r\n}\r\n\r\nexport const AppRouteTitles = new Map([\r\n [AppRoute.Home, \"home\"],\r\n [AppRoute.About, \"about\"],\r\n [AppRoute.ProjectsMy, \"projectsMy\"],\r\n [AppRoute.Project, \"project\"],\r\n [AppRoute.Detector, \"detector\"],\r\n [AppRoute.Templates, \"templates\"],\r\n [AppRoute.Register, \"register\"],\r\n [AppRoute.RegisterConfirmation, \"registerConfirmation\"],\r\n [AppRoute.ResetEmailConfirmation, \"resetEmailConfirmation\"],\r\n [AppRoute.AccountActivated, \"accountActivated\"],\r\n [AppRoute.ActivationLinkExpired, \"activationLinkExpired\"],\r\n [AppRoute.ChangeEmailConfirmation, \"changeEmailConfirmation\"],\r\n [AppRoute.MyAccount, \"myAccount\"],\r\n [AppRoute.ForgotPassword, \"forgotPassword\"],\r\n [AppRoute.ResetPassword, \"resetPassword\"],\r\n [AppRoute.ChangeEmailStatus, \"changeEmail\"],\r\n [AppRoute.InstallerView, \"installerView\"],\r\n [AppRoute.InstallerViewLoggedIn, \"installerViewLoggedIn\"],\r\n [AppRoute.Page404, \"404\"],\r\n [AppRoute.ChangePasswordSuccess,\"changePasswordSuccess\"]\r\n]);\r\n","import { useEffect, useRef } from 'react';\r\n\r\nconst useInterval = (callback: Function, delay?: number | null) => {\r\n const savedCallback = useRef(() => {});\r\n\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n });\r\n\r\n useEffect(() => {\r\n if (delay !== null) {\r\n const interval = setInterval(() => savedCallback.current(), delay || 0);\r\n return () => clearInterval(interval);\r\n }\r\n return undefined;\r\n }, [delay]);\r\n};\r\n\r\nexport { useInterval }","import React, { useEffect, useState } from \"react\";\r\nimport { NavLink, useLocation } from \"react-router-dom\";\r\nimport { useIntl } from \"react-intl\";\r\nimport {\r\n Button,\r\n InputAdornment,\r\n Popover,\r\n} from \"@material-ui/core\";\r\nimport i18n from \"../../../../i18n\";\r\nimport { AppLanguage, AppCountries, LangObjectName } from \"../../../enums/laguages\";\r\nimport { appStrings } from \"..\";\r\nimport useStyles from \"./LanguageSwitcher.style\";\r\nimport { useAuth } from \"../../../../context/context\"\r\nimport { AppRoute } from \"../../../constants/routes\";\r\nimport { useInterval } from \"../../../../context/interval\";\r\n\r\nconst LanguageSwitcher: React.FC = () => {\r\n const classes = useStyles();\r\n const { pathname } = useLocation();\r\n const { locale, messages } = useIntl();\r\n const authStore = useAuth();\r\n const [currentLanguage, setCurrentLanguage] = useState(authStore?.getCurrentLanguageCode());\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n\r\n const useQuery = () => {\r\n return new URLSearchParams(useLocation().search);\r\n };\r\n let query = useQuery();\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? \"simple-popover\" : undefined;\r\n\r\n const changeLanguage = (code: string) => {\r\n i18n.changeLanguage(code);\r\n authStore?.updateCurrentLanguageCode(code);\r\n setCurrentLanguage(code);\r\n };\r\n\r\n useInterval(() => {\r\n if (currentLanguage !== authStore?.getCurrentLanguageCode()) {\r\n setCurrentLanguage(authStore?.getCurrentLanguageCode());\r\n }\r\n }, 300);\r\n\r\n const displayCurrentLocaleCode = () => {\r\n return currentLanguage || \"en\";\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {AppCountries[displayCurrentLocaleCode()]}\r\n \r\n \"dropdown\"\r\n \r\n \r\n \r\n {Object.keys(AppLanguage).map((lang) => (\r\n
\r\n {\r\n changeLanguage(AppLanguage[lang]);\r\n handleClose();\r\n }}\r\n to={getMatchingRoute(AppLanguage[lang])}\r\n >\r\n {AppCountries[AppLanguage[lang]]}\r\n \r\n
\r\n ))}\r\n \r\n {/* \r\n \r\n {Object.keys(AppLanguage).map((lang, index) => (\r\n \r\n {AppCountries[AppLanguage[lang]]}\r\n \r\n ))}\r\n \r\n */}\r\n \r\n );\r\n\r\n function getMatchingRoute(language: string) {\r\n const [, route] = pathname.split(locale);\r\n const routeKey: string = Object.keys(messages).find((key) => messages[key] === route) || \"\";\r\n\r\n let matchingRoute = \"\";\r\n\r\n if (routeKey === \"\" && route.indexOf(AppRoute.Project) !== -1) {\r\n // current route is like \"/locale/project/:id\"\r\n let splitRouteBySlash = pathname.split(\"/\");\r\n if (splitRouteBySlash.length > 0) {\r\n let projectId = splitRouteBySlash[splitRouteBySlash.length - 1];\r\n matchingRoute = \"/\" + AppRoute.Project + \"/\" + projectId;\r\n }\r\n } else {\r\n let langObject = LangObjectName[language];\r\n matchingRoute = appStrings[langObject][routeKey];\r\n }\r\n if (query.toString()) {\r\n return `/${language}` + matchingRoute + '?' + query.toString();\r\n }\r\n\r\n return `/${language}` + matchingRoute;\r\n }\r\n};\r\n\r\nexport default LanguageSwitcher;\r\n","export const getLocalizedRoute = (path: string, locale: string, formater: any) => {\r\n return `/${locale}` + formater({ id: path });\r\n}\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n userName: {\r\n color: colors.veryLightGreyColor,\r\n \"& img\": {\r\n width: \"20px\",\r\n height: \"auto\",\r\n },\r\n \"& span\": {\r\n minWidth: \"60px\",\r\n paddingLeft: \"4px\",\r\n fontSize: \"16px\",\r\n fontFamily: \"Roboto\",\r\n lineHeight: \"18px\",\r\n fontWeight: 500,\r\n letterSpacing: \"-0.04em\",\r\n textAlign: \"center\",\r\n textTransform: \"none\",\r\n },\r\n },\r\n dropdown: {\r\n top: theme.spacing(8),\r\n \"& .MuiPaper-rounded\": {\r\n borderRadius: \"0\",\r\n top: theme.spacing(8),\r\n boxShadow: \"none\",\r\n },\r\n },\r\n dropdownItem: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n width: \"120px\",\r\n padding: \"4px 16px\",\r\n color: colors.primaryColor,\r\n lineHeight: \"24px\",\r\n fontSize: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n \"&:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n cursor: \"default\",\r\n },\r\n myAccountName: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none\",\r\n }\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Typography, Popover, Button } from \"@material-ui/core\";\r\nimport { useIntl } from \"react-intl\";\r\nimport { useAuth } from \"../../../context/context\";\r\nimport { AppRoute } from \"../../../common/constants/routes\";\r\nimport { getLocalizedRoute } from \"../../../common/services/i18n/utils/routeLocalization\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useStyles from \"./MyAccount.style\";\r\n\r\ninterface IMyAccount {\r\n hideInstallerBar?(): void;\r\n}\r\n\r\nconst MyAccount: React.FC = (props) => {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const { formatMessage, locale } = useIntl();\r\n const authStore = useAuth();\r\n const history = useHistory();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { hideInstallerBar } = props;\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n if (authStore?.isLoggedIn) {\r\n setAnchorEl(event.currentTarget);\r\n } else {\r\n history.push(getLocalizedRoute(AppRoute.Home, locale, formatMessage));\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n const id = open ? \"simple-popover\" : undefined;\r\n\r\n const resetInstallerView = () => {\r\n authStore?.setImpersonatedUserHistory(null);\r\n authStore?.setImpersonatedUserEmail(null);\r\n\r\n localStorage.setItem(\"toImpersonateUserEmail\", \"null\");\r\n\r\n if (hideInstallerBar) {\r\n hideInstallerBar();\r\n }\r\n }\r\n\r\n const logout = () => {\r\n authStore?.setAuthTokens();\r\n authStore?.removeItems();\r\n authStore?.setIsLogged(false);\r\n authStore?.setIsSuperUser(false);\r\n\r\n resetInstallerView();\r\n\r\n history.push(getLocalizedRoute(AppRoute.Home, locale, formatMessage));\r\n handleClose();\r\n };\r\n\r\n const redirectToMyAccount = () => {\r\n history.push(getLocalizedRoute(AppRoute.MyAccount, locale, formatMessage));\r\n handleClose();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {authStore?.isLoggedIn\r\n ? authStore.userHistory?.name\r\n : t(\"translation:common.loginLabel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:menu.myAccount\")}\r\n \r\n \r\n {t(\"translation:menu.logout\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MyAccount;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n headerContainer: {\r\n backgroundColor: colors.primaryColor,\r\n position: \"initial\",\r\n width: \"100%\",\r\n paddingRight: \"0 !important\",\r\n minHeight: \"64px\",\r\n boxShadow: \"none\",\r\n },\r\n wrapContainer: {\r\n // flexWrap: \"nowrap\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n paddingLeft: \"56px\",\r\n },\r\n },\r\n logo: {\r\n alignSelf: \"center\",\r\n paddingRight: \"38px\",\r\n \"& img\": {\r\n height: \"auto\",\r\n width: \"70px\",\r\n imageRendering: \"-webkit-optimize-contrast\"\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n paddingTop: \"15px\",\r\n flexGrow: 1,\r\n },\r\n },\r\n menu: {\r\n display: \"flex\",\r\n width: \"51%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"auto\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n flexWrap: \"wrap\",\r\n },\r\n },\r\n align: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n justifyContent: \"space-around\",\r\n },\r\n },\r\n alignStart: {\r\n justifyContent: \"start\",\r\n },\r\n items: {\r\n \"& a\": {\r\n color: colors.secondaryColor,\r\n textDecoration: \"none\",\r\n lineHeight: \"58px\",\r\n borderBottom: `6px solid transparent`,\r\n minWidth: \"90px\",\r\n height: \"100%\",\r\n textAlign: \"center\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n minWidth: \"132px\",\r\n textAlign: \"center\",\r\n },\r\n },\r\n \"& a.underline\": {\r\n borderBottom: `6px solid ${colors.veryLightGreyColor}`,\r\n },\r\n fontSize: \"16px\",\r\n fontFamily: \"Roboto\",\r\n lineHeight: \"18px\",\r\n fontWeight: 500,\r\n letterSpacing: \"-0.04em\",\r\n overflow: \"visible\",\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n \"&.MuiListItem-root.Mui-selected\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& .MuiTouchRipple-root\": {\r\n display: \"none\",\r\n },\r\n },\r\n myAccount: {\r\n alignSelf: \"center\",\r\n marginLeft: \"auto\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginLeft: 0,\r\n },\r\n },\r\n languages: {\r\n marginLeft: theme.spacing(3),\r\n marginTop: theme.spacing(2),\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginBottom: theme.spacing(2),\r\n marginLeft: 0,\r\n },\r\n },\r\n underline: {},\r\n badge: {\r\n \"& .MuiBadge-badge\": {\r\n height: \"16px\",\r\n minWidth: \"16px\",\r\n fontSize: \"10px\",\r\n lineHeight: \"11px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n \"& .MuiBadge-anchorOriginTopRightRectangle\": {\r\n top: \"20px\",\r\n right: \"-18px\",\r\n },\r\n },\r\n hideInstaller: {\r\n marginLeft: \"80px\",\r\n marginTop: \"6px\",\r\n marginBottom: \"6px\",\r\n paddingLeft:\"0px\",\r\n fontSize: \"16px\",\r\n lineHeight: \"1\",\r\n textTransform: \"none\",\r\n textDecoration: \"underline\",\r\n paddingRight: \"18px\"\r\n },\r\n disableInstaller: {\r\n marginTop: \"6px\",\r\n marginBottom: \"6px\",\r\n paddingLeft:\"0px\",\r\n fontSize: \"16px\",\r\n lineHeight: \"1\",\r\n textTransform: \"none\",\r\n float: \"right\",\r\n marginRight: \"16px\",\r\n textDecoration: \"underline\"\r\n },\r\n menuButton: {\r\n },\r\n drawerPaper: {\r\n width: \"100%\",\r\n backgroundColor: \"#1A1A1A\",\r\n },\r\n drawerHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-end',\r\n \"& button\": {\r\n color: \"#FFFFFF\",\r\n },\r\n },\r\n drawerMenu:{\r\n color: \"#FFFFFF\",\r\n \"& a span\": {\r\n fontSize: \"1rem !important\",\r\n },\r\n flexGrow: 1,\r\n \"& a.active\": {\r\n backgroundColor: \"#444 !important\",\r\n }\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n AppBar,\r\n Toolbar,\r\n MenuItem,\r\n Grid,\r\n Badge,\r\n Button,\r\n IconButton,\r\n} from \"@material-ui/core\";\r\nimport { Link, NavLink, useLocation } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useIntl } from \"react-intl\";\r\nimport i18n from \"../../i18n\";\r\nimport LanguageSwitcher from \"../../common/services/i18n/components/LanguageSwitcher\";\r\nimport { getLocalizedRoute } from \"../../common/services/i18n/utils/routeLocalization\";\r\nimport { AppRoute } from \"../../common/constants/routes\";\r\nimport MyAccount from \"./components/MyAccount\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport useStyles from \"./Header.style\";\r\nimport {\r\n useMediaQuery,\r\n useTheme,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n} from \"@material-ui/core\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\n//import Drawer from '@material-ui/core/Drawer';\r\nimport SwipeableDrawer from \"@material-ui/core/SwipeableDrawer\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\n\r\nconst Header: React.FC = () => {\r\n const classes = useStyles();\r\n const { formatMessage, locale } = useIntl();\r\n const authStore = useAuth();\r\n let location = useLocation();\r\n let history = useHistory();\r\n\r\n let globalAccess = localStorage.getItem(\"globalAccess\") ?? \"\";\r\n const [hasAccessToPlatform] = useState(globalAccess === \"true\");\r\n\r\n const [seeInstallerBar, setSeeInstallerBar] = useState(false);\r\n const [userHistory, setUserHistory] = useState(undefined);\r\n const [hiddenInstaller, setHiddenInstaller] = useState(false);\r\n\r\n const toImpersonateUserEmail = localStorage.getItem(\"toImpersonateUserEmail\");\r\n const impersonatedUserEmail = localStorage.getItem(\"impersonatedUserEmail\");\r\n\r\n const [impersonatedUserFullname, setImpersonatedUserFullname] = useState(\"\");\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n const theme = useTheme();\r\n const isSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n\r\n useEffect(() => {\r\n // console.log(impersonatedUserEmail);\r\n if (\r\n toImpersonateUserEmail != undefined &&\r\n toImpersonateUserEmail != null &&\r\n toImpersonateUserEmail != \"null\" &&\r\n toImpersonateUserEmail.length > 4\r\n ) {\r\n setSeeInstallerBar(true);\r\n let impersonatedUserHist = authStore?.getImpersonatedUserHistory();\r\n setUserHistory(impersonatedUserHist);\r\n\r\n setImpersonatedUserFullname(\r\n impersonatedUserHist[\"firstName\"] +\r\n \" \" +\r\n impersonatedUserHist[\"lastName\"]\r\n );\r\n } else {\r\n setSeeInstallerBar(false);\r\n }\r\n setHiddenInstaller(false);\r\n }, [impersonatedUserEmail]);\r\n\r\n useEffect(() => {\r\n i18n.changeLanguage(locale);\r\n\r\n if (\r\n impersonatedUserEmail == undefined ||\r\n impersonatedUserEmail == null ||\r\n impersonatedUserEmail == \"null\" ||\r\n impersonatedUserEmail.length <= 1\r\n ) {\r\n setHiddenInstaller(true);\r\n }\r\n }, []);\r\n\r\n const localizeRouteKey = (path: string) => {\r\n return `/${locale}` + formatMessage({ id: path });\r\n };\r\n\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const countNotifications = () => {\r\n if (authStore) {\r\n const newReceivedTemplates = authStore.newReceivedTemplates;\r\n if (newReceivedTemplates > 0) {\r\n return newReceivedTemplates;\r\n }\r\n return authStore.myNewTemplates;\r\n }\r\n };\r\n\r\n const shouldHideForMaintenancePage = () => {\r\n if (authStore?.isLoggedIn) {\r\n return false;\r\n }\r\n\r\n return !hasAccessToPlatform;\r\n };\r\n\r\n const deactivateInstallerView = () => {\r\n setSeeInstallerBar(false);\r\n setHiddenInstaller(false);\r\n\r\n authStore?.setImpersonatedUserHistory(null);\r\n authStore?.setImpersonatedUserEmail(null);\r\n\r\n localStorage.setItem(\"toImpersonateUserEmail\", \"null\");\r\n\r\n history.push(\r\n getLocalizedRoute(AppRoute.InstallerView, locale, formatMessage)\r\n );\r\n //window.location.reload();\r\n };\r\n\r\n const hideInstallerView = () => {\r\n if (hiddenInstaller) {\r\n setHiddenInstaller(false);\r\n authStore?.setImpersonatedUserEmail(toImpersonateUserEmail);\r\n } else {\r\n setHiddenInstaller(true);\r\n authStore?.setImpersonatedUserEmail(null);\r\n }\r\n window.location.reload();\r\n //history.push(getLocalizedRoute(AppRoute.InstallerView, locale, formatMessage));\r\n };\r\n\r\n const hideInstallerBar = () => {\r\n setSeeInstallerBar(false);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n\r\n \r\n {!isSM && (\r\n \r\n \r\n {t(\"translation:menu.about\")}\r\n \r\n \r\n \r\n )}\r\n {authStore?.isLoggedIn && (\r\n <>\r\n {!isSM && (\r\n \r\n {\r\n return (\r\n location.pathname.includes(\"projects/my\") ||\r\n location.pathname.includes(\"project/\")\r\n );\r\n }}\r\n >\r\n {t(\"translation:menu.projects\")}\r\n \r\n \r\n )}\r\n {!isSM && (\r\n \r\n \r\n {t(\"translation:menu.detector\")}\r\n \r\n \r\n )}\r\n {!isSM && (\r\n \r\n \r\n \r\n {t(\"translation:menu.templates\")}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n\r\n \r\n {!shouldHideForMaintenancePage() && (\r\n \r\n )}\r\n \r\n\r\n {isSM && (\r\n setOpen(true)}\r\n >\r\n \r\n \r\n )}\r\n\r\n {!isSM && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {seeInstallerBar && (\r\n \r\n \r\n {hiddenInstaller\r\n ? `${i18n.t(\"translation:installerView.unhideView\", {\r\n installer: impersonatedUserFullname,\r\n })}`\r\n : `${i18n.t(\"translation:installerView.hideView\", {\r\n installer: impersonatedUserFullname,\r\n })}`}\r\n \r\n\r\n \r\n\r\n \r\n {`${i18n.t(\"translation:installerView.disableInstallerView\", {\r\n installer: impersonatedUserFullname,\r\n })}`}\r\n \r\n \r\n )}\r\n \r\n setOpen(false)}\r\n onOpen={() => setOpen(true)}\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n >\r\n {authStore?.isLoggedIn && (\r\n setOpen(false)} className={classes.drawerMenu}>\r\n
\r\n setOpen(false)}>\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\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 Header;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n footerContainer: {\r\n backgroundColor: colors.secondaryColor,\r\n mixBlendMode: \"multiply\",\r\n padding: \"31px 120px 52px\",\r\n justifyContent: \"space-between\",\r\n marginTop: \"auto\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"30px 60px\",\r\n },\r\n },\r\n footerTitle: {\r\n fontSize: \"14px\",\r\n lineHeight: \"36px\",\r\n color: colors.primaryColor,\r\n fontFamily: \"humanistBD\",\r\n borderBottom: `1px solid ${colors.pinkSwan}`,\r\n paddingBottom: \"10px\",\r\n marginBottom: \"15px\",\r\n maxWidth: \"155px\",\r\n minWidth: \"max-content\"\r\n },\r\n footerItem: {\r\n color: colors.darkerGreyColor,\r\n fontSize: \"14px\",\r\n fontFamily: \"humanistRM\",\r\n lineHeight: \"30px\",\r\n width: \"300px\",\r\n whiteSpace: \"pre-line\"\r\n },\r\n footerHiddenItem: {\r\n color: colors.secondaryColor,\r\n fontSize: \"14px\",\r\n fontFamily: \"humanistRM\",\r\n lineHeight: \"30px\",\r\n width: \"300px\",\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { Grid, Typography } from \"@material-ui/core\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useStyles from \"./Footer.style\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport { LangObjectName } from \"../../common/enums/laguages\";\r\nimport { appStrings } from \"../../common/services/i18n\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { contactDetails } from \"../../common/constants/contactDetails\";\r\n\r\nconst Footer: React.FC = () => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const authStore = useAuth();\r\n\r\n const getCurrentLanguageCode = () => {\r\n if (authStore?.getCurrentLanguageCode()) {\r\n return authStore?.getCurrentLanguageCode();\r\n }\r\n return \"en\";\r\n };\r\n\r\n const getCustomerServicesLink = () => {\r\n const langCode = getCurrentLanguageCode();\r\n const langObject = LangObjectName[langCode];\r\n return appStrings[langObject][\"customerServicesLink\"];\r\n };\r\n\r\n const getTermsAndConditionsLink = () => {\r\n const langCode = getCurrentLanguageCode();\r\n const langObject = LangObjectName[langCode];\r\n return appStrings[langObject][\"termsAndConditionsLink\"];\r\n };\r\n\r\n const getPrivacyPolicyLink = () => {\r\n const langCode = getCurrentLanguageCode();\r\n const langObject = LangObjectName[langCode];\r\n return appStrings[langObject][\"privacyPolicyLink\"];\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {t(\"translation:footer.supportTitle\")}\r\n \r\n \r\n \r\n {t(\"translation:footer.supportCustomerService\")}\r\n \r\n \r\n {\"-\"}\r\n {\"-\"}\r\n \r\n {t(\"translation:footer.supportVersion\") + \" 1.4\"}\r\n \r\n \r\n \r\n \r\n {t(\"translation:footer.corporateTitle\")}\r\n \r\n \r\n \r\n {t(\"translation:footer.corporateTerms\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:footer.corporatePrivacy\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:footer.contactTitle\")}\r\n \r\n \r\n {t(\"translation:footer.contactAddress\")}\r\n \r\n \r\n {t(\"translation:footer.contactCity\")}\r\n \r\n \r\n {t(\"translation:footer.contactPhone\")}\r\n \r\n \r\n {t(\"translation:footer.contactFax\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import axios from 'axios';\r\n\r\naxios.defaults.baseURL = process.env.REACT_APP_BASE_URL;\r\n\r\naxios.interceptors.request.use(request => {\r\n const existingToken = localStorage.getItem(\"tokens\");\r\n if (existingToken) {\r\n request.headers['Authorization'] = `Basic ${existingToken}`;\r\n }\r\n request.headers['Cache-Control'] = 'no-cache';\r\n request.headers['Pragma'] = 'no-cache';\r\n request.headers['Expires'] = '0';\r\n\r\n return request;\r\n}, error => {\r\n return Promise.reject(error);\r\n});\r\n\r\n// // Add a response interceptor\r\n// axios.interceptors.response.use(function (response) {\r\n// return response;\r\n// }, function (error) {\r\n// return Promise.reject(error);\r\n// });\r\n\r\nclass HTTPService {\r\n sendMessage(method: string, url: string, body = {}, options: any = { headers: {} }) {\r\n const request = method.toLowerCase();\r\n const error = 'The first sendMessage() parameter must have one of the following values: get, post, put or delete!';\r\n const extraOptions = options;\r\n\r\n switch (request) {\r\n case 'get':\r\n return this.get(url, extraOptions);\r\n case 'post':\r\n return this.post(url, body, extraOptions);\r\n case 'put':\r\n return this.put(url, body, extraOptions);\r\n case 'delete':\r\n return this.delete(url, extraOptions);\r\n default:\r\n throw new Error(error);\r\n }\r\n }\r\n\r\n private get = (url:string, options: any) => axios.get(url, options)\r\n\r\n private post = (url: string, body: object, options: any) => axios.post(url, body, options)\r\n\r\n private put = (url: string, body: object, options: any) => axios.put(url, body, options)\r\n\r\n private delete = (url: string, options: any) => axios.delete(url, options)\r\n}\r\n\r\nconst httpService = new HTTPService();\r\nexport default httpService;\r\n","import { IUser } from \"../../models/User\";\r\n\r\ninterface ILoginResponseModel {\r\n id: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n country: string;\r\n language: string;\r\n jwt: string;\r\n expiresAt: string;\r\n isSuperUser: boolean;\r\n impersonatedUserEmail: string | null;\r\n}\r\n\r\nexport const mapFromLoginResponseToIUserModel = (\r\n data: ILoginResponseModel\r\n): IUser => ({\r\n id: data.id,\r\n email: data.email,\r\n firstName: data.firstName,\r\n lastName: data.lastName,\r\n name: `${data.firstName} ${data.lastName}`,\r\n country: data.country,\r\n language: data.language,\r\n jwt: data.jwt,\r\n expiresAt: data.expiresAt,\r\n isSuperUser: data.isSuperUser,\r\n impersonatedUserEmail: data.impersonatedUserEmail\r\n});\r\n","import httpService from \"../../data-services/HTTPService\";\r\nimport ILoginModel, {\r\n IChangeEmailModel,\r\n IChangePasswordModel,\r\n IGetResetEmailModel,\r\n IRegisterModel,\r\n IResendRegisterModel,\r\n IResetPasswordModel,\r\n} from \"../../models/AuthModel\";\r\nimport { IAccessResponse, IAuthResponse } from \"../../models/ResponseModel\";\r\nimport { mapFromLoginResponseToIUserModel } from \"./AuthMapper\";\r\nimport { AxiosResponse, AxiosError } from \"axios\";\r\nimport { IUserUpdate } from \"../../models/User\";\r\n\r\nconst baseUrl = \"/Account\";\r\n\r\nexport const access = async (password: string, browserLanguage: string): Promise => {\r\n try {\r\n const url = `${baseUrl}/Access?password=${password}&browserLanguage=${browserLanguage}`;\r\n const response: AxiosResponse = await httpService.sendMessage(\r\n \"get\",\r\n url\r\n );\r\n\r\n if (response.status === 200 || response.status === 204) {\r\n return { status: \"success\" };\r\n } else if (response.status === 400) {\r\n return { status: \"error\", message: \"Bad Request\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n\r\nexport const login = async (data: ILoginModel): Promise => {\r\n try {\r\n const url = `${baseUrl}/Login`;\r\n const response: AxiosResponse = await httpService.sendMessage(\r\n \"post\",\r\n url,\r\n data\r\n );\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: mapFromLoginResponseToIUserModel(response.data),\r\n };\r\n } else if (response.status === 400) {\r\n return { status: \"error\", message: \"Bad Request\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return {\r\n status: \"error\",\r\n statusCode: error.response.status,\r\n message: error.response.data.messages\r\n };\r\n }\r\n};\r\n\r\nexport const register = async (\r\n data: IRegisterModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/Register`;\r\n const response = await httpService.sendMessage(\"post\", url, data);\r\n\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n\r\n return { status: \"error\" };\r\n } catch (error) {\r\n if (error.response.data.messages === \"Email already in use.\" || error.response.data.message === \"Email already in use.\") {\r\n return { status: \"error_emailInUse\", message: \"Email already in use.\" };\r\n }\r\n\r\n if (error.response.data.messages === \"Invalid recaptcha.\") {\r\n return { status: \"error_invalidRecaptcha\", message: \"Invalid recaptcha.\" };\r\n }\r\n\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n\r\nexport const resendRegisterEmail = async (\r\n data: IResendRegisterModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/Register?isResend=true`;\r\n const response = await httpService.sendMessage(\"post\", url, data);\r\n\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n\r\nexport const updateUserData = async (\r\n data: IUserUpdate\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/UpdateUserData`;\r\n const response = await httpService.sendMessage(\"put\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n};\r\n\r\nexport const sendResetPasswordLink = async (\r\n data: IGetResetEmailModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/SendResetPasswordLink`;\r\n await httpService.sendMessage(\"post\", url, data);\r\n } catch (error) {\r\n } finally {\r\n return;\r\n }\r\n};\r\n\r\nexport const resetPassword = async (\r\n data: IResetPasswordModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/ResetPassword`;\r\n const response = await httpService.sendMessage(\"post\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n return { status: \"error\" };\r\n } catch (error) {\r\n debugger;\r\n if(error.response)\r\n {\r\n switch (error.response.status) {\r\n case 400:\r\n return { status: \"error\", message: error.response.data.developerMessage || \"The link has expired\" };\r\n case 401:\r\n return { status: \"error\", message: \"Unauthorized\" };\r\n case 404:\r\n return { status: \"error\", message: \"The link has expired or was an error\" };\r\n }\r\n }\r\n return { status: \"error\", message: \"An unknown error has occured. Please retry and if the problem persists contact support \" };\r\n }\r\n};\r\n\r\nexport const changePassword = async (\r\n data: IChangePasswordModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/ChangePassword`;\r\n const response = await httpService.sendMessage(\"post\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\", statusCode: response.status };\r\n }\r\n return { status: \"error\", statusCode: response.status };\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\", statusCode: error.response.status };\r\n }\r\n};\r\n\r\nexport const changeEmail = async (\r\n data: IChangeEmailModel\r\n): Promise => {\r\n try {\r\n const url = `${baseUrl}/SendResetEmailLink`;\r\n const response = await httpService.sendMessage(\"post\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\n\r\nconst inputAlign = {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n minHeight: \"100px\",\r\n};\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n formContainer: {\r\n width: \"352px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n margin: \"0 auto\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n verticalInputSpacing: {\r\n ...inputAlign,\r\n },\r\n lastTextfield: {\r\n marginBottom: \"7px\",\r\n ...inputAlign,\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n fontSize: \"16px\",\r\n lineHeight: \"28px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n },\r\n textInput: {\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n \"& .MuiInputBase-input\": {\r\n fontSize: \"16px\",\r\n lineHeight: \"18px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n height: \"18px\",\r\n backgroundColor: `${colors.veryLightGreyColor}!important`,\r\n },\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n labelPassword: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n verticalSpacing: {\r\n marginBottom: theme.spacing(2),\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n mainTitle: {\r\n fontSize: \"32px\",\r\n fontFamily: \"VistaSansReg\",\r\n lineHeight: \"34px\",\r\n textAlign: \"left\",\r\n marginBottom: theme.spacing(10),\r\n color: colors.blackColor,\r\n [theme.breakpoints.down(\"md\")]: {\r\n textAlign: \"center\",\r\n },\r\n },\r\n lineHeight: {\r\n lineHeight: \"28px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"./colors\";\r\nimport { CSSProperties } from \"react\";\r\n\r\nconst common: CSSProperties = {\r\n borderRadius: \"24px\",\r\n fontSize: \"16px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"28px\",\r\n padding: \"10px 24px\",\r\n textTransform: \"none\",\r\n};\r\n\r\nconst common14px: CSSProperties = {\r\n borderRadius: \"24px\",\r\n fontSize: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"24px\",\r\n padding: \"12px 20px\",\r\n textTransform: \"none\",\r\n};\r\n\r\nconst commonWithBorder: CSSProperties = {\r\n borderRadius: \"24px\",\r\n fontSize: \"16px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"26px\",\r\n padding: \"10px 24px\",\r\n textTransform: \"none\",\r\n};\r\n\r\nexport const lightButtonWithBorder: CSSProperties = {\r\n backgroundColor: colors.whiteColor,\r\n color: colors.primaryColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n borderRadius: \"24px\",\r\n fontSize: \"16px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"28px\",\r\n textTransform: \"none\",\r\n};\r\n\r\nconst useButtonStyles = makeStyles(() =>\r\n createStyles({\r\n primaryButton: {\r\n backgroundColor: colors.primaryColor,\r\n color: colors.secondaryColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.primaryColor,\r\n },\r\n ...common,\r\n \"&.MuiButton-root.Mui-disabled\": {\r\n backgroundColor: colors.grey,\r\n color: colors.secondaryColor,\r\n },\r\n },\r\n primaryButtonLargeWidth: {\r\n backgroundColor: colors.primaryColor,\r\n color: colors.secondaryColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.primaryColor,\r\n },\r\n ...common,\r\n \"&.MuiButton-root.Mui-disabled\": {\r\n backgroundColor: colors.grey,\r\n color: colors.secondaryColor,\r\n },\r\n width: \"352px !important\"\r\n },\r\n primaryButton14px: {\r\n backgroundColor: colors.primaryColor,\r\n color: colors.secondaryColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.primaryColor,\r\n },\r\n ...common14px,\r\n \"&.MuiButton-root.Mui-disabled\": {\r\n backgroundColor: colors.grey,\r\n color: colors.secondaryColor,\r\n },\r\n },\r\n inactiveButton: {\r\n backgroundColor: colors.darkGreyColor,\r\n color: colors.secondaryColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.darkGreyColor,\r\n },\r\n ...common,\r\n \"&.MuiButton-root.Mui-disabled\": {\r\n backgroundColor: colors.grey,\r\n color: colors.secondaryColor,\r\n },\r\n },\r\n secondaryButton: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n color: colors.darkGreyColor,\r\n ...common,\r\n },\r\n lightButton: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n color: colors.darkGreyColor,\r\n ...commonWithBorder,\r\n \"&.MuiButton-root:hover\": {\r\n backgroundColor: colors.whiteColor,\r\n },\r\n },\r\n lightButtonLargeWidth: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n color: colors.darkGreyColor,\r\n ...commonWithBorder,\r\n \"&.MuiButton-root:hover\": {\r\n backgroundColor: colors.whiteColor,\r\n },\r\n width: \"352px !important\"\r\n },\r\n lightButtonNoBorder: {\r\n backgroundColor: colors.whiteColor,\r\n color: colors.primaryColor,\r\n ...common,\r\n \"&:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n lightButtonWithBorder: {\r\n backgroundColor: colors.whiteColor,\r\n color: colors.darkGreyColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n ...common,\r\n \"&:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n lightButtonWithBorderLargeWidth: {\r\n backgroundColor: colors.whiteColor,\r\n color: colors.darkGreyColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n ...common,\r\n \"&:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n width: \"352px !important\"\r\n },\r\n })\r\n);\r\n\r\nexport default useButtonStyles;\r\n","import React from \"react\";\r\n\r\ninterface ShowPasswordProps {\r\n showPassword: boolean,\r\n}\r\n\r\nconst ShowPassword: React.FC = (props: ShowPasswordProps) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default ShowPassword;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\nimport { useIntl } from \"react-intl\";\r\nimport { useAuth } from \"../../../context/context\";\r\nimport {\r\n Grid,\r\n Typography,\r\n TextField,\r\n InputLabel,\r\n InputAdornment,\r\n IconButton,\r\n Button,\r\n Box,\r\n} from \"@material-ui/core\";\r\nimport { getLocalizedRoute } from \"../../../common/services/i18n/utils/routeLocalization\";\r\nimport { access, login } from \"../../../data-services/Auth/AuthService\";\r\nimport { AppRoute } from \"../../../common/constants/routes\";\r\nimport useStyles from \"./Login.style\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport { languageList } from \"../../../common/constants/countries\";\r\nimport { hasThisCountryWithThisLanguageSpecialLocaleCode } from \"../../../common/enums/laguages\"\r\nimport i18n from \"../../../i18n\";\r\nimport { IResendRegisterModel } from \"../../../models/AuthModel\";\r\nimport { resendRegisterEmail } from \"../../../data-services/Auth/AuthService\";\r\nimport ShowPassword from \"../../../common/components/ShowPassword\";\r\n\r\ninterface ILogin {\r\n maintenancePage: boolean;\r\n}\r\n\r\nconst Login: React.FC = (props) => {\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { formatMessage, locale } = useIntl();\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [email, setEmail] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [isAccountActivated, setIsAccountActivated] = useState(true);\r\n const [isloginDataValid, setIsLoginDataValid] = useState<\r\n boolean | undefined\r\n >();\r\n const authStore = useAuth();\r\n let history = useHistory();\r\n const { maintenancePage } = props;\r\n\r\n const handleClickShowPassword = () => {\r\n setShowPassword(!showPassword);\r\n };\r\n\r\n const setAccessToPlatformLocalStorage = (value: boolean) => {\r\n localStorage.setItem(\"globalAccess\", value.toString());\r\n }\r\n\r\n const postLogin = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (authStore) {\r\n if (!maintenancePage) {\r\n const { data: user, status, statusCode, message } = await login({ email, password });\r\n if (status === \"success\") {\r\n const language = languageList.find((l) => l.languageId === user.language);\r\n const country = user.country;\r\n if (language?.localeCode) {\r\n let localeCodeToSet = hasThisCountryWithThisLanguageSpecialLocaleCode(country, language?.name);\r\n if (localeCodeToSet === undefined) {\r\n localeCodeToSet = language?.localeCode;\r\n }\r\n i18n.changeLanguage(localeCodeToSet);\r\n authStore.updateCurrentLanguageCode(localeCodeToSet);\r\n history.push(getLocalizedRoute(AppRoute.Home, localeCodeToSet, formatMessage));\r\n //window.location.reload();\r\n }\r\n\r\n authStore.setAuthTokens(user.jwt);\r\n authStore.setIsLogged(true);\r\n authStore.setUser(user);\r\n authStore.persistUser(user);\r\n authStore.setCurrentUserId(user.id);\r\n // authStore.countReceivedTemplates();\r\n authStore.setIsSuperUser(user.isSuperUser);\r\n authStore.setImpersonatedUserEmail(user.impersonatedUserEmail);\r\n // authStore.countMyNewTemplates();\r\n\r\n setIsLoginDataValid(true);\r\n } else {\r\n if (statusCode == 400 && message == \"Account is not activated\") {\r\n setIsAccountActivated(false);\r\n }\r\n else {\r\n setIsAccountActivated(true);\r\n }\r\n\r\n authStore.setAuthTokens();\r\n authStore.removeItems();\r\n authStore.setIsLogged(false);\r\n setIsLoginDataValid(false);\r\n }\r\n } else {\r\n const { status } = await access(password, i18n.language ?? i18n.languages[0]);\r\n if (status === \"success\") {\r\n setAccessToPlatformLocalStorage(true);\r\n history.push(getLocalizedRoute(AppRoute.Home, locale, formatMessage));\r\n window.location.reload();\r\n }\r\n }\r\n }\r\n };\r\n\r\n const redirectToRegister = () => {\r\n history.push(getLocalizedRoute(AppRoute.Register, locale, formatMessage));\r\n };\r\n\r\n const isLoginFormValid = () => {\r\n if (isloginDataValid === undefined) {\r\n return true;\r\n }\r\n return isloginDataValid;\r\n };\r\n\r\n const resendEmail = async () => {\r\n try {\r\n const resendData: IResendRegisterModel = {\r\n email: email,\r\n browserLanguage: i18n.language\r\n };\r\n\r\n await resendRegisterEmail(resendData);\r\n\r\n history.push(`${getLocalizedRoute(AppRoute.RegisterConfirmation, locale, formatMessage)}?email=${encodeURIComponent(email)}`);\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {maintenancePage ? t(\"translation:home.mainTitleMaintenance\") : t(\"translation:home.mainTitle\")}\r\n \r\n \r\n\r\n {\r\n !maintenancePage\r\n &&\r\n \r\n \r\n \r\n {t(\"translation:common.emailLabel\")}\r\n \r\n {\r\n setEmail(e.target.value);\r\n }}\r\n />\r\n \r\n \r\n }\r\n\r\n \r\n \r\n
\r\n \r\n {t(\"translation:common.passwordLabel\")}\r\n \r\n \r\n {\r\n !maintenancePage\r\n &&\r\n t(\"translation:common.forgotPasswordLink\")\r\n }\r\n \r\n
\r\n\r\n {\r\n !maintenancePage\r\n &&\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n fullWidth={true}\r\n className={classes.textInput}\r\n onChange={(e) => {\r\n setPassword(e.target.value);\r\n }}\r\n />\r\n }\r\n\r\n {\r\n maintenancePage\r\n &&\r\n {\r\n setPassword(e.target.value);\r\n }}\r\n />\r\n }\r\n\r\n {!isLoginFormValid() && (\r\n \r\n {isAccountActivated &&\r\n \r\n {t(\"translation:common.emailorPasswordError\")}\r\n \r\n }\r\n\r\n {!isAccountActivated &&\r\n
\r\n \r\n {t(\"translation:common.accountNotActivated\")}\r\n \r\n\r\n \r\n {t(\"translation:common.resendActivationMail\")}\r\n \r\n
\r\n }\r\n
\r\n )}\r\n \r\n
\r\n\r\n {\r\n !maintenancePage\r\n &&\r\n \r\n \r\n {t(\"translation:common.newUserButton\")}\r\n \r\n \r\n }\r\n\r\n \r\n \r\n {t(\"translation:common.loginButton\")}\r\n \r\n \r\n\r\n\r\n {\r\n maintenancePage\r\n &&\r\n

{t(\"translation:home.underConstruction\")}

\r\n }\r\n\r\n \r\n );\r\n};\r\n\r\nexport default Login;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport { fade } from \"@material-ui/core/styles/colorManipulator\";\r\nimport colors from \"../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n homeContainer: {\r\n width: \"100%\",\r\n flexWrap: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignContent: \"center\",\r\n },\r\n },\r\n descriptionContainer: {\r\n //.width: \"50%\",\r\n maxWidth: \"50vw\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100vw\",\r\n maxWidth: \"100vw\",\r\n },\r\n },\r\n descriptionCard: {\r\n backgroundColor: fade(`${colors.secondaryColor}`, 0.6),\r\n borderRadius: \"0\",\r\n boxShadow: \"none\",\r\n },\r\n alignCenter: {\r\n width: \"57%\",\r\n margin: \"0 auto\",\r\n paddingBottom: theme.spacing(3),\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"90%\",\r\n },\r\n },\r\n title: {\r\n color: colors.darkerGreyColor,\r\n fontFamily: \"VistaSansBold\",\r\n fontSize: \"22px\",\r\n lineHeight: \"36px\",\r\n marginBottom: theme.spacing(4),\r\n //paddingTop: theme.spacing(6.5),\r\n },\r\n description: {\r\n color: colors.darkerGreyColor,\r\n fontFamily: \"Roboto, sans-serif\",\r\n fontSize: \"16px\",\r\n lineHeight: \"28px\",\r\n },\r\n loginContainer: {\r\n width: \"50%\",\r\n backgroundColor: colors.whiteColor,\r\n padding: \"50px 115px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n padding: \"50px 15px\",\r\n },\r\n },\r\n buttonSize: {\r\n minWidth: \"140px\",\r\n height: \"48px\",\r\n marginTop: \"32px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, {useState} from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useIntl } from \"react-intl\";\r\nimport {\r\n Grid,\r\n Card,\r\n CardContent,\r\n Button,\r\n Typography,\r\n CardMedia,\r\n} from \"@material-ui/core\";\r\nimport Login from \"../Auth/Login/Login\";\r\nimport { AppRoute } from \"../../common/constants/routes\";\r\nimport { getLocalizedRoute } from \"../../common/services/i18n/utils/routeLocalization\";\r\nimport useStyles from \"./Home.style\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\n\r\nconst Home: React.FC = () => {\r\n let history = useHistory();\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { formatMessage, locale } = useIntl();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n let globalAccess = localStorage.getItem(\"globalAccess\") ?? \"\";\r\n //const [hasAccessToPlatform] = useState(globalAccess === 'true');\r\n const hasAccessToPlatform = 'true';\r\n\r\n const handleClick = () => {\r\n history.push(getLocalizedRoute(AppRoute.About, locale, formatMessage));\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:home.descriptionTitle\")}\r\n \r\n \r\n {t(\"translation:home.content\")}\r\n \r\n {\r\n hasAccessToPlatform\r\n &&\r\n \r\n { t(\"translation:home.descriptionButton\")}\r\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 Home;\r\n","const isEmailValid = (email: string): boolean => {\r\n const regexp = new RegExp(\r\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\r\n );\r\n return regexp.test(email);\r\n};\r\n\r\nconst containsNumber = (text: string): boolean => {\r\n return /\\d/.test(text);\r\n};\r\n\r\nconst isPasswordValid = (password: string): boolean => {\r\n\r\n if(password.length < 8) return false; \r\n\r\n if(!containsNumber(password)) return false; \r\n\r\n var isSpecialChar = /[^a-zA-Z0-9]/g; // if contain anything else then english alphabet or numbers\r\n\r\n if(!isSpecialChar.test(password)) return false;\r\n\r\n const isUpperChar = /\\p{Lu}/u; // Does contain uppercase char\r\n\r\n if(!isUpperChar.test(password)) return false;\r\n\r\n const isLowerChar = /\\p{Ll}/u; // Does contain lowercase char\r\n\r\n if(!isLowerChar.test(password)) return false;\r\n\r\n return true;\r\n\r\n};\r\n\r\nexport default { isEmailValid, isPasswordValid };\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport { makeStyles, createStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n icon: {\r\n pointerEvents: 'none',\r\n position: 'absolute',\r\n paddingRight: '16px',\r\n right: 0,\r\n },\r\n}));\r\n\r\nconst ChevronDown: React.FC = (() => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \"dropdown\"\r\n );\r\n});\r\n\r\nexport default ChevronDown;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../styles/colors\";\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n select: {\r\n fontSize: \"16px\",\r\n lineHeight: \"24px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n borderRadius: \"24px\",\r\n width: \"100%\",\r\n \"& span\": {\r\n color: colors.primaryColor,\r\n textTransform: \"none\",\r\n },\r\n '& fieldset[class*=\"PrivateNotchedOutline-root-\"]': {\r\n \"&.MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n },\r\n \"& .MuiSelect-outlined.MuiSelect-outlined\": {\r\n padding: \"12px 56px 12px 24px\",\r\n },\r\n \"& img\": {\r\n width: \"30px\",\r\n height: \"20px\",\r\n },\r\n \"& .MuiList-padding\": {\r\n paddingTop: \"0\",\r\n paddingBottom: 0,\r\n },\r\n \"& .MuiSelect-select:focus\": {\r\n borderRadius: \"24px\",\r\n },\r\n },\r\n dropdownList: {\r\n boxShadow: \"none\",\r\n borderRadius: 0,\r\n \"& ul\": {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n maxHeight: \"300px\",\r\n overflowY: \"scroll\",\r\n },\r\n popupSelect: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n \"& .MuiListItem-root.Mui-selected, .MuiListItem-root.Mui-selected:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { FormControl, Select, MenuItem } from \"@material-ui/core\";\r\nimport ChevronDown from \"./ChevronDown\";\r\nimport useStyles from \"./DropDownSelect.style\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface IOption {\r\n name: string;\r\n key: string;\r\n languageId: string;\r\n}\r\n\r\ninterface IDropDownSelect {\r\n dropdownType: string; // \"countries\" or \"languages\"\r\n selectOptions: IOption[];\r\n selectedOption: string;\r\n handleChangeSelect(event: React.ChangeEvent<{ value: unknown }>): void;\r\n}\r\n\r\nconst DropDownSelect: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { dropdownType, selectOptions, selectedOption, handleChangeSelect } = props;\r\n\r\n const getDisplayName = (name: string) => {\r\n return t(`translation:${dropdownType}.${name}`);\r\n }\r\n\r\n return (\r\n \r\n \r\n {selectOptions.map((item, index) => (\r\n \r\n {item.name}\r\n {/*{getDisplayName(item.name)}*/}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DropDownSelect;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"./colors\";\r\nimport { CSSProperties } from \"react\";\r\n\r\nexport const commonHeaderThree: CSSProperties = {\r\n fontSize: \"22px !important\",\r\n lineHeight: \"26px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n paddingBottom: \"24px !important\",\r\n};\r\n\r\nexport const commonHeaderTwo: CSSProperties = {\r\n fontSize: \"32px !important\",\r\n lineHeight: \"26px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n paddingBottom: \"24px !important\",\r\n};\r\n\r\nexport const commonParagraph: CSSProperties = {\r\n fontSize: \"16px !important\",\r\n lineHeight: \"28px !important\",\r\n fontFamily: \"Roboto, sans-serif !important\",\r\n};\r\n\r\nexport const commonParagraph14px: CSSProperties = {\r\n fontSize: \"14px !important\",\r\n lineHeight: \"16px !important\",\r\n fontFamily: \"Roboto !important\",\r\n};\r\n\r\nexport const commonParagraph12px: CSSProperties = {\r\n fontSize: \"12px !important\",\r\n lineHeight: \"14px !important\",\r\n fontFamily: \"Roboto !important\",\r\n};\r\n\r\nexport const paragraph14pxHumanist: CSSProperties = {\r\n fontSize: \"14px !important\",\r\n lineHeight: \"16px !important\",\r\n fontFamily: \"humanistBD !important\",\r\n};\r\n\r\nexport const mainHeader: CSSProperties = {\r\n fontSize: \"44px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n lineHeight: \"47px !important\",\r\n color: colors.blackColor,\r\n};\r\n\r\nexport const primaryHeader: CSSProperties = {\r\n fontSize: \"44px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n lineHeight: \"47px !important\",\r\n};\r\n\r\nconst useTypographyStyles = makeStyles(() =>\r\n createStyles({\r\n root: {},\r\n mainHeader: {\r\n fontSize: \"44px !important\",\r\n lineHeight: \"47px !important\",\r\n color: colors.blackColor,\r\n fontFamily: \"humanistBD !important\",\r\n paddingBottom: \"40px !important\",\r\n },\r\n headerThreeBlack: {\r\n color: colors.primaryColor,\r\n ...commonHeaderThree,\r\n wordBreak: \"break-word\"\r\n },\r\n headerTwoBlack: {\r\n color: colors.primaryColor,\r\n ...commonHeaderTwo,\r\n },\r\n headerThreeLight: {\r\n color: colors.secondaryColor,\r\n ...commonHeaderThree,\r\n },\r\n lineNoWrap: {\r\n whiteSpace: \"nowrap\",\r\n },\r\n paragraphPrimary: {\r\n color: colors.primaryColor,\r\n ...commonParagraph,\r\n },\r\n paragraphBlack: {\r\n color: colors.darkGreyColor,\r\n ...commonParagraph,\r\n },\r\n paragraphBlack14px: {\r\n color: colors.darkGreyColor,\r\n lineHeight: \"26px !important\",\r\n fontFamily: \"Roboto, sans-serif !important\",\r\n fontSize: \"14px !important\",\r\n },\r\n paragraphLight: {\r\n color: colors.veryLightGreyColor,\r\n ...commonParagraph,\r\n },\r\n tabTitles: {\r\n fontSize: \"24px !important\",\r\n lineHeight: \"26px !important\",\r\n color: colors.primaryColor,\r\n fontFamily: \"VistaSansReg !important\",\r\n \"font-weight\": \"700 !important\",\r\n },\r\n modalLabel: {\r\n color: colors.primaryColor,\r\n ...commonParagraph14px,\r\n },\r\n modalLabelCursorDefault: {\r\n color: colors.primaryColor,\r\n cursor: \"default\",\r\n ...commonParagraph14px,\r\n },\r\n modalContent: {\r\n color: colors.grey,\r\n fontSize: \"12px !important\",\r\n lineHeight: \"16px !important\",\r\n fontFamily: \"Roboto !important\",\r\n paddingTop: \"4px !important\",\r\n },\r\n modalContentCursorDefault: {\r\n color: colors.grey,\r\n cursor: \"default\",\r\n fontSize: \"12px !important\",\r\n lineHeight: \"16px !important\",\r\n fontFamily: \"Roboto !important\",\r\n paddingTop: \"4px !important\",\r\n },\r\n })\r\n);\r\n\r\nexport default useTypographyStyles;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph, mainHeader } from \"../../../common/styles/typography\";\r\n\r\nconst inputAlign = {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n minHeight: \"100px\",\r\n};\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n mainHeader: {\r\n ...mainHeader,\r\n },\r\n registerWrapper: {\r\n width: \"352px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n margin: \"0 auto\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n registerItem: {\r\n width: \"352px\",\r\n ...inputAlign,\r\n \"& .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n \"& .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n verticalInputSpacing: {\r\n ...inputAlign,\r\n },\r\n lastTextfield: {\r\n marginBottom: \"7px\",\r\n ...inputAlign,\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingBottom: \"8px\",\r\n paddingTop: \"8px\",\r\n },\r\n textInput: {\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n \"& .MuiInputBase-input\": {\r\n fontSize: \"16px\",\r\n lineHeight: \"18px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n height: \"18px\",\r\n backgroundColor: `${colors.veryLightGreyColor}!important`,\r\n '&::placeholder': {\r\n color: \"#7F7F7F\",\r\n opacity: 1\r\n }\r\n },\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n required: {\r\n color: \"red\",\r\n },\r\n spaceItems: {\r\n marginLeft: \"7px\",\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n recaptcha: {\r\n marginBottom: theme.spacing(4),\r\n },\r\n privacyText: {\r\n color: colors.primaryColor,\r\n wordBreak: \"break-word\",\r\n lineHeight: \"28px\",\r\n fontSize: \"16px\",\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport \"./LoadingSpinner.css\";\r\n\r\nexport default function LoadingSpinner() {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React, { LegacyRef, useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useIntl } from \"react-intl\";\r\nimport ReCAPTCHA from \"react-google-recaptcha\";\r\nimport {\r\n Grid,\r\n InputLabel,\r\n TextField,\r\n InputAdornment,\r\n IconButton,\r\n Typography,\r\n Button,\r\n Box,\r\n Modal,\r\n} from \"@material-ui/core\";\r\nimport { getLocalizedRoute } from \"../../../common/services/i18n/utils/routeLocalization\";\r\nimport { AppRoute } from \"../../../common/constants/routes\";\r\nimport validators from \"../../../common/utils/validators\";\r\nimport DropDownSelect from \"../../../common/components/DropDownSelect\";\r\nimport { register } from \"../../../data-services/Auth/AuthService\";\r\nimport { IRegisterModel } from \"../../../models/AuthModel\";\r\nimport { reCAPTCHASiteKey } from \"../../../common/constants/recaptcha\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./Register.style\";\r\nimport i18n from \"../../../i18n\";\r\nimport { useAuth } from \"../../../context/context\"\r\nimport { useInterval } from \"../../../context/interval\";\r\nimport { ILanguageCountryModel } from \"../../../models/LanguageCountryModel\";\r\nimport { languageCountryList } from \"../../../common/constants/countries\";\r\nimport ShowPassword from \"../../../common/components/ShowPassword\";\r\nimport { LangObjectName } from \"../../../common/enums/laguages\";\r\nimport { appStrings } from \"../../../common/services/i18n\";\r\nimport LoadingSpinner from \"../../../LoadingSpinner\";\r\n\r\nconst Register: React.FC = () => {\r\n const { t } = useTranslation([\"translation\"]);\r\n const { formatMessage, locale } = useIntl();\r\n const recaptchaRef: LegacyRef = React.createRef();\r\n const authStore = useAuth();\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [firstName, setFirstName] = useState();\r\n const [lastName, setLastName] = useState();\r\n const [email, setEmail] = useState();\r\n const [password, setPassword] = useState();\r\n const [reCaptchaValue, setReCaptchaValue] = useState(\"\");\r\n const [isFirstNameValid, setIsFirstNameValid] = useState(false);\r\n const [isLastNameValid, setIsLastNameValid] = useState(false);\r\n const [isEmailValid, setIsEmailValid] = useState(false);\r\n const [isPasswordValid, setIsPasswordValid] = useState(false);\r\n const [isEmailInUse, setIsEmailInUse] = useState(false);\r\n const [isFormValid, setIsFormValid] = useState(false);\r\n const [isRecaptcha, setIsRecaptcha] = useState(false);\r\n const [recaptchaKey, setRecaptchaKey] = useState(1);\r\n const [newLocaleCode, setNewLocaleCode] = useState(locale);\r\n const [isSubmitting, setIsSubmitting] = useState(false);\r\n\r\n const getLanguageCountryList = (): ILanguageCountryModel[] => {\r\n return [\r\n {\r\n name: t(\"translation:languages.Select\"),\r\n key: \"0\",\r\n languageId: \"\",\r\n localeCode: \"\",\r\n localCodeGoogle: \"en\",\r\n country: \"Belgium\",\r\n },\r\n ...languageCountryList\r\n ] as ILanguageCountryModel[];\r\n }\r\n\r\n const languagesAndCountries = getLanguageCountryList();\r\n let languageCountry = languagesAndCountries.find(c => c.localeCode == authStore?.getCurrentLanguageCode()) ?? languagesAndCountries.find(l => l.localeCode == 'en') as ILanguageCountryModel;\r\n const [selectedLanguageModel, setSelectedLanguageModel] = useState(languageCountry);\r\n\r\n let history = useHistory();\r\n\r\n useInterval(() => {\r\n if (selectedLanguageModel.localeCode !== authStore?.getCurrentLanguageCode()) {\r\n let newLanguageModel = (languagesAndCountries.find(l => l.localeCode == authStore?.getCurrentLanguageCode()) ?? languagesAndCountries.find(l => l.localeCode == 'en')) as ILanguageCountryModel;\r\n\r\n changeLanguage(newLanguageModel)\r\n }\r\n }, 300);\r\n const handleFirstNameChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const newName = event.target.value;\r\n if (newName !== undefined) {\r\n setFirstName(newName.charAt(0).toUpperCase() + newName.slice(1));\r\n setIsFirstNameValid(newName.length > 0);\r\n }\r\n };\r\n\r\n const handleLastNameChange = (event: React.ChangeEvent) => {\r\n const newLastName = event.target.value;\r\n if (newLastName !== undefined) {\r\n setLastName(newLastName.charAt(0).toUpperCase() + newLastName.slice(1));\r\n setIsLastNameValid(newLastName.length > 0);\r\n }\r\n };\r\n\r\n const handleEmailChange = (event: React.ChangeEvent) => {\r\n setIsEmailInUse(false);\r\n const newEmail = event.target.value;\r\n if (newEmail !== undefined) {\r\n setEmail(newEmail);\r\n setIsEmailValid(validators.isEmailValid(newEmail));\r\n }\r\n };\r\n\r\n const handlePasswordChange = (event: React.ChangeEvent) => {\r\n const newPassword = event.target.value;\r\n if (newPassword !== undefined) {\r\n setPassword(newPassword);\r\n setIsPasswordValid(validators.isPasswordValid(newPassword));\r\n }\r\n };\r\n\r\n const handleFormValidation = () => {\r\n if (\r\n isFirstNameValid &&\r\n isLastNameValid &&\r\n isEmailValid &&\r\n password !== undefined && password?.length > 0 &&\r\n selectedLanguageModel.key !== \"0\" &&\r\n isPasswordValid //&&\r\n //isRecaptcha\r\n ) {\r\n setIsFormValid(true);\r\n } else {\r\n setIsFormValid(false);\r\n }\r\n };\r\n\r\n const handleClickShowPassword = () => {\r\n setShowPassword(!showPassword);\r\n };\r\n\r\n const changeLanguage = (language: ILanguageCountryModel | undefined) => {\r\n language && setSelectedLanguageModel(language);\r\n\r\n if (language && language.localeCode) {\r\n i18n.changeLanguage(language.localeCode);\r\n authStore?.updateCurrentLanguageCode(language.localeCode);\r\n\r\n if (language.localCodeGoogle) {\r\n setSelectedLanguageModel(language);\r\n setRecaptchaKey(recaptchaKey + 1);\r\n }\r\n }\r\n }\r\n\r\n const selectCountry = (event: React.ChangeEvent<{ value: any }>) => {\r\n const countryCode = event.target.value;\r\n const languageCountry = getLanguageCountryList().find((c) => c.key === countryCode);\r\n\r\n if (languageCountry) {\r\n changeLanguage(languageCountry);\r\n\r\n // Change url when changing the language and the country in the form\r\n window.history.replaceState(null, '',\r\n `${getLocalizedRoute(\r\n AppRoute.Register,\r\n languageCountry.localeCode,\r\n formatMessage\r\n )}`\r\n )\r\n\r\n setNewLocaleCode(languageCountry.localeCode);\r\n }\r\n };\r\n\r\n const handleRecaptcha = (value: any) => {\r\n setReCaptchaValue(value);\r\n setIsRecaptcha(!!value);\r\n };\r\n\r\n const handleRecaptchaExpiration = () => {\r\n setIsFormValid(false);\r\n\r\n recaptchaRef.current?.reset();\r\n };\r\n\r\n const redirectToConfirmation = () => {\r\n const languageCountry = languagesAndCountries.find((l) => l.key === selectedLanguageModel.key);\r\n let localeCode = locale;\r\n\r\n if (languageCountry) {\r\n localeCode = languageCountry.localeCode;\r\n }\r\n if (email !== undefined){\r\n history.push(\r\n `${getLocalizedRoute(\r\n AppRoute.RegisterConfirmation,\r\n localeCode,\r\n formatMessage\r\n )}?email=${encodeURIComponent(email)}`\r\n );\r\n }\r\n };\r\n\r\n const createUser = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n setIsSubmitting(true);\r\n\r\n try {\r\n if (firstName && lastName && email && password) {\r\n const languageCountry = languagesAndCountries.find((l) => l.key === selectedLanguageModel.key);\r\n const newUser: IRegisterModel = {\r\n firstName,\r\n lastName,\r\n email,\r\n password,\r\n country: languageCountry?.country || \"\",\r\n language: languageCountry?.languageId || \"\",\r\n browserLanguage: i18n.language,\r\n reCaptcha: reCaptchaValue,\r\n };\r\n\r\n const { status } = await register(newUser);\r\n\r\n if (status === \"error_emailInUse\" || status === \"error_invalidRecaptcha\") {\r\n setIsEmailInUse(true);\r\n handleRecaptcha(undefined);\r\n setRecaptchaKey(recaptchaKey + 1);\r\n setIsSubmitting(false);\r\n }\r\n\r\n \r\n if (status !== \"success\") {\r\n setIsSubmitting(false);\r\n\r\n }\r\n\r\n if(status === 'success')\r\n {\r\n redirectToConfirmation();\r\n setIsSubmitting(false);\r\n }\r\n }\r\n } catch (error) {\r\n handleRecaptcha(undefined);\r\n recaptchaRef.current?.reset();\r\n setRecaptchaKey(recaptchaKey + 1);\r\n setIsSubmitting(false);\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleFormValidation();\r\n });\r\n\r\n const getEmailError = () => {\r\n if (email === \"\") {\r\n return t(\"translation:common.requiredError\");\r\n }\r\n\r\n if (!isEmailValid) {\r\n return t(\"translation:common.emailError\");\r\n }\r\n\r\n if (isEmailInUse) {\r\n return t(\"translation:common.emailUsedError\");\r\n }\r\n };\r\n\r\n const getPasswordError = () => {\r\n if (password === \"\") {\r\n return t(\"translation:common.requiredError\");\r\n }\r\n if (!isPasswordValid) {\r\n return t(\"translation:common.passwordWeakError\");\r\n }\r\n };\r\n\r\n const getPrivacyPolicyLink = () => {\r\n const langCode = authStore?.getCurrentLanguageCode() ?? \"en\";\r\n const langObject = LangObjectName[langCode];\r\n return appStrings[langObject]['privacyPolicyLink'];\r\n }\r\n\r\n const getPrivacyLinkTextBeforeLink = () => {\r\n let privacyPolicy = t(\"translation:register.privacyPolicy\");\r\n let words = t(\"translation:register.privacyLinkText\").split(privacyPolicy);\r\n return words[0];\r\n }\r\n\r\n const getPrivacyLinkTextAfterLink = () => {\r\n let privacyPolicy = t(\"translation:register.privacyPolicy\");\r\n let words = t(\"translation:register.privacyLinkText\").split(privacyPolicy);\r\n return words[1];\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
{isSubmitting && }
\r\n
\r\n \r\n \r\n \r\n {t(\"translation:register.title\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:register.firstName\")}\r\n *\r\n \r\n \r\n {firstName === \"\" && !isFirstNameValid && (\r\n \r\n \r\n {t(\"translation:common.requiredError\")}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:register.lastName\")}\r\n *\r\n \r\n \r\n {lastName === \"\" && !isLastNameValid && (\r\n \r\n \r\n {t(\"translation:common.requiredError\")}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:register.email\")}\r\n *\r\n \r\n \r\n {((!!email || email === \"\") && !isEmailValid) || isEmailInUse ? (\r\n \r\n \r\n {getEmailError()}\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:register.password\")}\r\n *\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n fullWidth={true}\r\n focused={false}\r\n placeholder=\"********\"\r\n className={classes.textInput}\r\n onChange={handlePasswordChange}\r\n />\r\n {(password === \"\" || !isPasswordValid) && (\r\n \r\n \r\n {getPasswordError()}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {t(\"translation:register.country\") + '/' + t(\"translation:register.language\")}\r\n \r\n \r\n \r\n {/* \r\n \r\n * \r\n {t(\"translation:register.requiredFields\")}\r\n \r\n \r\n */}\r\n \r\n \r\n {t(\"translation:register.registerButton\")}\r\n \r\n \r\n \r\n

\r\n {/* {getPrivacyLinkTextBeforeLink()} */}\r\n \r\n {t(\"translation:register.privacyLinkText\")}\r\n \r\n {/* {getPrivacyLinkTextAfterLink()} */}\r\n

\r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Register;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n newAccountWrapper: {\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignContent: \"center\",\r\n },\r\n },\r\n newAccountItem: {\r\n //width: \"33%\",\r\n //marginTop: \"90px\",\r\n marginBottom: \"-6px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n marginTop: 0,\r\n },\r\n },\r\n registerContainer: {\r\n width: \"45%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n padding: \"0 15px\",\r\n },\r\n backgroundColor: colors.whiteColor,\r\n marginTop: theme.spacing(10),\r\n },\r\n image: {\r\n width: \"100%\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport Register from \"../Auth/Register/Register\";\r\nimport useStyles from \"./CreateNewAccount.style\";\r\n\r\nconst CreateNewAccount: React.FC = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \"register\"\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateNewAccount;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(2.5),\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-between\",\r\n marginBottom: theme.spacing(2),\r\n },\r\n lightButtonColor: {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useStyles from \"./SaveChanges.style\";\r\n\r\ninterface ISaveChanges {\r\n cancel(): void;\r\n closeModal(): void;\r\n saveChanges(): void;\r\n}\r\n\r\nconst SaveChanges: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { saveChanges, closeModal, cancel } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:login_My_account.saveModal.title\")}\r\n \r\n \r\n {t(\"translation:login_My_account.saveModal.content\")}\r\n \r\n \r\n \r\n cancel()}\r\n >\r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n {\r\n saveChanges();\r\n closeModal();\r\n }}\r\n >\r\n {t(\"translation:common.yes\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SaveChanges;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n buttonContainer: {\r\n width: \"352px\",\r\n },\r\n contentWrapper: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n content: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(6),\r\n },\r\n image: {\r\n width: \"40px\",\r\n paddingBottom: \"42px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button, Grid, Typography } from \"@material-ui/core\";\r\nimport useStyles from \"./StatusModal.style\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\n\r\ninterface IStatusModal {\r\n closeModal(): void;\r\n}\r\n\r\nconst StatusModal: React.FC = (props) => {\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { closeModal } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {t(\"translation:login_My_account.statusModal.title\")}\r\n \r\n \r\n {t(\"translation:login_My_account.statusModal.content\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.ok\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StatusModal;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(2.5),\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-between\",\r\n marginBottom: theme.spacing(2),\r\n },\r\n textContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"440px\",\r\n justifyContent: \"space-between\",\r\n },\r\n verticalInputSpacing: {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n minHeight: \"88px\",\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n alignSelf: \"start\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n color: \"red\",\r\n },\r\n },\r\n textInput: {\r\n width: \"440px\",\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n fontSize: \"16px\",\r\n lineHeight: \"28px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n form: {\r\n paddingTop: theme.spacing(2),\r\n },\r\n newPassword: {\r\n paddingTop: \"35px\",\r\n paddingBottom: \"40px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n Typography,\r\n Button,\r\n InputLabel,\r\n TextField,\r\n InputAdornment,\r\n IconButton,\r\n Box,\r\n} from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useStyles from \"./ChangePassword.style\";\r\nimport ShowPassword from \"../../common/components/ShowPassword\";\r\nimport validators from \"../../common/utils/validators\";\r\n\r\ninterface IChangePassword {\r\n closeModal(): void;\r\n saveChanges(oldPassword: string, newPassword: string): void;\r\n changePasswordResponse: number | undefined;\r\n}\r\n\r\nconst ChangePassword: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const [oldPassword, setOldPassword] = useState();\r\n const [newPassword, setNewPassword] = useState();\r\n const [showOldPassword, setShowOldPassword] = useState(false);\r\n const [showNewPassword, setShowNewPassword] = useState(false);\r\n\r\n const [badOldPassword, setBadOldPassword] = useState(false);\r\n const [badNewPassword, setBadNewPassword] = useState(false);\r\n\r\n const { closeModal, saveChanges, changePasswordResponse } = props;\r\n\r\n const handleShowOldPassword = () => {\r\n setShowOldPassword(!showOldPassword);\r\n };\r\n\r\n const handleShowNewPassword = () => {\r\n setShowNewPassword(!showNewPassword);\r\n };\r\n\r\n const handleNewPasswordChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const newPassword = event.target.value;\r\n if (newPassword !== undefined) {\r\n setNewPassword(newPassword);\r\n }\r\n if (newPassword !== \"\" && validators.isPasswordValid(newPassword) === true) {\r\n setBadNewPassword(false);\r\n }\r\n };\r\n\r\n const handleOldPasswordChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const oldPassword = event.target.value;\r\n if (oldPassword !== undefined) {\r\n setOldPassword(oldPassword);\r\n }\r\n setBadOldPassword(false);\r\n };\r\n\r\n const handleSaveChanges = () => {\r\n if (oldPassword === \"\" || oldPassword === undefined){\r\n setBadOldPassword(true);\r\n }\r\n else if (newPassword === \"\" || newPassword=== undefined || validators.isPasswordValid(newPassword) === false){\r\n setBadNewPassword(true);\r\n } else if (oldPassword === newPassword){\r\n setBadNewPassword(true);\r\n\r\n } else {\r\n saveChanges(oldPassword, newPassword);\r\n }\r\n };\r\n\r\n const getPasswordError = (password: string | undefined) => {\r\n if (password === \"\" || password === undefined) {\r\n return t(\"translation:common.requiredError\");\r\n }\r\n if (validators.isPasswordValid(password) === false) {\r\n return t(\"translation:common.passwordWeakError\");\r\n }\r\n if (oldPassword === newPassword) {\r\n return t(\"translation:common.passwordsAreTheSame\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (changePasswordResponse === 400) {\r\n setBadNewPassword(true);\r\n }\r\n else if (changePasswordResponse === 404) {\r\n setBadOldPassword(true);\r\n }\r\n }, [changePasswordResponse]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.title\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.oldPassword\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n fullWidth={true}\r\n focused={false}\r\n placeholder=\"********\"\r\n className={classes.textInput}\r\n onChange={handleOldPasswordChange}\r\n />\r\n {oldPassword === \"\" && (\r\n \r\n \r\n {oldPassword === \"\"\r\n ? `${t(\"translation:common.requiredError\")}`\r\n : `${t(\"translation:common.passwordError\")}`}\r\n \r\n \r\n )}\r\n {badOldPassword && (\r\n \r\n \r\n {`${t(\"translation:common.passwordError\")}`}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.newPassword\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n ),\r\n }}\r\n fullWidth={true}\r\n focused={false}\r\n placeholder=\"********\"\r\n className={classes.textInput}\r\n onChange={handleNewPasswordChange}\r\n />\r\n {newPassword === \"\" && (\r\n \r\n \r\n {newPassword === \"\"\r\n ? `${t(\"translation:common.requiredError\")}`\r\n : `${t(\"translation:common.passwordError\")}`}\r\n \r\n \r\n )}\r\n {badNewPassword && (\r\n \r\n \r\n {getPasswordError(newPassword)}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.details\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.saveChanges\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChangePassword;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n buttonContainer: {\r\n width: \"352px\",\r\n },\r\n contentWrapper: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n content: {\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(6),\r\n },\r\n image: {\r\n width: \"40px\",\r\n paddingBottom: \"42px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button, Grid, Typography } from \"@material-ui/core\";\r\nimport useStyles from \"./StatusChangePassword.style\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\n\r\ninterface IStatusModal {\r\n closeModal(): void;\r\n}\r\n\r\nconst StatusChangePassword: React.FC = (props) => {\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { closeModal } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.statusTitle\")}\r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.statusContent\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:login_My_account.changePasswordModal.logout\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default StatusChangePassword;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph, mainHeader } from \"../../common/styles/typography\";\r\n\r\nconst inputAlign = {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n minHeight: \"100px\",\r\n};\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n newAccountWrapper: {\r\n width: \"100%\",\r\n maxWidth: \"1920px\",\r\n justifyContent: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignContent: \"center\",\r\n },\r\n },\r\n myAccountWrapper: {\r\n width: \"100%\",\r\n //margin: \"0 auto\",\r\n //paddingTop: theme.spacing(10),\r\n //paddingBottom: theme.spacing(13.75),\r\n margin: \"10px 0px 10px 30px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexDirection: \"column\",\r\n alignContent: \"center\",\r\n margin:\"0\"\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n paddingTop: theme.spacing(2),\r\n paddingBottom: 0,\r\n },\r\n },\r\n mainHeader: {\r\n ...mainHeader,\r\n paddingBottom: \"35px\"\r\n },\r\n pictureContainer: {\r\n //width: \"45%\",\r\n //marginTop: \"92px\",\r\n //marginLeft: \"100px\",\r\n overflow: \"hidden\",\r\n marginBottom: \"-6px\",\r\n textAlign: \"center\",\r\n \"& img\": {\r\n height: \"100%\",\r\n //width: \"800px\",\r\n //width: \"575px\",\r\n //maxWidth: \"770px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n myAccountForm: {\r\n //width: \"45%\",\r\n width: \"352px\",\r\n flexDirection: \"column\",\r\n alignContent: \"center\",\r\n justifyContent: \"space-between\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n padding: \"20px 0\",\r\n },\r\n },\r\n inputItem: {\r\n width: \"352px\",\r\n // ...inputAlign,\r\n \"& .MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n \"& .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n },\r\n marginBottom: \"7px\"\r\n },\r\n buttonsItem: {\r\n width: \"352px\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n //marginTop: theme.spacing(6),\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"100%\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n },\r\n },\r\n verticalInputSpacing: {\r\n ...inputAlign,\r\n },\r\n lastTextfield: {\r\n marginBottom: \"7px\",\r\n ...inputAlign,\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingBottom: \"8px\",\r\n paddingTop: \"8px\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n color: \"red\",\r\n },\r\n },\r\n inputAsterixOnLeftLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingTop: \"10px\",\r\n alignSelf: \"start\",\r\n paddingLeft: \"10px\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n color: \"red\",\r\n float: \"left\",\r\n marginLeft: \"-15px\"\r\n },\r\n },\r\n changeLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingBottom: \"8px\",\r\n paddingTop: \"8px\",\r\n textDecoration: \"underline\",\r\n textDecorationSkipInk: \"none\",\r\n cursor: \"pointer\",\r\n },\r\n textInput: {\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n \"& .MuiInputBase-input\": {\r\n fontSize: \"16px\",\r\n lineHeight: \"18px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n height: \"18px\",\r\n backgroundColor: `${colors.veryLightGreyColor}!important`,\r\n },\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n textInputEmailPassword: {\r\n borderRadius: \"24px\",\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n \"& .MuiInputBase-input\": {\r\n fontSize: \"16px\",\r\n lineHeight: \"18px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n height: \"18px\",\r\n },\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n required: {\r\n color: \"red\",\r\n },\r\n spaceItems: {\r\n marginLeft: \"7px\",\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n recaptcha: {\r\n marginBottom: theme.spacing(4),\r\n },\r\n labelPasswordOrEmail: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n width: {\r\n width: \"160px\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n marginBottom: \"20px\",\r\n },\r\n },\r\n modalCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"402px\",\r\n padding: \"104px 32px 0\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalStatusCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"442px\",\r\n height: \"336px\",\r\n padding: \"46px 40px 32px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n },\r\n modalChangePasswordCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n // height: \"476px\",\r\n padding: \"104px 32px 32px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n },\r\n placeholderInput: {\r\n '&::placeholder': {\r\n color: colors.primaryColor,\r\n opacity: 1\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginTop: \"-15px\",\r\n marginBottom: theme.spacing(5),\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-between\",\r\n marginBottom: theme.spacing(2),\r\n },\r\n textContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"440px\",\r\n justifyContent: \"space-between\",\r\n },\r\n verticalInputSpacing: {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n minHeight: \"88px\",\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n alignSelf: \"start\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n display: \"none\"\r\n },\r\n },\r\n inputLabelAsterisk: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n alignSelf: \"start\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n color: \"red\",\r\n },\r\n },\r\n textInput: {\r\n width: \"440px\",\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n fontSize: \"16px\",\r\n lineHeight: \"28px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n form: {\r\n paddingTop: theme.spacing(2),\r\n },\r\n newPassword: {\r\n paddingTop: \"35px\",\r\n paddingBottom: \"40px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n Typography,\r\n Button,\r\n InputLabel,\r\n TextField,\r\n Box,\r\n} from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useStyles from \"./ChangeEmail.style\";\r\nimport validators from \"../../common/utils/validators\";\r\n\r\ninterface IEmail {\r\n closeModal(): void;\r\n saveChanges(email: string): void;\r\n isSuccesful: boolean;\r\n}\r\n\r\nconst ChangeEmail: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const [email, setEmail] = useState();\r\n const [isEmailValid, setIsEmailValid] = useState(email ? validators.isEmailValid(email) : false);\r\n const [repeatEmail, setRepeatEmail] = useState();\r\n const [isRepeatEmailValid, setIsRepeatEmailValid] = useState(true);\r\n const [emailMissingOnSave, setEmailMissingOnSave] = useState(false);\r\n const [repeatEmailMissingOnSave, setRepeatEmailMissingOnSave] = useState(false);\r\n\r\n const { closeModal, saveChanges, isSuccesful } = props;\r\n\r\n const handleRepeatEmailChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const repeatEmail = event.target.value;\r\n if (repeatEmail !== undefined) {\r\n setRepeatEmail(repeatEmail);\r\n setIsRepeatEmailValid(repeatEmail === email);\r\n setRepeatEmailMissingOnSave(false);\r\n }\r\n };\r\n\r\n const handleEmailChange = (\r\n event: React.ChangeEvent\r\n ) => {\r\n const email = event.target.value;\r\n if (email !== undefined) {\r\n setEmail(email);\r\n setIsEmailValid(validators.isEmailValid(email));\r\n setEmailMissingOnSave(false);\r\n\r\n if (repeatEmail == undefined && email == \"\") {\r\n setIsRepeatEmailValid(true);\r\n }\r\n else {\r\n setIsRepeatEmailValid(repeatEmail === email);\r\n }\r\n }\r\n };\r\n\r\n const handleSaveChanges = () => {\r\n if (!email) {\r\n setEmailMissingOnSave(true);\r\n }\r\n if (!repeatEmail) {\r\n setRepeatEmailMissingOnSave(true);\r\n }\r\n if (email && isEmailValid && isRepeatEmailValid) {\r\n saveChanges(email);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:login_My_account.changeEmailModal.title\")}\r\n \r\n \r\n \r\n
\r\n \r\n {t(\"translation:login_My_account.changeEmailModal.email\")}\r\n \r\n \r\n {\r\n (emailMissingOnSave || (email && !isEmailValid)) ? (\r\n \r\n \r\n {emailMissingOnSave\r\n ? `${t(\"translation:common.requiredError\")}`\r\n : `${t(\"translation:common.emailError\")}`}\r\n \r\n \r\n ) : (\"\")\r\n }\r\n
\r\n
\r\n \r\n
\r\n \r\n {t(\"translation:login_My_account.changeEmailModal.repeatEmail\")}\r\n \r\n \r\n {\r\n (!isSuccesful) ? (\r\n \r\n {\r\n t(\"translation:common.emailUsedError\")\r\n }\r\n \r\n ) : (\r\n (repeatEmailMissingOnSave || (repeatEmail && !isRepeatEmailValid)) ? (\r\n \r\n \r\n {\r\n repeatEmailMissingOnSave\r\n ? `${t(\"translation:common.requiredError\")}`\r\n : `${t(\"translation:login_My_account.changeEmailModal.emailsMustMatch\")}`\r\n }\r\n \r\n \r\n ) : (\r\n \r\n \r\n {\r\n (repeatEmail && isRepeatEmailValid && !isEmailValid) && `${t(\"translation:common.emailError\")}`\r\n }\r\n \r\n \r\n )\r\n )\r\n }\r\n
\r\n
\r\n \r\n \r\n {t(\"translation:login_My_account.changeEmailModal.details\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.saveChanges\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ChangeEmail;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport {\r\n Box,\r\n Button,\r\n Grid,\r\n InputLabel,\r\n Modal,\r\n TextField,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport {\r\n updateUserData,\r\n changePassword as changePasswordService,\r\n changeEmail as changeEmailService\r\n} from \"../../data-services/Auth/AuthService\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport DropDownSelect from \"../../common/components/DropDownSelect\";\r\nimport { IUserUpdate } from \"../../models/User\";\r\nimport SaveChanges from \"./SaveChanges\";\r\nimport StatusModal from \"./StatusModal\";\r\nimport ChangePassword from \"./ChangePassword\";\r\nimport StatusChangePassword from \"./StatusChangePassword\";\r\nimport validators from \"../../common/utils/validators\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useStyles from \"./MyAccount.style\";\r\nimport i18n from \"../../i18n\";\r\nimport { hasThisCountryWithThisLanguageSpecialLocaleCode } from \"../../common/enums/laguages\"\r\nimport ChangeEmail from \"./ChangeEmail\";\r\nimport { getLocalizedRoute } from \"../../common/services/i18n/utils/routeLocalization\";\r\nimport { AppRoute } from \"../../common/constants/routes\";\r\nimport { useIntl } from \"react-intl\";\r\nimport { ILanguageCountryModel } from \"../../models/LanguageCountryModel\";\r\nimport { languageCountryList } from \"../../common/constants/countries\";\r\nimport { useInterval } from \"../../context/interval\";\r\n\r\nconst MyAccount: React.FC = () => {\r\n let history = useHistory();\r\n\r\n const { formatMessage, locale } = useIntl();\r\n const { t } = useTranslation([\"translation\"]);\r\n const classes = useStyles();\r\n const buttonStyles = useButtonStyles();\r\n const authStore = useAuth();\r\n const userHistory = authStore?.userHistory;\r\n const [firstName, setFirstName] = useState(userHistory?.firstName);\r\n const [lastName, setLastName] = useState(userHistory?.lastName);\r\n const [email, setEmail] = useState(userHistory?.email || null);\r\n const [isFirstNameValid, setIsFirstNameValid] = useState(firstName && firstName?.length > 0);\r\n const [isLastNameValid, setIsLastNameValid] = useState(lastName && lastName?.length > 0);\r\n const [isEmailValid, setIsEmailValid] = useState(email ? validators.isEmailValid(email) : false);\r\n const [newLocaleCode, setNewLocaleCode] = useState(locale);\r\n const [isChangeEmailSuccesful, setIsChangeEmailSuccesful] = useState(true);\r\n const [changePasswordResponse, setChangePasswordResponse] = useState(undefined);\r\n\r\n const getLanguageCountryList = (): ILanguageCountryModel[] => {\r\n return [\r\n {\r\n name: t(\"translation:languages.Select\"),\r\n key: \"0\",\r\n languageId: \"\",\r\n localeCode: \"\",\r\n localCodeGoogle: \"en\",\r\n country: \"Belgium\",\r\n },\r\n ...languageCountryList\r\n ] as ILanguageCountryModel[];\r\n }\r\n\r\n const languagesAndCountries = getLanguageCountryList();\r\n let languageCountry = languagesAndCountries.find(c => c.localeCode == authStore?.getCurrentLanguageCode()) ?? languagesAndCountries.find(l => l.localeCode == 'en') as ILanguageCountryModel;\r\n const [selectedLanguageModel, setSelectedLanguageModel] = useState(languageCountry);\r\n const [openSaveModal, setOpenSaveModal] = useState(false);\r\n const [openChangePasswordModal, setOpenChangePasswordModal] = useState(false);\r\n const [openChangeEmailModal, setOpenChangeEmailModal] = useState(false);\r\n const [openStatusModal, setOpenStatusModal] = useState(false);\r\n const [openChangePasswordStatusModal, setOpenChangePasswordStatusModal,] = useState(false);\r\n const [isFormValid, setIsFormValid] = useState(false);\r\n const [isFormChanged, setIsFormChanged] = useState(false);\r\n\r\n useInterval(() => {\r\n if (selectedLanguageModel.localeCode !== authStore?.getCurrentLanguageCode()) {\r\n let newLanguageModel = (languagesAndCountries.find(l => l.localeCode == authStore?.getCurrentLanguageCode()) ?? languagesAndCountries.find(l => l.localeCode == 'en')) as ILanguageCountryModel;\r\n\r\n changeLanguage(newLanguageModel)\r\n }\r\n }, 300);\r\n\r\n const handleFirstNameChange = (event: React.ChangeEvent) => {\r\n const newName = event.target.value;\r\n if (newName !== undefined) {\r\n setFirstName(newName);\r\n setIsFirstNameValid(newName.length > 0);\r\n }\r\n };\r\n\r\n const handleLastNameChange = (event: React.ChangeEvent) => {\r\n const newLastName = event.target.value;\r\n if (newLastName !== undefined) {\r\n setLastName(newLastName);\r\n setIsLastNameValid(newLastName.length > 0);\r\n }\r\n };\r\n\r\n const handleEmailChange = (event: React.ChangeEvent) => {\r\n const newEmail = event.target.value;\r\n if (newEmail !== undefined) {\r\n setEmail(newEmail);\r\n setIsEmailValid(validators.isEmailValid(newEmail));\r\n }\r\n };\r\n\r\n const handleIsFormChangedValidation = () => {\r\n const formChanged = firstName !== userHistory?.firstName ||\r\n lastName !== userHistory?.lastName ||\r\n email !== userHistory?.email ||\r\n selectedLanguageModel?.country !== userHistory?.country ||\r\n selectedLanguageModel?.languageId !== userHistory?.language;\r\n setIsFormChanged(formChanged);\r\n }\r\n\r\n const handleFormValidation = () => {\r\n if (isFormChanged) {\r\n if (\r\n isFirstNameValid &&\r\n isLastNameValid &&\r\n isEmailValid &&\r\n selectedLanguageModel?.country !== \"0\" &&\r\n selectedLanguageModel?.languageId !== \"0\"\r\n ) {\r\n setIsFormValid(true);\r\n window.addEventListener(\"beforeunload\", (ev) => {\r\n ev.preventDefault();\r\n setOpenSaveModal(true);\r\n return (ev.returnValue = \"Close window?\");\r\n });\r\n } else {\r\n setIsFormValid(false);\r\n window.removeEventListener(\"beforeunload\", () => {\r\n setOpenSaveModal(false);\r\n });\r\n }\r\n }\r\n };\r\n\r\n const handleOpenSaveModal = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n // if (\r\n // firstName !== userHistory?.firstName ||\r\n // lastName !== userHistory?.lastName ||\r\n // email !== userHistory?.email ||\r\n // selectedLanguageModel?.country !== userHistory?.country ||\r\n // selectedLanguageModel?.languageId !== userHistory.language\r\n // ) {\r\n // updateUser();\r\n // }\r\n setOpenSaveModal(true);\r\n };\r\n\r\n const handleCloseSaveModal = () => {\r\n setOpenSaveModal(false); \r\n };\r\n\r\n const handleOpenPasswordChangeModal = () => {\r\n setOpenChangePasswordModal(true);\r\n };\r\n\r\n const handleClosePasswordChangeModal = () => {\r\n setOpenChangePasswordModal(false);\r\n };\r\n\r\n const handleOpenEmailChangeModal = () => {\r\n setOpenChangeEmailModal(true);\r\n };\r\n\r\n const handleCloseEmailChangeModal = () => {\r\n setOpenChangeEmailModal(false);\r\n setIsChangeEmailSuccesful(true);\r\n };\r\n\r\n const handleCancelSaveModal = () => {\r\n setOpenSaveModal(false);\r\n };\r\n\r\n const handleOpenStatusModal = () => {\r\n setOpenStatusModal(true);\r\n };\r\n\r\n const handleCloseStatusModal = () => {\r\n setOpenStatusModal(false);\r\n //history.goBack();\r\n };\r\n\r\n const handleOpenChangePasswordStatus = () => {\r\n setOpenChangePasswordStatusModal(true);\r\n };\r\n\r\n const handleCloseChangePasswordStatus = () => {\r\n authStore?.forceDeauthentication();\r\n history.push(`${getLocalizedRoute(AppRoute.Home, newLocaleCode, formatMessage)}`);\r\n setOpenChangePasswordStatusModal(false);\r\n };\r\n\r\n useEffect(() => {\r\n handleIsFormChangedValidation();\r\n handleFormValidation();\r\n });\r\n\r\n const changeLanguage = (language: ILanguageCountryModel | undefined) => {\r\n language && setSelectedLanguageModel(language);\r\n\r\n if (language && language.localeCode) {\r\n i18n.changeLanguage(language.localeCode);\r\n authStore?.updateCurrentLanguageCode(language.localeCode);\r\n\r\n if (language.localCodeGoogle) {\r\n setSelectedLanguageModel(language);\r\n }\r\n }\r\n }\r\n\r\n const selectCountry = (event: React.ChangeEvent<{ value: any }>) => {\r\n const countryCode = event.target.value;\r\n const languageCountry = getLanguageCountryList().find((c) => c.key === countryCode);\r\n\r\n if (languageCountry) {\r\n changeLanguage(languageCountry);\r\n\r\n\r\n // Change url when changing the language and the country in the form\r\n window.history.replaceState(null, '',\r\n `${getLocalizedRoute(\r\n AppRoute.MyAccount,\r\n languageCountry.localeCode,\r\n formatMessage\r\n )}`\r\n )\r\n\r\n setNewLocaleCode(languageCountry.localeCode);\r\n }\r\n };\r\n\r\n const updateUser = async () => {\r\n try {\r\n if (\r\n firstName &&\r\n lastName &&\r\n email &&\r\n selectedLanguageModel?.country !== \"0\" &&\r\n selectedLanguageModel?.languageId !== \"0\"\r\n ) {\r\n const user: IUserUpdate = {\r\n firstName,\r\n lastName,\r\n emailAddress: email,\r\n country: selectedLanguageModel?.country || \"\",\r\n language: selectedLanguageModel?.languageId || \"\",\r\n };\r\n const { status } = await updateUserData(user);\r\n if (status === \"success\") {\r\n\r\n authStore?.updateUser(user);\r\n\r\n if (selectedLanguageModel?.localeCode) {\r\n let localeCodeToSet = hasThisCountryWithThisLanguageSpecialLocaleCode(selectedLanguageModel?.country, selectedLanguageModel?.name);\r\n if (localeCodeToSet === undefined) {\r\n localeCodeToSet = selectedLanguageModel?.localeCode;\r\n }\r\n i18n.changeLanguage(localeCodeToSet);\r\n authStore?.updateCurrentLanguageCode(localeCodeToSet);\r\n }\r\n handleOpenStatusModal();\r\n }\r\n }\r\n } catch (error) {\r\n console.log(\"error\", error);\r\n }\r\n };\r\n\r\n const changePassword = async (oldPassword: string, newPassword: string) => {\r\n try {\r\n const { status, statusCode } = await changePasswordService({\r\n oldPassword,\r\n password: newPassword,\r\n });\r\n if (status === \"success\") {\r\n handleOpenChangePasswordStatus();\r\n handleClosePasswordChangeModal();\r\n }\r\n else {\r\n setChangePasswordResponse(undefined);\r\n setChangePasswordResponse(statusCode);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const changeEmail = async (newEmail: string) => {\r\n try {\r\n const { status } = await changeEmailService({\r\n email: newEmail,\r\n browserLanguage: i18n.language\r\n });\r\n if (status === \"success\") {\r\n handleCloseEmailChangeModal();\r\n history.push(`${getLocalizedRoute(AppRoute.ChangeEmailStatus, newLocaleCode, formatMessage)}?email=${encodeURIComponent(newEmail)}`);\r\n setIsChangeEmailSuccesful(true);\r\n }\r\n else{\r\n setIsChangeEmailSuccesful(false);\r\n }\r\n } catch (error) {\r\n \r\n }\r\n };\r\n\r\n const resetForm = () => {\r\n setFirstName(userHistory?.firstName);\r\n setLastName(userHistory?.lastName);\r\n setEmail(userHistory?.email || null);\r\n\r\n setSelectedLanguageModel(languageCountry)\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \"myAccount\"\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {t(\"translation:login_My_account.title\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:register.firstName\")}\r\n \r\n \r\n {firstName === \"\" && !isFirstNameValid && (\r\n \r\n \r\n {t(\"translation:common.requiredError\")}\r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n {t(\"translation:register.lastName\")}\r\n \r\n \r\n {lastName === \"\" && !isLastNameValid && (\r\n \r\n \r\n {t(\"translation:common.requiredError\")}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n {t(\"translation:register.email\")}\r\n \r\n \r\n {t(\"translation:login_My_account.changeEmail\")}\r\n \r\n
\r\n \r\n {(!!email || email === \"\") && !isEmailValid ? (\r\n \r\n \r\n {email === \"\"\r\n ? `${t(\"translation:common.requiredError\")}`\r\n : `${t(\"translation:common.emailError\")}`}\r\n \r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {t(\"translation:common.passwordLabel\")}\r\n \r\n \r\n {t(\"translation:login_My_account.changePassword\")}\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {t(\"translation:register.country\") + '/' + t(\"translation:register.language\")}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:common.requiredFields\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.saveChanges\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MyAccount;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { mainHeader, commonParagraph } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n homeLogedInWrapper: {\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n //paddingTop: \"67px\",\r\n //paddingBottom: \"140px\",\r\n },\r\n homeLogedInItem: {\r\n //width: \"50%\",\r\n maxWidth: \"50%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n },\r\n //paddingLeft: \"120px\",\r\n \"& img\": {\r\n marginBottom: \"-6px\",\r\n width: \"100%\",\r\n //width: \"800px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n }\r\n \r\n },\r\n },\r\n homeLogedInContent: {\r\n width: \"50%\",\r\n padding: \"100px 120px 0 15px\",\r\n\r\n \"&:last(p)\": {\r\n paddingBottom: \"0\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n padding: \"5%\",\r\n },\r\n },\r\n title: {\r\n paddingTop: \"17px\",\r\n paddingBottom: \"64px\",\r\n ...mainHeader,\r\n },\r\n paragraph: {\r\n ...commonParagraph,\r\n color: colors.darkerGreyColor,\r\n paddingBottom: \"30px\",\r\n \"&:last-of-type\": {\r\n paddingBottom: 0,\r\n },\r\n },\r\n list: {\r\n \"& .MuiListItem-gutters\": {\r\n padding: 0,\r\n },\r\n \"& .MuiListItemText-root\": {\r\n marginTop: 0,\r\n marginBottom: 0,\r\n },\r\n \"&.MuiList-padding\": {\r\n paddingTop: 0,\r\n },\r\n },\r\n itemList: {\r\n minWidth: \"15px\",\r\n },\r\n listItemText: {\r\n \"& span\": {\r\n ...commonParagraph,\r\n color: colors.darkerGreyColor,\r\n },\r\n \"& .MuiListItem-gutters\": {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport useStyles from \"./HomeLogedIn.style\";\r\n\r\nconst HomeLogedIn: React.FC = () => {\r\n const classes = useStyles();\r\n const authStore = useAuth();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n \r\n \r\n \"homePage\"\r\n \r\n \r\n \r\n {`${t(\"translation:HOME-LOGIN.title\")} ${\r\n authStore?.userHistory?.firstName\r\n }`}\r\n \r\n \r\n {t(\"translation:HOME-LOGIN.aboutProjects\")}\r\n \r\n \r\n {t(\"translation:HOME-LOGIN.aboutDetectors\")}\r\n \r\n \r\n {t(\"translation:HOME-LOGIN.aboutTemplates\")}\r\n \r\n \r\n \r\n \r\n \"list\"\r\n \r\n \r\n \r\n \r\n \r\n \"list\"\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HomeLogedIn;\r\n","import { makeStyles, createStyles } from '@material-ui/core/styles';\r\nimport colors from '../../common//styles/colors';\r\nimport { CSSProperties } from 'react';\r\n\r\nconst commonContent: CSSProperties = {\r\n width: '67%',\r\n padding: '32px',\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => createStyles({\r\n aboutContainer: {\r\n paddingTop: '45px',\r\n maxWidth: '1040px',\r\n margin: '0 auto',\r\n },\r\n aboutItem: {\r\n marginBottom: '30px',\r\n maxWidth: '1040px'\r\n },\r\n card: {\r\n display: 'flex',\r\n //maxHeight: '488px',\r\n },\r\n cardContentLightSmall: {\r\n backgroundColor: colors.secondaryColor,\r\n width: '33%',\r\n padding: '32px',\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%',\r\n padding: '5vh 5vw',\r\n }\r\n },\r\n cardContentLightLarge: {\r\n backgroundColor: colors.secondaryColor,\r\n width: '67%',\r\n padding: '32px',\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%',\r\n }\r\n },\r\n cardContentBlack: {\r\n backgroundColor: colors.primaryColor,\r\n ...commonContent,\r\n },\r\n cardContentBlackSmall: {\r\n width: '33%',\r\n padding: '32px',\r\n backgroundColor: colors.primaryColor,\r\n },\r\n cardMedia: {\r\n width: '67%',\r\n '& img': {\r\n height: '100%',\r\n width: '100%',\r\n objectFit: 'cover'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n width: '0',\r\n }\r\n },\r\n cardMediaSmall: {\r\n width: '33%',\r\n '& img': {\r\n height: '100%',\r\n width: '100%',\r\n objectFit: 'cover'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n width: '0',\r\n }\r\n },\r\n aboutHeaderImage: {\r\n '& img': {\r\n width: '100%',\r\n //maxHeight: '386px',\r\n maxWidth: '1040px'\r\n },\r\n },\r\n aboutHeaderTextContent: {\r\n maxHeight: \"488px\",\r\n backgroundColor: \"black\",\r\n height: \"184px\",\r\n marginTop: \"-5px\",\r\n [theme.breakpoints.down('sm')]: {\r\n height: 'auto',\r\n }\r\n },\r\n aboutHeaderTextHeader: {\r\n fontSize: \"16px !important\",\r\n lineHeight: \"24px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n paddingBottom: \"24px !important\",\r\n color: \"#F6F6F6\",\r\n marginLeft: \"15px\",\r\n paddingTop: \"20px\"\r\n },\r\n aboutHeaderTextParagraph: {\r\n fontSize: \"14px !important\",\r\n lineHeight: \"24px !important\",\r\n fontFamily: \"Roboto !important\",\r\n color: \"#E5E5E5\",\r\n marginLeft: \"15px\",\r\n marginRight: \"40px\"\r\n },\r\n aboutSubHeaderTextHeader: {\r\n fontSize: \"22px !important\",\r\n lineHeight: \"26px !important\",\r\n fontFamily: \"VistaSansReg !important\",\r\n fontWeight: 700,\r\n paddingBottom: \"5px !important\",\r\n color: colors.primaryColor\r\n }\r\n}));\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Grid, Typography } from '@material-ui/core';\r\nimport useTypographyStyles from '../../common/styles/typography';\r\nimport useStyles from './About.style';\r\nimport colors from \"../../common/styles/colors\";\r\n\r\nconst About: React.FC = (() => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const { t } = useTranslation(['translation']);\r\n\r\n\r\n return (\r\n \r\n\r\n \r\n \r\n
\r\n \"about\"\r\n
\r\n
\r\n \r\n { t('translation:about.title1') }\r\n \r\n \r\n { t('translation:about.content1') }\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n { t('translation:about.title2') }\r\n \r\n \r\n { t('translation:about.content2') }\r\n \r\n
\r\n
\r\n \"about\"\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \"about\"\r\n
\r\n
\r\n \r\n { t('translation:about.title3') }\r\n \r\n \r\n { t('translation:about.content3') }\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n { t('translation:about.title4') }\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n { t('translation:about.title4_1') }\r\n \r\n \r\n { t('translation:about.content4_1') }\r\n \r\n \r\n { t('translation:about.title4_2') }\r\n \r\n \r\n { t('translation:about.content4_2') }\r\n \r\n \r\n { t('translation:about.title4_3') }\r\n \r\n \r\n { t('translation:about.content4_3') }\r\n \r\n \r\n { t('translation:about.title4_4') }\r\n \r\n \r\n { t('translation:about.content4_4') }\r\n \r\n
\r\n
\r\n \"about\"\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n { t('translation:about.title5') }\r\n \r\n \r\n { t('translation:about.content5') }\r\n \r\n
\r\n
\r\n \"about\"\r\n
\r\n
\r\n
\r\n\r\n
\r\n );\r\n});\r\n\r\nexport default About;\r\n","import React from \"react\";\r\n\r\nconst UncheckedboxSVG: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UncheckedboxSVG;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../styles/colors\";\r\nimport { commonParagraph } from \"../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(1),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-around\",\r\n marginBottom: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../styles/typography\";\r\nimport useButtonStyles from \"../styles/buttonStyles\";\r\nimport useStyles from \"./DeleteModal.style\";\r\n\r\ninterface IDelete {\r\n title: string;\r\n content: string;\r\n deleteButtonName: string;\r\n remove(): void;\r\n closeModal(): void;\r\n}\r\n\r\nconst DeleteModal: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { title, content, remove, closeModal, deleteButtonName } = props;\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {title}\r\n \r\n {content}\r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {deleteButtonName}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DeleteModal;\r\n","import React from 'react';\r\n\r\nconst Check: React.FC = (() => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default Check;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../styles/colors\";\r\nimport { commonParagraph } from \"../../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n button: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n borderRadius: \"100px\",\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.whiteColor,\r\n },\r\n ...commonParagraph,\r\n textTransform: \"none\",\r\n color: colors.primaryColor,\r\n padding: \"6px 24px\",\r\n \"& .MuiButton-label\": {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n \"& .MuiButton-startIcon\": {\r\n marginRight: \"15px\",\r\n },\r\n minWidth: \"144px\",\r\n boxShadow: \"none\",\r\n whiteSpace: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"32px\",\r\n minWidth: \"auto\",\r\n padding: \"6px 12px\",\r\n fontSize: \"14px !important\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport Check from \"../Check\";\r\nimport useStyles from \"./CheckAll.style\";\r\n\r\ninterface ICheckAll {\r\n allItemIds: string[];\r\n selectedItemIds: string[];\r\n setSelectedItemsIds(param: string[]): void;\r\n fetchData?(): void;\r\n}\r\n\r\nconst CheckAll: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { allItemIds, selectedItemIds, setSelectedItemsIds } = props;\r\n\r\n const toggleSelectAllItems = () => {\r\n\r\n if (selectedItemIds.length === allItemIds.length) {\r\n setSelectedItemsIds([]);\r\n } else {\r\n setSelectedItemsIds(allItemIds);\r\n }\r\n\r\n if (props.fetchData) {\r\n props.fetchData();\r\n }\r\n };\r\n\r\n return (\r\n }\r\n onClick={toggleSelectAllItems}\r\n >\r\n {t(\"translation:common.sellectAll\")}\r\n \r\n );\r\n};\r\n\r\nexport default CheckAll;\r\n","import { makeStyles, createStyles } from '@material-ui/core/styles';\r\nimport colors from '../styles/colors';\r\nimport { commonParagraph } from '../styles/typography';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => createStyles({\r\n modalParagraph: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n marginBottom: theme.spacing(5),\r\n },\r\n exportType: {\r\n width: '352px',\r\n height: '48px',\r\n marginBottom: theme.spacing(2),\r\n },\r\n}));\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\nimport { Grid, Typography, Button } from '@material-ui/core';\r\nimport useStyles from './ExportModal.style';\r\nimport useTypographyStyles from '../../common/styles/typography';\r\nimport useButtonStyles from '../../common/styles/buttonStyles';\r\n\r\n\r\ninterface IExportModal {\r\n title: string;\r\n closeModal(): void;\r\n exportPDF?(): void;\r\n exportExcel?(): void;\r\n}\r\n\r\nconst ExportModal: React.FC = ((props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses= useButtonStyles();\r\n\r\n const { title, closeModal, exportPDF, exportExcel} = props;\r\n\r\n return (\r\n <>\r\n \r\n {title}\r\n Select the export format\r\n \r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n PDF\r\n \r\n \r\n \r\n \r\n Excel\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default ExportModal;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n export: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n borderRadius: \"100px\",\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.whiteColor,\r\n },\r\n textTransform: \"none\",\r\n color: colors.primaryColor,\r\n ...commonParagraph,\r\n padding: \"6px 24px\",\r\n \"& .MuiButton-label\": {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n \"& .MuiButton-startIcon\": {\r\n marginRight: \"15px\",\r\n },\r\n minWidth: \"144px\",\r\n boxShadow: \"none\",\r\n whiteSpace: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"32px\",\r\n minWidth: \"auto\",\r\n padding: \"6px 12px\",\r\n fontSize: \"14px !important\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button, Grid, Typography } from \"@material-ui/core\";\r\nimport useStyles from \"./Export.style\";\r\n\r\ninterface IExport {\r\n openExportModal(): void;\r\n closeModal?(): void;\r\n}\r\n\r\nconst Export: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { openExportModal, closeModal } = props;\r\n\r\n const handleClick = () => {\r\n openExportModal();\r\n };\r\n\r\n return (\r\n }\r\n onClick={handleClick}\r\n >\r\n {t(\"translation:common.export\")}\r\n \r\n );\r\n};\r\n\r\nexport default Export;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n delete: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n borderRadius: \"100px\",\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.whiteColor,\r\n },\r\n textTransform: \"none\",\r\n color: colors.primaryColor,\r\n ...commonParagraph,\r\n padding: \"6px 24px\",\r\n \"& .MuiButton-label\": {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n \"& .MuiButton-startIcon\": {\r\n marginRight: \"15px\",\r\n },\r\n minWidth: \"144px\",\r\n boxShadow: \"none\",\r\n whiteSpace: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"32px\",\r\n minWidth: \"auto\",\r\n padding: \"6px 12px\",\r\n fontSize: \"14px !important\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport useStyles from \"./Delete.style\";\r\n\r\ninterface IDelete {\r\n openDeleteModal(): void;\r\n closeModal?(): void;\r\n}\r\n\r\nconst Delete: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { openDeleteModal, closeModal } = props;\r\n\r\n const handleClick = () => {\r\n openDeleteModal();\r\n closeModal && closeModal();\r\n };\r\n\r\n return (\r\n }\r\n onClick={handleClick}\r\n >\r\n {t(\"translation:common.delete\")}\r\n \r\n );\r\n};\r\n\r\nexport default Delete;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../styles/colors\";\r\n\r\nconst useStyles = makeStyles(() =>\r\n createStyles({\r\n select: {\r\n fontSize: \"14px\",\r\n lineHeight: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n minWidth: \"234px\",\r\n color: colors.primaryColor,\r\n backgroundColor: colors.secondaryColor,\r\n borderRadius: \"24px\",\r\n borderWidth: \"0\",\r\n \"& span\": {\r\n color: colors.primaryColor,\r\n textTransform: \"none\",\r\n },\r\n \"&.MuiOutlinedInput-root.Mui-focused .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n \"& .MuiOutlinedInput-notchedOutline\": {\r\n borderWidth: \"0\",\r\n },\r\n \"& .MuiSelect-outlined.MuiSelect-outlined\": {\r\n padding: \"14px 56px 12px 24px\",\r\n },\r\n \"& img\": {\r\n width: \"30px\",\r\n height: \"20px\",\r\n },\r\n \"& .MuiList-padding\": {\r\n paddingTop: \"0\",\r\n paddingBottom: 0,\r\n },\r\n \"& .MuiSelect-select:focus\": {\r\n borderRadius: \"24px\",\r\n },\r\n },\r\n notchedOutline: {\r\n borderWidth: \"0\",\r\n },\r\n dropdownList: {\r\n boxShadow: \"none\",\r\n borderRadius: 0,\r\n \"& ul\": {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n },\r\n popupSelect: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n \"&:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n \"& .MuiListItem-root.Mui-selected, .MuiListItem-root.Mui-selected:hover\": {\r\n backgroundColor: colors.lightGreyColor,\r\n },\r\n \"&.MuiListItem-root.Mui-selected\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { FormControl, Select, MenuItem } from \"@material-ui/core\";\r\nimport ChevronDown from \"../ChevronDown\";\r\nimport useStyles from \"./Sort.style\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\ninterface IOption {\r\n name: string;\r\n key: string;\r\n}\r\n\r\ninterface ISort {\r\n sortedBy: string;\r\n sortingOptions: IOption[];\r\n handleChangeSelect(event: React.ChangeEvent<{ value: unknown }>): void;\r\n sortItems(sortBy: string): void;\r\n}\r\n\r\nconst Sort: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { sortingOptions, handleChangeSelect, sortedBy, sortItems } = props;\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n \r\n \r\n {sortingOptions.map((sort, index) => (\r\n sortItems(sort.key)}\r\n className={classes.popupSelect}\r\n >\r\n {t(\"translation:common.sortBy\")} {sort.name}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Sort;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalDeleteCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"402px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n actionsBar: {\r\n justifyContent: \"space-between\",\r\n flexWrap: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexWrap: \"wrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n justifyContent: \"space-around\",\r\n },\r\n },\r\n },\r\n actionsWrapper: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(4),\r\n //display: \"flex\",\r\n justifyContent: \"space-between\",\r\n maxWidth: \"650px\",\r\n width: \"100%\",\r\n display: \"flex\",\r\n\r\n \"& button\": {\r\n marginRight: \"40px\",\r\n marginBottom: \"2px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"2px\",\r\n }\r\n },\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../styles/colors\";\r\nimport { commonParagraph } from \"../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(1),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-around\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../styles/typography\";\r\nimport useButtonStyles from \"../styles/buttonStyles\";\r\nimport useStyles from \"./NothingSelectedModal.style\";\r\n\r\ninterface IDelete {\r\n title: string;\r\n content: string;\r\n closeModal(): void;\r\n}\r\n\r\nconst NothingIsSelectedModal: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { title, content, closeModal } = props;\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {title}\r\n \r\n {content}\r\n \r\n \r\n \r\n {t(\"translation:common.ok\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default NothingIsSelectedModal;\r\n","import colors from \"./colors\";\r\nimport {createStyles, makeStyles} from \"@material-ui/core/styles\";\r\n\r\nconst useNothingIsSelectedModalStyles = makeStyles((theme) =>\r\n createStyles({\r\n style: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"402px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n })\r\n);\r\n\r\nexport default useNothingIsSelectedModalStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Modal } from \"@material-ui/core\";\r\nimport DeleteModal from \"../../../common/components/DeleteModal\";\r\nimport { IProject } from \"../../../models/Project\";\r\nimport CheckAll from \"../../../common/components/Actions/CheckAll\";\r\nimport ExportModal from \"../../../common/components/ExportModal\";\r\nimport Export from \"../../../common/components/Actions/Export\";\r\nimport Delete from \"../../../common/components/Actions/Delete\";\r\nimport Sort from \"../../../common/components/Actions/Sort\";\r\nimport useStyles from \"./Actions.style\";\r\nimport NothingSelectedModal from \"../../../common/components/NothingSelectedModal\";\r\nimport useNothingIsSelectedModalStyles from \"../../../common/styles/nothingIsSelectedModalGeneralStyle\";\r\n\r\ninterface IActions {\r\n allProjectIds: string[];\r\n project: IProject | undefined;\r\n projects: IProject[];\r\n projectNames: string[];\r\n selectedProjects: string[];\r\n deleteProjects(projectIds: string[]): void;\r\n setSelectedProjects(param: string[]): void;\r\n sortProjects(param: string): void;\r\n exportProjectsPDF(): void;\r\n exportProjectsExcel(): void;\r\n fetchData?(): void;\r\n}\r\n\r\nconst Actions: React.FC = (props) => {\r\n const classes = useStyles();\r\n const nothingIsSelectedModalStyles = useNothingIsSelectedModalStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const {\r\n project,\r\n projects,\r\n allProjectIds,\r\n projectNames,\r\n selectedProjects,\r\n setSelectedProjects,\r\n deleteProjects,\r\n sortProjects,\r\n exportProjectsPDF,\r\n exportProjectsExcel,\r\n } = props;\r\n\r\n const sortingOptions = [\r\n { name: t('translation:common.sortByProjectName'), key: \"name\" },\r\n { name: t('translation:common.sortByCreationDate'), key: \"date\" },\r\n ];\r\n\r\n const [sortedBy, setSortedBy] = useState(sortingOptions[0].key);\r\n\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const [openExportNothingIsSelectedModal, setOpenExportNothingIsSelectedModal] = useState(false);\r\n const [openDeleteModal, setOpenDeleteModal] = useState(false);\r\n const [openDeleteNothingIsSelectedModal, setOpenDeleteNothingIsSelectedModal] = useState(false);\r\n\r\n const handleOpenExportModal = () => {\r\n if (selectedProjects.length > 0) {\r\n setOpenExportModal(true);\r\n } else {\r\n setOpenExportNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n setOpenExportModal(false);\r\n setOpenExportNothingIsSelectedModal(false);\r\n };\r\n\r\n const handleOpenDeleteModal = () => {\r\n if (selectedProjects.length > 0) {\r\n setOpenDeleteModal(true);\r\n } else {\r\n setOpenDeleteNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseDeleteModal = () => {\r\n setOpenDeleteModal(false);\r\n setOpenDeleteNothingIsSelectedModal(false);\r\n };\r\n\r\n const handleChangeSelect = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setSortedBy(event.target.value as string);\r\n };\r\n\r\n return (\r\n <>\r\n 0 ? openDeleteModal : openDeleteNothingIsSelectedModal} onClose={handleCloseDeleteModal}>\r\n \r\n {\r\n openDeleteModal &&\r\n {\r\n deleteProjects(selectedProjects);\r\n handleCloseDeleteModal();\r\n setSelectedProjects([]);\r\n }}\r\n closeModal={handleCloseDeleteModal}\r\n />\r\n }\r\n {\r\n openDeleteNothingIsSelectedModal &&\r\n \r\n }\r\n \r\n \r\n 0 ? openExportModal : openExportNothingIsSelectedModal} onClose={handleCloseExportModal}>\r\n \r\n {\r\n openExportModal &&\r\n \r\n }\r\n {\r\n openExportNothingIsSelectedModal &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\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 Actions;\r\n","import { ISensorSetting } from \"../../models/SensorSetting\";\r\nimport { IProject } from \"../../models/Project\";\r\n\r\nexport interface IProjectResponseModel {\r\n id: string;\r\n updatedAt: string;\r\n createdAt: number;\r\n userId: string;\r\n name: string;\r\n sensorSettings: ISensorSetting[];\r\n daliCount: number;\r\n two30Count: number;\r\n}\r\n\r\nexport const mapFromIProjectResponseModelToIProject = (\r\n data: IProjectResponseModel\r\n): IProject => ({\r\n id: data.id,\r\n userId: data.userId,\r\n name: data.name,\r\n sensorSettings: data.sensorSettings,\r\n createdAt: data.createdAt,\r\n updatedAt: data.updatedAt,\r\n daliCount: data.daliCount,\r\n two30Count: data.two30Count\r\n});\r\n","import { IProjectsResponse } from \"../../models/ResponseModel\";\r\nimport httpService from \"../HTTPService\";\r\nimport {\r\n IProjectResponseModel,\r\n mapFromIProjectResponseModelToIProject,\r\n} from \"./ProjectMapper\";\r\n\r\nconst baseUrl = \"Project\";\r\n\r\nexport const getAllProjects = async (impersonatedUserEmail: string | null,\r\n withFullInfo: boolean = false,\r\n sortBy: string = 'name',\r\n offset: number = 0,\r\n limit: number = 10000): Promise => {\r\n let url = baseUrl + `/GetAll`;\r\n url += `?withFullInfo=${withFullInfo}`;\r\n url += `&sortBy=${sortBy}`;\r\n url += `&offset=${offset}`;\r\n url += `&limit=${limit}`;\r\n\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n try {\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.map((p: IProjectResponseModel) =>\r\n mapFromIProjectResponseModelToIProject(p)\r\n ),\r\n };\r\n }\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const getProjectById = async (projectId: string, impersonatedUserEmail: string | null): Promise => {\r\n let url = baseUrl + `/GetOne/${projectId}`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n try {\r\n const response = await httpService.sendMessage(\"get\", url, projectId);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: mapFromIProjectResponseModelToIProject(response.data),\r\n };\r\n }\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const removeProjects = async (ids: string[], impersonatedUserEmail: string | null): Promise => {\r\n try {\r\n let url = baseUrl + `/deleteMany`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n const response = await httpService.sendMessage(\"post\", url, ids);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const updateProject = async (data: { name: string; id: string; }, impersonatedUserEmail: string | null): Promise => {\r\n try {\r\n let url = baseUrl;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n const response = await httpService.sendMessage(\"put\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n } catch (error) {\r\n return \"error\";\r\n }\r\n};\r\n\r\nconst impersonateIfNeeded = (initialUrl: string, impersonatedUserEmail: string | null): string => {\r\n let url = initialUrl;\r\n if (impersonatedUserEmail !== null) {\r\n if (url.includes('?')) {\r\n url += (\"&impersonate=\" + impersonatedUserEmail);\r\n }\r\n else {\r\n url += (\"?impersonate=\" + impersonatedUserEmail);\r\n }\r\n }\r\n return url;\r\n}\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: \"44px\",\r\n lineHeight: \"47px\",\r\n fontFamily: \"VistaSansReg\",\r\n color: colors.primaryColor,\r\n fontWeight: 700,\r\n marginBottom: theme.spacing(4),\r\n },\r\n content: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Grid, Typography } from '@material-ui/core';\r\nimport useStyles from './ProjectHeader.style';\r\n\r\n\r\nconst ProjectHeader: React.FC = (() => {\r\n const classes = useStyles();\r\n const { t } = useTranslation(['translation']);\r\n\r\n return (\r\n \r\n {t('translation:Projects_Myprojects.title')}\r\n {t('translation:Projects_Myprojects.contentHeader')}\r\n \r\n );\r\n});\r\n\r\nexport default ProjectHeader;\r\n","import React from \"react\";\r\n\r\nconst CheckedBoldBox: React.FC = () => {\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\nexport default CheckedBoldBox;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph14px } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n projectsWrapper: {\r\n margin: \"0 auto\",\r\n maxWidth: \"1040px\",\r\n paddingTop: theme.spacing(5),\r\n [theme.breakpoints.down(\"md\")]: {\r\n maxWidth: \"100%\",\r\n width: \"100%\",\r\n marginLeft: \"2px\",\r\n marginRight: \"2px\",\r\n },\r\n },\r\n projectsContainer: {\r\n paddingTop: theme.spacing(4),\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n overflowX: \"scroll\",\r\n },\r\n },\r\n table: {\r\n overflowX: \"scroll\",\r\n minWidth: \"600px\",\r\n margin: \"40px 0 95px 0\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n margin: \"20px 0\",\r\n padding: \"15px 0\",\r\n },\r\n \"& th\": {\r\n borderBottom: \"none\",\r\n },\r\n \"& td\": {\r\n cursor: \"pointer\",\r\n borderBottom: \"none\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"6px !important\",\r\n },\r\n },\r\n \"& tr\": {\r\n borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n },\r\n \"& tr:hover\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n \"& tr:last-child\":{\r\n borderBottom: \"none\",\r\n }\r\n },\r\n projectsTableHead: {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n columnName: {\r\n color: colors.darkGreyColor,\r\n fontWeight: 800,\r\n ...commonParagraph14px,\r\n },\r\n projectName: {\r\n color: colors.blackColor,\r\n fontWeight: 800,\r\n ...commonParagraph14px,\r\n wordBreak: \"break-word\",\r\n },\r\n content: {\r\n color: colors.blackColor,\r\n ...commonParagraph14px,\r\n wordBreak: \"break-word\",\r\n },\r\n check: {\r\n paddingLeft: \"23px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n \"& span\": {\r\n padding: 0,\r\n cursor: 'pointer',\r\n\r\n },\r\n },\r\n rowContent: {\r\n cursor: \"default\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import i18n from \"i18next\";\r\n\r\nconst isStringNullOrEmpty = (str: any): Boolean => {\r\n if (typeof str !== 'undefined' && str) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\nexport const getDetectorTypeFormatted = (data: any): string => {\r\n let sensorInfo = data?.sensorInformation;\r\n\r\n let detectorFamily = !isStringNullOrEmpty(sensorInfo?.detectorFamily) ? i18n.t(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorFamily}`) : \"\";\r\n let detectorOutputInfo = !isStringNullOrEmpty(sensorInfo?.detectorOutputInfo) ? i18n.t(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorOutputInfo}`) : \"\";\r\n let detectorType = !isStringNullOrEmpty(sensorInfo?.detectorType) ? i18n.t(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorType}`) : \"\";\r\n\r\n let res = \"\";\r\n\r\n if (!isStringNullOrEmpty(sensorInfo?.detectorShortDescription))\r\n {\r\n res += sensorInfo?.detectorShortDescription + \", \";\r\n }\r\n\r\n if (!isStringNullOrEmpty(detectorFamily))\r\n {\r\n res += detectorFamily + \", \";\r\n }\r\n\r\n if (sensorInfo?.detectorFamily != 'dali2Detector' && !isStringNullOrEmpty(detectorOutputInfo))\r\n {\r\n res += detectorOutputInfo + \", \";\r\n }\r\n\r\n if (!isStringNullOrEmpty(detectorType))\r\n {\r\n res += detectorType;\r\n }\r\n\r\n return res;\r\n};\r\n","export enum ZonesEnum {\r\n Zone1 = 1,\r\n Zone2,\r\n Zone3,\r\n Zone4,\r\n Zone5,\r\n}\r\n\r\nexport enum PirEnum {\r\n ZoneA,\r\n ZoneB,\r\n ZoneC,\r\n}\r\n\r\nexport enum SensorError {\r\n PushButtonStuck = 1,\r\n MissingShortAdr = 2,\r\n InitFailed = 4,\r\n ControlGearFailure = 8,\r\n LampFailure = 16,\r\n BusVoltageToLow = 32,\r\n BusVoltageOverload = 64,\r\n BusShorted = 128,\r\n RTCTimeNotSet = 256,\r\n}\r\n\r\nexport enum CfgSystemCommonFunc0 {\r\n CFG_INT_RELAY_STDBY_MIN = 1,\r\n CFG_INT_RELAY_HVAC = 2,\r\n CFG_INT_RELAY_LIGHTING = 4,\r\n RESERVED3 = 8,\r\n RESERVED4 = 16,\r\n RESERVED5 = 32,\r\n RESERVED6 = 64,\r\n RESERVED7 = 128,\r\n}\r\n\r\nexport enum CfgSystemCommonFunc1 {\r\n RESERVED = 1,\r\n CFG_YGM_INDICATION = 2,\r\n CFG_WALKTEST_ACTIVE = 4,\r\n CFG_WIRELESS_PB_ENABLED = 8,\r\n CFG_ECO_ENABLED = 16,\r\n CFG_WIRELESS_SLAVE_ENABLED = 32,\r\n CFG_WIRELESS_LINK_ENABLED = 64,\r\n CFG_WIRELESS_NEIGH_SLAVE = 128,\r\n}\r\n\r\nexport enum CfgZoneCommonFunc1 {\r\n CFG_DLC_ACTIVE = 1,\r\n CFG_OVEREXP_ACTIVE = 2,\r\n CFG_8HOUR_ACTIVE = 4,\r\n RESERVED3 = 8,\r\n CFG_MANUAL_OFF = 16,\r\n CFG_MANUAL_ON = 32,\r\n CFG_AUTO_ON = 64,\r\n RESERVED7 = 128,\r\n}\r\n\r\nexport enum EnZoneCommonFunc1 {\r\n SYSTEM_DLC = 1,\r\n SYSTEM_OVEREXP = 2,\r\n SYSTEM_8HOUR = 4,\r\n SYSTEM_CONSTON = 8,\r\n SYSTEM_MANUAL_OFF = 16,\r\n SYSTEM_MANUAL_ON = 32,\r\n SYSTEM_AUTO_ON = 64,\r\n RESERVED = 128,\r\n}\r\n\r\nexport enum EnSystemFunc1 {\r\n SYSTEM_WIREDSLAVES = 1,\r\n SYSTEM_SWUPDATEINSTALLER = 2,\r\n SYSTEM_YGM_INDICATION = 4,\r\n SYSTEM_WIRLESSLINK = 8,\r\n SYSTEM_WIRELESSPUSHB = 16,\r\n SYSTEM_WIRELESSSLAVE = 32,\r\n SYSTEM_SETSENS = 64,\r\n SYSTEM_WALK = 128,\r\n}\r\n\r\nexport enum EnSystemFunc2 {\r\n RESERVED = 1,\r\n SYSTEM_RELAY_NEIGH_SLAVE = 2,\r\n SYSTEM_MULTIZONE = 4,\r\n SYSTEM_AUTOCONFIG = 8,\r\n SYSTEM_DALI_AUTO_Z1 = 16,\r\n SYSTEM_DALI_BC = 32,\r\n SYSTEM_CMDMONITOR = 64,\r\n SYSTEM_BURNIN = 128,\r\n}\r\n\r\nexport enum EnSystemApp7 {\r\n APP7_DC_FUNCTIONS_TW_HUMANCENTRICLIGHTING_PREDIFINED_CURVE1 = 1,\r\n APP7_DC_FUNCTIONS_TW_HUMANCENTRICLIGHTING_PREDIFINED_CURVE2 = 2,\r\n APP7_DC_FUNCTIONS_TW_HUMAN_CENTRIC_LIGHTING = 4,\r\n APP7_FUNCTIONS_EXTERNAL_TRIGGER = 8,\r\n APP7_FUNCTIONS_LIGHT_SCENE = 16,\r\n APP7_FUNCTIONS_NIGHT_MODE = 32,\r\n APP7_FUNCTIONS_TUNABLE_WHITE = 64,\r\n APP7_DALICOMFORT_BUTTONS_DALI2_PUSH_BUTTONS = 128\r\n}\r\n\r\nexport enum CfgSystemDaliFunc2 {\r\n RESERVED0 = 1,\r\n RESERVED1 = 2,\r\n CFG_BURNIN_ACTIVE = 4,\r\n CFG_DALI_CONFIGURED = 8,\r\n RESERVED4 = 16,\r\n CFG_USR_DYN_SP_ACTIVE = 32,\r\n CFG_TW_DYNAMIC_0 = 64,\r\n CFG_TW_DYNAMIC_1 = 128,\r\n}\r\n\r\nexport enum PushButtonFunction {\r\n NO_FUNCTION = 0,\r\n ONLY_ON = 1,\r\n ON_OFF = 2,\r\n ONLY_OFF = 3,\r\n RESERVED1 = 4,\r\n TW_WARMER_COOLER = 5,\r\n TW_WARMER = 6,\r\n TW_COOLER = 7,\r\n CALL_SCENE = 8,\r\n FDOOR_OPEN = 9,\r\n FDOOR_CLOSED = 10,\r\n TW1 = 11,\r\n TW2 = 12,\r\n TW3 = 13,\r\n TW4 = 14,\r\n RESERVED3 = 15,\r\n RESERVED4 = 16,\r\n RESERVED5 = 17,\r\n RESERVED6 = 18,\r\n AUTO = 19,\r\n RESERVED7 = 20,\r\n RESERVED8 = 21,\r\n RESERVED9 = 22,\r\n RESERVED10 = 23,\r\n TWO_LEVEL_ACTIVE = 24,\r\n DLC_ACTIVE = 25,\r\n RESERVED11 = 26,\r\n LEVEL = 27,\r\n RESERVED12 = 28,\r\n}\r\n\r\nexport enum PushButtonCfgInfo {\r\n SWITCH = 1,\r\n ZONE_1_CHANNEL_1 = 2,\r\n ZONE_2_CHANNEL_2 = 4,\r\n ZONE_3 = 8,\r\n ZONE_4 = 16,\r\n ZONE_5_INTERNAL_RELAY = 32,\r\n MUZ = 64,\r\n RESERVED7 = 128,\r\n}\r\n\r\nexport enum DaliPushButton {\r\n T00 = 0,\r\n T01 = 1,\r\n T02 = 2,\r\n T03 = 3,\r\n T10 = 4,\r\n T11 = 5,\r\n T12 = 6,\r\n T13 = 7,\r\n T20 = 8,\r\n T21 = 9,\r\n T22 = 10,\r\n T23 = 11,\r\n T30 = 12,\r\n T31 = 13,\r\n T32 = 14,\r\n T33 = 15,\r\n}\r\n\r\nexport enum CfgZoneType\r\n{\r\n NOT_USED = 0,\r\n DLZ = 1,\r\n SEZ = 2,\r\n MUZ = 3,\r\n HVAC = 4\r\n}\r\n\r\nexport var LightLevelArray = [0, 84, 110, 126, 136, 144, 151, 156, 161, 166, 170, 173, 176, 179, 182, 184, 187, 189, 191, 193, 195, 197, 198, 200, 202, 203, 205, \r\n 206, 207, 209, 210, 211, 212, 213, 214, 216, 217, 218, 219, 220, 221, 222, 222, 223, 224, 225, 226, 226, 227, 228, 229, 229, 230, \r\n 231, 231, 232, 233, 233, 234, 235, 235, 236, 236, 237, 238, 238, 239, 239, 240, 240, 241, 241, 242, 242, 243, 243, 244, 244,\r\n 245, 245, 246, 246, 247, 247, 247, 248, 248, 249, 249, 249, 250, 250, 251, 251, 251, 252, 252, 253, 253, 253, 254 ];","import {\r\n ZonesEnum,\r\n PirEnum,\r\n CfgSystemCommonFunc0,\r\n CfgSystemCommonFunc1,\r\n CfgZoneCommonFunc1,\r\n EnSystemFunc1,\r\n EnSystemFunc2,\r\n EnZoneCommonFunc1,\r\n CfgSystemDaliFunc2,\r\n PushButtonCfgInfo,\r\n PushButtonFunction,\r\n EnSystemApp7,\r\n CfgZoneType,\r\n LightLevelArray\r\n} from \"./SensorDataEnums/SensorDataEnum\";\r\nimport i18n from \"i18next\";\r\n\r\nexport default class SensorData {\r\n public UserConfigModel: any;\r\n public SensorProfileModel: any;\r\n public Zones: any;\r\n public WiredPushButtonModel: any;\r\n public BlePushButtonModel: any;\r\n public DaliPushButtonModel: any;\r\n public SensorInformation: any;\r\n public HvacShortAddressExternalRelay: any; // 255 not used\r\n public CutOffShortAddressExternalRelay: any; // 255 not used\r\n public GetSetTunableWhiteListModelReply: any;\r\n public GetSetTunableWhitePresetModelReply: any;\r\n public DaliDeviceDataScenesModelReplies: any;\r\n public GetSetWirelessLinkFunctionModelReply: any;\r\n\r\n constructor(detectorInfo: any) {\r\n this.UserConfigModel = JSON.parse(detectorInfo.userConfigModel);\r\n this.SensorProfileModel = JSON.parse(detectorInfo.sensorProfile);\r\n this.Zones = detectorInfo.zones ? JSON.parse(detectorInfo.zones) : \"\";\r\n this.WiredPushButtonModel = detectorInfo.wiredPushButtonModel\r\n ? JSON.parse(detectorInfo.wiredPushButtonModel)\r\n : \"\";\r\n\r\n this.BlePushButtonModel = detectorInfo.blePushButtonModel\r\n ? JSON.parse(detectorInfo.blePushButtonModel)\r\n : \"\";\r\n this.DaliPushButtonModel = detectorInfo.daliPushButtonModel\r\n ? JSON.parse(detectorInfo.daliPushButtonModel)\r\n : \"\";\r\n this.SensorInformation = detectorInfo.sensorInformation;\r\n this.HvacShortAddressExternalRelay =\r\n detectorInfo.hvacShortAddressExternalRelay;\r\n this.CutOffShortAddressExternalRelay =\r\n detectorInfo.cutOffShortAddressExternalRelay;\r\n this.GetSetTunableWhiteListModelReply = detectorInfo.getSetTunableWhiteListModelReply\r\n ? JSON.parse(detectorInfo.getSetTunableWhiteListModelReply)\r\n : { Hours: [] };\r\n this.GetSetTunableWhitePresetModelReply = detectorInfo.getSetTunableWhitePresetModelReply\r\n ? JSON.parse(detectorInfo.getSetTunableWhitePresetModelReply)\r\n : { Presets: [] };\r\n this.DaliDeviceDataScenesModelReplies = detectorInfo.daliDeviceDataScenesModelReplies\r\n ? JSON.parse(detectorInfo.daliDeviceDataScenesModelReplies)\r\n : [];\r\n this.GetSetWirelessLinkFunctionModelReply = detectorInfo.getSetWirelessLinkFunctionModelReply ?\r\n JSON.parse(detectorInfo.getSetWirelessLinkFunctionModelReply) : null;\r\n }\r\n\r\n public GetLuxLevel(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_V_SETPOINT;\r\n }\r\n\r\n public GetLightSwitchOnLevel(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_TURNON_LEVEL;\r\n }\r\n\r\n public GetSwitchAboveLux(zone: ZonesEnum): boolean {\r\n return this.GetBit(\r\n this.GetZone(zone).CFG_ZONE_COMMON_FUNC1,\r\n CfgZoneCommonFunc1.CFG_OVEREXP_ACTIVE\r\n );\r\n }\r\n\r\n public GetSwitchOffDelay(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_T_OFFPIR_DELAY;\r\n }\r\n\r\n public GetLightBehaviour(zone: ZonesEnum): boolean {\r\n return this.GetBit(\r\n this.GetZone(zone).CFG_ZONE_COMMON_FUNC1,\r\n CfgZoneCommonFunc1.CFG_AUTO_ON\r\n );\r\n }\r\n\r\n public GetDaylight(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_DAYLIGHT;\r\n }\r\n\r\n public GetDeskMaxArtificialLight(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_DESKMAXARTIFICIALLIGHT;\r\n }\r\n\r\n public GetOrientationLightLevel(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_ORIENTATION_LEVEL;\r\n }\r\n\r\n public GetOrientationLightSwitchOffDelay(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_T_ORIENTATION_DELAY;\r\n }\r\n\r\n public GetHvacOnTimer(): number {\r\n return this.UserConfigModel.CFG_T_HVACCON_DELAY;\r\n }\r\n\r\n public GetHvacOffTimer(): number {\r\n return this.UserConfigModel.CFG_T_HVACOFF_DELAY;\r\n }\r\n\r\n public GetStdByOffTimer(): number {\r\n return this.UserConfigModel.CFG_T_STDBY_MIN_DELAY;\r\n }\r\n\r\n public GetIntRelayNumber(): number {\r\n return this.SensorProfileModel.hwProfileInfo.NUM_INTRELAY;\r\n } //return number of channels\r\n\r\n public GetZonesLengthDali(): number {\r\n return this.SensorProfileModel.hwProfileInfo.NUM_ZONES;\r\n } //return number of zones ( Dali)\r\n\r\n public IsInFactoryMode(): boolean {\r\n return this.UserConfigModel.CFG_SYSTEM_CONFIGSTATE === 0;\r\n }\r\n\r\n public IsIntRelayOnHvac(): boolean {\r\n return (\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC0 ===\r\n CfgSystemCommonFunc0.CFG_INT_RELAY_HVAC\r\n );\r\n }\r\n\r\n public IsExtHvacRelayUsed(): boolean {\r\n return this.HvacShortAddressExternalRelay !== 255;\r\n }\r\n\r\n public GetExtHvacRelay(): number {\r\n return this.HvacShortAddressExternalRelay;\r\n }\r\n\r\n public IsIntRelayOnStandBy(): boolean {\r\n return (\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC0 ===\r\n CfgSystemCommonFunc0.CFG_INT_RELAY_STDBY_MIN\r\n );\r\n }\r\n\r\n public IsExtStandbyRelayUsed(): boolean {\r\n return this.CutOffShortAddressExternalRelay !== 255;\r\n }\r\n\r\n public GetExtStandbyRelay(): number {\r\n return this.CutOffShortAddressExternalRelay;\r\n }\r\n\r\n public IsIntRelayOnLighting(): boolean {\r\n return (\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC0 ===\r\n CfgSystemCommonFunc0.CFG_INT_RELAY_LIGHTING\r\n );\r\n }\r\n\r\n public IsChannel2OnLighting(): boolean {\r\n return this.UserConfigModel.Zone2.CFG_ZONE_TYPE == CfgZoneType.SEZ;\r\n }\r\n\r\n public GetSystemRedLedSwitch(): boolean {\r\n return this.GetBit(\r\n this.SensorProfileModel.swProfileInfo.EN_SYSTEM_FUNC1,\r\n EnSystemFunc1.SYSTEM_YGM_INDICATION\r\n );\r\n }\r\n\r\n public GetRedLedSwitch(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC1,\r\n CfgSystemCommonFunc1.CFG_YGM_INDICATION\r\n );\r\n }\r\n\r\n public GetBurnInState(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_DALI_FUNC2,\r\n CfgSystemDaliFunc2.CFG_BURNIN_ACTIVE\r\n );\r\n }\r\n\r\n public GetSystemWalkTestState(): boolean {\r\n return this.GetBit(\r\n this.SensorProfileModel.swProfileInfo.EN_SYSTEM_FUNC1,\r\n EnSystemFunc1.SYSTEM_WALK\r\n );\r\n }\r\n\r\n public GetSystem8HourTestState(): boolean {\r\n return this.GetBit(\r\n this.SensorProfileModel.swProfileInfo.Zone1.EN_ZONE_COMMON_FUNC1,\r\n EnZoneCommonFunc1.SYSTEM_8HOUR\r\n );\r\n }\r\n\r\n public GetWalkTestState(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC1,\r\n CfgSystemCommonFunc1.CFG_WALKTEST_ACTIVE\r\n );\r\n }\r\n\r\n public Get8HourTestState(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.Zone1.CFG_ZONE_COMMON_FUNC1,\r\n CfgZoneCommonFunc1.CFG_8HOUR_ACTIVE\r\n );\r\n }\r\n\r\n public GetSystemBurnInState(): boolean {\r\n return this.GetBit(\r\n this.SensorProfileModel.swProfileInfo.EN_SYSTEM_FUNC2,\r\n EnSystemFunc2.SYSTEM_BURNIN\r\n );\r\n }\r\n\r\n public IsTunableWhiteAvailable(): boolean {\r\n return this.GetBit(\r\n this.SensorProfileModel.swProfileInfo.EN_SYSTEM_APP7,\r\n EnSystemApp7.APP7_FUNCTIONS_TUNABLE_WHITE\r\n );\r\n }\r\n\r\n public GetDaylightControlDimming(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_DALI_FUNC2,\r\n CfgSystemDaliFunc2.CFG_USR_DYN_SP_ACTIVE\r\n );\r\n }\r\n\r\n public AreZonesConfigured(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_DALI_FUNC2,\r\n CfgSystemDaliFunc2.CFG_DALI_CONFIGURED\r\n );\r\n }\r\n\r\n public GetPbOperationDuration(): number {\r\n return this.UserConfigModel.CFG_T_LP;\r\n }\r\n\r\n public GetDevicesInZone(i: number): number {\r\n return this.Zones[`DevicesInZone${i}`];\r\n }\r\n\r\n public GetDevicesInMUZ(): number {\r\n return this.Zones.DevicesInMUZ;\r\n }\r\n\r\n public GeOnDelayHVAC(): number {\r\n return this.UserConfigModel.CFG_T_HVACCON_DELAY;\r\n }\r\n\r\n public GeOffDelayHVAC(): number {\r\n return this.UserConfigModel.CFG_T_HVACOFF_DELAY;\r\n }\r\n\r\n public GetWirelessCommunication(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC1,\r\n CfgSystemCommonFunc1.CFG_WIRELESS_SLAVE_ENABLED\r\n );\r\n }\r\n\r\n public GetWirelessLinkEnabled(): boolean {\r\n return this.GetBit(\r\n this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC1,\r\n CfgSystemCommonFunc1.CFG_WIRELESS_LINK_ENABLED\r\n );\r\n }\r\n\r\n public IsChannel2Configured(): boolean {\r\n try {\r\n return this.GetBit(\r\n this.WiredPushButtonModel.PushButton1.PUSH_BUTTON_CFG_INFO,\r\n PushButtonCfgInfo.ZONE_2_CHANNEL_2\r\n );\r\n } catch {\r\n return true;\r\n }\r\n }\r\n\r\n private GetZone(zone: ZonesEnum) {\r\n switch (zone) {\r\n case ZonesEnum.Zone1:\r\n return this.UserConfigModel.Zone1;\r\n case ZonesEnum.Zone2:\r\n return this.UserConfigModel.Zone2;\r\n case ZonesEnum.Zone3:\r\n return this.UserConfigModel.Zone3;\r\n case ZonesEnum.Zone4:\r\n return this.UserConfigModel.Zone4;\r\n case ZonesEnum.Zone5:\r\n return this.UserConfigModel.Zone5;\r\n default:\r\n return this.UserConfigModel.Zone1;\r\n }\r\n }\r\n\r\n public GetSensitivityForElement(pirZone: PirEnum): number {\r\n switch (pirZone) {\r\n case PirEnum.ZoneA:\r\n return this.UserConfigModel.CFG_V_PIRA;\r\n case PirEnum.ZoneB:\r\n return this.UserConfigModel.CFG_V_PIRB;\r\n case PirEnum.ZoneC:\r\n return this.UserConfigModel.CFG_V_PIRC;\r\n default:\r\n throw `Argument out of range: ${pirZone}`;\r\n }\r\n }\r\n\r\n public GetNbOfPirElements(): number {\r\n return this.SensorProfileModel.hwProfileInfo.NUM_PIR;\r\n }\r\n\r\n public GetNetworkId(): number {\r\n return this.UserConfigModel.CFG_SYSTEM_NETWORK_ID;\r\n }\r\n\r\n public GetBit(source: number, parameterBit: number): boolean {\r\n if ((source & parameterBit) !== 0) return true;\r\n return false;\r\n }\r\n\r\n public ReturnSensitivity(level: number): string {\r\n switch (level) {\r\n case 0:\r\n return `${i18n.t(\"translation:SensorData.common.off\")}`;\r\n case 1:\r\n return `${i18n.t(\"translation:SensorData.common.minimum\")}`;\r\n case 2:\r\n return `${i18n.t(\"translation:SensorData.common.low\")}`;\r\n case 3:\r\n return `${i18n.t(\"translation:SensorData.common.high\")}`;\r\n case 4:\r\n return `${i18n.t(\"translation:SensorData.common.maximum\")}`;\r\n default:\r\n return `${i18n.t(\"translation:SensorData.common.high\")}`;\r\n }\r\n }\r\n\r\n public ReturnTime(seconds: number) {\r\n if (seconds === 1)\r\n return `${seconds} ${i18n.t(\"translation:SensorData.common.second\")}`;\r\n else if (seconds < 60)\r\n return `${seconds} ${i18n.t(\"translation:SensorData.common.seconds\")}`;\r\n else if (seconds === 60)\r\n return `1 ${i18n.t(\"translation:SensorData.common.minute\")}`;\r\n else if (seconds > 60 && seconds % 60 === 0)\r\n return `${seconds / 60} ${i18n.t(\r\n \"translation:SensorData.common.minutes\"\r\n )}`;\r\n else\r\n return `${Math.floor(seconds / 60)} ${seconds / 60 < 2\r\n ? i18n.t(\"translation:SensorData.common.minute\")\r\n : i18n.t(\"translation:SensorData.common.minutes\")\r\n } ${seconds % 60} ${seconds % 60 === 1\r\n ? i18n.t(\"translation:SensorData.common.second\")\r\n : i18n.t(\"translation:SensorData.common.seconds\")\r\n }`;\r\n }\r\n\r\n public GetChannels() {\r\n let channels = [];\r\n\r\n for (let i = 1; i <= this.GetIntRelayNumber(); i++) {\r\n if (i === 1) {\r\n channels.push({\r\n type: `zone${i}`,\r\n label: `${i18n.t(\"translation:SensorData.channels.channel\")} ${i}`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n channels.push({\r\n type: \"luxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.channels.luxLevel\")}:`,\r\n value: [\r\n `${this.GetLuxLevel(i)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"switchOffAboveLux\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffAboveLux\"\r\n )}:`,\r\n value: [\r\n this.GetSwitchAboveLux(i)\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\"),\r\n ],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\"translation:SensorData.channels.switchOffDelay\")}:`,\r\n value: [this.ReturnTime(this.GetSwitchOffDelay(i))],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"movementIsDetected\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.behaviourTriggeredByMovement\"\r\n )}:`,\r\n value: [\r\n this.GetLightBehaviour(i)\r\n ? i18n.t(\"translation:SensorData.channels.switchTheLightOnAndOff\")\r\n : i18n.t(\"translation:SensorData.channels.onlySwitchLightOff\")\r\n ],\r\n style: \"h3\",\r\n });\r\n }\r\n if (i === 2) {\r\n if (!this.IsChannel2OnLighting()) {\r\n channels.push({\r\n type: `zone${i}`,\r\n label: `${i18n.t(\"translation:SensorData.channels.channel\")} ${i} ${i18n.t(\"translation:SensorData.channels.HVAC\")}`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n channels.push({\r\n type: \"hvacSwitchOnDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOnDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GeOnDelayHVAC())],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"hvacswitchOffDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GeOffDelayHVAC())],\r\n style: \"h3\",\r\n });\r\n } else {\r\n channels.push({\r\n type: `zone${i}`,\r\n label: `${i18n.t(\"translation:SensorData.channels.channel\")} ${i} ${i18n.t(\"translation:SensorData.channels.lightning\")}`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n channels.push({\r\n type: \"luxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.channels.luxLevel\")}:`,\r\n value: [\r\n `${this.GetLuxLevel(i)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"switchOffAboveLux\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffAboveLux\"\r\n )}:`,\r\n value: [\r\n this.GetSwitchAboveLux(i)\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\"),\r\n ],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GetSwitchOffDelay(i))],\r\n style: \"h3\",\r\n });\r\n channels.push({\r\n type: \"movementIsDetected\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.behaviourTriggeredByMovement\"\r\n )}:`,\r\n value: [\r\n this.GetLightBehaviour(i)\r\n ? i18n.t(\"translation:SensorData.channels.switchTheLightOnAndOff\")\r\n : i18n.t(\"translation:SensorData.channels.onlySwitchLightOff\")\r\n ],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n return channels;\r\n }\r\n\r\n public GetFineTunning() {\r\n let fineTunning = [];\r\n\r\n fineTunning.push(...this.GetSensitivity())\r\n\r\n return fineTunning;\r\n }\r\n\r\n public GetPushButtons() {\r\n let pushButtons = [];\r\n\r\n for (let i = 1; i <= this.GetIntRelayNumber(); i++) {\r\n const wiredButton = this.WiredPushButtonModel[\"PushButton\" + i];\r\n if (i === 1) {\r\n let controlledChannels = this.IsChannel2Configured() ? \"1 & 2\" : \"1\";\r\n\r\n pushButtons.push({\r\n type: `230 V inputs T${i}, Push button (1 action)`,\r\n //label: `${i18n.t(\"translation:SensorData.pushButtons.pushButtonName\")} T${1}`,\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.wiredButton\")}${i}, ${i18n.t(\"translation:SensorData.pushButtons.pushButton\")}`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n pushButtons.push({\r\n type: \"action\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )}`,\r\n value: [\r\n this.ExtractFunctionSimpleButtonString(wiredButton.PUSH_BUTTON_FUNCTION1)\r\n ],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"controls\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\"\r\n )}`,\r\n value: [\r\n `${i18n.t(\"translation:SensorData.channels.channel\")} ${this.GetIntRelayNumber() >= 2 && this.IsChannel2OnLighting()\r\n ? controlledChannels\r\n : i\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n } else if (i === 2 && this.IsChannel2OnLighting()) {\r\n pushButtons.push({\r\n type: `230 V inputs T${i}, Push button (1 action)`,\r\n //label: `${i18n.t(\"translation:SensorData.pushButtons.pushButtonName\"} T${i}`,\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.wiredButton\")}${i}, ${i18n.t(\"translation:SensorData.pushButtons.pushButton\")}`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n pushButtons.push({\r\n type: \"action\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )}`,\r\n value: [\r\n this.ExtractFunctionSimpleButtonString(wiredButton.PUSH_BUTTON_FUNCTION1)\r\n ],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"controls\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\"\r\n )}`,\r\n value: [`${i18n.t(\"translation:SensorData.channels.channel\")} ${i}`],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n\r\n return pushButtons;\r\n }\r\n\r\n public GetCommunication(isSensorSetting: boolean) {\r\n let communication = [];\r\n if (!isSensorSetting) return []; // do not show comm information for templates\r\n\r\n communication.push({\r\n type: \"masterSlave\",\r\n label: i18n.t(\"translation:SensorData.communication.masterSlave\"),\r\n value: [],\r\n style: \"h1\",\r\n });\r\n communication.push({\r\n type: \"wirelessCommunication\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.communication.wirelessCommunication\"\r\n )}:`,\r\n value: [\r\n this.GetWirelessCommunication() === true\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\"),\r\n ],\r\n style: \"h3\",\r\n });\r\n\r\n return communication;\r\n }\r\n\r\n public GetSettingsDali(includeMuz = false, isDetectorSetting : boolean) {\r\n let settings = [];\r\n\r\n const devicesInMuz = () => {\r\n return `${this.GetDevicesInMUZ()} ${this.GetDevicesInMUZ() === 1\r\n ? i18n.t(\"translation:SensorData.common.device\")\r\n : i18n.t(\"translation:SensorData.common.devices\")\r\n }`;\r\n };\r\n\r\n if (this.AreZonesConfigured()) {\r\n let nbZones = 0;\r\n let zonesSettings = [];\r\n let generalDetails = \"\";\r\n for (let i = 0; i < this.GetZonesLengthDali() && i < 4; i++) {\r\n if (this.GetDevicesInZone(i + 1) > 0) {\r\n nbZones++;\r\n const devices = `${this.GetDevicesInZone(i + 1)} ${this.GetDevicesInZone(i + 1) === 1\r\n ? i18n.t(\"translation:SensorData.common.device\")\r\n : i18n.t(\"translation:SensorData.common.devices\")\r\n }`;\r\n generalDetails += `${i18n.t(\r\n \"translation:SensorData.fineTunning.zone\"\r\n )} ${i + 1} (${devices}), `;\r\n if (isDetectorSetting)\r\n {\r\n zonesSettings.push({\r\n type: `zone${i + 1}`,\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.zone\")} ${i + 1\r\n }:`,\r\n value: [devices],\r\n style: \"h2\",\r\n });\r\n }\r\n else\r\n {\r\n zonesSettings.push({\r\n type: `zone${i + 1}`,\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.zone\")} ${i + 1\r\n }:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n }\r\n zonesSettings.push({\r\n type: \"luxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.channels.luxLevel\")}:`,\r\n value: [\r\n `${this.GetLuxLevel(i + 1)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n zonesSettings.push({\r\n type: \"movementIsDetected\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.movementIsDetected\"\r\n )}:`,\r\n value: [\r\n `${this.GetLightBehaviour(i + 1)\r\n ? i18n.t(\"translation:SensorData.channels.switchTheLightOnAndOff\")\r\n : i18n.t(\"translation:SensorData.channels.onlySwitchLightOff\")\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n zonesSettings.push({\r\n type: \"switchOffAboveLux\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffAboveLux\"\r\n )}:`,\r\n value: [\r\n `${this.GetSwitchAboveLux(i + 1)\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\")\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n zonesSettings.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GetSwitchOffDelay(i + 1))],\r\n style: \"h3\",\r\n });\r\n\r\n zonesSettings.push({\r\n type: \"orientationLightLevel\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.orientationLightLevel\"\r\n )}:`,\r\n value: [`${this.GetOrientationLightLevel(i + 1)} %`],\r\n style: \"h3\",\r\n });\r\n zonesSettings.push({\r\n type: \"orientationLightSwitchOffDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.orientationLightSwitchOffDelay\"\r\n )}:`,\r\n value: [\r\n this.ReturnTime(this.GetOrientationLightSwitchOffDelay(i + 1)),\r\n ],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n\r\n // console.log(\"===\", isDetectorSetting, includeMuz)\r\n if (isDetectorSetting && includeMuz) {\r\n //multiZone\r\n const multiZoneDevices =\r\n this.GetDevicesInMUZ() === 0\r\n ? i18n.t(\"translation:SensorData.settings.notUsed\")\r\n : devicesInMuz();\r\n\r\n zonesSettings.push({\r\n type: \"MultiZone\",\r\n label: `${i18n.t(\"translation:SensorData.ZONES.MultiZone\")}:`,\r\n value: [multiZoneDevices],\r\n style: \"h1\",\r\n });\r\n\r\n generalDetails += `${i18n.t(\r\n \"translation:SensorData.ZONES.MultiZone\"\r\n )} (${multiZoneDevices})`;\r\n\r\n settings.push();\r\n }\r\n else {\r\n generalDetails = generalDetails.slice(0, -2); // remove \", \"\r\n }\r\n\r\n if (!isDetectorSetting) generalDetails = `${nbZones} ${i18n.t(\"Templates_Mytemplates.details.zones\")}`;\r\n zonesSettings = [\r\n {\r\n type: \"zones\",\r\n label: i18n.t(\"translation:SensorData.pushButtons.zones\"),\r\n value: [generalDetails],\r\n style: \"h1\",\r\n },\r\n ...zonesSettings,\r\n ];\r\n\r\n return zonesSettings;\r\n } else {\r\n settings.push({\r\n type: `zone${1}`,\r\n label: i18n.t(\"translation:SensorData.settings.broadcast\"),\r\n value: [],\r\n style: \"h1\",\r\n });\r\n settings.push({\r\n type: \"luxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.channels.luxLevel\")}:`,\r\n value: [\r\n `${this.GetLuxLevel(1)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"movementIsDetected\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.behaviourTriggeredByMovement\"\r\n )}:`,\r\n value: [\r\n this.GetLightBehaviour(1)\r\n ? i18n.t(\"translation:SensorData.channels.switchTheLightOnAndOff\")\r\n : i18n.t(\"translation:SensorData.channels.onlySwitchLightOff\")\r\n ],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"switchOffAboveLux\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffAboveLux\"\r\n )}:`,\r\n value: [\r\n this.GetSwitchAboveLux(1)\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\"),\r\n ],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\"translation:SensorData.channels.switchOffDelay\")}:`,\r\n value: [this.ReturnTime(this.GetSwitchOffDelay(1))],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"orientationLightLevel\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.orientationLightLevel\"\r\n )}:`,\r\n value: [`${this.GetOrientationLightLevel(1)} %`],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"orientationLightSwitchOffDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.orientationLightSwitchOffDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GetOrientationLightSwitchOffDelay(1))],\r\n style: \"h3\",\r\n });\r\n return settings;\r\n }\r\n }\r\n\r\n public GetSettingsDaliComfort(isDetectorSetting: boolean) {\r\n let settings = [];\r\n const defaultSettings = this.GetSettingsDali(true, isDetectorSetting);\r\n\r\n const getHvacSwitchOnDelay = `${i18n.t(\r\n \"translation:SensorData.settings.hvacSwitchOnDelay\"\r\n )}: ${this.ReturnTime(this.GetHvacOnTimer())}`;\r\n\r\n const getHvacSwitchOffDelay = `${i18n.t(\r\n \"translation:SensorData.settings.switchOffDelay\"\r\n )}: ${this.ReturnTime(this.GetHvacOffTimer())}`;\r\n\r\n const getStandBySwitchOffDelay = `${i18n.t(\r\n \"translation:SensorData.settings.switchOffDelay\"\r\n )}: ${this.ReturnTime(this.GetStdByOffTimer())}`;\r\n\r\n const getHvacSettings = () => {\r\n if (!isDetectorSetting) return \"\";\r\n\r\n if (this.IsIntRelayOnHvac()) {\r\n return i18n.t(\"translation:SensorData.settings.internalRelay\");\r\n } else if (this.IsExtHvacRelayUsed()) {\r\n return `${i18n.t(\r\n \"translation:SensorData.settings.externalRelay\"\r\n )} ${this.GetExtHvacRelay()}`;\r\n } else {\r\n return i18n.t(\"translation:SensorData.settings.notUsed\");\r\n }\r\n };\r\n\r\n const isHvacRelayUsed = () => {\r\n if (this.IsIntRelayOnHvac() || this.IsExtHvacRelayUsed()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getStandBySettings = () => {\r\n if (!isDetectorSetting) return \"\";\r\n if (this.IsIntRelayOnStandBy()) {\r\n return i18n.t(\"translation:SensorData.settings.internalRelay\");\r\n } else if (this.IsExtStandbyRelayUsed()) {\r\n return `${i18n.t(\r\n \"translation:SensorData.settings.externalRelay\"\r\n )} ${this.GetExtStandbyRelay()}`;\r\n } else {\r\n return i18n.t(\"translation:SensorData.settings.notUsed\");\r\n }\r\n };\r\n\r\n const isStandByRelayUsed = () => {\r\n if (this.IsIntRelayOnStandBy() || this.IsExtStandbyRelayUsed()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n const getVLightingSettings = () => {\r\n if (!isDetectorSetting) return \"\";\r\n if (this.IsIntRelayOnLighting()) {\r\n return i18n.t(\"translation:SensorData.settings.internalRelay\");\r\n } else {\r\n return i18n.t(\"translation:SensorData.settings.notUsed\");\r\n }\r\n };\r\n\r\n const isVLightingRelayUsed = () => {\r\n if (this.IsIntRelayOnLighting()) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n settings.push({\r\n type: \"HVAC\",\r\n label: `${i18n.t(\"translation:SensorData.channels.HVAC\")}:`,\r\n value: [getHvacSettings()],\r\n style: \"h1\",\r\n });\r\n\r\n if (isHvacRelayUsed() || !isDetectorSetting) {\r\n settings.push({\r\n type: \"standardHvacSwitchOnDelay\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.settings.hvacSwitchOnDelay\"\r\n )}:`,\r\n value: [this.ReturnTime(this.GetHvacOnTimer())],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"standardHvacSwitchOffDelay\",\r\n label: `${i18n.t(\"translation:SensorData.settings.switchOffDelay\")}:`,\r\n value: [this.ReturnTime(this.GetHvacOffTimer())],\r\n style: \"h3\",\r\n });\r\n }\r\n\r\n settings.push({\r\n type: \"standbyMinimization\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.settings.standbyMinimization\"\r\n )}:`,\r\n value: [getStandBySettings()],\r\n style: \"h1\",\r\n });\r\n if (isStandByRelayUsed() || !isDetectorSetting) {\r\n settings.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\"translation:SensorData.settings.switchOffDelay\")}:`,\r\n value: [this.ReturnTime(this.GetStdByOffTimer())],\r\n style: \"h3\",\r\n });\r\n }\r\n\r\n settings.push({\r\n type: \"230VLighting\",\r\n label: `${i18n.t(\"translation:SensorData.settings.230VLighting\")}:`,\r\n value: [getVLightingSettings()],\r\n style: \"h1\",\r\n });\r\n\r\n if (isVLightingRelayUsed() || !isDetectorSetting) {\r\n settings.push({\r\n type: \"luxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.channels.luxLevel\")}:`,\r\n value: [\r\n `${this.GetLuxLevel(5)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"switchOffAboveLux\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.switchOffAboveLux\"\r\n )}:`,\r\n value: [\r\n `${this.GetSwitchAboveLux(5)\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\")\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"switchOffDelay\",\r\n label: `${i18n.t(\"translation:SensorData.channels.switchOffDelay\")}:`,\r\n value: [this.ReturnTime(this.GetSwitchOffDelay(5))],\r\n style: \"h3\",\r\n });\r\n settings.push({\r\n type: \"movementIsDetected\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.channels.movementIsDetected\"\r\n )}:`,\r\n value: [\r\n `${this.GetLightBehaviour(5)\r\n ? i18n.t(\"translation:SensorData.channels.switchTheLightOnAndOff\")\r\n : i18n.t(\"translation:SensorData.channels.onlySwitchLightOff\")\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n }\r\n\r\n return [...defaultSettings, ...settings];\r\n }\r\n\r\n public GetSensitivity() {\r\n let letter = [\r\n \"A\",\r\n \"B\",\r\n \"C\",\r\n \"D\",\r\n \"E\",\r\n \"F\",\r\n \"G\",\r\n \"H\",\r\n \"I\",\r\n \"J\",\r\n \"K\",\r\n \"L\",\r\n \"M\",\r\n \"N\",\r\n \"O\",\r\n ];\r\n //let checkEqual = [];\r\n\r\n let fineTunning: any = []\r\n\r\n //Sensitivity\r\n fineTunning.push({\r\n type: \"sensitivity\",\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.sensitivity\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n\r\n let sensitivityFineTunning = [];\r\n if (this.GetNbOfPirElements() == 3)\r\n for (let i = 0; i < this.GetNbOfPirElements(); i++) {\r\n sensitivityFineTunning.push({\r\n type: `sector${letter[i]}`,\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.sector\")} ${letter[i]\r\n }:`,\r\n value: [this.ReturnSensitivity(this.GetSensitivityForElement(i))],\r\n style: \"h3\",\r\n });\r\n //checkEqual.push(this.ReturnSensitivity(this.GetSensitivityForElement(i)));\r\n }\r\n\r\n if (this.GetNbOfPirElements() == 1) {\r\n fineTunning.push({\r\n type: \"sensitivity\",\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.sensitivity\")}:`,\r\n value: [this.ReturnSensitivity(this.GetSensitivityForElement(0))],\r\n style: \"h3\",\r\n });\r\n } else {\r\n fineTunning = [...fineTunning, ...sensitivityFineTunning];\r\n }\r\n\r\n\r\n return fineTunning;\r\n }\r\n\r\n public GetFineTunningDali(isDetectorSetting: boolean) {\r\n let fineTunning = this.GetSensitivity()\r\n\r\n\r\n //Daylight control when dimming\r\n fineTunning.push({\r\n type: \"daylightControlDimming\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.fineTunning.daylightControlDimming\"\r\n )}:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n fineTunning.push({\r\n type: \"daylightControlDimming\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.fineTunning.daylightControlDimming\"\r\n )}:`,\r\n value: [\r\n this.GetDaylightControlDimming()\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\"),\r\n ],\r\n style: \"h3\",\r\n });\r\n\r\n //Lux level at desk\r\n if (this.AreZonesConfigured() && isDetectorSetting) {\r\n fineTunning.push({\r\n type: \"luxLevelAtDesk\",\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.luxLevelAtDesk\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n // console.log(this.GetZonesLengthDali())\r\n for (let i = 1; i <= this.GetZonesLengthDali(); i++) {\r\n if (this.GetDevicesInZone(i) > 0) {\r\n fineTunning.push({\r\n type: `zone${i}`,\r\n label: `${i18n.t(\"translation:SensorData.fineTunning.zone\")} ${i}`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n fineTunning.push({\r\n type: \"whenTheLightsAreOn\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.fineTunning.whenTheLightsAreOn\"\r\n )}:`,\r\n value: [\r\n `${this.GetDaylight(i) + this.GetDeskMaxArtificialLight(i)\r\n } ${i18n.t(\"translation:SensorData.common.lux\")}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n fineTunning.push({\r\n type: \"whenTheLightsAreOff\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.fineTunning.whenTheLightsAreOff\"\r\n )}:`,\r\n value: [\r\n `${this.GetDaylight(i)} ${i18n.t(\r\n \"translation:SensorData.common.lux\"\r\n )}`,\r\n ],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n return fineTunning;\r\n }\r\n\r\n public GetFineTunningDaliSlave() {\r\n let fineTunning = this.GetSensitivity()\r\n return fineTunning;\r\n }\r\n\r\n public GetPresAndHoldTiming = (buttons: any) => {\r\n buttons.push({\r\n type: \"pushButtonOperation\",\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.pushButtonOperation\")}:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n buttons.push({\r\n type: \"pushButtonOperationText\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.pushButtonOperationText\"\r\n )}:`,\r\n value: [\r\n `${this.GetPbOperationDuration() / 1000} ${this.GetPbOperationDuration() / 1000 === 1\r\n ? i18n.t(\"translation:SensorData.common.second\")\r\n : i18n.t(\"translation:SensorData.common.seconds\")\r\n }`,\r\n ],\r\n style: \"h3\",\r\n });\r\n\r\n return buttons\r\n }\r\n\r\n // button Dali Standard\r\n public GetPushButtonsDali(isDetectorSetting : boolean) {\r\n let buttons = [];\r\n if (isDetectorSetting)\r\n {\r\n const wiredButton = this.WiredPushButtonModel[\"PushButton\" + 1];\r\n //pushButton\r\n buttons.push({\r\n type: `230 V inputs T${1}, Push button (1 action)`,\r\n //label: `${i18n.t(\"translation:SensorData.pushButtons.pushButtonName\")} T1`,\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.wiredButton\")}${1}, ${i18n.t(\"translation:SensorData.pushButtons.pushButton\")}`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n buttons.push({\r\n type: \"action\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )}`,\r\n value: [\r\n this.ExtractFunctionSimpleButtonString(wiredButton.PUSH_BUTTON_FUNCTION1)\r\n ],\r\n style: \"h3\",\r\n });\r\n buttons.push({\r\n type: \"controls\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\"\r\n )}`,\r\n value: [i18n.t(\"translation:SensorData.pushButtons.allZones\")],\r\n style: \"h3\",\r\n });\r\n }\r\n\r\n buttons = this.GetPresAndHoldTiming(buttons)\r\n return buttons;\r\n }\r\n\r\n public GetButtonActionandControl(pushButtonsData: any) {\r\n return pushButtonsData.el.PUSH_BUTTON_FUNCTION1 > 0 ? \"ON\" : \"OFF\";\r\n }\r\n\r\n public ExtractFunctionSimpleButtonString(pushButtonFunction: number) {\r\n switch (pushButtonFunction) {\r\n case PushButtonFunction.ON_OFF:\r\n return i18n.t(\"translation:SensorData.pushButtons.switchOnOff\")\r\n case PushButtonFunction.ONLY_ON:\r\n return i18n.t(\"translation:SensorData.common.onlySwitchOn\");\r\n case PushButtonFunction.ONLY_OFF:\r\n return i18n.t(\"translation:SensorData.common.onlySwitchOff\");\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n public ExtractButtonFunctionString(pushButtonFunction: number, pushButtonCfgInfo: number) {\r\n var isSwitch = this.GetBit(pushButtonCfgInfo, PushButtonCfgInfo.SWITCH)\r\n switch (pushButtonFunction) {\r\n case PushButtonFunction.NO_FUNCTION:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.NoAction\"\r\n );\r\n case PushButtonFunction.ON_OFF:\r\n return isSwitch ? i18n.t(\"translation:SensorData.common.off\") :\r\n i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.ONOFFAndDimmingUpDown\"\r\n );\r\n case PushButtonFunction.ONLY_ON:\r\n return isSwitch ? i18n.t(\"translation:SensorData.common.on\") : i18n.t(\r\n \"translation:SensorData.common.onlySwitchOn\"\r\n );\r\n case PushButtonFunction.ONLY_OFF:\r\n return isSwitch ? i18n.t(\"translation:SensorData.common.off\") : i18n.t(\r\n \"translation:SensorData.common.onlySwitchOff\"\r\n );\r\n case PushButtonFunction.TW_WARMER_COOLER:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.DimmingWarmerCooler\"\r\n );\r\n case PushButtonFunction.TW_WARMER:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.DimmingWarmer\"\r\n );\r\n case PushButtonFunction.TW_COOLER:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.DimmingCooler\"\r\n );\r\n case PushButtonFunction.TW1:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.TunableWhitePreset\"\r\n );\r\n case PushButtonFunction.TW2:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.TunableWhitePreset\"\r\n );\r\n case PushButtonFunction.TW3:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.TunableWhitePreset\"\r\n );\r\n case PushButtonFunction.TW4:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.TunableWhitePreset\"\r\n );\r\n case PushButtonFunction.CALL_SCENE:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.LightScene\"\r\n );\r\n case PushButtonFunction.AUTO:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.ResumeDaylightControl\"\r\n );\r\n\r\n //NOT SURE ABOUT NEXT ONE:\r\n case PushButtonFunction.LEVEL:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.PresenceLightLevel\"\r\n );\r\n //..............\r\n case PushButtonFunction.TWO_LEVEL_ACTIVE:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.NightModeOn\"\r\n );\r\n case PushButtonFunction.DLC_ACTIVE:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.NightModeOff\"\r\n );\r\n case PushButtonFunction.FDOOR_OPEN:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.FoldingDoorOpen\"\r\n );\r\n case PushButtonFunction.FDOOR_CLOSED:\r\n return i18n.t(\r\n \"translation:SensorData.INPUT_DEVICE_FUNCTION.FoldingDoorClosed\"\r\n );\r\n\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n\r\n public BuildInformationItems(pushButtonSensorData: any, functionId = 1): any {\r\n\r\n let informationItems: any = [];\r\n if (!this.AreZonesConfigured()) {\r\n informationItems.push(i18n.t(\"translation:SensorData.INPUT_DEVICE_FUNCTION.ONOFFAndDimmingUpDown\"));\r\n informationItems.push(i18n.t(\"translation:SensorData.INPUT_DEVICE_CONTROLS.broadcast\"));\r\n\r\n }\r\n else {\r\n let functionName = (functionId == 1)\r\n ? this.ExtractButtonFunctionString(pushButtonSensorData.PUSH_BUTTON_FUNCTION1, pushButtonSensorData.PUSH_BUTTON_CFG_INFO)\r\n : this.ExtractButtonFunctionString(pushButtonSensorData.PUSH_BUTTON_FUNCTION2, pushButtonSensorData.PUSH_BUTTON_CFG_INFO)\r\n var functionType = (functionId == 1)\r\n ? pushButtonSensorData.PUSH_BUTTON_FUNCTION1\r\n : pushButtonSensorData.PUSH_BUTTON_FUNCTION2\r\n\r\n /*\r\n if (functionType == PushButtonFunction.TW1\r\n || functionType == PushButtonFunction.TW2\r\n || functionType == PushButtonFunction.TW3\r\n || functionType == PushButtonFunction.TW4\r\n || functionType == PushButtonFunction.TWO_LEVEL_ACTIVE\r\n || functionType == PushButtonFunction.DLC_ACTIVE\r\n || functionType == PushButtonFunction.AUTO\r\n || functionType == PushButtonFunction.NO_FUNCTION\r\n ) {\r\n informationItems.push(functionName);\r\n informationItems.push(\"\");\r\n }\r\n else\r\n */\r\n if (functionType == PushButtonFunction.LEVEL) {\r\n informationItems.push(functionName);\r\n if (functionId == 2) {\r\n informationItems.push(`${pushButtonSensorData.Param2}%`);\r\n }\r\n else {\r\n informationItems.push(`${pushButtonSensorData.Param1}%`);\r\n }\r\n }\r\n else if (functionType == PushButtonFunction.CALL_SCENE) {\r\n informationItems.push(functionName);\r\n let parameter = Math.round((functionId == 1) ? pushButtonSensorData.Param1 : pushButtonSensorData.Param2) + 1;\r\n informationItems.push(`${i18n.t(\"translation:SensorData.functions.lightScene\")} ${parameter}`);\r\n }\r\n else {\r\n informationItems.push(functionName);\r\n let zones = this.GetButtonsControl(pushButtonSensorData.PUSH_BUTTON_CFG_INFO).filter((zone) => zone);\r\n zones = zones.map((zone) => (zone.includes(\"Internal relay\") ? \"230V Lightning\" : zone))\r\n informationItems.push(zones);\r\n }\r\n // }\r\n }\r\n\r\n return informationItems;\r\n }\r\n\r\n\r\n public GetPushButtonCfgInfoTranslation(pushButtonCfgInfo: number) {\r\n switch (pushButtonCfgInfo) {\r\n case PushButtonCfgInfo.ZONE_1_CHANNEL_1:\r\n return i18n.t(\"translation:SensorData.ZONES.Zone1\");\r\n case PushButtonCfgInfo.ZONE_2_CHANNEL_2:\r\n return i18n.t(\"translation:SensorData.ZONES.Zone2\");\r\n case PushButtonCfgInfo.ZONE_3:\r\n return i18n.t(\"translation:SensorData.ZONES.Zone3\");\r\n case PushButtonCfgInfo.ZONE_4:\r\n return i18n.t(\"translation:SensorData.ZONES.Zone4\");\r\n case PushButtonCfgInfo.MUZ:\r\n return i18n.t(\"translation:SensorData.ZONES.MultiZone\");\r\n case PushButtonCfgInfo.ZONE_5_INTERNAL_RELAY:\r\n return i18n.t(\"translation:SensorData.ZONES.InternalRelay\");\r\n\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n public GetButtonsControl(buttonControlZones: number): string[] {\r\n let zones = [];\r\n\r\n for (let zone in PushButtonCfgInfo) {\r\n if (this.GetBit(buttonControlZones, Number(zone))) {\r\n zones.push(this.GetPushButtonCfgInfoTranslation(Number(zone)));\r\n }\r\n }\r\n\r\n return zones;\r\n }\r\n\r\n public GetButtonsDaliComfort(isDetectorSetting : boolean) {\r\n const wiredButtons: any = {};\r\n const bleButtons: any = {};\r\n const daliButtons: any = {};\r\n let pushButtons: any[] = [];\r\n let count = 0;\r\n if (isDetectorSetting)\r\n {\r\n //wiredButtons\r\n pushButtons.push({\r\n type: \"wiredButtonsTitle\",\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.wiredButtonsTitle\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n for (let i = 1; i <= 4; i++) {\r\n if (!this.WiredPushButtonModel) {\r\n continue;\r\n }\r\n const wiredButton = this.WiredPushButtonModel[\"PushButton\" + i];\r\n // console.log(`Wired Button ${i}: `, this.BuildInformationItems(wiredButton))\r\n // console.log(wiredButton.PUSH_BUTTON_CFG_INFO)\r\n // console.log(PushButtonCfgInfo.SWITCH)\r\n if (\r\n this.GetBit(wiredButton.PUSH_BUTTON_CFG_INFO, PushButtonCfgInfo.SWITCH)\r\n ) {\r\n let [wiredAction1, wiredControls] = this.BuildInformationItems(wiredButton);\r\n let [wiredAction2, wiredControls2] = this.BuildInformationItems(wiredButton, 2);\r\n\r\n pushButtons.push({\r\n type: `230 V inputs T${i}, Switch (2 actions)`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.wiredButton\"\r\n )}${i}, ${i18n.t(\r\n \"translation:SensorData.pushButtons.switchActions\"\r\n )}`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n pushButtons.push({\r\n type: \"action1\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )} 1`,\r\n value: [wiredAction1],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"controls1\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\",\r\n {\r\n i,\r\n }\r\n )}`,\r\n value: Array.isArray(wiredControls) ? wiredControls : [wiredControls],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"action2\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )} 2`,\r\n value: [wiredAction2],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"controls2\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\",\r\n {\r\n i,\r\n }\r\n )} `,\r\n value: Array.isArray(wiredControls2) ? wiredControls2 : [wiredControls2],\r\n style: \"h3\",\r\n });\r\n } else {\r\n if (wiredButton.PUSH_BUTTON_FUNCTION1 >= 0) {\r\n\r\n let [wiredAction, wiredControls] = this.BuildInformationItems(wiredButton);\r\n // console.log(`Button ${i} Action: `, (wiredAction) ? wiredAction : undefined)\r\n // console.log(`Button ${i} Control: `, wiredControls)\r\n pushButtons.push({\r\n type: `230 V inputs T${i}, Push button (1 action)`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.wiredButton\"\r\n )}${i}, ${i18n.t(\r\n \"translation:SensorData.pushButtons.pushButton\"\r\n )}`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n pushButtons.push({\r\n type: \"action\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\"\r\n )}`,\r\n value: [wiredAction],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: \"controls\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\",\r\n { i }\r\n )}`,\r\n value: Array.isArray(wiredControls) ? wiredControls : [wiredControls],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n //bleButtons\r\n const blePushButtons = [];\r\n\r\n for (let i = 1; i <= 4; i++) {\r\n if (!this.BlePushButtonModel || !this.BlePushButtonModel[\"wirelessPushButton\" + i]) {\r\n continue;\r\n }\r\n\r\n this.BlePushButtonModel[\"wirelessPushButton\" + i].pushButtonsData.forEach(\r\n (element: any) => {\r\n if (element.PUSH_BUTTON_FUNCTION1 > 0) {\r\n count++;\r\n\r\n let buttonKey = `${i18n.t(\"translation:SensorData.pushButtons.blePushButton\")}` + ' '.repeat(count); //Whitespaces - labels will be used as object props, so they have to be different\r\n let [buttonAction, buttonControls] = this.BuildInformationItems(element)\r\n\r\n blePushButtons.push({\r\n type: `blePushButton${count}`,\r\n label: buttonKey,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n blePushButtons.push({\r\n type: \"action\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\",\r\n )}`,\r\n value: [buttonAction],\r\n style: \"h3\",\r\n });\r\n blePushButtons.push({\r\n type: \"controls\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\",\r\n { count }\r\n )}`,\r\n value: Array.isArray(buttonControls) ? buttonControls : [buttonControls],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n );\r\n }\r\n\r\n if (blePushButtons.length > 0) {\r\n pushButtons.push({\r\n type: \"blePushButtonTitle\",\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.blePushButtonTitle\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n }\r\n\r\n pushButtons = [...pushButtons, ...blePushButtons];\r\n\r\n //daliButtons\r\n let isAnyPushButtonUsed = false;\r\n for (let i = 1; i <= 4; i++) {\r\n if (!this.DaliPushButtonModel) {\r\n continue;\r\n }\r\n const daliButton = this.DaliPushButtonModel[\"DaliPushButton\" + i];\r\n isAnyPushButtonUsed = daliButton.PushButtons.some(\r\n (el: any) => el.PushButton.PUSH_BUTTON_FUNCTION1 > 0\r\n );\r\n if (isAnyPushButtonUsed) break;\r\n }\r\n\r\n if (isAnyPushButtonUsed) {\r\n pushButtons.push({\r\n type: \"daliPushButtonsTitle\",\r\n label: `${i18n.t(\"translation:SensorData.pushButtons.daliPushButtonsTitle\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n\r\n for (let i = 1; i <= 4; i++) {\r\n if (!this.DaliPushButtonModel) {\r\n continue;\r\n }\r\n const daliButton = this.DaliPushButtonModel[\"DaliPushButton\" + i];\r\n const isPushButtonUsed = daliButton.PushButtons.some(\r\n (el: any) => el.PushButton.PUSH_BUTTON_FUNCTION1 > 0\r\n );\r\n\r\n if (isPushButtonUsed) {\r\n pushButtons.push({\r\n type: `daliPushButton${i}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.daliPushButton\"\r\n )} ${i}`,\r\n value: isPushButtonUsed\r\n ? []\r\n : [i18n.t(\"translation:SensorData.settings.notUsed\")],\r\n style: \"h2\",\r\n });\r\n\r\n\r\n for (let j = 0; j < 4; j++) {\r\n const pushButton = daliButton.PushButtons[j][\"PushButton\"];\r\n let index = j + 1;\r\n if (pushButton.PUSH_BUTTON_FUNCTION1 > 0) {\r\n\r\n let [inputAction, inputControls] = this.BuildInformationItems(pushButton)\r\n pushButtons.push({\r\n type: `input${i}${j}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.input\"\r\n )} ${index}`,\r\n value: [],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: `action${i}${j}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.action\",\r\n )}`,\r\n value: [inputAction],\r\n style: \"h3\",\r\n });\r\n pushButtons.push({\r\n type: `controls${i}${j}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.pushButtons.controls\",\r\n )}`,\r\n value: Array.isArray(inputControls) ? inputControls : [inputControls],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n pushButtons = this.GetPresAndHoldTiming(pushButtons)\r\n return pushButtons;\r\n }\r\n\r\n public GetPresenceLightLevel(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_PRESENCE_LEVEL;\r\n }\r\n\r\n public GetPresenceDelay(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_T_PRESENCE_DELAY;\r\n }\r\n\r\n public GetNoPresenceLightLevel(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_NON_PRESENCE_LEVEL;\r\n }\r\n\r\n public GetNoPresenceDelay(zone: ZonesEnum): number {\r\n return this.GetZone(zone).CFG_ZONE_T_NON_PRESENCE_DELAY;\r\n }\r\n\r\n public GetFunctionsDaliComfort(isDetectorSetting : boolean) {\r\n let functionsDaliComfort = [];\r\n\r\n //tunableWhite\r\n let isHumanCentricLighting =\r\n this.GetSetTunableWhiteListModelReply.Command === 1\r\n ? i18n.t(\"translation:common.yes\")\r\n : i18n.t(\"translation:common.no\");\r\n\r\n let isTunableWhitePresetUsed = this.GetSetTunableWhitePresetModelReply.Presets.some(\r\n (el: any) => el.Kelvin !== 65535\r\n );\r\n\r\n const getActiveCurve = (): {\r\n activeCurveHour: string;\r\n activeCurveValue: string;\r\n }[] => {\r\n let tunableWhiteListByHour: any = [];\r\n\r\n this.GetSetTunableWhiteListModelReply.Hours.map(\r\n (el: any, index: number) => {\r\n let activeCurveHour = `${i18n.t(\r\n \"translation:SensorData.common.hour\"\r\n )} ${index + 1}:`;\r\n let activeCurveValue = \"\";\r\n let counter = 0;\r\n for (const property in el) {\r\n activeCurveValue += `${el[property]} ${counter === 0\r\n ? `${i18n.t(\"translation:SensorData.common.kelvin\")}, `\r\n : `${i18n.t(\"translation:SensorData.common.lux\")}`\r\n }`;\r\n counter++;\r\n }\r\n tunableWhiteListByHour.push({ activeCurveHour, activeCurveValue });\r\n }\r\n );\r\n return tunableWhiteListByHour;\r\n };\r\n\r\n const getTunableWhitePreset = (): {\r\n presetName: string;\r\n presetValues: string;\r\n }[] => {\r\n let preset: any = [];\r\n if (isTunableWhitePresetUsed) {\r\n let counter = 0;\r\n this.GetSetTunableWhitePresetModelReply.Presets.map(\r\n (el: any, index: number) => {\r\n if (el.Kelvin !== 65535) {\r\n counter++;\r\n\r\n preset.push({\r\n type: `TunableWhitePresetName${counter}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.tunableWhitePreset\"\r\n )} ${counter}`,\r\n value: [],\r\n style: \"h3\",\r\n })\r\n preset.push({\r\n type: `TunableWhitePresetCoulour${counter}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.colourTemperature\"\r\n )}`,\r\n value: [`${el.Kelvin} ${i18n.t(\"translation:SensorData.functions.k\")}`],\r\n style: \"h3\",\r\n })\r\n if (el.LuxSetting !== 65535) {\r\n preset.push({\r\n type: `TunableWhitePresetLux${counter}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.luxLevel\"\r\n )}`,\r\n value: [`${el.LuxSetting} ${i18n.t(\"translation:SensorData.functions.lux\")}`],\r\n style: \"h3\",\r\n })\r\n }\r\n else {\r\n preset.push({\r\n type: `TunableWhitePresetLux${counter}`,\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.luxLevel\"\r\n )}`,\r\n value: [`${i18n.t(\"translation:SensorData.functions.tunableWhitePresetFollowZone\")}`],\r\n style: \"h3\",\r\n })\r\n }\r\n\r\n }\r\n }\r\n );\r\n }\r\n return preset;\r\n };\r\n\r\n const base64ToArray = (base64: string) => {\r\n let binary_string = window.atob(base64);\r\n let len = binary_string.length;\r\n let bytes = new Uint8Array(len);\r\n for (let i = 0; i < len; i++) {\r\n bytes[i] = binary_string.charCodeAt(i);\r\n }\r\n\r\n return bytes.buffer;\r\n };\r\n\r\n const getDecivesAndLuxLevelsForScene = (sceneNumber: number) => {\r\n let devicesAndLuxLevels = {} as { [index: number]: number };\r\n\r\n let daliDevicesScenes = this.DaliDeviceDataScenesModelReplies;\r\n for (let i = 0; i < daliDevicesScenes.length; i++) {\r\n const daliDeviceLuxLevel = new Uint8Array(\r\n base64ToArray(daliDevicesScenes[i].Scenes)\r\n );\r\n\r\n if (daliDeviceLuxLevel[sceneNumber] !== 255) {\r\n devicesAndLuxLevels[i + 1] = daliDeviceLuxLevel[sceneNumber];\r\n }\r\n }\r\n\r\n return devicesAndLuxLevels;\r\n };\r\n\r\n const GetLightSceneLuxLevelInterval = (valueStr: string) =>\r\n {\r\n var value = parseInt(valueStr)\r\n var minPercent = LightLevelArray.indexOf(value);\r\n var maxPercent = LightLevelArray.lastIndexOf(value);\r\n // console.log(\"Lux levels\", LightLevelArray, value, minPercent, maxPercent)\r\n return minPercent == maxPercent ? `${minPercent}` : `${minPercent} - ${maxPercent}`\r\n }\r\n\r\n const getNumberOfFoldingDoors = () => {\r\n // console.log(this.GetSetWirelessLinkFunctionModelReply.NetworkIdList)\r\n const networkIdList = new Uint8Array(\r\n base64ToArray(this.GetSetWirelessLinkFunctionModelReply.NetworkIdList)\r\n );\r\n //console.log(networkIdList)\r\n let fDoors = -1;\r\n if (networkIdList.length) while(networkIdList[fDoors+1] != 254) fDoors++;\r\n return fDoors;\r\n }\r\n\r\n const getNumberOfAdjAreasDetectors = () => {\r\n // console.log(this.GetSetWirelessLinkFunctionModelReply.NetworkIdList)\r\n const networkIdList = new Uint8Array(\r\n base64ToArray(this.GetSetWirelessLinkFunctionModelReply.NetworkIdList)\r\n );\r\n //console.log(networkIdList)\r\n let nbDetectors = 0;\r\n if (networkIdList.length) while(networkIdList[nbDetectors] != 254) nbDetectors++;\r\n //console.log(nbDetectors)\r\n return nbDetectors+1;\r\n }\r\n\r\n const isFoldingDoorWired = () => {\r\n return this.GetSetWirelessLinkFunctionModelReply.Parameter == 1;\r\n }\r\n\r\n const get230vInputsWiredToFoldingDoor = () => {\r\n let V230Inputs = \"\";\r\n if (isFoldingDoorWired())\r\n {\r\n for (let i = 1; i <= 4; i++) {\r\n const wiredButton = this.WiredPushButtonModel[\"PushButton\" + i];\r\n if (wiredButton.PUSH_BUTTON_FUNCTION1 == PushButtonFunction.FDOOR_OPEN || wiredButton.PUSH_BUTTON_FUNCTION1 == PushButtonFunction.FDOOR_CLOSED)\r\n V230Inputs = V230Inputs + \"T\" + i + \",\";\r\n }\r\n }\r\n V230Inputs == \"\" ? V230Inputs = `${i18n.t(\"translation:common.no\")}` : V230Inputs = V230Inputs.slice(0,-1)\r\n // console.log(V230Inputs)\r\n return V230Inputs;\r\n }\r\n\r\n let presenceLightLevel = this.GetPresenceLightLevel(1);\r\n let presenceDelay = this.ReturnTime(this.GetPresenceDelay(1));\r\n let noPresenceLightLevel = this.GetNoPresenceLightLevel(1);\r\n const noPresenceDelay =\r\n this.GetNoPresenceDelay(1) === 65535\r\n ? i18n.t(\"translation:SensorData.common.never\")\r\n : this.ReturnTime(this.GetNoPresenceDelay(1));\r\n\r\n\r\n if (this.IsTunableWhiteAvailable()) {\r\n functionsDaliComfort.push({\r\n type: \"tunableWhite\",\r\n label: `${i18n.t(\"translation:SensorData.functions.tunableWhite\")}:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"humanCentricLighting\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.humanCentricLighting\"\r\n )}:`,\r\n value: [isHumanCentricLighting],\r\n style: \"h3\",\r\n });\r\n\r\n\r\n if (this.GetSetTunableWhiteListModelReply.Command === 1) {\r\n functionsDaliComfort.push({\r\n type: \"activeCurve\",\r\n label: `${i18n.t(\"translation:SensorData.functions.activeCurve\")}:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n\r\n\r\n const activeCurve = getActiveCurve();\r\n activeCurve.forEach((element: any, index: number) => {\r\n functionsDaliComfort.push({\r\n type: `activeCurveHour${index}`,\r\n label: element.activeCurveHour,\r\n value: [element.activeCurveValue],\r\n style: \"h3\",\r\n });\r\n });\r\n }\r\n\r\n\r\n if (!isTunableWhitePresetUsed) {\r\n if (isDetectorSetting)\r\n functionsDaliComfort.push({\r\n type: \"tunableWhiteTitle\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.tunableWhiteTitle\"\r\n )}:`,\r\n value: [i18n.t(\"translation:SensorData.settings.notUsed\")],\r\n style: \"h1\",\r\n });\r\n } else {\r\n functionsDaliComfort.push({\r\n type: \"tunableWhiteTitle\",\r\n label: `${i18n.t(\"translation:SensorData.functions.tunableWhiteTitle\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n const tunablePreset = getTunableWhitePreset();\r\n // tunablePreset.forEach((element: any, index: number) => {\r\n\r\n // });\r\n functionsDaliComfort.push(...tunablePreset)\r\n }\r\n }\r\n\r\n //nightMode\r\n if (this.AreZonesConfigured()) {\r\n functionsDaliComfort.push({\r\n type: \"nightMode\",\r\n label: `${i18n.t(\"translation:SensorData.functions.nightMode\")}:`,\r\n value: [],\r\n style: \"h2\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"presenceLightLevel\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.presenceLightLevel\"\r\n )}:`,\r\n value: [`${presenceLightLevel}%`],\r\n style: \"h3\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"switchToNopresenceLightLevel\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.switchToNopresenceLightLevel\"\r\n )}:`,\r\n value: [presenceDelay],\r\n style: \"h3\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"noPresenceLightLevel\",\r\n label: `${i18n.t(\r\n \"translation:SensorData.functions.noPresenceLightLevel\"\r\n )}:`,\r\n value: [`${noPresenceLightLevel}%`],\r\n style: \"h3\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"switchLightsOff\",\r\n label: `${i18n.t(\"translation:SensorData.functions.switchLightsOff\")}:`,\r\n value: [noPresenceDelay],\r\n style: \"h3\",\r\n });\r\n }\r\n\r\n const lightScenesAvailable = () => {\r\n for (let i = 0; i < 16; i++) {\r\n let scene = getDecivesAndLuxLevelsForScene(i);\r\n //console.log(\"Scene\",scene)\r\n if (Object.keys(scene).length !== 0 && !Object.entries(scene).some((entry: any) => entry[1] === undefined)) {\r\n return true;\r\n }\r\n }\r\n }\r\n //lightScene\r\n if (isDetectorSetting && this.DaliDeviceDataScenesModelReplies.length > 0) {\r\n\r\n if (lightScenesAvailable())\r\n {\r\n functionsDaliComfort.push({\r\n type: \"lightScenes\",\r\n label: `${i18n.t(\"translation:SensorData.functions.lightScenes\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n }\r\n\r\n // console.log(this.DaliDeviceDataScenesModelReplies)\r\n for (let i = 0; i < 16; i++) {\r\n let scene = getDecivesAndLuxLevelsForScene(i);\r\n //console.log(\"Scene\",scene)\r\n if (Object.keys(scene).length !== 0 && !Object.entries(scene).some((entry: any) => entry[1] === undefined)) {\r\n let differentValues: any = {};\r\n let value: any = [];\r\n\r\n for (const prop in scene) {\r\n if (differentValues[scene[prop]])\r\n differentValues[scene[prop]] += 1;\r\n else\r\n differentValues[scene[prop]] = 1;\r\n }//Get number of luminaires and lux level\r\n\r\n //console.log(\"differentValues\", differentValues)\r\n Object.entries(differentValues).reverse().forEach((val: any, i: number) => {\r\n value.push(`${i18n.t(\"translation:SensorData.functions.group\")} ${i + 1}: ${GetLightSceneLuxLevelInterval(val[0])}%`);\r\n value.push((val[1] > 1) ? `${val[1]} ${i18n.t(\"translation:SensorData.functions.luminaires\")}` : `${val[1]} ${i18n.t(\"translation:SensorData.functions.luminaire\")}`);\r\n })//Create value array\r\n\r\n if (this.DaliDeviceDataScenesModelReplies.length > Object.keys(scene).length) {\r\n let diff = this.DaliDeviceDataScenesModelReplies.length - Object.keys(scene).length;\r\n value.push(`${i18n.t(\"translation:SensorData.functions.notInUse\")}:`);\r\n value.push((diff > 1) ? `${diff} ${i18n.t(\"translation:SensorData.functions.luminaires\")}` : `${diff} ${i18n.t(\"translation:SensorData.functions.luminaire\")}`);\r\n }\r\n\r\n functionsDaliComfort.push({\r\n label: `${i18n.t(\"translation:SensorData.functions.lightScene\")} ${i + 1}:`,\r\n type: `lightScene${i + 1}`,\r\n value: [(Object.keys(scene).length > 1) ? `${Object.keys(scene).length} ${i18n.t(\"translation:SensorData.functions.luminaires\")}` : `${Object.keys(scene).length} ${i18n.t(\"translation:SensorData.functions.luminaire\")}`],\r\n style: \"h2\",\r\n });\r\n functionsDaliComfort.push({\r\n type: \"lightSceneLuxLevel\",\r\n label: `${i18n.t(\"translation:SensorData.functions.lightSceneLuxLevel\")}:`,\r\n value: value,\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (isDetectorSetting && this.GetSetWirelessLinkFunctionModelReply != null)\r\n {\r\n //console.log(this.GetSetWirelessLinkFunctionModelReply)\r\n //console.log(this.UserConfigModel.CFG_SYSTEM_COMMON_FUNC1)\r\n //console.log(this.GetWirelessLinkEnabled())\r\n if (this.GetSetWirelessLinkFunctionModelReply.Function == 1) // Folding doors\r\n {\r\n let nbFDoors = getNumberOfFoldingDoors()\r\n functionsDaliComfort.push({\r\n type: \"foldingDoors\",\r\n label: `${i18n.t(\"translation:SensorData.functions.foldingDoor\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n\r\n functionsDaliComfort.push({\r\n type: \"foldingDoorsEmpty\",\r\n label: ``,\r\n value: [`${i18n.t(\"translation:SensorData.functions.foldingDoorDetails\", {count: nbFDoors})}`],\r\n style: \"h3\",\r\n });\r\n // console.log(nbFDoors)\r\n\r\n functionsDaliComfort.push({\r\n type: \"foldingDoorWired\",\r\n label: `${i18n.t(\"translation:SensorData.functions.foldingDoorWired\")}:`,\r\n value: [get230vInputsWiredToFoldingDoor()],\r\n style: \"h3\",\r\n });\r\n }\r\n else if (this.GetSetWirelessLinkFunctionModelReply.Function == 2) // Adj area\r\n {\r\n functionsDaliComfort.push({\r\n type: \"adjArea\",\r\n label: `${i18n.t(\"translation:SensorData.functions.adjArea\")}:`,\r\n value: [],\r\n style: \"h1\",\r\n });\r\n\r\n let lightLevel = this.GetSetWirelessLinkFunctionModelReply.Parameter;\r\n if (lightLevel != 254 && getNumberOfAdjAreasDetectors() > 1) // this is the active master detector\r\n {\r\n functionsDaliComfort.push({\r\n type: \"adjAreaEmpty\",\r\n label: ``,\r\n value: [`${i18n.t(\"translation:SensorData.functions.adjAreaActiveMaster\", {count: getNumberOfAdjAreasDetectors()})}`],\r\n style: \"h3\",\r\n });\r\n\r\n functionsDaliComfort.push({\r\n type: \"adjArealightLevel\",\r\n label: `${i18n.t(\"translation:SensorData.common.lightLevel\")}:`,\r\n value: [lightLevel+'%'],\r\n style: \"h3\",\r\n });\r\n }\r\n else\r\n {\r\n functionsDaliComfort.push({\r\n type: \"adjAreaEmpty\",\r\n label: ``,\r\n value: [`${i18n.t(\"translation:SensorData.functions.adjAreaMaster\")}`],\r\n style: \"h3\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n return functionsDaliComfort;\r\n }\r\n}\r\n","import SensorData from \"./SensorData\";\r\nimport i18n from \"i18next\";\r\n\r\nexport const GetSensorDescription230VMaster = (detectorInfo: any, isSensorSetting: boolean) => {\r\n const SensorDataMethods = new SensorData(detectorInfo);\r\n\r\n let detector = {\r\n channels: SensorDataMethods.GetChannels(),\r\n fineTunning: SensorDataMethods.GetFineTunning(),\r\n pushButtons: SensorDataMethods.GetPushButtons(),\r\n communication: SensorDataMethods.GetCommunication(isSensorSetting),\r\n tabs: {\r\n channels: `${i18n.t(\"translation:SensorData.tabs.channelsTab\")}`,\r\n fineTunning: `${i18n.t(\"translation:SensorData.tabs.fineTunningTab\")}`,\r\n pushButtons: `${i18n.t(\"translation:SensorData.tabs.pushButtonsTab\")}`,\r\n communication: `${i18n.t(\r\n \"translation:SensorData.tabs.communicationTab\"\r\n )}`,\r\n },\r\n };\r\n\r\n return detector;\r\n};\r\n\r\nexport const GetSensorDescription230VSlave = (detectorInfo: any) => {\r\n const SensorDataMethods = new SensorData(detectorInfo);\r\n\r\n let detector = {\r\n fineTunning: SensorDataMethods.GetFineTunning(),\r\n tabs: {\r\n fineTunning: `${i18n.t(\"translation:SensorData.tabs.fineTunningTab\")}`,\r\n },\r\n };\r\n\r\n return detector;\r\n};\r\n\r\nexport const GetSensorDescriptionDaliMaster = (detectorInfo: any, isSensorSetting: boolean) => {\r\n const SensorDataMethods = new SensorData(detectorInfo);\r\n\r\n let detector = {\r\n settings: SensorDataMethods.GetSettingsDali(false, isSensorSetting),\r\n fineTunning: SensorDataMethods.GetFineTunningDali(isSensorSetting),\r\n pushButtons: SensorDataMethods.GetPushButtonsDali(isSensorSetting),\r\n tabs: {\r\n settings: `${i18n.t(\"translation:SensorData.tabs.settingsTab\")}`,\r\n fineTunning: `${i18n.t(\"translation:SensorData.tabs.fineTunningTab\")}`,\r\n pushButtons: `${i18n.t(\"translation:SensorData.tabs.pushButtonsTab\")}`,\r\n },\r\n };\r\n\r\n return detector;\r\n};\r\n\r\nexport const GetSensorDescriptionDaliMasterComfort = (detectorInfo: any, isSensorSetting: boolean) => {\r\n const SensorDataMethods = new SensorData(detectorInfo);\r\n\r\n let detector = {\r\n settings: SensorDataMethods.GetSettingsDaliComfort(isSensorSetting),\r\n fineTunning: SensorDataMethods.GetFineTunningDali(isSensorSetting),\r\n pushButtons: SensorDataMethods.GetButtonsDaliComfort(isSensorSetting),\r\n functions: SensorDataMethods.GetFunctionsDaliComfort(isSensorSetting),\r\n tabs: {\r\n settings: `${i18n.t(\"translation:SensorData.tabs.settingsTab\")}`,\r\n fineTunning: `${i18n.t(\"translation:SensorData.tabs.fineTunningTab\")}`,\r\n pushButtons: `${i18n.t(\"translation:SensorData.tabs.pushButtonsTab\")}`,\r\n functions: `${i18n.t(\"translation:SensorData.tabs.functionsTab\")}`,\r\n },\r\n };\r\n\r\n return detector;\r\n};\r\n\r\nexport const GetSensorDescriptionDaliSlave = (detectorInfo: any) => {\r\n const SensorDataMethods = new SensorData(detectorInfo);\r\n\r\n let detector = {\r\n fineTunning: SensorDataMethods.GetFineTunningDaliSlave(),\r\n tabs: {\r\n fineTunning: `${i18n.t(\"translation:SensorData.tabs.fineTunningTab\")}`,\r\n },\r\n };\r\n\r\n return detector;\r\n};\r\n\r\nconst GetSensorDescription = (detector: any, isSensorSetting: boolean) => {\r\n try {\r\n let family = detector.sensorInformation.detectorFamily.toLowerCase();\r\n let type = detector.sensorInformation.detectorType.toLowerCase();\r\n let daliComfort = detector.sensorInformation.detectorOutputInfo;\r\n\r\n if (family.includes(\"230v\")) {\r\n if (type.includes(\"master\")) {\r\n return GetSensorDescription230VMaster(detector, isSensorSetting);\r\n } else {\r\n return GetSensorDescription230VSlave(detector);\r\n }\r\n } else if (family.includes(\"dali\")) {\r\n if (type.includes(\"master\")) {\r\n if (\r\n daliComfort === \"wirelessComfort\" ||\r\n daliComfort === \"daliComfort\"\r\n ) {\r\n return GetSensorDescriptionDaliMasterComfort(detector, isSensorSetting);\r\n }\r\n return GetSensorDescriptionDaliMaster(detector, isSensorSetting);\r\n } else {\r\n return GetSensorDescriptionDaliSlave(detector);\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n};\r\n\r\nexport default GetSensorDescription;\r\n\r\n/* 230V Object\r\n{\r\n channels: [\r\n {\r\n behaviourTriggeredByMovement: \"Behaviour triggered by movement: Switch the light ON and OFF\"\r\n luxLevel: \"Lux Level: 500 lux\"\r\n name: \"Channel 1\"\r\n switchOffAboveLux: \"Switch-off above lux level: ON\"\r\n switchOffDelay: \"Switch-off delay: 5 minutes\"\r\n },\r\n {\r\n behaviourTriggeredByMovement: \"Behaviour triggered by movement: Switch the light ON and OFF\"\r\n luxLevel: \"Lux Level: 500 lux\"\r\n name: \"Channel 2 Lightning \"\r\n switchOffAboveLux: \"Switch-off above lux level: ON\"\r\n switchOffDelay: \"Switch-off delay: 5 minutes\"\r\n }\r\n ],\r\n fineTunning: [\r\n {\r\n name: \"Sensitivity: High\"\r\n }\r\n ],\r\n pushButtons: [\r\n {\r\n name: \"Push button T1\"\r\n pushButtonBehaviour: \"Push button behaviour: Switch devices ON/OFF\"\r\n pushButtonControlledChannels: \"This push button controls: Channel 1 & 2\"\r\n },\r\n {\r\n name: \"Push button T2\"\r\n pushButtonBehaviour: \"Push button behaviour: Switch devices ON/OFF\"\r\n pushButtonControlledChannels: \"This push button controls: Channel 2\"\r\n }\r\n ],\r\n communication: [\r\n name: \"Master - slave\"\r\n wirelessCommunication: \"Wireless Communication: OFF \"\r\n ],\r\n tabs: {\r\n channels: \"Channels\"\r\n communication: \"Communication\"\r\n fineTunning: \"Fine-Tunning\"\r\n pushButtons: \"Push buttons\"\r\n }\r\n}\r\n*/\r\n\r\n/* Dali Object\r\n{\r\n settings: [\r\n {\r\n name: \"Broadcast \"\r\n luxLevel: \"Lux Level: 300 lux\"\r\n behaviourTriggeredByMovement: \"Behaviour triggered by movement: Switch devices ON and OFF\"\r\n orientationLightLevel: \"Orientation light level: 20 %\"\r\n orientationLightSwitchOffDelay: \"Orientation light switch-off delay: 10 minutes\"\r\n switchOffAboveLux: \"Switch-off above lux level: OFF\"\r\n switchOffDelay: \"Switch-off delay: 15 minutes\"\r\n }\r\n ],\r\n fineTunning: [\r\n {\r\n name: \"Sensitivity: High\"\r\n },\r\n {\r\n name: \"Daylight control when dimming\"\r\n value: \"Daylight control when dimming: OFF\"\r\n }\r\n ],\r\n pushButtons: [\r\n {\r\n name: \"Push button T1\"\r\n pushButtonBehaviour: \"Push button behaviour: Switch devices ON / OFF\"\r\n pushButtonControls: \"Push Button Controls: All Zones\"\r\n },\r\n {\r\n name: \"Push Button Operation\"\r\n operation: \"Press the push button before the device reacts for: 1 second\"\r\n }\r\n ],\r\n tabs: {\r\n settings: \"Settings\"\r\n fineTunning: \"Fine-Tunning\"\r\n pushButtons: \"Push buttons\"\r\n }\r\n}\r\n*/\r\n","import GetSensorDescription from \"../SensorData/GetSensorDescription\";\r\nimport i18n from \"i18next\";\r\nimport * as master_dali_json from './default-json/master_dali.json';\r\nimport * as master_230V_one_json from './default-json/master_230V_one.json';\r\nimport * as master_230V_two_json from './default-json/master_230V_two.json';\r\nimport * as secondary_230V_json from './default-json/secondary_230V.json';\r\nimport * as secondary_dali_json from './default-json/secondary_dali.json';\r\nimport * as comfort_dali_json from './default-json/comfort_dali.json';\r\nimport * as comfort_dali_zones_json from './default-json/comfort_dali_zones.json';\r\nimport SensorData from \"../SensorData/SensorData\";\r\n\r\n\r\nconst GetDefaultDescription = (detector:any, isDetectorSetting: boolean):any => {\r\n const master_230V_one:any = master_230V_one_json;\r\n const master_230V_two:any = master_230V_two_json;\r\n const secondary_230V:any = secondary_230V_json;\r\n const master_dali:any = master_dali_json;\r\n const secondary_dali:any = secondary_dali_json;\r\n const comfort_dali:any = comfort_dali_json;\r\n const comfort_dali_zones:any = comfort_dali_zones_json;\r\n let defaultDetectors = [master_230V_one, master_230V_two, secondary_230V, master_dali, secondary_dali, comfort_dali]\r\n\r\n\r\n //CURRENT DETECTOR\r\n const family = detector.sensorInformation.detectorFamily;\r\n const type = detector.sensorInformation.detectorType;\r\n const outputInfo = detector.sensorInformation.detectorOutputInfo;\r\n let currentDetector:any = GetSensorDescription(detector, isDetectorSetting);\r\n const sensorData = new SensorData(detector)\r\n\r\n\r\n //FIND DEFAULT DETECTOR FOR CURRENT CATEGORY\r\n let defaultDetector:any = detector;\r\n for(let i=0; i {\r\n const [tabName, properties] = tab;\r\n //console.log(tabName, properties)\r\n if (tabName !== \"tabs\") {\r\n properties.forEach((item: any, j:number) => {\r\n let currentValue = item.value.join(\", \");\r\n\r\n item.isDefault = false;\r\n\r\n for(const defaultProperty of defaultDetectorObj[tabName]){\r\n if(defaultProperty.type == item.type){\r\n if(defaultProperty.value.join(\", \") == item.value.join(\", \")){\r\n // console.log(\"Default Value: \", defaultProperty.value.join(\", \"))\r\n // console.log(\"Current Value: \", item.value.join(\", \"))\r\n item.isDefault = true;\r\n break\r\n }\r\n \r\n }\r\n }\r\n //console.error(item.type)\r\n //console.error(item.value)\r\n\r\n //EDGE CASES\r\n if (item.type == \"standardHvacSwitchOnDelay\" && item.value.join(\", \").startsWith(\"2\")) item.isDefault = true;\r\n if (item.type == \"standardHvacSwitchOffDelay\" && item.value.join(\", \").startsWith(\"10\")) item.isDefault = true;\r\n if (item.type == \"foldingDoorsEmpty\" || item.type == \"foldingDoorWired\" || item.type == \"adjAreaEmpty\" || item.type == \"adjArealightLevel\") item.isDefault = true;\r\n if (item.type == \"zones\") item.isDefault = true;\r\n \r\n if( currentValue == i18n.t(`translation:SensorData.settings.notUsed`) ) item.isDefault = true;\r\n else if(item.type.includes(\"sector\"))\r\n {\r\n item.isDefault = currentValue == i18n.t(`translation:SensorData.common.high`);\r\n } \r\n })}\r\n })\r\n }\r\n\r\n //console.log(\"Default props Detector:\", currentDetector)\r\n\r\n return currentDetector;\r\n}\r\n\r\nexport default GetDefaultDescription;","export const HelveticaFont = 'AAEAAAASAQAABAAgRkZUTQM4SQAABNn0AAAAHEdERUaCTYnSAATVZAAAARpHUE9TO9RINwAE15QAAAJeR1NVQkjPSWMABNaAAAABFE9TLzIQRintAAABqAAAAGBjbWFwYEty2gAAJFwAAAbcY3Z0ICe9Ao8AADZAAAAAOGZwZ23bti6MAAArOAAACnVnYXNwAAAAEAAE1VwAAAAIZ2x5ZiWbiCMAAFjQAAQNzGhlYWQLlmMcAAABLAAAADZoaGVhCiIPrQAAAWQAAAAkaG10eDmtHzoAAAIIAAAiVGxvY2EUK6hIAAA2eAAAIlhtYXhwCesEOAAAAYgAAAAgbmFtZZJWfAkABGacAAAKYXBvc3Q0ecxeAARxAAAAZFtwcmVw80Qi7AAANbAAAACQAAEAAAAAAABQyruZXw889QIfCAAAAAAA0zgMfwAAAADTOAx/+GX8JwuRCPkAAAAIAAAAAQAAAAAAAQAABin+KQAADAH4ZfztC5EAAQAAAAAAAAAAAAAAAAAACJUAAQAACJUAkgAJAGsABwACADQAQQBuAAAAnwL3AAQAAQADBMABkAAFAAAFmQUzAAABHgWZBTMAAAPQAGYCAAAAAAAAAAAAAAAAAOAAAv9QAHhbAAAAAAAAAABweXJzAAAACP+nBgD+pAA9B5oBzSAAAZ9PAQAABC8FvQAAACAAAgUSAEIAAAAAAjkAAAI5AAACOQDtAtcAUgRzAAAEcwBABx0AQgVWAFkBhwCcAqoAjgKqAEQDHQBOBKwAXAI5AKoCqgBVAjkArwI5AAAEcwBABHMAxARzAEAEcwAxBHMANARzAEIEcwBNBHMASwRzAEIEcwBJAjkA4wI5AOMErAAcBKwAXASsABwEcwCcCB8A4QVWAB4FVgCXBccAWgXHAKUFVgCvBOMArwY5AGMFxwChAjkAyQQAACMFVgCcBHMAnAaqAJcFxwCcBjkAUAVWAK8GOQBQBccAtAVWAGAE4wAhBccAqgVWADQHjQAlBVYAKgVWACoE4wAvAjkAgAI5/7sCOQAvA8EAeARzAAACqgAmBHMAUgRzAHYEAAA7BHMAOARzAEgCOQAcBHMAPQRzAIQBxwCEAcf/2gQAAIABxwCJBqoAhARzAIQEcwA7BHMAdgRzADwCqgCJBAAAQgI5ABcEcwCABAAACwXHABIEAAALBAAAFQQAADQCrP/VAhQAkAKsACoErAASAjkAAAKqAOgEcwBoBHMAOARzAEsEc//hAhQAkARzAEsCqgBSBeUAEgL2ADsEcwDCBKwAXAKqAFUF5QAVAqoAFQMzAG8EZABcAqoACwKqAAcCqgCKBJz/tARM//UCOQCXAqoAeQKqAFcC7AAxBHMAwgasAKMGrABaBqwASwTjALoFVgAeBVYAHgVWAB4FVgAeBVYAHgVWAB4IAAAQBccAWgVWAK8FVgCvBVYArwVWAK8COQACAjkAawI5//kCOQAgBccAIQXHAJwGOQBQBjkAUAY5AFAGOQBQBjkAUASsAHQGOQBCBccAqgXHAKoFxwCqBccAqgVWACoFVgCABOMAxwRzAFIEcwBSBHMAUgRzAFIEcwBSBHMAUgcdAEkEAAA7BHMASARzAEgEcwBIBHMASAI5AAgCOQBnAjkAAAI5ACUEcwA9BHMAhARzADsEcwA7BHMAOwRzADsEcwA7BGQAXATjAFwEcwCABHMAgARzAIAEcwCABAAAFQRzAIAEAAAVBVYAHgRzAFIFVgAeBHMAUgVWAB4EcwBSBccAWgQAADsFxwBaBAAAOwXHAFoEAAA7BccAWgQAADsFxwClBUgAOAXHACEEcwA4BVYArwRzAEgFVgCvBHMASAVWAK8EcwBIBVYArwRzAEgFVgCvBHMASAY5AGMEcwA9BjkAYwRzAD0GOQBjBHMAPQY5AGMEcwA9BccAoQRzAIQFxwA1BHMAPgOPAGkDcQBEAzMAWQMfAGUCOf/7Ajn/+wI5ADUBx//fAjkAyQI5AL0GOQDJA44AhAQAACMBx/+jBVYAnAQAAIAEAACABHMAnAIfAIMEcwCcAccAiQRzAJwCGgBOBHMAnAJ7AIkEc//oAcf/1wXHAJwEcwCEBccAnARzAIQFxwCcBHMAhARzAA4FxwCcBHMAhAY5AFAEcwA7BjkAUARzADsGOQBQBHMAOwgAAEkHjQBHBccAtAKqAIkFxwC0AqoAiQXHALQCqgBCBVYAYAQAAEIFVgBgBAAAQgVWAGAEAABCBVYAYAQAAEIE4wAhAjkAFwTjACEC4QAXBOMAIQKP/+IFxwCqBHMAgAXHAKoEcwCABccAqgRzAIAFxwCqBHMAgAXHAKoEcwCABccAqgRzAIAHjQAlBccAEgVWACoEAAAVBVYAKgTjAC8EAAA0BOMALwQAADQE4wAvBAAANAI5ABwEcwA4BVYArwRzAHYFxwBZBccAIQVWAK8EcwB2BIkASQVWAK8GAgBhBEgAXATjAAIEcwAoAccAPgK7ACMCuwAjBHMAJQXH//IEcwCEBjkAUAccAFAFaAA7BRoANAVWAGAEAABCBJgAOQTjACEG5gCqBZUAgAYKAFIE4wAvBAAANARlACIEZQA2BAEANASIAEUCFAC2A3MAtgSMACsCOQDDCeIAdAjBAE8H2wA4B9oAawWnAHEC9wBYCOcAcQbwAGsFoQBTBVYAHgRzAFICOQAeAjn//wY5AFAEcwA7BccAqgRzAIAFxwCqBHMAgAXHAKoEcwCABccAqgRzAIAFxwCqBHMAgARzAEgFVgAeBHMAUgVWAB4EcwBSCAAAEAcdAEkGUwAyBMgAMwY5AGMEcwA9BVYAnAQAAIAGOQBQBHMAOwY5AFAEcwA7BEwAGwPqAB0Bx/++Cc0AVAj8AG8H+wA4BjkAYwRzAD0FVgCvBccAnARzAIQFVgAeBHMAUggAABAHHQBJBjkAQgTjAFwFVgAeBHMAUgVWAB4EcwBSBVYArwRzAEgFVgCvBHMASAI5/3EBx/81Ajn/+AHH/6oGOQBQBHMAOwY5AFAEcwA7BccAtAKq/9YFxwC0AqoATwXHAKoEcwCABccAqgRzAIAFVgBgBAAAQgTjACECOQAXBU8ArAVPAKwFxwChBHMAhAXHAKoFVgAeBHMAUgVWAK8EcwBIBjkAUARzADsGOQBQBHMAOwY5AFAEcwA7BjkAUARzADsFVgAqBAAAFQHH/9oHcgBbBzgARQVWAB4FxwBaBAAAOwRz/+gE4wAhBHMAnARzAJwFygAwBsYALgVWADQFVgCvBHMASARWACMBx//aBuEAIgTpACAGPwAvAx8AGgYuABkE6QAxBHMAUQSyADkEsgA5BHMAcgQAADoE3AA4BL0AOARzAEgEcwBIBpkAOQQrAFIEKwBTBlUAPgP+AD0COQAbBNcAPQRzAD0EcwCDBHMAggTXAIICuwAjAgIAhwJBACMC8wAbAiIAhgaqAIMGqgCDBqoAhARz/9YE0gCEBF4AVARzADsHjQBHBccAUAKqAIgCqgCIA4cAiAKqAIkCqgCGAccAKgHHACoENgCDBDYAgwM6//0DOv/9A2kAEQI5ABcCOQAXBSkAMARnADwEAAAKBccAEQQAABQD9wAeBAEAJARzAJwEcwCdBHMAnAQEADoGOQBQA/4APQTEAKEEAACAA/AAnATSADwEcwCcBHMAnAdyADgHdgAXBWAAFwQ6ABcFzgAcBMIAiQS4AIkDbwALBVIAaAS4ADIFKwAyAjoAQgI6AEEA5P/tAVUARQFVAEQBxABEAv0AXQLkAAkCAAALAVUAYQJ7AGEBxwCEAccAqgHHAKoBqQCKAakAigI6AE4COgBPAlYADgJWAA4CVgAkAlYAJAKqACoCqgAqAYcAeAKqAAgCqgDBAqoAOgGHAHgCqgAIAqoAOgKqAMEBqQAhAakAIQGpAIoBqQCKAlYALgJWAC4CVgAuAqoAVQKqABkCqgD3AqoAhAKqAKECqv/3Aqr//wNPABICVgA6AjoACQDjAEQCAAAhAgAABgI6AE8DSwAAA0sAAANLAAADSwAAA0sAAAJ3ADsCdwA7AqoAHgKq//cCqgBOAlYAJAJWACQCVgAOAlYADgKqAHgCqgA6AqoAMwKqADMCqv/pAjkA4wKqAL4CqgC+AqoAvgKqAL4CqgA8AqoAPASHABIAAPz8AAD8/AAA/JwAAPxoAAD8hgAA/GYAAPyKAAD9aQAA/MQAAP08AAD89gAA/HAAAPycAAD9kwAA/SoAAPxwAAD8igAA/IoAAP1bAAD9WwAA/VsAAP1bAAD8/AAA/PwAAPzCAAD8wgAA/MIAAPzEAAD9XgAA/MEAAPzBAAD8wQAA/IYAAP1vAAD9bwAA/WkAAPzEAAD89gAA/VsAAPzqAAD9EgAA/ZMAAPxJAAD7dgAA/JwAAPycAAD8igAA/IoAAPxoAAD8hgAA/GYAAPxmAAD8aAAA/IYAAPxmAAD8kQAA/JEAAP1eAAD8SQAA/MEAAPwIAAD8zQAA/VAAAPxmAAD8/AAA/PwAAPyKAAD9WwAA/I0AAP0ZAAD8SQAA/IYAAP0qAAD9MQAA/HMAAPxzAAD8wgAA+mMAAPzgAAAAAAAA/KIAAP1eAAD8igAA/M0AAPyiAAD8ogAA+54AAP1eAAD+lQAA/I4AAPxRAAD8nwAA+gsAAPoLAAD6BgAA+gYAAPkgAAD6CwAA+GUAAPzJAAD80gAA/ZgAAPzNAAD87wAA/OEAAPzZAAD87AAA/F4AAP1EAAD9SgAA/M8AAPzRAVUAYQFVAGEBNABRBAAAOwQAADsEAAA7AjcA4QIiAC8CtQAaBdUAcgI5AJoGpwAvBroALwNIAC8HiQAvBxMALwepAC8COf/LBVYAGwXHAMUE4wDVBccAKQVWAMUE4wBIBccAsAY5AHECOQC6BVYAsAVWAC8HHQC+BccAsATjAGIGOQBxBccAsAVWAMUE4wBYBOEALwVWACkFxwBQBVgAPQaoAH8GOQBkAjkACgVWACkE4wBaBHMAdwTjADsCOQCwBOMAuATjAFoE4wC0BHMAEgTjAGgEcwB3A40ASgTjADsE5QCPAjkAsARzALAEcwAlBOMAuARzAEIEAABxBOMAbwRkAC8E4wCqBHMATATjAG8EAAA7BOMAuAXHAHcEcwAOBccAjwYQAGoCOQAKBOMAuATjAG8E4wC4BhAAagQAADsBqv/bBjkAcQQSAD8EEgA/BVYArgRzAIAFxwBaBqoAlwXdAJcFmwBGBccAWgXHAFoFxwBaBW0AdQVWAJgGFwAbBCcAmAXHAFAFVgBiAjkAugI5AB0EAAAjCAAAJQfhAJgGOQBOBVYAmAXfAJYFVgAvBccAmAVtACQFTACYBVYAmAQnAJgFnAAlBVYAmAfwAAoFVABFBccAmAXHAJgFVgCYBX4AJQaqAJgFxwCYBjkAUAXHAJgFVgCYBccAUATjAB0FVgAvBtgAQQVWACUF2wCYBTYAYAeNAJgHoQCYBqoAHQcJAJgFNgCYBccAZAgAAJgFtwBqBHMAVgRzAEgEYgCHAzkAhwTZABwEcwBQBj0AFwQAADMEqwCHBKsAhwRiAIcEmAAbBVQAhwRzAIcEcwBIBHMAhwRzAH0EAABIBAAAMwQAABcGqABGBAAAFASRAIcETgBcBjkAhwZXAIcE4wAbBccAhwP/AIcEFAAvBjkAhwR3AFAEhgBSBHMAUARzABsDOQCHBAAASAQAAEgBxwCHAgMAKQHH/90GwwAbBnwAhwRzABsEYgCHBIYAhwQAABcEcwCHBm0AHQTjABsIIgDQBeEAigVWAB4EAAALB5kA0AXPAIoGqAB/BNwAXQhVAEQF4AAmBqgAfwXHAI8GOQBQBHMASAVWACUEAAAEBVYANAS2AAsKOQBQCHMAOwRzAJgDHQCHA+kADALPAAII2QAUBt0AMAVPAHIECgBHBW0ApQQSAHoGMgClBN8Aegb+ACgFTgA1Bd8ArASGAJEHXwCsBZsAkQXfAGMEEgA/BPgAKwQSADoFVgAqBVYAKgVWACoFVgAqBW0ALgQSACQHcgBIBbMAOAWsAKwEegB3BawArAR6AHcFrACsBHoAdwdIADoFlAAmB0gAOgWUACYCOQDJByMACgWJABcF3wCsBIYAkQI5AL0FbQAkBIYAQwVtACQEhgBDCAAAEAcdAEkFbQB1BIYAUgYCAGEEcwBQBgIAYQRzAFAI2QAQBt0AEgVPAEMECgAwBGUAIgQBACQF3wCWBIYAhwXfAJYEhgCHBlUAUASGAFIGVQBOBIYATAZVAE4EhgBMBd8AYAQSADcFbQAQBBIAGQVtABAEEgAZBW0AEAQSABkFrABeBHoAaQTZALwDfACRB0gAmAYAAI0FbQAuBBIAJARgAJoDpgBaBU8AcgQKAEcF8QAmBJwAJAV0AJcDtwBrBJcAcQSwAE8HlwBKBBgAagRaAFUF1QBMB6kARAS/AEsD4AA7CWUASgP5AFYEGQBOBu0ASgQgAD8EUABQBqMASgPzAE0GMwBgBrkARwZAAEQEGQBLBmcARQO+AD4EPQA9A9YAUgSEAEQEEgBKBBYARgSXADkD+gBYBlAALQPNAF4FYABWBJUAMgReAFUD6QA+BGIAVAbCAEkERQD2BcUAEAQrAFIBxwCEBF4AVATmADgE4QA6BPoAOQduAD4EcwA5BHMAOwQ2AIMENgCDBDYAgwTcAE0GMgAqBL4AMwMpADoDKQA6A1UAKAUNADQDKQBUAykAKAMpADMDKQAzAvYAOgL2ADoDKQArAUMAXgLXAFsEuwBeAykAXgMpACoC1wApAykAJwMpACoDKQBUAZQAEAMpAFsDcwA3BLsAXgLXAAgDeACAAykADQN4AEoDKQAKAUMAXgHkAGEDKQBbAtcACAN4AIADKQANA3gAeQMpAAoGywA1BNYAGwT6ABoC2AANBOkAGwMwAA0C2QAKAtsADAcKAC4DEACPAAD8TwAA/E8AAPxCAAD8QgAA/EIAAPxCAAD8AQAA/AEAAP1EBVYAHgRzAFIFVgCXBHMAdgVWAJcEcwB2BVYAlwRzAHYFxwBaBAAAOwXHAKUEcwA4BccApQRzADgFxwClBHMAOAXHAKUEcwA4BccApQRzADgFVgCvBHMASAVWAK8EcwBIBVYArwRzAEgFVgCvBHMASAVWAK8EcwBIBOMArwI5ABwGOQBjBHMAPQXHAKEEcwCEBccAoQRzAIQFxwChBHMAhAXHADkEcwAbBccAoQRzAIQCOf/sAcf/ngI5ACcCOQAWBVYAnAQAAIAFVgCcBAAAgAVWAJwEAACABHMAnAHHAIkEcwCcAcf/nQRzAJwBx/+1BHMAnAHH/8AGqgCXBqoAhAaqAJcGqgCEBqoAlwaqAIQFxwCcBHMAhAXHAJwEcwCEBccAnARzAIQFxwCcBHMAhAY5AFAEcwA7BjkAUARzADsGOQBQBHMAOwY5AFAEcwA7BVYArwRzAHYFVgCvBHMAdgXHALQCqgCJBccAtAKqAIMFxwC0AqoASgXHALQCqgAYBVYAYAQAAEIFVgBgBAAAQgVWAGAEAABCBVYAYAQAAEIFVgBgBAAAQgTjACECOQAXBOMAIQI5ABcE4wAhAjn/4gTjACECOf/nBccAqgRzAIAFxwCqBHMAgAXHAKoEcwCABccAqgRzAIAFxwCqBHMAgAVWADQEAAALBVYANAQAAAsHjQAlBccAEgeNACUFxwASB40AJQXHABIHjQAlBccAEgeNACUFxwASBVYAKgQAAAsFVgAqBAAACwVWACoEAAAVBOMALwQAADQE4wAvBAAANATjAC8EAAA0BHMAhAI5ABAFxwASBAAAFQRzAFICOQAcBVYAHgRzAFIFVgAeBHMAUgVWAB4EcwBSBVYAHgRz/8sFVgAeBHMAUgVWAB4EcwBSBVYAHgRzAFIFVgAeBHMAUgVWAB4EcwBSBVYAHgRzAFIFVgAeBHMAUgVWAB4EcwBSBVYArwRzAEgFVgCvBHMASAVWAK8EcwBIBVYArwRzAEgFVgCMBHP/8AVWAK8EcwBIBVYArwRzAEgFVgCvBHMASAI5AK4COQCZAjkAxwHHAIQGOQBQBHMAOwY5AFAEcwA7BjkAUARzADsGOQBQBHP/2AY5AFAEcwA7BjkAUARzADsGOQBQBHMAOwccAFAFaAA7BxwAUAVoADsHHABQBWgAOwccAFAFaAA7BxwAUAVoADsFxwCqBHMAgAXHAKoEcwCABuYAqgWVAIAG5gCqBZUAgAbmAKoFlQCABuYAqgWVAIAG5gCqBZUAgAVWACoEAAAVBVYAKgQAABUFVgAqBAAAFQVWACoEAAAVBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoFwQBbBbMAWwdsAIgHdgCIB3YAiAeNAIgHygBvB6AAbwRzAHcEcwB3BHMAdwRzAHcEcwB3BHMAdwbCAIgGwgCICHQAiAiJAIgIWwCICGgAiATjADsE4wA7BOMAOwTjADsE4wA7BOMAOwTjADsE4wA7BzMAiAczAIgI5QCICPoAiAjMAIgI2QCICSkAbwkpAG8COQCwAjkAsAI5AEECOQA5AjkAPQI5AD0COQAjAjkAIwOlAIgDpQCIBVcAiAVsAIgFPgCIBUsAiAWbAG8FmwBvBOMAbwTjAG8E4wBvBOMAbwTjAG8E4wBvB6UAiAelAIgJVwCICWwAiAk+AIgJSwCIBOMAuATjALgE4wC4BOMAuATjALgE4wC4BOMAuATjALgGwgCICIkAiAhoAIgIuABvBhAAagYQAGoGEABqBhAAagYQAGoGEABqBhAAagYQAGoHkQCIB5EAiAlDAIgJWACICSoAiAk3AIgJhwBvCYcAbwTjAFoE4wBaBHMAdwRzAHcE4wA7BOMAOwI5ALACOQCwBOMAbwTjAG8E4wC4BOMAuAYQAGoGEABqBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoIEQBbCAwAWwmRAIgJ2ACICX8AiAmbAIgJ0wBvCc4AbwTjADsE4wA7BOMAOwTjADsE4wA7BOMAOwTjADsE4wA7CWwAiAlsAIgLHgCICzMAiAsFAIgLEgCIC2IAbwtiAG8GEABqBhAAagYQAGoGEABqBhAAagYQAGoGEABqBhAAagnKAIgJygCIC3wAiAuRAIgLYwCIC3AAiAvAAG8LwABvBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgVWABsFVgAbBmYALgZhAC8HqQAbAWwAiAI5ALABbACIAiIACwIi/8UE4wA7BOMAOwTjADsE4wA7BOMAOwasAC4GpwAvBtIALga6AC8IMQCwAx4AiAMFAIgDYgBvAjn/zwI5/84COf/MAjn/2gI5/9wCOf/FAjn/4QI5/+4DQwAuA0gALwMzAIgDEgCIA2IAbwTjALgE4wC4BOMAuATjALgE4wCqBOMAqgTjALgE4wC4BVYAKQVWACkGsQAuBxMALwbCAIgCtQAaAsoAGgIiAC4GEABqBhAAagYQAGoGEABqBhAAagdaAC4HiQAvB5IALgepAC8IeABeAiIALwFsAIgCOQAAAjkAAAI5AAACOQAAAjkAAAI5AAACOQAAAjkAAAI5AAABHQAAAI8AAAI5AAAAAAAAAAAAAAAAAAAAAAAAAqoAVQKqAFUCqgBVBHP/+wgAAPEIAADxA3AAtgKq//cBxwCEAccAqgHHAKoBxwCqAqoATgKqAE4CqgBOAqoATgRzAFAEcwBQAs0AlQLVAKQClgDtBVYA7QgAAO0ClgDtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEdAAAIAAAOCwYADgKqAMEELwDBBWUAwQKqAMIELwDCBWUAwgKqAB4CqgC0AqoAqgSsACUEcgDtBHMAnAKqAAQHxgAkB8YAJATqARcGewA6AqoAVQFW/qoCOQCAAjkAgAjmAJwGrACcBqwA7QT3AKEETP/1BEwAcwRMAHIDHQBOAjkA4wfGACQDHQBOBx0A0AcDABsHxgAkBXwATASsAHQG2gDBBKwAJQSsAHQCOQDjBKwAJQV/AFsCOQDjAjkA4wI5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjoAIADkAEICOQAaAjkAIQI6ACcCOQAlAjoAIQI5ACQCVgAuAVUAKwJWAC4BVQBHAVUAIgI6AEICOgAgAjoAYgI5ACACOQAYAjkAGgI5ACECOgAnAjkAJQI6ACECOQAkAlYALgFVACsCVgAuAVUARwFVACICOgApAjoAJAI6AB4CAAAGAjoAJARxACIFxwBaBccAWgRzAAAE0AAoBqoAhAZkADcFwgBOBNkATggtADUEcwA4BfQAYAXQADEE4wAhBVIAKQY5AGMFVgAeBT0AegXHAFoEcwAvBCgAWARzAF4GrAA9BqwAPQXHAFoI+gBvBQsAMQasADoGrAA6CBYAbwXHAKEHNQB/BeUAEwVWAK8GOQBQBgAAMAdWABEIAADtBiUAXgYlAF4BxwAgBVYAnAVWAB4E4wCuBjn/7wfIAFgGOQBjBHMAnARzAJwFVgAqBVYAWQacACkDkAB/BqwAWgI5AMkEcgDJBqsAyQePAMkFVgA0B48ANAnIADQMAQA0B48AyQVWACoHjwAqCcgAKgRzAJwFxwBaBccApQaqAJcBxwCEA44AhAVVAIQFxwCEBAAACwXHAAsHjgALCVUACwXHAIQEAAALBccACweOAAsBxwCJBAAAOwRzADgGqgCEBccAWgQAADsD9AAvBOUAcQTlAHEGlgAcBpYAHAW0ACgErABcBGT/7wW0ACoCMf6DBGQALQRkACsEZABaBGQAXAjAACIHCAA7CAD/6wgA/+sIAAO0CAADjAgAA7QIAAOMCAD/6QgA/+kIAAO0CAADjAgA/+kIAP/pCAAAAAP0AEIE1QCxBeUAFAXlABQF5QAUBAQAFQTaADgCygAkBdkAFgWIADgFxwC0BHMAUgMfAAAGSQChBM8AhAVWAJwEAACABOMALwQAADQE2gChA+sAoQHgAEsB6QBLAV0AJQFdAAoBmQAqAZgAEgL7ABcDBAAXAmcAEwJXABICVwASAsgASwHYAAcB2AAHB+kAOgl8AEsJMQBJCTEAAgE8AEsEVwAiBYkABQWJAA0EvgAVBEIAGAHYAAcB2AAHA5wAPwOAADsDnAA/A4AAOwOcAFMDgQA8A5wAUwOBADwC6wAIAuMAAALjAAAC4wAAAusACALrAFMC4wBTAuMAUwLjAFMC6wBTA2MAUwNjAFMDYwBTA2MAUwNjAFMCfwABAzAARQOyACYDwwALBVIAaAVSAGgEcwBAAuAANARzAEAEcwAxBHMANARzAEIEcwBNBDAAKwRzAEIEcwBJBlIAaQQAABwEAAAcA8wACQPMAAkDzAAJBGQAXAP0AGoFtAAoAjH/eQRk/+8EZABcAccAqgKqAE4GOQBjBHMAPQVWADIEAP/xBHMAnAHHAAwFxwAqBHMACgXHAEkCqgAXAqoATgHHAKoEZAAwA/QALAW0ARICMQBqBGT/NARkACkFVgCvBHMASAVWAK8EcwBIBqoAlwaqAIQFxwC0AqoATARzAEgEcwBIBVYAHgRzAFIEcwBSBVYArwRzAEgFVgCvBHMASAVWAK8EcwBIAjn/8AI5/9sBxwB5BjkAUARzADsGOQBQBHMAOwY5AFAEcwA7BVYAYAQAAEIFxwCqBHMAgAQAAAsG5gCqBZUAgAjm/8oGPAARBqsAKARzAHIGqwAzBqsAKARzACUE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaBOMAWgTjAFoE4wBaAjn/1wI5/+QCOf/SAjn/1wI5/9sCOf/bAjn/zQI5/+ACOf/IAjn/wwI5/9wCOf/cAjn/1wI5/9cCOf/SAjn/zQI5/9ICOf/XBOMAuATjALgE4wC4BOMAuATjALgE4wC4BOMAuATjALgE4wC4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AAC/nAAAwFgAAME8AADCLAAAw0QAAMQwAADFTAAAxnAAAMdgAADIAAAAyIgAAMmAAADK3AAAy5gAAMxkAADNCAAAzjwAAM9wAADQqAAA0cAAANIAAADSVAAA0vwAANOIAADTvAAA0+gAANQUAADULAAA1EQAANRcAADUgAAA1JgAANSwAADU1AAA1PgAANUcAADVQAAA1WQAANWIAADVrAAA1dAAANYEAADWOAAA1mwAANagAADW1AAA1wgAANc8AADXcAAA2FAAANiEAADYuAAA2OwAANkgAADZRAAA2WgAANrIAADcRAAA3GgAANyMAADcsAAA3NQAANz4AADdHAAA3VAAAN2EAADfBAAA4MwAAODwAADhFAAA4SwAAOFEAADhaAAA4YwAAOIwAADiVAAA4ngAAOKsAADi4AAA4wQAAOMoAADjTAAA43AAAOOUAADjuAAA49wAAOQAAADkJAAA5EgAAORsAADkkAAA5LQAAOTMAADk8AAA5QgAAOUsAADlRAAA5WgAAOWMAADlsAAA5dQAAOX4AADmHAAA5kAAAOZkAADmiAAA5qwAAOgYAADpSAAA6hQAAOr4AADsDAAA7PgAAO0cAADtQAAA7iAAAO5EAADuaAAA7oAAAO6kAADu2AAA7wwAAO9AAADvdAAA75gAAO+8AADv8AAA8CQAAPBIAADwbAAA8MAAAPLUAAD1NAAA9gwAAPegAAD6IAAA+sgAAPvAAAD8bAAA/RgAAP5oAAD/WAAA/9AAAQEgAAECxAABA6QAAQRcAAEFhAABBmwAAQeIAAEIfAABCVAAAQoQAAELwAABDcgAAQ+oAAER7AABE9gAARUUAAEWZAABF3QAARhUAAEZUAABGrAAARwQAAEd+AABHzQAAR/YAAEhFAABIlQAASMEAAEkHAABJYQAASY8AAEmqAABJyQAASikAAEpYAABKmgAAStMAAEsdAABLYQAAS6AAAEu5AABL6AAATDoAAEx6AABMrwAATOMAAE0fAABNRgAATY4AAE2sAABNygAATgIAAE45AABOaAAATq0AAE7bAABPBQAATyUAAE98AABPqAAAT8EAAE/hAABQDgAAUCYAAFB0AABQnwAAUMoAAFD0AABRFwAAUVIAAFGiAABRvgAAUeQAAFH4AABSegAAUrAAAFLmAABTVgAAVEAAAFTbAABVPAAAVaYAAFYAAABWKwAAVm4AAFamAABW6AAAVz8AAFdjAABXpQAAV8cAAFfuAABYEQAAWDYAAFhsAABYhAAAWKQAAFi3AABY0gAAWOYAAFj+AABZFgAAWSwAAFlCAABZZAAAWYYAAFmRAABZnQAAWa8AAFnBAABZ2AAAWe0AAFn9AABaCgAAWh0AAFouAABaPwAAWksAAFpcAABabwAAWpoAAFqvAABaxQAAWtsAAFr6AABbFwAAWzQAAFtBAABbYAAAW3EAAFuRAABbrgAAW/IAAFwJAABcKAAAXDcAAFxXAABcZwAAXJgAAFyuAABc0AAAXO0AAF0OAABdLwAAXVAAAF1tAABdgQAAXZkAAF2uAABdwAAAXcQAAF3WAABd5wAAXfIAAF39AABeLAAAXjcAAF5JAABeWwAAXpcAAF6uAABewgAAXtcAAF7tAABfAgAAXyIAAF9CAABfVQAAX2YAAF95AABfkAAAX9QAAF/hAABf7gAAYA4AAGAgAABgNgAAYGAAAGCAAABglwAAYKwAAGC9AABg0gAAYOoAAGESAABhTAAAYWAAAGF4AABhkAAAYagAAGG5AABhzAAAYeUAAGH+AABiGAAAYjAAAGJVAABiaAAAYnoAAGKXAABipAAAYroAAGLQAABi3AAAYuwAAGMbAABjLwAAY2gAAGOFAABjlwAAY7IAAGPuAABkAwAAZBoAAGRCAABkYgAAZJcAAGSkAABksQAAZMMAAGT5AABlBgAAZRMAAGUfAABlNQAAZVsAAGV2AABliwAAZbkAAGXIAABl4QAAZfMAAGYEAABmFwAAZlEAAGZpAABmiQAAZqoAAGbGAABm2AAAZu8AAGcIAABnOQAAZ3sAAGfEAABn3AAAZ/QAAGf0AABoAAAAaBUAAGg/AABoTgAAaFkAAGhkAABofgAAaJQAAGimAABovQAAaRQAAGkqAABpRQAAaWAAAGltAABpegAAabUAAGnQAABp4wAAaisAAGpiAABqdAAAapcAAGq+AABq6gAAayUAAGtKAABrhgAAa7YAAGvfAABr8QAAbAcAAGwaAABsJwAAbD4AAGy7AABtTwAAbeUAAG4GAABuEQAAbikAAG4xAABuRgAAbkwAAG5SAABuWAAAbl4AAG5kAABuagAAbnMAAG6eAABu4QAAbv0AAG8dAABvRwAAb20AAG+SAABv/QAAcBQAAHA3AABwVgAAcIcAAHCyAABw3QAAcTYAAHFUAABxggAAcasAAHHJAABx5gAAcigAAHJNAABygQAAcrAAAHLVAABzBQAAcw4AAHMXAABzIAAAcykAAHMyAABzhAAAc9QAAHQJAAB0UQAAdLwAAHUBAAB1OQAAdXoAAHWlAAB1wQAAdeoAAHYnAAB2PQAAdpYAAHbEAAB3DwAAd1IAAHeJAAB3xAAAd/kAAHgkAAB4YgAAeKoAAHjiAAB5IgAAeWgAAHmuAAB5twAAecAAAHnJAAB6RAAAenIAAHrcAAB7EwAAe0sAAHt7AAB7uAAAfAAAAHwnAAB8UwAAfKIAAHzsAAB9QQAAfZgAAH2hAAB92QAAfiUAAH5MAAB+uQAAfyEAAH82AAB/WgAAf5cAAIAtAACAZwAAgJ0AAIDLAACA1AAAgTAAAIFVAACBeQAAga0AAIH4AACCEwAAglAAAIJ5AACCrgAAgyIAAINLAACDkAAAg7IAAIQkAACEUwAAhHYAAIS8AACE2QAAhQoAAIVkAACFgQAAhboAAIYBAACGJwAAhksAAIZ6AACGmwAAhsQAAIb5AACHMgAAh2QAAIfNAACILgAAiH0AAIjZAACJWQAAiY0AAImiAACJzAAAijkAAIplAACK6gAAiwoAAItCAACLXgAAi64AAIvTAACL7wAAjDkAAIxQAACMxgAAjS0AAI1EAACNdwAAjigAAI5FAACOYQAAjocAAI6hAACOwgAAju0AAI8aAACPQAAAj7EAAJAcAACQXAAAkGIAAJD4AACRQAAAkWoAAJHeAACSSwAAkmsAAJKQAACStQAAkxMAAJNDAACTgAAAk64AAJO3AACUBAAAlCkAAJRmAACUpwAAlREAAJV1AACVogAAlccAAJYJAACWNwAAlnIAAJaeAACW8gAAly4AAJdiAACXmgAAl/IAAJhRAACYhgAAmK8AAJj/AACZUQAAmVcAAJldAACZfQAAmZ0AAJm+AACZ3gAAmg8AAJpAAACa+gAAm60AAJvTAACb+QAAnCcAAJxUAACcgwAAnKsAAJzQAACc9QAAnSMAAJ1HAACdlQAAnc0AAJ3tAACeCwAAnikAAJ5BAACecgAAnp8AAJ7CAACe6AAAnwwAAJ88AACfaQAAn5MAAJ/CAACf7wAAoBUAAKA4AACggwAAoMwAAKEcAAChagAAoW4AAKF3AAChgAAAoagAAKHPAACh3wAAoegAAKHxAACh+gAAogMAAKIHAACiCwAAohQAAKIdAACiVwAAosMAAKLMAACi1QAAot4AAKLnAACi8AAAovkAAKNGAACjlAAAo50AAKOmAACjrwAAo7gAAKPBAACjygAApAgAAKQ8AACkRQAApE4AAKRXAACkYAAApGkAAKRyAACkewAApIQAAKSNAACklgAApJ8AAKSoAACkxgAApOIAAKTrAACk9AAApR0AAKVGAAClcAAApfkAAKZNAACmmQAApvQAAKdaAACniAAAp64AAKffAACoDgAAqFMAAKh0AACopwAAqOYAAKkXAACpNgAAqWEAAKmyAACp3gAAqhMAAKpPAACqgQAAqrgAAKr0AACrEgAAq2cAAKupAACr8QAArBAAAKxUAACsdQAArK8AAKzfAACtGwAArT0AAK16AACtwgAAre4AAK5VAACulgAArvQAAK8eAACvPgAAr3cAAK+rAACv5wAAr/UAALAlAACwfQAAsJ0AALC2AACw6QAAsQYAALFNAACxnwAAscAAALHoAACyEQAAskkAALKAAACypwAAsuEAALMMAACzVQAAs5EAALPJAAC0HQAAtEoAALR6AAC0pQAAtNwAALUKAAC1RgAAtZEAALWjAAC1wQAAtfwAALY6AAC2VQAAtnUAALaSAAC2rgAAtuoAALcSAAC3PwAAt1wAALeMAAC3pAAAt94AALgLAAC4PwAAuHoAALiLAAC4uAAAuOEAALjzAAC5LQAAuWQAALmdAAC55QAAumMAALsqAAC7ugAAvDEAALz7AAC9eAAAvd4AAL5cAAC+zQAAvwQAAL9AAAC/aAAAv3sAAL+OAAC/ngAAv64AAL+/AAC/zwAAv/YAAL//AADACAAAwBEAAMAaAADAIwAAwCwAAMA1AADAPgAAwEcAAMBQAADAWQAAwGIAAMBrAADAdAAAwH0AAMCGAADAjwAAwJgAAMChAADAqgAAwLcAAMDEAADA0QAAwN4AAMDnAADA8AAAwPkAAMECAADBDQAAwRoAAMEjAADBLAAAwTUAAME+AADBRwAAwVAAAMFZAADBYgAAwWsAAMF0AADBfAAAwYQAAMGNAADBlgAAwZ8AAMGoAADBtQAAwcIAAMHLAADB1AAAwd0AAMHmAADB7wAAwfgAAMIBAADCCgAAwhcAAMIkAADCLQAAwjYAAMI/AADCSAAAwlEAAMJaAADCYwAAwmwAAMJ1AADCfgAAwocAAMKQAADCmQAAwqIAAMKrAADCtAAAwr0AAMLGAADC0wAAwuAAAMLtAADC+gAAwwcAAMMUAADDIQAAwy4AAMM3AADDQAAAw0kAAMNSAADDWwAAw2MAAMNsAADDdQAAw4IAAMOPAADDmAAAw6EAAMOqAADDswAAw7wAAMPFAADD0gAAw98AAMPsAADD+QAAxAYAAMQTAADEHAAAxCUAAMQuAADENwAAxEAAAMRJAADEUgAAxFsAAMRkAADEbQAAxHYAAMR/AADEiAAAxJEAAMSeAADEqwAAxLgAAMTFAADEzgAAxNcAAMTgAADE6QAAxPIAAMT7AADFBAAAxQ0AAMUWAADFHwAAxSgAAMUxAADFOgAAxUMAAMVMAADFVQAAxV4AAMVnAADFcAAAxXkAAMWCAADFiwAAxZQAAMWdAADFpgAAxa8AAMW4AADFwQAAxcoAAMXTAADGXwAAxmgAAMZxAADGegAAxoMAAMaMAADGmQAAxqYAAMazAADGwAAAxs0AAMbaAADG5wAAxvQAAMcBAADHDgAAxxsAAMcoAADHNQAAx0IAAMdPAADHXAAAx2kAAMd2AADHgwAAx5AAAMeZAADHogAAx6sAAMe0AADHvQAAx8YAAMfTAADH4AAAx+0AAMf6AADIBwAAyBQAAMghAADILgAAyDsAAMhIAADIUQAAyFoAAMhjAADIbAAAyHUAAMh+AADIhwAAyJAAAMidAADIqgAAyLcAAMjEAADI0QAAyN4AAMjrAADI+AAAyQUAAMkSAADJGwAAySQAAMktAADJNgAAyT8AAMlIAADJUQAAyVcAAMlgAADJaQAAyXIAAMl7AADJhAAAyY0AAMmWAADJnwAAyagAAMmxAADJugAAycMAAMnMAADJ1QAAyd4AAMnnAADJ8AAAyfkAAMoCAADKCwAAyhQAAModAADKJgAAyi8AAMo4AADKQQAAykoAAMpTAADKXAAAymUAAMpuAADKdwAAyn0AAMqDAADKiQAAyo8AAMqVAADKmwAAyqEAAMqnAADKsAAAyrkAAMrCAADKywAAytQAAMrdAADK4wAAyukAAMrvAADK9QAAyvsAAMsBAADLCgAAyxMAAMscAADLJQAAyy4AAMs3AADLQAAAy0kAAMtPAADLVQAAy1sAAMthAADLZwAAy20AAMtzAADLeQAAy4IAAMuLAADLlAAAy50AAMumAADLrwAAy7gAAMvBAADLxwAAy80AAMvTAADL2QAAy98AAMvlAADL6wAAy/EAAMv6AADMAwAAzAwAAMwVAADMHgAAzCcAAMwtAADMMwAAzDkAAMw/AADMRQAAzEsAAMxUAADMXQAAzGYAAMxvAADMeAAAzIEAAMyKAADMkwAAzJkAAMyfAADMpQAAzKsAAMy0AADMvQAAzMYAAMzPAADM2AAAzOEAAMzqAADM8wAAzPkAAMz/AADNBQAAzQsAAM0RAADNFwAAzR0AAM0jAADNLAAAzTUAAM0+AADNRwAAzVAAAM1ZAADNYgAAzWsAAM10AADNfQAAzYYAAM2PAADNmAAAzaEAAM2uAADNuwAAzcgAAM3VAADN4gAAze8AAM38AADOCQAAzhEAAM4ZAADOIQAAzikAAM4xAADOOQAAzkEAAM5JAADOVgAAzmMAAM5wAADOfQAAzooAAM6XAADOpAAAzrEAAM65AADOwQAAzskAAM7RAADO2QAAzuEAAM7pAADO8QAAzv4AAM8LAADPGAAAzyUAAM8yAADPPwAAz0wAAM9ZAADPYQAAz2kAAM9xAADPeQAAz4EAAM+JAADPkQAAz5kAAM+iAADPqwAAz7gAAM/BAADPzgAAz9cAAM/kAADP7QAAz/YAAM/8AADQAgAA0AgAANAcAADQPAAA0FAAANCKAADQrgAA0LsAANDEAADQ0QAA0NoAANDnAADQ7QAA0PMAAND5AADQ/wAA0QUAANEgAADRPAAA0WMAANFsAADRdQAA0X4AANGHAADRkAAA0ZgAANGhAADRqgAA0bAAANG2AADR0QAA0ewAANITAADSHAAA0iUAANIuAADSNwAA0kAAANJJAADSUgAA0lsAANJkAADSbQAA0nMAANJ5AADSfwAA0p8AANK3AADSwgAA0s8AANLYAADS5QAA0u4AANL7AADTAQAA0wcAANMNAADTEwAA0xkAANMkAADTOAAA0zgAANM4AADTOAAA0zgAANM4AADTOAAA0zgAANM4AADTOAAA0zgAANM4AADTOAAA0zgAANM4AADTOAAA0zgAANNFAADTUgAA018AANNsAADTeQAA04YAANObAADTrQAA08EAANPZAADT8wAA1AsAANQrAADUTQAA1HEAANSTAADUuQAA1OMAANT0AADU/AAA1Q0AANUlAADVRAAA1VAAANVQAADVUAAA1VAAANVQAADVUAAA1VAAANVQAADVUAAA1cgAANa4AADWywAA1ugAANcNAADXIAAA1z0AANdiAADXeQAA14QAANePAADX4gAA1+gAANgiAADYKgAA2EUAANhgAADYcwAA2LUAANjCAADY0wAA2PEAANkQAADZFgAA2RwAANkiAADZPgAA2V8AANl2AADZjQAA2aQAANnFAADZ9AAA2iUAANpIAADaegAA2r4AANrmAADa/wAA2ywAANtqAADbjAAA26sAANvnAADcFQAA3DQAANxbAADcWwAA3FsAANxbAADcWwAA3FsAANxbAADcWwAA3FsAANxbAADcWwAA3FsAANyBAADckwAA3LgAANzxAADdKQAA3UoAAN2GAADdzAAA3ekAAN31AADeCwAA3iUAAN4+AADeZQAA3osAAN6gAADezwAA3xMAAN8wAADfaAAA36AAAN+6AADf9QAA4C4AAOBDAADgVAAA4GoAAOCEAADgnQAA4NsAAOESAADhLgAA4UQAAOFwAADhowAA4gEAAOJ2AADinQAA4zsAAOOPAADj4gAA5MIAAOVCAADlqgAA5bMAAOYiAADmVgAA5oUAAObgAADnLwAA53YAAOhrAADonQAA6NMAAOkWAADpTgAA6ZQAAOnoAADqCwAA6hEAAOo2AADqYwAA6pAAAOqWAADqqQAA6tAAAOr/AADrGQAA60UAAOt5AADrkgAA66gAAOvHAADr5gAA6/UAAOv5AADsAgAA7A4AAOw0AADsVwAA7HYAAOx/AADsiAAA7JUAAOzHAADs/QAA7QkAAO0wAADtNAAA7ToAAO1CAADtSAAA7UwAAO1SAADtWgAA7WQAAO1qAADtbgAA7XQAAO18AADtgAAA7YQAAO2IAADtjAAA7ZAAAO2WAADtngAA7aQAAO2oAADtrgAA7bYAAO3AAADtxgAA7coAAO3QAADt2AAA7dwAAO3gAADt5AAA7egAAO4yAADurwAA7rMAAO7AAADuzQAA7toAAO7nAADu6wAA7vMAAO73AADvIAAA7ycAAO8rAADvLwAA7z4AAO9OAADvXwAA72oAAO9yAADvegAA74IAAO+KAADvlAAA754AAO+oAADvsgAA77w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/9wERwXdEiYARAAAEQcCmAQX//8ACbEDArj//7ArKwD//wAeAAAFPQb9EiYAJAAAEQcCmgTqASIACbEDAbgBIrArKwD//wBS/9wERwXUEiYARAAAEQcCmgRd//kACbEDAbj/+bArKwD//wCvAAAE7QdGEiYAKAAAEQcCmATEAWgACbECArgBaLArKwD//wBI/9oEGgXdEiYASAAAEQcCmAQn//8ACbEDArj//7ArKwD//wCvAAAE7Qc4EiYAKAAAEQcCmgUGAV0ACbECAbgBXbArKwD//wBI/9oEGgXKEiYASAAAEQcCmgSG/+8ACbEDAbj/77ArKwD///9xAAACHQdGEiYALAAAEQcCmAMBAWgACbEBArgBaLArKwD///81AAAB4QXeECYA89AAEAcCmALFAAD////4AAACcAc4EiYALAAAEQcCmgNuAV0ACbEBAbgBXbArKwD///+qAAACIgXbECYA89AAEAcCmgMgAAD//wBQ/9UF6Ad9EiYAMgAAEQcCmAT1AZ8ACbEDArgBn7ArKwD//wA7/9kEIQXeEiYAUgAAEAcCmAQkAAD//wBQ/9UF6AdgEiYAMgAAEQcCmgVUAYUACbEDAbgBhbArKwD//wA7/9kEIQXUEiYAUgAAEQcCmgRm//kACbEDAbj/+bArKwD//wC0AAAFeAdLEiYANQAAEQcCmATIAW0ACbECArgBbbArKwD////WAAACkgX3EiYAVQAAEQcCmANmABkACLEBArAZsCsrAAD//wC0AAAFeAcnEiYANQAAEQcCmgUAAUwACbECAbgBTLArKwD//wBPAAACxwXNEiYAVQAAEQcCmgPF//IACbEBAbj/8rArKwD//wCq/9kFLwdGEiYAOAAAEQcCmATiAWgACbECArgBaLArKwD//wCA/+MD3gXdEiYAWAAAEQcCmAQl//8ACbECArj//7ArKwD//wCq/9kFLwc4EiYAOAAAEQcCmgUkAV0ACbECAbgBXbArKwD//wCA/+MD3gXPEiYAWAAAEQcCmgRn//QACbECAbj/9LArKwAAAgBg/a0E9gXiAC8APgCwtD4wAgY/S7AmUFhALAACAwUDAgVoCAEFAAMFAGYABwAGBwZVAAMDAVMAAQEUQwAAAARTAAQEFQREG0uwKFBYQCwAAgMFAwIFaAgBBQADBQBmAAcABgcGVQADAwFTAAEB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AbgBibArKwD//wAcAAACFwcjEiYASQAAEQcCYv/aAX4ACbEBAbgBfrArKwD//wBj/9kFoQbVEiYAKgAAEQcAcQG9AV0ACbECAbgBXbArKwD//wA9/jsD6AVNEiYASgAAEQcAcQDS/9UACbEDAbj/1bArKwD//wChAAAFLwbZEiYAKwAAEQcCYgGhATQACbEBAbgBNLArKwD//wCEAAAD7QbUEiYASwAAEQcCYgD3AS8ACbEBAbgBL7ArKwD//wCh/tUFLwW9EiYAKwAAEQcCYgGs+gAACbEBAbj6ALArKwD//wCE/tUD7QXCEiYASwAAEQcCYgD8+gAACbEBAbj6ALArKwD//wChAAAFLwbvEiYAKwAAEQcAagGbAUoACbEBArgBSrArKwD//wCEAAAD7QbYEiYASwAAEQcAagEAATMACbEBArgBM7ArKwD//wA5/j0FLwW9EiYAKwAAEQYAesAKAAixAQGwCrArK///ABv+PQPtBcISJgBLAAARBgB6ogoACLEBAbAKsCsr//8Aof6QBS8FvRImACsAABEHAmEBofnJAAmxAQG4+cmwKysA//8AhP6QA+0FwhImAEsAABEHAmEA8fnJAAmxAQG4+cmwKysA////7P64AqgFvRImACwAABEHAmX/9fnoAAmxAQG4+eiwKysA////nv64AloFvRImAEwAABEHAmX/p/noAAmxAgG4+eiwKysA//8AJwAAAjsIaBImACwAABAnAGr/1QE5EQcAdgAcAooAErEBArgBObArK7EDAbgCirArK///ABYAAAIsBuoSJgDzAAAQJgBqxMQRBwB2AA0BDAASsQICuP/EsCsrsQQBuAEMsCsrAAD//wCcAAAFTgcdEiYALgAAEQcAdgFWAT8ACbEBAbgBP7ArKwD//wCAAAAD+AboEiYATgAAEQcAdgEHAQoACbEBAbgBCrArKwD//wCc/tUFTgW9EiYALgAAEQcCYgFO+gAACbEBAbj6ALArKwD//wCA/tAD+AW9EiYATgAAEQcCYgCP+fsACbEBAbj5+7ArKwD//wCc/xoFTgW9EiYALgAAEQcAcQFl+hgACbEBAbj6GLArKwD//wCA/y8D+AW9EiYATgAAEQcAcQD3+i0ACbEBAbj6LbArKwD//wCc/tUESwW9EiYALwAAEQcCYgE3+gAACbEBAbj6ALArKwD//wCJ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//8ALgAABnAFphAmBm8AABAHAxEBWgAA//8ALwAABnAFphAmBnoAABAHAxEBWgAA//8AsP/sB9EFphAmAxEAABAHAzIFxwAAAAIAiAPmAsoFhwANABEAKkAnAAECAAFCDQECPwACAAJrAwEBAAABTQMBAQEAUQAAAQBFERURFgQTKxM+ATU0JicjNTMVFAYHJSMDM4gsLgECV6tVVgJCbdezBDIHVTcFCQauoWaPCxABkQAAAAIAiAPmAtMFhwANABEALUAqAAECAAFCDQECPwADAQNqAAIAAmsAAQAAAU0AAQEAUQAAAQBFERURFgQTKxM+ATU0JicjNTMVFAYHJTMTI4gsLgECV6tVVgEHbtayBDIHVTcFCQauoWaPCxABkQAAAAACAG8D6ALnBjUADQAeADdANA0AAgA/BgUCAwEAAQMAaAAEAAIBBAJbAAEDAAFNAAEBAFEAAAEARQ4ODh4OHiITKBEWBxQrAT4BFTQmJyM1MxUUBgcBJicmIyIHBgcjPgEzMhcWFwFQLC4BAkOYVVcBMRAfOHZtNh8QYxSnjrFNKAkENAdVDwUJBq6hH5ALAThBITs7IkCTgnc+YP///8//7AJHBakSJgMyAAARBwKPA0X/zQAJsQEBuP/NsCsrAP///87/7AJOBTASJgMyAAARBgBxubgACbEBAbj/uLArKwAAAP///8z/7AIxBr0SJgMyAAARBgZtstAACbEBA7j/0LArKwAAAP///9r/7AI/BrgSJgMyAAARBgZuwMsACbEBA7j/y7ArKwAAAP///9z/7AJUBbISJgMyAAARBgZE0dcACbEBAbj/17ArKwAAAP///8X/7AI9BrISJgMyAAARBgZFAAUACLEBA7AFsCsr////4QAAAlkHIRImAxMAABEHAo8DVwFFAAmxAQG4AUWwKysA////7gAAAm4GghImAxMAABEHAHH/2QEKAAmxAQG4AQqwKysA//8ALgAAAtkFphAmBm8AABAHAxMBWgAA//8ALwAAAtkFphAmBnoAABAHAxMBWgAAAAIAiAPmAtoFhwANABEAKkAnDQECAQFCAAECPwACAQJrAwEAAQEATQMBAAABUQABAAFFERcRFAQTKwEuAT0BMxUjBhQVFBYXBSMDMwEzVlWrVwItLAGnbdezA+YLj2ahrgYJBTdVBzwBkQAAAAIAiAPmAtMFhwANABEAKkAnDQEDAQFCAAEDPwADAQNrAgEAAQEATQIBAAABUQABAAFFERcRFAQTKwEuAT0BMxUjBhQVFBYXEzMDIwEzVlWrVwItLO6y1m4D5guPZqGuBgkFN1UHAVX+bwAAAAIAbwPoAucGNQANAB4AN0A0DQACAT8GBQIDAAEAAwFoAAQAAgAEAlsAAAMBAE0AAAABUQABAAFFDg4OHg4eIhMqERQHFCsBLgE9ATMVIw4BFTQWFzcmJyYjIgcGByM+ATMyFxYXAg1XVZhDAgEuLHQQHzh2bTYfEGMUp46xTSgJA+gLkB+hrgYJBQ9VB+xBITs7IkCTgnc+YAAA//8AuP/sBCsFqRImAz4AABEHAo8Eqf/NAAmxAQG4/82wKysA//8AuP/sBCsFChImAz4AABEHAHEBLP+SAAmxAQG4/5KwKysA//8AuP/sBCsGsxImAz4AABEHBm0BJf/GAAmxAQO4/8awKysA//8AuP/sBCsGsxImAz4AABEHBm4BJf/GAAmxAQO4/8awKysA//8Aqv5vBHUGRBImAzoAABEHBkMBsgC9AAixAgGwvbArKwAA//8Aqv5vBHUGRBImAzoAABEHBnsBsgC9AAixAgGwvbArKwAA//8AuP/sBCsFshImAz4AABEHBkQBKf/XAAmxAQG4/9ewKysA//8AuP/sBCsGnxImAz4AABEHBkUBZf/yAAmxAQO4//KwKysA//8AKQAABS0HIRImAx4AABEHAo8E4wFFAAmxAQG4AUWwKysA//8AKQAABS0GghImAx4AABEHAHEBZgEKAAmxAQG4AQqwKysA//8ALgAABocFphAmBm8AABAHAx4BWgAA//8ALwAABusFphAmBnoAABAHAx4BvgAA//8AiAAABlwFqBAmBnsAABAHAxsBbAAAAAMAGgTOAn8G7QADAAcACwBPS7AWUFhAGgAFAAVqBAICAAEBAE0EAgIAAAFRAwEBAAFFG0AgAAUABWoABAABAAQBaAIBAAQBAE0CAQAAAVEDAQEAAUVZtxEREREREAYVKxMjFTMlIxUzJyMDM6+VlQHQlZXtbtayBXSmpqaOAZEAAwAaBM4CfwbtAAMABwALACtAKAAEAARqAAUAAQAFAWgCAQAFAQBNAgEAAAFSAwEBAAFGEREREREQBhUrATMVIyUzFSMBMwMjAeqVlf4wlZUBf7LWbgV0pqamAh/+bwAAAQAuA/YBcgWHAAMAEEANAAEAAWoAAABhERACESsBIwMzAXJt17MD9gGRAP//AGr9owWkBiASJgNCAAAQJwZvAjcAmREHBkIBqv+LABGxAQGwmbArK7ECAbj/i7ArKwD//wBq/aMFpAQpEiYDQgAAEQcGQgGq/4sACbEBAbj/i7ArKwD//wBq/aMFpAYgEiYDQgAAECcGegI2AJkRBwZCAar/iwARsQEBsJmwKyuxAgG4/4uwKysA//8Aav/sBaQFshImA0IAABEHBkQBv//XAAmxAQG4/9ewKysA//8Aav2jBaQFshImA0IAABAnBkQBv//XEQcGQgGq/4sAErEBAbj/17ArK7ECAbj/i7ArK///AC7/2wcjBcsQJgZvAAAQBwMZAVoAAP//AC//2wcjBcsQJgZ6AAAQBwMZAVoAAP//AC4AAAdEBeYQJgZvAAAQBwcuAVoAAP//AC8AAAdEBeYQJgZ6AAAQBwcuAVoAAP//AF7/7AgvBeYQJgcuAAAQBwMyBiUAAAABAC8D9gFzBYcAAwAQQA0AAAEAagABAWEREAIRKxMzAyPBstZuBYf+bwAAAAEAiAPmATMFhwANABxAGQ0AAgE/AAABAQBNAAAAAVEAAQABRREUAhErAS4BPQEzFSMGFBUUFhcBM1ZVq1cCLSwD5guPZqGuBgkFN1UHAAAAAQBVAd4CSwKXAAMAF0AUAAABAQBNAAAAAVEAAQABRREQAhErEyEVIVUB9v4KApe5AAAAAAEAVQHeAksClwADABdAFAAAAQEATQAAAAFRAAEAAUUREAIRKxMhFSFVAfb+CgKXuQAAAAABAFUB3gJLApcAAwAXQBQAAAEBAE0AAAABUQABAAFFERACESsTIRUhVQH2/goCl7kAAAAAAf/7Ae0EdgKAAAMAF0AUAAABAQBNAAAAAVEAAQABRREQAhErAyEVIQUEe/uFAoCTAAAAAAEA8QHtBw4CgAADABdAFAAAAQEATQAAAAFRAAEAAUUREAIRKxMhFSHxBh354wKAkwAAAAABAPEB7QcOAoAAAwAXQBQAAAEBAE0AAAABUQABAAFFERACESsTIRUh8QYd+eMCgJMAAAAAAgC2AAACqwXSAAMABwAtS7AoUFhADQMBAQEOQwIBAAANAEQbQA0CAQAAAVEDAQEBDgBEWbUREREQBBMrISMRMwEjETMBYaurAUqrqwXS+i4F0gAAAv/3/dwCt/84AAMABwAhQB4AAAABAgABWQACAwMCTQACAgNRAAMCA0UREREQBBMrByEVIRUhFSEJAsD9QALA/UDIdnB2AAAAAQCEA8IBWgXLAA0AHEAZDQACAEAAAAEBAE0AAAABUQABAAFFERYCESsBDgEVFBYXMxUjNTQ2NwFaNzkBAm3WZHIFbQlqRgYLB9rJd7sOAAABAKoDtAGABb0ADQAttA0AAgA/S7AmUFhACwAAAAFRAAEBDABEG0ALAAAAAVEAAQEOAERZsxEWAhErEz4BNTQmJyM1MxUUBgeqNzkBAm3WamwEEglqRQcLB9rJgLMNAAABAKr+0AGAANoADgAytA4AAgA/S7AoUFhACwABAQBRAAAADQBEG0AQAAEAAAFNAAEBAFEAAAEARVmzERcCESsXNjc2NTQmJyM1MxUUBgeqRRwPAQJt1mB20QxVLSoHCwfayne0FQAAAAEAqgO0AYAFvQANAC20DQACAT9LsCZQWEALAAEBAFEAAAAMAUQbQAsAAQEAUQAAAA4BRFmzERQCESsBLgE9ATMVIw4BFRQWFwGAbGrWbQIBOTcDtA2zgMnaBwsHRWoJAAIATgPCAnQFywAOABwAI0AgHA8OAAQAQAIBAAEBAE0CAQAAAVEDAQEAAUURGxEXBBMrAQYHBhUUFhczFSM1NDY3BQ4BFRQWFzMVIzU0NjcBI0UcDgEBbdV2XwFRNzkBAm3WZHIFbQ1XKyoFBwzayZSgDF4JakUGDAfayXe7DgAAAgBOA7QCdAW9AAsAFwA1thcMCwAEAD9LsCZQWEANAgEAAAFRAwEBAQwARBtADQIBAAABUQMBAQEOAERZtREZERQEEysBNjc2JyM1MxUUBgclNjc2JyM1MxUUBgcBnksYDgRt1mJ0/rBLGQ4FbdVicwQSDmA5KtrJd7sOXg5gOSrayXe5EAAAAAIATv7QAnQA2gAOABkAO7YZDw4ABAA/S7AoUFhADQMBAQEAUQIBAAANAEQbQBMDAQEAAAFNAwEBAQBRAgEAAQBFWbURGBEXBBMrBTY3NjU0JicjNTMVFAYHJT4BJyM1MxUUBgcBnkUcDwECbdZdef6wPTgIbdVZfNEMVS0qBwsH2sp0thZfDHlM2spzthcAAAIATgO0AnQFvQALABcANbYXDAsABAE/S7AmUFhADQMBAQEAUQIBAAAMAUQbQA0DAQEBAFECAQAADgFEWbURGREUBBMrAS4BPQEzFSMGFxYXBS4BPQEzFSMGFxYXASR0YtZtBA4YSwFQc2LVbQUOGUsDtA67d8naKjlgDl4QuXfJ2io5YA4AAAABAFD+uAQVBb0ACwBoS7AfUFhAGAYFAgMDAFECAQAAD0MABAQBUQABAQwERBtLsCZQWEAWAgEABgUCAwQAA1kABAQBUQABAQwERBtAFgIBAAYFAgMEAANZAAQEAVEAAQEOBERZWUANAAAACwALEREREREHFCsTNSERMxEhFSERIxFQAYLAAYP+fcADcZ0Br/5RnftHBLkAAAEAUP64BBUFvQATAGNLsCZQWEAiBgEACgkCBwgAB1kFAQEBAlEEAQICD0MACAgDUQADAwwIRBtAIgYBAAoJAgcIAAdZBQEBAQJRBAECAg9DAAgIA1EAAwMOCERZQBEAAAATABMRERERERERERELGCs3NSERITUhETMRIRUhESEVIREjEVABgv5+AYLAAYP+fQGD/n3AV50CjpwBn/5hnP1ynf5hAZ8AAAEAlQIAAk8DugALABdAFAABAAABTwABAQBTAAABAEckIgIRKwEUBiMiJjU0NjMyFgJPfWBgfX1gYH0C3mB+fmBgfHwAAQCkAgQCeAP0AAIABrMCAAEoKxMNAaQB1P4sA/T4+AABAO0AAAG9ANwAAwAsS7AoUFhACwAAAAFRAAEBDQFEG0AQAAABAQBNAAAAAVEAAQABRVmzERACESs3MxUj7dDQ3NwAAAIA7QAABGgA3AADAAcAPUuwKFBYQA4CAQAAAVEDBAIBAQ0BRBtAFAIBAAEBAE0CAQAAAVEDBAIBAAFFWUANAAAHBgUEAAMAAxEFECshNTMVJTMVIwOX0fyF0NDc3NzcAAMA7QAABxIA3AADAAcACwBMS7AoUFhAEQQCAgAAAVEHBQMGBAEBDQFEG0AYBAICAAEBAE0EAgIAAAFRBwUDBgQBAAFFWUAVCAgAAAgLCAsKCQcGBQQAAwADEQgQKyE1MxUlMxUjITUzFQOX0fyF0NAFVdDc3Nzc3NwAAAABAO0CcAG9A0wAAwAXQBQAAAEBAE0AAAABUQABAAFFERACESsTMxUj7dDQA0zcAAAHAA7/ywf0BcsACwAXACMALwAzAD8ASwEFS7AfUFhAMAAJAwlrAAoADQIKDVsOBwICBQEBAAIBXAALCwhTDAEICBZDBAEAAANTBgEDAw0DRBtLsCZQWEA0AAkDCWsACgANAgoNWw4HAgIFAQEAAgFcAAgIDkMACwsMUwAMDAxDBAEAAANTBgEDAw0DRBtLsChQWEA0AAkDCWsACgANAgoNWw4HAgIFAQEAAgFcAAgIDkMACwsMUwAMDA5DBAEAAANTBgEDAw0DRBtAMgAJAwlrAAoADQIKDVsOBwICBQEBAAIBXAQBAAYBAwkAA1sACAgOQwALCwxTAAwMDgtEWVlZQBskJElHQ0E9Ozc1MzIxMCQvJC4nJCQkJCQhDxYrJBYzMjY1NCYjIgYVJjYzMhYVFAYjIiY1BBYzMjY1NCYjIgYVABYVFAYjIiY1NDYzEzMBIwIWMzI2NTQmIyIGFSY2MzIWFRQGIyImNQX0cU9QcHBQT3GAu4WEvLyEhbv9jHBQT3FxT1BwAUS8vISFu7uFNm/8tXAccU9QcHBQT3GAu4WEvLyEhbvicXFPUHBwUIW7u4WEvLyEUHBxT09xcFABQLuFhLy8hIW7A1r6AARhcXFPUHBwUIS8vISFu7uFAAAJAA7/2wrUBdsACwAXACMALwAzAD8ASwBXAGMCn0uwDlBYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgUQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwEFBYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgWQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwElBYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgUQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwFFBYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgWQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwFlBYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgUQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwG1BYQDoVAQoADQIKDVsYEAcTBAIPBQIBAAIBXAALCwhTFgwCCAgWQxcOFAQSBQAAA1MRBgIDAw1DAAkJDQlEG0uwH1BYQDoACQMJaxUBCgANAgoNWxgQBxMEAg8FAgEAAgFcAAsLCFMWDAIICBZDFw4UBBIFAAADUxEGAgMDDQNEG0uwKFBYQD4ACQMJaxUBCgANAgoNWxgQBxMEAg8FAgEAAgFcAAgIDkMACwsMUxYBDAwWQxcOFAQSBQAAA1MRBgIDAw0DRBtAPAAIDAhqAAkDCWsVAQoADQIKDVsYEAcTBAIPBQIBAAIBXBcOFAQSBQARBgIDCQADWwALCwxTFgEMDBYLRFlZWVlZWVlZQEJZWE1MQUA1NBkYDQwBAF9dWGNZY1NRTFdNV0dFQEtBSzs5ND81PzMyMTAuLCgmHx0YIxkjExEMFw0XBwUACwELGQ8rJTI2NTQmIyIGFRQWEzIWFRQGIyImNTQ2ATI2NTQmIyIGFRQWJRQGIyImNTQ2MzIWATMBIxMyNjU0JiMiBhUUFhMyFhUUBiMiJjU0NgEyNjU0JiMiBhUUFhMyFhUUBiMiJjU0Nga0UHBwUE9xcU+EvLyEhbu7/ZFPcXFPUHBwAZC8hIW7u4WEvP72b/y1cKRQcHBQT3FxT4S8vISFu7sIy1BwcFBPcXFPhLy8hIW7u4FxT1BwcFBPcQIAu4WEvLyEhbv+AHFPT3FwUFBwwIS8vISFu7sEFfoAA/BxT1BwcFBPcQIAvISFu7uFhLz6tnFPUHBwUE9xAgC7hYS8vISFuwAAAAABAMEDkQJWBd4AAwAtS7AlUFhADAAAAQBrAgEBAQ4BRBtACgIBAQABagAAAGFZQAkAAAADAAMRAxArCQEjEwJW/vWKtwXe/bMCTQAAAgDBA5EDtAXeAAMABwBFS7AlUFhADwIBAAABUQUDBAMBAQ4ARBtAFwUDBAMBAAABTQUDBAMBAQBRAgEAAQBFWUARBAQAAAQHBAcGBQADAAMRBhArCQEjEyEBIxMCVv71ircCPP71ircF3v2zAk39swJNAAADAMEDkQUSBd4AAwAHAAsAVUuwJVBYQBIEAgIAAAFRCAUHAwYFAQEOAEQbQBwIBQcDBgUBAAABTQgFBwMGBQEBAFEEAgIAAQBFWUAZCAgEBAAACAsICwoJBAcEBwYFAAMAAxEJECsJASMTIQEjEyEBIxMCVv71ircCPP71ircCPP71ircF3v2zAk39swJN/bMCTQAAAQDCA5ECVwXeAAMALUuwJVBYQAwAAAEAawIBAQEOAUQbQAoCAQEAAWoAAABhWUAJAAAAAwADEQMQKwETIwEBoLeK/vUF3v2zAk0AAAIAwgORA7UF3gADAAcARUuwJVBYQA8CAQAAAVEFAwQDAQEOAEQbQBcFAwQDAQAAAU0FAwQDAQEAUQIBAAEARVlAEQQEAAAEBwQHBgUAAwADEQYQKwETIwEjEyMBAv63iv71gLeK/vUF3v2zAk39swJNAAAAAwDCA5EFEwXeAAMABwALAFVLsCVQWEASBAICAAABUQgFBwMGBQEBDgBEG0AcCAUHAwYFAQAAAU0IBQcDBgUBAQBRBAICAAEARVlAGQgIBAQAAAgLCAsKCQQHBAcGBQADAAMRCRArARMjASMTIwEjEyMBBFy3iv71gLeK/vWAt4r+9QXe/bMCTf2zAk39swJNAAAAAAEAHv59AnP/ngAGADe1AwEAAgFCS7AZUFhADQMBAgACagEBAAARAEQbQAsDAQIAAmoBAQAAYVlACgAAAAYABhIRBBErBRMjJwcjEwGnzKSHh6PLYv7fwMABIQAAAQC0ANUB9gOJAAYABrMFAQEoKxMlFQcXFSW0AULY2P6+Ao77tKamtPsAAAABAKoA1QHtA4kABgAGswYDASgrEzcnNQUVBarY2AFD/r0BiaamtPu++wAAAAUAJf/OBKoEUwALAA8AEwAXABsA2UAdCgkBAAQFBAsBAQUIAgIAAQUBBgAHBgQDBAcGBUJLsApQWEAeCQMIAwECAQAGAQBZAAYABwYHVQAFBQRRAAQEDwVEG0uwFFBYQCEJAwgDAQIBAAYBAFkABQUEUQAEBA9DAAYGB1EABwcNB0QbS7AdUFhAHgkDCAMBAgEABgEAWQAGAAcGB1UABQUEUQAEBA8FRBtAJAAEAAUBBAVZCQMIAwECAQAGAQBZAAYHBwZNAAYGB1EABwYHRVlZWUAZEBAMDBsaGRgXFhUUEBMQExIRDA8MDx0KECsBFwkBBwkBJwkBNwEFFSM1IRUjNQEzFSMRMxUjA9F2/oUBe3b+hP6FeQF7/oV5AXsCVdr9L9oBwtHR0dEEEXb+hf6EeQF8/oR5AXwBe3b+hQnR0dHRAcba/S/aAAD//wDtAAAD8QW9ECYABAAAEAcABAI5AAAAAwCcAAAEFwXQABUAIQAlAGdADh8OAgIAISANDAQBAgJCS7AoUFhAHgACAAEAAgFoAAEBAFMFAQAAFkMAAwMEUQAEBA0ERBtAGwACAAEAAgFoAAMABAMEVQABAQBTBQEAABYBRFlAEAEAJSQjIhMSCgkAFQEVBg8rATIWFRQGBw4BFSM0NwMRBgcGByM0EgE3Njc2NTQnJicRBwMzFSMCZcXtV4RgObIUI0ckJAWy9AEYUCQWKDsnSw+xx8cF0OGvaoSAXYGWgFEBqwFDHkdFgtgBB/1VTyIlQUZiSDEP/q6//bXQAAAA//8ABAUMAsQFghFGAHHtCkZNQAAACLEAAbAKsCsrAAAAAQAk/s4HmwChABMAHkAbEwkIAAQAQAAAAQEATwAAAAFTAAEAAUcpIwIRKzcEFxYhIDc2JRUOAQcOASMgJyYlJAE2jtcBIQEh8JQBFvZzZX30cf7Y6JX+3p6fLkZRMpN5mkEmMCleO7oAAAAAAQAkBEYHmwYZABMAHkAbEwkIAAQAPwABAAABTwABAQBTAAABAEcpIwIRKwEkJyYhIAcGBTU+ATc+ATMgFxYFB5v+yo7X/t/+3/CU/ur2c2V99HEBKOiVASIESZ8uRlEyk3maQSYwKV47ugAAAQEX/r8EtATRAAcAH0AcBAECAAIBQgMBAgACagEBAABhAAAABwAHEhIEESsJAiMLASMBBLT+DgERm8PDmwMDBNH8FP3aAYr+dgYSAAMAOv/tBj4FvQAOAB0ALABxQC8NDAsKCQgHBgUEAwIBDQEAAUIrKikoJyYlJCMiISAfHBsaGRgXFhUUExIREBoBP0uwJlBYQA8FAgQDAQABawMBAAAMAEQbQA8FAgQDAQABawMBAAAOAERZQBQeHg8PAAAeLB4sDx0PHQAOAA4GDysBFTcXBxcHJwcnNyc3FzUBFTcXBxcHJwcnNyc3FzUhFTcXBxcHJwcnNyc3FzUDcNoo2odjg4Rmidwo2AJA2ijah2ODhGaJ3CjY/ObaKNqHY4OEZoncKNgFvd9Mb0e8R8PDR7xHb07h/HzfTG9HvEfDw0e8R29O4d9Mb0e8R8PDR7xHb07hAAEAVQHeAksClwADABdAFAAAAQEATQAAAAFRAAEAAUUREAIRKxMhFSFVAfb+CgKXuQAAAAAB/qr/2gKjBZcAAwAlS7AbUFhACwAAAAxDAAEBDQFEG0AJAAABAGoAAQFhWbMREAIRKwEzASMCHIf8jocFl/pDAAAAAAEAgP5tAgUFxwALAExLsCpQWEAdAAIAAwQCA1kAAQEAUQAAAA5DAAQEBVEABQURBUQbQBoAAgADBAIDWQAEAAUEBVUAAQEAUQAAAA4BRFm3EREREREQBhUrEyEVIxEzFSMRMxUhgAGA1tvb1v6ABceT/WOR/PqTAAEAgP5tAgUFxwALAExLsCpQWEAdAAMAAgEDAlkABAQFUQAFBQ5DAAEBAFEAAAARAEQbQBoAAwACAQMCWQABAAABAFUABAQFUQAFBQ4ERFm3EREREREQBhUrASE1MxEjNTMRIzUhAgX+gNbb29YBgP5tkwMGkQKdkwAAAP//AJwAAAiKBdAQJgAiAAAQBwAiBHMAAP//AJwAAAYrBdAQJgAiAAAQBwAEBHMAAP//AO0AAAZQBdAQJgAEAAAQBwAiAjkAAAABAKH+dgRXBD4ACQBCtgcDAgECAUJLsB9QWEARAAEBAlEDAQICD0MAAAARAEQbQBEAAAEAawABAQJRAwECAg8BRFlACgAAAAkACCIRBBErAQMjEwYjIic1BARX34apkcLG4QH/BD76OAUPIiK5GQAAAf/1/pUEKQW9ABAAR0uwJlBYQBkAAgADAAIDaAUBAwNpBAEAAAFTAAEBDABEG0AZAAIAAwACA2gFAQMDaQQBAAABUwABAQ4ARFm3ERERFSEQBhUrEyM1ISAXFhUUAgcRIxEjESNyfQJAASqCSNXVk+eTBUl00nSUr/7dA/yHBrT5TAAAAgBzAScEKgTWAAkADQAhQB4AAQACAwECWQADAAADTQADAwBTAAADAEcRESUgBBMrASEmAjU0NzYpAQcjETMEKv3z1dVIggEqAcOT5+cBJwMBI6+UdNJ0/TkAAAACAHIBJwQpBNYACQANACFAHgAAAAMCAANZAAIBAQJNAAICAVMAAQIBRxERJSAEEysTISAXFhUUAgchNzMRI3IBwwEqgkjV1f3zk+fnBNbSdJSv/t0DdALHAAAAAAEATv/tAsQCOQAOACBAHQ0MCwoJCAcGBQQDAgENAD8BAQAAYQAAAA4ADgIPKwEVNxcHFwcnByc3JzcXNQHC2ijah2ODhGaJ3CjYAjnfTG9HvEfDw0e8R29O4QAAAgDj/tABuAQhAA8AEwBAtA8AAgE/S7AoUFhAFQACAgNRAAMDD0MAAAABUQABAQ0BRBtAEgAAAAEAAVUAAgIDUQADAw8CRFm1ERgRFQQTKwEmJyY9ATMVIw4BFRQXFhcRIzUzAbiCNB/VbQEBDhtG1dX+0Bd2SGvK2gwHBTIqUA0EGNoAAgAk/s4HmwYZABMAJwAuQCsnHRwUEwkIAAgCAAFCAAEAAAIBAFsAAgMDAk8AAgIDUwADAgNHKScpIwQTKwEkJyYhIAcGBTU+ATc+ATMgFxYFAQQXFiEgNzYlFQ4BBw4BIyAnJiUHm/7Kjtf+3/7f8JT+6vZzZX30cQEo6JUBIviJATaO1wEhASHwlAEW9nNlffRx/tjolf7eBEmfLkZRMpN5mkEmMCleO7r72J8uRlEyk3maQSYwKV47ugACAE7/7QLEBb0ADgAdAFpAIhwbGhkYFxYVFBMSERANAAEBQg0MCwoJCAcGBQQDAgENAD9LsCZQWEANAgEAAQBrAwEBAQwBRBtADQIBAAEAawMBAQEOAURZQA4PDwAADx0PHQAOAA4EDysBFTcXBxcHJwcnNyc3FzUTFTcXBxcHJwcnNyc3FzUBwtoo2odjg4Rmidwo2HTaKNqHY4OEZoncKNgCOd9Mb0e8R8PDR7xHb07hA4TfTG9HvEfDw0e8R29O4QAAAwDQ/9oGQgWSAAMADwAbAC1AKgAAAgBqAAEFAWsAAgADBAIDWwAEBQUETwAEBAVTAAUEBUckJCQjERAGFSsBMwEjEzQmIyIGFRQWMzI2ATQmIyIGFRQWMzI2BONv/N9vq3lWVXl5VVZ5A9V5VVZ5eVZVeQWS+kgENlV5eFZVeXn9oVV5eVVVeXkAAAABABsBQAcVAtUAIgBVS7ASUFhAHgABBQFqAAADAgBPAAUAAwIFA1sAAAACUwQBAgACRxtAIgABBQFqAAQCBGsAAAMCAE8ABQADAgUDWwAAAAJTAAIAAkdZtyUTJiISJgYVKwEWFwUWFxYzMjY3Mw4BIyInJiclLgEjIgcGByM+ATc+ATMyAkpVUAFNTDJPPG6ZG64m3OBDXTZr/s45eSd+SSorsBo8Sz+SYSwCrwgVVxQKD3NUjuoSCxtODxBBJltTdUoyMAAAAAEAJP7OB5sAoQATAMC2EwkIAAQAP0uwClBYQAsAAQEAUwAAABUARBtLsAxQWEALAAEBAFMAAAAYAEQbS7AQUFhACwABAQBTAAAAFQBEG0uwElBYQAsAAQEAUwAAABgARBtLsBRQWEALAAEBAFMAAAAVAEQbS7AYUFhACwABAQBTAAAAGABEG0uwGVBYQAsAAQEAUwAAABUARBtLsChQWEALAAEBAFMAAAAYAEQbQBAAAQAAAU8AAQEAUwAAAQBHWVlZWVlZWVmzKSMCESsBJCcmISAHBgU1PgE3PgEzIBcWBQeb/sqO1/7f/t/wlP7q9nNlffRxASjolQEi/tGfLkZRMpN5mkEmMCleO7oAAAAAAQBM/7AFJgSMABcAOUA2FxQTEgEABgAFDQwLCAcGBgIBAkIABQACBU0EAQADAQECAAFZAAUFAlEAAgUCRRQRFBQREgYVKwEXAQUVIQEHAREHEQEnAQU1IQE3AREXEQQ1dv7XAaT+XwEmdv7Zqf7ZeQEk/mMBoP7ZeQEnqQQRdv7XAab+2XkBJ/5gAgGj/th5ASUBrAEndv7ZAaIC/mEAAAMAdACDA+gFCAADAAcACwAxQC4AAwACBQMCWQYBBQAEAQUEWQABAAABTQABAQBRAAABAEUICAgLCAsSEREREAcUKyUjNTMRIzUzARUjNQPo0dHR0f1m2oPaAtHa/j7R0QAAAAAEAMEDkQaYBd4AAwAHAAsADwBlS7AlUFhAFQYEAgMAAAFRCwcKBQkDCAcBAQ4ARBtAIQsHCgUJAwgHAQAAAU0LBwoFCQMIBwEBAFEGBAIDAAEARVlAIQwMCAgEBAAADA8MDw4NCAsICwoJBAcEBwYFAAMAAxEMECsJASMTIQEjEyEBIxMhASMTAlb+9Yq3Ajz+9Yq3Ajz+9Yq3AmT+9Yq3Bd79swJN/bMCTf2zAk39swJNAAAEACX/zgSqBFMAAwAHAAsADwC6S7AKUFhAHgkDCAMBAgEABgEAWQAGAAcGB1UABQUEUQAEBA8FRBtLsBRQWEAhCQMIAwECAQAGAQBZAAUFBFEABAQPQwAGBgdRAAcHDQdEG0uwHVBYQB4JAwgDAQIBAAYBAFkABgAHBgdVAAUFBFEABAQPBUQbQCQABAAFAQQFWQkDCAMBAgEABgEAWQAGBwcGTQAGBgdRAAcGB0VZWVlAGQQEAAAPDg0MCwoJCAQHBAcGBQADAAMRChArARUjNSEVIzUBMxUjETMVIwSq2v0v2gHC0dHR0QKN0dHR0QHG2v0v2gAAAAUAdAA8BFkEBAADAAcACwAPABMAL0AsCwoJCAcGBQQIAEAPDg0MAwIBAAgBPwAAAQEATQAAAAFRAAEAAUUTEhEQAg8rJQcnNwEHJzclFwcnARcHJwEzFSMEWZSak/4DlJqTAoCTmpP+ApSbkwF90dHPk5qUAf2TmpQCk5uU/gKTmpMBydoAAAACAOMAAAG0Bb0AAwAHAFhLsCZQWEAVAAEBAFEAAAAMQwACAgNRAAMDDQNEG0uwKFBYQBUAAQEAUQAAAA5DAAICA1EAAwMNA0QbQBIAAgADAgNVAAEBAFEAAAAOAURZWbUREREQBBMrEzMVIxEzFSPj0dHR0QW92vv32gAABAAl/84EqgW9AAMABwALAA8AtEuwClBYQB4JAwgDAQIBAAYBAFkABgAHBgdVAAUFBFEABAQMBUQbS7AUUFhAIQkDCAMBAgEABgEAWQAFBQRRAAQEDEMABgYHUQAHBw0HRBtLsCZQWEAeCQMIAwECAQAGAQBZAAYABwYHVQAFBQRRAAQEDAVEG0AeCQMIAwECAQAGAQBZAAYABwYHVQAFBQRRAAQEDgVEWVlZQBkEBAAADw4NDAsKCQgEBwQHBgUAAwADEQoQKwEVIzUhFSM1ATMVIxEzFSMEqtr9L9oBwtHR0dEDQtHR0dECe9r7xdoABQBb/7oFNgSWAAsADwATABcAGwBDQEAXFhUUExIREAgDBBsaGRgPDg0MCAEAAkIABAMBBE0GBQIDAgEAAQMAWQAEBAFRAAEEAUUAAAALAAsREREREQcUKwEVIQMHEQU1JREXEQEHJzcBByc3JRcHJwEXBycFNv3oAan95wIZqQGglJqT/gOUmpMCgJOak/4ClJuTAnun/egCAhkBqwECGAL96P5Tk5qUAf2TmpQCk5uU/gKTmpMAAAMA4wAAAbQEIQADAAcACwBMS7AoUFhAHQAEAAUCBAVZAAEBAFEAAAAPQwACAgNRAAMDDQNEG0AaAAQABQIEBVkAAgADAgNVAAEBAFEAAAAPAURZtxEREREREAYVKxMzFSMRMxUjETMVI+PR0dHR0dEEIdr9k9oCfdoAAAAEAOMAAAG0BcUAAwAHAAsADwBjS7AoUFhAJwAEAAUCBAVZAAcHBlEABgYOQwABAQBRAAAAD0MAAgIDUQADAw0DRBtAJAAEAAUCBAVZAAIAAwIDVQAHBwZRAAYGDkMAAQEAUQAAAA8BRFlAChEREREREREQCBcrEzMVIxEzFSMRMxUjETMVI+PR0dHR0dHR0QQh2v2T2gJ92gQi2gACACADDQIOBewADwAcAD1LsCZQWEASAAMAAAMAVwACAgFTAAEBFAJEG0AYAAEAAgMBAlsAAwAAA08AAwMAUwAAAwBHWbUlIyYlBBMrARYVFAcGIyInJjU0NzYzMhM0JiMiBhUUFxYzMjYB3jArP4+BPzUgO5qLDTxWUEkXJFdGUwV6WZqSX4lwXZ56V6P+mHqdlZJtQ2V8AAIAQgMgAJ4F/wADAAcAIUAeAAIAAwACA1kAAAEBAE0AAAABUQABAAFFEREREAQTKxMzESMRMxUjQlxcXFwFNf3rAt9mAAAAAAIAGgMgAhcF7gACAA0AW7YGAQIAAgFCS7AYUFhAGQQBAQEAUQMGAgAAD0MHAQUFAlEAAgIOBUQbQBYAAgcBBQIFVQQBAQEAUQMGAgAADwFEWUAWAwMAAAMNAw0MCwoJCAcFBAACAAIIDysBEQMXNSE1ATMRMxUjFQFS5ef+xgFITGlpBB4BRP68/q9YAcf+ME+vAAABACEDDgIOBeAAIAB+tRMBAQUBQkuwI1BYQCoAAgEHAQIHaAgBBwABBwBmAAUAAQIFAVsAAAAGAAZXAAQEA1EAAwMOBEQbQDAAAgEHAQIHaAgBBwABBwBmAAMABAUDBFkABQABAgUBWwAABgYATwAAAAZTAAYABkdZQA8AAAAgACAkJBEREiQjCRYrExYXFjMyNjU0JiMiBgcnEyEVIQc2NzYzMhYVFAYjIiYnfgk/ICpQTVxALkMXTjYBdP7QHxkXKDRjiX6JWIYIA9dNHg9mPktSJCAFAYFXxxMKEH9hZptjZgACACcDDgISBe8AGwAnAGi1CAEGBQFCS7AmUFhAIgAAAQIBAAJoAAIABQYCBVsABgADBgNXAAEBBFMABAQUAUQbQCgAAAECAQACaAAEAAEABAFbAAIABQYCBVsABgMDBk8ABgYDUwADBgNHWUAJJCQlJCUjEAcWKwEjJicmIyIGBzY3NjMyFhUUBiMiJjU0NzYzMhYDNCYjIgYVFBYzMjYCAlkIESFCS1kFHy8rNVqGf3ZkkiA/pnheTz9TOlhQRkdHBTEqGC2Lgi0XFHNyYpaYtYVdsnz+izdkTU5EXF8AAAEAJQMgAhcF4AAPAEe1AQEBAgFCS7AjUFhAEQAAAQBrAAEBAlEDAQICDgFEG0AXAAABAGsDAQIBAQJNAwECAgFRAAECAUVZQAoAAAAPAA8UGAQRKwEVDgEHBgcGByM2NzY3ITUCFyJzLCsXDhdkInRFS/50BeBOIqZgXU0ybs3Ld1daAAMAIQMLAg0F7gALABcAMgBXtjEkAgIBAUJLsCZQWEAaAAEAAgMBAlsAAwAFAwVXAAAABFMABAQUAEQbQCAABAAAAQQAWwABAAIDAQJbAAMFBQNPAAMDBVMABQMFR1m3LCYkJCQiBhUrATQmIyIGFRQWMzI2EzQmIyIGFRQWMzI2ASY1NDYzMhYVFAcGBxYXFhUUBiMiJjU0NjcmAZVAQUE6SzM7QxhVQkFRSk4/Uv61KHRrZ3UiEygsGi9/dGiRPj0lBTAoQ0MtMjlC/uJFSElBOFJEASIoQFBzbUhDKhcXFBsyUF6Ecmw/XRgQAAAAAAIAJAMMAggF7QAbACcAn7UHAQYFAUJLsCZQWEAlBwEEAQABBABoAAAAAwADVwAFBQJTAAICFEMAAQEGUwAGBhcBRBtLsDBQWEAjBwEEAQABBABoAAIABQYCBVsAAAADAANXAAEBBlMABgYXAUQbQCkHAQQBAAEEAGgAAgAFBgIFWwAGAAEEBgFbAAADAwBPAAAAA1MAAwADR1lZQBAAACYkIB4AGwAbJiQkIwgTKxMWFxYzMjY3DgEjIiY1NDYzMhcWFRQHBiMiJjUBNCYjIgYVFBYzMjaIBDUcIkFbEx5ZM2d5d3SdOyEnQpxpbQFxTz5CTURKNlgDzUscD2ulMCaBZWKUjU50hGWpblMBMU9OWUpGUkYAAAABAC4DIAI3BSsACwBLS7AfUFhAFQABAAQBBFUGBQIDAwBRAgEAAA8DRBtAGwABAAQBTQIBAAYFAgMEAANZAAEBBFEABAEERVlADQAAAAsACxERERERBxQrEzUzNTMVMxUjFSM1LtpV2tpVA/tU3NxU29sAAAEAKwQPASYEbAADABdAFAAAAQEATQAAAAFRAAEAAUUREAIRKxMzFSMr+/sEbF0AAAIALgOPAjcEuwADAAcAL0AsBAEBAAADAQBZBQEDAgIDTQUBAwMCUQACAwJFBAQAAAQHBAcGBQADAAMRBhArARUhNQUVITUCN/33Agn99wS7VFTWVlYAAAABAEcCTwEwBgoAFAAeQBsCAQEAAAFNAgEBAQBRAAABAEUAAAAUABQYAxArAQYHBhUUFxYXIy4BJyYnJjU0NzY3AS9PFyQpGUk8SSMVHAsFLh5dBgqYSG6PkXhKi3I/NkpUKyiUc0qSAAEAIgJPAQsGCgATAB1AGgAAAQEATQAAAAFRAgEBAAFFAAAAEwATGAMQKxM2NzY1NCcmJzMeARceARUUBwYHI1AXIykZSTxNIRMYFC8dXQJPm0drkZB4Sot7OTM+ejmUdEqRAAABAEIDIAH3BUMAGQBJtQIBAgMBQkuwKFBYQBUBAQAAAwIAA1sBAQAAAlEEAQIAAkUbQBkAAAMCAE0AAQADAgEDWwAAAAJRBAECAAJFWbYXJBQjEAUUKxMzFT4BMzIXFhURIxE0JyYjIgcGBw4BFREjQlYmVTRyKBZcDhg/IBUlHBYOWgU3TC8pTyxR/qkBUTEeMgYLIRs4Nf7oAAACACD9MQIOABAADwAcAD1LsCZQWEASAAMAAAMAVwABAQJTAAICFQJEG0AYAAEAAgMBAlsAAwAAA08AAwMAUwAAAwBHWbUlIyYlBBMrBRYVFAcGIyInJjU0NzYzMhM0JiMiBhUUFxYzMjYB3jArP4+BPzUgO5qLDTxWUEkXJFdGU2JZmpJfiXBdnnpXo/6Yep2Vkm1DZXwAAAEAYv1EAWsADQAIACxAKQEBAgABQgMBAgABAAIBaAAAAgEATQAAAAFRAAEAAUUAAAAIAAgRFAQRKxc1PgE3MxEjEWJiTRNHYMFFCS1T/TcB+wAAAAEAIP1EAg8AEwAiAE5LsChQWEAaAAEAAwABA2gAAwAEAwRVAAICAFMAAAAVAEQbQCAAAQADAAEDaAACAAABAgBbAAMEBANNAAMDBFEABAMERVm2ERsjEycFFCsTNzY3NjU0JiMiBwYHIzY3NjMyFhUUBwYPAQYHBgchFSE+AchgQBopSz5dIxMCXAIhOpR7cj0jWkUxHDINAYf+FQVC/mI3JhoqNT9JRiVDXjtohVJWPSMzJhsYLDVVXYkAAQAY/TACDQARADEAgkAODwEDBSkBAgMOAQACA0JLsCZQWEAqAAUEAwQFA2gAAAIBAgABaAADAAIAAwJbAAEABwEHVwAGBgRTAAQEFQREG0AwAAUEAwQFA2gAAAIBAgABaAAGAAQFBgRbAAMAAgADAlsAAQcHAU8AAQEHUwAHAQdHWUAKKyMTJTM0IxAIFysTMxYXFjMyNjU0JiMqAQc1HgEzMjc2NTQmIyIHBgcjNDc2MzIWFRQHBgceARUUBiMiJhheBhQjXEdWW1AJEwkOEwsyITlMM1oiEwNZIDeLbXgjFiM4QId8f3P+IEYfOUw8SjsBUAIBEBxINjo8IT1QOGRiXEIpGg4QWEBngYwAAAACABr9RAIXABIAAgANADxAOQYBAgACAUIAAgAFAk0DBgIABAEBBQABWQACAgVRBwEFAgVFAwMAAAMNAw0MCwoJCAcFBAACAAIIDysBEQMXNSE1ATMRMxUjFQFS5ef+xgFITGlp/kIBRP68/q9YAcf+ME+vAAEAIf0yAg4ABAAgAHq1EwEBBQFCS7AYUFhAJggBBwIAAgcAaAADAAQFAwRZAAUAAQIFAVsAAAAGAAZXAAICEQJEG0AwAAIBBwECB2gIAQcAAQcAZgADAAQFAwRZAAUAAQIFAVsAAAYGAE8AAAAGUwAGAAZHWUAPAAAAIAAgJCQRERIkIwkWKxMWFxYzMjY1NCYjIgYHJxMhFSEHNjc2MzIWFRQGIyImJ34JPyAqUE1cQC5DF042AXT+0B8ZFyg0Y4l+iViGCP37TR4PZj5LUiQgBQGBV8cTChB/YWabY2YAAgAn/TICEgATABsAJwBotQgBBgUBQkuwKFBYQCIAAAECAQACaAACAAUGAgVbAAYAAwYDVwAEBAFTAAEBFQFEG0AoAAABAgEAAmgABAABAAQBWwACAAUGAgVbAAYDAwZPAAYGA1MAAwYDR1lACSQkJSQlIxAHFisFIyYnJiMiBgc2NzYzMhYVFAYjIiY1NDc2MzIWAzQmIyIGFRQWMzI2AgJZCBEhQktZBR8vKzVahn92ZJIgP6Z4Xk8/UzpYUEZHR6sqGC2Lgi0XFHNyYpaYtYVdsnz+izdkTU5EXF8AAAABACX9RAIXAAQADwAqQCcBAQECAUIAAAEAawMBAgEBAk0DAQICAVEAAQIBRQAAAA8ADxQYBBErJRUOAQcGBwYHIzY3NjchNQIXInMsKxcOF2QidEVL/nQETiKmYF1NMm7Ny3dXWgAAAAMAIf0vAg0AEgALABcAMgBXtjEkAgIBAUJLsCZQWEAaAAEAAgMBAlsAAwAFAwVXAAQEAFMAAAAVAEQbQCAABAAAAQQAWwABAAIDAQJbAAMFBQNPAAMDBVMABQMFR1m3LCYkJCQiBhUrBTQmIyIGFRQWMzI2EzQmIyIGFRQWMzI2ASY1NDYzMhYVFAcGBxYXFhUUBiMiJjU0NjcmAZVAQUE6SzM7QxhVQkFRSk4/Uv61KHRrZ3UiEygsGi9/dGiRPj0lrChDQy0yOUL+4kVISUE4UkQBIihAUHNtSEMqFxcUGzJQXoRybD9dGBAAAgAk/TACCAARABsAJwBttQcBBgUBQkuwJlBYQCUHAQQBAAEEAGgAAAADAANXAAICBVMABQUVQwAGBgFTAAEBGQFEG0AjBwEEAQABBABoAAIABQYCBVsAAAADAANXAAYGAVMAAQEZAURZQBAAACYkIB4AGwAbJiQkIwgTKxMWFxYzMjY3DgEjIiY1NDYzMhcWFRQHBiMiJjUBNCYjIgYVFBYzMjaIBDUcIkFbEx5ZM2d5d3SdOyEnQpxpbQFxTz5CTURKNlj98UscD2ulMCaBZWKUjU50hGWpblMBMU9OWUpGUkYAAQAu/UQCN/9PAAsAK0AoAAEABAFNAgEABgUCAwQAA1kAAQEEUQAEAQRFAAAACwALEREREREHFCsTNTM1MxUzFSMVIzUu2lXa2lX+H1Tc3FTb2wAAAQAr/jMBJv6QAAMALEuwHVBYQAsAAAABUQABAREBRBtAEAAAAQEATQAAAAFRAAEAAUVZsxEQAhErEzMVIyv7+/6QXQACAC79swI3/t8AAwAHAC9ALAQBAQAAAwEAWQUBAwICA00FAQMDAlEAAgMCRQQEAAAEBwQHBgUAAwADEQYQKwEVITUFFSE1Ajf99wIJ/ff+31RU1lZWAAAAAQBH/HMBMAAuABQAHkAbAgEBAAABTQIBAQEAUQAAAQBFAAAAFAAUGAMQKyUGBwYVFBcWFyMuAScmJyY1NDc2NwEvTxckKRlJPEkjFRwLBS4eXS6YSG6PkXhKi3I/NkpUKyiUc0qSAAABACL8cwELAC4AEwAdQBoAAAEBAE0AAAABUQIBAQABRQAAABMAExgDECsTNjc2NTQnJiczHgEXHgEVFAcGByNQFyMpGUk8TSETGBQvHV38c5tHa5GQeEqLezkzPno5lHRKkQAAAgAp/TICJP9pAA8AOwBIQEUyKgUDAAIrAQUAAkIAAgEAAQIAaAADAAECAwFbBAcCAAUFAE8EBwIAAAVTBgEFAAVHAQA2NC8tKCYgHhwbGBYADwEPCA8rEzI3Nj0BDgEPAQYHBhUUFhM2NzY1NCYjIgcGByM+ATMyFxYVERQWMzI2NxUOASMiJyYnDgEjIiY1NDY35zAsSxA0GTcxGCo5oR8LBkI9Rh4QBVQCfFFfOzoMEgYPCRUWEy8VCwQcZz5KX11M/X8WJFNJCw4DBwYOGDMnLQEKBBYMFi4qJhUqY04kJEz+yw4RAgFDBgMiESAkNVtESlIKAAACACT9MQIN/2gAHAAkAGhLsB1QWEAjAAIAAQACAWgABAAFBgQFWwABAAMBA1cHAQYGAFEAAAARAEQbQCkAAgABAAIBaAAEAAUGBAVbBwEGAAACBgBZAAEDAwFPAAEBA1MAAwEDR1lADh0dHSQdJCUkJhMiFAgVKwUWFxYVIR4BMzI3NjczDgEHBgcGIyImNTQ2MzIWByYnJiMiBgcB4RsJCP54AkhMRioYClkEJxkpPCEpZIuMcTlrFAYUJVY+VAP4KTYlUVFjLxsjHUkXKA4IkoOBoTa3OiNBWUUAAgAe/TACEf9rAAwAGAAhQB4AAwAAAQMAWwABAgIBTwABAQJTAAIBAkckJCQjBBMrATQnJiMiBhUUFjMyNjcUBiMiJjU0NjMyFgGzGCZdU0tLUllDXn6FboKJc2iP/llLL0p+WVZyiFWBqpZ+h6CKAAEABv1EAfH/XAALACVAIgsIBQIEAgABQgEBAAICAE0BAQAAAlEDAQIAAkUSEhIQBBMrFzMXNxcDEyMnByMTD3V7fG61vXOFgXK8pL29A/7+/u3JyQETAAACACT9MQIN/2gAHAAkADpANwACAQABAgBoAAMAAQIDAVsAAAcBBgUABlkABQQEBU8ABQUEUwAEBQRHHR0dJB0kJSQmEyIUCBUrEyYnJjUhLgEjIgcGByM+ATc2NzYzMhYVFAYjIiY3FhcWMzI2N1AbCQgBiAJITEYqGApZBCcZKTwhKWSLjHE5axQGFCVWPlQD/ZEpNiVRUWMvGyMdSRcoDgiSg4GhNrc6I0FZRQAAAAEAIgCCBF8FQQAnAFRAUScBAQAMAQYKAkIACAkACQgAaAAHAAkIBwlbAAAAAQoAAVkACgAGAgoGWwACAAMEAgNZAAQFBQRNAAQEBVEABQQFRSQiHhwSJiIRERERERALGCsBIRUhFSEVIRUhFSERBiMiJyY1NDc2MzIWFyMuASMiBhUUFjMyNzY3AkACGP5JAZb+agG+/eFUgIBXc1ZdpIuaCWERYllthXh4bjkTDgNhWt9V+VgCAEdOZtajaHGTXkdTmJ6BoFQcKAAAAAMAWv84BXEGhQAnAC0ANADCQBkHBAIDCAAzLAwDAggyKSEDAwQeHAIFAwRCS7AQUFhAKQAEAgMCBANoBwEGBQZrCQEIAgAITwEBAAACBAACWQADAwVTAAUFFQVEG0uwKFBYQCkABAIDAgQDaAcBBgUGawkBCAIACE8BAQAAAgQAAlkAAwMFUwAFBRgFRBtALgAEAgMCBANoBwEGBQZrCQEIAgAITwEBAAACBAACWQADBQUDTwADAwVTAAUDBUdZWUAQKCgoLSgtFBEzEyMTFBAKFysBMwcWFzczAxYXIyYnATMyNzY3MwYHBiEiJwcjNyYnAyMTJhEQNzYlFwEWFwEmBQYRFBcBBgL+mDqAYlCYbpoRwhEh/pUB3HM9HsIakq/+1xQTOphCdV9mmI6YrKYBGFv+iU97AY9X/gCFJwE1fgaFpAsw3/7Mk7pHOfwFqVmR6J29AaO5Hkj+4QGPyQFeAUXQyhWr++RfIQRfOZSY/sWUdANjIgABAFr/2gVxBeUALwE6S7AWUFhAEAgBAAYJAgIDAi8QAgQDA0IbQBAIAQABCQICAwIvEAIEAwNCWUuwEFBYQCwABgcABwYAaAADAgQCAwRoAAIDAAJPAAcHBVMABQUUQwEBAAAEUwAEBBUERBtLsBZQWEAsAAYHAAcGAGgAAwIEAgMEaAACAwACTwAHBwVTAAUFFEMBAQAABFMABAQYBEQbS7AmUFhALQAGBwEHBgFoAAMCBAIDBGgAAQACAwECWwAHBwVTAAUFFEMAAAAEUwAEBBgERBtLsChQWEAtAAYHAQcGAWgAAwIEAgMEaAABAAIDAQJbAAcHBVMABQUWQwAAAARTAAQEGAREG0AqAAYHAQcGAWgAAwIEAgMEaAABAAIDAQJbAAAABAAEVwAHBwVTAAUFFgdEWVlZWUAKIhImIxclIxAIFysBMxU+ATMyFhcVLgEjIgYVETY3NjczBgcGISAnJhEQNzYhIAAXIy4BIyIAERAXFhcCm6sVpGsFGB0QGxCIkqZfPR7CGpKv/tf/AK7lrLoBRwEXATQRwiHFstn+9XhcogNnuTabAgO+AwKvcv7uGYtZkeidvZvNAawBRdDi/tq7jqb+z/7F/v6heh0AAAABAAAAAARLBYAAEQBhS7AoUFhAIAADAAQFAwRZAAUABgIFBlkHAQIIAQEAAgFZAAAADQBEG0AoAAABAGsAAwAEBQMEWQAFAAYCBQZZBwECAQECTQcBAgIBUQgBAQIBRVlACxEREREREREREAkYKyEjNSM1MxEhFSERIRUhFSEVIQFhwKGhA6r9FgKM/XQBTv6y468D7rX+ZK/urwABACj/3ASYBbsAQgG4QBAVAQQDIhYLAwYEIQEFBgNCS7AQUFhAOgAMDQoNDApoDw4CCgkBAAEKAFkIAQEHAQIDAQJbAAMABgUDBlsADQ0LUwALCwxDAAQEBVMABQUVBUQbS7AYUFhAOgAMDQoNDApoDw4CCgkBAAEKAFkIAQEHAQIDAQJbAAMABgUDBlsADQ0LUwALCwxDAAQEBVMABQUYBUQbS7AbUFhAOgAMDQoNDApoDw4CCgkBAAEKAFkIAQEHAQIDAQJbAAMABgUDBlsADQ0LUwALCwxDAAQEBVMABQUVBUQbS7AmUFhAOgAMDQoNDApoDw4CCgkBAAEKAFkIAQEHAQIDAQJbAAMABgUDBlsADQ0LUwALCwxDAAQEBVMABQUYBUQbS7AoUFhAOgAMDQoNDApoDw4CCgkBAAEKAFkIAQEHAQIDAQJbAAMABgUDBlsADQ0LUwALCw5DAAQEBVMABQUYBUQbQDcADA0KDQwKaA8OAgoJAQABCgBZCAEBBwECAwECWwADAAYFAwZbAAQABQQFVwANDQtTAAsLDg1EWVlZWVlAGwAAAEIAQj48Ojk3NTEwLy4RGSEnISYREhEQGCsBFSEWFyEVJBUUBgc+ATMyFjMyNzY3FwYHBiMiJCMiBwYHJz4BNTQnITUhJicmJyM1MyY1NDYzMhYXIzQmIyIGFRQXA0H+bhowAUj++HiARYZASO0lLycYMVM4LElSPP7lUkxEKD9jcYoo/r8BAAQdGwy4ngP+7d/lA7mNkIyQBQOIaDdcaAIcZMNgIylHEgsjhy0WI1waECaOT79wIBFoBTk2H2iAIJz39N+XnZNpGn4AAAIAhP7UBlIE9QAuADQAqkAQAgEEBjIpIRQRDg0HAQQCQkuwFlBYQCYAAwEDawAAAAFRBQICAQENQwkBBAQGUwgHAgYGD0MFAgIBAQ0BRBtLsChQWEAqAAMBA2sAAAABUQUCAgEBDUMABgYPQwkBBAQHUwgBBwcXQwUCAgEBDQFEG0AkAAMBA2sAAAcBAE0JAQQEB1MIAQcHF0MFAgIBAQZRAAYGDwFEWVlADTQzJSQREyUSFxYQChgrATMHFhcWFREjETQnJicBESM1ASMBETQnJiMiBhURIxEzFTY3NjMyFxYXPgEzMhcFBh0BEwYFupi1PCIquzYGBv6Ht/5omAIwGilwZqe0skA0WXGATiwkPKJlLCf+00z6ZQT14CdDVI79NwLoaygEBP4t/lDN/gcCtgExbTJLns/9yAQvmE8kPT8kRlZTB+RHpgIBNgMAAAUANwAABi4FvQAbAB8AIwAmACkAxkAKJgECAycBCgkCQkuwJlBYQCoSBgQDAhEPBwMBAAIBWhAOCAMAExQNCwQJCgAJWQUBAwMMQwwBCgoNCkQbS7AoUFhAKhIGBAMCEQ8HAwEAAgFaEA4IAwATFA0LBAkKAAlZBQEDAw5DDAEKCg0KRBtAKgwBCgkKaxIGBAMCEQ8HAwEAAgFaEA4IAwATFA0LBAkKAAlZBQEDAw4DRFlZQCUAACkoJSQjIiEgHx4dHAAbABsaGRgXFhUUExERERERERERERUYKxM1MzUjNTMRMwEhETMRMxUjFTMVIxEjASERIxE3IScjBTM1ISUzJwE1IzeysrLrATwBqr23t7e33/7D/ky+vgFOWPYCJO/+u/4ykJADE4oB9KKKogH7/gUB+/4Fooqi/gwB9P4MAfSiioqKouP8ct0ABABO/9cFmQW9AAoAFAAtAFwCeUALIgEIEQFCIwECAUFLsBJQWEBLAAUAAwAFA2gADgQBBA4BaBIBEQEIAREIaAAEAAERBAFbAAMDAFMAAAAMQw8KAgcHBlENCwIGBg9DCQECAg1DDAEICBBTABAQFRBEG0uwGFBYQFwABQADAAUDaAAOBAEEDgFoEgERAQgBEQhoAAgMAQgMZgAEAAERBAFbAAMDAFMAAAAMQw8KAgcHDVMADQ0XQw8KAgcHBlELAQYGD0MJAQICDUMADAwQUwAQEBUQRBtLsB1QWEBZAAUAAwAFA2gADgQBBA4BaBIBEQEIAREIaAAIDAEIDGYABAABEQQBWwADAwBTAAAADEMADw8NUwANDRdDCgEHBwZRCwEGBg9DCQECAg1DAAwMEFMAEBAVEEQbS7AmUFhAXQAFAAMABQNoAA4EAQQOAWgSAREBCAERCGgACAwBCAxmAAQAAREEAVsAAwMAUwAAAAxDAA8PDVMADQ0XQwoBBwcGUQsBBgYPQwACAg1DAAkJDUMADAwQUwAQEBUQRBtLsChQWEBdAAUAAwAFA2gADgQBBA4BaBIBEQEIAREIaAAIDAEIDGYABAABEQQBWwADAwBTAAAADkMADw8NUwANDRdDCgEHBwZRCwEGBg9DAAICDUMACQkNQwAMDBBTABAQFRBEG0BfAAUAAwAFA2gADgQBBA4BaBIBEQEIAREIaAAIDAEIDGYAAgwJDAIJaAAJEAwJEGYABAABEQQBWwAMABAMEFcAAwMAUwAAAA5DAA8PDVMADQ0XQwoBBwcGUQsBBgYPB0RZWVlZWUAhLi4uXC5cWlhLSUZFQkAzMS0sKyonJTQRERQhIhEkIBMYKxMhMhYVFAYrAREjASYrAREzMjY1NDczETMVIxEUFxYzMjY3FQ4BIyImNREjNTMBFhcWMzI2NTQnJi8BJicmNTQ2MzIXFgcjJicmIyIGFRQXFh8BFhcWFRQGIyImJ04BSmJ4a2/nYwGEITrGxkNU51tWVhMLGAcPChAhFD8tSEgBQAQTIlQyTB8TOkdFIDptXXk1IgFVAxMfTDM1IxQnO2EhNW1vd2QDBb3dyKz//ZME8x/+A3KQoqH+1ZP9RTgTCwECjgkIgWcCxZP9IVowV1dbRSQWHSQiKkmBmLyOWmg9MkdOQEYqGRMdLyxFlI/Q2aAAAAADAE7/1wSzBb0ACQAnAFYBAkAKEgEECBoBAwYCQkuwJlBYQD8ACAAEAAgEaA0BCwQGBAsGaAwBAAAECwAEWwABAQJTAAICDEMACQkHUwAHBxdDBQEDAw1DAAYGClMACgoVCkQbS7AoUFhAPwAIAAQACARoDQELBAYECwZoDAEAAAQLAARbAAEBAlMAAgIOQwAJCQdTAAcHF0MFAQMDDUMABgYKUwAKChUKRBtAPwAIAAQACARoDQELBAYECwZoBQEDBgoGAwpoDAEAAAQLAARbAAYACgYKVwABAQJTAAICDkMACQkHUwAHBxcJRFlZQCIoKAEAKFYoVlRSRUNAPzw6LSsnJiUjHBsMCggGAAkBCQ4PKwEyNjU0JyYrAREDITIXFhUUBgceAR8BFhcWFxUjLgEvASYnJisBESMBFhcWMzI2NTQnJi8BJicmNTQ2MzIXFgcjJicmIyIGFRQXFh8BFhcWFRQGIyImJwGYRlE5HjPzZAFUVDdnNjErKwMDAgUJF3oFBgIGAzIdPeJkAwEEEyJUMkwfEzpHRSA6bV15NSIBVQMTH0wzNSMUJzthITVtb3dkAwMccJKdOR7+CgKhMV79hKgzI3KAxVQpRhQhEzxW9ZAxG/2KAVBaMFdXW0UkFh0kIipJgZi8jlpoPTJHTkBGKhkTHS8sRZSP0NmgAAcANQAAB/gFvQAfACMAJwArAC4AMQA0AOZACzQBAgMvLAIMCwJCS7AmUFhAMRQSEAoEABcWGQ8NBQsMAAtZBwUCAwMMQxUTEQkEAQECURgIBgQEAgIPQw4BDAwNDEQbS7AoUFhAMRQSEAoEABcWGQ8NBQsMAAtZBwUCAwMOQxUTEQkEAQECURgIBgQEAgIPQw4BDAwNDEQbQDEOAQwLDGsUEhAKBAAXFhkPDQULDAALWQcFAgMDDkMVExEJBAEBAlEYCAYEBAICDwFEWVlALwAAMzIxMC4tKyopKCcmJSQjIiEgAB8AHx4dHBsaGRgXFhUUExERERERERERERoYKxM1MycjNTMDMxMhEzMTIRMzAzMVIwczFSEDIwMhAyMDNzM3IQUzNyEFIScjARMjARMjATMnNfQk0KVq2F4BknHYcQGRX9prp9Ik9v7fndGn/qeo0Z2Z+Cf+wQN5+SD+wf53AP8nsf6gWqYDvEum/nhXKwJYooqiAZf+aQGX/mkBl/5pooqi/agCWP2oAliiioqKior9jgFG/roBRgHOnAD//wA4/wAEcgXCEiYA0wAAEQcAcQEQ+f4ACbECAbj5/rArKwAAAQBg/9oFkwXlADMBHkuwEFBYQDoABAUCBQQCaAALAAkACwloBgECBwEBAAIBWQgBAA4NAgkKAAlZAAUFA1MAAwMUQwAKCgxTAAwMFQxEG0uwJlBYQDoABAUCBQQCaAALAAkACwloBgECBwEBAAIBWQgBAA4NAgkKAAlZAAUFA1MAAwMUQwAKCgxTAAwMGAxEG0uwKFBYQDoABAUCBQQCaAALAAkACwloBgECBwEBAAIBWQgBAA4NAgkKAAlZAAUFA1MAAwMWQwAKCgxTAAwMGAxEG0A3AAQFAgUEAmgACwAJAAsJaAYBAgcBAQACAVkIAQAODQIJCgAJWQAKAAwKDFcABQUDUwADAxYFRFlZWUAZAAAAMwAzMC4rKiclIiEUERMiEiMRFBEPGCsTNzMmNTQ3IzczNjc2ITIAFyMuASMiBwYHIQchBhUUFyEHIRYXFjMyNzY3MwYHBiMiJyYDYCrEAgLuKtQiXZwBE+oBAw6jG6aVt3A+GwIuKv3oAwECRCr99Rg9Zcm5YTMZoxZ7k/nXkoonAgyOKSslJY63huL+2ruOpplUhY4zORoYjoNgoKlZkeidvZuSAQUAAQAxAAAFlQW9ABUAfbUSAQYFAUJLsCZQWEAaBAICAAoJBwMFBgAFWgMBAQEMQwgBBgYNBkQbS7AoUFhAGgQCAgAKCQcDBQYABVoDAQEBDkMIAQYGDQZEG0AaBAICAAoJBwMFBgAFWggBBgYBUQMBAQEOBkRZWUARAAAAFQAVEhERERIRERERCxgrEzUzETMRMwEhARchFSEBIQEjBxEjETGywlkCcwET/Z0ZAcL+sgHn/v3+JmSvwgKoogJz/Y0Cc/2wI6L9WAKoqP4AAqgAAAEAIQAABMkFvQAXAGZAFRcQDw4NDAsKCQYFBAMCAQAQAAEBQkuwJlBYQBEDAQEBAlEAAgIMQwAAAA0ARBtLsChQWEARAwEBAQJRAAICDkMAAAANAEQbQBEAAAEAawMBAQECUQACAg4BRFlZtRERGRcEEysBFQUVJRUFESMRBTUlNQU1JREhNSEVIREES/6PAXH+j8r+jAF0/owBdP4RBKj+EQRiqKGhoauh/jMBgKKroqGiqKIBmq+v/rMABAApAAAFRAW9AB4AJQAsADMA0EuwJlBYQDIOBAICCwUCAQACAVkMBgIAEBEKAwcPAAdZEgEPAAgJDwhbAA0NA1MAAwMMQwAJCQ0JRBtLsChQWEAyDgQCAgsFAgEAAgFZDAYCABARCgMHDwAHWRIBDwAICQ8IWwANDQNTAAMDDkMACQkNCUQbQDIACQgJaw4EAgILBQIBAAIBWQwGAgAQEQoDBw8AB1kSAQ8ACAkPCFsADQ0DUwADAw4NRFlZQCMuLQAAMjEtMy4zKyopJyQjIiEAHgAeHRwjERQREyERERETGCsTNTM1IzUzNSEyFxYXMxUjFhUUBzMVIwYHBiMhESMRJTQnIRUhNicmKwEVISYDMjc2NyEVKff39wHNxHg8HsGkAQOmyxopa97++scCuAL+EQHuA3hCc8QBsxnWhlMGBf5YA1aOWI7zbzdNjhISGxmOODJ//ZMDVsETElgY9x9IGP4zOQQEQQAAAAIAY/7UBaEGzAAlAC4AnkATLRYKAwMCLCEXAwYEJQICAAYDQkuwJlBYQCIAAwIFAgMFaAAFAAQGBQRaAAEAAAEAVQACAhRDAAYGDQZEG0uwKFBYQCIAAwIFAgMFaAAFAAQGBQRaAAEAAAEAVQACAhZDAAYGDQZEG0AlAAMCBQIDBWgABgQABAYAaAAFAAQGBQRaAAEAAAEAVQACAhYCRFlZQAkRERkTERoQBxYrASMRJicmERA3Njc1MxUWFxYTIyYnJicRNjc2EyE1IREjJwYHBgcBBhEQFxYXEQYDVavYos3ImuWrqIDbMcUkcVqAn26DA/78Ab2AMGVOYYj+ZYtzWa+J/tQBCBWR1AFyAXHaqR/x6wpEc/7goUk7DPtVEGF0AQKl/O69bys3DgS9mf7R/vqlfx0EnR4AAAADAB4AAAU9Bb0AFwAbAB4Ar7UeAQIDAUJLsCZQWEAmDgQCAgwFAgEAAgFaEA0GAwAPCwkDBwgAB1kAAwMMQwoBCAgNCEQbS7AoUFhAJg4EAgIMBQIBAAIBWhANBgMADwsJAwcIAAdZAAMDDkMKAQgIDQhEG0AmCgEIBwhrDgQCAgwFAgEAAgFaEA0GAwAPCwkDBwgAB1kAAwMOA0RZWUAfGBgAAB0cGBsYGxoZABcAFxYVFBMRERERERERERERGCsTNTM3IzUhEzMTIRUjFzMVIxMjAyEDIxMlJyEHEzMDTrI87gErzuHGARfcOqJooNqV/bufzKUCyzf+pDl06nEBuKKeogIj/d2inqL+SAG4/kgBuKKengFAAUkAAAEAev/fBMwF4ABfAqhAEgABCwBPAQELLQEFBC4BBgUEQkuwClBYQCkKAQEJAQIDAQJZCAEDBwEEBQMEWQALCwBTAAAAFEMABQUGUwAGBhgGRBtLsAxQWEApCgEBCQECAwECWQgBAwcBBAUDBFkACwsAUwAAABRDAAUFBlMABgYVBkQbS7AOUFhAKQoBAQkBAgMBAlkIAQMHAQQFAwRZAAsLAFMAAAAUQwAFBQZTAAYGGAZEG0uwEFBYQCkKAQEJAQIDAQJZCAEDBwEEBQMEWQALCwBTAAAAFEMABQUGUwAGBhUGRBtLsBJQWEApCgEBCQECAwECWQgBAwcBBAUDBFkACwsAUwAAABRDAAUFBlMABgYYBkQbS7AUUFhAKQoBAQkBAgMBAlkIAQMHAQQFAwRZAAsLAFMAAAAUQwAFBQZTAAYGFQZEG0uwFlBYQCkKAQEJAQIDAQJZCAEDBwEEBQMEWQALCwBTAAAAFEMABQUGUwAGBhgGRBtLsBhQWEApCgEBCQECAwECWQgBAwcBBAUDBFkACwsAUwAAABRDAAUFBlMABgYVBkQbS7AZUFhAKQoBAQkBAgMBAlkIAQMHAQQFAwRZAAsLAFMAAAAUQwAFBQZTAAYGGAZEG0uwG1BYQCkKAQEJAQIDAQJZCAEDBwEEBQMEWQALCwBTAAAAFEMABQUGUwAGBhUGRBtLsCZQWEApCgEBCQECAwECWQgBAwcBBAUDBFkACwsAUwAAABRDAAUFBlMABgYYBkQbS7AoUFhAKQoBAQkBAgMBAlkIAQMHAQQFAwRZAAsLAFMAAAAWQwAFBQZTAAYGGAZEG0AmCgEBCQECAwECWQgBAwcBBAUDBFkABQAGBQZXAAsLAFMAAAAWC0RZWVlZWVlZWVlZWVlAEVlYSUhHRhEdKC4REhEaFgwYKxM+Azc+AR4BFx4CBgcGBwUVJQ8BBRUlDgIWFx4BFx4BFx4BFxY2Nz4BNxcOAQcGJicuAScuAScuAScmNjcnNQU+ATclNQU3PgMnLgEnLgEnLgIGBw4DB7sZISAjGj2Hh4E5RVknDCEWIQEU/loJYwIE/VAaLRkDFgsUDxQmGBc4FyRMI0uURzlbvWFJkUcwVSYZJg8ODwQHGBmbAQ8YNBr+mQIbHBk0KhsBAwYEBgsIKG95eDETHhseEwWjCQwKCAUKBwofHCNkeIZDLCkBlAEIUgKUAho5PEAfDhQLDhEICAkCAgUECCAYvx8kCAUHFxAwIhUzHRozHTpmLwGUARgtFQKUAhoYMzpBJQoUCggQBiIjCggHAwgJCwcAAAAAAgBa/tQFcQbMACAAKQA4QDUoFg0KBAIBJyAXAgQAAwJCAAIBAwECA2gAAwABAwBmAAECAAFNAAEBAFEAAAEARRkVGhAEEysBIxEmJyYREDc2JTUzFRYXFhcjJicmJxE2NzY3MwYHBgcBBhEQFxYXEQYDVavUl+WsngEGq9+EmhHCIWNMfKJdPR7CGpKP4f5VhXhhrJn+1AEJEobNAawBRdDBHOzrEX6Tu45TQA/7WxqJWZHonZocBL6Y/sX+/qGAGgShGwAAAAACAC8AAARCBZMABwALAKRLsBhQWEAdBwEFBQRRAAQEDEMGAwIBAQBRAAAAD0MAAgINAkQbS7AhUFhAGwAEBwEFAAQFWQYDAgEBAFEAAAAPQwACAg0CRBtLsChQWEAZAAQHAQUABAVZAAAGAwIBAgABWQACAg0CRBtAIAACAQJrAAQHAQUABAVZAAABAQBNAAAAAVEGAwIBAAFFWVlZQBMICAAACAsICwoJAAcABxEREQgSKxM1IRUhESMRATUhFS8EE/5Psv5QBBMDpqio/FoDpgFGp6cAAAABAFgAAQPuBcIANgBqQAo2MzIwLQUIAAFCS7AoUFhAIwAAAQgBAAhoBgECBwEBAAIBWQUBAwMEUwAEBA5DAAgIDQhEG0AiAAABCAEACGgACAhpBgECBwEBAAIBWQUBAwMEUwAEBA4DRFlACxwRExckJBUVIAkYKxMWMj4DNyE+ATc2NyE0LgIrAT4DMyEwDgQxIx4BFzMHIw4DBxQWFxYXARUjAYMvZWFYRi0G/g8DGw8SFgGDMkdKGP0EGx4XAQNBCxIWEw3bFR8E9lOaDFF1kEwHBQUHAby+/hoDDgMPIjxbQActGR0iGjUqGwwwLyQWHyUgFSRJJ4xdhFcvCQELBwgJ/ZsZAokAAAAAAQBe//sEHQWfAB4AfUAYHh0cGxoZGBUUExIREA4ADwEDDwEAAQJCS7AjUFhAGAABAwADAQBoAAMDDEMAAAACVAACAg0CRBtLsChQWEAVAAMBA2oAAQABagAAAAJUAAICDQJEG0AaAAMBA2oAAQABagAAAgIATwAAAAJUAAIAAkhZWbUZJBQRBBMrAREyPgI1MxQOAisBEQc1NzUHNTcRMxElFQUVJRUB7mOYZzWYTqP8rjbu7u7uogFv/pEBbwLu/atCeKdlkuScUgKtZIJkkmSBZQFh/uScgZyTnYIAAAAEAD3/2gZYBb8AAwATAD8AWgANQApXUTgiCQQBAAQoKwUBMwEDMjc2PQEOAQ8BBgcGFRQWEzY3NjU0JiMiBwYHIz4BMzIXFhURFBYzMjY3FQ4BIyInJicOASMiJjU0NjcBIy4BIyIHBhUUFjMyNjczDgEjIiY1NDYzMhYBdANRh/yvyz05YBVDIEU/HzVJzSgNCFROWiYUB2wEnWl4TEsOGAgTChodGDsaDwUjhU9feXdgBURwC0lQbTAfWFxIVBBwE5p4hp+uiHSRJgW9+kMDcxwua1wNEgQJCBIeQjI5AVQEHRAcOzUxGzV/Yy4uYf52EhYCAlYHAyoWKS5EdFdfaQz9PT9Ta0ZmZo5ZS4h+xJO0yXEAAAAABAA9/9oGFgW/AAMAEwA/AG4ADUAKalI4IgkEAQAEKCsFATMBAzI3Nj0BDgEPAQYHBhUUFhM2NzY1NCYjIgcGByM+ATMyFxYVERQWMzI2NxUOASMiJyYnDgEjIiY1NDY3ARYXFjMyNjU0JyYvASYnJjU0NjMyFxYHIyYnJiMiBhUUFxYfARYXFhUUBiMiJicBdANRh/yvyz05YBVDIEU/HzVJzSgNCFROWiYUB2wEnWl4TEsOGAgTChodGDsaDwUjhU9feXdgAzsFGCtrQGEmGklbWClLjXaaRSoBbQIZJ2JBRCwaMkx8KkSMjZl/BSYFvfpDA3McLmtcDRIECQgSHkIyOQFUBB0QHDs1MRs1f2MuLmH+dhIWAgJWBwMqFikuRHRXX2kM/E05Hzg4OiwXDhIYFRsuU2F4WzlCJyAtMiktGhANEh4cLF9bhYtmAAAAAgBa/9oFcQXlABwAJQAItSQjGRECKCsBIy4BIyIHERYzMjc2NzMGBwYhICcmERA3NiEgAAUGERAXFhcRBgVjwiHFsjItKzDccz0ewhqSr/7X/wCu5ay6AUcBFwE0/FiFeB4mHQQEjqYI+18GqVmR6J29m80BrAFF0OL+2iCY/sX+/qEoHgPyGAAAAP//AG//2gikBeUQJgByAAAQBwAmAzMAAAACADEAAAUABb0AIgArAAi1KikYAAIoKwEzFRYXFhcjJicmJxE2NzY3MwYHBgcVIRUhESYnJjU0NzY3BwYVFBcWFxEGAVHHVD1cE44NLhYhFhI2FI4ZYTpMAuj8UXFKZW9LZl4nNx4wPAW9wxAvR65QNRgO/ZEMEzhgrVAvE8uvAXUYXH265H9WHP1YgoJZMBcCayIABAA6/9oGiwWuAAMAHgArADcADUAKNC4oIhsVAQAEKCsFATMBEyMuASMiBwYVFBYzMjY3Mw4BIyImNTQ2MzIWATQnJiMiBhUUFjMyNjcUBiMiJjU0NjMyFgF0A1GH/K+JcAtJUG0wH1hcSFQQcBOaeIafroh0kQOeHjF3aWBgaHNUeKCqjqWulIS3JgW9+kME2z9Ta0ZmZo5ZS4h+xJO0yXH8JV88X6FybZKubKXYwKGszLEAAwA6/9oGYQWuAAMAHgA2AAq3MB8bFQEAAygrBQEzARMjLgEjIgcGFRQWMzI2NzMOASMiJjU0NjMyFgERFBcWMzI3NjURMxEjNwYHBiMiJyY1EQF0A1GH/K+JcAtJUG0wH1hcSFQQcBOaeIafroh0kQI7EB9TeSsYc20CFyFCXpI1HSYFvfpDBNs/U2tGZmaOWUuIfsSTtMlx/W/+OjUhPWw5ZAFQ/VRlJxs2YjRZAdAAAAD//wBvAAAH3QW9ECYAcgAAEAcAKQMzAAAAAQChAAAFLwW9ABMABrMGAAEoKwEzESERMxEjESERIxEjESMRMxEzAh3JAYDJyf6AybPJybMFvf2hAl/6QwKv/VECr/1RBb39oQAAAAQAfwAABtMF1QANABEAIQArAA1ACiUjGRIQDgkDBCgrATQnJiMiFRQXFjMyNzYTITUhATIXFhUUBwYjIicmNTQ3NiURIxEzAREzESMGVB0mUJIfKEtNKB55/ekCF/70kUc6PUmMi0k9Okf77J66AmedtAKYW0FX81VEWVhD/b9/A494YpyWZXp6ZpWbYnme+1QF1ftIBLj6KwAAAAQAEwAABdEFvQAPAB8AKgA0AA1ACi8sKSAZEQ0FBCgrAQYREBcWISA3NhEQJyYhIAEGISAnJhEQNzYhIBcWERABITIWFRQGKwERIwEmKwEVMzI2NTQBNbe2uAEGAQa4tre3/vr++wMN1/7P/s/X19fXATEBMdfX/D8BSmJ4a2/nYwGEITrGxkNUBKC5/vr++Lq6uroBCAEGubr7ftjY2AExATDW1tbW/tD+zwKXb2RWf/7JAnoP/jlIUQAAAwCvAAAE+AW9AA4AGAAcAAq3GxkTEAkAAygrEyEyFhUUBisBESMRIxEjASYrAREzMjY1NAEzESOvApXE8NbeaMmdxwMIQnMmJoan/UednQW93cis//2TAm39kwTzH/4DcpCi/lwB/QADAFD/iwXoBeUAFQAmAC8ACrcuLSMeDAEDKCslBycOASMgJyYREDcSISAXFhEUBwYHJSc3FzYSNRAAIyIHERYzMjYBBhEQFxYXEQYF3GTjUr9x/qrCq5S+AXQBhbuSIzV+/uuhZMBbQf7x60A4PEU+bP3Ui4UcIh4Eea0tNuDaAUgBKtQBEPrD/tCOg8h+EH57lWgBAnYBAwE8C/tpCxEEBJf+xf73nSEaA+cXAAAAAAIAMAMKBbcGEQAvAEMACLU1MCoTAigrExYXFjMyNzY1NCcmLwEmJyY1NDYzMhYVIyYnJiMiBhUUFxYfARYXFhUUBiMiJyY3ATMbATMRIxE0NjUDIwMVFBYVESOPBBoxfTguWSUmUWRhKUaJfnOiXgcZLW1YTS0daGdLKEaxdolNTgICxY7T0o1fAtFj0wNfBA0/J0kQH1A8GhkSFxYaLlxjf3B6Ox86SjE2GRAYGBEdNGJ6aUZGdwHx/ZMCbf0iAbEXaDv9lQJrFhtvGv5PAAADABEDIAdCBf8ABwATABkACrcYFBIIAwADKCsBFSMRIxEjNSkBFSEVIRUhFSEVIQEzESEVIQJl+GX3ArgCGP5JAZb+agG+/eEComMBdP4pBf9Y/XkCh1ha31X5WALf/XlYAAAAAgDtAugG4wW9AAwAFAAItRIOBAACKCsBGwEzESMRAyMDESMRBTUhFSMRIxEEobm7zoXJdMqF/RsCau2QBb39+QIH/SsCSf23Akn9twLVeXl5/aQCXAAAAAEAXgAABeoF5gAjAAazDAIBKCsSNzYhIBcWERQCByEVITU2NzYREAAjIgIVFBIXFSE1ISYnJjVvk7gBXgFwuprIiwFh/bmaS4b+7ODp9uqF/bQBZIlJgQQvxPPiu/7a8/7IR7GxWWCrAQ4BAQEQ/srI7/6iOLGxYWWz9AABAF4AAAXqBeYAIwAGswsBASgrJQYhICcmETQSNyE1IRUGBwYREAAzMhI1NAInNSEVIRYXFhUQBUa4/qL+kLqayIv+nwJHmkuGARTg6fbqhQJM/pyJSYHz8+K7ASbzAThHsbFZYKv+8v7//vABNsjvAV44sbFhZbP0/u8AAQAgAAABfgQqAA0ABrMIAgEoKxM+ATMyFxYVESMRNCYnIB8dDbA/JrQxeQQlAwJiOnX85wMGXCMEAAD//wCcAAAFTgW9EgYALgAA//8AHgAABT0HjRIiACQAABEDAmMBZgEzAAmxAwK4ATOwKysAAAEArv//BKkFvQAJAAazCAABKCsFITUhESE1IREzBKn8BQM0/S8C0ccBtAG+rwKdAAL/7//sBkkFhAAVACcACLUhGxAIAigrARcHHgEVEAcGISAnJBEQNzYhMhcWFwMHJzcmJCMgABUUACEgABE0JgXQea0tNuDa/rj+1tT+8PrDATCOg8h+EH57lWj+/nb+/f7EAS8BOwEJAToRBXhk41K/cf6qwquUvgF0AYW7kiM1fv7roWTAW0H+8evu/uoBCwECPmwAAAAABABYAyAHtwX/AAkADAAUACAADUAKGBUPDQsKCAAEKCsTIRUhFSEVIREjAQsBEzMBIychByMhIwEDMxsBMwMBIwNYAf3+ZgFp/pdjA+FwdkJxAQptSv7dT2YDKXgBB/d9u7p39wEDfMYF/1rfWP6yAS0BRf67AbL9IdzcAXkBZv7nARn+mv6HAS4AAAABAGP/2QWhBeMAIgAGsyAYASgrJSYDMx4BMzIAERACISIEAyEVIREzFzY3NjMgFxYREAcGISIBh9sxxSTirMwBF+b+/Mf++wMBzP17gDBlToPKAQW8zci+/tLPKXMBIKGTATIBLwEGAUnn/v6lAxK9bytKqdT+jv6P2tAAAQCcAAAESwW9AAUABrMEAAEoKyEjESE1IQRLx/0YA68FDq8AAQCcAAAESwW9AAUABrMEAAEoKykBNSERMwRL/FEC6MevBQ4AAQAqAAAFRwW9AAgABrMGAAEoKyEjCQEjAREzEQVH6P5a/lrpAivHAsL9PgNtAlD9sAAAAAMAWf/eBSgFuwANABgAOwAKtzEbFQ8MBAMoKwEGFRQWMzI3NjU0JicGAwE2NzY1NCYjIgYBFAYjIiY1NDc2NwEOAQcjNhIVATMXNjc2MzIWFRQHBgceAQK1O1ZJbysWQ05frQFMjStCq2FvoAIhwKGZrFk0ev70GxULqxFm/vvoilJEd5vl0GU+qV0/AapEU0FeSiYtPXBZQwKk/mteMktsdX5m/HCOu655jWo+UQFAUE9HjQEDGQE9qFkpSPebp3BEZmuSAAAABAAp/9oGbAW9AAIACgA6AD4ADUAKPDs1HgUDAQAEKCsBCwETMwEjJyEHIwEWFxYzMjc2NTQnJi8BJicmNTQ2MzIWFSMmJyYjIgYVFBcWHwEWFxYVFAYjIicmNwkBMwEB4W93Q3ABC21L/t5QZgRXBBoxfTguWSUmUWRhKUaJfnOiXgcZLW1YTS0daGdLKEaxdolNTgL9awNRh/yvBAsBRf67AbL9Idzc/g8+J0kQH1A8GRkTFhYbLltjf297OyA5SjE2GRAYFxEeM2J6akdFd/7tBb36QwAAAQB///8DZgQuAAkABrMIAAEoKwUhNSERITUhETMDZv0ZAiD+KAHYxwG6ASe1AZkAAgBa/9oE6AWXAAMADQBetQgBAwABQkuwG1BYQBoAAwACAAMCaAACAgBRBAEAAAxDBQEBAQ0BRBtAIAADAAIAAwJoBQEBAgFrBAEAAwIATQQBAAACUQACAAJFWUAPAAANDAcGBQQAAwADEQYQKwUBMwETIxEjNTY3NjczARADUYf8r0Ch3HwpQBaCJgW9+kMCYQJHawsVIWQAAAD//wDJAAABkgW9EgYALAAA//8AyQAAA8sFvRAmACwAABAHACwCOQAA//8AyQAABgQFvRAmACwAABAnACwCOQAAEAcALARyAAD//wDJAAAHbwW9ECYALAAAEAcAOQI5AAD//wA0AAAFNgW9EgYAOQAA//8ANAAABugFvRAmADkAABAHACwFVgAA//8ANAAACSEFvRAmADkAABAnACwFVgAAEAcALAePAAD//wA0AAALWgW9ECYAOQAAECcALAVWAAAQJwAsB48AABAHACwJyAAA//8AyQAAB20FvRAmACwAABAHADsCOQAA//8AKgAABTQFvRIGADsAAP//ACoAAAboBb0QJgA7AAAQBwAsBVYAAP//ACoAAAkhBb0QJgA7AAAQJwAsBVYAABAHACwHjwAA//8AnAAABEsFvRIGAC8AAP//AFr/2gVxBeUSBgAmAAD//wClAAAFYwW9EgYAJwAA//8AlwAABhcFvRIGADAAAP//AIQAAAE7Bb0SBgBMAAD//wCEAAADAgW9ECYATAAAEAcATAHHAAD//wCEAAAEyQW9ECYATAAAECcATAHHAAAQBwBMA44AAP//AIQAAAWxBb0QJgBMAAAQBwBZAccAAP//AAsAAAPqBC8SBgBZAAD//wALAAAFOwW9ECYAWQAAEAcATAQAAAD//wALAAAHAgW9ECYAWQAAECcATAQAAAAQBwBMBccAAP//AAsAAAjJBb0QJgBZAAAQJwBMBAAAABAnAEwFxwAAEAcATAeOAAD//wCEAAAFqAW9ECYATAAAEAcAWwHHAAD//wALAAAD4QQvEgYAWwAA//8ACwAABTsFvRAmAFsAABAHAEwEAAAA//8ACwAABwIFvRAmAFsAABAnAEwEAAAAEAcATAXHAAD//wCJAAABPQW9EgYATwAA//8AO//hA9AEThIGAEYAAP//ADj/2gPtBcISBgBHAAD//wCEAAAGJQRHEgYAUAAAAAEAWv/aBXEF5QAeALq0AAEFAUFLsBBQWEAkAAUEAgQFAmgAAgMEAgNmAAQEAFMA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gnc+YAABABUAPgPyBZAAHQAGsxcNASgrASc2NTQnJicTFRQHDgEjIDU0NjMyFxE3HgEXBBUUA3YZL3h6SAEED5l7/umvem5nPRc3TQEHA14pOypBKSgw/IszKxA8UaJEYFkEYgM+MBhPiloAAAEAqv7QAYAA2gAOAAazBAABKCsBLgE9ATMVIw4BFRQXFhcBgHZg1m0CAQ8cRf7QFbR3ytoHCwcqLVUMAAIATv7QAnQA2gAOABkACLUTDwQAAigrAS4BPQEzFSMOARUUFxYXBS4BPQEzFSMGFhcBJHld1m0CAQ8cRQFQfFnVbQg4Pf7QFrZ0ytoHCwcqLVUMXxe2c8raTHkMAAAAAAEAqgO0AYAFvQANAAazDQgBKCsTPgE1NCYnIzUzFRQGB6o3OQECbdZqbAQSCWpFBwsH2smAsw0AAgBOA7QCdAW9AAsAFwAItRcSCwYCKCsBNjc2JyM1MxUUBgclNjc2JyM1MxUUBgcBnksYDgRt1mJ0/rBLGQ4FbdVicwQSDmA5KtrJd7sOXg5gOSrayXe5EAAAAAAAADsCygABAAAAAAAAAFAAogABAAAAAAABAAkBBwABAAAAAAACAAcBIQABAAAAAAADAB8BaQABAAAAAAAEAAkBnQABAAAAAAAFABAByQABAAAAAAAGAAkB7gABAAAAAAAHADICXgABAAAAAAASAAkCpQADAAEEAwACAAwGCQADAAEEBAACAAYGFwADAAEEBQACAA4GHwADAAEEBgACAAwFgQADAAEEBgAHAHgFjwADAAEEBwACAAwDHwADAAEEBwAHAHgDLQADAAEECAACAAgGLwADAAEECQAAAKAAAAADAAEECQABABIA8wADAAEECQACAA4BEQADAAEECQADAD4BKQADAAEECQAEABIBiQADAAEECQAFACABpwADAAEECQAGABIB2gADAAEECQAHAGQB+AADAAEECQASABICkQADAAEECgAHAGAFHwADAAEECwACABAGOQADAAEEDAACAA4CrwADAAEEDAAHAF4CvwADAAEEDQACAAgGSwADAAEEDgACAAwGVQADAAEEEAACABADpwADAAEEEAAHAGADuQADAAEEEQACAAoGYwADAAEEEgACAAYGbwADAAEEEwACABAEGwADAAEEEwAHAHQELQADAAEEFAACAAwGdwADAAEEFQACAA4GhQADAAEEFgACAAwGlQADAAEEGAACAAwGowADAAEEGQACAA4GsQADAAEEGgACABIGwQADAAEEGwACAA4G1QADAAEEHQACAAwEowADAAEEHQAHAGwEsQADAAEEHgACAAgG5QADAAEEHwACAAwG7wADAAEEIQACAA4G/QADAAEEIgACABIHDQADAAEEKgACABgHIQADAAEEOQACAAwHOwADAAEEPgACAAoHSQADAAEIBAACAAYHVQADAAEICQACAA4HXQADAAEIFgACAA4HbQADAAEMAQACAAgHfQADAAEMCgACAA4HhwCpACAAMQA5ADkAMAAtADIAMAAwADYAIABBAHAAcABsAGUAIABDAG8AbQBwAHUAdABlAHIAIABJAG4AYwAuACAAqQAgADEAOQA4ADEAIABMAGkAbgBvAHQAeQBwAGUAIABBAEcAIACpACAAMQA5ADkAMAAtADkAMQAgAFQAeQBwAGUAIABTAG8AbAB1AHQAaQBvAG4AcwAgAEkAbgBjAC4AAKkgMTk5MC0yMDA2IEFwcGxlIENvbXB1dGVyIEluYy4gqSAxOTgxIExpbm90eXBlIEFHIKkgMTk5MC05MSBUeXBlIFNvbHV0aW9ucyBJbmMuAABIAGUAbAB2AGUAdABpAGMAYQAASGVsdmV0aWNhAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABIAGUAbAB2AGUAdABpAGMAYQA7ACAAMQAwAC4AMABkADQAZQAxADsAIAAyADAAMQA1AC0AMAA0AC0AMQA2AABIZWx2ZXRpY2E7IDEwLjBkNGUxOyAyMDE1LTA0LTE2AABIAGUAbAB2AGUAdABpAGMAYQAASGVsdmV0aWNhAABWAGUAcgBzAGkAbwBuACAAMQAwAC4AMABkADQAZQAxAABWZXJzaW9uIDEwLjBkNGUxAABIAGUAbAB2AGUAdABpAGMAYQAASGVsdmV0aWNhAABIAGUAbAB2AGUAdABpAGMAYQAgAGkAcwAgAGEAIAByAGUAZwBpAHMAdABlAHIAZQBkACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIABMAGkAbgBvAHQAeQBwAGUAIABBAEcAAEhlbHZldGljYSBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIExpbm90eXBlIEFHAABIAGUAbAB2AGUAdABpAGMAYQAASGVsdmV0aWNhAABDAG8AdQByAGEAbgB0AAAASABlAGwAdgBlAHQAaQBjAGEAIABlAHMAdAAgAHUAbgBlACAAbQBhAHIAcQB1AGUAIABkAOkAcABvAHMA6QBlACAAZABlACAATABpAG4AbwB0AHkAcABlACAAQQBHAAAATgBvAHIAbQBhAGwAAABIAGUAbAB2AGUAdABpAGMAYQAgAGkAcwB0ACAAZQBpAG4AIABlAGkAbgBnAGUAdAByAGEAZwBlAG4AZQBzACAAVwBhAHIAZQBuAHoAZQBpAGMAaABlAG4AIABkAGUAcgAgAEwAaQBuAG8AdAB5AHAAZQAgAEEARwAAAFIAZQBnAG8AbABhAHIAZQAAAEgAZQBsAHYAZQB0AGkAYwBhACAA6AAgAHUAbgAgAG0AYQByAGMAaABpAG8AIAByAGUAZwBpAHMAdAByAGEAdABvACAAZABpACAATABpAG4AbwB0AHkAcABlACAAQQBHAAAAUgBlAGcAdQBsAGkAZQByAAAASABlAGwAdgBlAHQAaQBjAGEAIABpAHMAIABlAGUAbgAgAGcAZQByAGUAZwBpAHMAdAByAGUAZQByAGQAIABoAGEAbgBkAGUAbABzAG0AZQByAGsAIAB2AGEAbgAgAEwAaQBuAG8AdAB5AHAAZQAgAEEARwAAAE4AbwByAG0AYQBsAAAASABlAGwAdgBlAHQAaQBjAGEAIADkAHIAIABlAHQAdAAgAHIAZQBnAGkAcwB0AHIAZQByAGEAdAAgAHYAYQByAHUAbQDkAHIAawBlACAAZgD2AHIAIABMAGkAbgBvAHQAeQBwAGUAIABBAEcAAABIAGUAbAB2AGUAdABpAGMAYQAgAGUAcwAgAHUAbgBhACAAbQBhAHIAYwBhACAAcgBlAGcAaQBzAHQAcgBhAGQAYQAgAGQAZQAgAEwAaQBuAG8AdAB5AHAAZQAgAEEARwAAAE4AbwByAG0AYQBsAAAASABlAGwAdgBlAHQAaQBjAGEAIABlAHIAIABlAHQAIAByAGUAZwBpAHMAdAByAGUAcgBlAHQAIAB2AGEAcgBlAG0A5gByAGsAZQAgAHQAaQBsAGgA+AByAGUAbgBkAGUAIABMAGkAbgBvAHQAeQBwAGUAIABBAEcAAABOAG8AcgBtAGEAbAAAahlulprUAAAAUgBlAGcAdQBsAGEAcgAAA5EDwAO7A6wAAABOAG8AcgBtAGEAYQBsAGkAAAXoBdIF2QXcAAAATgBvAHIAbQDhAGwAADDsMK4w5TDpMPwAAMd8vBjMtAAAAE4AbwByAG0AYQBsAAAAUgBlAGcAdQBsAGEAcgAAAE4AbwByAG0AYQBsAAAATgBvAHIAbQBhAGwAAAQeBDEESwRHBD0ESwQ5AAAAUgBlAGcAdQBsAGEAcgBuAGkAAABSAGUAZwB1AGwAYQByAAAOGw4BDhUONAAAAE4AbwByAG0AYQBsAAAAUgBlAGcAdQBsAGUAcgAABBcEMgQ4BEcEMAQ5BD0EOAQ5AAAAVABoAPQAbgBnACAAdABoAbAe3QBuAGcAAAkoCT8JLwkuCT8JJAAAAEIAaQBhAHMAYQAAXjiJxE9TAAAAUgBlAGcAdQBsAGEAcgAAAFIAZQBnAHUAbABhAHIAAAY5BicGLwZKAAAAUgBlAGcAdQBsAGEAcgAAAAAAAAIAAAAAAAD/AQBlAAAAAAAAAAAAAAAAAAAAAAAAAAAIlQAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEArACjAIQAhQC9AJYA6ACGAI4AiwCdAKkApAECAIoA2gCDAJMA8gDzAI0AlwCIAMMA3gDxAJ4AqgD1APQA9gCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBmANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3AOoAeAB6AHkAewB9AHwAuAChAH8AfgCAAIEA7ADuALoBAwEEAQUBBgEHAQgA/QD+AQkBCgELAQwA/wEAAQ0BDgEPAQEBEAERARIBEwEUARUBFgEXARgBGQEaARsA+AD5ARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsA+gDXASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6AOIA4wE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQCwALEBSgFLAUwBTQFOAU8BUAFRAVIBUwD7APwA5ADlAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkAuwFqAWsBbAFtAOYA5wFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AKYBewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegDYAOECewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwKIAokCigDbANwA3QDgANkA3wKLAowCjQKOAo8CkAKRApICkwKUApUClgKXApgCmQKaApsCnAKdAp4CnwKgAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYCtwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QL6AvsC/AL9Av4C/wMAAwEDAgMDAwQDBQMGAwcDCAMJAwoDCwMMAw0DDgMPAxADEQMSAxMDFAMVAxYDFwMYAxkDGgMbAxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5AzoDOwM8Az0DPgM/A0ADQQNCA0MDRANFA0YDRwNIA0kDSgNLA0wDTQNOA08DUANRA1IDUwNUA1UDVgNXA1gDWQNaA1sDXACbA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpBKoEqwSsBK0ErgSvBLAEsQSyBLMEtAS1BLYEtwS4BLkEugS7BLwEvQS+BL8EwATBBMIEwwTEBMUExgTHBMgEyQTKBMsEzATNBM4EzwTQBNEE0gTTBNQE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAUJBQoFCwUMBQ0FDgUPBRAFEQUSBRMFFAUVBRYFFwUYBRkFGgUbBRwFHQUeBR8FIAUhBSIFIwUkBSUFJgUnBSgFKQUqBSsFLAUtBS4FLwUwBTEFMgUzBTQFNQU2BTcFOAU5BToFOwU8BT0FPgU/BUAFQQVCBUMFRAVFBUYFRwVIBUkFSgVLBUwFTQVOBU8FUAVRBVIFUwVUBVUFVgVXBVgFWQVaBVsFXAVdBV4FXwVgBWEFYgVjBWQFZQVmBWcFaAVpBWoFawVsBW0FbgVvBXAFcQVyBXMFdAV1BXYFdwV4BXkFegV7BXwFfQV+BX8FgAWBBYIFgwWEBYUFhgWHBYgFiQWKBYsFjAWNBY4FjwWQBZEFkgWTBZQFlQWWBZcFmAWZBZoFmwWcBZ0FngWfBaAFoQWiBaMFpAWlBaYFpwWoBakFqgWrBawFrQWuBa8FsAWxBbIFswW0BbUFtgW3BbgFuQW6BbsFvAW9Bb4FvwXABcEFwgXDBcQFxQXGBccFyAXJBcoFywXMBc0FzgXPBdAF0QXSBdMF1AXVBdYF1wXYBdkF2gXbBdwF3QXeBd8F4AXhBeIF4wXkBeUF5gXnBegF6QXqBesF7AXtBe4F7wXwBfEF8gXzBfQF9QX2BfcF+AX5BfoF+wX8Bf0F/gX/BgAGAQYCBgMGBAYFBgYGBwYIBgkGCgYLBgwGDQYOBg8GEAYRBhIGEwYUBhUGFgYXBhgGGQYaBhsGHAYdBh4GHwYgBiEGIgYjBiQGJQYmBicGKAYpBioGKwYsBi0GLgYvBjAGMQYyBjMGNAY1BjYGNwY4BjkGOgY7BjwGPQY+Bj8GQAZBBkIGQwZEBkUGRgZHBkgGSQZKBksGTAZNBk4GTwZQBlEGUgZTBlQGVQZWBlcGWAZZBloGWwZcBl0GXgZfBmAGYQZiBmMGZAZlBmYGZwZoBmkGagZrBmwGbQZuBm8GcAZxBnIGcwZ0BnUGdgZ3BngGeQZ6BnsGfAZ9Bn4GfwaABoEGggaDBoQGhQaGBocGiAaJBooGiwaMBo0GjgaPBpAGkQaSBpMGlAaVBpYGlwaYBpkGmgabBpwGnQaeBp8GoAahBqIGowakBqUGpganBqgGqQaqBqsGrAatBq4GrwawBrEAsgCzBrIGswa0ALYAtwDEBrUAtAC1AMUGtgCCAMIAhwa3BrgGuQCrBroGuwa8Br0Gvga/BsAGwQbCAMYGwwbEBsUGxgbHBsgGyQbKAL4AvwbLBswGzQbOBs8G0AbRBtIG0wC8BtQG1QbWBtcG2AbZBtoG2wbcBt0G3gbfBuAG4QbiBuMG5AblBuYG5wboBukG6gbrBuwG7QbuBu8G8AbxBvIG8wb0BvUG9gb3BvgG+Qb6BvsG/Ab9Bv4G/wcABwEHAgcDBwQHBQcGBwcHCAcJBwoHCwcMBw0HDgcPBxAHEQcSBxMHFAcVBxYHFwcYBxkHGgcbBxwHHQD3Bx4HHwcgByEHIgcjByQHJQcmBycHKAcpByoHKwcsBy0HLgcvBzAHMQcyBzMHNAc1BzYHNwc4BzkHOgc7BzwHPQc+AIwAnwc/B0AHQQdCB0MHRAdFB0YHRwdIB0kHSgdLB0wHTQdOB08HUAdRB1IHUwdUB1UHVgdXB1gHWQdaB1sHXAddB14HXwdgB2EHYgdjB2QHZQdmB2cHaAdpB2oHawdsB20HbgdvAJgAqAdwAJoHcQCZAO8ApQCSAJwApwCPAJQAlQdyB3MHdAd1B3YHdwd4B3kHegd7B3wHfQd+B38HgAC5B4EHggeDB4QHhQeGB4cHiAeJB4oHiweMB40HjgePB5AHkQeSB5MHlAeVB5YHlweYB5kHmgebB5wHnQeeB58HoAehB6IHowekB6UHpgenB6gHqQeqB6sHrAetB64HrwewB7EHsgezB7QHtQe2B7cHuAe5B7oHuwe8B70Hvge/B8AHwQfCB8MHxAfFB8YHxwfIB8kHygfLB8wHzQfOB88H0AfRB9IH0wfUB9UA0gDAAMEH1gfXB9gH2QfaB9sH3AfdB94H3wfgB+EH4gfjB+QH5QfmB+cH6AfpB+oH6wfsB+0H7gfvB/AH8QfyB/MH9Af1B/YH9wf4B/kH+gf7B/wH/Qf+B/8IAAgBCAIIAwgECAUIBggHCAgICQgKCAsIDAgNCA4IDwgQCBEIEggTCBQIFQgWCBcIGAgZCBoIGwgcCB0IHggfCCAIIQgiCCMIJAglCCYIJwgoCCkIKggrCCwILQguCC8IMAgxCDIIMwg0CDUINgg3CDgIOQg6CDsIPAg9CD4IPwhACEEIQghDCEQIRQhGCEcISAhJCEoISwhMCE0ITghPCFAIUQhSCFMIVAhVCFYIVwhYCFkIWghbCFwIXQheCF8IYAhhCGIIYwhkCGUIZghnCGgIaQhqCGsIbAhtCG4IbwhwCHEIcghzCHQIdQh2CHcIeAh5CHoIewh8CH0Ifgh/CIAIgQiCCIMIhAiFCIYIhwiICIkIigiLCIwIjQiOCI8IkAiRCJIIkwiUCnNvZnRoeXBoZW4HQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmUHQW9nb25lawdhb2dvbmVrC0NjaXJjdW1mbGV4C2NjaXJjdW1mbGV4CkNkb3RhY2NlbnQKY2RvdGFjY2VudAZEY2Fyb24GZGNhcm9uBkRjcm9hdAdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQHRW9nb25lawdlb2dvbmVrBkVjYXJvbgZlY2Fyb24LR2NpcmN1bWZsZXgLZ2NpcmN1bWZsZXgKR2RvdGFjY2VudApnZG90YWNjZW50DEdjb21tYWFjY2VudAxnY29tbWFhY2NlbnQLSGNpcmN1bWZsZXgLaGNpcmN1bWZsZXgESGJhcgRoYmFyBkl0aWxkZQZpdGlsZGUHSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJldmUHSW9nb25lawdpb2dvbmVrAklKAmlqC0pjaXJjdW1mbGV4C2pjaXJjdW1mbGV4DEtjb21tYWFjY2VudAxrY29tbWFhY2NlbnQMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUMTGNvbW1hYWNjZW50DGxjb21tYWFjY2VudAZMY2Fyb24GbGNhcm9uCkxkb3RhY2NlbnQKbGRvdGFjY2VudAZOYWN1dGUGbmFjdXRlDE5jb21tYWFjY2VudAxuY29tbWFhY2NlbnQGTmNhcm9uBm5jYXJvbgtuYXBvc3Ryb3BoZQNFbmcDZW5nB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9odW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZSYWN1dGUGcmFjdXRlDFJjb21tYWFjY2VudAxyY29tbWFhY2NlbnQGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4CFRjZWRpbGxhCHRjZWRpbGxhBlRjYXJvbgZ0Y2Fyb24EVGJhcgR0YmFyBlV0aWxkZQZ1dGlsZGUHVW1hY3Jvbgd1bWFjcm9uBlVicmV2ZQZ1YnJldmUFVXJpbmcFdXJpbmcNVWh1bmdhcnVtbGF1dA11aHVuZ2FydW1sYXV0B1VvZ29uZWsHdW9nb25lawtXY2lyY3VtZmxleAt3Y2lyY3VtZmxleAtZY2lyY3VtZmxleAt5Y2lyY3VtZmxleAZaYWN1dGUGemFjdXRlClpkb3RhY2NlbnQKemRvdGFjY2VudAVzbG9uZwdic3Ryb2tlB0J0b3BiYXIHYnRvcGJhcgVPb3BlbghEYWZyaWNhbgdEdG9wYmFyB2R0b3BiYXILZGVsdGF0dXJuZWQJRXJldmVyc2VkBVNjaHdhBUVvcGVuBUZob29rC0lvdGFhZnJpY2FuB0lzdHJva2UEbGJhcgd1bmkwMTlCCU5ob29rbGVmdA1ubGVncmlnaHRsb25nDk9jZW50ZXJlZHRpbGRlBU9ob3JuBW9ob3JuAnlyB1RvbmV0d28HdG9uZXR3bwNFc2gOVHJldHJvZmxleGhvb2sFVWhvcm4FdWhvcm4OVXBzaWxvbmFmcmljYW4HdW5pMDFCNQd1bmkwMUI2A0V6aAtFemhyZXZlcnNlZAtlemhyZXZlcnNlZAl0d29zdHJva2ULY2xpY2tkZW50YWwMY2xpY2tsYXRlcmFsDWNsaWNrYWx2ZW9sYXIOY2xpY2tyZXRyb2ZsZXgHRFpjYXJvbgdEemNhcm9uB2R6Y2Fyb24CTEoCTGoCbGoCTkoCTmoCbmoGQWNhcm9uBmFjYXJvbgZJY2Fyb24GaWNhcm9uBk9jYXJvbgZvY2Fyb24GVWNhcm9uBnVjYXJvbg9VZGllcmVzaXNtYWNyb24PdWRpZXJlc2lzbWFjcm9uDlVkaWVyZXNpc2FjdXRlDnVkaWVyZXNpc2FjdXRlDlVkaWVyZXNpc2Nhcm9uDnVkaWVyZXNpc2Nhcm9uDlVkaWVyZXNpc2dyYXZlDnVkaWVyZXNpc2dyYXZlB2V0dXJuZWQPQWRpZXJlc2lzbWFjcm9uD2FkaWVyZXNpc21hY3JvbgpBZG90bWFjcm9uCmFkb3RtYWNyb24IQUVtYWNyb24IYWVtYWNyb24HR3N0cm9rZQdnc3Ryb2tlBkdjYXJvbgZnY2Fyb24GS2Nhcm9uBmtjYXJvbgdPb2dvbmVrB29vZ29uZWsNT29nb25la21hY3Jvbg1vb2dvbmVrbWFjcm9uCEV6aGNhcm9uCGV6aGNhcm9uBmpjYXJvbgJEWgJEegJkegZHYWN1dGUGZ2FjdXRlBFd5bm4GTmdyYXZlBm5ncmF2ZQpBcmluZ2FjdXRlCmFyaW5nYWN1dGUHQUVhY3V0ZQdhZWFjdXRlDE9zdHJva2VhY3V0ZQxvc3Ryb2tlYWN1dGUJQWRibGdyYXZlCWFkYmxncmF2ZQ5BaW52ZXJ0ZWRicmV2ZQ5haW52ZXJ0ZWRicmV2ZQlFZGJsZ3JhdmUJZWRibGdyYXZlDkVpbnZlcnRlZGJyZXZlDmVpbnZlcnRlZGJyZXZlCUlkYmxncmF2ZQlpZGJsZ3JhdmUOSWludmVydGVkYnJldmUOaWludmVydGVkYnJldmUJT2RibGdyYXZlCW9kYmxncmF2ZQ5PaW52ZXJ0ZWRicmV2ZQ5vaW52ZXJ0ZWRicmV2ZQlSZGJsZ3JhdmUJcmRibGdyYXZlDlJpbnZlcnRlZGJyZXZlDnJpbnZlcnRlZGJyZXZlCVVkYmxncmF2ZQl1ZGJsZ3JhdmUOVWludmVydGVkYnJldmUOdWludmVydGVkYnJldmUMU2NvbW1hYWNjZW50DHNjb21tYWFjY2VudAxUY29tbWFhY2NlbnQMdGNvbW1hYWNjZW50BFlvZ2gEeW9naAZIY2Fyb24GaGNhcm9uB3VuaTAyMjAHdW5pMDIyNgd1bmkwMjI3B3VuaTAyMjgHdW5pMDIyOQd1bmkwMjJBB3VuaTAyMkIHdW5pMDIyQwd1bmkwMjJEB3VuaTAyMkUHdW5pMDIyRgd1bmkwMjMwB3VuaTAyMzEHdW5pMDIzMgd1bmkwMjMzCGRvdGxlc3NqB3VuaTAyMzgHdW5pMDIzOQd1bmkwMjNBB3VuaTAyM0IHdW5pMDIzQwd1bmkwMjNEB3VuaTAyM0UHdW5pMDI0MQd1bmkwMjQyB3VuaTAyNDMHdW5pMDI0NAd1bmkwMjQ1B3VuaTAyNDYHdW5pMDI0Nwd1bmkwMjQ4B3VuaTAyNDkHdW5pMDI0QQd1bmkwMjRCB3VuaTAyNEMHdW5pMDI0RAd1bmkwMjRFB3VuaTAyNEYHYXR1cm5lZAdhc2NyaXB0DWFzY3JpcHR0dXJuZWQHdW5pMDI1MwVvb3Blbgd1bmkwMjU2B3VuaTAyNTcJZXJldmVyc2VkBXNjaHdhCXNjaHdhaG9vawVlb3Blbg1lb3BlbnJldmVyc2VkEWVvcGVucmV2ZXJzZWRob29rE2VvcGVucmV2ZXJzZWRjbG9zZWQOamRvdGxlc3NzdHJva2UHdW5pMDI2MAdnc2NyaXB0B2h0dXJuZWQHdW5pMDI2Ngd1bmkwMjY3B2lzdHJva2UJaW90YWxhdGluCUlzbWFsbGlwYQxsbWlkZGxldGlsZGUHdW5pMDI2RAdtdHVybmVkDm1sb25nbGVndHVybmVkBW1ob29rCW5ob29rbGVmdAd1bmkwMjczCU5zbWFsbGlwYQd1bmkwMjc1B3VuaTAyNzYIcGhpbGF0aW4HcnR1cm5lZA5ybG9uZ2xlZ3R1cm5lZAd1bmkwMjdCCHJsb25nbGVnB3VuaTAyN0QJcmZpc2hob29rEXJmaXNoaG9va3JldmVyc2VkCVJzbWFsbGlwYQ5Sc21hbGxpbnZlcnRlZANlc2gSZG90bGVzc2pzdHJva2Vob29rEGVzaHNxdWF0cmV2ZXJzZWQHdHR1cm5lZA50cmV0cm9mbGV4aG9vawR1YmFyDHVwc2lsb25sYXRpbgd2dHVybmVkB3d0dXJuZWQHeXR1cm5lZAlZc21hbGxpcGEDZXpoC2dsb3R0YWxzdG9wE2dsb3R0YWxzdG9wcmV2ZXJzZWQTZ2xvdHRhbHN0b3BpbnZlcnRlZApjc3RyZXRjaGVkDWJpbGFiaWFsY2xpY2sLZW9wZW5jbG9zZWQJSHNtYWxsaXBhB2t0dXJuZWQJTHNtYWxsaXBhB3VuaTAyQTARZ2xvdHRhbHN0b3BzdHJva2UZZ2xvdHRhbHN0b3BzdHJva2VyZXZlcnNlZAd1bmkwMkEzBGRlemgHdW5pMDJBNgd1bmkwMkE3B3VuaTAyQTkHdW5pMDJBQQd1bmkwMkFCB3VuaTAyQUMHdW5pMDJBRAd1bmkwMkFFB3VuaTAyQUYHdW5pMDJCMAd1bmkwMkIxB3VuaTAyQjIHdW5pMDJCMwd1bmkwMkI0B3VuaTAyQjUWUnNtYWxsaW52ZXJ0ZWRzdXBlcmlvcgd1bmkwMkI3B3VuaTAyQjgIcHJpbWVtb2QLZGJscHJpbWVtb2QOY29tbWF0dXJuZWRtb2QNYXBvc3Ryb3BoZW1vZAlhZmlpNjQ5MzcHdW5pMDJCRQd1bmkwMkJGB3VuaTAyQzAHdW5pMDJDMQd1bmkwMkMyB3VuaTAyQzMHdW5pMDJDNAd1bmkwMkM1B3VuaTAyQzgHdW5pMDJDOQd1bmkwMkNBB3VuaTAyQ0IHdW5pMDJDQwd1bmkwMkNEB3VuaTAyQ0UHdW5pMDJDRhJjb2xvbnRyaWFuZ3VsYXJtb2QWY29sb250cmlhbmd1bGFyaGFsZm1vZAd1bmkwMkQyB3VuaTAyRDMHdW5pMDJENAd1bmkwMkQ1B3VuaTAyRDYHdW5pMDJENw1yaG90aWNob29rbW9kB3VuaTAyREYHdW5pMDJFMAd1bmkwMkUxB3VuaTAyRTIHdW5pMDJFMwd1bmkwMkU0E3RvbmViYXJleHRyYWhpZ2htb2QOdG9uZWJhcmhpZ2htb2QNdG9uZWJhcm1pZG1vZA10b25lYmFybG93bW9kEnRvbmViYXJleHRyYWxvd21vZAd1bmkwMkVBB3VuaTAyRUIHdW5pMDJFQwd1bmkwMkVEB3VuaTAyRUUHdW5pMDJFRgd1bmkwMkYwB3VuaTAyRjEHdW5pMDJGMgd1bmkwMkYzB3VuaTAyRjQHdW5pMDJGNQd1bmkwMkY2B3VuaTAyRjcHdW5pMDJGOAd1bmkwMkY5B3VuaTAyRkEHdW5pMDJGQgd1bmkwMkZDB3VuaTAyRkQHdW5pMDJGRQd1bmkwMkZGCGdyYXZlY21iCGFjdXRlY21iDWNpcmN1bWZsZXhjbWIIdGlsZGVjbWIJbWFjcm9uY21iC292ZXJsaW5lY21iCGJyZXZlY21iDGRvdGFjY2VudGNtYgtkaWVyZXNpc2NtYgdob29rY21iB3JpbmdjbWIPaHVuZ2FydW1sYXV0Y21iCGNhcm9uY21iFHZlcnRpY2FsbGluZWFib3ZlY21iF2RibHZlcnRpY2FsbGluZWFib3ZlY21iC2RibGdyYXZlY21iDmNhbmRyYWJpbmR1Y21iEGJyZXZlaW52ZXJ0ZWRjbWITY29tbWF0dXJuZWRhYm92ZWNtYg1jb21tYWFib3ZlY21iFWNvbW1hcmV2ZXJzZWRhYm92ZWNtYhJjb21tYWFib3ZlcmlnaHRjbWINZ3JhdmViZWxvd2NtYg1hY3V0ZWJlbG93Y21iEGxlZnR0YWNrYmVsb3djbWIRcmlnaHR0YWNrYmVsb3djbWIHdW5pMDMxQQdob3JuY21iFHJpbmdoYWxmbGVmdGJlbG93Y21iDnVwdGFja2JlbG93Y21iEGRvd250YWNrYmVsb3djbWIMcGx1c2JlbG93Y21iDW1pbnVzYmVsb3djbWIHdW5pMDMyMQd1bmkwMzIyC2RvdGJlbG93Y21iEGRpZXJlc2lzYmVsb3djbWIMcmluZ2JlbG93Y21iC2NvbW1hYWNjZW50CmNlZGlsbGFjbWIJb2dvbmVrY21iFHZlcnRpY2FsbGluZWJlbG93Y21iB3VuaTAzMkEXZGJsYXJjaGludmVydGVkYmVsb3djbWINY2Fyb25iZWxvd2NtYhJjaXJjdW1mbGV4YmVsb3djbWINYnJldmViZWxvd2NtYhVicmV2ZWludmVydGVkYmVsb3djbWINdGlsZGViZWxvd2NtYg5tYWNyb25iZWxvd2NtYgpsb3dsaW5lY21iDWRibGxvd2xpbmVjbWIPdGlsZGVvdmVybGF5Y21iFXN0cm9rZXNob3J0b3ZlcmxheWNtYhRzdHJva2Vsb25nb3ZlcmxheWNtYhZzb2xpZHVzc2hvcnRvdmVybGF5Y21iFXNvbGlkdXNsb25nb3ZlcmxheWNtYhVyaW5naGFsZnJpZ2h0YmVsb3djbWIHdW5pMDMzQQ5zcXVhcmViZWxvd2NtYg9zZWFndWxsYmVsb3djbWIHdW5pMDMzRBB0aWxkZXZlcnRpY2FsY21iDmRibG92ZXJsaW5lY21iDGdyYXZldG9uZWNtYgxhY3V0ZXRvbmVjbWITcGVyaXNwb21lbmlncmVla2NtYgprb3JvbmlzY21iEWRpYWx5dGlrYXRvbm9zY21iFXlwb2dlZ3JhbW1lbmlncmVla2NtYgd1bmkwMzQ2B3VuaTAzNDcHdW5pMDM0OAd1bmkwMzQ5B3VuaTAzNEEHdW5pMDM0Qgd1bmkwMzRDB3VuaTAzNEQHdW5pMDM0RRdjb21iaW5pbmdncmFwaGVtZWpvaW5lcgd1bmkwMzUwB3VuaTAzNTEHdW5pMDM1Mgd1bmkwMzUzB3VuaTAzNTQHdW5pMDM1NQd1bmkwMzU2B3VuaTAzNTcHdW5pMDM1OAd1bmkwMzU5B3VuaTAzNUEHdW5pMDM1Qgd1bmkwMzVDB3VuaTAzNUQHdW5pMDM1RQd1bmkwMzVGDnRpbGRlZG91YmxlY21iFmJyZXZlaW52ZXJ0ZWRkb3VibGVjbWIHdW5pMDM2Mgd1bmkwMzYzB3VuaTAzNjQHdW5pMDM2NQd1bmkwMzY2B3VuaTAzNjcHdW5pMDM2OAd1bmkwMzY5B3VuaTAzNkEHdW5pMDM2Qgd1bmkwMzZDB3VuaTAzNkQHdW5pMDM2RQd1bmkwMzZGEG51bWVyYWxzaWduZ3JlZWsVbnVtZXJhbHNpZ25sb3dlcmdyZWVrDXlwb2dlZ3JhbW1lbmkHdW5pMDM3Qgd1bmkwMzdDB3VuaTAzN0QNcXVlc3Rpb25ncmVlawV0b25vcwd1bmkwMzg1CkFscGhhdG9ub3MJYW5vdGVsZWlhDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rvbm9zBUFscGhhBEJldGEFR2FtbWEKRGVsdGFncmVlawdFcHNpbG9uBFpldGEDRXRhBVRoZXRhBElvdGEFS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA1BoaQNDaGkDUHNpCk9tZWdhZ3JlZWsMSW90YWRpZXJlc2lzD1Vwc2lsb25kaWVyZXNpcwphbHBoYXRvbm9zDGVwc2lsb250b25vcwhldGF0b25vcwlpb3RhdG9ub3MUdXBzaWxvbmRpZXJlc2lzdG9ub3MFYWxwaGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEFa2FwcGEGbGFtYmRhB211Z3JlZWsCbnUCeGkHb21pY3JvbgNyaG8Kc2lnbWFmaW5hbAVzaWdtYQN0YXUHdXBzaWxvbgNwaGkDY2hpA3BzaQVvbWVnYQxpb3RhZGllcmVzaXMPdXBzaWxvbmRpZXJlc2lzDG9taWNyb250b25vcwx1cHNpbG9udG9ub3MKb21lZ2F0b25vcxZzaWdtYWx1bmF0ZXN5bWJvbGdyZWVrCHlvdGdyZWVrB3VuaTAzRjQHdW5pMDNGNQd1bmkwM0Y2B3VuaTAzRjcHdW5pMDNGOAd1bmkwM0Y5B3VuaTAzRkEHdW5pMDNGQgd1bmkwM0ZDB3VuaTAzRkQHdW5pMDNGRQd1bmkwM0ZGB3VuaTA0MDAKSW9jeXJpbGxpYwtEamVjeXJpbGxpYwtHamVjeXJpbGxpYwlFY3lyaWxsaWMLRHplY3lyaWxsaWMJSWN5cmlsbGljCllpY3lyaWxsaWMKSmVjeXJpbGxpYwtMamVjeXJpbGxpYwtOamVjeXJpbGxpYwxUc2hlY3lyaWxsaWMLS2plY3lyaWxsaWMHdW5pMDQwRA5Vc2hvcnRjeXJpbGxpYwxEemhlY3lyaWxsaWMJQWN5cmlsbGljCkJlY3lyaWxsaWMKVmVjeXJpbGxpYwpHZWN5cmlsbGljCkRlY3lyaWxsaWMKSWVjeXJpbGxpYwtaaGVjeXJpbGxpYwpaZWN5cmlsbGljCklpY3lyaWxsaWMPSWlzaG9ydGN5cmlsbGljCkthY3lyaWxsaWMKRWxjeXJpbGxpYwpFbWN5cmlsbGljCkVuY3lyaWxsaWMJT2N5cmlsbGljClBlY3lyaWxsaWMKRXJjeXJpbGxpYwpFc2N5cmlsbGljClRlY3lyaWxsaWMJVWN5cmlsbGljCkVmY3lyaWxsaWMLS2hhY3lyaWxsaWMLVHNlY3lyaWxsaWMLQ2hlY3lyaWxsaWMLU2hhY3lyaWxsaWMNU2hjaGFjeXJpbGxpYxBIYXJkc2lnbmN5cmlsbGljDFllcmljeXJpbGxpYxBTb2Z0c2lnbmN5cmlsbGljEUVyZXZlcnNlZGN5cmlsbGljCklVY3lyaWxsaWMKSUFjeXJpbGxpYwlhY3lyaWxsaWMKYmVjeXJpbGxpYwp2ZWN5cmlsbGljCmdlY3lyaWxsaWMKZGVjeXJpbGxpYwppZWN5cmlsbGljC3poZWN5cmlsbGljCnplY3lyaWxsaWMKaWljeXJpbGxpYw9paXNob3J0Y3lyaWxsaWMKa2FjeXJpbGxpYwplbGN5cmlsbGljCmVtY3lyaWxsaWMKZW5jeXJpbGxpYwlvY3lyaWxsaWMKcGVjeXJpbGxpYwplcmN5cmlsbGljCmVzY3lyaWxsaWMKdGVjeXJpbGxpYwl1Y3lyaWxsaWMKZWZjeXJpbGxpYwtraGFjeXJpbGxpYwt0c2VjeXJpbGxpYwtjaGVjeXJpbGxpYwtzaGFjeXJpbGxpYw1zaGNoYWN5cmlsbGljEGhhcmRzaWduY3lyaWxsaWMMeWVyaWN5cmlsbGljEHNvZnRzaWduY3lyaWxsaWMRZXJldmVyc2VkY3lyaWxsaWMKaXVjeXJpbGxpYwppYWN5cmlsbGljB3VuaTA0NTAKaW9jeXJpbGxpYwtkamVjeXJpbGxpYwtnamVjeXJpbGxpYwllY3lyaWxsaWMLZHplY3lyaWxsaWMJaWN5cmlsbGljCnlpY3lyaWxsaWMKamVjeXJpbGxpYwtsamVjeXJpbGxpYwtuamVjeXJpbGxpYwx0c2hlY3lyaWxsaWMLa2plY3lyaWxsaWMHdW5pMDQ1RA51c2hvcnRjeXJpbGxpYwxkemhlY3lyaWxsaWMLWWF0Y3lyaWxsaWMLeWF0Y3lyaWxsaWMRRWlvdGlmaWVkY3lyaWxsaWMRZWlvdGlmaWVkY3lyaWxsaWMRWXVzbGl0dGxlY3lyaWxsaWMReXVzbGl0dGxlY3lyaWxsaWMZWXVzbGl0dGxlaW90aWZpZWRjeXJpbGxpYxl5dXNsaXR0bGVpb3RpZmllZGN5cmlsbGljDll1c2JpZ2N5cmlsbGljDnl1c2JpZ2N5cmlsbGljFll1c2JpZ2lvdGlmaWVkY3lyaWxsaWMWeXVzYmlnaW90aWZpZWRjeXJpbGxpYwtQc2ljeXJpbGxpYwtwc2ljeXJpbGxpYwxGaXRhY3lyaWxsaWMMZml0YWN5cmlsbGljD0l6aGl0c2FjeXJpbGxpYw9pemhpdHNhY3lyaWxsaWMXSXpoaXRzYWRibGdyYXZlY3lyaWxsaWMXaXpoaXRzYWRibGdyYXZlY3lyaWxsaWMHdW5pMDQ3OAd1bmkwNDc5EUdoZXVwdHVybmN5cmlsbGljEWdoZXVwdHVybmN5cmlsbGljEUdoZXN0cm9rZWN5cmlsbGljEWdoZXN0cm9rZWN5cmlsbGljFFpoZWRlc2NlbmRlcmN5cmlsbGljFHpoZWRlc2NlbmRlcmN5cmlsbGljE1plZGVzY2VuZGVyY3lyaWxsaWMTemVkZXNjZW5kZXJjeXJpbGxpYxNLYWRlc2NlbmRlcmN5cmlsbGljE2thZGVzY2VuZGVyY3lyaWxsaWMYS2F2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljGGthdmVydGljYWxzdHJva2VjeXJpbGxpYxFLYWJhc2hraXJjeXJpbGxpYxFrYWJhc2hraXJjeXJpbGxpYxNFbmRlc2NlbmRlcmN5cmlsbGljE2VuZGVzY2VuZGVyY3lyaWxsaWMNRW5naGVjeXJpbGxpYw1lbmdoZWN5cmlsbGljE0VzZGVzY2VuZGVyY3lyaWxsaWMTZXNkZXNjZW5kZXJjeXJpbGxpYxNUZWRlc2NlbmRlcmN5cmlsbGljE3RlZGVzY2VuZGVyY3lyaWxsaWMRVXN0cmFpZ2h0Y3lyaWxsaWMRdXN0cmFpZ2h0Y3lyaWxsaWMXVXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMXdXN0cmFpZ2h0c3Ryb2tlY3lyaWxsaWMTSGFkZXNjZW5kZXJjeXJpbGxpYxNoYWRlc2NlbmRlcmN5cmlsbGljDVRldHNlY3lyaWxsaWMNdGV0c2VjeXJpbGxpYxRDaGVkZXNjZW5kZXJjeXJpbGxpYxRjaGVkZXNjZW5kZXJjeXJpbGxpYxlDaGV2ZXJ0aWNhbHN0cm9rZWN5cmlsbGljGWNoZXZlcnRpY2Fsc3Ryb2tlY3lyaWxsaWMMU2hoYWN5cmlsbGljDHNoaGFjeXJpbGxpYxRDaGVhYmtoYXNpYW5jeXJpbGxpYxRjaGVhYmtoYXNpYW5jeXJpbGxpYx1DaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYx1jaGVkZXNjZW5kZXJhYmtoYXNpYW5jeXJpbGxpYxBwYWxvY2hrYWN5cmlsbGljEFpoZWJyZXZlY3lyaWxsaWMQemhlYnJldmVjeXJpbGxpYw5Fbmhvb2tjeXJpbGxpYw5lbmhvb2tjeXJpbGxpYwd1bmkwNENGDkFicmV2ZWN5cmlsbGljDmFicmV2ZWN5cmlsbGljEUFkaWVyZXNpc2N5cmlsbGljEWFkaWVyZXNpc2N5cmlsbGljC0FpZWN5cmlsbGljC2FpZWN5cmlsbGljD0llYnJldmVjeXJpbGxpYw9pZWJyZXZlY3lyaWxsaWMNU2Nod2FjeXJpbGxpYw1zY2h3YWN5cmlsbGljFVNjaHdhZGllcmVzaXNjeXJpbGxpYxVzY2h3YWRpZXJlc2lzY3lyaWxsaWMTWmhlZGllcmVzaXNjeXJpbGxpYxN6aGVkaWVyZXNpc2N5cmlsbGljElplZGllcmVzaXNjeXJpbGxpYxJ6ZWRpZXJlc2lzY3lyaWxsaWMURHplYWJraGFzaWFuY3lyaWxsaWMUZHplYWJraGFzaWFuY3lyaWxsaWMPSW1hY3JvbmN5cmlsbGljD2ltYWNyb25jeXJpbGxpYxFJZGllcmVzaXNjeXJpbGxpYxFpZGllcmVzaXNjeXJpbGxpYxFPZGllcmVzaXNjeXJpbGxpYxFvZGllcmVzaXNjeXJpbGxpYw9PYmFycmVkY3lyaWxsaWMPb2JhcnJlZGN5cmlsbGljF09iYXJyZWRkaWVyZXNpc2N5cmlsbGljF29iYXJyZWRkaWVyZXNpc2N5cmlsbGljB3VuaTA0RUMHdW5pMDRFRA9VbWFjcm9uY3lyaWxsaWMPdW1hY3JvbmN5cmlsbGljEVVkaWVyZXNpc2N5cmlsbGljEXVkaWVyZXNpc2N5cmlsbGljFVVodW5nYXJ1bWxhdXRjeXJpbGxpYxV1aHVuZ2FydW1sYXV0Y3lyaWxsaWMTQ2hlZGllcmVzaXNjeXJpbGxpYxNjaGVkaWVyZXNpc2N5cmlsbGljB3VuaTA0RjYHdW5pMDRGNxRZZXJ1ZGllcmVzaXNjeXJpbGxpYxR5ZXJ1ZGllcmVzaXNjeXJpbGxpYwd1bmkwNEZFB3VuaTA0RkYHdW5pMDUwMAd1bmkwNTAxB3VuaTA1MTAHdW5pMDUxMQd1bmkwNTEyB3VuaTA1MTMQdW5pMEUzRi5iYWh0dGhhaQV1MTBEMAV1MTBEMQV1MTBEMgV1MTBEMwV1MTBENAV1MTBENQV1MTBENgV1MTBENwV1MTBEOAV1MTBEOQV1MTBEQQV1MTBEQgV1MTBEQwV1MTBERAV1MTBERQV1MTBERgV1MTBFMAV1MTBFMQV1MTBFMgV1MTBFMwV1MTBFNAV1MTBFNQV1MTBFNgV1MTBFNwV1MTBFOAV1MTBFOQV1MTBFQQV1MTBFQgV1MTBFQwV1MTBFRAV1MTBFRQV1MTBFRgV1MTBGMAV1MTBGMQV1MTBGMgV1MTBGMwV1MTBGNAV1MTBGNQV1MTBGNgV1MTBGQgd1bmkxRDAxB3VuaTFEMDgHdW5pMUQwOQd1bmkxRDBFB3VuaTFEMTEHdW5pMUQxMgd1bmkxRDEzB3VuaTFEMTQHdW5pMUQxNgd1bmkxRDE3B3VuaTFEMTgHdW5pMUQxOQd1bmkxRDFBB3VuaTFEMUQHdW5pMUQxRQd1bmkxRDFGB3VuaTFENDMHdW5pMUQ0NAd1bmkxRDQ1B3VuaTFENDYHdW5pMUQ0Nwd1bmkxRDQ4B3VuaTFENDkHdW5pMUQ0QQd1bmkxRDRCB3VuaTFENEMHdW5pMUQ0RAd1bmkxRDRFB3VuaTFENEYHdW5pMUQ1MAd1bmkxRDUxB3VuaTFENTIHdW5pMUQ1Mwd1bmkxRDU0B3VuaTFENTUHdW5pMUQ1Ngd1bmkxRDU3B3VuaTFENTgHdW5pMUQ1OQd1bmkxRDVBB3VuaTFENUIHdW5pMUQ1RAd1bmkxRDVFB3VuaTFENUYHdW5pMUQ2MQd1bmkxRDYyB3VuaTFENjMHdW5pMUQ2NAd1bmkxRDY1B3VuaTFENjYHdW5pMUQ2Nwd1bmkxRDY4B3VuaTFENkEHdW5pMUQ2Qgd1bmkxRDZDB3VuaTFENkQHdW5pMUQ2RQd1bmkxRDcxB3VuaTFENzIHdW5pMUQ3Mwd1bmkxRDc1B3VuaTFEN0ESdW5pMURCRi5zbWFsbHRoZXRhB3VuaTFEQzAHdW5pMURDMQd1bmkxREM0B3VuaTFEQzUHdW5pMURDNgd1bmkxREM3B3VuaTFEQzgHdW5pMURDOQd1bmkxRENBCkFyaW5nYmVsb3cKYXJpbmdiZWxvdwpCZG90YWNjZW50CmJkb3RhY2NlbnQJQmRvdGJlbG93CWJkb3RiZWxvdwpCbGluZWJlbG93CmJsaW5lYmVsb3cNQ2NlZGlsbGFhY3V0ZQ1jY2VkaWxsYWFjdXRlCkRkb3RhY2NlbnQKZGRvdGFjY2VudAlEZG90YmVsb3cJZGRvdGJlbG93CkRsaW5lYmVsb3cKZGxpbmViZWxvdwhEY2VkaWxsYQhkY2VkaWxsYRBEY2lyY3VtZmxleGJlbG93EGRjaXJjdW1mbGV4YmVsb3cMRW1hY3JvbmdyYXZlDGVtYWNyb25ncmF2ZQxFbWFjcm9uYWN1dGUMZW1hY3JvbmFjdXRlEEVjaXJjdW1mbGV4YmVsb3cQZWNpcmN1bWZsZXhiZWxvdwtFdGlsZGViZWxvdwtldGlsZGViZWxvdw1FY2VkaWxsYWJyZXZlDWVjZWRpbGxhYnJldmUKRmRvdGFjY2VudApmZG90YWNjZW50B0dtYWNyb24HZ21hY3JvbgpIZG90YWNjZW50Cmhkb3RhY2NlbnQJSGRvdGJlbG93CWhkb3RiZWxvdwlIZGllcmVzaXMJaGRpZXJlc2lzCEhjZWRpbGxhCGhjZWRpbGxhC0hicmV2ZWJlbG93C2hicmV2ZWJlbG93C0l0aWxkZWJlbG93C2l0aWxkZWJlbG93DklkaWVyZXNpc2FjdXRlDmlkaWVyZXNpc2FjdXRlBkthY3V0ZQZrYWN1dGUJS2RvdGJlbG93CWtkb3RiZWxvdwpLbGluZWJlbG93CmtsaW5lYmVsb3cJTGRvdGJlbG93CWxkb3RiZWxvdw9MZG90YmVsb3dtYWNyb24PbGRvdGJlbG93bWFjcm9uCkxsaW5lYmVsb3cKbGxpbmViZWxvdxBMY2lyY3VtZmxleGJlbG93EGxjaXJjdW1mbGV4YmVsb3cGTWFjdXRlBm1hY3V0ZQpNZG90YWNjZW50Cm1kb3RhY2NlbnQJTWRvdGJlbG93CW1kb3RiZWxvdwpOZG90YWNjZW50Cm5kb3RhY2NlbnQJTmRvdGJlbG93CW5kb3RiZWxvdwpObGluZWJlbG93Cm5saW5lYmVsb3cQTmNpcmN1bWZsZXhiZWxvdxBuY2lyY3VtZmxleGJlbG93C090aWxkZWFjdXRlC290aWxkZWFjdXRlDk90aWxkZWRpZXJlc2lzDm90aWxkZWRpZXJlc2lzDE9tYWNyb25ncmF2ZQxvbWFjcm9uZ3JhdmUMT21hY3JvbmFjdXRlDG9tYWNyb25hY3V0ZQZQYWN1dGUGcGFjdXRlClBkb3RhY2NlbnQKcGRvdGFjY2VudApSZG90YWNjZW50CnJkb3RhY2NlbnQJUmRvdGJlbG93CXJkb3RiZWxvdw9SZG90YmVsb3dtYWNyb24PcmRvdGJlbG93bWFjcm9uClJsaW5lYmVsb3cKcmxpbmViZWxvdwpTZG90YWNjZW50CnNkb3RhY2NlbnQJU2RvdGJlbG93CXNkb3RiZWxvdw9TYWN1dGVkb3RhY2NlbnQPc2FjdXRlZG90YWNjZW50D1NjYXJvbmRvdGFjY2VudA9zY2Fyb25kb3RhY2NlbnQSU2RvdGJlbG93ZG90YWNjZW50EnNkb3RiZWxvd2RvdGFjY2VudApUZG90YWNjZW50CnRkb3RhY2NlbnQJVGRvdGJlbG93CXRkb3RiZWxvdwpUbGluZWJlbG93CnRsaW5lYmVsb3cQVGNpcmN1bWZsZXhiZWxvdxB0Y2lyY3VtZmxleGJlbG93DlVkaWVyZXNpc2JlbG93DnVkaWVyZXNpc2JlbG93C1V0aWxkZWJlbG93C3V0aWxkZWJlbG93EFVjaXJjdW1mbGV4YmVsb3cQdWNpcmN1bWZsZXhiZWxvdwtVdGlsZGVhY3V0ZQt1dGlsZGVhY3V0ZQ9VbWFjcm9uZGllcmVzaXMPdW1hY3JvbmRpZXJlc2lzBlZ0aWxkZQZ2dGlsZGUJVmRvdGJlbG93CXZkb3RiZWxvdwZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwpXZG90YWNjZW50Cndkb3RhY2NlbnQJV2RvdGJlbG93CXdkb3RiZWxvdwpYZG90YWNjZW50Cnhkb3RhY2NlbnQJWGRpZXJlc2lzCXhkaWVyZXNpcwpZZG90YWNjZW50Cnlkb3RhY2NlbnQLWmNpcmN1bWZsZXgLemNpcmN1bWZsZXgJWmRvdGJlbG93CXpkb3RiZWxvdwpabGluZWJlbG93CnpsaW5lYmVsb3cKaGxpbmViZWxvdwl0ZGllcmVzaXMFd3JpbmcFeXJpbmcOYXJpZ2h0aGFsZnJpbmcOc2xvbmdkb3RhY2NlbnQJQWRvdGJlbG93CWFkb3RiZWxvdwpBaG9va2Fib3ZlCmFob29rYWJvdmUQQWNpcmN1bWZsZXhhY3V0ZRBhY2lyY3VtZmxleGFjdXRlEEFjaXJjdW1mbGV4Z3JhdmUQYWNpcmN1bWZsZXhncmF2ZRRBY2lyY3VtZmxleGhvb2thYm92ZRRhY2lyY3VtZmxleGhvb2thYm92ZRBBY2lyY3VtZmxleHRpbGRlEGFjaXJjdW1mbGV4dGlsZGUTQWNpcmN1bWZsZXhkb3RiZWxvdxNhY2lyY3VtZmxleGRvdGJlbG93C0FicmV2ZWFjdXRlC2FicmV2ZWFjdXRlC0FicmV2ZWdyYXZlC2FicmV2ZWdyYXZlD0FicmV2ZWhvb2thYm92ZQ9hYnJldmVob29rYWJvdmULQWJyZXZldGlsZGULYWJyZXZldGlsZGUOQWJyZXZlZG90YmVsb3cOYWJyZXZlZG90YmVsb3cJRWRvdGJlbG93CWVkb3RiZWxvdwpFaG9va2Fib3ZlCmVob29rYWJvdmUGRXRpbGRlBmV0aWxkZRBFY2lyY3VtZmxleGFjdXRlEGVjaXJjdW1mbGV4YWN1dGUQRWNpcmN1bWZsZXhncmF2ZRBlY2lyY3VtZmxleGdyYXZlFEVjaXJjdW1mbGV4aG9va2Fib3ZlFGVjaXJjdW1mbGV4aG9va2Fib3ZlEEVjaXJjdW1mbGV4dGlsZGUQZWNpcmN1bWZsZXh0aWxkZRNFY2lyY3VtZmxleGRvdGJlbG93E2VjaXJjdW1mbGV4ZG90YmVsb3cKSWhvb2thYm92ZQppaG9va2Fib3ZlCUlkb3RiZWxvdwlpZG90YmVsb3cJT2RvdGJlbG93CW9kb3RiZWxvdwpPaG9va2Fib3ZlCm9ob29rYWJvdmUQT2NpcmN1bWZsZXhhY3V0ZRBvY2lyY3VtZmxleGFjdXRlEE9jaXJjdW1mbGV4Z3JhdmUQb2NpcmN1bWZsZXhncmF2ZRRPY2lyY3VtZmxleGhvb2thYm92ZRRvY2lyY3VtZmxleGhvb2thYm92ZRBPY2lyY3VtZmxleHRpbGRlEG9jaXJjdW1mbGV4dGlsZGUTT2NpcmN1bWZsZXhkb3RiZWxvdxNvY2lyY3VtZmxleGRvdGJlbG93Ck9ob3JuYWN1dGUKb2hvcm5hY3V0ZQpPaG9ybmdyYXZlCm9ob3JuZ3JhdmUOT2hvcm5ob29rYWJvdmUOb2hvcm5ob29rYWJvdmUKT2hvcm50aWxkZQpvaG9ybnRpbGRlDU9ob3JuZG90YmVsb3cNb2hvcm5kb3RiZWxvdwlVZG90YmVsb3cJdWRvdGJlbG93ClVob29rYWJvdmUKdWhvb2thYm92ZQpVaG9ybmFjdXRlCnVob3JuYWN1dGUKVWhvcm5ncmF2ZQp1aG9ybmdyYXZlDlVob3JuaG9va2Fib3ZlDnVob3JuaG9va2Fib3ZlClVob3JudGlsZGUKdWhvcm50aWxkZQ1VaG9ybmRvdGJlbG93DXVob3JuZG90YmVsb3cGWWdyYXZlBnlncmF2ZQlZZG90YmVsb3cJeWRvdGJlbG93Cllob29rYWJvdmUKeWhvb2thYm92ZQZZdGlsZGUGeXRpbGRlB3VuaTFGMDAHdW5pMUYwMQd1bmkxRjAyB3VuaTFGMDMHdW5pMUYwNAd1bmkxRjA1B3VuaTFGMDYHdW5pMUYwNwd1bmkxRjA4B3VuaTFGMDkHdW5pMUYwQQd1bmkxRjBCB3VuaTFGMEMHdW5pMUYwRAd1bmkxRjBFB3VuaTFGMEYHdW5pMUYxMAd1bmkxRjExB3VuaTFGMTIHdW5pMUYxMwd1bmkxRjE0B3VuaTFGMTUHdW5pMUYxOAd1bmkxRjE5B3VuaTFGMUEHdW5pMUYxQgd1bmkxRjFDB3VuaTFGMUQHdW5pMUYyMAd1bmkxRjIxB3VuaTFGMjIHdW5pMUYyMwd1bmkxRjI0B3VuaTFGMjUHdW5pMUYyNgd1bmkxRjI3B3VuaTFGMjgHdW5pMUYyOQd1bmkxRjJBB3VuaTFGMkIHdW5pMUYyQwd1bmkxRjJEB3VuaTFGMkUHdW5pMUYyRgd1bmkxRjMwB3VuaTFGMzEHdW5pMUYzMgd1bmkxRjMzB3VuaTFGMzQHdW5pMUYzNQd1bmkxRjM2B3VuaTFGMzcHdW5pMUYzOAd1bmkxRjM5B3VuaTFGM0EHdW5pMUYzQgd1bmkxRjNDB3VuaTFGM0QHdW5pMUYzRQd1bmkxRjNGB3VuaTFGNDAHdW5pMUY0MQd1bmkxRjQyB3VuaTFGNDMHdW5pMUY0NAd1bmkxRjQ1B3VuaTFGNDgHdW5pMUY0OQd1bmkxRjRBB3VuaTFGNEIHdW5pMUY0Qwd1bmkxRjREB3VuaTFGNTAHdW5pMUY1MQd1bmkxRjUyB3VuaTFGNTMHdW5pMUY1NAd1bmkxRjU1B3VuaTFGNTYHdW5pMUY1Nwd1bmkxRjU5B3VuaTFGNUIHdW5pMUY1RAd1bmkxRjVGB3VuaTFGNjAHdW5pMUY2MQd1bmkxRjYyB3VuaTFGNjMHdW5pMUY2NAd1bmkxRjY1B3VuaTFGNjYHdW5pMUY2Nwd1bmkxRjY4B3VuaTFGNjkHdW5pMUY2QQd1bmkxRjZCB3VuaTFGNkMHdW5pMUY2RAd1bmkxRjZFB3VuaTFGNkYHdW5pMUY3MAd1bmkxRjcxB3VuaTFGNzIHdW5pMUY3Mwd1bmkxRjc0B3VuaTFGNzUHdW5pMUY3Ngd1bmkxRjc3B3VuaTFGNzgHdW5pMUY3OQd1bmkxRjdBB3VuaTFGN0IHdW5pMUY3Qwd1bmkxRjdEB3VuaTFGODAHdW5pMUY4MQd1bmkxRjgyB3VuaTFGODMHdW5pMUY4NAd1bmkxRjg1B3VuaTFGODYHdW5pMUY4Nwd1bmkxRjg4B3VuaTFGODkHdW5pMUY4QQd1bmkxRjhCB3VuaTFGOEMHdW5pMUY4RAd1bmkxRjhFB3VuaTFGOEYHdW5pMUY5MAd1bmkxRjkxB3VuaTFGOTIHdW5pMUY5Mwd1bmkxRjk0B3VuaTFGOTUHdW5pMUY5Ngd1bmkxRjk3B3VuaTFGOTgHdW5pMUY5OQd1bmkxRjlBB3VuaTFGOUIHdW5pMUY5Qwd1bmkxRjlEB3VuaTFGOUUHdW5pMUY5Rgd1bmkxRkEwB3VuaTFGQTEHdW5pMUZBMgd1bmkxRkEzB3VuaTFGQTQHdW5pMUZBNQd1bmkxRkE2B3VuaTFGQTcHdW5pMUZBOAd1bmkxRkE5B3VuaTFGQUEHdW5pMUZBQgd1bmkxRkFDB3VuaTFGQUQHdW5pMUZBRQd1bmkxRkFGB3VuaTFGQjAHdW5pMUZCMQd1bmkxRkIyB3VuaTFGQjMHdW5pMUZCNAd1bmkxRkI2B3VuaTFGQjcHdW5pMUZCOAd1bmkxRkI5B3VuaTFGQkEHdW5pMUZCQgd1bmkxRkJDB3VuaTFGQkQHdW5pMUZCRQd1bmkxRkJGB3VuaTFGQzAHdW5pMUZDMQd1bmkxRkMyB3VuaTFGQzMHdW5pMUZDNAd1bmkxRkM2B3VuaTFGQzcHdW5pMUZDOAd1bmkxRkM5B3VuaTFGQ0EHdW5pMUZDQgd1bmkxRkNDB3VuaTFGQ0QHdW5pMUZDRQd1bmkxRkNGB3VuaTFGRDAHdW5pMUZEMQd1bmkxRkQyB3VuaTFGRDMHdW5pMUZENgd1bmkxRkQ3B3VuaTFGRDgHdW5pMUZEOQd1bmkxRkRBB3VuaTFGREIHdW5pMUZERAd1bmkxRkRFB3VuaTFGREYHdW5pMUZFMAd1bmkxRkUxB3VuaTFGRTIHdW5pMUZFMwd1bmkxRkU0B3VuaTFGRTUHdW5pMUZFNgd1bmkxRkU3B3VuaTFGRTgHdW5pMUZFOQd1bmkxRkVBB3VuaTFGRUIHdW5pMUZFQwd1bmkxRkVEB3VuaTFGRUUHdW5pMUZFRgd1bmkxRkYyB3VuaTFGRjMHdW5pMUZGNAd1bmkxRkY2B3VuaTFGRjcHdW5pMUZGOAd1bmkxRkY5B3VuaTFGRkEHdW5pMUZGQgd1bmkxRkZDB3VuaTFGRkQHdW5pMUZGRQd1bmkyMDAwB3VuaTIwMDEHZW5zcGFjZQdlbXNwYWNlB3VuaTIwMDQHdW5pMjAwNQd1bmkyMDA2B3VuaTIwMDcHdW5pMjAwOAd1bmkyMDA5B3VuaTIwMEEOemVyb3dpZHRoc3BhY2USemVyb3dpZHRobm9uam9pbmVyD3plcm93aWR0aGpvaW5lcg9sZWZ0dG9yaWdodG1hcmsPcmlnaHR0b2xlZnRtYXJrCWh5cGhlbnR3bxFub25icmVha2luZ2h5cGhlbgpmaWd1cmVkYXNoDWhvcml6b250YWxiYXIOZGJsdmVydGljYWxiYXIKZGJsbG93bGluZRFxdW90ZWxlZnRyZXZlcnNlZBJxdW90ZWRibGxlZnRhbHRvbmUHdW5pMjAyMwxvbmVkb3RsZWFkZXIMdHdvZG90bGVhZGVyB3VuaTIwMjcHdW5pMjAyOAd1bmkyMDI5B3VuaTIwMkEHdW5pMjAyQglhZmlpNjE1NzMJYWZpaTYxNTc0CWFmaWk2MTU3NQd1bmkyMDJGB3VuaTIwMzEGbWludXRlBnNlY29uZAtwcmltZXRyaXBsZQ1wcmltZXJldmVyc2VkDnNlY29uZHJldmVyc2VkB3VuaTIwMzcHdW5pMjAzOA1yZWZlcmVuY2VtYXJrCWV4Y2xhbWRibAtpbnRlcnJvYmFuZwhvdmVybGluZQd1bmkyMDNGB3VuaTIwNDALY2FyZXRpbnNlcnQHdW5pMjA0Mgd1bmkyMDQzB3VuaTIwNDUHdW5pMjA0Ngd1bmkyMDQ3B3VuaTIwNDgHdW5pMjA0OQp0aXJvbmlhbmV0D3JldmVyc2VkcGlsY3Jvdwd1bmkyMDRDB3VuaTIwNEQHdW5pMjA0RQd1bmkyMDRGB3VuaTIwNTAHdW5pMjA1MQd1bmkyMDUyB3VuaTIwNTMHdW5pMjA1NAd1bmkyMDU1B3VuaTIwNTYHdW5pMjA1Nwd1bmkyMDU4B3VuaTIwNTkHdW5pMjA1QQd1bmkyMDVCB3VuaTIwNUMHdW5pMjA1RAd1bmkyMDVFB3VuaTIwNUYHdW5pMjA2MAd1bmkyMDYxB3VuaTIwNjIHdW5pMjA2Mwd1bmkyMDZBB3VuaTIwNkIHdW5pMjA2Qwd1bmkyMDZEB3VuaTIwNkUHdW5pMjA2Rgd1bmkyMDcwB3VuaTIwNzEHdW5pMjA3NAd1bmkyMDc1B3VuaTIwNzYHdW5pMjA3Nwd1bmkyMDc4B3VuaTIwNzkHdW5pMjA3QQd1bmkyMDdCB3VuaTIwN0MHdW5pMjA3RAd1bmkyMDdFB3VuaTIwN0YHdW5pMjA4MAd1bmkyMDgxB3VuaTIwODIHdW5pMjA4Mwd1bmkyMDg0B3VuaTIwODUHdW5pMjA4Ngd1bmkyMDg3B3VuaTIwODgHdW5pMjA4OQd1bmkyMDhBB3VuaTIwOEIHdW5pMjA4Qwd1bmkyMDhEB3VuaTIwOEUHdW5pMjA5MAd1bmkyMDkxB3VuaTIwOTIHdW5pMjA5Mwd1bmkyMDk0B3VuaTIwQTAJY29sb25zaWduCGNydXplaXJvBGxpcmEHdW5pMjBBNQd1bmkyMEE2B3VuaTIwQTcHdW5pMjBBOAN3b24EZG9uZwRFdXJvB3VuaTIwQUQHdW5pMjBBRQd1bmkyMEIxB3VuaTIwQjIHdW5pMjBCMwdIcnl2bmlhB3VuaTIwQjUFdTIwQjgZdW5pMjBCOS5JTkRJQU5fUlVQRUVfU0lHTgV1MjBCQQd1bmkyMTAwB3VuaTIxMDEHdW5pMjEwMgpjZW50aWdyYWRlB3VuaTIxMDQGY2FyZW9mB3VuaTIxMDYKZmFocmVuaGVpdAd1bmkyMTBEBm51bWVybwd1bmkyMTE3B3VuaTIxMTkHdW5pMjExQQd1bmkyMTIwB3VuaTIxMjELb2htaW52ZXJ0ZWQHdW5pMjEyOQZrZWx2aW4IYW5nc3Ryb20HRnR1cm5lZAd1bmkyMTNBB3VuaTIxM0IHdW5pMjE0MQd1bmkyMTQyB3VuaTIxNDMHdW5pMjE0NAd1bmkyMTRCB3VuaTIxNEQHdW5pMjE0RQd1bmkyMTVGCE9uZXJvbWFuCFR3b3JvbWFuClRocmVlcm9tYW4JRm91cnJvbWFuCUZpdmVyb21hbghTaXhyb21hbgpTZXZlbnJvbWFuCkVpZ2h0cm9tYW4JTmluZXJvbWFuCFRlbnJvbWFuC0VsZXZlbnJvbWFuC1R3ZWx2ZXJvbWFuB3VuaTIxNkMHdW5pMjE2RAd1bmkyMTZFB3VuaTIxNkYIb25lcm9tYW4IdHdvcm9tYW4KdGhyZWVyb21hbglmb3Vycm9tYW4JZml2ZXJvbWFuCHNpeHJvbWFuCnNldmVucm9tYW4KZWlnaHRyb21hbgluaW5lcm9tYW4IdGVucm9tYW4LZWxldmVucm9tYW4LdHdlbHZlcm9tYW4HdW5pMjE3Qwd1bmkyMTdEB3VuaTIxN0UNdGhvdXNhbmRyb21hbgd1bmkyMTgzB3VuaTIxODQIZ3JhZGllbnQHdW5pMjIxMBV1bmkyM0NFLlJldHVybi1TeW1ib2wUdW5pMjQyMy5zcGFjZW9wZW5ib3gHdW5pMjUwMAd1bmkyNTAxB3VuaTI1MDIHdW5pMjUwMwd1bmkyNTBDB3VuaTI1MEYHdW5pMjUxMAd1bmkyNTEzB3VuaTI1MTQHdW5pMjUxNwd1bmkyNTE4B3VuaTI1MUIFYmxvY2sFdTI1Q0YHdW5pMjYzORB3aGl0ZXNtaWxpbmdmYWNlEGJsYWNrc21pbGluZ2ZhY2UHdW5pMjY2QQd1bmkyQzYwB3VuaTJDNjEHdW5pMkM2Mgd1bmkyQzYzB3VuaTJDNjQHdW5pMkM2NQd1bmkyQzY2B3VuaTJDNjcHdW5pMkM2OAd1bmkyQzY5B3VuaTJDNkEHdW5pMkM2Qgd1bmkyQzZDB3VuaTJDNzUHdW5pMkM3Ngd1bmkyRTAwB3VuaTJFMDEHdW5pMkUwMgd1bmkyRTAzB3VuaTJFMDQHdW5pMkUwNQd1bmkyRTA2B3VuaTJFMDcHdW5pMkUwOAd1bmkyRTA5B3VuaTJFMEEHdW5pMkUwQgd1bmkyRTBDB3VuaTJFMEQHdW5pMkUwRQd1bmkyRTBGB3VuaTJFMTAHdW5pMkUxMQd1bmkyRTEyB3VuaTJFMTMHdW5pMkUxNAd1bmkyRTE1B3VuaTJFMTYHdW5pMkUxNwd1bmkyRTFDB3VuaTJFMUQHdW5pQTcwMAd1bmlBNzAxB3VuaUE3MDIHdW5pQTcwMwd1bmlBNzA0B3VuaUE3MDUHdW5pQTcwNgd1bmlBNzA3B3VuaUE3MDgHdW5pQTcwOQd1bmlBNzBBB3VuaUE3MEIHdW5pQTcwQwd1bmlBNzBEB3VuaUE3MEUHdW5pQTcwRgd1bmlBNzEwB3VuaUE3MTEHdW5pQTcxMgd1bmlBNzEzB3VuaUE3MTQHdW5pQTcxNQd1bmlBNzE2B3VuaUE3MTcHdW5pQTcxOAd1bmlBNzE5B3VuaUE3MUEHdW5pQTcyMAd1bmlBNzIxCHplcm8uMDAxB29uZS4wMDEHdHdvLjAwMQl0aHJlZS4wMDEIZm91ci4wMDEIZml2ZS4wMDEHc2l4LjAwMQlzZXZlbi4wMDEJZWlnaHQuMDAxCG5pbmUuMDAxHXVuaUZGQTEuaGFsZndpZHRoaGFuZ3Vsa2l5ZW9rHHVuaUZGQTQuaGFsZndpZHRoaGFuZ3VsbmlldW4ddW5pRkZBNy5oYWxmd2lkdGhoYW5ndWx0aWtldXQMb2xkX25vdGVxdWFsD29sZF9wYXJ0aWFsZGlmZg1vbGRfc3VtbWF0aW9uDG9sZF9pbnRlZ3JhbAtvbGRfcmFkaWNhbA9vbGRfYXBwcm94ZXF1YWwScXVvdGVzaW5nbGJhc2Uub2xkEHF1b3RlZGJsYmFzZS5vbGQIR2NlZGlsbGEIZ2NlZGlsbGEIS2NlZGlsbGEIa2NlZGlsbGEITGNlZGlsbGEIbGNlZGlsbGEITmNlZGlsbGEIbmNlZGlsbGEIUmNlZGlsbGEIcmNlZGlsbGEWcXVvdGVkYmxsZWZ0YWx0b25lLm9sZBVxdW90ZWxlZnRyZXZlcnNlZC5vbGQPbm90ZXF1YWwubWlycm9yEnBhcnRpYWxkaWZmLm1pcnJvchBzdW1tYXRpb24ubWlycm9yD2ludGVncmFsLm1pcnJvcg5yYWRpY2FsLm1pcnJvchJhcHByb3hlcXVhbC5taXJyb3ITRV9jaXJjdW1mbGV4X21hY3JvbhNlX2NpcmN1bWZsZXhfbWFjcm9uEkVfY2lyY3VtZmxleF9jYXJvbhJlX2NpcmN1bWZsZXhfY2Fyb24GTWdyYXZlBm1ncmF2ZQZSYnJldmUGcmJyZXZlEWVjaXJjdW1mbGV4bWFjcm9uEGVjaXJjdW1mbGV4Y2Fyb24MQW1hY3JvbmdyYXZlDGFtYWNyb25ncmF2ZQxhYWN1dGVvZ29uZWsSRXZlcnRpY2FsbGluZWJlbG93EmV2ZXJ0aWNhbGxpbmViZWxvdxdFdmVydGljYWxsaW5lYmVsb3dncmF2ZRdldmVydGljYWxsaW5lYmVsb3dncmF2ZRdFdmVydGljYWxsaW5lYmVsb3dhY3V0ZRdldmVydGljYWxsaW5lYmVsb3dhY3V0ZQxJbWFjcm9uZ3JhdmUMaW1hY3JvbmdyYXZlDmlkb3RhYm92ZWFjdXRlEk92ZXJ0aWNhbGxpbmViZWxvdxJvdmVydGljYWxsaW5lYmVsb3cXT3ZlcnRpY2FsbGluZWJlbG93Z3JhdmUXb3ZlcnRpY2FsbGluZWJlbG93Z3JhdmUXT3ZlcnRpY2FsbGluZWJlbG93YWN1dGUXb3ZlcnRpY2FsbGluZWJlbG93YWN1dGUSU3ZlcnRpY2FsbGluZWJlbG93EnN2ZXJ0aWNhbGxpbmViZWxvdwxVbWFjcm9uZ3JhdmUMdW1hY3JvbmdyYXZlCXhkb3RiZWxvdwpVaG9ybmJyZXZlCnVob3JuYnJldmUMbmd0aWxkZWFib3ZlB3VuaTIxMjQLb2xkX3VuaTIxNDAHdW5pMjEzNA51bmkyMTQwLm1pcnJvcgd1bmkyMTQwFGxhbWJkYXN0cm9rZWRvdGFib3ZlEGFscGhhbWFjcm9udmFyaWEPYWxwaGFtYWNyb25veGlhEGFscGhhbWFjcm9ucHNpbGkVYWxwaGFtYWNyb25wc2lsaXZhcmlhFGFscGhhbWFjcm9ucHNpbGlveGlhEGFscGhhbWFjcm9uZGFzaWEVYWxwaGFtYWNyb25kYXNpYXZhcmlhFGFscGhhbWFjcm9uZGFzaWFveGlhD2FscGhhYnJldmV2YXJpYQ5hbHBoYWJyZXZlb3hpYQ9hbHBoYWJyZXZlcHNpbGkUYWxwaGFicmV2ZXBzaWxpdmFyaWETYWxwaGFicmV2ZXBzaWxpb3hpYQ9hbHBoYWJyZXZlZGFzaWEUYWxwaGFicmV2ZWRhc2lhdmFyaWETYWxwaGFicmV2ZWRhc2lhb3hpYQ9pb3RhbWFjcm9udmFyaWEOaW90YW1hY3Jvbm94aWEXaW90YW1hY3JvbmRpYWx5dGlrYW94aWEPaW90YW1hY3JvbnBzaWxpFGlvdGFtYWNyb25wc2lsaXZhcmlhE2lvdGFtYWNyb25wc2lsaW94aWEPaW90YW1hY3JvbmRhc2lhFGlvdGFtYWNyb25kYXNpYXZhcmlhE2lvdGFtYWNyb25kYXNpYW94aWEOaW90YWJyZXZldmFyaWENaW90YWJyZXZlb3hpYRZpb3RhYnJldmVkaWFseXRpa2FveGlhDmlvdGFicmV2ZXBzaWxpE2lvdGFicmV2ZXBzaWxpdmFyaWESaW90YWJyZXZlcHNpbGlveGlhDmlvdGFicmV2ZWRhc2lhE2lvdGFicmV2ZWRhc2lhdmFyaWESaW90YWJyZXZlZGFzaWFveGlhEnVwc2lsb25tYWNyb252YXJpYRF1cHNpbG9ubWFjcm9ub3hpYRp1cHNpbG9ubWFjcm9uZGlhbHl0aWthb3hpYRJ1cHNpbG9ubWFjcm9ucHNpbGkXdXBzaWxvbm1hY3JvbnBzaWxpdmFyaWEWdXBzaWxvbm1hY3JvbnBzaWxpb3hpYRJ1cHNpbG9ubWFjcm9uZGFzaWEXdXBzaWxvbm1hY3JvbmRhc2lhdmFyaWEWdXBzaWxvbm1hY3JvbmRhc2lhb3hpYRF1cHNpbG9uYnJldmV2YXJpYRB1cHNpbG9uYnJldmVveGlhGXVwc2lsb25icmV2ZWRpYWx5dGlrYW94aWERdXBzaWxvbmJyZXZlcHNpbGkWdXBzaWxvbmJyZXZlcHNpbGl2YXJpYRV1cHNpbG9uYnJldmVwc2lsaW94aWERdXBzaWxvbmJyZXZlZGFzaWEWdXBzaWxvbmJyZXZlZGFzaWF2YXJpYRV1cHNpbG9uYnJldmVkYXNpYW94aWEQQWxwaGFtYWNyb252YXJpYQ9BbHBoYW1hY3Jvbm94aWEQQWxwaGFtYWNyb25wc2lsaRVBbHBoYW1hY3JvbnBzaWxpdmFyaWEUQWxwaGFtYWNyb25wc2lsaW94aWEQQWxwaGFtYWNyb25kYXNpYRVBbHBoYW1hY3JvbmRhc2lhdmFyaWEUQWxwaGFtYWNyb25kYXNpYW94aWEPQWxwaGFicmV2ZXZhcmlhDkFscGhhYnJldmVveGlhD0FscGhhYnJldmVwc2lsaRRBbHBoYWJyZXZlcHNpbGl2YXJpYRNBbHBoYWJyZXZlcHNpbGlveGlhD0FscGhhYnJldmVkYXNpYRRBbHBoYWJyZXZlZGFzaWF2YXJpYRNBbHBoYWJyZXZlZGFzaWFveGlhD0lvdGFtYWNyb252YXJpYQ5Jb3RhbWFjcm9ub3hpYRdJb3RhbWFjcm9uZGlhbHl0aWthb3hpYQ9Jb3RhbWFjcm9ucHNpbGkUSW90YW1hY3JvbnBzaWxpdmFyaWETSW90YW1hY3JvbnBzaWxpb3hpYQ9Jb3RhbWFjcm9uZGFzaWEUSW90YW1hY3JvbmRhc2lhdmFyaWETSW90YW1hY3JvbmRhc2lhb3hpYQ5Jb3RhYnJldmV2YXJpYQ1Jb3RhYnJldmVveGlhFklvdGFicmV2ZWRpYWx5dGlrYW94aWEOSW90YWJyZXZlcHNpbGkTSW90YWJyZXZlcHNpbGl2YXJpYRJJb3RhYnJldmVwc2lsaW94aWEOSW90YWJyZXZlZGFzaWETSW90YWJyZXZlZGFzaWF2YXJpYRJJb3RhYnJldmVkYXNpYW94aWESVXBzaWxvbm1hY3JvbnZhcmlhEVVwc2lsb25tYWNyb25veGlhGlVwc2lsb25tYWNyb25kaWFseXRpa2FveGlhElVwc2lsb25tYWNyb25wc2lsaRdVcHNpbG9ubWFjcm9ucHNpbGl2YXJpYRZVcHNpbG9ubWFjcm9ucHNpbGlveGlhElVwc2lsb25tYWNyb25kYXNpYRdVcHNpbG9ubWFjcm9uZGFzaWF2YXJpYRZVcHNpbG9ubWFjcm9uZGFzaWFveGlhEVVwc2lsb25icmV2ZXZhcmlhEFVwc2lsb25icmV2ZW94aWEZVXBzaWxvbmJyZXZlZGlhbHl0aWthb3hpYRFVcHNpbG9uYnJldmVwc2lsaRZVcHNpbG9uYnJldmVwc2lsaXZhcmlhFVVwc2lsb25icmV2ZXBzaWxpb3hpYRFVcHNpbG9uYnJldmVkYXNpYRZVcHNpbG9uYnJldmVkYXNpYXZhcmlhFVVwc2lsb25icmV2ZWRhc2lhb3hpYQd1bmkyMTFEB3VuaTIxMTUMVXBzaWxvbnBzaWxpEVVwc2lsb25wc2lsaXZhcmlhEFVwc2lsb25wc2lsaW94aWELQWxwaGFtYWNyb24KQWxwaGFicmV2ZQpJb3RhbWFjcm9uCUlvdGFicmV2ZQ1VcHNpbG9ubWFjcm9uDFVwc2lsb25icmV2ZQZ1MUQxNjAVcXVvdGVzaW5nbGJhc2UubWlycm9yE3F1b3RlZGJsYmFzZS5taXJyb3IYcXVvdGVsZWZ0cmV2ZXJzZWQubWlycm9yGXF1b3RlZGJsbGVmdGFsdG9uZS5taXJyb3IAAAEAAf//AA8AAQAAAAwAAAESAAAAAgArAAEArQABAK4AsQACALIA6gABAOsA6wACAOwA7AABAO0A7QACAO4A7gABAO8A7wACAPAA8AABAPEA8QACAPIA+wABAPwA/AACAP0A/QABAP4A/gACAP8A/wABAQABAAACAQEBdQABAXYBdgACAXcBrQABAa4BrgACAa8BrwABAbABsAACAbEEuwABBLwEvAACBL0EyQABBMoEygACBMsEywABBMwEzAACBM0E0wABBNQE1AACBNUE1QABBNYE1gACBNcE1wABBNgE2AACBNkE2QABBNoE2gACBNsFYQABBWIFYgACBWMFYwABBWQFZAACBWUH0wABB9QH1QACB9YIlAABAAQAAAACAAAAAAABAAAACgAyAEwAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAQAEAAAAAP//AAIAAAABAAJsaWdhAA5ydGxhABQAAAABAAEAAAABAAAAAgAGAA4AAQAAAAEAEAAEAAAAAQCaAAIASgAiAAwACwAhAB8AQAA+AGAAXgB9AG0IGwa2BrUGwgbBBvIG8QcCBwEH7gfvB/EH8AfyB+0HbQdsB2sHYAdlB2kHZwdqAUMAAQAiAAsADAAfACEAPgBAAF4AYABtAH0BQwa1BrYGwQbCBvEG8gcBBwIHYAdlB2cHaQdqB2sHbAdtB+0H7gfvB/AH8QfyCBsAAQAaAAEACAACAAYADAfUAAIATAfVAAIATwABAAEASQABAAAACgAwAD4AAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAEAAAAAP//AAEAAAABa2VybgAIAAAAAQAAAAEABAACAAAAAQAIAAEB7AAEAAAAEgAuADwAQgBoAHYAlACmALgBAgE4AW4BrAG2AcQBzgHEAdgB3gADACT/kAA3/9wAPP/cAAEAFP9pAAkAA/+QADf/aQA5/2kAOv+1ADz/aQBZ/9wAWv/cAFz/3AaV/2kAAwAP/x0AEf8dACT/kAAHAAP/tQA3/2kAOf9pADr/aQA8/2kAXP+1BpX/kAAEAAP/3AAP/vgAEf74ACT/aQAEADf/3AA5/9wAOv/cADz/3AASAAP/3AAP/x0AEP+QABH/HQAd/x0AHv8dACT/aQAy/9wARP8dAEb/HQBI/x0ATP+1AFL/HQBV/7UAVv8dAFj/tQBa/5AAXP+QAA0AD/9EABD/kAAR/0QAHf+1AB7/tQAk/2kARP9pAEj/kABM/9wAUv+QAFX/tQBY/7UAXP+1AA0AD/+QABD/3AAR/5AAHf/cAB7/3AAk/7UARP+1AEj/3ABMAAAAUv/cAFX/3ABY/9wAXP/uAA8AA//cAA/++AAQ/0QAEf74AB3/kAAe/3sAJP9pAET/aQBI/0QATP+1AFL/RABT/2kAVP9EAFj/kABZ/5AAAgBJ/9wGlQAlAAMAD/+QABH/kAaVAEwAAgAP/2kAEf9pAAIAD/+QABH/kAABBpT/3AADAAP/tQBW/9wGlf/cAAEAEgADABQAJAApAC8AMwA1ADcAOQA6ADwASQBVAFkAWgBcBpQGlQAAAAAAAQAAAADSG2g8AAAAAF9NjwAAAAAA0c9Rww==';\r\n","export const HelveticaFontBold = 'AAEAAAAOAIAAAwBgT1MvMkTzavcAAADsAAAAVlBDTFRa0Qz1AAABRAAAADZjbWFwCq4S/wAAAXwAAATOY3Z0IHOweSsAAAZMAAACWGZwZ21SHLcwAAAIpAAADJJnbHlmbDUUowAAFTgAAR7LaGVhZMaCSJgAATQEAAAANmhoZWEOHAY7AAE0PAAAACRobXR4CeJCvAABNGAAAAYEbG9jYcdJCm0AATpkAAADBG1heHAGPwcRAAE9aAAAACBuYW1lStk82QABPYgAAAhjcG9zdP82AGYAAUXsAAAAIHByZXAnxSTTAAFGDAAAAf0AAQPUArwABQAOBZoFMwAAARsFmgUzAAAD0QBmAhIIBQILCAYDBwIEAgQAAAAAAAAAAAAAAAAAAAAASFAgIAAgACD7AgXT/lEBMweyAdMAAACTAAAAAAAAAAEAAEUAAOUCOQRAAABgBAW+AABIZWx2ZXRpY2EgICAgIEJk/////wAj//5oZWxyNjUDAEAAAAAAAAACAAEAAAAAABQAAwABAAACHgAGAgoAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYAAAAJUAlwCaAJwApACpAK8AtgC0ALgAvAC6AL4AwQDDAMIAxADFAMgAxwDJAMoAzADOAM0AzwDRANAA1QDUANYA1wFUAHUAYwBkAGgBVgB7ALIAcwBsAWAAeQBpAWwAmACrAWkAdgFtAW4AZgB6AWIBZQFkAUsBagBtAH8BYQC/ANMAiwBiAG8BaAFBAWsBYwBuAIABVwACAI0AkwCoAR4BHwFMAU0BUQFSAU4BTwDSAW8A2gE6AIEAZQFZAVoBfQF+AVUBZwFQAVMBWACRAJ0AjwCeAJsAoAChAKIAnwCmAKcAAAClAK0ArgCsAMYBQgAAAHQBRQFGAUcAfQFKAUgBQwAEArAAAACoAIAABgAoAH4AqACtALsAvAC9AL8AwADBAMIAwwDEAMYA3wDgAOEA4gDjAOQA5gDrAP8BAAEBAQIBAwEEAQcBDAEOARMBFgEbAR8BIgEjASsBMAExATcBPgFIAU0BUAFbAWEBYgFlAWsBcwF+AZICxwLJAt0DwCAUIBogHiAiICYgMCA6IEQgdCCsISIhJiICIgYiDyISIhUiGiIeIisiSCJgImUlyu/58AL7Av//AAAAIACgAKkArgC8AL0AvgDAAMEAwgDDAMQAxQDHAOAA4QDiAOMA5ADlAOcA7AEAAQEBAgEDAQQBBQEMAQ0BDwEWARcBHgEiASMBKgEuATEBNgE5AUEBTAFQAVEBXgFiAWMBagFuAXgBkgLGAskC2APAIBMgGCAcICAgJiAwIDkgRCB0IKwhIiEmIgIiBiIPIhEiFSIZIh4iKyJIImAiZCXK7+3wAfsB////4v/B/8P/xf/I/8r/zP/N/87/z//Q/9H/0v/T/9T/1f/W/9f/2P/Z/9r/2//c/93/3v/f/+D/4f/e/9//4f/g/+H/3//e/9//2f/X/5X/0v/R/8//zP/L/8z/yv/L/8z/yP/G/8L/r/58/nv+bf2L4TnhNuE14TThMeEo4SDhF+Do4LHgPuA732DfXd9V31TebN9O30vfP98j3wzfCdulEYMRfAZ+AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAHsgeyBlQFvgXmBa4FsgW+AAAFlQAABNYF6gRABF0CBwMEAcwEQARAA2MDNwJFAkUCLAAAAAAAAP/k/9r/2P5W/i3+LQJUASYFvgJ4BZIAAAAAAAAAAAEzAR8CggQpAQUBMwDvATMA/QEFAQUBMwEqAR8AtwEfASoBHADzARoAvwB9AQ4A7ADXAK8AywCAAOAAtwEzAP0BBQEFATMBKgEfALcBHwEqARwA8wEaAL8AfQEOAOwA1wCvAMsAgADgALcBMwEnAScBJwEnAR4BJwDUAMAAxQDIATMBJwEnAScBJwEeAScA1ADAAMUAyAEFAPAA+AD4AOgA8ADjAJsAoQCYAJQBBQDwAOwA7ADoAPAA4wCbAKEAmACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABMwJmASQBKgJmAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAEBLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEALLAVKy0sIEaKikmwgGJgLSywHkNYAbABK4qKsAErYSCwAFBYsAFgWWiwAysbISEhISEhIVktLCCwAFVYsAIlETggsABSWDUbIVk1GyEhISFZLSwgikJDELEAFIpwFLUBAQIAARTwEzxYLxshWRMUILEN/4pVI0NaILAOI0JYRSNFYLADRWAjWGVZsQQDJSMlSWQjIIqKZGFkuADBUFgjEDobISEhWRshISEhIVmzAgEBABYQiiA8YWUjEDxYILgBAFWwDkNcWliwARYQIMAbISCyAQECSSMWOFkjWC8bIVkbsAEWISEhWS0sS1NYswEEAAAVSBVJiopJYSCwAFBYsIBiaLEEABUjOLABFbIBAAQREzewARZZGyEhISFZLSxDI0MgiiCKIIogiiNJiopKIIojYbEEBSYjJi0sILj//1RYISGwABsgiiBGikZgikeKR2BhsCBjWS0sILABYCNFaUQtLEUjRiNhILAmYbAEJiNISC0sRSNGYCCwJmCwBCYjSEgtLEtTWEkgsIBSWLGAQIphZSNifWkYI0WMGyFFWSCKI0QjIUQbISFFREVEWS0ssBhLU1iwByuKirAHKyNhaWUgiiM4OBshISEhISFZLSxFsSkUKyNCIS0ssiANAUIjRLsAEAAQABQABEQqsSIhikQjRC0sS1EjS1JaLSywFEUjRLIUARRFYEQtLAEREiA5IC8AIz8tLLkAwABkRVFYI7BgU1ggRbBgi0QbIVkbISFZLSyxBAUlIyVJI2GwgGIgiliwAFIbsABQWVggiiM4ZTgbISEhWS0sIEMgsAFgiiNCLSyxSSorKxi5AAEB/4WNtgEDAAEAAgBEREQtLFgCGwNZCBESOQAtLLABYSCKQi0sISEhISEhCi0sAUlkY0QtLABJZGNELSwBSWRjiooASWSKY4xELSyxDAQlQoewGENYsCBLU1gMZCNki7hAAGIjRSCwYFBYIRsgsKBQWCGwgGMbabBAYWBZWRtFWbEdL4pEG7EdL4pFRFkrILj//1RYISEbsB0rWS0sIBCwGENYIbEvAEMdeuUYsCorGyMgikq5AoAAQLAbQ4uMYzpZLSwhLSwASWEjWBuwAItZIyCKOC0sIyAgsAQmRSNGYbAAjDgtLLABYSOwAWAjLSwjsCErIy0ssSUmRSNFCrEnKEUjRQstLAyxJiWKRCNEDbEoJ4pEI0QtLFiGGyEhWUqwG0NjIxAgsABSWIsbI2WMWS0sELEABUNUWCEhPDwbWCCKI+TkG+TEWVktLCkQWCDALxsuWSDALy0sELEABUNUWDwhPBsp5FktLBCwI0VYITwb7FktLLBZRR0tLEtTWLBAG7CAWRotLLEAA0NUWCAQBw48IRsQISMgsABUWCEhG7ABVFgBGwBZxFlZLSwQsQADQ1RYISCKIIoHDjw8GyCwAFRYISEhG7ABVFgBGwBZxMRZWS0svgAIAGQAKQApAEAAZAArRXZFaRiLQkMjRWJCsgkIKbgAZEWKQ2MjQyNhQi0ssAIlWCMgIEUgWLAIQ2OwCUNgWURFikWKWGIbIIphZSNiWbEpFCsjQhshISGxKRQrIVktLLExLisrs2UvKTFCKrAxK7NlMikxQiotLEE/AGUAegAAAGcBAQAAAGcBAAAAAGcA/wAAAGcA/gAAAGcA/QAAAGcA/AAAAGcA+wAAAGcA+gAAAGcA+QAAAGcA+AAAAGcA1AAAAGcA0wAAAGcA0gAAAGcA0QAAAGcA0AAAAGcAzwAAAGcAzgAAAGcAzQAAAGcAzAAAAGcAywAAQfAAZwDKAAAAZwDJAAAAZwDIAAAAZwDHAAAAZwDGAAAAZwDFAAAAZwDEAAAAZwDDAAAAZwDCAAAAZwDBAAAAZwDAAAAAZwC/AAAAZwC+AAAAZQBjAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQCuAAAAZQCtAAAAZQCsAAAAZQCrAAAAZQCqAAAAZQCpAAAAZQCoAAAAZQAAAAAAZQAAAAAAZQAAAAAAZQC5AAAAZQC4AAAAZQC3AAAAZQC2AAAAZQC1AAAAZQC0AAAAZQCzAAAAZQAAAAAAZQBxAAAAZQBuAAEAZQBrAAAAZQBqAAAAZQBpAAEAZQBnAAAAZQBmAAAAZAEYAAAAZAEWAAAAZAEbAAAAZAEZAAAAZAAAAAAAZAAAAAAAZAAAAAAAZACYAAAAZACXAAAAZACWAAAAZACVAAAAZACUAAAAZACTAAAAZACSAAAAZAAAAAAAZAAAAAAAZAAAAAAAZACjAAAAZACiAAAAZAChAAAAZACgAAAAZACfAAAAZACeAAAAZACdAAAAZAB5AAEAZAAAAAAAZAAAAAAAZAB1AAAAZAB0AAAAZABzAAAAZAByAAAAZABwAAAAZABvAAAAZABtAAEAZABsAAAAZABoAAEAZABlAAAAZABkAAAtLLACJVhYsDQbsDNZKxshISGxKRQrIVktLCOyACkUK0MgilRYIUVEG2S4ACpFYyNFIGkjimN9aRgjIIogimC4AB9giophuAAgYYogRYqLioy4ACCLIyBFIGlhZLApRVBYIEWwIItEIRsjRFlZLSwhIbIpASlDYEItLLA8S1ItLEuwAFFYISMhsAAbiiNFILAAUoqKUlpYsAAbsAFZWUItLCBFWCEhGyNEWS0ssEErWCtYsDsrsDsrGyEhISFZGyEhISEhISEhISEhIVktLEWxABVDiopSWiCwFiNCLSyxFRdDiktTWkItLCCKIIqBIIogimGwA1JYsAJhI7ABYCAQIIogilJYIAE8IAA8sAFhI7j/7RxZWSEhLSyxOQglIytYALAhK4qxCQglIysBsCIrirEJBSYjKxuxBx4qWbAWQy0ssTkIJSMrWACwIiuKsQkIJSMrAbAhK4qxCgUmIysbsQceKlmwFkMtLLE5CCUjK1gAsCErirEKCCUjKwGwIiuKsQoFJiMrG7EHHipZsBZDLSyxOQglIytYALAiK4qxCgglIysBsCErirEJBSYjKxuxBx4qWbAWQy0sIEWwgGIjILDNRCMguAFaUVgjILCNRCNZILDtUVgjILBNRCNZILCQUVgjILANRCNZILAgUFgjILAARCNZISEtLFKKilJaLSwQsQAEQ1RYPDw8G8TExFktLEQtLLoAEQAnAE5FZFJCugASADcAUEVkUkK6ABMANABPRWRSQrsAFABIAEgASkUjRWFkUkKzKjkpOUVCRSBpI2FCQDMTOBQ3Akg7FEoARwBGA0hIET8RQAJJRBJQAE0RThNPBEhLEjYAPgBBAEIAQwA1Bkg5BUUqLSwgIEUgIFggsClDYrAqQ2NgsB5LU1iwBSV2IGggsCBhI7AgYIqMixhZWbAFJiEgaYphsCsjQkRFIGkjsABSWLkAHwAgG7kAIAAfWYogimGwLCNCYLAtI0KwRiotLCBFsCtDYIogQ1pYsS0sQ4qLI0OMWUQtLLgAMCBYsAFhIIogiiNEI7j/8RwbISFZLSy4AJYgWLABYSCKIIojQiO4//EcGyEhWS0sQQIAcAAAsgICFyohLSyxIABEugAKAAEADytYQRQAAAAAAAAAAABAAEAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAACgAOKxu6AAwACgAPK1hBFAAAAAAAAAAAAEAAQAAAAAAAgABAAAAAAABAAAAAAAAAAAAAAAAMAA4rG7oADQAMAA8rWEEUAAAAAAAAAEAAQABAAAAAQACAAEAAAAAAAEAAAAAAAAAAAAAAAA0ADisbugAPAA0ADytYQRQAAAAAAAAAAABAAEAAAABAAEAAQAAAAAAAQAAAAAAAAAAAAAAADwAOKxu6ABAADwAPK1hBFAAAAAAAAAAAAEAAQAAAAEAAQABAAAAAAABAAEAAAAAAAEAAQAAQAA4rG7oAEQAQAA8rWEEUAAAAAAAAAEAAQABAAAAAQABAAEAAAAAAAEAAQAAAAAAAQABAABEADisbugAUABEADytYQRQAAAAAAAAAAABAAEAAAAAAAIAAQAAAAAAAQABAAAAAAABAAEAAFAAOKxu6ABcAFAAPK1hBFAAAAAAAAAAAAIAAQAAAAAAAgABAAAAAAABAAEAAAAAAAEAAQAAXAA4rG7oAGAAXAA8rWEEUAAAAAABAAEAAgABAAEAAAACAAEAAAAAAAEAAQAAAAAAAgABAABgADitZWVlZWVlZWVktAAAAAgAAAAACOQT6AAMABwAEsAArIgEBAQEBAQEBAAACOQAA/ccAZAAAAXEAAAT6AAD7BgAABJb7zgAABDIAAgC4AAAB9AW6AAgADAC4sBUrWEuwHlBYsACNWbEBCbgBAEAJAQgBDQAe/wABuAAAsgkPBCuxAQuwCUAJAQwBDgEe/wABuAAAsgsQBCsAsxZAAApKi0SzAzkMSz8/AbAJELkAQQABwB25AAsBFvywKiu1FAAhgAsJSSNiI2GxAQlKjGREtQUUCwEUCRDkEOSyBwEFEhE5tAAABgcgGj0vyMgYGgC5AEEADBAduQAKARn8sCorS7AeUli4AIAaWbJAABbsGjEwWQEDETMzEQMjMQchESEBC1OenlJMmQEy/s4BkwLCAWX+m/0+cv7fAAIAyQOUAwIFvgADAAcAbrAVK1ixAQG4AQBACQEIAQgAHv8AAbgAALIBDwQrsQEGsAFACQEMAQkBHv8AAbgAALIGEAQrALcFVAc5AVQDOT/sP+wBuwAcAF0AGwBdswYBHgsrsgEbAi/sS7AeUli4AIAaWbNABhsF3OwaMTBZExEzETMRMxHJyafJA5QCKv3WAir91gACACX//gRNBZUAGwAfATCwFStYsQEUuAEAQAkBCAEgAB7/AAG4AACyFA8EK7EBCrAUQAkBDAEhAR7/AAG4AACyChAEKwC1DRFNAxs7P8A/wLEWE9zMsxMWExa6/////wAMK7MJFgwTEMAQwLEZGNzMsxgZGBm6/////wAMK7MGGQcYEMAQwEAMBQIODQMNARoSEBsRERI5OTk5ERI5OTk5QBYMDxATEwkeHRYWCB8cFxgFAgEaGRMZEAjAwMDAEMDAwMAQwMDAwBDAwMDAAAGxGBQQxLMNDhAS1MDUwLEGChDUsxoBAgXUwNTAQAwHBhkYBhgMCRYTChQREjk5OTkREjk5OTlAHAwJCAUNBQUPHh8CDgICEB0cARABARMWFxoSGhoQBzw8PDwQBzw8PDwQBzw8PDwQBzw8PDwDMTBZAQMzEzMDMwcjBzMHIwMjEyMDIxMjNzM3IzczExMHMzcCOznHOcM5wRrCJMMawzrDOsc6wzrBGsEkwhrDOW8kyCMFlf5wAZD+cLz6vP5rAZX+awGVvPq8AZD9tPr6AAADAD3/EgQwBjgALgA3AEACYLAVK1hLsBRQWLAAjVmxASm4AQBACQEIAUEAHv8AAbgAALIpDwQrsQESsClACQEMAUIBHv8AAbgAALISEAQrtIASKUJBSYqKSWFUWLQzEilCQUmKikphU1i5ACn/wDhZWQAAsQEZLy+6ACQAtAAZEOyxFxkQxLEeGRDEugAMAKkAARDssyU3GQEREjk5sS4BEMSxBgEQxLUYFwAuLhcREjk5OTm3FhkZAS0YLgEQCMDAEMDAszgkLwwQwBDAtSVAJTcNNxDAwBDAwAG5ADMAnrQcJwEZKRCHwMT8AbEeHBDAsB4QsB7UsR8fAcEAwbEfHgYOuQAfAJ7tAbkAPACTtAUQARkSEIfAxPyxBgUQwLAGELAG1LEHBwHBAMGxBwYGDrkABwCT7QG5AEAAZEVpU1i4AGCxEjxJU1izNyUSKRESOTm1NyU3JTclCAZJsBBhsIBisCUjOFlZtyVAJTcNNy4YCBDAwBDAwAG0FxgYEikREjkvwEAJF0AYFxgXGAElKzoBsBcvsxgXGBeyKRIMKwGzABcuGBDAEMBAEBY4QA0MAQAZJCU3Ly0YLi4QBw48PDw8PDwQPDw8PDw8AzEwsRA6K7oALgBAAC6zgDw4GisrsBVDWLMSFjg8uAAuQAw8OBY4PBI/PDgWEjgrWboALgBAAC6zgDMvGisrsBVDWLMpLS8zuAAuQAwzLy0vMyk9My8tKTgrWboALgBAAC62gAcMgAcMGysrsBVDWLMBBgcMuAAuQAwHDAEMBwY8DAcGATgrWbAVQ1izGR4fJLgALkAMHyQZJB8ePiQfHhk4K1lZARUWFxYVMSExNCcmJxEXFhcWFRQHBgcVIzUmJjU3MSExBhcWFxEmJyY1NDc2NzURBgcGFRQXFhcTNjc2NTQnJicCX8dwfP76MSdVGfBkZIl9y13Z7AEBFgY4LFDaYmqAcLZAKTlBJD1dTzI9NypdBjiNCmNuynExJwf+fQhFZWStyndtCcfGDdzQJIM/MAwBrEVZYaDEc2QLkP6cCSMwVkgyHBn9QwgsNV5PMykeAAUAOf/YBuQFrgAMABkAHQAqADcBqrAVK1ixAQO4AQBACQEIATgAHv8AAbgAALIDDwQrsQEnsANACQEMATkBHv8AAbgAALInEAQrALkAEwC9sQANuAC9tBscBjkruAC9sSQxuAC9sx0aHks/wMB67BjUeuwYP8DAeuwY1HrsGAG2GxwbHCcaAxDAENDACLEbHLEdGrgAebIbGhwrAwGxCQMQxLsAHACcABsAp7MJAx4LK7YnFhwJEBsDEOwQ7BC0LhshNBzs1OwxMLEYOiu6AC4AQAAutoANEIANEBsrK7AVQ1izBgkWGbgALkAMFhkGGRYJPBkWCQY4K1mwFUNYswkMExa4AC5ADBYTDBMWCT8WEwwJOCtZsBVDWLMAAxATuAAuQAwQEwATEAM+ExADADgrWbAVQ1izAwYNELgALkAMEA0GDRADPRANBgM4K1mwFUNYsyQnNDe4AC5ADDQ3JDc0Jzw3NCckOCtZsBVDWLMnKjE0uAAuQAw0MSoxNCc/NDEqJzgrWbAVQ1izHiEuMbgALkAMLjEeMS4hPjEuIR44K1mwFUNYsyEkKy64AC5ADC4rJCsuIT0uKyQhOCtZWQEiJjU0NjMyFhUUBiMRIgYVFBYzMjY1NCYjAwEzASUiJjU0NjMyFhUUBiMRIgYVFBYzMjY1NCYjAa2c2NicnNjYnEVbW0VFW1tFAQMvlvzRAy6c2NicnNjYnEVbW0VFW1tFAsXVm57b256b1QIXXkdFW1tFR176/AXW+iod1Zue29uem9UCF15HRVtbRUdeAAADAG//3wWcBb0AJAAyAEEBG7AVK1ixAR24AQBACQEIAUIAHv8AAbgAALIdDwQrsQEUuAEAQAkBDAFDAR7/AAG4AACyFBAEKwCxGlA/sRVLP7EDOT9ACSUAGiUaJRoAJSs6QAk+AAM+Az4DACUrOgCzIQMpGhDAEMCzDg4DGhESOS8BtCkUIQAdEMTAEMBACS8AHS8dLx0AJSs6QAkzAAAzADMAACUrOrEpFghACRYAKRYpFikBJSs6sSkLCEAJCwApCykLKQElKzqxExYIQAkTABYTFhMWASUrOrEhKwhACSsAISshKyEBJSs6AbEGFBDEQAk7AAY7BjsGACUrOrEhNwhACTcAITchNyEBJSs6sQorCEAJCgArCisKKwElKzoBsQ8UENSwDswxMFkBNDYzMhYVFAcGBxM3NjczBgcGBwEhJwYHBiMiJjU0NzY3JyYmATI3NjcnJwYHBhUUFxYTFBYXFzY3NjU0JiMiBwYBKNCypMFROWvZFDIK/Q5JJS8BB/6sZFNHZqPW/GFEkwg3QAFBRUIpMlq4NyZNOjoqGRc6KR8/QDg5ICAEWqPAu592X0RB/vgnaWmTmU9D/sR4SSEv376icVFYCUKY/K8mGCts4yclT1tbNDMDph9DG0gdHkA+PEQfHgAAAQCPA5QBWAW+AAMAR7AVK1ixAQC4AQBACQEIAQQAHv8AAbgAALIADwQrsQECsABACQEMAQUBHv8AAbgAALICEAQrALMBVAM5P+wBsgJdABDsMTBZExEzEY/JA5QCKv3WAAABAEj+VgKDBeYADgBZsBUrWLEBALgBAEAJAQgBDwAe/wABuAAAsgAPBCuxAQuwAEAJAQwBEAEe/wABuAAAsgsQBCsAswM5C1E/PwG1AwQACwoHuABzsgQKABCHGOwY3MAQ3MAxMFkTNBITMwYCExISFyMCJyZIsMbFkoEBAYCRxcZYWAIe8AHHARHt/jn+7P7r/jnsARHk4wAAAQAn/lYCYgXmAA4AWbAVK1ixAQO4AQBACQEIAQ8AHv8AAbgAALIDDwQrsQEAsANACQEMARABHv8AAbgAALIAEAQrALMLOQNRPz8BtQsKAAMEB7gAc7IKBAAQhxjsGNzAENzAMTBZARQCAyM2EgMCAiczEhcWAmKwxsWSgQEBgJHFxlhYAh7w/jn+7+0BxwEUARUBx+z+7+TjAAEANwMQAu8FuwATAEuwFStYsQEPuAEAQAkBCAEUAB7/AAG4AACyDw8EK7EBA7APQAkBDAEVAR7/AAG4AACyAxAEKwCxAAsvLwGwDxCzBwMLE8DAEMAxMFkBBzE3FwcxFwcnMQcnNzEnNxcxJwHoBdg03YyJg4KJjd002gYFu+9QpkO8Z8XEZr5CplDuAAABAFIAAwRaBAsACwCHsBUrWLEBAbgBAEAJAQgBDAAe/wABuAAAsgEPBCuxAQewAUAJAQwBDQEe/wABuAAAsgcQBCsAswcGAwK4AHSzCAkAAS/AwMD8wMDAAbMKBQYJuAB0tgsEAwACAQEQwMDcwMDA/MDAwLYHBwgUFAABSUT0wMAAtwUEFAMKCxQAEPTAEPTAMTBZASE1IREzESEVIREjAeD+cgGO7AGO/nLsAZHsAY7+cuz+cgAAAQCD/qcBtgEqABEAS7AVK1ixAQC4AQBACQEIARIAHv8AAbgAALIADwQrsQEEsABACQEMARMBHv8AAbgAALIEEAQrtAJUBxBLAD/U7LMEXQkAARDE7DEwWTc1MzMRFAYHMTUxNjc2NzEjI4OamZadZyQaBU5clZX+/5+9Jm4jQy5XAAEANwG3AnMCxQADAEewFStYsQEDuAEAQAkBCAEEAB7/AAG4AACyAw8EK7EBAbADQAkBDAEFAR7/AAG4AACyARAEKwCxAAG4AHOyAwJEP8D8wDEwWRMhESE3Ajz9xALF/vIAAQCDAAABtQEqAAMATbAVK1ixAQC4AQBACQEIAQQAHv8AAbgAALIADwQrsQECsABACQEMAQUBHv8AAbgAALICEAQruQABARmxA0sAP+y5AAIBFrAAARDsMTBZEyERIYMBMv7OASr+1gAB/73/2AJ8BeYAAwBZsBUrWLEBArgBAEAJAQgBBAAeBwABuAAAsgIPBCuxAQCwAkAJAQwBBQEeDwABuAAAsgAQBCsAtQADOQIBSz/AP8ABsQMAEMCxAwCxAQK4AHmyAwIcKwMxMFkBASMBAnz+LewB0wXm+fIGDgACAEL/2gQxBbIADQAaARawFStYsQEDuAEAQAkBCAEbAB7/AAG4AACyAw8EK7EBCbADQAkBDAEcAR7/AAG4AACyCRAEKwC7ABwArAAbALezBg0eCyuxDU8/sQY4P7UUHAYOGw0Q7BDsPbcKEQMXERcGDRESOTkvxC/EGAGzAwMKCRDAENC7ABwAlgAbAKGzCQMeCyu0ERwKFxvsEOwBMTCxEDorugAuAEAALrZADhRAERcbKyuwFUNYswYKERS4AC5ADBEUBhQRCjwUEQoGOCtZsBVDWLMDBhQXuAAuQAwXFAYUFwM9FxQGAzgrWbAVQ1izAAMXGrgALkAMFxoAGhcDPhoXAwA4K1mwFUNYswoNDhG4AC5ADBEODQ4RCj8RDg0KOCtZWQUgAgMSEiEgEhEVEgIhNTI2ERImIyIGAxAWMwI5/wD2AQH2AQABAvYB9/7+c14BX3NyXQFeciYBawF5AYIBcv6O/oUH/of+lejmARgBH+vr/uH+6OYAAAEAjQAAAwoFsgAOAHCwFStYsQEOuAEAQAkBCAEPACH/AAG4AACyDg8EK7EBC7AOQAkBDAEQASH/AAG4AACyCxAEKwCxDUs/sQk4P7EDCRDcuQAEAHHssQsOuAEcsgENJisBsQoLuABwswEOAQ4QwIcY/BjAAbEDARDEMTBZIRExITUWNzY3MzERMSMjAev+ooZqazfrj5AD7c0HQkJ7+k4AAAEANQAABBcFsgAfAK2wFStYsQEJuAEAQAkBCAEgAB7/AAG4AACyCQ8EK7EBCLAJQAkBDAEhAR7/AAG4AACyCBAEKwCxCEs/sRw4P7IKCQgQ1MCxChA4uQATAK2yHAYHuQBvAAgQ/MAQ7LINHAgREjlACQMADQMNAw0BJSsAsRgcEMQBsQAJENSwABCwGNSxFxcBwQDBsRcYBg65ABcAl+0BugAQAJcAABDsQAkGAAkGCQYJACUrOjEwWQEUBgcGBwchFSExNBIlNjY1NCYjIgYXMSExJgAzMhcWBBeb1cVIAQJ+/B7KARd9ZnBcYm4E/ucHAQfn14mIA+im2oh9ZQL8yAEexFeRWWF2lH/tARaAgAABADf/2gQhBbIANADZsBUrWLEBHrgBAEAJAQgBNQAe/wABuAAAsh4PBCuxARe4AQBACQEMATYBHv8AAbgAALIXEAQrALEMOD+xGk8/uQAjALmwGhDssxMSGgwREjk5sSoqOS+5ADEAreyzKjEqMbIaDAwrugADAK0ADBD8sR4aEMSxCAwQxAGwHhCwHtSxHx8BwQDBsR8eBg65AB8AmO0BsB4QsAjUsQcHAcEAwbEHCAYOuQAHAJftAbEXFxDQuQAmAJjssS0eENSyFxMSwMAQS7AeUViwRnZZsA/UGLkAAACX7DEwWQE0JiMiBgcxITE2NjMyFhUUBwcxFhcWFRQEIyIkJzEhMRYWMzI2NTQnJicmJgc1FjY3Njc2AtdiUV5nAv74A/vkxPqCJzImff7x5u3++wMBFwJrZWJ4PDVRLU0LDE4sRCgyBAlVaXdu3/Hks5tjGhMfYcPX/Pnme4GCal05MQYDAQPUAgMFCCcwAAIANwAABDYFsQAPABcBXLAVK1ixAQK4AQBACQEIARgAHv8AAbgAALICDwQrsQENuAEAQAkBDAEZAR7/AAG4AACyDRAEKwCxBTg/sQ1LP0AJFxAQDQUSERIFEAjABBESOS/AsQkHwMCyAwEPuABv/MDAskADIBrIGrEKDMDAtQYGBQQEBRDAwMDAwAGxBg0Q1LgAcEWxBgRJUliyQAQgGsgaG7EEAhDAWbANELMHDAYNBzw8sAnEsxIQDw64AHCxDQaHGPwYxMTEAbIDAQIQwMC5/////7EXA7gAcbIEAxwrsQ0GCLISAx0rAwEBsmASE0kgZIpTWCCwAFJYuACAYiCyEhIRCCM4shMTFggjOBshWRshWQCyYBcWSSBkilNYILAAUli4AIBiILIXFxAIIziyFhYTCCM4GyFZGyFZALAFRrASRlBYsRIFEDxZsAVGsBNGUFixEwUQPFmwAUawA0ZSWLEDARA8WTEwWQEhNTUBMzMRMTMVIzERIRE1MRExMQEHMQJ4/b8CG6CgpKT+5v6fDAFBfHwDePx05P6/AUHkAl79thQAAQA3/9oEIQWVACMBW7AVK1ixARa4AQBACQEIASQAHv8AAbgAALIWDwQrsQEAsBZACQEMASUBHv8AAbgAALIAEAQrALEYOz+xA08/uQAMALmwAxDstAMYHh0YEMDAERKxGBK4AK6yFSAgOS/E/BCwGX3EGLkAGgBv/LMAHAA0Hh/AHrEHAxDEAkuwHlJYsEAbsABZsRIMSVNYS7AeUliwwBuwgFmxIBJJUVixEgwQPLASS7AeUliwgBuwQFk4WVlLsB5SWLBAG7AAWbEaIElTWEuwHlJYsMAbsIBZsSASSVFYsSAaEDywIEuwHlJYsIAbsEBZZThZWbIAFQdJU1ixBxUQPLJAEhVJUVixFUA4G7JABwxJUVixB0BlOFlZWQGxFxYQwLEVB8TAsRwWsR0WuABxshwdHCuyFx0dKwOwFhCwB9SxCAgBwQDBsQgHBg65AAgAmO0BAbEAABDQuQAPAJjssBnEMTBZARQAIyImJzEhMRYWMzI2NTQmIyIGBycTMSEVITEDMTYzMhcWBCH+4fXD/hUBIAtqXF50dmA8Zxz8XwMd/bEyeIzCfHsB4e/+6OXEYWWSd3qVNi4MAxjz/stLhIQAAAIAP//aBCkFswAeACsBGLAVK1ixARq4AQBACQEIASwAHv8AAbgAALIaDwQrsQEUsBpACQEMAS0BHv8AAbgAALIUEAQrALEeOD+xF08/ALAXELkAIgC47LMRERceERI5L7kAKACt7LoACgCtAB4Q7LEPERDAsQQeEMQBuwAcAJcAGwCisxQaHgsrsBoQsw4OHxsY/BjAwAGxFBQQ0LElHOywFBCwBNSxBQUBwQDBsQUEBg65AAUAG+0BsQ4fEMAAsiEEEUlSWLEEQDiyAAQRSVNYsQRAOFlZMTCxGDorugAuAEAALrZAIiiAJSgbKyuwFUNYsxEUJSi4AC5ADCUoESglFDwoJRQROCtZsBVDWLMUFyIluAAuQAwlIhciJRQ/JSIXFDgrWVkBMhYXMSExNiYjIyYHBgcxNjMyEhUUACMiAhEQNzYzAxQWMzI2NTQmIyIHBgJmtegI/uUBUUQMgT0wCnSkwvf+59z2/42D+et7XGludmFhOzsFstKrRFIBfWG6ev710d7+5gFxAWMBh8W5/BhzmIiDcotGRQABADMAAAQ6BZUADgBnsBUrWLEBBrgBAEAJAQgBDwAe/wABuAAAsgYPBCuxAQiwBkAJAQwBEAEe/wABuAAAsggQBCsAsQ5LP7EIOz+xBwgQwLIGBAW4AG/8wMABsg4KCBDAxLEEDrEADrgAcLIKDhwrAzEwWSESExI3MSE1IRUVBgMCAwEBIJKIy/0tBAfejIwcAUgBQQEr5fxsbfL+vv6//rkAAAMAQv/aBDEFsgAcACkANgF0sBUrWLEBC7gBAEAJAQgBNwAe/wABuAAAsgsPBCuxAQWwC0AJAQwBOAEe/wABuAAAsgUQBCsAsRY4P7EITz+5ACMArLEWMLkAtwAIEOwQ7LcqKhAPAQAWCBESOTk5OTkvuQAdALfsArIAKjBJU1iygB0qSVFYsSowEDyxKkA4WVmyACMdSVNYsoAdKklRWLEjHRA8sR1AZThZWQGzGQUTCxDEEMS7ABoAlgAZAKGzBQseCyu7ABwAlgAbAKGzGRMeCytADiAcGSYbEzMaBS0ZFggLEIfsEOwQ7BDsMTCxGDorugAuAEAALraAIyZAICYbKyuwFUNYsxYZICO4AC5ADCAjFiMgGTwjIBkWOCtZsBVDWLMTFiMmuAAuQAwmIxYjJhM9JiMWEzgrWboALgBAAC62gDAtQDMtGysrsBVDWLMICy0wuAAuQAwtMAgwLQs+MC0LCDgrWbAVQ1izBQgwM7gALkAMMzAIMDMFPzMwCAU4K1lZATEWFxYVFAQjIiQ1NDc2NzEnJjU0NjMyFhUUBwYlMjY1NCYjIgYVFBcWFyIGFRQWMzI2NTQnJgNNMCqK/uvj4v7riygwOH78zs78fhv+z1NiYlNTYjExU2BwcGBgcTk4AwYYInG6zfr6zbpyIhYlX5uz29uzm18UR2FTVWRkVVMxMNZ8aWd5eWdpPj4AAgA9/9kELQWyAB4AKwEasBUrWLEBFLgBAEAJAQgBLAAe/wABuAAAshQPBCuxARqwFEAJAQwBLQEe/wABuAAAshoQBCsAsRc4P7EeTz8AsB4QuQAKAK3ssBcQuQAiAK3ssxERHhcREjkvuQAoALjssQ8REMCxBB4QxAG7ABwAlwAbAKKzGhQeCyuxFBQQ0LElHOywFBCwBNSxBQUBwQDBsQUEBg65AAUAG+0BAbAaELMODh8bGPwYwMCxDh8QwACyIREESVJYsQRAZTiyABEESVNYsQRAZThZWTEwsRg6K7oALgBAAC62QCgigCUiGysrsBVDWLMUFyIluAAuQAwlIhciJRQ9JSIXFDgrWbAVQ1izERQlKLgALkAMJSgRKCUUPiglFBE4K1lZBSImJzEhMQYWMzMWNzY3MQYjIgI1NAAzMgAREAcGIxM0JiMiBhUUFjMyNzYCA7fpCAEbAVNFDoA+MAx3pcP5ARre9wEBjoT67nxea294YmI8PCbSq0RSAXxhvHsBC9HeARr+j/6d/nnFuQPoc5iIg3KLRkUAAgC8AAAB7gQaAAMABwB3sBUrWLEBALgBAEAJAQgBCAAe/wABuAAAsgAPBCuxAQKwAEAJAQwBCQEe/wABuAAAsgIQBCsAuQAHARmyBUQBuAEZsQNLP+w/7LJABwFJIIpQWGWwQGAgsAcjOLAFIzgbIVkBuQAGARaxBAK4ARawABDs1OwxMFkTIREhESERIbwBMv7OATL+zgEq/tYEGv7WAAIAvP6tAe8EGgARABUAn7AVK1ixAQC4AQBACQEIARYAHv8AAbgAALIADwQrsQEEsABACQEMARcBHv8AAbgAALIEEAQrALMCVBBLP+y5ABUBGbETRD/ssQcQEMCyQBUCSSCKUFhlsEBgILAVIziwEyM4GyFZAbkAFAEWsRIAENTssAAQscAHQ0VpU1i5AAQBFuwbsQRd7FmxCQAQwEuwGFFYswQUABIQPBA8WTEwWTc1MzMVFAYHMTUxNjc2NzEjIxEhESG8mpmTmWEiGAVLXAEy/s6Wld+0yyBuHkItWAQa/tYAAAEATv/sBF4EIgAIAHmwFStYsQEBuAEAQAkBCAEJAB7/AAG4AACyAQ8EK7EBCLABQAkBDAEKAR7/AAG4AACyCBAEKwC1AwAIAgAILy/cSTtACQdACAcIBwgAJSs6QAkEQAMEAwQDACUrOrEEBy8vswUGAAIREjk5AbQECAUGARDAwBDAMTBZEzU1ARUBMQEVTgQQ/R0C4wGlYmIBueP+yf7H4wAAAgBSALMEWgNcAAMABwBlsBUrWLEBA7gBAEAJAQgBCAAe/wABuAAAsgMPBCuxAQGwA0AJAQwBCQEe/wABuAAAsgEQBCsAsQIDuAB0sQEAL8D8wLEFBLgAdLYGBxQAFAcASkQQ/sD8wAGzBQEHAxDEEMQxMFkTIRUhESEVIVIECPv4BAj7+AGa5wKp5wABAE7/7AReBCIACAB5sBUrWLEBAbgBAEAJAQgBCQAe/wABuAAAsgEPBCuxAQiwAUAJAQwBCgEe/wABuAAAsggQBCsAtQYAAQcAAS8v3Ek7QAkCQAECAQIBACUrOkAJBUAGBQYFBgAlKzqxBQIvL7MEAwAHERI5OQG0BAMIBQEQwBDAwDEwWQEBNQExATUBFQRe+/AC4/0dBBABpf5H4wE5ATfj/kdiAAACAHsAAARyBdcAHAAgALSwFStYsQEFuAEAQAkBCAEhAB7/AAG4AACyBQ8EK7EBDLAFQAkBDAEiAR7/AAG4AACyDBAEKwCyFBIeSkSzCTkgSz8/QAkAQAkACQAJACUrOrEgAC8QuQAeARn8sRIU/LEFCRDEAbAFELEMH7kBFgAd1OwQQAkZQAwZDBkMACUrOrAZL7ETHRDEQAkSQBMSExITACUrOrASL7AFELAF1LEEBAHBAMGxBAUGDrkABABk7QExMFkBIgYHMSExNgAzMgQVFAYHBgYXISY2NzY2NTQnJgMhESECd25tBP7jBwEN6OkBEn+UOi0D/vYEZn48MjY28wEs/tQE5Xp/5wEE6sdqu28sZVKNwlgqXkhYNDP8Of7iAAIA8v/UBtkF5gA1AEEBI7AVK1ixARa4AQBACQEIAUIAHv8AAbgAALIWDwQrsQEcsBZACQEMAUMBHv8AAbgAALIcEAQrALUsQBkmThMvPy8/QAkMQBMMEwwTACUrOkAJPEAmPCY8JgAlKzpACQZAGQYZBhkAJSs6QAk2QCw2LDYsACUrOrM2BjwMLy8vL7MfJjAsEMQQ1EAJAEAfAB8AHwAlKzqwAC8BsSkWENRACQlAFgkWCRYAJSs6QAk5QCk5KTkpACUrOrE5CS8vQAkDQBwDHAMcACUrOrADL7IwMxwQ1MBACT9AMz8zPzMAJSs6sD8vsD/AA7EVAESyAD85SVNYsoA5KUlRWLE5PxA8sTlAZTgbsoAzP0lRWLEVAURZWVmwFUVYsT85EDyxP0A4WTEwWQEyNjU0ACMiABEQADMyJDczBgQjIAAREAAhIAARFAAjIicmJzEGIyImNyYAMxYXMTcxMwMGFgEiBhUUFjMyNjc2JgVBZo7+wOf6/qYBUPSXAQU+tVj+ncv+tP43AcgBSgExAaT+xtBCIA0DZHaRvAEBAQm4jVQVx4UGC/7TYJBXUFGDFhZaAc7lps0BHP6c/v/+//6cYlCavAHDAUYBRgHD/oX+7ub+pjsXGWvVpMgBIQF7X/2sGSMB46hwVl2BZWWAAAACACkAAAWeBb4AEAAXAQawFStYsQAQuAEAQAkBCAEYACL/AAG4AACyEA8EK7EABLAQQAkBDAEZASL/AAG4AACyBBAEKwCxAjk/thcWDwIGD0s/xBESOTm1AwMCAQECEMDAwMDAuQALAGW1ExMCDxcNCBESOS/sALMTCxMLsg8CDCu1CgsUFgcTEAjAEMAAsQ0QuAEcsgEPJiu2EAEQARABFiu2DQsNFxMBFiuxBwS4ARyyAQYmK7YEAwQDBAEWK7YHCgcWFAEWKwGxARAQ0LJAAzAa3Bq0BBQUARBKRHr0GLEXELENELgAabIBEBwrsgsQHSuyExAdKwOxFgSxBwS4AGiyAwQcK7IKBB0rshQEHSsDMTBZMwEzMwExIyMxAzEhMQMxIyMBAzEhMQMxKQIIsrICCaOjY/3SYZ6fArbDAYfEBb76QgEr/tUEd/2xAk8AAAMAnAAABVoFvgAXACIALQGysBUrWLEBF7gBAEAJAQgBLgAhBQABuAAAshcPBCuxARGwF0AJAQwBLwEeDAABuAAAshEQBCsAsRVLP7QUFRcVQiuxJSa5ALMAFRD8wLEDOT+0BQMBA0IrsSIhuQCoAAMQ/MCzLS0DFRESOS+5ABoAqOyzLRotGrIVAwwrsxsaLC0QwBDAtA0MDBotERI5EMAEsgAtJUlTWLElQGU4WbIAIhpJU1ixIkA4WbMmJSEiEMAQwAGzGBkjJLgAZLMBFwEXEMCHGPwYwMDABbkAHgCSswgIESm4AJKxEREBENDsENTQ7ANLsB5SWLBAG7AAWbEeGUlTWEuwHlJYsMAbsIBZsQgeSVFYsR4ZEDywHkuwHlJYsIAbsEBZOFlZS7AeUliwQBuwAFmxKSRJU1hLsB5SWLDAG7CAWbERKUlRWLEpJBA8sClLsB5SWLCAG7BAWThZWTEwsRg6K7oALgBAAC62gB4hgB4hGysrsBVDWLMFCB4huAAuQAweIQUhHgg8IR4IBTgrWboALgBAAC62gCkmgCkmGysrsBVDWLMRFCYpuAAuQAwpJhQmKRE/KSYUETgrWVkzETEzMSEyFhUUBwYHMRYXFhUUBCEhMSMBETEhMjY1NCYjIRERMSEyNjU0JiMhnJMCNdXwhxYbNCiN/un+9P34kwEmAV9zcnh5/q0BdXh4e3v+kQW+xa+3XxANFBxhuuHrBMH+vVZXS0v9xv54aGlcWwAAAQBa/9gFeQXmAB0BQrAVK1ixAQe4AQBACQEIAR4AHgQAAbgAALIHDwQrsQENsAdACQEMAR8BHgwAAbgAALINEAQrALEEUD+5ABkAs+yxAAQQxLEKNj+5ABMAqOyxDgoQxAGxBwcQ0LkAFgCdsQoEh+wBsA0QsADUsR0dAcEAwbEdAAYOuQAdAJ3tAbANELAO1LEPDwHBAMGxDw4GDrkADwCd7QEAsiAPHUlTWLMAQB1AZThlOFkxMLEQOiu6AC4AQAAutoATFoATFhsrK7AVQ1izBwoTFrgALkAMFhMKExYHPRYTCgc4K1mwFUNYswQHFhm4AC5ADBYZBBkWBz4ZFgcEOCtZugAuAEAALraADxOADxMbKyuwFUNYswoODxO4AC5ADA8TChMPDjwTDw4KOCtZsBVDWLMABBkduAAuQAwdGQQZHQA/HRkEADgrWVkBMQYAISAAERAAISAAFzEhMSYmIyICFRQSMzI2NzEFeRz+qf73/sr+kwFtATYBBgFYHv7MD6+Hq8LBrIevDwID//7UAZ4BYQFoAaf+5fJ3jP7v8uz+9ZyFAAIAnAAABXsFvgAOABkA+7AVK1ixAQ64AQBACQEIARoAIQUAAbgAALIODwQrsQEIsA5ACQEMARsBHgwAAbgAALIIEAQrALEFOT+xC0s/tAUDAQVCK7QLDA4LQiuxGBe4AKiwBRD8wLEQEbgAs7ALEPzAsxARGBcQwBDAAbIZGA+4AGSzAQ4BDhDAhxj8GMDABQGxCAgQ0LkAFACSsQEOh+wDsgAUD0lTWLKACBRJUVixFA8QPLEUQDhZWTEwsRA6K7oALgBAAC62gBcUgBcUGysrsBVDWLMFCBQXuAAuQAwUFwUXFAg8FxQIBTgrWbAVQ1izCAsRFLgALkAMFBELERQIPxQRCwg4K1lZMxExMzEhIAAREAAhITEjJTEhMjY1NCYjITGcmQHcAS8BO/65/sT+PZkBMwEDu7uur/7kBb7+nP6p/ob+d/39/eXlAAABAJwAAAT4Bb4AGQD3sBUrWLEBALgBAEAJAQgBGgAhBQABuAAAsgAPBCuxARWwAEAJAQwBGwEeDAABuAAAshUQBCsAswBLAjk/P7AYwLoAFQBnAAAQ/LEEAhDAugAIAGYAAhD8sxAQAgAREjkvuQANAGX8sxANEA2yAAIMK7cTFRIQCw0KCBDAEMAQwBDABLIAEhNJU1izFUATQGU4ZThZsgAKC0lTWLMIQApAODiyAAoLSVNYsw1AC0BlOGU4WVkBsxILChO4AGSzAgACABDAhxj8GMDAwAWyDwQVARDExLEHBrgBH7IABCYrsQ0OuAEgsgAPJiuxGBe4AR6yABUmKzEwWTMxETEhMRUVMSExETEhFRUxITERMSExFRUxnAQ6/PkCz/0xAykFvoKD/sh+f/6BgoMAAQCcAAAEsgW+ABMA3rAVK1ixAQC4AQBACQEIARQAIQUAAbgAALIADwQrsQEDsABACQEMARUBHgwAAbgAALIDEAQrALMBORNLPz+wA8C6AAcAZgABEPyzDw8BExESOS+5AAwAZfyzDwwPDLITAQwrtREPCgwJBxDAEMAQwLESALgBHLIBEyYrAbMRCgkSuABkswEAAQAQwIcY/BjAwMAFAbMODgMAERI5L7EGBbgBH7IAAyYrsQwNuAEgsgAOJisAsiAGDElTWAGyAAYMSVNYskAOEUlRWEAJDw4ODQwMDAdAZSMXOFlZWTEwWTMRMSExFRUxITERMSEVFTEhMREjnAQW/R0ChP18mQW+goP+sn5//ZIAAQBa/9gFtAXmACYA+rAVK1ixAQO4AQBACQEIAScAHgQAAbgAALIDDwQrsQEKsANACQEMASgBHgwAAbgAALIKEAQrALEGNj+xAFA/sR4VuQCzAAAQ7MS6AA8AqAAGEOyxCgYQxLkAHQCzsB4Q7LEgABDEsgAKHklTWLEKQDhZAbEDAxDQuQASAJ2xBgCH7LEKG7gAnbEfChDU7BCwHcSwChCwCtSxCwsBwQDBsQsKBg65AAsAne0BMTCxEDorugAuAEAALraADxKADxIbKyuwFUNYswMGDxK4AC5ADBIPBg8SAz0SDwYDOCtZsBVDWLMAAxIVuAAuQAwSFQAVEgM+FRIDADgrWVkFIAAREAAhIAAXMSExJiYjIgIVFBIzIzI3Njc1MSE1IREjJzEHBiEDFP6//ocBiAFOAQwBWx3+zAzAdMji2dEBsmQ3Gv6mAmjNHhKb/vcoAZ4BYQFoAaf+9ORgkf7r9vr++4hNaAP9/Oe+GM8AAQCRAAAFNgW+ABsAwbAVK1ixARu4AQBACQEIARwAIQUAAbgAALIbDwQrsQEPsBtACQEMAR0BIQ0AAbgAALIPEAQrALUMAzkRGks/xD/EsxYWAxoREjkvuQAHAGX8sxYHFgeyGgMMK7MIBxUWEMAQwLEBBLgBHbIBAyYrsQoNuAEdsgEMJiuxGBu4ARyyARomK7EPErgBHLIBESYrAbMFBhcYuABkswEbARsQwIcY/BjAwMAFswoJFBO4AGSzDQ8NDxDAhxj8GMDAwAUxMFkzETEzMzERMSExETEzMzERMSMjMRExITERMSMjkZmaAj+Zmpma/cGZmgW+/dkCJ/pCApr9ZgABAIMAAAG2Bb4ACQBnsBUrWLEBCbgBAEAJAQgBCgAh/wABuAAAsgkPBCsBuQAGAGSzAQkBCRDAhxj8GAGzCQYJBrr/////AAwrALMISwM5Pz+xAQS4AR2yAQMmK7EGCbgBHLIBCCYrAbMEBgEJEMAQwDEwWTMRMTMzMRExIyODmZqZmgW++kIAAQAt/9gD4AW+ABUAj7AVK1ixAQy4AQBACQEIARYAHv8AAbgAALIMDwQrsQEFsAxACQEMARcBHg0AAbgAALIFEAQrALEIUD+xCBG4AGPsELEMCBDEsQM5P7EAArgBHbIAAyYrAbAMELiqqiGxAwW4AGS0ABUAFQwQ1MSHGPwYxAGwDBCwDNSxDQ0BwQDBsQ0MBg65AA0AZO0BMTBZATEzMzERFAYjIiYTNSEVBhYzMjY1MQKtmZrw6vnoCAEkBFdfW08Fvvvf4OX8AQdYWIaBXmsAAQCyAAAFxwW+ABsBBbAVK1ixARu4AQBACQEIARwAIQUAAbgAALIbDwQrsQAPsBtACQEMAR0BHg4AAbgAALIPEAQrALEEOT+xGks/sRFLP7EKBBDEsQEDuAEdsgAEJiuxGBu4ARyyARomK7EIC7gBHbIBCiYrtggHCAcIARYrtgsNCw0LARYrsQ8SuAEcsgERJiu2Dw4PDg8BFiu2EhQSFBIBFisBtQYXCxcEGLgAZLMBGwEbEMCHGPwYwAjAwAGxCw8Q0LUVDRUSFwuHCMDAAbn/////sQgLuABpshcLHCuxBBgIsgYXHSsDsw0XCw8QCMABuf////+xEg+4AGiyDQ8cK7EXCwiyFQ8dKwMBATEwWTMRMTMzMRExATEzMzEBMQExIyMxATEHMRExIyOymZoCM8TE/bUCcsnJ/kWVmZoFvv2fAmH9p/ybAoeZ/hIAAQCcAAAEqgW+AA0AeLAVK1ixAQC4AQBACQEIAQ4AIQUAAbgAALIADwQrsQEJsABACQEMAQ8BHg4AAbgAALIJEAQrALMASwQ5Pz+wDMCxBwm5AGcAABD8wLECBbgBHbIBBCYrAbEFB7gAZLMCAAIAEMCHGPwYwAGxDAu4AR6yAAkmKzEwWTMxETEzMzERMSExFRUxnJmaAtsFvvtHgoMAAAEAjQAABh8FvgAdAViwFStYsQEDuAEAQAkBCAEeACEFAAG4AACyAw8EK7EBErADQAkBDAEfASENAAG4AACyEhAEKwCyFAJLP8SxBzk/sQ85P7EaSz+1GBcdHAIHERI5OTk5tRsbGhkZGhDAwMDAwLMKGwsZEMAQwLEFCLgBHbIBByYrsQ0QuAEdsgEPJiuxAAO4ARyyAQImK7ESFbgBHLIBFCYrAbkABgBAsxASAwVKZIqKSmSMUkKyCB0AuABqtAUDBQYDEENYPBvEWYcY/BjAwAUBsg0XFbgAarQQEhAGEhBDWDwbxFmHGPwYwMAFshoSAxESObcLGQpAGxkaCBoQyNgawBDAuf////+xHAi4AHGyCggcK7n/////sQobuABxshscHCu5/////7EYDbgAcbILDRwruf////+xCxm4AHGyGRgcKwFLsBhQWLEVGUmxGwBJYbAgYyCxGRuKOCM4WTEwWSExIyMxETEzMzEBMTEBMTMzMRExIyMxETEBIyMBMQGsj5Dh4QEMAQje3o+Q/u2Xl/7tBb77cwSN+kIE1PssBO8AAQCNAAAFPAW+ABcA0rAVK1ixAQO4AQBACQEIARgAIQUAAbgAALIDDwQrsQESsANACQEMARkBIQ0AAbgAALISEAQrALcLAksPORYHOT/APz/AsRNLP7UUFBMSEhMQwMDAwMCxBQi4AR2yAQcmK7EAA7gBHLIBAiYrsQ0QuAEdsgEPJisBswUDBQMQwIexFgC4AGoY/BjAsQgWEMABsQsNuABqsxASEBIQwIcY/BjQAbEUCxDAsQUDCLn/////sRYIuABosgsIHCuxEBIIuf////+xCxS4AGiyFRQcKzEwWSExIyMxETEzMzEBMTERMTMzMREjIwExMQGsj5ChoQJOj5CZmf2iBb77+QQH+kIEIwACAFr/2AXfBeYADAAZARawFStYsQEDuAEAQAkBCAEaAB4EAAG4AACyAw8EK7EBCbADQAkBDAEbAR4MAAG4AACyCRAEKwC7ABwAqAAbALOzBgweCyuxDFA/sQY2P7UTHAYNGwwQ7BDsPbcJEAMWEBYGDBESOTkvxC/EGAGzAwMJCRDAENC7ABwAkgAbAJ2zCQMeCyu0EBwJFhvsEOwBMTCxEDorugAuAEAALrZADRNAEBYbKyuwFUNYswYJEBO4AC5ADBATBhMQCTwTEAkGOCtZsBVDWLMDBhMWuAAuQAwWEwYTFgM9FhMGAzgrWbAVQ1izAAMWGbgALkAMFhkAGRYDPhkWAwA4K1mwFUNYswkMDRC4AC5ADBANDA0QCT8QDQwJOCtZWQUgABEQACEgABEQACERMhI1NAIjIgIVFBIzAxz+vP6CAX4BRAFGAX3+g/66vNTUvLvU07woAZ4BYQFoAaf+Wf6Y/p/+YgEFAQ3v9AEU/uz07/7zAAACAJwAAAUEBb4AEgAdARmwFStYsQESuAEAQAkBCAEeACEFAAG4AACyEg8EK7EBCLASQAkBDAEfAR4MAAG4AACyCBAEKwCxEUs/sQM5P7QFAwEDQiuxHBu5AKgAAxD8wLMUFAMRERI5L7kADQCz/LMUDRQNshEDDCuzCw0UFBDAEMCxDxK4ARyyAREmK7EcGxDAsRQUEMABsR0PuABkswESARIQwIcY/BjAsw0SDhPAwBDEAbkAGACSsQgIENDsA7IAGB1JU1iygAgYSVFYsRgdEDyxGEA4WVkxMLEYOiu6AC4AQAAutkAUG4AYGxsrK7AVQ1izBQgYG7gALkAMGBsFGxgIPBsYCAU4K1mwFUNYswgLFBi4AC5ADBgUCxQYCD8YFAsIOCtZWTMRMTMxITIEFRQEIyYHMRExIyMBMSEyNjU0JiMhMZyZAc77AQb++vuygpmaATMBAIGBgYH/AAW+6+Hu9wED/fUDCnJzaWkAAAIAWv+VBeQF5gARACMBHrAVK1hLsB5QWLAAjVmxAQe4AQBACQEIASQAHgQAAbgAALIHDwQrsQENsAdACQEMASUBHgwAAbgAALINEAQrALEKNj+6ABoAqAAKEOyzFw0dBy8vLy+xBFA/shEAILkAswAEEOzAwLIBEAQQwMC1ExIjFAQKERI5OTk5AbMHBw0NEMAQ0AG5ABcAkrENHbgAnbEaIIfsEOyxABHUwLMCDw0HERI5ObUSIhMVDQcREjk5OTkxMLEQOiu6AC4AQAAutoAKHYAKHRsrK7AVQ1izCg0XGrgALkAMFxoKGhcNPBoXDQo4K1mwFUNYswcKGh24AC5ADB0aChodBz0dGgoHOCtZsBVDWLMEBx0guAAuQAwdIAQgHQc+IB0HBDgrWVkFJzEGIyAAERAAISAAERAHMRcBNxcxNjU0AiMiAhUUEjMWNzEFSLCe3v68/oIBfgFEAUYBfZug/UaboUbUvLvU07xcSWujYAGeAWEBaAGn/ln+mP7Bx5YBTqWTfML0ART+7PTv/vMBIgACAJwAAAVrBb4AJAAvATCwFStYsQEkuAEAQAkBCAEwACEFAAG4AACyJA8EK7EBCLAkQAkBDAExAR7/AAG4AACyCBAEKwCxI0s/sQM5P7QFAwEDQiuxLi25AKgAAxD8wLMmJgMjERI5L7kAHwCz/LMmHyYfsiMDDCuxJiYQwLMNDCYfERI5ObEWIxDEsSEkuAEcsgEjJiu5ABUA2bEWKSuxLi0QwAGxLyG4AGSzASQBJBDAhxj8GMCzHyQgJcDAEMQBuQAqAJKxCAgQ0OyyHgwIEMDAshYSCBDAwLARwLEaErEbEbgAZLIREhwrA7EVEhDAA7IAKi9JU1iygAgqSVFYsSovEDyxKkA4WVkxMLEYOiu6AC4AQAAutkAmLYAqLRsrK7AVQ1izBQgqLbgALkAMKi0FLSoIPC0qCAU4K1lZMxExMzEhMgQVFAcGBzEWFxYXFxYWFxUhJiYnJyYmIyExETEjIwExITI2NTQmIyExnJkCTNIBAY8mMBsWfgUHAhol/q0MEgECAnGD/s6ZmgEzAWR3d3Fx/pAFvuG41GIaEgsNS7HxSDwSJxeXV4hjVP27AzxhYmFhAAEAUP/YBQgF5gAtAg6wFStYS7AUUFiwAI1ZsQEmuAEAQAkBCAEuAB4EAAG4AACyJg8EK7EBD7AmQAkBDAEvAR4MAAG4AACyDxAEK7SADyYvLkmKiklhVFi0Mw8mLy5JiopKYVNYuQAm/8A4WVkAsRJQP7EpNj+6ABsAswASEOyxFhIQxLoABACoACkQ7LMiCxIpERI5ObEtKRDEAbkABwCdtBUkKRImEIfAxPwBAbEJBxDAsRYVEMCwFhCwFtSxFxcBwQDBsRcWBg65ABcAne0BuQAeAJK0LA0pEg8Qh8DE/LAgwLEtLBDAsC0QsC3UsQAAAcEAwbEALQYOuQAAAJLtAbkAQABkRWlTWLgAYLEPHklTWLMLIg8mERI5ObULIgsiCyIIBkmwEGGwgGKwIiM4WVkBsgEeGElTWLEeGBA8sR5AOFmyAQAHSVNYsQAHEDyxAEA4WQCyICIXSVNYsxZAF0BlOGU4WbIgAAtJU1izLUAAQDg4WTEwsRA6K7oALgBAAC6zgB4bGisrsBVDWLMPEhseuAAuQAweGxIbHg8/HhsSDzgrWboALgBAAC6zgAcEGisrsBVDWLMmKQQHuAAuQAwHBCkEByY9BwQpJjgrWboALgBAAC62gAAEgAAEGysrsBVDWLMpLQAEuAAuQAwABCkEAC08BAAtKTgrWbAVQ1izEhYXG7gALkAMFxsSGxcWPhsXFhI4K1lZATEmJiMiBhUUFxYXBBcWFRQEISAAJzEhMRYWMzI2NTQnJickJyY1NCQhMgAXMQO5CKiHdYRFRN0BQWxs/rr+6v7p/sYLASgFoI+TpTs6vv6idnUBNgEI9wE2EQQFaXtnXEIkJDFIXl3Oz/MBAu51fl9UUycnKk5bWr/W+/783QAAAQAdAAAEyAW+ABIAl7AVK1ixARK4AQBACQEIARMAHv8AAbgAALISDwQrAbkADwBkswESARIQwIcY/BgBsxIPEg+6/////wAMKwCzCDkRSz8/tAgIBghCK7MMDgEDuQBmAAgQ/MDAwLEPErgBHLIBESYrAbIGARIQwMSxDg8QwLIUEgZJRLIIFA8Q5LEDBbgBH7IABiYrsQsKuAEfsgAIJisxMFkhETEhMTU1MSExFRUxITERMSMjAdn+RASr/kSZmgS5goOCg/tHAAEAk//YBTYFvgAXAO+wFStYsQEHuAEAQAkBCAEYACEFAAG4AACyBw8EK7EBFrAHQAkBDAEZASENAAG4AACyFhAEKwCxCTk/sRU5P7EDUD+6AA8AswADEOyxBwq4AR2yAQkmK7ETFrgBHbIBFSYrAbEKDLgAZLQGBwYGBxDAL4cY/BjAsRMSuABkswAWABYQ0IcY/BjABbIAEwpJU1iyEhMKEDw8sxJAE0A4OFkxMLEQOiu6AC4AQAAutoAPDIAPDBsrK7AVQ1izAwYMD7gALkAMDA8DDwwGPg8MBgM4K1mwFUNYswADDxK4AC5ADBIPAw8SAD8SDwMAOCtZWQESACEgAAMRMTMzMREUFjMyNjURMTMzMQU2Af7p/sX+0v7dAZmaj5CahJmaAir+xf7pASMBLwOU/GKenpGrA54AAAEAJwAABS8FvgAPAPWwFStYsQAAuAEAQAkBCAEQAB4GAAG4AACyAA8EK7EAC7AAQAkBDAERAR4PAAG4AACyCxAEKwCxDks/tQoCOQYFDhDMzD/ABLEAA7gBHbIBAiYrtgAPAA8AARYrtgMFAwUDARYrsQgLuAEdsgEKJiu2Cw0LDQsBFiu2CAYIBggBFiu1Dw8ODQ0OEMDAwMDAAbMPDQsAERI5ObEND0lksCZQWLNADSYPEBrIGlmxBQCxAwC4AGiyDwAcKwOxBguxCAu4AGmyDQscKwMBsmAGBUkgZIpTWCCwAFJYuACAYiCyBgYICCM4sgUFAwgjOBshWRshWTEwWRMxMzMxATExATEzMzEBIyMno6MBQwFCnp/+DpKSBb77nQRj+kIAAQAhAAAHbgW+ABsB3LAVK1ixAAG4AQBACQEIARwAHgYAAbgAALIBDwQrsQASsAFACQEMAR0BHg8AAbgAALISEAQrALEbSz+xCjk/sRVLP0AMGBcKEQM5DQwVBwYbEMDAEMDAP8AQwMC1AAAbGhobEMDAwMDAtQsLCgkJChDAwMDAwLUWFhUUFBUQwMDAwMCxAQS4AR2yAQMmK7YBAAEAAQEWK7YEBgQGBAEWK7EPErgBHbIBESYrthIUEhQSARYrtg8NDw0PARYrAbEAARDQQAkaAAAaABoAASUrOgGxGgBJZLAwUFizQBowABAayBpZsRQSENBACRYAFBYUFhQBJSs6AbEUFklksDBQWLNAFjAUEBrIGlmzCQkSARESORBACQsACQsJCwkBJSs6AbEJC0lksCZQWLNACyYJEBrIGlmzFwsYCRDAEMCxBgGxBAG4AGiyAAEcKwOxDRKxDxK4AGmyFBIcKwO5/////7EHGLgAabIaGBwruf////+xGAm4AGmyCQccK7n/////sQcYuABpshoYHCu5/////7EMF7gAaLIWFxwruf////+xFwu4AGiyCwwcK7n/////sQwXuABoshYXHCsBsgcGALn/8AATK7IXGAG5ABAAEyuyDQwAuf/wABMrMTBZIQExMzMxEzExEzMzEzExEzEzMzEBIyMDMTEDIwG6/megoPXSo6TV9Jub/meSkuznkgW++8wENPvVBCv6QgSF+3sAAAEAHQAABTkFvgAdAZSwFStYsQAduAEAQAkBCAEeAB4HAAG4AACyHQ8EK7EAErAdQAkBDAEfAR4OAAG4AACyEhAEKwC1DQU5FBxLP8Q/xLMQARwFERI5ObEaHbgBHLIBHCYrth0BHQEdARYrthoYGhgaARYrsRIVuAEcsgEUJiu2FRcVFxUBFiu2EhASEBIBFiuxAwa4AR2yAQUmK7YDAgMCAwEWK7YGCAYIBgEWK7ELDrgBHbIBDSYrtgsJCwkLARYrtg4QDhAOARYrAbMQARIdERI5ObEDHRDEsQ4SEMS5/////7EGA7gAaLICAxwrsRAOCLIIAx0rAwG5/////7EaHbgAabIBHRwrsRASCLIXHR0rAwG5/////7EVErgAaLIQEhwrsQEdCLIXEh0rAwG5/////7ELDrgAabIQDhwrsQEDCLIIDh0rAwEBsmAJCEkgZIpTWCCwAFJYuACAYiCyCQkLCCM4sggIBggjOBshWRshWQGyYBcYSSBkilNYILAAUli4AIBiILIXFxUIIziyGBgaCCM4GyFZGyFZATEwWTMBMQExMzMxATExATEzMzEBMQExIyMxATExATEjIx0B3P5EtbYBAwEMsbH+QAHgt7j+4P7etbYC6ALW/iUB2/1B/QEB+v4GAAABAB8AAAU5Bb4AEgESsBUrWLEBErgBAEAJAQgBEwAe/wABuAAAshIPBCsBsQ8QuABkswASABIQwIcY/BjAAbMSEBIQuv////8ADCuzDxAAEhDAEMAAtAsEORFLPz/AsgEEERESObIOHgEQeuQYsRASuAEcsgERJiuxAgW4AR2yAQQmK7YCAQIBAgEWK7YFBwUHBQEWK7EJDLgBHbIBCyYrtgkICQgJARYrtgwODA4MARYrAbECEhDAsQwQEMC5/////7EFArgAaLIAAhwrsQkICLIHAh0rAwW5/////7EJDLgAabIPDBwrsQUHCLIIDB0rAwUBsmAIB0kgZIpTWCCwAFJYuACAYiCyCAgJCCM4sgcHBQgjOBshWRshWTEwWQExATEzMzEBMQExMzMxATERIyMCIP3/trcBMgEfrq7+GpmaAikDlf2CAn78cf3RAAABADMAAASwBb4AEwDbsBUrWLEBE7gBAEAJAQgBFAAeBwABuP/8shMPBCuxARCwE0AJAQwBFQEeDgABuAAAshAQBCsAsxJLCDk/P7QQEhISQiuyEgwNuABnsRISEMD8wBCyAAMMERI5shMAEhESObQICAYIQiuyCAIDuABmsgoICBDAwPzAELIKDQIREjmyCQoIERI5AbcKCAkQBgASExDAwMQQ1MDAsQMFuAEfsgAGJiuxDQ+4AR6yABAmK7MMCQITEMAQwLn/////sQIKuABosgwKHCu5/////7EMALgAaLICABwrMTBZEwExITE1NTEhFRUBMSExFRUxITUzAvr9HwRk/PgDBvuFAQIDt4KDeXn8OYKDgQAAAQCB/msCeQXIAAsAh7AVK1ixAQC4AQBACQEIAQwAHv8AAbgAALIADwQrsQEJsABACQEMAQ0BHv8AAbgAALIJEAQrALUDAjkKC1E/xD/EQAkIQAoICggKACUrOkAJBUADBQMFAwAlKzqzBQUICC/AL8ABswEAAQAQwIdACQdAAAcABwAAJSs6sAcvsgMJBsDMzDEwWRMRMSEVIzERMTMVIYEB+Pj4/gj+awddxfotxQAB/73/2AJ8BeYAAwBZsBUrWLEBAbgBAEAJAQgBBAAeBgABuAAAsgEPBCuxAQOwAUAJAQwBBQEeDgABuAAAsgMQBCsAtQIBOQADSz/AP8ABsQADEMCxAAOxAgG4AHmyAAEcKwMxMFkFATMBAYz+MfABzygGDvnyAAABADH+awIpBcgACwCHsBUrWLEBA7gBAEAJAQgBDAAe/wABuAAAsgMPBCuxAQCwA0AJAQwBDQEe/wABuAAAsgAQBCsAtQkKOQIBUT/EP8RACQRAAgQCBAIAJSs6QAkHQAkHCQcJACUrOrMHBwQEL8AvwAG1BgUJAwYFL8DMzIdACQBABQAFAAUAJSs6sAAvsArAMTBZATEhNTMxETEjNSExAin+CPj4Afj+a8UF08UAAAEAfwKYBC0FkwAIAFWwFStYsQEGuAEAQAkBCAEJAB7/AAG4AACyBg8EK7EBAbAGQAkBDAEKAR7/AAG4AACyARAEKwCzCDkFRD8/swEFBAPAwBDAAbQEAwgBBhESOTk5MTBZAQEjAzEDIwEzAr4Bb+Tz8+QBb2gFk/0FAhb96gL7AAABAAD/AARz/2kAAwBHsBUrWLEBALgBAEAJAQgBBAAe/wABuAAAsgAPBCuxAQKwAEAJAQwBBQEe/wABuAAAsgIQBCsAsQECuABksgADUT/A/MAxMFkRNSEVBHP/AGlpAAAB/9IE1gHNBf8AAwBNsBUrWLEBAbgBAEAJAQgBBAAe/wABuAAAsgEPBCuxAQOwAUAJAQwBBQEe/wABuAAAsgMQBCsAswJVAEs/7AG5AAMBFrABEOywA8gxMFkTASET/v7UATrBBNYBKf7XAAACADv/5AQ4BF0AKQA6AdKwFStYsQEDuAEAQAkBCAE7AB7/AAG4AACyAw8EK7EBHbADQAkBDAE8AR4QAAG4AACyHRAEKwCxI0s/sQBOP7EZQD+xGTW5ALYAABDsELkAEACp7LQGCS8rABDUwNDAsAAQsCjAsRUZEMSxIiS4ASOyASMmK7kAJQDZsSQpK7kAIQDZsSIpK7JALzVJU1ixLzUQPLKABi9JUVixL0A4G7KANQBJUVixNUBlOBu1CUAGQC9AODg4WVlZBLEUAESyABAJSVNYtRQBL0AJQGU4ZThEsQYJVVixBkBlOFlZsBRFWLEsQGU4WQG5ADIAoLQcHRkQAxDAwIfsAbkADABssxwdHB0QxIcY/BiwDMCwK9SwKsCwJ8CwJ9ADsAMQsBXUsRQUAcEAwbEUFQYOuQAUAKDtAbkAJQD2sSMnEEVYITwbsABYIcQb5FlZuQAhAPaxIx0QRVghPBuwAFghxBvkWVkBsRQARLIhKzJJUlixMisQPLKAMgNJUVixMkBlOBuygB0rSVFYsRQBRFlZWbAURViyKyoyEDw8sytAKkA4OFkxMLEYOiu6AC4AQAAutoAyNYA1MhsrK7AVQ1izAAMyNbgALkAMMjUANTIDPjUyAwA4K1lZBSImNTQ2Nzc2NzY2JyYnJiMiBgcxITE2NjMyFhURFBYXFRUjIzEmJycGEzUxBgcHBgYVFBYzMjc2NzYBipe4pp+9SjEVFwMGKTFcUlwD/u0J8urL6xgkm5sTBgGHgjJSaktORj+KUhALCxytjZWzFxoKGAo0Gy4aH1BJv76rlP2gSTsRASdCPwKgAa59HBEUDks5QUphEyUlAAACAH3/5ASfBb4AFwAnAU+wFStYsQEXuAEAQAkBCAEoACIJAAG4AACyFw8EK7EBDLAXQAkBDAEpAR4RAAG4AACyDBAEKwCxD04/sQlAP7kAHgCqsQkYuQC1AA8Q7BDssQM1P7EUSz+xBQMQ2LJAHhhJU1ixHhgQPLKACR5JUVixHkA4G7KAGA9JUVixGEBlOFlZWbEAArgBIbIAAyYrAbMMDAAXEMAQ0LkAGwCUsQAXh+wBsBcQsQAXh7kABABsGPwYsBPAsAXAsCHEsBPAA7MVABQARESyABshSVNYsoAMG0lRWLEbIRA8sRtAOLEUAUQbsoAhF0lRWLEVAURZWVmwFUVYsSEbEDyxIUBlOFkxMLEYOiu6AC4AQAAutkAYHoAbHhsrK7AVQ1izCQwbHrgALkAMGx4JHhsMPB4bDAk4K1mwFUNYswwPGBu4AC5ADBsYDxgbDD8bGA8MOCtZWRMxMzMxETE3NjMyEhUQAiMiJycxFTEhMSUyNjU0JiMiBhUxMTEUFxZ9j5AGdL7P/PzPvXUM/ucCBXSCgnNzgkFABb799Aij/s76/vf+vJgQjNCtmp2xtqKVVFQAAQBG/+QEMQRdAB0BQrAVK1ixAQe4AQBACQEIAR4AHgsAAbgAALIHDwQrsQENsAdACQEMAR8BHhAAAbgAALINEAQrALEETj+5ABkAtOyxAAQQxLEKQD+5ABMAqeyxDgoQxAGxBwcQ0LkAFgCesQoEh+wBsA0QsADUsR0dAcEAwbEdAAYOuQAdAJ7tAbANELAO1LEPDwHBAMGxDw4GDrkADwCe7QEAsiAPHUlTWLMAQB1AZThlOFkxMLEYOiu6AC4AQAAutoATFoATFhsrK7AVQ1izBwoTFrgALkAMFhMKExYHPRYTCgc4K1mwFUNYswQHFhm4AC5ADBYZBBkWBz4ZFgcEOCtZugAuAEAALraADxOADxMbKyuwFUNYswoODxO4AC5ADA8TChMPDjwTDw4KOCtZsBVDWLMABBkduAAuQAwdGQQZHQA/HRkEADgrWVkBMQYEIyIAERAAMzIEFzEhMSYmIyIGFRQWMzI2NzEEMRb+/s/3/vMBF+3SAQwJ/twEa1RscXFsTmwJAZPL5AEmARABCgE56L1RZK2moqlsWAACAEb/5ARoBb4AGAAkAV+wFStYsQEDuAEAQAkBCAElAB4JAAG4AACyAw8EK7EBELADQAkBDAEmASL/AAG4AACyEBAEKwCxAE4/sQZAP7kAGQCrsQYfuQC2AAAQ7BDssQ41P7ETSz+xFQAQ2LEKBhDQskAZH0lTWLEZHxA8soAGGUlRWLEZQDgbsoAfAElRWLEfQGU4WVlZsQsNuAEhsgAOJiuxEBK4ASqyABMmKwGzAwMOEBDAENC5ABwAoLEOEIfsAbAQELALuABssQ4Qhxj8GLAUwLAKwLAiwLAVwAOzFQAUAEREsgAiHElTWLKAHANJUVixHBQQPLEcQGU4sRQBRBuygA4iSVFYsRUBRFlZWbAVRVixIhwQPLEiQDhZMTCxGDorugAuAEAALrZAHxmAHBkbKyuwFUNYswMGGRy4AC5ADBwZBhkcAz0cGQYDOCtZsBVDWLMAAxwfuAAuQAwcHwAfHAM+HxwDADgrWVkFIgIRNBIzMhcXMRExMzMxETEjIzE1MQcGAyIGFRQWMzI2NTQmAhXQ//7PuXEMj5CLiwV3dHOCgXN0goIcAUQBCfoBMpwQAg36QosHoAOBsZ2arbailagAAgAv/+QEOgRdABoAJQG/sBUrWLEBA7gBAEAJAQgBJgAeCAABuAAAsgMPBCuxAQmwA0AJAQwBJwEeEAABuAAAsgkQBCsAsQBOP7EGQD+xKhK4ALSxIQAQHewrsRcAEMSxKiC4AKmxIQYQHewruQAlAGuzDQ0ABhESOS/8sw0lDSWyAAYMK7MbJQwNEMAQwLJAICVJUlixICUQPLMbQCVAZThlOLIAJQ1JU1izDEANQGU4ZThZWbIADRJJU1ixEg0QPLMMQA1AODiyACUNSVNYsxtAJUA4OFlZAbEDAxDQuQAcAJO1HAsJCSQOuACesQYAhxj8GMAQ0MDAGPwYAbAJELAX1LEWFgHBAMGxFhcGDrkAFgCe7QEBskAcJElSWLEcJBA8sRxAOFmzJSQNDhDAwMAAsiAMFklTWLMWQBdAZThlOBuyIAwWSVNYsRZAZThZWTEwsRg6K7oALgBAAC62gCAlQBwlGysrsBVDWLMGCxwguAAuQAwcIAYgHAs8IBwLBjgrWbAVQ1izAwYgJbgALkAMJSAGICUDPSUgBgM4K1m6AC4AQAAutoASDoASDhsrK7AVQ1izAAMOErgALkAMDhIAEg4DPhIOAwA4K1lZBSIAERAAMzIAERYHMSExFhcWMzI2NzEhMQYEEzEmJyYjIgcGBzECNPj+8wES8/kBDQIH/RsKLzyMQW8LASQl/vMRCio3dG86JBAcATIBGwEFASf+0/7qICGBQFBKNKa8AqxiN0lVNlcAAAEAFAAAAosF0gAbAOywFStYsQEFuAEAQAkBCAEcACL/AAG4AACyBQ8EKwGwBRCyBQwMwIe5AAIAbBj8GAGzBQIFArr/////AAwrALIQBEs/L7kAFACp7LkACABrsQsQENT8swsICwiyBBAMK7MLCwgIEMAQwLQAAAgZGcDAEMDAsQIFuAEjsgEEJisAS7AeUliwgBuwQFmxExlJU1ixExkQPLATS7AeUliwgBuwQFk4WQGwBRCyCQwHwMDMAbACELIaARjAxMSxFBDAwLASxAEBS7AeUliwYBuwIFmxEhhJU1ixEhgQPLASS7AeUliwYBuwIFk4WTEwWQExETEjIzERMSM1MzE1NDYzNhcVIyIGFRUxMxUB0o+Qn5+nqkw7WzkluQN3/IkDd8lbnZoBCOUuRzHJAAACAFL+QwRsBF0AIgAuAZOwFStYsQELuAEAQAkBCAEvAB4JAAG4AACyCw8EK7EBF7ALQAkBDAEwAR4RAAG4AACyFxAEKwCxCEs/sRZEP7EOQD+yGlEpuAC1sQgjuQCqAA4Q7BDsP7kAAAC07LETDhDYsQQIENiyQCMpSVNYsSMpEDyygA4jSVFYsSNAOBuygCkISVFYsSlAZThZWVkEsgAIAElTWLoAgAAAABpJUVixAEBlOFlZsR4aEMQEsgAIH0lTWLMfQB5AZThlOFkBswsLFhcQwBDQuQAmAJ+xFheH7AG5AAMAbLIWFxcQhxj8GLATwLAswLAFwLALELAe1LEfHwHBAMGxHx4GDrkAHwCf7QEBsxUAFABERLIALCZJU1ixJiwQPLJAJgtJUFixJkBlOLEUAUQbsoAWEklRWLEVAURZWVmwFUVYsSwmEDyxLEA4WTEwsRg6K7oALgBAAC62gCMmgCMmGysrsBVDWLMLDiMmuAAuQAwmIw4jJgs9JiMOCzgrWbAVQ1izCAsmKbgALkAMJikIKSYLPikmCwg4K1lZBTI2NTUxBwYjIgA1EBIzMhcWFzE1MSEREAYhIiQnMSExFhYTIgYVFBYzMjY1NCYCcHlqF1+y1P77/s+3ZRMQAQ7//vLe/voJATgEX1pwfn5vcX9/4nWHhiODATH6AQABOIUZHp/7+v7+9a2ZODMER6uYlaeqlpapAAABAIUAAAReBb4AHwDxsBUrWLEBH7gBAEAJAQgBIAAiCQABuAAAsh8PBCuxAQ+wH0AJAQwBIQEiEQABuAAAsg8QBCsAsQQ1P7ERSz+xC0A/sR5LP7oAFwBjAAsQ7LEICxDIsRwfuAEjsgEeJiuxAQO4ASGyAAQmK7EPErgBI7IBESYrAbEbHLgAbLMBHwEfEMCHGPwYwLEFHBDAsRIUuABssw4PDg8Q0IcY/BjABbIAHBJJU1iyFBIcEDw8tw5AD0AUQBJAODg4OFkBMTCxGDorugAuAEAALraAFBeAFBcbKyuwFUNYswsOFBe4AC5ADBQXCxcUDjwXFA4LOCtZWTMRMTMzMRExMTc2MzIWFRExIyMxETQmIyIGFTERMSMjhY+QF2rKrMOPkFdacXmPkAW+/fggh8y1/SQCqGVhiID9mgAAAgCNAAABsQXJAAkADQDssBUrWLEBCbgBAEAJAQgBDgAi/wABuAAAsgkPBCsBuQAGAGyzAQkBCRDAhxj8GAGzCQYJBrr/////AAwrALEISz+xBD8/sSoLuQEbAG2xDQQQ3B3sK7EBA7gBIrIABCYrsQYJuAEjsgEIJisBswQGAQkQwBDAAbAGELkAbQAM1B2xKgq4ARjsK7EKCUkgsABSWLgAgGJmILAAUlggsAojOLAMIzgbIlkbIlkxMLMJBgwKRyNHYIpHikdgYbMJBgwKRiNGYIpGikZgYWGwgGJotAEEBAAAFUiKOBWzAQEABBIUNBS1CQ4PBhgFK1kzETEzMzERMSMjAyERIZCPkI+QAwEk/twEQPvABcn+9gACAAb+SgGtBckADwATAOOwFStYsQEPuAEAQAkBCAEUACL/AAG4AACyDw8EKwGwDxCyAA8AwIe5AAUAbBj8GAGzDwUPBbr/////AAwrALEIUT+xAz8/sSoRuQEbAG2wE9wd7CuxAAK4ASKyAAMmKwGwDxCwCcSzAA8DBRDEEMSxCwjAwAGwBRC5AG0AEtQdsSoQuAEY7CuxEA9JILAAUli4AIBiZiCwAFJYILAQIziwEiM4GyJZGyJZMTCzDwUSEEcjR2CKR4pHYGGzDwUSEEYjRmCKRopGYGFhsIBiaLQBBAQAABVIijgVswEBAAQSFDQUWRMxMzMxERQGIyc1FzI2NTEDIREhi4+Qmb1OIzooAgEk/twEQPtJsY4B5QElNQZA/vYAAQCNAAAEfgW+ABsBBLAVK1ixARu4AQBACQEIARwAIgkAAbgAALIbDwQrsQAPsBtACQEMAR0BHhIAAbgAALIPEAQrALEENT+xGks/sRFLP7EKRD+xAQO4ASGyAAQmK7EYG7gBI7IBGiYrsQgLuAEksgEKJiu2CAcIBwgBFiu2Cw0LDQsBFiuxDxK4ASSyAREmK7YPDg8ODwEWK7YSFBIUEgEWKwG1BhcLFwQYuABsswEbARsQwIcY/BjACMDAAbELDxDQtRUNFRIXC4cIwMABuf////+xCAu4AG6yFwscK7EEGAiyBhcdKwOzDRcLDxAIwAG5/////7ESD7gAbbINDxwrsRcLCLIVDx0rAwEBMTBZMxExMzMxETEBMTMzMQExATEjIzEBMQcxETEjI42PkAFmsbH+dwGTqqv++nePkAW+/OYBnP5k/VwB1H3+qQAAAQCNAAABrAW+AAkAcLAVK1ixAQm4AQBACQEIAQoAIv8AAbgAALIJDwQrAbkABgBsswEJAQkQwIcY/BgBswkGCQa6/////wAMKwCxBDU/sQhLP7EBA7gBIbIABCYrsQYJuAEjsgEIJisBswQGAQkQwBDAMTC1CQoLBhgFK1kzETEzMzERMSMjjY+Qj5AFvvpCAAABAIMAAAacBF0ANQHgsBUrWLEBNbgBAEAJAQgBNgAiCQABuAAAsjUPBCuxARiwNUAJAQwBNwEiEQABuAAAshgQBCsAsRpLP7EEPz+xDEA/sRRAP7kAIABjsRQtuABjtQwHBCc0Sz/EEMAQ7BDssTI1uAEjsgE0JiuxJSi4ASOyAScmK7EBA7gBIrIABCYrsRgbuAEjsgEaJisBswUHMTK4AGyzATUBNRDAhxj8GMDAwLMRECQluABstiooKigoGDUREjkvwIcY/BjAwMABsR0buABssxcYFxgQwIcY/BjABbIAMihJU1iyKigyEDw8txEQJSQqKEAGFzhZsgAlG0lTWLIdGyUQPDy1GBcdG0AEFzhZuACAsRg3SVFYtRgXHRtABBc4WbElG0kgsTIoSSCKVVhgVli0GBcdG0BlsAQXOFmxJRtJILEyKEkgilVYUFi2ERAoKiQlQGWwBhc4G7cRECgqJCVABhc4WbElG0kgsTIoSSCKVVhQWLYRECgqJCVAZbAGFzgbtxEQKCokJUAGFzhZGyJZGyJZGyJZATEwsRg6K7oALgBAAC62gB0ggB0gGysrsBVDWLMUFx0guAAuQAwdIBQgHRc8IB0XFDgrWbAVQ1izDBAqLbgALkAMKi0MLSoQPC0qEAw4K1lZMxExMzMxFTExNjc2MzIXFhcxNzYzMhYVETEjIzERNCYjIgYVMRExIyMxETQmIyIGFTERMSMjg4iJEx1ftZBcJBUjWaqxyI+QUFRaX4+QVFdXXY+QBECvLiR6YSUtOXrSuv0vAn96dW9o/WkCrmJeb2j9aQAAAQCFAAAEXgRdACAA8bAVK1ixASC4AQBACQEIASEAIgkAAbgAALIgDwQrsQEQsCBACQEMASIBIhEAAbgAALIQEAQrALEEPz+xEks/sQxAP7EfSz+6ABgAYwAMEOyxCAwQyLEdILgBI7IBHyYrsQEDuAEisgAEJiuxEBO4ASOyARImKwGxHB24AGyzASABIBDAhxj8GMCxBR0QwLETFbgAbLMPEA8QENCHGPwYwAWyAB0TSVNYshUTHRA8PLcPQBBAFUATQDg4ODhZATEwsRg6K7oALgBAAC62gBUYgBUYGysrsBVDWLMMDxUYuAAuQAwVGAwYFQ88GBUPDDgrWVkzETEzMzEVMTE2NzYzMhYVETEjIzERNCYjIgYVMRExIyOFiIkRFGrKrMOPkFdacXmPkARAoR0ah8y1/SQCqGVhiID9mgAAAgBG/+QEnwRdAAwAGQEWsBUrWLEBA7gBAEAJAQgBGgAeCAABuAAAsgMPBCuxAQmwA0AJAQwBGwEeEAABuAAAsgkQBCsAuwAcAKkAGwC0swYMHgsrsQxOP7EGQD+1ExwGDRsMEOwQ7D23CRADFhAWBgwREjk5L8QvxBgBswMDCQkQwBDQuwAcAJMAGwCeswkDHgsrtBAcCRYb7BDsATEwsRg6K7oALgBAAC62QA0TQBAWGysrsBVDWLMGCRATuAAuQAwQEwYTEAk8ExAJBjgrWbAVQ1izAwYTFrgALkAMFhMGExYDPRYTBgM4K1mwFUNYswADFhm4AC5ADBYZABkWAz4ZFgMAOCtZsBVDWLMJDA0QuAAuQAwQDQwNEAk/EA0MCTgrWVkFIgAREAAzIAAREAAhNTI2NTQmIyIGFRQWMwJy//7TAS3/AQEBLP7U/v+AhoaAgIWFgBwBMgEEAQoBOf7H/vb+/P7O8KihpaurpaGoAAIAf/5WBJ8EXQAYACcBWrAVK1ixAQC4AQBACQEIASgAIgkAAbgAALIADwQrsQEMsABACQEMASkBHhEAAbgAALIMEAQrALEPTj+xCUA/uQAfAKqxCRm5ALUADxDsEOyxF1E/sQNEP7ETDxDYskAfGUlTWLEfGRA8soAJH0lRWLEfQDgbsoAZD0lRWLEZQGU4WVlZsQACuAEisgADJiuxFBa4ASWyABcmKwGzDAwXABDAENC5ABwAlLEXAIfsAbAAELEXAIe5ABQAbBj8GLAEwLAFwLAixLATwAOzFQAUAEREsgAcIklTWLKADBxJUVixHCIQPLEcQDixFAFEG7KABABJUVixFQFEWVlZsBVFWLEiHBA8sSJAZThZMTCxGDorugAuAEAALrZAGR+AHB8bKyuwFUNYswkMHB+4AC5ADBwfCR8cDDwfHAwJOCtZsBVDWLMMDxkcuAAuQAwcGQ8ZHAw/HBkPDDgrWVkTMTMzMRUxNzYzMhIVEAIjIicnMRExIyMxATI2NTQmIyIGFTExMRQWf4iJE3S+z/v7z710Bo+QAgRzgoFzc4GBBEChG6P+zvr+9/68mAj90gJ6rZqdsbailagAAgBG/lYEagRdABcAIwFRsBUrWLEBA7gBAEAJAQgBJAAeCQABuAAAsgMPBCuxAQ+wA0AJAQwBJQEiEQABuAAAsg8QBCsAsQBOP7EGQD+5ABgAq7EGHrkAtgAAEOwQ7LETUT+xDEQ/sRUAENixCwYQ0LJAGB5JU1ixGB4QPLKABhhJUVixGEA4G7KAHgBJUVixHkBlOFlZWbEQErgBJbIAEyYrAbMDAxAPEMAQ0LkAGwCgsRAPh+wBsA8QsBS4AGyxEA+HGPwYsAvAsCHEsBXAA7MVABQARESyACEbSVNYsoAbA0lRWLEbFBA8sRtAZTixFAFEG7KADCFJUVixFQFEWVlZsBVFWLEhGxA8sSFAOFkxMLEYOiu6AC4AQAAutkAeGIAbGBsrK7AVQ1izAwYYG7gALkAMGxgGGBsDPRsYBgM4K1mwFUNYswADGx64AC5ADBseAB4bAz4eGwMAOCtZWQUiADUQADMyFxYXMTUxITERMSMjMRExBgMiBhUUFjMyNjU0JgIW0P8AAQjYsWwSDQEIj5B1c3SCgnN0g4IcATH6AQoBRJwZG7P6FgIqnQOCsZ2arbailagAAAEAgwAAAvwEXQAYAKCwFStYsQEYuAEAQAkBCAEZACIJAAG4AACyGA8EK7EBDbAYQAkBDAEaAR4RAAG4AACyDRAEKwGxDRgQxACxBD8/sQxAP7UMEwgEF0s/EMjIEEuwHlJYsCEdWbEqELgAY+wrsg4QDcAQwLEVGLgBI7IBFyYrsQEDuAEisgAEJisBtQwNBQcUFbgAbLMBGAEYEMCHGPwYwMDAEMABsA7AMTBZMxExMzMxFTExNjc2MxcRJiMiBhUxETEjI4OIiQ8TZaBBJjCDgY+QBEDDIB6iAf7bBIKE/csAAAEAPf/kBCcEXQAtAg6wFStYS7AUUFiwAI1ZsQEmuAEAQAkBCAEuAB4LAAG4AACyJg8EK7EBD7AmQAkBDAEvAR4QAAG4AACyDxAEK7SADyYvLkmKiklhVFi0Mw8mLy5JiopKYVNYuQAm/8A4WVkAsRJOP7EpQD+6ABsAtAASEOyxFhIQxLoABACpACkQ7LMiCxIpERI5ObEtKRDEAbkABwCetBUkKRImEIfAxPwBAbEJBxDAsRYVEMCwFhCwFtSxFxcBwQDBsRcWBg65ABcAnu0BuQAeAJO0LA0pEg8Qh8DE/LAgwLEtLBDAsC0QsC3UsQAAAcEAwbEALQYOuQAAAJPtAbkAQABkRWlTWLgAYLEPHklTWLMLIg8mERI5ObULIgsiCyIIBkmwEGGwgGKwIiM4WVkBsgEeGElTWLEeGBA8sR5AOFmyAQAHSVNYsQAHEDyxAEA4WQCyICIXSVNYsxZAF0BlOGU4WbIgAAtJU1izLUAAQDg4WTEwsRg6K7oALgBAAC6zgB4bGisrsBVDWLMPEhseuAAuQAweGxIbHg8/HhsSDzgrWboALgBAAC6zgAcEGisrsBVDWLMmKQQHuAAuQAwHBCkEByY9BwQpJjgrWboALgBAAC62gAAEgAAEGysrsBVDWLMpLQAEuAAuQAwABCkEAC08BAAtKTgrWbAVQ1izEhYXG7gALkAMFxsSGxcWPhsXFhI4K1lZATE0JiMiBhUUFxYXBBcWFRQEIyIkJzEhMRYWMzI2NTQnJickJyY1NDYzMgQVMQLtaFZTXTU0hQEIWVn+/dT7/vEJASQDf21WYS8vdv7sXV3xxd4BEAL6P0w5MyQaGR47RkaWoMPAuEtVOzUlGhkaPkVEj6LHw6AAAAEAFP/0AnkFZQAYAIawFStYsQEFuAEAQAkBCAEZAB7/AAG4AACyBQ8EKwG5ABQAbLIOFAUQhxj8GAGzBRQFFLr/////AAwrALECSz+zEAwPRD/EwLEKCsDAswcRBxK4AGv8wMDQsRgXuABjsQACEMTsxAG0DQ4QExQQwMTAwLIIBgUQwMSxCwvAwLEYFBDEATEwWQUGIyImNRExIzUzMREhETEzFSMxERQWMzMCeUhpmIWXlwEfr68tRzsGBm18AprJASX+28n9liYYAAEAh//kBFwEQAAgAPSwFStYsQEcuAEAQAkBCAEhACIJAAG4AACyHA8EK7EBDrAcQAkBDAEiASIRAAG4AACyDhAEKwCxIEQ/sQxEP7EZTj+xEUs/shkVERDAELkABABj7LEJC7gBIrIADCYrsR0fuAEisgAgJiuxDhC4ASOyABEmKwGzHRwdHBDAh7EgAbgAbBj8GMCzFBIJCLgAbLMMDgwOEMCHGPwYwMDABbIAIAlJU1izEggJIBA8PDxACg5ADEASQAhACUA4ODg4OFkxMLEYOiu6AC4AQAAutoAEAYAEARsrK7AVQ1izGRwBBLgALkAMAQQZBAEcPgQBHBk4K1lZAREUFjMyNjUxETEzMzERMSMjMTUxMQYHBiMiJjURMTMzAaZWWXB4j5CIiQ8VasmswY+QBED9V2RgiIACZfvAox4ah8u0At0AAAEAGwAABFgEQAAPAPWwFStYsQAAuAEAQAkBCAEQAB4KAAG4AACyAA8EK7EAC7AAQAkBDAERAR4TAAG4AACyCxAEKwCxDks/tQoCRAYFDhDMzD/ABLEAA7gBJLIBAiYrtgAPAA8AARYrtgMFAwUDARYrsQgLuAEksgEKJiu2Cw0LDQsBFiu2CAYIBggBFiu1Dw8ODQ0OEMDAwMDAAbMPDQsAERI5ObEND0lksCZQWLNADSYPEBrIGlmxBQCxAwC4AG2yDwAcKwOxBguxCAu4AG6yDQscKwMBsmAGBUkgZIpTWCCwAFJYuACAYiCyBgYICCM4sgUFAwgjOBshWRshWTEwWRMxMzMxEzExEzEzMzEBIyMbnp/o6peX/neVlgRA/NUDK/vAAAEAFAAABicEQAAbAdywFStYsQABuAEAQAkBCAEcAB4KAAG4AACyAQ8EK7EAErABQAkBDAEdAR4TAAG4AACyEhAEKwCxG0s/sQpEP7EVSz9ADBgXChEDRA0MFQcGGxDAwBDAwD/AEMDAtQAAGxoaGxDAwMDAwLULCwoJCQoQwMDAwMC1FhYVFBQVEMDAwMDAsQEEuAEksgEDJiu2AQABAAEBFiu2BAYEBgQBFiuxDxK4ASSyAREmK7YSFBIUEgEWK7YPDQ8NDwEWKwGxAAEQ0EAJGgAAGgAaAAElKzoBsRoASWSwMFBYs0AaMAAQGsgaWbEUEhDQQAkWABQWFBYUASUrOgGxFBZJZLAwUFizQBYwFBAayBpZswkJEgEREjkQQAkLAAkLCQsJASUrOgGxCQtJZLAmUFizQAsmCRAayBpZsxcLGAkQwBDAsQYBsQQBuABtsgABHCsDsQ0SsQ8SuABushQSHCsDuf////+xBxi4AG6yGhgcK7n/////sRgJuABusgkHHCu5/////7EHGLgAbrIaGBwruf////+xDBe4AG2yFhccK7n/////sRcLuABtsgsMHCu5/////7EMF7gAbbIWFxwrAbIHBgC5//AAEyuyFxgBuQAQABMrsg0MALn/8AATKzEwWSEBMTMzMRMxMRMzMxMxMRMxMzMxASMjAzExAyMBUP7EmJiuo4+QobGQkf7FkpOnq5IEQPzhAx/83wMh+8ADKvzWAAABAB8AAARUBEAAHQGUsBUrWLEAHbgBAEAJAQgBHgAeCwABuAAAsh0PBCuxABKwHUAJAQwBHwEeEgABuAAAshIQBCsAtQ0FRBQcSz/EP8SzEAEcBRESOTmxGh24ASSyARwmK7YdAR0BHQEWK7YaGBoYGgEWK7ESFbgBJLIBFCYrthUXFRcVARYrthIQEhASARYrsQMGuAEksgEFJiu2AwIDAgMBFiu2BggGCAYBFiuxCw64ASSyAQ0mK7YLCQsJCwEWK7YOEA4QDgEWKwGzEAESHRESOTmxAx0QxLEOEhDEuf////+xBgO4AG2yAgMcK7EQDgiyCAMdKwMBuf////+xGh24AG6yAR0cK7EQEgiyFx0dKwMBuf////+xFRK4AG2yEBIcK7EBHQiyFxIdKwMBuf////+xCw64AG6yEA4cK7EBAwiyCA4dKwMBAbJgCQhJIGSKU1ggsABSWLgAgGIgsgkJCwgjOLIICAYIIzgbIVkbIVkBsmAXGEkgZIpTWCCwAFJYuACAYiCyFxcVCCM4shgYGggjOBshWRshWQExMFkzATEBMTMzMRMxMRMxMzMxATEBMSMjMQMxMQMxIyMfAXL+na2tt7enqP6eAXGwsb29ra0CLAIU/r8BQf3n/dkBTP60AAABABT+SgRQBEAAGQDMsBUrWLEADrgBAEAJAQgBGgAeCgABuAAAsg4PBCuxABmwDkAJAQwBGwEeEwABuAAAshkQBCsAsQVRP7YNDBAFGBBEP8AREjk5sQ4RuAEksgEQJiu2Dg0ODQ4BFiu2ERMRExEBFiuxFhm4ASSyARgmK7YWFBYUFgEWK7YZARkBGQEWKwGzAQ0ZDhESOTmxEw6xEQ64AG2yDQ4cKwOxDBmxFhm4AG6yARkcK7IUGR0rsRETCLIMGR0rAwWxDQwQwAGyFBMAuf/wABMrMTBZAQECBiMnNRYzMjc2NzEBMTMzMRMxMRMxMzMEUP56XoasiQotcyMWFv5qnp/t5paWBED7qf7tjAPmBC8eXgRm/NkDJwAAAQApAAAD1wRAABQA27AVK1ixARS4AQBACQEIARUAHgsAAbj/+bIUDwQrsQERsBRACQEMARYBHhIAAbgAALIREAQrALMTSwlEPz+0ERMTE0IrshMNDrgAZbETExDA/MAQsgAEDRESObIUABMREjm0CQkHCUIrsgkDBLgAZbILCQkQwMD8wBCyCw4DERI5sgoLCRESOQG3CwkKEQcAExQQwMDEENTAwLEEBrgBJrIAByYrsQ4QuAEmsgARJiuzDQoDFBDAEMC5/////7EDC7gAbbINCxwruf////+xDQC4AG2yAwAcKzEwWTcBNzEhMTU1MSEVFQExITEVFTEhNSkCJwf9+wNs/eACOfxS3wJ2CHFydXb9lnV2bwAAAQBi/mwC7AXIACEAgbAVK1ixAQi4AQBACQEIASIAHv8AAbgAALIIDwQrsQEAsAhACQEMASMBHv8AAbgAALIAEAQrALMPOQBRPz9ACRkYCAcHCAgPABESOS/MERI5OQGwCBC2AwwDDBkYB8DAwNzAh0AJFEAMFAwUDAAlKzqwFC+0IQAQDx3A3MDAwDEwWQEGJjURNCYnNTY2NRE0NhcVJgYVERQHBgcxFhcWFREUFjcC7O7cPISEPNzui0FgLE1NLGBBi/5sD525AQqhUBG2EVChAQq5nQ+4CEGS/vagSCEZFiJIoP72kkEIAAABAKz+AAGRBgAAAwBOsBUrWLEBALgBAEAJAQgBBAAe/wABuAAAsgAPBCuxAQKwAEAJAQwBBQEe/wABuAAAsgIQBCsAtQIBOQADSz/AP8ABuQACAHOwABDsMTBZExEzEazl/gAIAPgAAAEAMf5sArsFyAAiAIGwFStYsQEAuAEAQAkBCAEjAB7/AAG4AACyAA8EK7EBGrAAQAkBDAEkAR7/AAG4AACyGhAEKwCzEzkAUT8/QAkJChobGxoaEwAREjkvzBESOTkBsBoQth8WHxYJChvAwMDcwIdACQ5AFg4WDhYAJSs6sA4vtAEAEhMFwNzAwMAxMFkTNRY2NRE0NzY3MSYnJjURNCYHNTYWFREUFhcVBgYVERQHBjGLQWAsTU0sYEGL7tw8hIQ8bm7+bLgIQZIBCqBIIhYZIUigAQqSQQi4D525/vahUBG2EVCh/va5T04AAQB9AU0ELwK/ABkATLAVK1ixAQC4AQBACQEIARoAHv8AAbgAALIADwQrsQENsABACQEMARsBHv8AAbgAALINEAQrAEAJABkQFgkNDAM5P8TExNzExMQxMFkTNjYzMhYXFhYzMjY3FwYGIyImJyYmIyIGB30jilI0dls+YBMwVS1LLYpIN3VZKWMsMGMYAgNSYSMrHSNIT7ZSYSkzFxtYPwAAAgC4/oIB9AQ8AAgADAC4sBUrWEuwHlBYsACNWbEBBbgBAEAJAQgBDQAe/wABuAAAsgUPBCuxAQGwBUAJAQwBDgEe/wABuAAAsgEQBCsAsxZAAApKi0SzDDkDSz8/AbAFELkAQQAL1B25AAkBFvywKiu1FAAhgAkLSSNiI2GxBQtKjGREtQEUCQUUCxDkEOSyBwUBEhE5tAAGAAcgGj0vyMgYGgC5AEEADBAduQAKARn8sCorS7AeUli4AIAaWbJAABbsGjEwWQETESMjERMzMTchESEBoVOenlJMmf7OATICqf0+/psBZQLCcgEhAAIARv8PBDEFAwAlAC8BjLAVK1ixASC4AQBACQEIATAAHv8AAbgAALIgDwQrsQEGsCBACQEMATEBHv8AAbgAALIGEAQrALAXL7kADgC07LAaxLETFxDEsCMvuQApAKnssADEtRsaAQAAGhESOTk5ObcZHBcCJRsAIxAIwMAQwMAAtw0mFwwnGwAjEAjAwBDAwACxByMQxAGxICAQ0LkALACesSMXh+wBsAYQsBPUsRISAcEAwbESEwYOuQASAJ7tAbAGELAH1LEICAHBAMGxCAcGDrkACACe7QG0GhsbBiAREjkvwEAJGkAbGhsaGwElKzoBsBovsxsaGxqyIAYMKwGzARoAGxDAEMBADhkNDAIaAQEcJiclGwAAEAcOPDw8PBAHDjw8PDwDALIgCBJJU1izE0ASQGU4ZThZMTCxGDorugAuAEAALraAKSyAKSwbKyuwFUNYsyAlKSy4AC5ADCwpJSksID0sKSUgOCtZugAuAEAALraACCmACCkbKyuwFUNYsxMZDRK4AC5ADBINGQ0SEz8SDRkTOCtZWQEzBxYXFhcxITEmJycDFzI2NzEhMQYEIyInByM3JicmERAAMzYXAxMmByIGFTEUFwLdajZNPoYP/twHNgauLk9rCQEkFv7+zzs0PmpEZEeGAQ33NC/trBERbHE5BQPDHjZ2wFQ0Bv2TA2NRxd8I3fQkSIsBAAEnAUABCfyvAmYEAaymolUAAAEAOf/YBF4FwQBBAPiwFStYsQENuAEAQAkBCAFCAB7/AAG4AACyDQ8EK7EBALANQAkBDAFDAR7/AAG4AACyABAEKwCxDFA/sR45P0AJJwAeJx4nHgAlKzoAsSMnEMSxAwwQxLAJxEAJPgADPgM+AwAlKzpACTgACTgJOAkAJSs6sUE+EMSyNg0MEMDAsy4uDB4REjkvQAkxQC4xLjEuACUrOrAxL7MxLjEusgweDCuzFhcvLhDAwMCzFRQwMRDAwMABtBcUGxUNEMTUxMRACSoAGyobKhsAJSs6QAkuABcuFy4XACUrOkAJMQAUMRQxFAAlKzqxNioQwLMjIi8AEMTUzDEwWSUGBiMiJicmJiMiBgcnNjY1NCcmJyM1MyYnJjU0JDMyBAcxITE2JiMiBhUUFhcXIRUjFhUUBwc2MzIWFxYWMzI2NwReNbpRL3cnKXEqMn4pcWp9FA0esm4iDhUBCOHkAQgD/uwCcmJhch8tIAES6AhuLmVSIE0YH1IdMXIiQy0+GhITGysgxj2eSzAzIjZ9Qy9FX7/h/thugmhYIVRZQn0tO4t8LxYPCw4TMCIAAv/7AKEEeAUeAAsALwBMsBUrWLEBFbgBAEAJAQgBMAAe/wABuAAAshUPBCuxASewFUAJAQwBMQEe/wABuAAAsicQBCsAswMeCQwvzC/MAbMAJwYVEMwQzDEwWQE0JiMiBhUUFjMyNgMmJzEHJzcxJjc2NzEnNxcxNjMyFzE3FwcxFgcGBzEXBycxBgMbg19fg4NfX4PihmnGicdEAQFCx4nHaIaHZ8iJyEQBAUDGicdpAt9fg4NfX4OD/qUBQcaJx2eHh2jHicdCQ8iJyGiGhWrGicdDAAH/7wAABIQFlQAqAX6wFStYsQEfuAEAQAkBCAErAB7/AAG4AACyHw8EKwGxEBy4AGSzAx8DHxDAhxj8GMABsx8cHxy6/////wAMK7MQHAMfEMAQwAC0DQY5Hks/P8C2EwAUKioGHhESOS/AwMCxBAMIQAkCACoCKgIqACUrOrMREA4CLwjAALIqEgHAwBBLsB5SWLgAgBpZtBgXJEAl3BrAwMBACSIAJSIlIiUAJSs6sxkaIyIvwMDAsRwfuAEcsgEeJiuxBAe4AR2yAQYmK7YEKAQoBAEWK7YHCQcJBwEWK7ELDrgBHbIBDSYrtgsKCwoLARYrtg4WDhYOARYrAbEEHxDAsQ4cEMABQA4RFBcaGBIcAiolIiMAHxDExMDAwMAQxMTAwMDAAbn/////sQcEuABosgMEHCuxCwoIsgkEHSsDBbn/////sQsOuABpshAOHCuxBwkIsgoOHSsDBQGyYAoJSSBkilNYILAAUli4AIBiILIKCgsIIziyCQkHCCM4GyFZGyFZMTBZEzUhMQExMzMxATEBMTMzMQExIRUhMQcxIRUhMRExIyMxETEhNSExNTEnMR8BDf7Dl5gBLAEakJD+0QEB/sBPAY/+ZoKC/mcBmUoCxX0CU/2oAlj9rX2aff5SAa59EIoAAAIArP6qAZEFVQADAAcAbLAVK1ixAQC4AQBACQEIAQgAHv8AAbgAALIADwQrsQECsABACQEMAQkBHv8AAbgAALICEAQrALUGBTkAA0s/wD/AQAsEBxQCAQEFAxQHAUpEERI5L8D+wAG5AAYAc7EEArgAc7AAEOzU7DEwWRMRMxEDETMRrOXl5f6qAqz9VAP/Aqz9VAACAEb+fgQtBdcAOABIAOawFStYsQEuuAEAQAkBCAFJAB7/AAG4AACyLg8EK7EBErAuQAkBDAFKAR7/AAG4AACyEhAEKwCzKxYcUT/AwEAJJQAcJRwlHAAlKzpACUQAK0QrRCsAJSs6sUZEEMCxIBwQxLMPMgA2P8DAQAkJAAAJAAkAACUrOkAJPAAPPA88DwAlKzqxPjwQwLEEABDEAUAJQQAuQS5BLgAlKzqxPkEQwLE1MsDEQAkMADUMNQw1ACUrOrAuELAg1EAJOQASORI5EgAlKzqxRjkQwLEZFsDEQAkoABkoGSgZACUrOrASELAE1DEwWQEyFhUxITE0JiMiBhUUFhcWFhUUBwYHFxYVFAYjIiY1MSExFBYzMjY1NCYnJiY1NDc2NycmNTQ3NgE0JicmJwcGFRQWFxYXNzYCPr/h/vFOQ0hVe4Hlq4cdIiZl68jJ6wEJXE9MWX+F+5+HGR0DYXBwAaxxi1tFBkFiqEc6F0EF18msR1NGOypeN2O0jZNXEw4jaHq11dm4VGJOQy1kPHGomJpaEQ0CZXyuZmb8CT9jPCcqBChFSVZMICEMJAAAAgAMBOkCnQXUAAMABwBssBUrWLEBALgBAEAJAQgBCAAe/wABuAAAsgAPBCuxAQawAEAJAQwBCQEe/wABuAAAsgYQBCsAtwUBFAcDFAEDSkQvwPzAAbkABgEWsQQAuQEWAAIv7NzsAUAJBhUEABUCFQIASkQv7NzsMTBZEyEVISUhFSEMAQL+/gGPAQL+/gXU6+vrAAL89v/WAwkF6QAMABkAoLAVK1gAsxAABhYvzNTMAbMNAwkTL8zUzDEwsRg6K7oALgBAAC62QBAWQA0TGysrsBVDWLMAAw0QuAAuQAwNEAAQDQM8EA0DADgrWbAVQ1izCQwQE7gALkAMExAMEBMJPRMQDAk4K1mwFUNYswYJExa4AC5ADBMWBhYTCT4WEwkGOCtZsBVDWLMDBhYZuAAuQAwZFgYWGQM/GRYGAzgrWVkDIAAREAAhIAAREAAhATQAIyIAFRQAMzIANQEBTgG8/kX+sf6x/kYBuwFOAir+xe/u/sUBPO3uATwF6f5F/rH+sv5FAbsBTgFPAbv89v8BU/6t///+rgFS/wAAAf5kASQBfQSbAB0A8bAVK1ixAQe4AQBACQEIAR4AHv8AAbgAALIHDwQrsQENsAdACQEMAR8BHv8AAbgAALINEAQrALAEL7kAGQCz7LEABBDEsAovuQATAKjssQ4KEMQBsQcHENC5ABYAnbEKBIfsAbANELAA1LEdHQHBAMGxHQAGDrAdzQGwDRCwDtSxDw8BwQDBsQ8OBg6wD80BALIgDx1JU1izAEAdQGU4ZThZMTCxGDorugAuAEAALraAExaAExYbKyuwFUNYswcKExa4AC5ADBYTChMWBz0WEwoHOCtZsBVDWLMEBxYZuAAuQAwWGQQZFgc+GRYHBDgrWVkBMQYGIyImNTQ2MzIWFzEjMSYmIyIGFRQWMzI2NzEBfR3Hjb/p5cOYxxK3CGROZHFzYklkDQJplq/xxs7yq5E/So5+eI1PQ////+r/1gX9BekBJwBqAvQAAAEHAGsDAwAAAFWwFStYALEQJEmxHhZJYbgAgGIgsABSWGYbZ1kgsABVWLAeIzixAh4RNRsiWQGxDSdJsSETSWG4AIBiILAAUlhmG2dZILAAVViwISM4sQIhETUbIllZAAADAC0COQLHBeQAKQA6AD4BirAVK1ixAQO4AQBACQEIAT8AHv8AAbgAALIDDwQrsQEdsANACQEMAUABHv8AAbgAALIdEAQrALEZNbgAvbEAIy8v7C+5ABAAsuy0BgkvKwAQ1MDQwLAAELAowLEVGRDEsSIkuAEnsgEjJiu5ACUA2bEkKSu5ACEA2bEiKSu5AD4AdrE7ABDc7LJALzVJU1ixLzUQPLKABi9JUVixL0A4G7KANQBJUVixNUBlOBuzBkAvQDg4WVlZBLEUAESyABAMSVNYtxQBL0AGQAxAZThlOGU4RFmwFEVYsSxAZThZAbkAMgCnshkQAxDAwOy5AAwAd7McHRwdEMSHGPwYsAzAsCvUsCrAsCfAsCfQA7ADELAV1LkAJQD2sSMnEEVYITwbsABYIcQb5FlZuQAhAPaxIx0QRVghPBuwAFghxBvkWVmzPB0+AxDEEMQBsRQARLIAKzJJU1ixMisQPLKAMgNJUVixMkBlOBuygB0rSVFYsRQBRFlZWbAURViyKyoyEDw8sytAKkA4OFkxMFkBIiY1NDY3NzY3NjYnJicmIyIGBzEjMTY2MzIWFREUFhcVFSMjMSYnMQYTNTEGBwcGBhUUFjMWNzY3NgEhFSEBCGB7cW2FHxoQEQMEGR86Nz4DtAmXmoyQEhpkZQkGWVMdKE0zNS0lVTcMCAj+XAJq/ZYDN2dRXHAPEwQJBSARFg0RKyh2bWFf/tFNOw0BGCMsXwEMPwsJDwowJSQrATwNGRn+sqQAAAIAtACcA78D3gAIABEAd7AVK1iwAI2xAQa4AQBACQEIARIAHv8AAbgAALIGDwQrsQEMsAZACQEMARMBHv8AAbgAALIMEAQrALMIRANLPz+zEUQMSz8/tAIBBggDERI5OTm0CwoPEQwREjk5OQFACgADCQwLCg8CAQYQwMDUwMAQwNTAMTBZAQcxFxUBNTUBBQcxFxUBNTUBAgrOzv6qAVYBtc7O/qoBVgLvs7LuASl4eAEp77Oy7gEpeHgBKQABAFIA2gRaA14ABQBWsBUrWLEBAbgBAEAJAQgBBgAe/wABuAAAsgEPBCuxAQSwAUAJAQwBBwEe/wABuAAAsgQQBCsAsQMCuAB0sgQAAS/AxPzAAbEABbgAdLEDBBDA/MAxMFkBITUhESMDc/zfBAjnAnLs/XwAAQA3AbcCcwLFAAMAR7AVK1ixAQO4AQBACQEIAQQAHv8AAbgAALIDDwQrsQEBsANACQEMAQUBHv8AAbgAALIBEAQrALEAAbgAc7IDAkQ/wPzAMTBZEyERITcCPP3EAsX+8gAC/Pf/1wMIBegADAAZAKCwFStYALMQAAYWL8zUzAGzDQMJEy/M1MwxMLEYOiu6AC4AQAAutkAQFkANExsrK7AVQ1izAAMNELgALkAMDRAAEA0DPBANAwA4K1mwFUNYswkMEBO4AC5ADBMQDBATCT0TEAwJOCtZsBVDWLMGCRMWuAAuQAwTFgYWEwk+FhMJBjgrWbAVQ1izAwYWGbgALkAMGRYGFhkDPxkWBgM4K1lZAyAAERAAISAAERAAIQEQACMiABEQADMyABEBAU4Bu/5G/rH+sv5GAbsBTQIs/sTw7/7EAT3u7wE9Bej+Rf6y/rL+RgG6AU4BTgG7/PcBAAFU/qz/AP8A/q0BUwEAAAAC/r0BPQFWBIIAGgAlAPGwFStYsQEauAEAQAkBCAEmACH/AAG4AACyGg8EK7EBCLAaQAkBDAEnAR7/AAG4AACyCBAEKwCwGS+xAQMvxLEkI7kAqAADEPzAsxwcAxkREjkvuQAVALP8sxwVHBWyGQMMK7UUDQwVHBwQwBDAwMCxEBkQxLEXGrgBHLIBGSYrsQ4RuAEcsgEQJiuxJCMQwAGxJRe4AGSzARoBGhDAhxj8GMCzFRoWG8DAEMQBuQAgAJKxCAgQ0OyyDQwIEMDAsQ4IEMC5/////7ERDrgAlrINDhwrAwOyACAlSVNYsoAIIElRWLEgJRA8sSBAOFlZMTBZARExMzEzMhYVFAcGBzETMSMjMQMxIzERMSMjEzEzMjY1NCYjIzH+vVvqoKZNK0fNZ2jBUltct45IR0dIjgE9A0V5dYY8IQ/+mwFZ/qcB6TY2MTD////q/9cF+wXoASMAcQLzAAABBwByAukAAABxsBUrWACxEB1JsTMWSWG4AIBiILAAUlhmG2dZILAAVViwMyM4sQIzETWxAgJUWLADNVkbIlkBsQ0iSWYguADAUVixNBNJYbgAgGIgsABSWGYbZ1kgsABVWLA0IzixAjQRNbECAlRYsAM1WRsiWRshWVkAAAH/9QTTArUFawADAEewFStYsQEAuAEAQAkBCAEEAB7/AAG4AACyAA8EK7EBArAAQAkBDAEFAR7/AAG4AACyAhAEKwCxAQK4AGSyAAM5P8D8wDEwWQM1IRULAsAE05iYAAIAdQNmAr4FrwALABcATbAVK1ixAQm4AQBACQEIARgAHv8AAbgAALIJDwQrsQEDsAlACQEMARkBHv8AAbgAALIDEAQrALQPABUGOT/M3MwBswwDEgkQzBDMMTBZATIWFRQGIyImNTQ2ATQmIyIGFRQWMzI2AZl7qqp7e6mpASxnSkpmZkpKZwWvqnt7qal7e6r+20pnZ0pKZmYAAAIAUv/8BFoECwALAA8Ao7AVK1ixAQG4AQBACQEIARAAHv8AAbgAALIBDwQrsQEHsAFACQEMAREBHv8AAbgAALIHEAQrALMHBgMCuAB0swgJAAEvwMDA/MDAwAGzCgUGCbgAdLcLBAMADwIBARDAwMDcwMDA/MDAwLYHBwgUFAABSUT0wMCxDQcQwAC3BQQUAwoLFAAQ9MAQ9MCxDg+4AHS2DQwVChUMCkpEEP7A/MAxMFkBITUhNTMVIRUhFSMFIRUhAeD+cgGO7AGO/nLs/nIECPv4AiTo///o/0DpAAEAEgJFApgFrgAfAK2wFStYsQEJuAEAQAkBCAEgAB7/AAG4AACyCQ8EK7EBCLAJQAkBDAEhAR7/AAG4AACyCBAEKwCxCEg/sRw3P7IKCQgQ1MCxChA4uQATALCyHAYHuQB2AAgQ/MAQ7LINHAgREjlACQMADQMNAw0BJSsAsRgcEMQBsQAJENSwABCwGNSxFxcBwQDBsRcYBg65ABcAmu0BugAQAJoAABDsQAkGAAkGCQYJACUrOjEwWQEUBgcGBzEhFSExNDY3NjY1NCYjIgYXMSMxJjYzMhcWAphljFsxAX39en6uUkNHOj5FArMFrJaMWVgEl2GHWTkypnWqdjhaOC86UkaQqU5OAAABABACLAKcBa4AMwDZsBUrWLEBHrgBAEAJAQgBNAAe/wABuAAAsh4PBCuxARe4AQBACQEMATUBHv8AAbgAALIXEAQrALEaSj+xDDc/uQAjALywGhDssxMSGgwREjk5sSoqOS+5ADAAsOyzKjAqMLIaDAwrugADALAADBD8sR4aEMSxCAwQxAGwHhCwHtSxHx8BwQDBsR8eBg65AB8Am+0BsB4QsAjUsQcHAcEAwbEHCAYOuQAHAJrtAbEXFxDQuQAmAJvssS0eENSyFxMSwMAQS7AeUViwRnZZsA/UGLkAAACa7DEwWQE0JiMiBgcxIzE2NjMyFhUUBwcxFhcWFRQGIyImJzEzMRYWMzI2NTQnJicmIgc1Fjc2NzYBwD4zOj8BsQKjlICjVSUoHVG3j5upArsBQz8+SyghMhsyCApLKxofBKgvOj86hZGHa1w7Fg0VOXR5m5WKQkVIOzQgGQUDAoUCBgQWGgABAN0E1gLYBf8AAwBFsBUrWLEBALgBAEAJAQgBBAAe/wABuAAAsgAPBCuxAQKwAEAJAQwBBQEe/wABuAAAsgIQBCsAsQEDLy8BsgJdABD8MTBZExMhAd3BATr+1ATWASn+1wAAAQCH/lgEXARAABoArLAVK1ixABm4AQBACQEIARsAHv8AAbgAALIZDwQrsQALsBlACQEMARwBHv8AAbgAALILEAQrALEaRD+xCUQ/sRNOP7ELSz+yEw8LEMAQuQAEAGPssRcTEMQBsxoZGhkQwIexAAG4AGwY/BjAsw4MCQi4AGyzCgsKCxDAhxj8GMDAwAWyAAAJSVNYswwICQAQPDw8QAoLQApADEAIQAlAODg4ODhZsRcZEMAxMFkBERQWMzI2NTERIREhNTExBgcGIyYnMRMhAxEBpltUaX8BH/7vEBRUkmI5Af7hAQRA/WtocH9qAoT7wKQjH34BNf4+Au4C+gAAAf/x/nsEUAWZABEA8rAVK1ixAQS4AQBACQEIARIAHv8AAbgAALIEDwQrsQEJsARACQEMARMBHv8AAbgAALIJEAQrALEHOT+wCMCxDQ65AHMARnb8GMCxEFE/sArAswEBBxAREjkvuQAVAOpwAbIJAAQQxBC7ABwAFQAbABWzCQAeCyuwCsCxDBv8sAvAsAAQsBHAsQ8b/LAQwLEUAESyAAwPSVNYsoAABElQWLMPQABAZThlOLEUAURZWbAURVizEEARQGU4ZThZsRQAREuwHlJYS7A8UliwwBuwgFmxDA9JUlizDEAJQDg4sRQBRFlZsBRFWLMKQAtAODhZMTBZATEmJjU0NjMhMREjETEjMREjAbvf6+rgApXqxuUCxQG4sbG5+OIGb/mRAAEAdwI4AakDYgADAEywFStYsQEAuAEAQAkBCAEEAB7/AAG4AACyAA8EK7EBArAAQAkBDAEFAR7/AAG4AACyAhAEKwC5AAEBGbADL+y5AAIBFrAAARDsMTBZEyERIXcBMv7OA2L+1gAAAQAM/i0B9v//ABsAZrAVK1ixAQy4AQBACQEIARwAHv8AAbgAALIMDwQrsQEGsAxACQEMAR0BHv8AAbgAALIGEAQrALEbSz+xGRrUwEuwHlJYuACAGlmyCUAN3BrMAbQBAhoZDBDExMDAshMbBhDAwDEwWQUHMTcyFhUUBiMiJic3FhYzMjY1NCYjIgYHJzcBUUg5UWOKdTh/NC0yVBgoOC0jECsXK3ABbQZYSF1uHRlgEBEuIiEpCQgqqgABADUCRQHnBa4ADgBwsBUrWLEBDrgBAEAJAQgBDwAh/wABuAAAsg4PBCuxAQuwDkAJAQwBEAEh/wABuAAAsgsQBCsAsQ1IP7EJNz+xAwkQ3LkABAB47LELDrgBJ7IBDSYrAbEKC7gAd7MBDgEOEMCHGPwYwAGxAwEQxDEwWQERMSc1Fjc2NzMxETEjIwEY41VGRiipZ2gCRQJRAYMHJydN/JcAAAMADAI5AuIF6AAMABkAHQEnsBUrWLEBA7gBAEAJAQgBHgAe/wABuAAAsgMPBCuxAQmwA0AJAQwBHwEe/wABuAAAsgkQBCsAuwAcALIAGwC9swYMHgsrsQYMLy+1ExwGDRsMEOwQ7D23CRADFhAWBgwREjk5L8QvxBi5AB0AdrEaDBDc7AGzAwMJCRDAENC7ABwAnAAbAKezCQMeCyu0EBwJFhvsEOwBsxsJHQMQxBDEMTCxGDorugAuAEAALrZADRNAEBYbKyuwFUNYswYJEBO4AC5ADBATBhMQCTwTEAkGOCtZsBVDWLMDBhMWuAAuQAwWEwYTFgM9FhMGAzgrWbAVQ1izAAMWGbgALkAMFhkAGRYDPhkWAwA4K1mwFUNYswkMDRC4AC5ADBANDA0QCT8QDQwJOCtZWQEiJjU0NjMyFhUUBiM1MjY1NCYjIgYVFBYzBSEVIQF3p8TEp6fExKdIW1tISFtbSP7MAmj9mAM3uJ2gvLygnbiUbVVYb29YVW3spgACALQAmwO/A90ACAARAHewFStYsACNsQEAuAEAQAkBCAESAB7/AAG4AACyAA8EK7EBD7AAQAkBDAETAR7/AAG4AACyDxAEKwCzA0QISz8/swxEEUs/P7QCAQYDCBESOTk5tAsKDwwRERI5OTkBQAoCAQYLCg8MCQMAEMDUwBDAwNTAwDEwWRM3MSc1ARUVASU3MSc1ARUVAbTOzgFW/qoBtc7OAVb+qgGKs7Lu/td4eP7X77Oy7v7XeHj+1wAAAf6l/9QCrwWvAAMAXLAVK1ixAQK4AQBACQEIAQQAHv8AAbgAGrICDwQrsQEAsAJACQEMAQUBHv8AAbj8pLIAEAQrALUAAzkCAUs/wD/AAbMDAAMAEMAIsQMAsQECuAB5sgMCHCsDMTBZAQEjAQKv/JehA2kFr/olBdsAAAEANQJFAecFrgAOAHCwFStYsQEOuAEAQAkBCAEPACH/AAG4AACyDg8EK7EBC7AOQAkBDAEQASH/AAG4AACyCxAEKwCxDUg/sQk3P7EDCRDcuQAEAHjssQsOuAEnsgENJisBsQoLuAB3swEOAQ4QwIcY/BjAAbEDARDEMTBZARExJzUWNzY3MzERMSMjARjjVUZGKKlnaAJFAlEBgwcnJ038lwAAAgAFAkUCjAWlAA8AFwFssBUrWLEBArgBAEAJAQgBGAAe/wABuAAAsgIPBCuxAQ24AQBACQEMARkBHv8AAbgAALINEAQrsAIQS7AeUliwSnZZsA3EGACxBTc/sQ1IP0AJFxAQDQUSERIFEAjABBESOS/AsQkHwMCyAwEPuAB2/MDAskADIBrIGrEKDMDAtQYGBQQEBRDAwMDAwAGxBg0Q1LgAd0WxBgRJUliyQAQgGsgaG7EEAhDAWbANELMHDAYNBzw8sAnEsxIQDw64AHexDQaHGPwYxMTEAbIDAQIQwMC5/////7EXA7gAeLIEAxwrsQ0GCLISAx0rAwEBsmASE0kgZIpTWCCwAFJYuACAYiCyEhIRCCM4shMTFggjOBshWRshWQCyYBcWSSBkilNYILAAUli4AIBiILIXFxAIIziyFhYTCCM4GyFZGyFZALAFRrASRlBYsRIFEDxZsAVGsBNGUFixEwUQPFmwAUawA0ZSWLEDARA8WTEwWQEhNTUBMzMRMTMVIzEVIzU1MRExMQMHMQFZ/qwBOHN0aGjLvAkDA1lZAfD+AqS+vqQBOf7VDv//ADX/1AYhBa8AIwCBAlEAAAAnAIIAAAAAAAcAgwOV/bsAAAABADUCRQHnBa4ADgBwsBUrWLEBDrgBAEAJAQgBDwAh/wABuAAAsg4PBCuxAQuwDkAJAQwBEAEh/wABuAAAsgsQBCsAsQ1IP7EJNz+xAwkQ3LkABAB47LELDrgBJ7IBDSYrAbEKC7gAd7MBDgEOEMCHGPwYwAGxAwEQxDEwWQERMSc1Fjc2NzMxETEjIwEY41VGRiipZ2gCRQJRAYMHJydN/JcAAAEAEgJFApgFrgAfAK2wFStYsQEJuAEAQAkBCAEgAB7/AAG4AACyCQ8EK7EBCLAJQAkBDAEhAR7/AAG4AACyCBAEKwCxCEg/sRw3P7IKCQgQ1MCxChA4uQATALCyHAYHuQB2AAgQ/MAQ7LINHAgREjlACQMADQMNAw0BJSsAsRgcEMQBsQAJENSwABCwGNSxFxcBwQDBsRcYBg65ABcAmu0BugAQAJoAABDsQAkGAAkGCQYJACUrOjEwWQEUBgcGBzEhFSExNDY3NjY1NCYjIgYXMSMxJjYzMhcWAphljFsxAX39en6uUkNHOj5FArMFrJaMWVgEl2GHWTkypnWqdjhaOC86UkaQqU5OAP//ADX/1AZaBa8AIwCBAmgAAAAnAIUAAAAAAAcAhgPC/bsAAAABABACLAKcBa4AMwDZsBUrWLEBHrgBAEAJAQgBNAAe/wABuAAAsh4PBCuxARe4AQBACQEMATUBHv8AAbgAALIXEAQrALEaSj+xDDc/uQAjALywGhDssxMSGgwREjk5sSoqOS+5ADAAsOyzKjAqMLIaDAwrugADALAADBD8sR4aEMSxCAwQxAGwHhCwHtSxHx8BwQDBsR8eBg65AB8Am+0BsB4QsAjUsQcHAcEAwbEHCAYOuQAHAJrtAbEXFxDQuQAmAJvssS0eENSyFxMSwMAQS7AeUViwRnZZsA/UGLkAAACa7DEwWQE0JiMiBgcxIzE2NjMyFhUUBwcxFhcWFRQGIyImJzEzMRYWMzI2NTQnJicmIgc1Fjc2NzYBwD4zOj8BsQKjlICjVSUoHVG3j5upArsBQz8+SyghMhsyCApLKxofBKgvOj86hZGHa1w7Fg0VOXR5m5WKQkVIOzQgGQUDAoUCBgQWGgACAAUCRQKMBaUADwAXAWywFStYsQECuAEAQAkBCAEYAB7/AAG4AACyAg8EK7EBDbgBAEAJAQwBGQEe/wABuAAAsg0QBCuwAhBLsB5SWLBKdlmwDcQYALEFNz+xDUg/QAkXEBANBRIREgUQCMAEERI5L8CxCQfAwLIDAQ+4AHb8wMCyQAMgGsgasQoMwMC1BgYFBAQFEMDAwMDAAbEGDRDUuAB3RbEGBElSWLJABCAayBobsQQCEMBZsA0QswcMBg0HPDywCcSzEhAPDrgAd7ENBocY/BjExMQBsgMBAhDAwLn/////sRcDuAB4sgQDHCuxDQYIshIDHSsDAQGyYBITSSBkilNYILAAUli4AIBiILISEhEIIziyExMWCCM4GyFZGyFZALJgFxZJIGSKU1ggsABSWLgAgGIgshcXEAgjOLIWFhMIIzgbIVkbIVkAsAVGsBJGUFixEgUQPFmwBUawE0ZQWLETBRA8WbABRrADRlJYsQMBEDxZMTBZASE1NQEzMxExMxUjMRUjNTUxETExAwcxAVn+rAE4c3RoaMu8CQMDWVkB8P4CpL6+pAE5/tUO//8AIf/UBmQFrwAjAIECmQAAACcAiAARAAAABwCJA9j9uwAAAAIAcf5tBGgERAAcACAApLAVK1ixAQy4AQBACQEIASEAHv8AAbgAALIMDwQrsQEFsAxACQEMASIBHv8AAbgAALIFEAQrALIUEh5KRLMgOQlLPz9ACQBACQAJAAkAJSs6sSAALxC5AB4BGfyxEhT8sQUJEMQBsAwQsQwduQEWAB/U/BBACRlADBkMGQwAJSs6sBkvsRIfEMSwBRCwBdSxBAQBwQDBsQQFBg65AAQAZO0BMTBZBTI2NzEhMQYAIyIkNTQ2NzY2JyEWBgcGBhUUFxYTIREhAmxubAIBIAT+8+vp/u5/lDotAwEKBGZ+PDI2NvP+1AEsoXp/5/786sdqu28sZVKNwlgqXkhYNDMDxwEeAAAB/okAAACEASkAAwAfsBUrWLABLwCzAlUASz/sAbkAAwEWsAEQ7LADyDEwWSMBIRNL/tQBOsEBKf7XAP//ACkAAAWeB30BJwAjAAAAAAEHAIwC4wZUADawFStYswIPGhgisRoAS7AeUli4AIAbuABAWbEYArgAHyuwM7gAICsRsAI1twIAGRsZBBACK1kAAf+GAAABgQEpAAMARbAVK1ixAQC4AQBACQEIAQQAHv8AAbgAALIADwQrsQECsABACQEMAQUBHv8AAbgAALICEAQrALEBAy8vAbICXQAQ/DEwWSMTIQF6wQE6/tQBKf7XAP//ACkAAAWeB30BJwAjAAAAAAEHAI4C4wZUADawFStYswIPGRsisRkAS7AeUli4AIAbuABAWbEbArgAHyuwM7gAICsRsAI1twIAGBoYBBACK1kAAf6YAAABaAEpAAgAKrAVK1ixAQYvLwCyCAVLP9yzAQUEA8DAEMABtQMCAQQFBhDcwBDcwDEwWRMTIycxByMTM4Do5oKC5uiAASn+16enASkA//8AKQAABZ4HfQEnACMAAAAAAQcAkALjBlQANrAVK1izAg8gHSKxIABLsB5SWLgAgBu4AEBZsR0CuAAfK7AzuAAgKxGwAjW3AgAeGR4EEAIrWQAB/okADQF3ARMAGQAhsBUrWAGxDQAvLwBACQ0MAwkAGRYQSz/ExMTc1MTEMTBZJTY2MzIWFxYWMzI2NzMGBiMiJicmJiMiBgf+iRGFYhVcLh5JFhw0CoAOelkVajclSBAeNAgNdIgaEw0RMSR0iBoTDRExJAD//wApAAAFngdnAScAIwAAAAABBwCSAuMGVAA2sBUrWLMCDxsoIrEbAEuwHlJYuACAG7gAQFmxKAK4AB8rsDO4ACArEbACNbcCABglGAQQAitZAAL+twATAUgA/gADAAcAQLAVK1ixBgAvLwC3BQEUBwMUAQNKRC/A/MABuQAGARaxBAC5ARYAAi/s3OwBQAkGFQQAFQIVAgBKRC/s3OwxMFklIRUhJSEVIf63AQL+/gGPAQL+/v7r6+v//wApAAAFngdSAScAIwAAAAABBwCUAuMGVAA4sBUrWLMCDxkbIrEZAEuwHlJYuACAG7gAQFmxGwK4AB8rsDO4ACArEbECAzU1twIDGB4YBBACK1kAAv8n/7QA4QFeAAwAGQC6sBUrWLADLwCxBgAvzLIUBgBJRLIVDQBKRLQTFQYNFewQ7AGyCRQDEOS0EBUJFhXsEOwxMLEYOiu6AC4AQAAutoAQDYAQDRsrK7AVQ1izBgkQE7gALkAMEBMGExAJPBMQCQY4K1mwFUNYswMGExa4AC5ADBYTBhMWAz0WEwYDOCtZsBVDWLMAAxYZuAAuQAwWGQAZFgM+GRYDADgrWbAVQ1izCQwNELgALkAMEA0MDRAJPxANDAk4K1lZFyImNTQ2MzIWFRQGIzUyNjU0JiMiBhUUFjMEXYCAXV2AgF0vQEAvL0BAL0x8WVl8fFlZfG87Kys7OysrOwD//wApAAAFngeyAScAIwAAAAABBwCWAuMGVAA4sBUrWLMCDx4YIrEeAEuwHlJYuACAG7gAQFmxGAK4AB8rsDO4ACArEbECAzU1twIDGyEbBBACK1kAAgAKAAAHogW+ACYALQFPsBUrWLEBCbgBAEAJAQgBLgAeBwABuAAAsgkPBCuxASOwCUAJAQwBLwEeDQABuAAAsiMQBCsAsyVLDTk/P7QAJSMlQiuxHiC5AGcAJRD8wLQPDQsNQiuxFRO5AGYADRD8wLMbGw0lERI5L7kAGABl/LMbGBsYsiUNDCuzHRsWGBDAEMAAtCctDQhLPxDAwLkABABltSkpDSUnBggREjkv7LMpBCkEsiUNDCu1KikDLQAEEAjAEMAAsQYJuAEcsgEIJiu2CQsJCwkBFiu2BgUGBQYBFisBsQsJEMCxJwmxBgm4AGmyCwkcK7IECR0rsikJHSsDAbIaDyMQxMQBQAkVHhUWHR4eIwkREjkvwMDAh0AJAEAVABUAFQAlKzqwAC+yLSsCwMDAsQsLEMCxEhG4AR+yAA8mK7EYGbgBILIAGiYrsSAiuAEesgAjJisxMFkhMRExITEDMSMjMQExITEhMRUVMSExETEhFRUxITERMSExFRUxITEBAzEhMREjA3P+RmuiogIYAnQDAfz/Arb9SgMM/PT+UdsBZ4wBQf6/Bb6Cg/7Ifn/+gYKDBLn9eAKIAAH+xv4tALD//wAcADuwFStYsA0vsAcvALEcSz+xGhvUwEuwHlJYuACAGlmyCkAO3BrMAbQBAhsaDRDExMDAshQcBxDAwDEwWRcHMTYXMhYVFAYjIiYnNxYWMzI2NTQmIyIGByc3C0gvClFjinU3fzUtM1QXKDgtIxErFitwAW4IAVhIXW4dGWAQES4iISkJCCqqAP//AFr+LQV5BeYAJwAlAAAAAAAHAJkC/QAAAAD//wCcAAAE+Ad9AScAJwAAAAABBwCMArsGVAA2sBUrWLMCABwaIrEcAEuwHlJYuACAG7gAQFmxGgK4AB8rsDO4ACArEbABNbcBABsdGxUAAitZ//8AnAAABPgHfQEnACcAAAAAAQcAjgK7BlQANrAVK1izAgAbHSKxGwBLsB5SWLgAgBu4AEBZsR0CuAAfK7AzuAAgKxGwATW3AQAaHBoVAAIrWf//AJwAAAT4B30BJwAnAAAAAAEHAJACuwZUADawFStYswIAIh8isSIAS7AeUli4AIAbuABAWbEfArgAHyuwM7gAICsRsAE1twEAIBsgFQACK1n//wCcAAAE+AdSAScAJwAAAAABBwCUArsGVAA4sBUrWLMCABsdIrEbAEuwHlJYuACAG7gAQFmxHQK4AB8rsDO4ACArEbEBAjU1twECGiAaFQACK1n///+bAAABrAd9AScAK//2AAABBwCMARIGVAA2sBUrWLMDCAwKIrEMAEuwHlJYuACAG7gAQFmxCgO4AB8rsDO4ACArEbABNbcBAAsNCwYJAitZ//8AgwAAAp0HfQEnACsAAAAAAQcAjgEcBlQANrAVK1izAwgLDSKxCwBLsB5SWLgAgBu4AEBZsQ0DuAAfK7AzuAAgKxGwATW3AQAKDAoGCQIrWf///7UAAAKFB30BJwArAAEAAAEHAJABHQZUADawFStYswMIEg8isRIAS7AeUli4AIAbuABAWbEPA7gAHyuwM7gAICsRsAE1twEAEAsQBgkCK1n////WAAACZwdSAScAKwADAAABBwCUAR8GVAA4sBUrWLMDCAsNIrELAEuwHlJYuACAG7gAQFmxDQO4AB8rsDO4ACArEbEBAjU1twECChAKBgkCK1kAAv/3AAAFfAW+ABQAJQE9sBUrWLEBALgBAEAJAQgBJgAhBQABuAAAsgAPBCuxAQ+wAEAJAQwBJwEeDAABuAAAsg8QBCsAsQw5P7ESSz+0DAoIDEIrtBITABJCK7EDEhDEQAkGQAMGAwYDACUrOrMDBgMGshIMDCuxBAMQwLEaG8DAsQUGEMCxGRjAwLEVJbgAqLAMEPzAsR4fuACzsBIQ/MCzHh8VJRDAEMABshYVHbgAZLMIAAgAEMCHGPwYwMAFswcEAgAQwMTAsxcaHB0QwMTAAbEPDxDQuQAiAJKxCACH7AOyACIdSVNYsoAPIklRWLEiHRA8sSJAOFlZMTCxEDorugAuAEAALraAJSKAJSIbKyuwFUNYswwPIiW4AC5ADCIlDCUiDzwlIg8MOCtZsBVDWLMPEh8iuAAuQAwiHxIfIg8/Ih8SDzgrWVkzMRExIzUzMRExMzEhIAAREAAhITETMRExIRUhMRExITI2NTQmI5miopkB3gEwATz+uP7D/juaAVL+rgEFvLyvsAKE/wI7/pz+qf6G/ncEwf7C//55/f3l5f//AI0AAAU8B2cBJwAwAAAAAAEHAJIC5AZUADawFStYswcCGygisRsAS7AeUli4AIAbuABAWbEoB7gAHyuwM7gAICsRsAE1twEAGCUYEgMCK1n//wBa/9gF3wd9AScAMQAAAAABBwCMAxwGVAA2sBUrWLMGDBwaIrEcAEuwHlJYuACAG7gAQFmxGga4AB8rsDO4ACArEbACNbcCABsdGwkDAitZ//8AWv/YBd8HfQEnADEAAAAAAQcAjgMcBlQANrAVK1izBgwbHSKxGwBLsB5SWLgAgBu4AEBZsR0GuAAfK7AzuAAgKxGwAjW3AgAaHBoJAwIrWf//AFr/2AXfB30BJwAxAAAAAAEHAJADHAZUADawFStYswYMIh8isSIAS7AeUli4AIAbuABAWbEfBrgAHyuwM7gAICsRsAI1twIAIBsgCQMCK1n//wBa/9gF3wdnAScAMQAAAAABBwCSAxwGVAA2sBUrWLMGDB0qIrEdAEuwHlJYuACAG7gAQFmxKga4AB8rsDO4ACArEbACNbcCABonGgkDAitZ//8AWv/YBd8HUgEnADEAAAAAAQcAlAMcBlQAOLAVK1izBgwbHSKxGwBLsB5SWLgAgBu4AEBZsR0GuAAfK7AzuAAgKxGxAgM1NbcCAxogGgkDAitZAAEAUgADBFoECwALAE6wFStYsQECuAEAQAkBCAEMAB7/AAG4AACyAg8EK7EBCrACQAkBDAENAR7/AAG4AACyChAEKwCzAAkGAxkvGMDAwAGzCAoEAhDEEMQxMFkBAScBATcBARcBAQcCVv6ipgFe/qKmAV4BXqb+ogFepgFh/qKmAV4BXqb+ogFepv6i/qKmAAMARP/FBfIF+QAJAB4AJwEisBUrWLEBEbgBAEAJAQgBKAAeBAABuAAAshEPBCuxARuwEUAJAQwBKQEeDAABuAAAshsQBCsAsR5QP7EUNj+7ABwAqAAbALOzFB4eCyu1HxwUBBseEOwQ7LQODR4YF8DAEMDAAbMRERsbEMAQwLsAHACSABsAnbMbER4LK7ARELQHHBsiG+wQ7AEBsxgbDhEQxBDEQAkNAA4NDg0OACUrOkAJFwAYFxgXGAAlKzoBtQkmBwEkIhDAwBDAwEAKAQkNGBgkJg4XFxAHDjw8EAcOPDwBMTCxEDorugAuAEAALraAHyKAHyIbKyuwFUNYsxEUHyK4AC5ADCIfFB8iET0iHxQROCtZsBVDWLMbHgQHuAAuQAwHBB4EBxs/BwQeGzgrWVkBARYzMTISNTYnASQnByc3JhEQACEgFzcXBxYREAAhESICFRYXAQEmAxv+52eyvNQBOv6p/t+7p1SumQF+AUQBIripVLCc/oP+urvUATUBWQEYaAKK/sp3AQ3vs3j71AGkuE/AxgE9AWgBp6i7T8HL/rn+n/5iBQn+7PSqdwF8ATV4//8Ak//YBTYHfQEnADcAAAAAAQcAjALkBlQANrAVK1izCQMaGCKxGgBLsB5SWLgAgBu4AEBZsRgJuAAfK7AzuAAgKxGwATW3AQAZGxkWBwIrWf//AJP/2AU2B30BJwA3AAAAAAEHAI4C5AZUADawFStYswkDGRsisRkAS7AeUli4AIAbuABAWbEbCbgAHyuwM7gAICsRsAE1twEAGBoYFgcCK1n//wCT/9gFNgd9AScANwAAAAABBwCQAuQGVAA2sBUrWLMJAyAdIrEgAEuwHlJYuACAG7gAQFmxHQm4AB8rsDO4ACArEbABNbcBAB4ZHhYHAitZ//8Ak//YBTYHUgEnADcAAAAAAQcAlALkBlQAOLAVK1izCQMZGyKxGQBLsB5SWLgAgBu4AEBZsRsJuAAfK7AzuAAgKxGxAQI1NbcBAhgeGBYHAitZ//8AHwAABTkHfQEnADsAAAAAAQcAjgKsBlQANrAVK1izBBEUFiKxFABLsB5SWLgAgBu4AEBZsRYEuAAfK7AzuAAgKxGwATW3AQATFRMQEgIrWQACAJwAAAUEBb4AFAAgALKwFStYsQEUuAEAQAkBCAEhACEFAAG4AACyFA8EK7EBC7AUQAkBDAEiAR4NAAG4AACyCxAEKwCzAzkTSz8/shgaGbgAqLUIBgcHAxMREjkvwMD8wMCyHRscuACztQ4QDw8DExESOS/AwPzAwLEBBLgBHbIBAyYrsREUuAEcsgETJisBtQUHBhoZEbgAZLMBFAEUEMCHGPwYwMDAwMCzEA8cG8DAwMABuQAVAJKwCxDsMTBZMxExMzMxFTEhMgAVFAQjITERMSMjATQmIyExETEhMjc2nJmaAVPeAQT+/N7+rZmaAzV7fP71AQt8Pj0Fvsf/ANvW+/61Ax5ubv5ONjUAAAEAjf/kBKEF3QAtAM2wFStYsQEEuAEAQAkBCAEuAB7/AAG4AACyBA8EK7EBErgBAEAJAQwBLwEe/wABuABGshIQBCsAtAo5FQNLP9Q/QAkdQBUdFR0VACUrOkAJKkAKKgoqCgAlKzqxKh0vL7EZFRDEtw8kIyQjIwoVERI5L8wREjmxAQS4ASOyAQMmKwGzBgQGBBDAh0AJAUAEAQQBBAAlKzqxAAEvwLENEhDEQAkgQBIgEiASACUrOkAJJ0ANJw0nDQAlKzqxJyAvL7EjJxDEsBIQsBnUMTBZARExIyMxETU0NjMyBBUUBxcWFRAAIyImJzE1MSYzMjY1NCYjNTI2NTQmIyIHBgGsj5D74doBC4tCnP7++Rs5FA5VfIKdnn1udF9eKysEEPvwBBAqxt3Pqa9xKGrF/wD+9gcF4ASCfXt6x1ReUWM3NgAAAf6JAAAAhAEpAAMAH7AVK1iwAS8AswJVAEs/7AG5AAMBFrABEOywA8gxMFkjASETS/7UATrBASn+1wD//wA7/+QEOAX/AScAQwAAAAABBwCzAjgE1gA2sBUrWLMZAD07IrE9AEuwHlJYuACAG7gAQFmxOxm4AB8rsDO4ACArEbACNbcCADw+PB0DAitZAAH/hgAAAYEBKQADAEWwFStYsQEAuAEAQAkBCAEEAB7/AAG4AACyAA8EK7EBArAAQAkBDAEFAR7/AAG4AACyAhAEKwCxAQMvLwGyAl0AEPwxMFkjEyEBesEBOv7UASn+1wD//wA7/+QEOAX/AScAQwAAAAABBwC1AjgE1gA2sBUrWLMZADw+IrE8AEuwHlJYuACAG7gAQFmxPhm4AB8rsDO4ACArEbACNbcCADs9Ox0DAitZAAH+mAAAAWgBKQAIACqwFStYsQEGLy8AsggFSz/cswEFBAPAwBDAAbUDAgEEBQYQ3MAQ3MAxMFkTEyMnMQcjEzOA6OaCgubogAEp/tenpwEpAP//ADv/5AQ4Bf8BJwBDAAAAAAEHALcCOATWADawFStYsxkAQ0AisUMAS7AeUli4AIAbuABAWbFAGbgAHyuwM7gAICsRsAI1twIAQTxBHQMCK1kAAf6JAA0BdwETABkAIbAVK1gBsQ0ALy8AQAkNDAMJABkWEEs/xMTE3NTExDEwWSU2NjMyFhcWFjMyNjczBgYjIiYnJiYjIgYH/okRhWIVXC4eSRYcNAqADnpZFWo3JUgQHjQIDXSIGhMNETEkdIgaEw0RMSQA//8AO//kBDgF6QEnAEMAAAAAAQcAuQI4BNYANrAVK1izGQA+SyKxPgBLsB5SWLgAgBu4AEBZsUsZuAAfK7AzuAAgKxGwAjW3AgA7SDsdAwIrWQAC/rcAEwFIAP4AAwAHAECwFStYsQYALy8AtwUBFAcDFAEDSkQvwPzAAbkABgEWsQQAuQEWAAIv7NzsAUAJBhUEABUCFQIASkQv7NzsMTBZJSEVISUhFSH+twEC/v4BjwEC/v7+6+vr//8AO//kBDgF1AEnAEMAAAAAAQcAuwI4BNYAOLAVK1izGQA8PiKxPABLsB5SWLgAgBu4AEBZsT4ZuAAfK7AzuAAgKxGxAgM1NbcCAztBOx0DAitZAAL/J/+0AOEBXgAMABkAurAVK1iwAy8AsQYAL8yyFAYASUSyFQ0ASkS0ExUGDRXsEOwBsgkUAxDktBAVCRYV7BDsMTCxGDorugAuAEAALraAEA2AEA0bKyuwFUNYswYJEBO4AC5ADBATBhMQCTwTEAkGOCtZsBVDWLMDBhMWuAAuQAwWEwYTFgM9FhMGAzgrWbAVQ1izAAMWGbgALkAMFhkAGRYDPhkWAwA4K1mwFUNYswkMDRC4AC5ADBANDA0QCT8QDQwJOCtZWRciJjU0NjMyFhUUBiM1MjY1NCYjIgYVFBYzBF2AgF1dgIBdL0BALy9AQC9MfFlZfHxZWXxvOysrOzsrKzsA//8AO//kBDgGNAEnAEMAAAAAAQcAvQI4BNYAOLAVK1izGQBBOyKxQQBLsB5SWLgAgBu4AEBZsTsZuAAfK7AzuAAgKxGxAgM1NbcCAz5EPh0DAitZAAMAO//kBt4EXQA6AEwAVwJLsBUrWLEBJrgBAEAJAQgBWAAe/wABuP/psiYPBCuxAQqwJkAJAQwBWQEeEAABuP/WsgoQBCsAsSNOP7EAQD+xHE4/sQdAP7EqE7gAtLIhHEa5ALYAIxDsEB3sK7EYHBDEsAAQuQAyAKnstCkrQDwjENTA0MCxKlK4AKmxIQcQHewrsTcAEMS5AFcAa7MODiMAERI5L/yzDlcOV7IjAAwrs01XDQ4QwBDAskBARklTWLFARhA8soApQElRWLFAQDgbsoBGI0lRWLFGQGU4G7UrQClAQEA4ODhZWVkEsRQARLIAMi5JU1i1FAFAQC5AZThlOESxKStVWLEpQGU4WVmwFEVYsT1AZThZskBSV0lSWLFSVxA8s01AV0BlOGU4sgBXDklTWLMNQA5AZThlOFlZsgAOE0lTWLETDhA8sw1ADkA4OLIAVw5JU1izTUBXQDg4WVkBuQBDAKCyADImEMDA7LQvLi4KJhESOS/AsDzUsDvAQAkPQC4PLg8uACUrOrFWDy/AsyAFCiYREjk5sCYQsDfUsTY2AcEAwbE2NwYOuQA2AKDtAbFNTrgAk7IMCgoQ0MAY/BjAAbAKELAY1LEXFwHBAMGxFxgGDrkAFwCe7QEBsRQARLIAPENJU1ixQzwQPLKAQyZJUVixQ0BlOBuygA88SVFYsRQBRFlZWbAURViyPDtDEDw8szxAO0A4OFkBskBOVklSWLNOQE1AODhZs1dWDg8QwMDAALIgDRdJU1izF0AYQGU4ZTgbsiANF0lTWLEXQGU4WVkxMFkBMhcWFzE2MzIAERYHMSExFhcWMzI2NzEhMQYEIyInJzEHBiEiJjU0Njc3NzY2NTU0JiMiBgcxITE2NgE1MQYHBwYGFRQWMzI3NzY3NgExJicmIyIHBgcxAjvHdBcRhr/0AQcCB/0hCi47i0BtCwEkJf74xPOEDwmM/vSt1JWuwncXH2ReVWAD/u0J7QGXN05vVUhHP5VUAg0JCgLGCik3cm45JA4EXVYQE3n+0/7qICGBQFBKNKa8mRILoK2NmJseIhcEJhcVPD9QSb++/TxvGRIYEz83QUpvAxUiIgEUYjdJVTZXAAH+1f4tAL///wAbADuwFStYsAwvsAYvALEbSz+xGRrUwEuwHlJYuACAGlmyCUAN3BrMAbQBAhoZDBDExMDAshMbBhDAwDEwWRcHMTcyFhUUBiMiJic3FhYzMjY1NCYjIgYHJzcaSDlRY4p1OH80LTJUGCg4LSMQKxcrcAFtBlhIXW4dGWAQES4iISkJCCqq//8ARv4tBDEEXQAnAEUAAAAAAAcAwAJKAAAAAP//AC//5AQ6Bf8BJwBHAAAAAAEHALMCSQTWADawFStYswYAKCYisSgAS7AeUli4AIAbuABAWbEmBrgAHyuwM7gAICsRsAI1twIAJyknCQMCK1n//wAv/+QEOgX/AScARwAAAAABBwC1AkkE1gA2sBUrWLMGACcpIrEnAEuwHlJYuACAG7gAQFmxKQa4AB8rsDO4ACArEbACNbcCACYoJgkDAitZ//8AL//kBDoF/wEnAEcAAAAAAQcAtwJJBNYANrAVK1izBgAuKyKxLgBLsB5SWLgAgBu4AEBZsSsGuAAfK7AzuAAgKxGwAjW3AgAsJywJAwIrWf//AC//5AQ6BdQBJwBHAAAAAAEHALsCSQTWADiwFStYswYAJykisScAS7AeUli4AIAbuABAWbEpBrgAHyuwM7gAICsRsQIDNTW3AgMmLCYJAwIrWQABAI0AAAGsBEAACQBwsBUrWLEBCbgBAEAJAQgBCgAi/wABuAAAsgkPBCsBuQAGAGyzAQkBCRDAhxj8GAGzCQYJBrr/////AAwrALEISz+xBD8/sQEDuAEisgAEJiuxBgm4ASOyAQgmKwGzBAYBCRDAEMAxMLUJCgsGGAUrWTMRMTMzMRExIyONj5CPkARA+8AA////mwAAAaIF/wEnAMb/9gAAAQcAswESBNYANrAVK1izBAgMCiKxDABLsB5SWLgAgBu4AEBZsQoEuAAfK7AzuAAgKxGwATW3AQALDQsGCQIrWf//AI0AAAKdBf8BJwDGAAAAAAEHALUBHATWADawFStYswQICw0isQsAS7AeUli4AIAbuABAWbENBLgAHyuwM7gAICsRsAE1twEACgwKBgkCK1n///+1AAAChQX/AScAxgABAAABBwC3AR0E1gA2sBUrWLMECBIPIrESAEuwHlJYuACAG7gAQFmxDwS4AB8rsDO4ACArEbABNbcBABALEAYJAitZ////1gAAAmcF1AEnAMYAAwAAAQcAuwEfBNYAOLAVK1izBAgLDSKxCwBLsB5SWLgAgBu4AEBZsQ0EuAAfK7AzuAAgKxGxAQI1NbcBAgoQCgYJAitZAAIARv/kBJ8F6gAeACsA27AVK1ixAQO4AQBACQEIASwAHv8AAbgAALIDDwQrsQEcsANACQEMAS0BHv8AAbgAALIcEAQrALEATj+xBkQ/uQAoAKm3BhYPABMTNSK5ALQAABDsPxESOTkQ7LUVEA8YDQ4QwMAQwMABsQMDENC7ABwAkwAbAJ6zHAMeCyuzHxsABofsAbMWDxwDERI5ObESAxDEsgAGHBCHswgJJRz8AcDAQAoOFw8WDg8XFg8WhhA8EDyHDsjItxgXFRYQDw0OEMAQwBDAEMC3EA0YFRwDDxaGDhESOTk5OTEwWQUiADU0ADM2FzEmJyYnByc3Jic3Fhc3FwcWFxYREAABFBYzMjY1NCYjIgcGAnL//tMBG/CHZhkgMkrlgOVJVNlXSs96yVpDnP7f/e+Ke3uLi3t7RUUcASP4/QEqAWQ3L0xEZWplMy5mLzdbbFlXZez+7P7Q/rYCHY2goI2RpFJSAP//AIUAAAReBekBJwBQAAAAAAEHALkCcQTWADawFStYswwfJDEisSQAS7AeUli4AIAbuABAWbExDLgAHyuwM7gAICsRsAE1twEAIS4hECACK1n//wBG/+QEnwX/AScAUQAAAAABBwCzAnIE1gA2sBUrWLMGDBwaIrEcAEuwHlJYuACAG7gAQFmxGga4AB8rsDO4ACArEbACNbcCABsdGwkDAitZ//8ARv/kBJ8F/wEnAFEAAAAAAQcAtQJyBNYANrAVK1izBgwbHSKxGwBLsB5SWLgAgBu4AEBZsR0GuAAfK7AzuAAgKxGwAjW3AgAaHBoJAwIrWf//AEb/5ASfBf8BJwBRAAAAAAEHALcCcgTWADawFStYswYMIh8isSIAS7AeUli4AIAbuABAWbEfBrgAHyuwM7gAICsRsAI1twIAIBsgCQMCK1n//wBG/+QEnwXpAScAUQAAAAABBwC5AnIE1gA2sBUrWLMGDB0qIrEdAEuwHlJYuACAG7gAQFmxKga4AB8rsDO4ACArEbACNbcCABonGgkDAitZ//8ARv/kBJ8F1AEnAFEAAAAAAQcAuwJyBNYAOLAVK1izBgwbHSKxGwBLsB5SWLgAgBu4AEBZsR0GuAAfK7AzuAAgKxGxAgM1NbcCAxogGgkDAitZAAMAUv+mBFoEaAALAA8AGwB4sBUrWLEBD7gBAEAJAQgBHAAe/wABuAAAsg8PBCuxAQ2wD0AJAQwBHQEe/wABuAAAsg0QBCsAsQwNuAB0sQ8OL8D8wLUAFA8UDwBKRBD+uQAQARmzFhQMBrgBGewQ/uwBshkJDxDE1LkAAwEWsQkTuAEW7BDsMTBZATIWFRQGIyImNTQ2ASEVIQEyFhUUBiMiJjU0NgJWTGpqTExqav5IBAj7+AIETGpqTExqagESakxMampMTGoBbO4C2GpMTGpqTExqAAADAC3/ygS1BHYACQAeACcBIrAVK1ixARG4AQBACQEIASgAHggAAbgAALIRDwQrsQEbsBFACQEMASkBHhAAAbgAALIbEAQrALEeTj+xFEA/uwAcAKkAGwC0sxQeHgsrtR8cFAQbHhDsEOy0Dg0eGBfAwBDAwAGzEREbGxDAEMC7ABwAkwAbAJ6zGxEeCyuwERC0BxwbIhvsEOwBAbMYGw4REMQQxEAJDQAODQ4NDgAlKzpACRcAGBcYFxgAJSs6AbUJJgcBJCIQwMAQwMBACgEJDRgYJCYOFxcQBw48PBAHDjw8ATEwsRA6K7oALgBAAC62gB8igB8iGysrsBVDWLMRFB8iuAAuQAwiHxQfIhE9Ih8UETgrWbAVQ1izGx4EB7gALkAMBwQeBAcbPwcEHhs4K1lZAQcWFzEyNjU0JwMmJwcnNyY1EAAzMhc3FwcWFxAAIREiBhUUFzc3JgJxt0N0gIYa7N+RiUuReQEt/+KPjEeOdgH+1P7/gIUb6rlCAdi+RQGooWdK/RYBdI88l5TpAQoBOXmSQpSX7/78/s4DiaulZkj0wUn//wCH/+QEXAX/AScAVwAAAAABBwCzAnEE1gA2sBUrWLMgGSMhIrEjAEuwHlJYuACAG7gAQFmxISC4AB8rsDO4ACArEbABNbcBACIkIg4cAitZ//8Ah//kBFwF/wEnAFcAAAAAAQcAtQJxBNYANrAVK1izIBkiJCKxIgBLsB5SWLgAgBu4AEBZsSQguAAfK7AzuAAgKxGwATW3AQAhIyEOHAIrWf//AIf/5ARcBf8BJwBXAAAAAAEHALcCcQTWADawFStYsyAZKSYisSkAS7AeUli4AIAbuABAWbEmILgAHyuwM7gAICsRsAE1twEAJyInDhwCK1n//wCH/+QEXAXUAScAVwAAAAABBwC7AnEE1gA4sBUrWLMgGSIkIrEiAEuwHlJYuACAG7gAQFmxJCC4AB8rsDO4ACArEbEBAjU1twECISchDhwCK1n//wAU/koEUAX/AScAWwAAAAABBwC1AjIE1gA2sBUrWLMQDBsdIrEbAEuwHlJYuACAG7gAQFmxHRC4AB8rsDO4ACArEbABNbcBABocGhkOAitZAAIAf/5WBJ8FvgAYACcBXrAVK1ixAQC4AQBACQEIASgAIgkAAbgAALIADwQrsQEMsABACQEMASkBHhEAAbgAALIMEAQrALEPTj+xCUA/uQAfAKqxCRm5ALUADxDsEOyzAzUXUT8/sQUJENixEw8Q2LJAHxlJU1ixHxkQPLKACR9JUVixH0A4G7KAGQ9JUVixGUBlOFlZWbEAArgBIbIAAyYrsRQWuAElsgAXJisBswwMFwAQwBDQuQAcAJSxFwCH7AGwABCxFwCHuQAUAGwY/BiwBMCwBcCwIsSwE8ADsxUAFABERLIAHCJJU1iygAwcSVFYsRwiEDyxHEA4sRQBRBuygAQASVFYsRUBRFlZWbAVRVixIhwQPLEiQGU4WTEwsRg6K7oALgBAAC62QBkfgBwfGysrsBVDWLMJDBwfuAAuQAwcHwkfHAw8HxwMCTgrWbAVQ1izDA8ZHLgALkAMHBkPGRwMPxwZDww4K1lZEzEzMzERMTc2MzISFRACIyInJzERMSMjMQEyNjU0JiMiBhUxMTEUFn+PkAV0vs/7+8+9dAaPkAIEc4KBc3OBgQW+/fUHo/7O+v73/ryYCP3SAnqtmp2xtqKVqAD//wAU/koEUAXUAScAWwAAAAABBwC7AjIE1gA4sBUrWLMQDBsdIrEbAEuwHlJYuACAG7gAQFmxHRC4AB8rsDO4ACArEbEBAjU1twECGiAaGQ4CK1kAAf6+ABgBQgC6AAMAG7AVK1ixAQMvLwCxAAG4AHOyAwJLP8D8wDEwWSUhFSH+vgKE/Xy6ogD//wApAAAFngcOAScAIwAAAAABBwDbAuMGVAA2sBUrWLMCDxgaIrEYAEuwHlJYuACAG7gAQFmxGgK4AB8rsDO4ACArEbACNbcCABsZGwQQAitZAAH+vgAYAUIAugADABuwFStYsQEDLy8AsQABuABzsgMCSz/A/MAxMFklIRUh/r4ChP18uqIA//8AO//kBDgFkAEnAEMAAAAAAQcA3QI4BNYANrAVK1izGQA7PSKxOwBLsB5SWLgAgBu4AEBZsT0ZuAAfK7AzuAAgKxGwAjW3AgA+PD4dAwIrWQAB/sEAAAF1AS0ADQAisBUrWLELAy8vALULA1UHAEs/xPzEAbMABwMLERI5OTEwWTMiJiczFhYzMjY3MwYGBpWcFIgKX2JsZgeIGLGQnU1FRU2dkP//ACkAAAWeB4EBJwAjAAAAAAEHAN8C4wZUADawFStYswIPGxgisRsAS7AeUli4AIAbuABAWbEYArgAHyuwM7gAICsRsAI1twIAGyMbBBACK1kAAf7BAAABdQEtAA0AIrAVK1ixCwMvLwC1CwNVBwBLP8T8xAGzAAcDCxESOTkxMFkzIiYnMxYWMzI2NzMGBgaVnBSICl9ibGYHiBixkJ1NRUVNnZD//wA7/+QEOAYDAScAQwAAAAABBwDhAjgE1gA2sBUrWLMZAD47IrE+AEuwHlJYuACAG7gAQFmxOxm4AB8rsDO4ACArEbACNbcCAD5GPh0DAitZAAH/CP4uAOb//wAUAB+wFStYsQ0ALy8AswoRA0s/L8wBswQDBwAQwMDAMTBZAzQ2NzMGBhUUFjMyNjcXBgYjIicm+H5nsmZvNCkmUSImN3wubUhI/u1alyE8hD4rNhMQZhUaNzYA//8AKf4uBZ4FvgAnACMAAAAAAAcA4wRYAAAAAAAB/wj+LgDm//8AFAAfsBUrWLENAC8vALMKEQNLPy/MAbMEAwcAEMDAwDEwWQM0NjczBgYVFBYzMjY3FwYGIyInJvh+Z7JmbzQpJlEiJjd8Lm1ISP7tWpchPIQ+KzYTEGYVGjc2AP//ADv+LgQ4BF0AJwBDAAAAAAAHAOUDGwAAAAD//wBa/9gFeQd9AScAJQAAAAABBwCOAv0GVAA2sBUrWLMKBB8hIrEfAEuwHlJYuACAG7gAQFmxIQq4AB8rsDO4ACArEbABNbcBAB4gHg0HAitZ//8ARv/kBDEF/wEnAEUAAAAAAQcAtQJKBNYANrAVK1izCgQfISKxHwBLsB5SWLgAgBu4AEBZsSEKuAAfK7AzuAAgKxGwATW3AQAeIB4NBwIrWQAB/pEAAQFhASoACAAqsBUrWLEGAS8vALICCEs/3LMEAwgFwBDAwAG1BAUGAwIBENzAENzAMTBZJwMzFzE3MwMjh+jmgoLm6IABASmnp/7X//8AWv/YBXkHfgEnACUAAAAAAQcA6QL9BlQANrAVK1izCgQgJiKxIABLsB5SWLgAgBu4AEBZsSYKuAAfK7AzuAAgKxGwATW3AQAfJB8NBwIrWQAB/pgAAQFoASoACAAqsBUrWLEGAS8vALICCEs/3LMEAwgFwBDAwAG1BAUGAwIBENzAENzAMTBZJwMzFzE3MwMjgOjmgoLm6IABASmnp/7X//8ARv/kBDEGAAEnAEUAAAAAAQcA6wJKBNYANrAVK1izCgQgJiKxIABLsB5SWLgAgBu4AEBZsSYKuAAfK7AzuAAgKxGwATW3AQAfJB8NBwIrWf//AJwAAAV7B34BJwAmAAAAAAEHAOkCtAZUADawFStYswULHCIisRwAS7AeUli4AIAbuABAWbEiBbgAHyuwM7gAICsRsAI1twIAGyAbCA4CK1kAAvz9/+QBHwW+ABgAJAFfsBUrWLEBA7gBAEAJAQgBJQAeCQABuAAAsgMPBCuxARCwA0AJAQwBJgEi/wABuAAAshAQBCsAsQBOP7EGQD+5ABkAq7EGH7kAtgAAEOwQ7LEONT+xE0s/sRUAENixCgYQ0LJAGR9JU1ixGR8QPLKABhlJUVixGUA4G7KAHwBJUVixH0BlOFlZWbELDbgBIbIADiYrsRASuAEqsgATJisBswMDDhAQwBDQuQAcAKCxDhCH7AGwEBCwC7gAbLEOEIcY/BiwFMCwCsCwIsCwFcADsxUAFABERLIAIhxJU1iygBwDSVFYsRwUEDyxHEBlOLEUAUQbsoAOIklRWLEVAURZWVmwFUVYsSIcEDyxIkA4WTEwsRg6K7oALgBAAC62QB8ZgBwZGysrsBVDWLMDBhkcuAAuQAwcGQYZHAM9HBkGAzgrWbAVQ1izAAMcH7gALkAMHB8AHxwDPh8cAwA4K1lZBSICETQSMzIXFzERMTMzMRExIyMxNTEHBgMiBhUUFjMyNjU0Jv7M0P/+z7lxDI+Qi4sFd3RzgoFzdIKCHAFEAQn6ATKcEAIN+kKLB6ADgbGdmq22opWoAAH/3gAAANwCRgARAEuwFStYsQEAuAEAQAkBCAESAB7/AAG4AACyAA8EK7EBBLAAQAkBDAETAR7/AAG4AACyBBAEKwCzAlQQOT/ssQgQEMQBsQkAEMAxMFkDNTMzFRQGBzE1MTY3NjcxIyMWeXl8gk4bFAQsSQHBhcymuRtSGEEvYf//AFH/5AXlBb4AJwDuA1QAAAAHAO8FCQN4AAAAAv/3AAAFfAW+ABQAJQE9sBUrWLEBALgBAEAJAQgBJgAhBQABuAAAsgAPBCuxAQ+wAEAJAQwBJwEeDAABuAAAsg8QBCsAsQw5P7ESSz+0DAoIDEIrtBITABJCK7EDEhDEQAkGQAMGAwYDACUrOrMDBgMGshIMDCuxBAMQwLEaG8DAsQUGEMCxGRjAwLEVJbgAqLAMEPzAsR4fuACzsBIQ/MCzHh8VJRDAEMABshYVHbgAZLMIAAgAEMCHGPwYwMAFswcEAgAQwMTAsxcaHB0QwMTAAbEPDxDQuQAiAJKxCACH7AOyACIdSVNYsoAPIklRWLEiHRA8sSJAOFlZMTCxEDorugAuAEAALraAJSKAJSIbKyuwFUNYswwPIiW4AC5ADCIlDCUiDzwlIg8MOCtZsBVDWLMPEh8iuAAuQAwiHxIfIg8/Ih8SDzgrWVkzMRExIzUzMRExMzEhIAAREAAhITETMRExIRUhMRExITI2NTQmI5miopkB3gEwATz+uP7D/juaAVL+rgEFvLyvsAKE/wI7/pz+qf6G/ncEwf7C//55/f3l5QACAEb/5ATmBb4AHwArAaiwFStYsQEDuAEAQAkBCAEsAB4JAAG4AACyAw8EK7EBGLADQAkBDAEtASL/AAG4AACyGBAEKwCxAE4/sQZAP7kAIACrsQYmuQC2AAAQ7BDssRI1P7EbSz+xFA24AGu0FgsLEhsREjkvwPwYwLcUDg0XCw4LCxAIwMAQwMAEsgASDUlTWLASPFmxHQAQ2LEKBhDQskAgJklTWLEgJhA8soAGIElRWLEgQDgbsoAmAElRWLEmQGU4WVlZsQ8RuAEhsgASJiuxGBq4ASqyABsmKwGzAwMXGBDAENC5ACMAoLEXGIfsAbAYELAPuABssRcYhxj8GLAcwLAKwLApwLAdwLMVGAwDEMQQxLcUFxgOCxcYDxCHwMAQwMADsxUAFABERLIAKSNJU1iygCMDSVFYsSMcEDyxI0BlOLEUAUQbsoAXKUlRWLEVAURZWVmwFUVYsSkjEDyxKUA4WTEwsRg6K7oALgBAAC62QCYggCMgGysrsBVDWLMDBiAjuAAuQAwjIAYgIwM9IyAGAzgrWbAVQ1izAAMjJrgALkAMIyYAJiMDPiYjAwA4K1lZBSICETQSMzIXFzE1ITUhNTEzMzEVMxUjETEjIzE1MQYDIgYVFBYzMjY1NCYCFdD/8MPFeBP+2QEnj5B+fo+QdHNzgoFzdIKCHAFEAQn6ATKcGffMU1PM+2GAmwOAsZ2arbailagA//8AnAAABPgHDgEnACcAAAAAAQcA2wK7BlQANrAVK1izAgAaHCKxGgBLsB5SWLgAgBu4AEBZsRwCuAAfK7AzuAAgKxGwATW3AQAdGx0VAAIrWf//AC//5AQ6BZABJwBHAAAAAAEHAN0CSQTWADawFStYswYAJigisSYAS7AeUli4AIAbuABAWbEoBrgAHyuwM7gAICsRsAI1twIAKScpCQMCK1kAAf9/ABMAgQD/AAMAILAVK1ixAgAvLwC5AAEBGbADL+wBuQACARawABD8MTBZJyEVIYEBAv7+/+wA//8AnAAABPgHUwEnACcAAAAAAQcA9QK7BlQANrAVK1izAgAbHSKxGwBLsB5SWLgAgBu4AEBZsR0CuAAfK7AzuAAgKxGwATW3AQAaHBoVAAIrWQAB/38AEwCBAP8AAwAgsBUrWLECAC8vALkAAQEZsAMv7AG5AAIBFrAAEPwxMFknIRUhgQEC/v7/7AD//wAv/+QEOgXVAScARwAAAAABBwD3AkkE1gA2sBUrWLMGACcpIrEnAEuwHlJYuACAG7gAQFmxKQa4AB8rsDO4ACArEbACNbcCACYoJgkDAitZ//8AnP4uBP8FvgAnACcAAAAAAAcA4wQZAAAAAP//AC/+LgQ6BF0AJwBHAAAAAAAHAOUCQAAAAAD//wCcAAAE+Ad+AScAJwAAAAABBwDpArsGVAA2sBUrWLMCABwiIrEcAEuwHlJYuACAG7gAQFmxIgK4AB8rsDO4ACArEbABNbcBABsgGxUAAitZ//8AL//kBDoGAAEnAEcAAAAAAQcA6wJJBNYANrAVK1izBgAoLiKxKABLsB5SWLgAgBu4AEBZsS4GuAAfK7AzuAAgKxGwAjW3AgAnLCcJAwIrWf//AFr/2AW0B4EBJwApAAAAAAEHAN8DMAZUADawFStYswYAKicisSoAS7AeUli4AIAbuABAWbEnBrgAHyuwM7gAICsRsAE1twEAKjIqCgMCK1n//wBS/kMEbAYDAScASQAAAAABBwDhAh8E1gA2sBUrWLMWCDIvIrEyAEuwHlJYuACAG7gAQFmxLxa4AB8rsDO4ACArEbACNbcCADI6MhcLAitZAAH/9gAAAPQCRgARAEuwFStYsQEAuAEAQAkBCAESAB7/AAG4AACyAA8EK7EBBLAAQAkBDAETAR7/AAG4AACyBBAEKwCzAlQQOT/ssQgQEMQBsQkAEMAxMFkTNTMzFRQGBzE1MTY3NjcxIyMCeXl8gk4bFAQsSQHBhcymuRtSGEEvYf//AFr9JQW0BeYAJwApAAAAAAAHAP8Clf0lAAAAAf+BAAAAfwJGABEASLAVK1ixAQS4AQBACQEIARIAHv8AAbgAALIEDwQrsQEAsARACQEMARMBHv8AAbgAALIAEAQrALQCVBAHOT/c7AGxCQAQwDEwWTcVIyM1NDY3MRUxBgcGBzEzM3N5eXyCThsUBCxJhYXMprkbUhhBL2H//wBS/kMEbAccACcASQAAAAAABwEBAh8E1gAA////3gAAAmIHDgEnACsABAAAAQcA2wEgBlQANrAVK1izAwgKDCKxCgBLsB5SWLgAgBu4AEBZsQwDuAAfK7AzuAAgKxGwATW3AQANCw0GCQIrWf///94AAAJiBZABJwDGAAQAAAEHAN0BIATWADawFStYswQICgwisQoAS7AeUli4AIAbuABAWbEMBLgAHyuwM7gAICsRsAE1twEADQsNBgkCK1n//wAo/i4CBgW+ACcAKwAEAAAABwDjASAAAAAA////3/4uAb0FyQAnAEv/8wAAAAcA5QDXAAAAAP//AIMAAAG2B1MBJwArAAAAAAEHAPUBHAZUADawFStYswMICw0isQsAS7AeUli4AIAbuABAWbENA7gAHyuwM7gAICsRsAE1twEACgwKBgkCK1n//wCy/SUFxwW+ACcALQAAAAAABwD/Ao79JQAA//8Ajf0lBH4FvgAnAE0AAAAAAAcA/wHr/SUAAP//AJwAAASqB30BJwAuAAAAAAEHAI4BNQZUADawFStYswQADxEisQ8AS7AeUli4AIAbuABAWbERBLgAHyuwM7gAICsRsAE1twEADhAOCQACK1n//wCNAAACnQd9AScATgAAAAABBwCOARwGVAA2sBUrWLMECAsNIrELAEuwHlJYuACAG7gAQFmxDQS4AB8rsDO4ACArEbABNbcBAAoMCgYJAitZ//8AnP0lBKoFvgAnAC4AAAAAAAcA/wIk/SUAAP//AI39JQGsBb4AJwBOAAAAAAAHAP8Anf0lAAD//wCcAAAEqgW+ACcALgAAAAAABwDvAwcDeAAA//8A0wAAA2MFvgAnAE4ARgAAAAcA7wKHA3gAAAAB/+IAAASkBb4AFQC6sBUrWLEBALgBAEAJAQgBFgAhBQABuAAAsgAPBCuxARGwAEAJAQwBFwEeDgABuAAAshEQBCsAswBLCDk/P7AUwLEPEbkAZwAAEPzAsQwEuABrtA0DAwgAERI5EMB6/BjAsQYJuAEdsgEIJisBsQkPuABkswYABgAQwIcY/BjAAbIMAwAQxMRACgsODwUCDQMGAAAQhwjAwBDAwLcLBQQOAg0DAxAHBDw8EDw8AbEUE7gBHrIAESYrMTBZMzERBzU3ETEzMzERNxUHETEhMRUVMZa0tJma//8C2wJ8XaBdAqL9/YSghP3qgoMAAAH/4gAAAmUFvgARALSwFStYsQERuAEAQAkBCAESACL/AAG4AACyEQ8EKwG5AA4AbLMFEQUREMCHGPwYAbMRDhEOuv////8ADCsAsQg1P7EQSz+xCwO4AGu0DAICCBAREjkQwHr8GMCxBQe4ASGyAAgmK7EOEbgBI7IBECYrAbMIDgUREMAQwLMLDgIREMQQxEAKCg0OBAEMAgURERCHCMDAEMDAtwoEAw0BDAICEAcEPDwQPDwBMTC1ERITDhgFK1kzEQc1NxExMzMxETcVBxExIyOVs7OPkLGxj5ACk2KfYgKM/hFhn2H80AD//wCNAAAFPAd9AScAMAAAAAABBwCOAuQGVAA2sBUrWLMHAhkbIrEZAEuwHlJYuACAG7gAQFmxGwe4AB8rsDO4ACArEbABNbcBABgaGBIDAitZ//8AhQAABF4F/wEnAFAAAAAAAQcAtQJxBNYANrAVK1izDB8iJCKxIgBLsB5SWLgAgBu4AEBZsSQMuAAfK7AzuAAgKxGwATW3AQAhIyEQIAIrWf//AI39JQU8Bb4AJwAwAAAAAAAHAP8CZf0lAAD//wCF/SUEXgRdACcAUAAAAAAABwD/AfL9JQAA//8AjQAABTwHfgEnADAAAAAAAQcA6QLkBlQANrAVK1izBwIaICKxGgBLsB5SWLgAgBu4AEBZsSAHuAAfK7AzuAAgKxGwATW3AQAZHhkSAwIrWf//AIUAAAReBgABJwBQAAAAAAEHAOsCcQTWADawFStYswwfIykisSMAS7AeUli4AIAbuABAWbEpDLgAHyuwM7gAICsRsAE1twEAIiciECACK1n//wBa/9gF3wcOAScAMQAAAAABBwDbAxwGVAA2sBUrWLMGDBocIrEaAEuwHlJYuACAG7gAQFmxHAa4AB8rsDO4ACArEbACNbcCAB0bHQkDAitZ//8ARv/kBJ8FkAEnAFEAAAAAAQcA3QJyBNYANrAVK1izBgwaHCKxGgBLsB5SWLgAgBu4AEBZsRwGuAAfK7AzuAAgKxGwAjW3AgAdGx0JAwIrWQAC/nL/0wJEAPwAAwAHAF+wFStYsQEAuAEAQAkBCAEIAB7/AAG4AACyAA8EK7EBBrAAQAkBDAEJAR7/AAG4AACyBhAEKwCxAQMvL7EFBy8vAbsAHABdABsAXbMGAB4LK7ICGwAQ/LIEGwYQ/DEwWQUTIQEhEyEB/nLBATr+1AEIwQE6/tQtASn+1wEp/tf//wBa/9gF3wdQAScAMQAAAAABBwEaAxwGVAA4sBUrWLMGDBsdIrEbAEuwHlJYuACAG7gAQFmxHQa4AB8rsDO4ACArEbECAzU1twIDGiAaCQMCK1kAAv5yAAACRAEpAAMABwBfsBUrWLEBALgBAEAJAQgBCAAe/wABuAAAsgAPBCuxAQawAEAJAQwBCQEe/wABuAAAsgYQBCsAsQEDLy+xBQcvLwG7ABwAXQAbAF2zBgAeCyuyAhsAEPyyBBsGEPwxMFkhEyEBIRMhAf5ywQE6/tQBCMEBOv7UASn+1wEp/tcA//8ARv/kBLYF/wEnAFEAAAAAAQcBHAJyBNYAOLAVK1izBgwbHSKxGwBLsB5SWLgAgBu4AEBZsR0GuAAfK7AzuAAgKxGxAgM1NbcCAxogGgkDAitZAAIATP/dB7AF4gApADsA/rAVK1ixASa4AQBACQEIATwAHgQAAbgAALImDwQrsQEbsCZACQEMAT0BHg0AAbgAALIbEAQrALMfSwQ5Pz+0Hx8bH0IrsRYYuQBnAB8Q/MC0BwQEBEIrsQ0LuQBmAAQQ/MCzExMEHxESOS+5ABAAZfyzExATELIfBAwrsxUTDhAQwBDAsSNQP7EANj8AuQAqAKixADC5ALMAIxDsEOwBugAtAJ0AJhDsAbISBxsQxMQBQAkNFg0OFRYWGyYREjkvwMDAh0AJN0ANNw03DQAlKzqxNDcvwLEfBMDAsQoJuAEfsgAHJiuxEBG4ASCyABImK7EYGrgBHrIAGyYrMTBZATIXMTUhMSExFRUxITERMSEVFTEhMRExITEVFTEhMSE1MQYHIAAREDc2BSICAxQWMzI3Njc2NRE0JicmAqfIdwEjAp39YwKA/YACp/1Z/t14x/7l/sCgoAFQrq4Btah1UR0UEyYbUAXibUmCg/7Ifn/+gYKDRmgBAZQBZgFuz876/ur+6ej8Qhc0MzQCJjVoF0MAAwBG/+QHSwRdACUAMgA9AYywFStYsQEiuAEAQAkBCAE+AB4IAAG4AACyIg8EK7EBCLAiQAkBDAE/AR4QAAG4AACyCBAEKwCxH04/sQBAP7EaTj+xBUA/uwAcAKkAGwC0swAfHgsrsSoRuAC0tCEaLBsfEOwQHewrsRYaEMSxKji4AKm0IQUmHAAQ7BAd7Cu5AD0Aa7MMDB8AERI5L/yzDD0MPbIfAAwrszM9CwwQwBDAskA4PUlSWLE4PRA8szNAPUBlOGU4sgA9DElTWLMLQAxAZThlOFlZsgAMEUlTWLERDBA8swtADEA4OLIAPQxJU1izM0A9QDg4WVkBsSIiENC7ABwAkwAbAJ6zDSIeCyuxKRvssy8vCCIREjkvQAkNQC8NLw0vACUrOrE8DS/Asx0DDS8REjk5uQAzAJOyCggIENDAGPwYAbAIELAW1LEVFQHBAMGxFRYGDrkAFQCe7QEBskA0PElSWLM0QDNAODhZsz08DA0QwMDAALIgCxVJU1izFUAWQGU4ZTgbsiALFUlTWLEVQGU4WVkxMFkBFhcxNjcyABEWBzEhMRYXFjMyNjcxITEGBCMGJzEGJyIAERA3NgUiBhUUFjMyNjU0JyYFMSYnJiMiBwYHMQJb6I2J7PkBDQIH/SwKMDyOOWMLASQl/vPK7IaO6vX+4JCQAQB6f396en9APwNVCio4dXA7JQ4EXQGKigH+0/7qICGBQFBKNKa8AYyMAQEyAQQBCp2c8KuloaiooaVWVd1iN0lVNlcA//8AnAAABWsHfQEnADQAAAAAAQcAjgK8BlQANrAVK1izAyMxMyKxMQBLsB5SWLgAgBu4AEBZsTMDuAAfK7AzuAAgKxGwAjW3AgAwMjAIJAIrWf//AIMAAANABf8BJwBUAAAAAAEHALUBvwTWADawFStYswQXGhwisRoAS7AeUli4AIAbuABAWbEcBLgAHyuwM7gAICsRsAE1twEAGRsZDRgCK1n//wCc/SUFawW+ACcANAAAAAAABwD/Amf9JQAA//8Ag/0lAvwEXQAnAFQAAAAAAAcA/wCT/SUAAP//AJwAAAVrB34BJwA0AAAAAAEHAOkCvAZUADawFStYswMjMjgisTIAS7AeUli4AIAbuABAWbE4A7gAHyuwM7gAICsRsAI1twIAMTYxCCQCK1n//wCDAAADUwYAAScAVAAsAAABBwDrAesE1gA2sBUrWLMEFxshIrEbAEuwHlJYuACAG7gAQFmxIQS4AB8rsDO4ACArEbABNbcBABofGg0YAitZ//8AUP/YBQgHfQEnADUAAAAAAQcAjgKmBlQANrAVK1izKRIvMSKxLwBLsB5SWLgAgBu4AEBZsTEpuAAfK7AzuAAgKxGwATW3AQAuMC4PJgIrWf//AD3/5AQnBf8BJwBVAAAAAAEHALUCGwTWADawFStYsykSLzEisS8AS7AeUli4AIAbuABAWbExKbgAHyuwM7gAICsRsAE1twEALjAuDyYCK1n//wBQ/i0FCAXmACcANQAAAAAABwCZAqwAAAAA//8APf4tBCcEXQAnAFUAAAAAAAcAwAJQAAAAAP//AFD/2AUIB34BJwA1AAAAAAEHAOkCpgZUADawFStYsykSMDYisTAAS7AeUli4AIAbuABAWbE2KbgAHyuwM7gAICsRsAE1twEALzQvDyYCK1n//wA9/+QEJwYAAScAVQAAAAABBwDrAhsE1gA2sBUrWLMpEjA2IrEwAEuwHlJYuACAG7gAQFmxNim4AB8rsDO4ACArEbABNbcBAC80Lw8mAitZAAH/2v/kAPQCFwARAEuwFStYsQEAuAEAQAkBCAESAB7/AAG4AACyAA8EK7EBBLAAQAkBDAETAR7/AAG4AACyBBAEKwCzAlQQOT/ssQgQEMQBsQkAEMAxMFkDNTMzFRQGBzE1MTY3NjcxIyMZh4aKkFceEwYwUQGClcWdsx5bGzYiO///AB39SgTIBb4AJwA2AAAAAAAHASwCCf1mAAAAAf/e/3EA3AFvABEAS7AVK1ixAQC4AQBACQEIARIAHv8AAbgAALIADwQrsQEEsABACQEMARMBHv8AAbgAALIEEAQrALMCVBA5P+yxCBAQxAGxCQAQwDEwWSc1MzMVFAYHMTUxNjc2NzEjIxZ5eXyCThsRBitJ64Syj6IbUhgyIDkA//8AFP1zAnkFZQAnAFYAAAAAAAcBLgEp/gIAAP//AB0AAATIB34BJwA2AAAAAAEHAOkCcgZUADawFStYswgRFRsisRUAS7AeUli4AIAbuABAWbEbCLgAHyuwM7gAICsRsAE1twEAFBkUDxICK1n//wAf//QDtAW3ACcAVgALAAAABwDvAtgDcQAA//8Ak//YBTYHDgEnADcAAAAAAQcA2wLkBlQANrAVK1izCQMYGiKxGABLsB5SWLgAgBu4AEBZsRoJuAAfK7AzuAAgKxGwATW3AQAbGRsWBwIrWf//AIf/5ARcBZABJwBXAAAAAAEHAN0CcQTWADawFStYsyAZISMisSEAS7AeUli4AIAbuABAWbEjILgAHyuwM7gAICsRsAE1twEAJCIkDhwCK1n//wCT/9gFNgeyAScANwAAAAABBwCWAuQGVAA4sBUrWLMJAx4YIrEeAEuwHlJYuACAG7gAQFmxGAm4AB8rsDO4ACArEbEBAjU1twECGyEbFgcCK1n//wCH/+QEXAY0AScAVwAAAAABBwC9AnEE1gA4sBUrWLMgGSchIrEnAEuwHlJYuACAG7gAQFmxISC4AB8rsDO4ACArEbEBAjU1twECJCokDhwCK1n//wCT/9gFNgdQAScANwAAAAABBwEaAuQGVAA4sBUrWLMJAxkbIrEZAEuwHlJYuACAG7gAQFmxGwm4AB8rsDO4ACArEbEBAjU1twECGB4YFgcCK1n//wCH/+QEtQX/AScAVwAAAAABBwEcAnEE1gA4sBUrWLMgGSIkIrEiAEuwHlJYuACAG7gAQFmxJCC4AB8rsDO4ACArEbEBAjU1twECISchDhwCK1n//wCT/i4FNgW+ACcANwAAAAAABwDjAz4AAAAA//8Ah/4uBFwEQAAnAFcAAAAAAAcA5QNgAAAAAP//AB8AAAU5B1IBJwA7AAAAAAEHAJQCrAZUADiwFStYswQRFBYisRQAS7AeUli4AIAbuABAWbEWBLgAHyuwM7gAICsRsQECNTW3AQITGRMQEgIrWf//ADMAAASwB30BJwA8AAAAAAEHAI4CfgZUADawFStYswgSFRcisRUAS7AeUli4AIAbuABAWbEXCLgAHyuwM7gAICsRsAE1twEAFBYUEBMCK1n//wApAAAD1wX/AScAXAAAAAABBwC1AggE1gA2sBUrWLMJExYYIrEWAEuwHlJYuACAG7gAQFmxGAm4AB8rsDO4ACArEbABNbcBABUXFREUAitZ//8AMwAABLAHUwEnADwAAAAAAQcA9QJ+BlQANrAVK1izCBIVFyKxFQBLsB5SWLgAgBu4AEBZsRcIuAAfK7AzuAAgKxGwATW3AQAUFhQQEwIrWf//ACkAAAPXBdUBJwBcAAAAAAEHAPcCCATWADawFStYswkTFhgisRYAS7AeUli4AIAbuABAWbEYCbgAHyuwM7gAICsRsAE1twEAFRcVERQCK1n//wAzAAAEsAd+AScAPAAAAAABBwDpAn4GVAA2sBUrWLMIEhYcIrEWAEuwHlJYuACAG7gAQFmxHAi4AB8rsDO4ACArEbABNbcBABUaFRATAitZ//8AKQAAA9cGAAEnAFwAAAAAAQcA6wIIBNYANrAVK1izCRMXHSKxFwBLsB5SWLgAgBu4AEBZsR0JuAAfK7AzuAAgKxGwATW3AQAWGxYRFAIrWQAB/+3+UAQgBegAJQD1sBUrWLEADrgBAEAJAQgBJgAe/wABuP/tsg4PBCsBsA4Qsg4UFMCHuQACAGx69BgBsw4CDgK6/////wAMKwCyGA5LPy+5AB4Aqey5ABAAa7ETGBDU/LMTEBMQsg4YDCuzExMQEBDAEMC0AAAQIyPAwBDAwLkABQCpsQtRP+wAS7AeUliwgBuwQFmxGyNJU1ixGyMQPLAbS7AeUliwgBuwQFk4WQGwDhCyERQPwMDMsQsFwMABsAIQsiQBIsDAxLEeGMDAsBrEsQcREMQBAUuwHlJYsGAbsCBZsRoiSVNYsRoiEDywGkuwHlJYsGAbsCBZOFkxMFkBMQMGBiMmJzcXFjMyNjcTMSMnITE3NjYzMhcHJyYjIgYHBzEzFwK2gye+mXNVMw0rMjw9H3XsAQEQFCW/nnVbNAowN0I8GQvsAQMK/Q/m4wEq2QYSeLcCn8lx1NAs2AQUXpA7yQAB/+0E1gK9Bf8ACABWsBUrWLEBBrgBAEAJAQgBCQAe/wABuAAAsgYPBCuxAQGwBkAJAQwBCgEe/wABuAAAsgEQBCsAsggFSz/cswEFBAPAwBDAAbUDAgEEBQYQ3MAQ3MAxMFkBEyMnMQcjEzMB1ejmgoLm6IAF//7Xp6cBKQAB/+0E1wK9BgAACABWsBUrWLEBAbgBAEAJAQgBCQAe/wABuAAAsgEPBCuxAQawAUAJAQwBCgEe/wABuAAAsgYQBCsAsgIISz/cswQDCAXAEMDAAbUEBQYDAgEQ3MAQ3MAxMFkTAzMXMTczAyPV6OaCgubogATXASmnp/7XAAABABME5gKXBYgAAwBHsBUrWLEBA7gBAEAJAQgBBAAe/wABuAAAsgMPBCuxAQGwA0AJAQwBBQEe/wABuAAAsgEQBCsAsQABuABzsgMCSz/A/MAxMFkTIRUhEwKE/XwFiKIAAAEAGgTWAs4GAwANAE6wFStYsQEDuAEAQAkBCAEOAB7/AAG4AACyAw8EK7EBC7ADQAkBDAEPAR7/AAG4AACyCxAEKwC1CwNVBwBLP8T8xAGzAAcDCxESOTkxMFkBIiYnMxYWMzI2NzMGBgFflZwUiApfYmxmB4gYsQTWkJ1NRUVNnZAAAAEAzQTpAc8F1QADAEywFStYsQEAuAEAQAkBCAEEAB7/AAG4AACyAA8EK7EBArAAQAkBDAEFAR7/AAG4AACyAhAEKwC5AAEBGbADL+wBuQACARawABD8MTBZEyEVIc0BAv7+BdXsAAIAeQSKAjMGNAAMABkA6LAVK1ixAQO4AQBACQEIARoAHv8AAbgAALIDDwQrsQEJsANACQEMARsBHv8AAbgAALIJEAQrALEGAC/MshQGAElEshUNAEpEtBMVBg0V7BDsAbIJFAMQ5LQQFQkWFewQ7DEwsRg6K7oALgBAAC62gBANgBANGysrsBVDWLMGCRATuAAuQAwQEwYTEAk8ExAJBjgrWbAVQ1izAwYTFrgALkAMFhMGExYDPRYTBgM4K1mwFUNYswADFhm4AC5ADBYZABkWAz4ZFgMAOCtZsBVDWLMJDA0QuAAuQAwQDQwNEAk/EA0MCTgrWVkBIiY1NDYzMhYVFAYjNTI2NTQmIyIGFRQWMwFWXYCAXV2AgF0vQEAvL0BALwSKfFlZfHxZWXxvOysrOzsrKzsAAAEAoP4uAn7//wAUAEuwFStYsQEAuAEAQAkBCAEVAB7/AAG4AACyAA8EK7EBDbAAQAkBDAEWAR7/AAG4AACyDRAEKwCzChEDSz8vzAGzBAMHABDAwMAxMFkTNDY3MwYGFRQWMzI2NxcGBiMiJyagfmeyZm80KSZRIiY3fC5tSEj+7VqXITyEPis2ExBmFRo3NgAAAf/eBOMCzAXpABkATLAVK1ixAQC4AQBACQEIARoAHv8AAbgAALIADwQrsQENsABACQEMARsBHv8AAbgAALINEAQrAEAJDQwDCQAZFhBLP8TExNzUxMQxMFkDNjYzMhYXFhYzMjY3MwYGIyImJyYmIyIGByIRhWIVXC4eSRYcNAqADnpZFWo3JUgQHjQIBON0iBoTDRExJHSIGhMNETEkAAIAYATWBDIF/wADAAcAX7AVK1ixAQC4AQBACQEIAQgAHv8AAbgAALIADwQrsQEGsABACQEMAQkBHv8AAbgAALIGEAQrALEBAy8vsQUHLy8BuwAcAF0AGwBdswYAHgsrsgIbABD8sgQbBhD8MTBZExMhASETIQFgwQE6/tQBCMEBOv7UBNYBKf7XASn+1wABAHD/5wSkA8kAIgB9sBUrWLEAALgBAEAJAQgBIwAe/wABuAAAsgAPBCuxAAe4AQBACQEMASQBHv8AAbgAALIHEAQrALEHGi8vsQ8aEMBACSIfHhYVCQgDBxDE3MDAwMDAxAG1DBIAFx0AENTIENTIskASF0lSWLKABwlJUVizEkAMQDg4WVkxMFkTNjYzJTI2NwchBhIXFgYjIiY1NBI3IwMGBiMiJjcTIyIGB3BboZUBUlrKLR7+0yAGKBYeP0BDLjeUdBI2O0IVJ9NeS29VArSgawEFBKSr/sqzY0d2cV8BFOT9dGlJWngCbD9aAAABAAABzwRyAqwAAwBHsBUrWLEBA7gBAEAJAQgBBAAe/wABuAAAsgMPBCuxAQGwA0AJAQwBBQEe/wABuAAAsgEQBCsAsQABuABzsgMCRD/A/MAxMFkRIRUhBHL7jgKs3QABAAABzwgAAqwAAwBHsBUrWLEBA7gBAEAJAQgBBAAe/wABuAAAsgMPBCuxAQGwA0AJAQwBBQEe/wABuAAAsgEQBCsAsQABuABzsgMCRD/A/MAxMFkRIRUhCAD4AAKs3QABAI0DowGsBc4AEQBPsBUrWLEBBLgBAEAJAQgBEgAe/wABuAAAsgQPBCuxAQCwBEAJAQwBEwEe/wABuAAAsgAQBCsAswJUBzk/7LAQzAGyAF0EEOyxCQAQxDEwWQEVIyM1NDY3MRUxBgcGBzEzMwGskI+Jj1sgFQdIVgQlgsKbsB5nHDcmRwAAAQCNA5IBrAW9ABEAT7AVK1ixAQC4AQBACQEIARIAHv8AAbgAALIADwQrsQEEsABACQEMARMBHv8AAbgAALIEEAQrALMHVAI5P/ywEMwBsgRdABDssQkAEMQxMFkTNTMzFRQGBzE1MTY3NjcxIyONkI+Jj1sgFQdIVgU7gsKbsB5nHDcnRgABAI3+2gGsAQQAEQBLsBUrWLEBALgBAEAJAQgBEgAe/wABuAAAsgAPBCuxAQSwAEAJAQwBEwEe/wABuAAAsgQQBCu0AlQHEEsAP9TsswRdCQABEMTsMTBZNzUzMxUUBgcxNTE2NzY3MSMjjZCPiY9bIBUHSFaCgsKasB5nHDcmRgAAAgCDA6MDfQXOABEAIwCMsBUrWLEBBLgBAEAJAQgBJAAe/wABuAAAsgQPBCuxARKwBEAJAQwBJQEe/wABuAAAshIQBCsAtxRUGTkCVAc5P+w/7LMiGRAHEMwQzAG7ABwAXQAbAF2zEgQeCyuyBBsAL+xLsB5SWLCAGlmzEhxAFtwa7LMbEgkAEMQQxLUgEhYOAAQREjkREjkxMFkBFSMjNTQ2NzEVMQYHBgcxMzMFFSMjNTQ2NzEVMQYHBgcxMzMBopCPiY9bIBUHSFYB25CPiY9bIBUHSFYEJYLCm7AeZxw3JkeCgsKbsB5nHDcmRwAAAgCDA5IDfQW9ABEAIwCMsBUrWLEBALgBAEAJAQgBJAAe/wABuAAAsgAPBCuxARawAEAJAQwBJQEe/wABuAAAshYQBCsAtxlUFDkHVAI5P+w/7LMiGRAHEMwQzAG7ABwAXQAbAF2zFgAeCyuyABsEL+xLsB5SWLCAGlmzFhxAEtwa7LMbEgkAEMQQxLUgFhIOBAAREjkREjkxMFkTNTMzFRQGBzE1MTY3NjcxIyMlNTMzFRQGBzE1MTY3NjcxIyODkI+Jj1sgFQdIVgHbkI+Jj1sgFQdIVgU7gsKbsB5nHDcnRoKCwpuwHmccNydGAAIAg/7ZA30BBAARACMAiLAVK1ixAQC4AQBACQEIASQAHv8AAbgAALIADwQrsQEWsABACQEMASUBHv8AAbgAALIWEAQrAEAKFFQZIksCVAcQSz/U7D/U7AG7ABwAXQAbAF2zFgAeCyuyABsEL+xLsB5SWLCAGlmzFhxAEtwa7LMbEgkAEMQQxLUgFhIOBAAREjkREjkxMFk3NTMzFRQGBzE1MTY3NjcxIyMlNTMzFRQGBzE1MTY3NjcxIyODkI+Jj1sgFQdIVgHbkI+Jj1sgFQdIVoKCwpuwHmccNyZHgoLCm7AeZxw3JkcAAAEASv6gBCkFvgAPAISwFStYsQEPuAEAQAkBCAEQAB7/AAG4AACyDw8EK7EBB7APQAkBDAERAR7/AAG4AACyBxAEKwCzAzkLUT8/swcGAQC4AGS2CAkODw8DCxESOS/AwMD8wMDAAbMEBQsKuABktgMMAwIMDQ8Q1MDAwIcY/BjAwMABtQcUChQND0lEEPQxMFkTITERIRExIRUhMREhETEhSgFlARQBZv6a/uz+mwQEAbr+Rur7hgR6AAEASv6gBCkFvgAbAKywFStYsQEVuAEAQAkBCAEcAB7/AAG4AACyFQ8EK7EBDbAVQAkBDAEdAR7/AAG4AACyDRAEKwCzAzkRUT8/swgJGhu4AGRACwcGAQAAAxENDBcWuABktg4PFBUVAxEREjkvwMDA/MDAwBESOS/AwMD8wMDAAbUEBQoQEQu4AGRAChkYAwIZExIYGxUQwNTEwMDAxIcY/BjEwMDAxAG2Bw0UCxQYFUlEEPTAMTBZEyExESERMSEVITERMSEVITERIRExITUhMRExIUoBZgERAWj+mAFo/pj+7/6aAWb+mgQQAa7+Uur+I+r+QQG/6gHdAAEAFAGKArgELwALAEywFStYsQEJuAEAQAkBCAEMAB7/AAG4AACyCQ8EK7EBA7AJQAkBDAENAR7/AAG4AACyAxAEKwC5AAABGrAGL+y5AAMBF7AJARDsMTBZATIWFRQGIyImNTQ2AWaOxMSOjsTEBC/Fjo7ExI6OxQAAAwC8AAAHQwEqAAMABwALAHiwFStYsQEAuAEAQAkBCAEMAB7/AAG4AACyAA8EK7EBCrAAQAkBDAENAR7/AAG4AACyChAEKwC5AAkBGbILSwW4ARmyB0sBuAEZsQNLP+w/7D/sAbkACgEWswgEAga4ARa0BAQKAAK4ARawABDsERI5L/xJO+wxMFkTIREhASERIQEhESG8ATL+zgKqATL+zgKrATL+zgEq/tYBKv7WASr+1gAAB//7/9gH/gWuAAwAGQAdACoANwBEAFECPbAVK1ixAQO4AQBACQEIAVIAHv8AAbgAALIDDwQrsQFBsANACQEMAVMBHv8AAbgAALJBEAQrALkAEwC9sQANuAC9tBscBjkruAC9sSQxuAC9sx0aHks/wMB67BjUeuwYP8DAeuwY1HrsGLkARQC9sT5LuAC9sThLP3rsGNR67BgBthscGxxBGgMQwBDQwAixGxyxHRq4AHmyGxocKwMBsQkDEMS7ABwAnAAbAKezCQMeCyu2QRYcCRAbAxDsEOwQQAwuGyE0HCdIGztOHCfE7NTsEOzU7DEwsRg6K7oALgBAAC62gA0QgA0QGysrsBVDWLMGCRYZuAAuQAwWGQYZFgk8GRYJBjgrWbAVQ1izCQwTFrgALkAMFhMMExYJPxYTDAk4K1mwFUNYswADEBO4AC5ADBATABMQAz4TEAMAOCtZsBVDWLMDBg0QuAAuQAwQDQYNEAM9EA0GAzgrWbAVQ1izJCc0N7gALkAMNDckNzQnPDc0JyQ4K1mwFUNYsycqMTS4AC5ADDQxKjE0Jz80MSonOCtZsBVDWLMeIS4xuAAuQAwuMR4xLiE+MS4hHjgrWbAVQ1izISQrLrgALkAMLiskKy4hPS4rJCE4K1mwFUNYsz5BTlG4AC5ADE5RPlFOQTxRTkE+OCtZsBVDWLNBREtOuAAuQAxOS0RLTkE/TktEQTgrWbAVQ1izODtIS7gALkAMSEs4S0g7PktIOzg4K1mwFUNYszs+RUi4AC5ADEhFPkVIOz1IRT47OCtZWQEiJjU0NjMyFhUUBiMRIgYVFBYzMjY1NCYjAwEzASUiJjU0NjMyFhUUBiMRIgYVFBYzMjY1NCYjASImNTQ2MzIWFRQGIxEiBhUUFjMyNjU0JiMBQ4q+voqKv7+KNUdHNTZHRzaeAy+W/NECj4q+voqKv7+KNUdHNTZHRzYC64q+voqKv7+KNUdHNTZHRzYDHryIi8HBi4i8AcRINjRGRjQ2SPr2Bdb6Kh28iIvBwYuIvAHESDY0RkY0Nkj+PLyIi8HBi4i8AcRINjRGRjQ2SAABAKoAnAIAA94ACABasBUrWLAAjbEBBrgBAEAJAQgBCQAe/wABuAAAsgYPBCuxAQOwBkAJAQwBCgEe/wABuAAAsgMQBCsAswhEA0s/P7QCAQYIAxESOTk5AbQAAwIBBhDAwBDAMTBZAQcxFxUBNTUBAgDOzv6qAVYC77Oy7gEpeHgBKQABAKoAmwIAA90ACABasBUrWLAAjbEBALgBAEAJAQgBCQAe/wABuAAAsgAPBCuxAQawAEAJAQwBCgEe/wABuAAAsgYQBCsAswNECEs/P7QCAQYDCBESOTk5AbQCAQYDABDAEMDAMTBZEzcxJzUBFRUBqs7OAVb+qgGKs7Lu/td4eP7XAAAB/qX/1AKvBa8AAwBcsBUrWLEBArgBAEAJAQgBBAAe/wABuAAasgIPBCuxAQCwAkAJAQwBBQEe/wABuPyksgAQBCsAtQADOQIBSz/AP8ABswMAAwAQwAixAwCxAQK4AHmyAwIcKwMxMFkBASMBAq/8l6EDaQWv+iUF2wAAAgAFAkUCjAWlAA8AFwFssBUrWLEBArgBAEAJAQgBGAAe/wABuAAAsgIPBCuxAQ24AQBACQEMARkBHv8AAbgAALINEAQrsAIQS7AeUliwSnZZsA3EGACxBTc/sQ1IP0AJFxAQDQUSERIFEAjABBESOS/AsQkHwMCyAwEPuAB2/MDAskADIBrIGrEKDMDAtQYGBQQEBRDAwMDAwAGxBg0Q1LgAd0WxBgRJUliyQAQgGsgaG7EEAhDAWbANELMHDAYNBzw8sAnEsxIQDw64AHexDQaHGPwYxMTEAbIDAQIQwMC5/////7EXA7gAeLIEAxwrsQ0GCLISAx0rAwEBsmASE0kgZIpTWCCwAFJYuACAYiCyEhIRCCM4shMTFggjOBshWRshWQCyYBcWSSBkilNYILAAUli4AIBiILIXFxAIIziyFhYTCCM4GyFZGyFZALAFRrASRlBYsRIFEDxZsAVGsBNGUFixEwUQPFmwAUawA0ZSWLEDARA8WTEwWQEhNTUBMzMRMTMVIzEVIzU1MRExMQMHMQFZ/qwBOHN0aGjLvAkDA1lZAfD+AqS+vqQBOf7VDgABAAD/2gRPBbIAMQGdsBUrWLEBCbgBAEAJAQgBMgAe/wABuAAAsgkPBCuxARewCUAJAQwBMwEe/wABuAAAshcQBCsAsQRPP7kALQCz7LEABBDEsRQ4P7kAHQCo7LEnC7gAZbMoCCMNuABltSIQEAgEFBESOTkvwPzAL8D8wLIADQtJU1iygB0QSVFYtyNAIkAQQA1AODg4OLIADQtJU1iygAgtSVFYtyhAJ0ALQAhAZThlOGU4ZThZWRuygBANSVFYtydAC0AjQA1AODhlOGU4sgANC0lTWLKAEA1JUVi3J0ALQCNADUA4OGU4ZThZWVlZWbIAHRBJU1iygBANSVFYtyhACEAiQBBAZThlODg4WVlADCEQECQNDSYLCykICBDAwBDAwBDAwBDAwACxGBQQxAGxDAkQ0LkAJQCdsRQEh+wBsBcQsADUsTExAcEAwbExAAYOuQAxAJ3tAbAXELAY1LEZGQHBAMGxGRgGDrkAGQCd7QG0JyIXDgkQwBDExEAKISQmKSUQDQsIDBDAwMDAEMDAwMAAsiAZMUlTWLMAQDFAZThlOFkxMFkBMQYGIyInJicjNzM1NSM3MzY3NjMyFhcxITEmJiMiBwYHIQchFRUzByMWFxYzMjY3MQRPF/3C+31LHpgoW4MobyBKffu9/hv+3gxlSWkxEgwBJyj+7/wovw0SM2tIYAoBntD0uXGv1zQ617Vxvf/ZZHV4LT/XNzfXNi13alsAAAH+ogJ4AV8FvgASAJewFStYsQESuAEAQAkBCAETAB7/AAG4AACyEg8EKwG5AA8AZLMBEgESEMCHGPwYAbMSDxIPuv////8ADCsAswhWEVc/P7QICAYIQiuzDA4BA7kAZgAIEPzAwMCxDxK4ARyyAREmKwGyBgESEMDEsQ4PEMCyFBIGSUSyCBQPEOSxAwW4AR+yAAYmK7ELCrgBH7IACCYrMTBZAxExIzE1NTEhMRUVMSMxETEjI3PrAr3sc3MCeAKWWFhYWP1qAAAB/gcCeAH4Bb4AHQFTsBUrWLEBA7gBAEAJAQgBHgAe/wABuAAAsgMPBCuxARKwA0AJAQwBHwEe/wABuAAAshIQBCsAthoUAlcPB1Y/xD/EwLUYFx0cAgcREjk5OTm1GxsaGRkaEMDAwMDAswobCxkQwBDAsQUIuAEdsgEHJiuxDRC4AR2yAQ8mK7EAA7gBHLIBAiYrsRIVuAEcsgEUJisBuQAGAECzEBIDBUpkiopKZIxSQrIIHQC4AGq0BQMFBgMQQ1g8G8RZhxj8GMDABQGyDRcVuABqtBASEAYSEENYPBvEWYcY/BjAwAWyGhIDERI5twsZCkAbGRoIGhDI2BrAEMC5/////7EcCLgAcbIKCBwruf////+xChu4AHGyGxwcK7n/////sRgNuABxsgsNHCu5/////7ELGbgAcbIZGBwrAUuwGFBYsRUZSbEbAElhsCBjILEZG4o4IzhZMTBZATEjIzERMTMzMRMxMRMxMzMxETEjIzERMQMjIwMx/t5rbJycw76cnGtsy1ZWzAJ4A0b9SQK3/LoC+/0FAvgA//8AWgJ4B6YFvgEnAV4BuAAAAQcBXwWuAAAAHLAVK1gBsRYPSSCwAFBYZbAWIzixARYRNRsiWVkAAQBlAAAEuAWIADEAW7AVK1ixAA24AQBACQEIATIAHv8AAbgAALINDwQrsQATuAEAQAkBDAEzAR7/AAG4AACyExAEKwCxEAEvL7MZBx8BEMDMzLEpEBDMAbUeJhMCLA0QzMQQzMQxMFkhIQM3FhYXMyYmJyYmNTQkNzIAFRQGBwYGBzMWNjcXAyESNjc2EjU0JicGBhUUEhcWEgJX/mNKSiE5Vk8gczRBTAEr/vEBOUtCJnMuT0tKG0lK/mR6DxcuMa2Kiqw3KBhcAZoMikIDPchUatNL0fsE/v7HT9RsPshTAVd5DP5mAVIuSpQBAVmi0QQEzqJO/uCDTf73AAACAFH/4AOoBZoAHQApAGywFStYsQAAuAEAQAkBCAEqAB7/AAG4AACyAA8EK7EAGLgBAEAJAQwBKwEe/wABuAAAshgQBCsAsRUbLy+xIRsQzLIPCRUQzMS0JwMDFRsREjkvzAGxHgAQzLASxLYGJAAeGwMYEIdJOsQxMFkTNAAzMhYXNiYjIgYHBgYjIiY3NjYzMhIDEAAjIiY3FBYzMhI1NCYjIgJRAReyMGE4FUtVHEETHSkoPDUdIJFKxMQB/t3jlL2+WEBsmE5Oa5UBgeoBbSAivuA5Kj8nYjk+Vv7K/sr+jP4m6npyngFk/Xh4/rEAAAIAJQAABSoFbwACAAUAZLAVK1ixAAK4AQBACQEIAQYAHv8AAbgAALICDwQrsQABuAEAQAkBDAEHAR7/AAG4AACyARAEKwCxADk/tAUEAQJLP8DcwLEDABDAAbQDAAABAhESOT0vGMCzBQEEAi/ML8wxMFkBASEBASEC5AJG+vsCdv5CAx8Fb/qRBDX8jQABAMX+xQcyBb8AHwCJsBUrWLEBALgBAEAJAQgBIAAe/wABuAAAsgAPBCuxAROwAEAJAQwBIQEe/wABuAAAshMQBCsAsQkALy9ADxobCQsICgkSFR4BExQfABDAwMDcwMDAEMDcwBDcwAFAFBQVGRgODwoLEhMfHhobBQQJCAEAEMDAwNTA3MDUwBDAwMDUwNzA1MAxMFkTNTY2NRE2Jic1IRUGBhURFBYXFSE1NjYnESERFBYXFcWXXQNdmgZtl11dl/1AnVoD/Stdl/7FQRGP2gOF2Y8RQUERj9n8e9qPEUFBEYzdBO77EtqPEUEAAQGg/sUGSgW/ABMAZrAVK1ixAQC4AQBACQEIARQAHv8AAbgAALIADwQrsQESsABACQEMARUBHv8AAbgAALISEAQrALECAC8vQAoFCQoDAhENDBMAEMDcwMwQwNzAzAG3BQQREgoMAgAQxNTAEMzUzDEwWQEBASETBycmJiMhAQEhMjY3NxcDAaAB6/4eBF8uRhE2saL+bQFy/j0CDIqiRBZGdf7FA0YDtP6SDieOdf0c/QxmgSkV/jUAAQBVAZQEVQJ6AAMARrAVK1ixAQO4AQBACQEIAQQAHv8AAbgAALIDDwQrsQEBsANACQEMAQUBHv8AAbgAALIBEAQrALEAAbgAdLEDAi/A/MAxMFkTIRUhVQQA/AACeuYAAQB3AjgBqQNiAAMATLAVK1ixAQC4AQBACQEIAQQAHv8AAbgAALIADwQrsQECsABACQEMAQUBHv8AAbgAALICEAQrALkAAQEZsAMv7LkAAgEWsAABEOwxMFkTIREhdwEy/s4DYv7WAAABADj+iga6BfkACgBSsBUrWLEAALgBAEAJAQgBCwAe/wABuAAAsgAPBCuxAAW4AQBACQEMAQwBHv8AAbgAALIFEAQrALMACgIIL8jUzLEGAy/MAbMHCAIAEMDUzDEwWRMlAQEhFSEBIwEHOAEqAfoB4AF+/uf910r9xpEBtsL9EgZvVvjnAzVpAAADARsAlQbaA+IAFwAjAC8AbbAVK1ixAAC4AQBACQEIATAAHv8AAbgAALIADwQrsQAMuAEAQAkBDAExAR7/AAG4AACyDBAEKwCxAxUvL7MtDxsVEMzUzLMnCSEDEMzUzLMqHgMVERI5OQGzJAwYABDMEMyzKh4MABESOTkxMFkBNDYzMhYXNjYzMhYVFAYjIiYnBgYjIiY3FBYzMjY3JiYjIgYFNCYjIgYHFhYzMjYBG+mperFXSqdemcPCkmmoM2qhfq7wb4pkbalLP5Vqc54E4XdiVHw8KY1ZYnQCObP2eY5tbNOmotZxaZxs9K5rlJKfcWWZbWF3ZXZkbHIAAAEC8P4wBQEGIQAsAIawFStYsQEAuAEAQAkBCAEtAB7/AAG4AACyAA8EK7EBFrAAQAkBDAEuAR7/AAG4AACyFhAEKwCxEyovL7UZIRMDCioQzMQQzMwBtyQnHBYNEAYAEMzUwBDM1MCyIA0GSVNYsoAnEElRWLENQDhZWbIgHCRJU1iygCcQSVFYsSRAZThZWTEwWQE0NjMyFhUHBhYzFjYnJgInAhIzMhYVFAYjIiY1NDc2JiMiAhMSEgcGBiMiJgLwNyYjMgkBDgw0IxkkQgwhcJZCXC8vKioQAg8NTQZENhwhF2dQR2L+wSo9MyQ8CQ0BsIa/AdSVAasBmlQ8NDQmJwo+CAz++/6X/uT9h694eFQAAAIBngDmBpADYQAZADMAXbAVK1ixAQC4AQBACQEIATQAHv8AAbgAALIADwQrsQENsABACQEMATUBHv8AAbgAALINEAQrAEAMJh0jMzAqDAMJGRYQL8TE3NTE1MTE3NTEAbMnDRoAEMQQxDEwWQE2NjMyFhcWFjMyNjcXBgYjIiYnJiYjIgYHAzY2MzIWFxYWMzI2NxcGBiMiJicmJiMiBgcBnjnIWDe+eUSdLTyQLCUwsGYflEyiuSZAnDEfOchYN755RJ0tPJAsJTCwZh+UTKK5JkCcMQETZIsrJxYeRzMWc4ccFSwpRjMBf2SLKycWHkczFnOHHBUsKUYzAAEBl/+jBowEqAATAK2wFStYsQACuAEAQAkBCAEUAB7/AAG4AACyAg8EK7EAEbgBAEAJAQwBFQEe/wABuAAAshEQBCsAsQo5P7EAUD9ACg0OBQYMCwgHCQoQwNTAwMDcwMDAQA8TABESAQIQDwQDFAYUBgNKRBD+wMDA3MDAwBDAAbUTAAcGAwIQwMDA0Mi1CQoMDRAREMDAwNDItggFBAEJAAAQBzw8PDy2Eg8OCxMKChAHPDw8PDEwWQUBITUhEyE1IQEzASEVIQMhFSEBAZoBPv6/AbXs/V8DFAE9pP7FATj+VewCl/z1/sJdAXSHARSHAW/+kYf+7If+jAAAAgGhAAAGkwTTAAYACgBysBUrWLEBCrgBAEAJAQgBCwAe/wABuAAAsgoPBCuxAQmwCkAJAQwBDAEe/wABuAAAsgkQBCsAsQcKL8y0AQADBAoQ1MgvyLQCBQYABBESOTk5siAGBUlSWLMGEQURZTg4WQG1AgYKAAQJEMDAEMDAMTBZARUBARUBNREhFSEGk/vZBCf7DgTy+w4E04f+Zv7LhwF5h/2RhwAAAgGhAAAGkwTTAAYACgBysBUrWLEBCrgBAEAJAQgBCwAe/wABuAAAsgoPBCuxAQmwCkAJAQwBDAEe/wABuAAAsgkQBCsAsQcKL8y0BgAEAwoQ1MgvyLQFAgEAAxESOTk5siABAklSWLMBEQIRZTg4WQG1BQEJAAMKEMDAEMDAMTBZAQEVATUBAREhFSEBoQTy+w4EJ/vZBPL7DgTT/iOH/oeHATUBmvw7hwACAH4AAAQUBY8ABQAJAHawFStYsQAFuAEAQAkBCAEKAB7/AAG4AACyBQ8EK7EAArgBAEAJAQwBCwEe/wABuAAAsgIQBCsAsQA5P7MIAwRLP8DMsgYBABDAzAG3CQMBAgcEAAUvwMDML8DAzLIgAQBJUli3AxAEEAEQABBlODhlODhZMTBZATMBASMBAQEBAQISbgGU/mxu/mwBy/6jAV0BXQWP/Tj9OQLHAmX9m/2ZAmcAAQDNBmcBzwdTAAMATLAVK1ixAQC4AQBACQEIAQQAHv8AAbgAALIADwQrsQECsABACQEMAQUBHv8AAbgAALICEAQrALkAAQEZsAMv7AG5AAIBFrAAEPwxMFkTIRUhzQEC/v4HU+wAAQAaBlQCzgeBAA0ATrAVK1ixAQO4AQBACQEIAQ4AHv8AAbgAALIDDwQrsQELsANACQEMAQ8BHv8AAbgAALILEAQrALULA1UHAEs/xPzEAbMABwMLERI5OTEwWQEiJiczFhYzMjY3MwYGAV+VnBSICl9ibGYHiBixBlSQnU1FRU2dkAAAAQATBmwClwcOAAMAR7AVK1ixAQO4AQBACQEIAQQAHv8AAbgAALIDDwQrsQEBsANACQEMAQUBHv8AAbgAALIBEAQrALEAAbgAc7IDAks/wPzAMTBZEyEVIRMChP18Bw6iAAACAGAGJwQyB1AAAwAHAF+wFStYsQEAuAEAQAkBCAEIAB7/AAG4AACyAA8EK7EBBrAAQAkBDAEJAR7/AAG4AACyBhAEKwCxAQMvL7EFBy8vAbsAHABdABsAXbMGAB4LK7ICGwAQ/LIEGwYQ/DEwWRMTIQEhEyEBYMEBOv7UAQjBATr+1AYnASn+1wEp/tcAAQCg/i4Cfv//ABQAS7AVK1ixAQC4AQBACQEIARUAHv8AAbgAALIADwQrsQENsABACQEMARYBHv8AAbgAALINEAQrALMKEQNLPy/MAbMEAwcAEMDAwDEwWRM0NjczBgYVFBYzMjY3FwYGIyInJqB+Z7JmbzQpJlEiJjd8Lm1ISP7tWpchPIQ+KzYTEGYVGjc2AAABAAz+LQH2//8AHABmsBUrWLEBDbgBAEAJAQgBHQAe/wABuAAAsg0PBCuxAQewDUAJAQwBHgEe/wABuAAAsgcQBCsAsRxLP7EaG9TAS7AeUli4AIAaWbIKQA7cGswBtAECGxoNEMTEwMCyFBwHEMDAMTBZBQcxNhcyFhUUBiMiJic3FhYzMjY1NCYjIgYHJzcBUUgvClFjinU3fzUtM1QXKDgtIxErFitwAW4IAVhIXW4dGWAQES4iISkJCCqqAAACAHkGCAIzB7IADAAZAOiwFStYsQEDuAEAQAkBCAEaAB7/AAG4AACyAw8EK7EBCbADQAkBDAEbAR7/AAG4AACyCRAEKwCxBgAvzLIUBgBJRLIVDQBKRLQTFQYNFewQ7AGyCRQDEOS0EBUJFhXsEOwxMLEYOiu6AC4AQAAutoAQDYAQDRsrK7AVQ1izBgkQE7gALkAMEBMGExAJPBMQCQY4K1mwFUNYswMGExa4AC5ADBYTBhMWAz0WEwYDOCtZsBVDWLMAAxYZuAAuQAwWGQAZFgM+GRYDADgrWbAVQ1izCQwNELgALkAMEA0MDRAJPxANDAk4K1lZASImNTQ2MzIWFRQGIzUyNjU0JiMiBhUUFjMBVl2AgF1dgIBdL0BALy9AQC8GCHxZWXx8WVl8bzsrKzs7Kys7AAAB/+0GVQK9B34ACABWsBUrWLEBAbgBAEAJAQgBCQAe/wABuAAAsgEPBCuxAQawAUAJAQwBCgEe/wABuAAAsgYQBCsAsgIISz/cswQDCAXAEMDAAbUEBQYDAgEQ3MAQ3MAxMFkTAzMXMTczAyPV6OaCgubogAZVASmnp/7XAAAB/94GYQLMB2cAGQBMsBUrWLEBALgBAEAJAQgBGgAe/wABuAAAsgAPBCuxAQ2wAEAJAQwBGwEe/wABuAAAsg0QBCsAQAkNDAMJABkWEEs/xMTE3NTExDEwWQM2NjMyFhcWFjMyNjczBgYjIiYnJiYjIgYHIhGFYhVcLh5JFhw0CoAOelkVajclSBAeNAgGYXSIGhMNETEkdIgaEw0RMSQAAgAMBmcCnQdSAAMABwBssBUrWLEBALgBAEAJAQgBCAAe/wABuAAAsgAPBCuxAQawAEAJAQwBCQEe/wABuAAAsgYQBCsAtwUBFAcDFAEDSkQvwPzAAbkABgEWsQQAuQEWAAIv7NzsAUAJBhUEABUCFQIASkQv7NzsMTBZEyEVISUhFSEMAQL+/gGPAQL+/gdS6+vrAAH/7QZUAr0HfQAIAFawFStYsQEGuAEAQAkBCAEJAB7/AAG4AACyBg8EK7EBAbAGQAkBDAEKAR7/AAG4AACyARAEKwCyCAVLP9yzAQUEA8DAEMABtQMCAQQFBhDcwBDcwDEwWQETIycxByMTMwHV6OaCgubogAd9/tenpwEpAAH/0gZUAc0HfQADAE2wFStYsQEBuAEAQAkBCAEEAB7/AAG4AACyAQ8EK7EBA7ABQAkBDAEFAR7/AAG4AACyAxAEKwCzAlUASz/sAbkAAwEWsAEQ7LADyDEwWRMBIRP+/tQBOsEGVAEp/tcAAAEA3QZUAtgHfQADAEWwFStYsQEAuAEAQAkBCAEEAB7/AAG4AACyAA8EK7EBArAAQAkBDAEFAR7/AAG4AACyAhAEKwCxAQMvLwGyAl0AEPwxMFkTEyEB3cEBOv7UBlQBKf7XAAADABQAAARXBdIAGwAlACkA87AVK1ixAQm4AQBACQEIASoAHv8AAbgAALIJDwQrsQEisAlACQEMASsBIv8AAbgAALIiEAQrALIQBEs/L7kAFABj7LkACABksQsQENTsswsICwiyBBAMK7MACBkLEMAQwLEkSz+xIBkQxLMICAsLEMAQwLMACBkLEMAQwLUdIAAgHycrsQIFuAEjsgEEJiu1IiUBJCQnK7EqJ7kBGwBtsSkgENwd7CsBsAkQtgwFFBAMBwUvwMDAwIeyGAECuABsGPwYxMSwGsSzICIgIhDAh7EdJbgAbBj8wLASxAEBsSomuQEYAG2yKCgiEMABLx3sKzEwWQExETEjIzERMSM1MzE1NDYzNhcVIyIGFRUxMxUTETEzMzERMSMjAyERIQHSj5Cfn6eqTDtbOSW5q4+Qj5ADAST+3AN3/IkDd8lbnZoBCOUuRzHJ/IkEQPvABcn+9gACABQAAARXBdIAGwAlAMOwFStYsQEJuAEAQAkBCAEmAB7/AAG4AACyCQ8EK7EBIrAJQAkBDAEnASL/AAG4AACyIhAEKwCyEARLPy+5ABQAY+yxJEs/uQAIAGSzCxAfNT8Q1OyzCwgLCLIEEAwrtQAACBkZCxDAwBDAwLEdILgBIbIBHyYrtQIFAQQEJyuxIiW4ASOyASQmKwGxBQkQ1LUMBRQQDAfAwMDAh7IYAQK4AGwY/BjExLAaxAGzICIgIhDEh7EdJbgAbBj8xLASxAExMFkBMRExIyMxETEjNTMxNTQ2MzYXFSMiBhUVMTMVExExMzMxETEjIwHSj5Cfn6eqTDtbOSW5rY+Qj5ADd/yJA3fJW52aAQjlLkcxyfyJBb76QgAAAwAUAAAEVwXSABsAJQApAPOwFStYsQEJuAEAQAkBCAEqAB7/AAG4AACyCQ8EK7EBIrAJQAkBDAErASL/AAG4AACyIhAEKwCyEARLPy+5ABQAY+y5AAgAZLELEBDU7LMLCAsIsgQQDCuzAAgZCxDAEMCxJEs/sSAZEMSzCAgLCxDAEMCzAAgZCxDAEMC1HSAAIB8nK7ECBbgBI7IBBCYrtSIlASQkJyuxKie5ARsAbbEpIBDcHewrAbAJELYMBRQQDAcFL8DAwMCHshgBArgAbBj8GMTEsBrEsyAiICIQwIexHSW4AGwY/MCwEsQBAbEqJrkBGABtsigoIhDAAS8d7CsxMFkBMRExIyMxETEjNTMxNTQ2MzYXFSMiBhUVMTMVExExMzMxETEjIwMhESEB0o+Qn5+nqkw7WzkluauPkI+QAwEk/twDd/yJA3fJW52aAQjlLkcxyfyJBED7wAXJ/vYAAgAUAAAEVwXSABsAJQDDsBUrWLEBCbgBAEAJAQgBJgAe/wABuAAAsgkPBCuxASKwCUAJAQwBJwEi/wABuAAAsiIQBCsAshAESz8vuQAUAGPssSRLP7kACABkswsQHzU/ENTsswsICwiyBBAMK7UAAAgZGQsQwMAQwMCxHSC4ASGyAR8mK7UCBQEEBCcrsSIluAEjsgEkJisBsQUJENS1DAUUEAwHwMDAwIeyGAECuABsGPwYxMSwGsQBsyAiICIQxIexHSW4AGwY/MSwEsQBMTBZATERMSMjMRExIzUzMTU0NjM2FxUjIgYVFTEzFRMRMTMzMRExIyMB0o+Qn5+nqkw7Wzklua2PkI+QA3f8iQN3yVudmgEI5S5HMcn8iQW++kIAAAEAAAAnAAQmSSi5Xw889QALCAAAAAAAsSN/YAAAAACxI39g/Pb9JQgAB7IAAQAIAAEAAAAAAAAAAQAAB2z+QQAICAD+pf54CAAAAQAAAAAAAAAAAAAAAAAAAYECnQAAAAAAAAI5AAACqgC4A8sAyQRzACUEcwA9Bx0AOQXHAG8B5wCPAqoASAKqACcDHQA3BKwAUgI5AIMCqgA3AjkAgwI5/70EcwBCBHMAjQRzADUEcwA3BHMANwRzADcEcwA/BHMAMwRzAEIEcwA9AqoAvAKqALwErABOBKwAUgSsAE4E4wB7B80A8gXHACkFxwCcBccAWgXHAJwFVgCcBOMAnAY5AFoFxwCRAjkAgwRzAC0FxwCyBOMAnAaqAI0FxwCNBjkAWgVWAJwGOQBaBccAnAVWAFAE4wAdBccAkwVWACcHjQAhBVYAHQVWAB8E4wAzAqoAgQI5/70CqgAxBKwAfwRzAAACqv/SBHMAOwTjAH0EcwBGBOMARgRzAC8CqgAUBOMAUgTjAIUCOQCNAjkABgRzAI0COQCNBx0AgwTjAIUE4wBGBOMAfwTjAEYDHQCDBHMAPQKqABQE4wCHBHMAGwY5ABQEcwAfBHMAFAQAACkDHQBiAj0ArAMdADEErAB9AjkAAAKqALgEcwBGBHMAOQRz//sEc//vAj0ArARzAEYCqgAMAAD89gAA/mQF5f/qAvYALQRzALQErABSAqoANwAA/PcAAP69BeX/6gKq//UDMwB1BKwAUgKqABICqgAQAqoA3QTjAIcEc//xAjkAdwKqAAwCqgA1AuwADARzALQBVv6lAqoANQKqAAUGrAA1AqoANQKqABIGrAA1AqoAEAKqAAUGrAAhBOMAcQAA/okFxwApAAD/hgXHACkAAP6YBccAKQAA/okFxwApAAD+twXHACkAAP8nBccAKQgAAAoAAP7GBccAWgVWAJwFVgCcBVYAnAVWAJwCOf+bAjkAgwI5/7UCOf/WBcf/9wXHAI0GOQBaBjkAWgY5AFoGOQBaBjkAWgSsAFIGOQBEBccAkwXHAJMFxwCTBccAkwVWAB8FVgCcBOMAjQAA/okEcwA7AAD/hgRzADsAAP6YBHMAOwAA/okEcwA7AAD+twRzADsAAP8nBHMAOwcdADsAAP7VBHMARgRzAC8EcwAvBHMALwRzAC8COQCNAjn/mwI5AI0COf+1Ajn/1gTjAEYE4wCFBOMARgTjAEYE4wBGBOMARgTjAEYErABSBOMALQTjAIcE4wCHBOMAhwTjAIcEcwAUBOMAfwRzABQAAP6+BccAKQAA/r4EcwA7AAD+wQXHACkAAP7BBHMAOwAA/wgFxwApAAD/CARzADsFxwBaBHMARgAA/pEFxwBaAAD+mARzAEYFxwCcAAD8/QAA/94FwABRBcf/9wTjAEYFVgCcBHMALwAA/38FVgCcAAD/fwRzAC8FVgCcBHMALwVWAJwEcwAvBjkAWgTjAFIAAP/2BjkAWgAA/4EE4wBSAjn/3gI5/94COQAoAjn/3wI5AIMFxwCyBHMAjQTjAJwCOQCNBOMAnAI5AI0E4wCcA1UA0wTj/+ICOf/iBccAjQTjAIUFxwCNBOMAhQXHAI0E4wCFBjkAWgTjAEYAAP5yBjkAWgAA/nIE4wBGCAAATAeNAEYFxwCcAx0AgwXHAJwDHQCDBccAnAMdAIMFVgBQBHMAPQVWAFAEcwA9BVYAUARzAD0AAP/aBOMAHQAA/94CqgAUBOMAHQOtAB8FxwCTBOMAhwXHAJME4wCHBccAkwTjAIcFxwCTBOMAhwVWAB8E4wAzBAAAKQTjADMEAAApBOMAMwQAACkEc//tAqr/7QKq/+0CqgATAqoAGgKqAM0CqgB5AqoAoAKq/94CqgBgBN4AcARzAAAIAAAAAjkAjQI5AI0COQCNBAAAgwQAAIMEAACDBHMASgRzAEoCzQAUCAAAvAgA//sCqgCqAqoAqgFW/qUCqgAFBHMAAAAA/qIAAP4HCAAAWgTeAGUD/ABRBVAAJQf3AMUH9wGgBKwAVQI5AHcFwQA4B/cBGwf3AvAH9wGeB/cBlwf3AaEH9wGhBJMAfgKqAM0CqgAaAqoAEwKqAGACqgCgAqoADAKqAHkCqv/tAqr/3gKqAAwCqv/tAqr/0gKqAN0E4wAUBOMAFATjABQE4wAUAAAAHgAeAB4AlQDfAa4DPgRmBVsFjAXZBiYGbQbJBwoHOwdvB6sIaQi6CUMJ+wrOC7EMfwzRDdoOqQ75D2sPvRADEFcQ6BHjEowTpxR7FSIVvRZHFwEXgxfHGDAY2BkoGfsagxtAG/gcwx2fHu0fUh/xIIUhmyKQIzgjxCQcJFgksCTxJSElVyaVJ3IoQiklKkEq3CvqLIstGS2rLlMunC/NMG8xKDIKMuczWTSjNQk1rjZBN1c4SjjZOWY53DoQOoY61zrXO048Xz04PaM+mT7jP71AB0CMQS9BaEKJQuhDI0NUQ9tEhUTMRPxFSkW5Rj9G80clR6ZIO0hvSM1JH0nhSkBKfkrQS6lLu0wNTJNMpU1ZTjJORE7NTutPFE9FT25Pl0/AT/tQJFBYUIJRBlEwUhBSWlJoUpFSulLjUw1TNlNfU4hTslSFVK5U11UAVSlVUlV8VcRWn1bIVvFXGldEV21X9VibWLlY4lkTWTxZZVmOWclZ8lomWlBa1Fr+XJ9c51z1XR5dR11wXZpd414MXjVeXl6IXz5fZ1+QX7lf4mALYDVgoGF0YZ1hxmHvYhliQmMnY1FjbGOVY7Bj2WQDZCxkVmR/ZLJkwGTzZQFlKmVTZXtlpGXMZfVmHmcBZ0JnUGgjaTJpW2mEaaFpymnnahBqHmosalVqfmqnatBrEWsfa15rbGuVa75rzGvabANsEWwfbEhscWx/bI1sm2ypbSVtm23Ebe1t+24JbjJuW26Ebq1u9G8eb2Vvj3BfcYFxqnHTceFx73IYckFyanKTcqFyr3LYcwFzQnNQc5Fzn3PIc9Zz/3QodFJ0fHSmdNB03nTsdRZ1P3VodZF1unXjdgx2wHb/dz53b3exd+R4gHjJeRl5YHnYegh6OHp8er97AHt4e+98ZHzBfT99fH3Wf2l/q3/tgCuBBIIZgn6DToNqg+mEYoSphSCFfYWtheGGJoalhy+HrYgsiICI1YkuiWGJo4nUihuKZIrEi2CLn4vvjDmMeIyujOCNkY4jjtSPZgABAAABgQBYAAcAVQAEAAIAZAQAAEsAAAQAAmAAAwACAAAANgKOAAEAAAAAAAAAOwAAAAEAAAAAAAEACQA7AAEAAAAAAAIABABEAAEAAAAAAAMAPgBIAAEAAAAAAAQADgCGAAEAAAAAAAUAHQCUAAEAAAAAAAYADgCxAAMAAQQDAAIADgC/AAMAAQQDAAQAIgDNAAMAAQQFAAIACgDvAAMAAQQFAAQAHgD5AAMAAQQGAAIADgEXAAMAAQQGAAQAIgElAAMAAQQHAAIACAFHAAMAAQQHAAQAHAFPAAMAAQQJAAAAdgFrAAMAAQQJAAEAEgHhAAMAAQQJAAIACAHzAAMAAQQJAAMAfAH7AAMAAQQJAAQAHAJ3AAMAAQQJAAUAOgKTAAMAAQQJAAYAHALNAAMAAQQKAAIADgLpAAMAAQQKAAQAIgL3AAMAAQQLAAIAEgMZAAMAAQQLAAQAJgMrAAMAAQQMAAIACANRAAMAAQQMAAQAHANZAAMAAQQOAAIAEAN1AAMAAQQOAAQAJAOFAAMAAQQQAAIAEgOpAAMAAQQQAAQAJgO7AAMAAQQTAAIABgPhAAMAAQQTAAQAGgPnAAMAAQQUAAIADgQBAAMAAQQUAAQAIgQPAAMAAQQVAAIAFAQxAAMAAQQVAAQAKARFAAMAAQQWAAIADgRtAAMAAQQWAAQAIgR7AAMAAQQZAAIAFASdAAMAAQQZAAQAKASxAAMAAQQdAAIABgTZAAMAAQQdAAQAGgTfAAMAAQQfAAIACgT5AAMAAQQfAAQAHgUDAAMAAQQtAAIADgUhAAMAAQQtAAQAIgUvAAMAAQgWAAIADgVRAAMAAQgWAAQAIgVfAAMAAQwKAAIADgWBAAMAAQwKAAQAIgWPAAMAAQwMAAIACAWxAAMAAQwMAAQAHAW5Q29weXJpZ2h0IChjKSAxOTkyLTk3IEhld2xldHQtUGFja2FyZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5IZWx2ZXRpY2FCb2xkSGV3bGV0dC1QYWNrYXJkOiBIZWx2ZXRpY2EgQm9sZDogVmVyc2lvbiAxLjMgKEhld2xldHQtUGFja2FyZClIZWx2ZXRpY2EgQm9sZFZlcnNpb24gMS4zIChIZXdsZXR0LVBhY2thcmQpSGVsdmV0aWNhLUJvbGQATgBlAGcAcgBpAHQAYQBIAGUAbAB2AGUAdABpAGMAYQAgAE4AZQBnAHIAaQB0AGEAVAB1AQ0AbgDpAEgAZQBsAHYAZQB0AGkAYwBhACAAVAB1AQ0AbgDpAEgAYQBsAHYAZgBlAGQASABlAGwAdgBlAHQAaQBjAGEAIABIAGEAbAB2AGYAZQBkAEYAZQB0AHQASABlAGwAdgBlAHQAaQBjAGEAIABGAGUAdAB0AEMAbwBwAHkAcgBpAGcAaAB0ACAAKABjACkAIAAxADkAOQAyAC0AOQA3ACAASABlAHcAbABlAHQAdAAtAFAAYQBjAGsAYQByAGQALgAgAEEAbABsACAAcgBpAGcAaAB0AHMAIAByAGUAcwBlAHIAdgBlAGQALgBIAGUAbAB2AGUAdABpAGMAYQBCAG8AbABkAEgAZQB3AGwAZQB0AHQALQBQAGEAYwBrAGEAcgBkADoAIABIAGUAbAB2AGUAdABpAGMAYQAgAEIAbwBsAGQAOgAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMwAgACgASABlAHcAbABlAHQAdAAtAFAAYQBjAGsAYQByAGQAKQBIAGUAbAB2AGUAdABpAGMAYQAgAEIAbwBsAGQAVgBlAHIAcwBpAG8AbgAgADEALgAzACAAKABIAGUAdwBsAGUAdAB0AC0AUABhAGMAawBhAHIAZAApAEgAZQBsAHYAZQB0AGkAYwBhAC0AQgBvAGwAZABOAGUAZwByAGkAdABhAEgAZQBsAHYAZQB0AGkAYwBhACAATgBlAGcAcgBpAHQAYQBMAGkAaABhAHYAbwBpAHQAdQBIAGUAbAB2AGUAdABpAGMAYQAgAEwAaQBoAGEAdgBvAGkAdAB1AEcAcgBhAHMASABlAGwAdgBlAHQAaQBjAGEAIABHAHIAYQBzAEYA6QBsAGsA9gB2AOkAcgBIAGUAbAB2AGUAdABpAGMAYQAgAEYA6QBsAGsA9gB2AOkAcgBHAHIAYQBzAHMAZQB0AHQAbwBIAGUAbAB2AGUAdABpAGMAYQAgAEcAcgBhAHMAcwBlAHQAdABvAFYAZQB0AEgAZQBsAHYAZQB0AGkAYwBhACAAVgBlAHQASABhAGwAdgBmAGUAdABIAGUAbAB2AGUAdABpAGMAYQAgAEgAYQBsAHYAZgBlAHQAUABvAGcAcgB1AGIAaQBvAG4AYQBIAGUAbAB2AGUAdABpAGMAYQAgAFAAbwBnAHIAdQBiAGkAbwBuAGEATgBlAGcAcgBpAHQAbwBIAGUAbAB2AGUAdABpAGMAYQAgAE4AZQBnAHIAaQB0AG8EHwQ+BDsEQwQ2BDgEQAQ9BEsEOQBIAGUAbAB2AGUAdABpAGMAYQAgBB8EPgQ7BEMENgQ4BEAEPQRLBDkARgBlAHQASABlAGwAdgBlAHQAaQBjAGEAIABGAGUAdABLAGEAbAExAG4ASABlAGwAdgBlAHQAaQBjAGEAIABLAGEAbAExAG4ATgBlAGcAcgBpAHQAYQBIAGUAbAB2AGUAdABpAGMAYQAgAE4AZQBnAHIAaQB0AGEATgBlAGcAcgBpAHQAbwBIAGUAbAB2AGUAdABpAGMAYQAgAE4AZQBnAHIAaQB0AG8ATgBlAGcAcgBpAHQAYQBIAGUAbAB2AGUAdABpAGMAYQAgAE4AZQBnAHIAaQB0AGEARwByAGEAcwBIAGUAbAB2AGUAdABpAGMAYQAgAEcAcgBhAHMAAAMAAAAAAAD/MwBmAAAAAAAAAAAAAAAAAAAAAAAAAABBDgAeAAAAHwBAAFkAQQArAEUAKgBQACkAEAAGAEMqsR4YS1NCsQMDX0AFSTmKOQJzQAkpOUg7aTmoOQR0QAUaObk5AnWwPF5AAwg5AXOwCV5fsjlEOUUjK0S3MlI7SEQ5BggqsQMDX0AZGmQVZSlkJWU5ZDVlqWSlZblktWXJZMVlDHNAB0lkRWVrZQN0QAfWZdVm1WcDdV+5ABoAZEVCugBtAGkAbkWKRYpFuABoRboBGABsARtFikWKRbsABwBkACwAZEVEQrEwNStYKxshWbkALQBkRUSxAwNfQA8qbCeoJ7MnZidlJ2dtbwd0QAVXbFdwAnVfuABsRWkjYiCKY4qKY7kBGAEbirBHdmlEI2lEGLkAaAASK7kAaQASK7kAbQASK7kAbgASK7EYIEtTQrYcQBsbGhkZuABkRUJDI0NiQkMjYUKxFwG5AEAAZEVpU1pCuABhsgNaNiu4AGGyBFs2K7gAJrIFXDYruQAkADJEsQ0AQrgAGEtSWLBKK1m1CyMACiMAS1MjRVtCS1MjRVtCsCNFWLMiACEAREQbtSIiRCEhRHZFaUR2RWlEGFmyHUAHQ0VpVEKwGEtTWEEYAJkAUACaAFAAmwBQAKQAUAClAFAApgBQAK8AUACwAFAAsQBQALoAUAC7AFAAvABQREREREREREREREREWQAAAA==';\r\n","export const sortLightSceneGroupsByPercentage = (detector: any): void => {\r\n if (detector.functions !== undefined) {\r\n for (let i = 0; i < detector.functions.length; ++i) {\r\n if (detector.functions[i].type !== undefined\r\n && detector.functions[i].type.indexOf('lightSceneLuxLevel') !== -1\r\n && detector.functions[i].value !== undefined) {\r\n\r\n const getPercentageFromGroup = (group: string) => {\r\n const words = group.split(/[, ]+/);\r\n return words[words.length - 1].replace('%', '');\r\n }\r\n\r\n const inputArray = detector.functions[i].value;\r\n const arrayOfGroups = [];\r\n for (let idx = 0; idx < inputArray.length - 2; idx += 2) {\r\n arrayOfGroups.push({\r\n group: inputArray[idx],\r\n percentage: getPercentageFromGroup(inputArray[idx]),\r\n luminaries: inputArray[idx + 1]\r\n });\r\n }\r\n\r\n // sort descending by percentage\r\n arrayOfGroups.sort(function (groupA: any, groupB: any) {\r\n // @ts-ignore\r\n return groupB.percentage - groupA.percentage;\r\n });\r\n\r\n let res = [];\r\n for (let idx = 0; idx < arrayOfGroups.length; ++idx) {\r\n res.push(arrayOfGroups[idx].group);\r\n res.push(arrayOfGroups[idx].luminaries);\r\n }\r\n\r\n res.push(inputArray[inputArray.length - 2]);\r\n res.push(inputArray[inputArray.length - 1]);\r\n\r\n detector.functions[i].value = res;\r\n }\r\n }\r\n }\r\n}\r\n","import { IDetectorModel } from \"../../../models/DetectorModel\";\r\nimport { IProject } from \"../../../models/Project\";\r\nimport { ISensorSetting } from \"../../../models/SensorSetting\";\r\nimport { IReceivedTemplateModel, ITemplateModel } from \"../../../models/TemplatesModel\";\r\n\r\nimport { getDetectorTypeFormatted } from \"./getDetectorTypeFormatted\";\r\nimport GetDefaultDescription from './GetDefaultDescription';\r\nimport i18n from \"i18next\";\r\nimport { jsPDF } from \"jspdf\";\r\nimport logoSrc from './logo.png';\r\nimport { HelveticaFont } from \"./Helvetica-Font\";\r\nimport { HelveticaFontBold } from \"./Helvetica-Font-Bold\";\r\nimport { sortLightSceneGroupsByPercentage } from \"./ExportLightSceneHelper\";\r\nimport moment from \"moment\";\r\n\r\nlet exportType = 'detectors';\r\n\r\nfunction isExportingDetectors() {\r\n return exportType === 'detectors' ? true : false;\r\n}\r\n\r\nfunction isExportingProjects() {\r\n return exportType === 'projects' ? true : false;\r\n}\r\n\r\nfunction getTextLines(doc: any, text: string, textMaxLength: number) {\r\n let textLines = doc.splitTextToSize(text, textMaxLength);\r\n return textLines.length;\r\n}\r\n\r\nfunction heightToAdd(doc: any, text: string, textMaxLength: number, heightUnit: number = 6.5) {\r\n let textLines = getTextLines(doc, text, textMaxLength);\r\n if (textLines <= 1) {\r\n return 0;\r\n }\r\n return (textLines - 1) * heightUnit;\r\n}\r\n\r\nfunction convertPixelsToMilimeters(pixels: number) {\r\n // 595 width to 794 => ratio = 1.334453781512605\r\n pixels = pixels * 1.334453781512605;\r\n\r\n return pixels / 3.7795275591;\r\n}\r\n\r\nconst returnMacFormatted = (mac: any) => {\r\n return mac?.split(\"\").map((num: any, i: number) => (i % 2 === 0 && i !== 0) ? `:${num}` : num).join(\"\");\r\n}\r\n\r\nconst addHeaderFooter = (doc: any, forToc: boolean = false): void => {\r\n doc.setFontSize(10);\r\n doc.setTextColor(54, 54, 54);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n doc.setLineWidth(0.1);\r\n\r\n //Header\r\n let logo = new Image();\r\n logo.src = logoSrc;\r\n\r\n doc.addImage(logo, 'png', convertPixelsToMilimeters(38), convertPixelsToMilimeters(22), convertPixelsToMilimeters(80), convertPixelsToMilimeters(30.5));\r\n doc.setDrawColor(\"#000000\");\r\n doc.line(convertPixelsToMilimeters(126), convertPixelsToMilimeters(26), convertPixelsToMilimeters(126), convertPixelsToMilimeters(52));\r\n doc.setLineWidth(0.1);\r\n\r\n if (forToc) {\r\n doc.line(convertPixelsToMilimeters(32),\r\n convertPixelsToMilimeters(64),\r\n doc.getPageWidth() - convertPixelsToMilimeters(32),\r\n convertPixelsToMilimeters(64));\r\n }\r\n else {\r\n doc.line(convertPixelsToMilimeters(16),\r\n convertPixelsToMilimeters(90),\r\n doc.getPageWidth() - convertPixelsToMilimeters(16),\r\n convertPixelsToMilimeters(90));\r\n }\r\n //Footer\r\n doc.line(convertPixelsToMilimeters(32),\r\n doc.getPageHeight() - convertPixelsToMilimeters(64),\r\n doc.getPageWidth() - convertPixelsToMilimeters(32),\r\n doc.getPageHeight() - convertPixelsToMilimeters(64));\r\n}\r\n\r\nconst addHeaderFooterDetector = (doc: any, detector: any = null) => {\r\n addHeaderFooter(doc)\r\n //Footer text\r\n let date = new Date();\r\n let month = date.toLocaleString(\"default\", { month: \"long\" });\r\n let year = date.getFullYear();\r\n\r\n doc.setFontSize(10);\r\n\r\n doc.text(`Date: ${year} ${month}`, convertPixelsToMilimeters(32), doc.getPageHeight() - convertPixelsToMilimeters(18));\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n\r\n const valuesInBold = `${i18n.t(\"translation:SensorData.export.theValuesInBold\")}`;\r\n const widthInPixelsForValuesInBold = doc.getTextWidth(valuesInBold);\r\n let xg = 0;\r\n if (widthInPixelsForValuesInBold > 100) {\r\n xg = widthInPixelsForValuesInBold - 100;\r\n }\r\n doc.text(200 - widthInPixelsForValuesInBold + xg, doc.getPageHeight() - convertPixelsToMilimeters(45), valuesInBold, { maxWidth: 100 });\r\n //printOnTwoRowsIfNeeded(doc, valuesInBold, 83, 200-widthInPixelsForValuesInBold+xg, doc.getPageHeight() - convertPixelsToMilimeters(45), doc.getPageHeight() - convertPixelsToMilimeters(35));\r\n\r\n if (detector) {\r\n const { name } = detector.sensorInformation;\r\n const { projectName } = detector;\r\n let macAddress = returnMacFormatted(detector.macAddress);\r\n const customName = detector.customName? detector.customName : '-';\r\n\r\n doc.setFontSize(12);\r\n doc.setTextColor(26, 26, 26);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n\r\n let maxLenForLineForDetectorTypeFormatted = 48;\r\n let detectorTypeFormatted = getDetectorTypeFormatted(detector);\r\n\r\n if (detector.projectName != undefined) {\r\n //printOnTwoRowsIfNeeded(doc, detectorTypeFormatted, maxLenForLineForDetectorTypeFormatted, 105, convertPixelsToMilimeters(32), convertPixelsToMilimeters(48));\r\n doc.text(detectorTypeFormatted, convertPixelsToMilimeters(297), convertPixelsToMilimeters(31), { maxWidth: convertPixelsToMilimeters(273)});\r\n doc.text(customName, convertPixelsToMilimeters(297), convertPixelsToMilimeters(46));\r\n }\r\n\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n\r\n //if (detector.projectName != undefined) {\r\n if (isExportingProjects() || detector.projectName != undefined) {\r\n doc.text((projectName) ? projectName : \"\", convertPixelsToMilimeters(135), convertPixelsToMilimeters(42));\r\n\r\n doc.setTextColor(76, 76, 76);\r\n doc.text(name, convertPixelsToMilimeters(297), convertPixelsToMilimeters(64));\r\n doc.text((macAddress) ? macAddress : \"\", convertPixelsToMilimeters(297), convertPixelsToMilimeters(80));\r\n }\r\n else {\r\n doc.setFontSize(12);\r\n doc.setTextColor(54, 54, 54);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n if(detector.templateName !== undefined){\r\n doc.text(detector.templateName, convertPixelsToMilimeters(135), convertPixelsToMilimeters(42));\r\n } else\r\n if(detector.customName !== undefined){\r\n doc.text(detector.customName, convertPixelsToMilimeters(135), convertPixelsToMilimeters(42));\r\n }\r\n }\r\n //console.log(detector)\r\n }\r\n}\r\n\r\nconst addHeaderFooterTable = (doc: any) => {\r\n addHeaderFooter(doc, true);\r\n\r\n doc.setFontSize(10);\r\n doc.setTextColor(54, 54, 54);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n doc.text(`${i18n.t(\"translation:SensorData.export.tableOfContents\")}`, convertPixelsToMilimeters(135), convertPixelsToMilimeters(42));\r\n\r\n //Footer text\r\n let date = new Date();\r\n let day = date.getDate();\r\n let month = date.toLocaleString(\"default\", { month: \"long\" });\r\n let year = date.getFullYear();\r\n\r\n let dayOrdinal = (day: number) => {\r\n switch (day % 10) {\r\n case 1: return \"st\"\r\n case 2: return \"nd\"\r\n case 3: return \"rd\"\r\n default: return \"th\"\r\n }\r\n }\r\n\r\n const reportExportedOn = `${i18n.t(\"translation:SensorData.export.reportExportedOn\")}: ${month} ${day}${dayOrdinal(day)} ${year}`;\r\n const widthInPixelsForReportExportedOn = doc.getTextWidth(reportExportedOn);\r\n doc.text(reportExportedOn, 200 - widthInPixelsForReportExportedOn, doc.getPageHeight() - convertPixelsToMilimeters(45));\r\n}\r\n\r\n// Use till is is not used anywhere else and replaced with maxWidth parameter of doc.text instead\r\nconst printOnTwoRowsIfNeeded = (doc: any, text: string, maxLengthAllowed: number, xPos: number, yPosFirst: number, yPosSecond: number) => {\r\n if (text.length >= maxLengthAllowed) {\r\n let words = text.trim().split(/\\s+/);\r\n if (words.length === 1) {\r\n doc.text(text.substring(0, maxLengthAllowed), xPos, yPosFirst);\r\n doc.text(text.substring(maxLengthAllowed), xPos, yPosSecond);\r\n } else {\r\n let firstLine = \"\";\r\n firstLine += (words[0] + \" \");\r\n let idx = 1;\r\n while (idx < words.length && firstLine.length + words[idx].length + 1 < maxLengthAllowed) {\r\n firstLine += (words[idx] + \" \");\r\n ++idx;\r\n }\r\n doc.text(firstLine, xPos, yPosFirst);\r\n\r\n let secondLine = \"\";\r\n while (idx < words.length) {\r\n secondLine += (words[idx] + \" \");\r\n ++idx;\r\n }\r\n doc.text(secondLine, xPos, yPosSecond);\r\n }\r\n } else {\r\n doc.text(text, xPos, yPosFirst);\r\n }\r\n}\r\n\r\n\r\n\r\nconst countNeededRows = (properties: any, index: number, currentHeight: number, doc: any) => {\r\n let lengthArr = [];\r\n let k = (properties[index].style === \"h1\");\r\n\r\n let additionalHeight = 0;\r\n\r\n for (let i = index + 1; i < properties.length; i++) {\r\n lengthArr.push(properties[i]);\r\n\r\n if (properties[i].style === \"h2\" || properties[i].style === \"h1\") {\r\n if (k) {\r\n k = false;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (properties[i].type === 'lightSceneLuxLevel') {\r\n additionalHeight += 20;\r\n } else if (properties[i].style === 'h2') {\r\n additionalHeight += 10;\r\n } else if (properties[i].style === 'h3') {\r\n additionalHeight += 7;\r\n }\r\n }\r\n\r\n let neededHeight = (lengthArr.length * 8) + additionalHeight;\r\n let remainingHeight = doc.getPageHeight() - currentHeight - 30;\r\n\r\n if (neededHeight > remainingHeight) {\r\n return true;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nconst generatePage = (doc: any, detector: any, isDetectorsetting: boolean): void => {\r\n const detectorObj = GetDefaultDescription(detector, isDetectorsetting);\r\n addHeaderFooterDetector(doc, detector);\r\n\r\n // console.log(detector)\r\n const secondRowX = convertPixelsToMilimeters(355); //105mm;\r\n let height = convertPixelsToMilimeters(75);\r\n\r\n if (!isDetectorsetting) // is template?\r\n {\r\n height += convertPixelsToMilimeters(56);\r\n doc.setFontSize(14);\r\n doc.setTextColor(30, 30, 30);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n doc.text(`${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.templateDetails`)}`, convertPixelsToMilimeters(32), height);\r\n\r\n height += convertPixelsToMilimeters(41);\r\n doc.setFontSize(14);\r\n doc.setTextColor(26, 26, 26);\r\n doc.text(`${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.detectorType`)}:`, convertPixelsToMilimeters(32), height);\r\n doc.text(getDetectorTypeFormatted(detector), convertPixelsToMilimeters(355), height, { maxWidth: 75 });\r\n\r\n //height += heightToAdd(doc, getDetectorTypeFormatted(detector), 75, 5);\r\n\r\n if ('receivedFrom' in detector) {\r\n height += convertPixelsToMilimeters(40);\r\n doc.text(`${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedFrom`)}:`, convertPixelsToMilimeters(32), height);\r\n doc.text(`${detector.receivedFrom}`, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n }\r\n\r\n if ('receivedOn' in detector) {\r\n height += convertPixelsToMilimeters(32);\r\n doc.text(`${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedDate`)}:`, convertPixelsToMilimeters(32), height);\r\n doc.text(`${moment.tz(detector.receivedOn, moment.tz.guess()).format(\"DD/MM/YYYY\")}`, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n }\r\n }\r\n\r\n if (detectorObj !== undefined) {\r\n\r\n sortLightSceneGroupsByPercentage(detectorObj);\r\n\r\n Object.entries(detectorObj).forEach((tab: any, i: number) => {\r\n let [tabName, properties] = tab;\r\n if (tabName !== \"tabs\") {\r\n\r\n let showTitle = true;\r\n const addTitle = () => {\r\n height += convertPixelsToMilimeters(58);\r\n doc.setFontSize(14);\r\n doc.setTextColor(30, 30, 30);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n doc.text(Object.entries(detectorObj.tabs)[i][1], convertPixelsToMilimeters(32), height);\r\n showTitle = false;\r\n }\r\n\r\n //let nextItemStyle = 'h1';\r\n properties.forEach((item: any, i: number) => {\r\n //console.log('Height: ', height, ' \\n\\n item: ', item);\r\n\r\n if ((item.style === \"h1\" || item.style === \"h2\") && countNeededRows(properties, i, (showTitle) ? height + convertPixelsToMilimeters(40) : height, doc)) {\r\n //console.log('AAAAAAAAAAAAAA :', countNeededRows(properties, i, (showTitle) ? height + convertPixelsToMilimeters(40) : height, doc));\r\n doc.addPage();\r\n addHeaderFooterDetector(doc, detector);\r\n height = convertPixelsToMilimeters(75);\r\n if (showTitle) addTitle();\r\n } else {\r\n if (showTitle) addTitle()\r\n }\r\n\r\n if (item.style === \"h1\" || item.style === \"h2\") {\r\n if (properties[i+1] != undefined && properties[i+1].style === 'h3') {\r\n let pixelsIfTextOnMoreRows = 725 - (32 * (getTextLines(doc, item.label, convertPixelsToMilimeters(306))));\r\n //console.log(height, ' ', convertPixelsToMilimeters(pixelsIfTextOnMoreRows));\r\n\r\n if (height > convertPixelsToMilimeters(pixelsIfTextOnMoreRows)) {\r\n doc.addPage();\r\n addHeaderFooterDetector(doc, detector);\r\n height = convertPixelsToMilimeters(75);\r\n }\r\n }\r\n }\r\n\r\n if (item.style === \"h3\"){\r\n let pixelsIfTextOnMoreRows = 725 - (32 * (getTextLines(doc, item.label, convertPixelsToMilimeters(306))-1))\r\n if (height > convertPixelsToMilimeters(pixelsIfTextOnMoreRows)) {\r\n doc.addPage();\r\n addHeaderFooterDetector(doc, detector);\r\n height = convertPixelsToMilimeters(75);\r\n }\r\n }\r\n\r\n if (item.style === \"h1\") {\r\n // Example Space after \"Settings\" on project\r\n if (height == convertPixelsToMilimeters(75)) {\r\n height += convertPixelsToMilimeters(58);\r\n }\r\n else {\r\n height += convertPixelsToMilimeters(32);\r\n }\r\n doc.setFontSize(14);\r\n doc.setTextColor(26, 26, 26);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n doc.text(`${item.label}`, convertPixelsToMilimeters(32), height);\r\n //console.log(`${item.label}`);\r\n\r\n doc.setTextColor(76, 76, 76);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n let value = item.value.join(\", \");\r\n // if (value.length > 35) {\r\n // let splitedText = doc.splitTextToSize(value, 90);\r\n // splitedText.map((row: string, index: number) => {\r\n // (index === 0) ? height += 0 : height += convertPixelsToMilimeters(32);\r\n // (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n // doc.text(row, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n // });\r\n // } else {\r\n (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n doc.text(value, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n //console.log(value);\r\n height += heightToAdd(doc, value, convertPixelsToMilimeters(208), convertPixelsToMilimeters(16));\r\n // }\r\n\r\n // if (item.type == 'zones') {\r\n // height += convertPixelsToMilimeters(16);\r\n // }\r\n\r\n } else if (item.style === \"h2\") {\r\n if (height == convertPixelsToMilimeters(75)) {\r\n height += convertPixelsToMilimeters(58);\r\n }\r\n else {\r\n height += convertPixelsToMilimeters(32);\r\n }\r\n doc.setFontSize(14);\r\n doc.setTextColor(26, 26, 26);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\");\r\n doc.text(`${item.label}`, convertPixelsToMilimeters(32), height, { maxWidth: convertPixelsToMilimeters(306) });\r\n //console.log(item.label);\r\n\r\n doc.setTextColor(76, 76, 76);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n doc.text(`${item.value.join(\", \")}`, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n\r\n } else if (item.style === \"h3\") {\r\n if (height == convertPixelsToMilimeters(75)) {\r\n height += convertPixelsToMilimeters(58);\r\n }\r\n else {\r\n height += convertPixelsToMilimeters(32);\r\n }\r\n doc.setFontSize(14);\r\n doc.setTextColor(76, 76, 76);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n let label = item.label;\r\n\r\n if (label.length > 40) {\r\n let splitedText = doc.splitTextToSize(label, convertPixelsToMilimeters(306));\r\n splitedText.map((row: string, index: number) => {\r\n (index == 0) ? height += 0 : height += convertPixelsToMilimeters(32);\r\n doc.text(row, convertPixelsToMilimeters(32), height);\r\n //console.log(row);\r\n });\r\n } else {\r\n // replace fancy quotes with normal ones as they cause trouble when printed\r\n label = label.replace(/[“”‘’„]/g, '\\'');\r\n doc.text(label, convertPixelsToMilimeters(32), height);\r\n }\r\n\r\n let value = item.value.join(\", \");\r\n if (item.type == `lightSceneLuxLevel` &&\r\n (\r\n value.includes(`${i18n.t(\"translation:SensorData.functions.luminaire\")}`) ||\r\n value.includes(`${i18n.t(\"translation:SensorData.functions.luminaires\")}`)\r\n )\r\n ) {\r\n // item.value.forEach((el:any, index:number)=>{\r\n // (index == 0) ? height += 0 : height+=7;\r\n // (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n // console.log(el);\r\n\r\n // doc.text(el, secondRowX, height);\r\n // })\r\n // }\r\n // else if (value.length > 40) {\r\n // let splitedText = doc.splitTextToSize(value, 70);\r\n // splitedText.map((row: string, index: number) => {\r\n let lightGroups = [];\r\n let lightGroup = '';\r\n\r\n for (let i = 0; i < item.value.length; i++) {\r\n if (i % 2 == 0) {\r\n lightGroup = item.value[i];\r\n continue;\r\n }\r\n lightGroup += ', ' + item.value[i];\r\n lightGroups.push(lightGroup);\r\n }\r\n lightGroups.forEach((row: string, index: number) => {\r\n (index == 0) ? height += 0 : height += convertPixelsToMilimeters(32);\r\n (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n doc.text(row, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n //console.log('row : ', row);\r\n });\r\n } else {\r\n (item.isDefault) ? doc.setFont(\"Helvetica-TTF\", \"normal\") : doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n doc.text(value, secondRowX, height, { maxWidth: convertPixelsToMilimeters(208) });\r\n //console.log('row : ', value);\r\n height += heightToAdd(doc, value, convertPixelsToMilimeters(208), convertPixelsToMilimeters(16));\r\n }\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n\r\nlet summaryTable: any = {\r\n summary: {},\r\n reset: function () {\r\n this.summary = {}\r\n },\r\n buildSummary: function (detector: any, page: any): void {\r\n //let type = getDetectorTypeFormatted(detector);\r\n\r\n // Export projects toc\r\n if (detector.projectName) {\r\n let project = detector.projectName;\r\n let type = (detector.sensorInformation.detectorFamily.includes(\"230V\") ? \"230V\" : \"DALI-2\")\r\n\r\n if (!this.summary[project]) this.summary[project] = {}\r\n if (!this.summary[project][type]) this.summary[project][type] = []\r\n this.summary[project][type].push({\r\n detectorDescription: getDetectorTypeFormatted(detector),\r\n macAddress: detector.macAddress ? returnMacFormatted(detector.macAddress) : detector.templateName,\r\n customName: detector.customName? detector.customName : '-',\r\n page: page\r\n })\r\n }\r\n else { // Export templates toc\r\n let project = `${i18n.t(`translation:SensorData.export.detectors`)}`;\r\n //debugger;\r\n let type = detector.templateName || detector.customName;\r\n\r\n if (!this.summary[project]) this.summary[project] = {}\r\n if (!this.summary[project][type]) this.summary[project][type] = []\r\n this.summary[project][type].push({\r\n detectorDescription: `${i18n.t(`translation:Detectors_search.tableHeadings.detectorType`)}`,\r\n macAddress: getDetectorTypeFormatted(detector),\r\n page: page\r\n })\r\n\r\n if (detector.receivedFrom) {\r\n this.summary[project][type].push({\r\n detectorDescription: `${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedFrom`)}`,\r\n macAddress: detector.receivedFrom,\r\n page: page\r\n })\r\n }\r\n\r\n if (detector.receivedOn) {\r\n this.summary[project][type].push({\r\n detectorDescription: `${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedDate`)}`,\r\n macAddress: `${moment.tz(detector.receivedOn, moment.tz.guess()).format(\"DD/MM/YYYY\")}`,\r\n page: page\r\n })\r\n }\r\n\r\n this.summary[project][type].push({\r\n detectorDescription: `${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.templateDetails`)}`,\r\n macAddress: \"\",\r\n page: page\r\n })\r\n }\r\n },\r\n addSummary: function (doc: any, isTemplate: boolean): void {\r\n doc.insertPage(1)\r\n addHeaderFooterTable(doc)\r\n\r\n //Calc summary length in rows\r\n let rowsCounter = Object.entries(this.summary).reduce((acc: any, project: any) => {\r\n let counter = Object.entries(project[1]).reduce((acc2: any, type: any) => {\r\n let counter = type[1].reduce((acc3: any) => {\r\n return acc3 + 1\r\n }, 1)\r\n return acc2 + counter\r\n }, 1)\r\n return acc + counter\r\n }, 0)\r\n let totalSummaryPages = Math.ceil(rowsCounter / 33)\r\n\r\n\r\n let pagesCounter = 1;\r\n let height = convertPixelsToMilimeters(75);\r\n Object.entries(this.summary).forEach((project: any) => {\r\n let [projectName, projectTypes] = project;\r\n if (doc.getPageHeight() - height < 50) {\r\n pagesCounter += 1;\r\n doc.insertPage(pagesCounter);\r\n addHeaderFooter(doc);\r\n height = convertPixelsToMilimeters(75);\r\n }\r\n if (projectName !== `${i18n.t(`translation:SensorData.export.detectors`)}`) {\r\n height += convertPixelsToMilimeters(32);\r\n doc.setFontSize(18);\r\n doc.setTextColor(26, 26, 26);\r\n doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n\r\n doc.text(projectName, convertPixelsToMilimeters(32), height, { maxWidth: convertPixelsToMilimeters(192) })\r\n }\r\n\r\n //DALI-2 will be printed first\r\n if (projectTypes[\"DALI-2\"]) projectTypes = { \"DALI-2\": projectTypes[\"DALI-2\"], ...projectTypes };\r\n\r\n Object.entries(projectTypes).forEach((type: any) => {\r\n let [typeName, typeValues] = type;\r\n if (doc.getPageHeight() - height < 45) {\r\n pagesCounter += 1;\r\n doc.insertPage(pagesCounter);\r\n addHeaderFooterTable(doc)\r\n height = convertPixelsToMilimeters(75);\r\n }\r\n height += convertPixelsToMilimeters(32);\r\n doc.setFontSize(14);\r\n doc.setTextColor(26, 26, 26);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\")\r\n\r\n if (isExportingDetectors()) {\r\n doc.setFont(\"Helvetica-TTF\", \"bold\")\r\n }\r\n doc.text(typeName, convertPixelsToMilimeters(32), height)\r\n\r\n typeValues.forEach((entry: any) => {\r\n if (doc.getPageHeight() - height < 37) {\r\n pagesCounter += 1;\r\n doc.insertPage(pagesCounter);\r\n addHeaderFooterTable(doc)\r\n height = convertPixelsToMilimeters(75);\r\n }\r\n\r\n const trimToLengh = (text: string) => {\r\n return text.length > 25 ? text.substring(0, 25) + '...' : text;\r\n }\r\n const { detectorDescription, macAddress, page, customName } = entry\r\n const formatedCustomName = customName ? trimToLengh(customName) : '-';\r\n let currentPage = page + totalSummaryPages;\r\n\r\n height += convertPixelsToMilimeters(32);\r\n doc.setFontSize(14);\r\n doc.setTextColor(54, 54, 54)\r\n doc.setFont(\"Helvetica-TTF\", \"normal\")\r\n if(isTemplate){\r\n doc.text(`${detectorDescription}`, convertPixelsToMilimeters(32), height, { maxWidth: convertPixelsToMilimeters(192) })\r\n doc.text(`${macAddress}`, convertPixelsToMilimeters(240), height, { maxWidth: 75 })\r\n } else{\r\n doc.text(`${detectorDescription}`, convertPixelsToMilimeters(32), height, { maxWidth: convertPixelsToMilimeters(192) })\r\n doc.text(formatedCustomName, convertPixelsToMilimeters(280), height, { maxWidth: convertPixelsToMilimeters(120)})\r\n doc.text(`${macAddress}`, convertPixelsToMilimeters(400), height, { maxWidth: 75 })\r\n }\r\n\r\n height += getTextLines(doc, detectorDescription, convertPixelsToMilimeters(192)) > 1 ? convertPixelsToMilimeters(16) : 0;\r\n //doc.text(`${macAddress}`+`${macAddress}`, 120, height, {maxWidth: 75})\r\n\r\n const widthInPixelsForCurrentPage = doc.getTextWidth(`${currentPage}`);\r\n doc.text(`${currentPage}`, convertPixelsToMilimeters(555), height);\r\n\r\n //height += heightToAdd(doc, `${macAddress}`, 75, convertPixelsToMilimeters(16));\r\n })\r\n })\r\n if (isExportingProjects()) {\r\n height += convertPixelsToMilimeters(12);\r\n }\r\n })\r\n }\r\n}\r\n\r\nlet addPageNumber = (doc: any): void => {\r\n doc.setFontSize(10);\r\n doc.setTextColor(54, 54, 54);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n\r\n let numPages = doc.getNumberOfPages()\r\n for (let i = 1; i <= numPages; i++) {\r\n doc.setPage(i)\r\n doc.text(\r\n `${i18n.t(\"translation:SensorData.export.page\")}: ${i}`,\r\n convertPixelsToMilimeters(32),\r\n doc.getPageHeight() - convertPixelsToMilimeters(44)\r\n );\r\n }\r\n}\r\n\r\nconst addContactDetails = (doc: any, contactDetails: string): void => {\r\n doc.setFontSize(10);\r\n doc.setTextColor(54, 54, 54);\r\n doc.setFont(\"Helvetica-TTF\", \"normal\");\r\n doc.setPage(1);\r\n doc.text(contactDetails, convertPixelsToMilimeters(32), doc.getPageHeight() - convertPixelsToMilimeters(20));\r\n}\r\n\r\nexport const exportProjectsPDF = async (projects: IProject[], contactDetails: string) => {\r\n exportType = 'projects';\r\n \r\n const doc = new jsPDF({\r\n orientation: \"portrait\",\r\n unit: \"mm\",\r\n format: [297.1764705882353, 210],\r\n });\r\n \r\n doc.addFileToVFS('Helvetica-TTF-normal.ttf', HelveticaFont);\r\n doc.addFont('Helvetica-TTF-normal.ttf', 'Helvetica-TTF', 'normal');\r\n\r\n doc.addFileToVFS('Helvetica-TTF-bold.ttf', HelveticaFontBold);\r\n doc.addFont('Helvetica-TTF-bold.ttf', 'Helvetica-TTF', 'bold');\r\n\r\n summaryTable.reset();\r\n projects.forEach((project: IProject, i: number) => {\r\n if (i !== 0) doc.addPage();\r\n //console.log(i);\r\n console.log(project);\r\n // add Dali detectors first\r\n let v230Settings = project.sensorSettings.filter(setting => setting.sensorInformation?.detectorFamily.includes(\"230V\"));\r\n let daliSettings = project.sensorSettings.filter(setting => setting.sensorInformation?.detectorFamily.includes(\"dali\"));\r\n project.sensorSettings = daliSettings.concat(v230Settings);\r\n\r\n //Generate pages for each detector\r\n project.sensorSettings.forEach((detector: any, i: number) => {\r\n if (i !== 0) doc.addPage();\r\n summaryTable.buildSummary(detector, doc.getNumberOfPages()); //Create summary\r\n generatePage(doc, detector, true);\r\n });\r\n })\r\n summaryTable.addSummary(doc, false); //Add summary, it's a project\r\n addPageNumber(doc);\r\n //addContactDetails(doc, contactDetails);\r\n\r\n //Save PDF\r\n if (projects.length === 1) doc.save(`${projects[0].name}.pdf`);\r\n else doc.save(`Projects.pdf`);\r\n};\r\n\r\n\r\nexport const exportDetectorsPDF = (\r\n detectors: ITemplateModel[] | IReceivedTemplateModel[] | IDetectorModel[] | ISensorSetting[],\r\n isDetectorsetting: boolean,\r\n contactDetails: string,\r\n title?: string,\r\n): void => {\r\n exportType = 'detectors';\r\n\r\n const doc: any = new jsPDF({\r\n orientation: \"portrait\",\r\n unit: \"mm\",\r\n format: [297.1764705882353, 210],\r\n });\r\n// let isTemplate:boolean ;\r\n\r\n doc.addFileToVFS('Helvetica-TTF-normal.ttf', HelveticaFont);\r\n doc.addFont('Helvetica-TTF-normal.ttf', 'Helvetica-TTF', 'normal');\r\n\r\n doc.addFileToVFS('Helvetica-TTF-bold.ttf', HelveticaFontBold);\r\n doc.addFont('Helvetica-TTF-bold.ttf', 'Helvetica-TTF', 'bold');\r\n\r\n summaryTable.reset();\r\n\r\n // add Dali detectors first\r\n detectors.sort((obj1: IDetectorModel | ITemplateModel | IReceivedTemplateModel | ISensorSetting,\r\n obj2: IDetectorModel | ITemplateModel | IReceivedTemplateModel | ISensorSetting) => {\r\n if (obj1.sensorInformation.detectorFamily.includes(\"dali\") && obj2.sensorInformation.detectorFamily.includes(\"230V\")) {\r\n return -1;\r\n }\r\n\r\n if (obj1.sensorInformation.detectorFamily.includes(\"230V\") && obj2.sensorInformation.detectorFamily.includes(\"dali\")) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n //Generate PDF content\r\n detectors.forEach(\r\n (detector: IDetectorModel | ITemplateModel | IReceivedTemplateModel | ISensorSetting,\r\n i: number\r\n ) => {\r\n if (i !== 0) doc.addPage();\r\n summaryTable.buildSummary(detector, doc.getNumberOfPages()); //Create summary\r\n generatePage(doc, detector, isDetectorsetting);\r\n }\r\n );\r\n //if(detectors.length > 1)\r\n summaryTable.addSummary(doc, true); //Add summary, it's a template\r\n addPageNumber(doc);\r\n //addContactDetails(doc, contactDetails);\r\n\r\n //Save PDF\r\n if (title) {\r\n doc.save(`${title}.pdf`);\r\n } else if (detectors.length === 1)\r\n doc.save(`${detectors[0].sensorInformation.name}.pdf`);\r\n else doc.save(`Detectors.pdf`);\r\n};\r\n\r\n/* FONTS\r\nCourier: (4) [\"\", \"Bold\", \"Oblique\", \"BoldOblique\"]\r\nHelvetica: (4) [\"\", \"Bold\", \"Oblique\", \"BoldOblique\"]\r\nSymbol: [\"\"]\r\nTimes: (4) [\"Roman\", \"Bold\", \"Italic\", \"BoldItalic\"]\r\nZapfDingbats: [\"\"]\r\ncourier: (4) [\"normal\", \"bold\", \"italic\", \"bolditalic\"]\r\nhelvetica: (4) [\"normal\", \"bold\", \"italic\", \"bolditalic\"]\r\nhumanistBD: [\"bold\"]\r\nsymbol: [\"normal\"]\r\ntimes: (4) [\"normal\", \"bold\", \"italic\", \"bolditalic\"]\r\nzapfdingbats: [\"normal\"] */\r\n","import GetSensorDescription from \"../SensorData/GetSensorDescription\";\r\nimport GetDefaultDescription from './GetDefaultDescription';\r\nimport * as Excel from \"exceljs\";\r\nimport { saveAs } from \"file-saver\";\r\nimport i18n from \"i18next\";\r\nimport { IDetectorModel } from \"../../../models/DetectorModel\";\r\nimport { IProject } from \"../../../models/Project\";\r\nimport { ISensorSetting } from \"../../../models/SensorSetting\";\r\nimport {IReceivedTemplateModel, ITemplateModel} from \"../../../models/TemplatesModel\";\r\nimport {sortLightSceneGroupsByPercentage} from \"./ExportLightSceneHelper\";\r\nimport moment from \"moment\";\r\n\r\n\r\nconst title_style = {\r\n name: \"Calibri\",\r\n size: 12,\r\n bold: true,\r\n color: { argb: \"0D0D0D\" }\r\n};\r\n\r\nconst title_fill = {\r\n type: \"pattern\",\r\n pattern: \"solid\",\r\n fgColor: { argb: \"BFBFBF\" },\r\n};\r\n\r\nconst h1 = {\r\n name: \"Calibri\",\r\n size: 12,\r\n bold: true,\r\n color: { argb: \"404040\" } \r\n};\r\n\r\nconst h2 = {\r\n name: \"Calibri\",\r\n size: 12,\r\n bold: true,\r\n color: { argb: \"404040\" }\r\n};\r\n\r\nconst h3 = {\r\n name: \"Calibri\",\r\n size: 12,\r\n color: { argb: \"404040\" }\r\n};\r\n\r\nconst value_style = {\r\n name: \"Calibri\",\r\n size: 11,\r\n color: { argb: \"404040\" }\r\n}\r\n\r\nconst value_bold = {\r\n name: \"Calibri\",\r\n size: 11,\r\n bold: true,\r\n color: { argb: \"404040\" }\r\n}\r\n\r\n\r\nconst DetectorsInfoMethods = {\r\n addSubtab: (dataMatrix:any, currentTab:any, currentSubTab:any, item:any, i:any):any => {\r\n dataMatrix[`${currentTab}`][`${item.type}`] = {};\r\n currentSubTab = item.type;\r\n if(item.value) {\r\n let arr = [];\r\n arr[i] = item;\r\n dataMatrix[`${currentTab}`][`${currentSubTab}`][`${item.type}`] = {\r\n type: item.type,\r\n style: item.style,\r\n label: item.label,\r\n btnName: item.btnName ?? \"\",\r\n orderId: (item.orderId) ? item.orderId : \"\",\r\n values: arr\r\n }\r\n }\r\n return [dataMatrix, currentSubTab]\r\n },\r\n addSubtabValue: (dataMatrix:any, currentTab:any, currentSubTab:any, item:any, i:any) => {\r\n currentSubTab = item.type;\r\n if(item.value) dataMatrix[`${currentTab}`][`${currentSubTab}`][`${item.type}`].values[i] = item;\r\n \r\n return [dataMatrix, currentSubTab]\r\n }, \r\n addProperty: (dataMatrix:any, currentTab:any, currentSubTab:any, item:any, i:any):any => {\r\n let arr = [];\r\n arr[i] = item;\r\n dataMatrix[`${currentTab}`][`${currentSubTab}`][`${item.type}`] = {\r\n type: item.type,\r\n style: item.style,\r\n label: item.label,\r\n btnName: item.btnName ?? \"\",\r\n orderId: (item.orderId) ? item.orderId : \"\",\r\n values: arr\r\n }\r\n return [dataMatrix]\r\n },\r\n addPropertyValue: (dataMatrix:any, currentTab:any, currentSubTab:any, item:any, i:any):any => {\r\n dataMatrix[`${currentTab}`][`${currentSubTab}`][`${item.type}`].values[i] = item;\r\n return [dataMatrix]\r\n },\r\n addTranslatedValues: (item:any, currentTab:any) => {\r\n if(item.name?.toLowerCase().includes(\"broadcast\")) item.value = [\"Broadcast\"] \r\n if(item.name?.toLowerCase().includes(\"hvac\")) item.value = [\"HVAC\"]\r\n if(item.name?.toLowerCase().includes(\"lighting\") && item.type.toLowerCase().includes(\"zone\")) item.value = [\"Lighting\"] \r\n\r\n if(item.type == \"zones\" && currentTab == \"settings\") item.label = `${i18n.t(`translation:SensorData.pushButtons.zones`)}/${i18n.t(`translation:SensorData.channels.channels`)}:`;\r\n if(item.type == \"zone1\" && currentTab == \"settings\") item.label = `${i18n.t(`translation:SensorData.fineTunning.zone`)}/${i18n.t(`translation:SensorData.channels.channel`)} 1`;\r\n if(item.type == \"zone2\" && currentTab == \"settings\") item.label = `${i18n.t(`translation:SensorData.fineTunning.zone`)}/${i18n.t(`translation:SensorData.channels.channel`)} 2`;\r\n if(item.type == \"zone3\" && currentTab == \"settings\") item.label = `${i18n.t(`translation:SensorData.fineTunning.zone`)} 3`;\r\n if(item.type == \"zone4\" && currentTab == \"settings\") item.label = `${i18n.t(`translation:SensorData.fineTunning.zone`)} 4`;\r\n },\r\n setSettingsDisplayOrder: (dataMatrix:any) => {\r\n if(dataMatrix.settings){\r\n if(dataMatrix.settings[\"zone4\"]) dataMatrix.settings = {\"zone4\": dataMatrix.settings[\"zone4\"], ...dataMatrix.settings};\r\n if(dataMatrix.settings[\"zone3\"]) dataMatrix.settings = {\"zone3\": dataMatrix.settings[\"zone3\"], ...dataMatrix.settings};\r\n if(dataMatrix.settings[\"zone2\"]) dataMatrix.settings = {\"zone2\": dataMatrix.settings[\"zone2\"], ...dataMatrix.settings};\r\n if(dataMatrix.settings[\"zone1\"]) dataMatrix.settings = {\"zone1\": dataMatrix.settings[\"zone1\"], ...dataMatrix.settings};\r\n if(dataMatrix.settings[\"zones\"]) dataMatrix.settings = {\"zones\": dataMatrix.settings[\"zones\"], ...dataMatrix.settings};\r\n dataMatrix = {\"settings\": dataMatrix.settings, ...dataMatrix}\r\n } \r\n return dataMatrix;\r\n },\r\n setFunctionsDisplayOrder: (dataMatrix:any) => {\r\n if(dataMatrix.functions){\r\n if(dataMatrix.functions[\"activeCurve\"]) dataMatrix.functions = {\"activeCurve\": dataMatrix.functions[\"activeCurve\"], ...dataMatrix.functions};\r\n if(dataMatrix.functions[\"tunableWhite\"]) dataMatrix.functions = {\"tunableWhite\": dataMatrix.functions[\"tunableWhite\"], ...dataMatrix.functions};\r\n } \r\n return dataMatrix;\r\n },\r\n setButtonsDisplayOrder: (dataMatrix:any) => {\r\n let pressAndHoldTiming = (dataMatrix.pushButtons && dataMatrix.pushButtons.pushButtonOperation) \r\n ? dataMatrix.pushButtons.pushButtonOperation\r\n : null\r\n\r\n const returnBtnName = (btnCounter:number, i:number) => {\r\n switch(btnCounter){\r\n case 1:\r\n return `wiredButtonsTitle`\r\n case 2:\r\n return `230 V inputs T${i}, Push button (1 action)`\r\n case 3:\r\n return `230 V inputs T${i}, Switch (2 actions)`\r\n case 4: \r\n return `blePushButtonTitle`\r\n case 5:\r\n return `blePushButton${i}`\r\n case 6:\r\n return `daliPushButtonsTitle`\r\n case 7:\r\n return `daliPushButton${i}`\r\n default:\r\n return `stop`\r\n }\r\n }\r\n\r\n if(dataMatrix.pushButtons){\r\n let orderedArr:any = []\r\n for(let i=1; i<=8; i++){\r\n for(let j=1; j<=5; j++){\r\n let currentButton = returnBtnName(i, j)\r\n Object.entries(dataMatrix.pushButtons).map((prop:any)=>{\r\n let [property, value] = prop;\r\n if(value[property].type == currentButton) orderedArr.push(prop)\r\n })\r\n }\r\n }\r\n\r\n let orderedPushButtons:any = {}\r\n orderedArr.forEach((prop:any)=>{\r\n let [property, value] = prop;\r\n orderedPushButtons[property] = value;\r\n })\r\n\r\n //DELETE TITLES \r\n if(!orderedPushButtons.blePushButton1) delete orderedPushButtons.blePushButtonTitle\r\n if(!orderedPushButtons.daliPushButton1) delete orderedPushButtons.daliPushButtonsTitle\r\n\r\n\r\n dataMatrix.pushButtons = orderedPushButtons;\r\n if(pressAndHoldTiming) dataMatrix.pushButtons.pushButtonOperation = pressAndHoldTiming;\r\n }\r\n\r\n return dataMatrix;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nconst generateDetectorsInfo = (\r\n detectors: any,\r\n isDetectorSetting: boolean\r\n ): any => {\r\n let detectorList = detectors.map((detector:any)=> GetDefaultDescription(detector, isDetectorSetting)) \r\n let dataMatrix:any = {}\r\n\r\n console.log(\"Detectors JSON\", detectors)\r\n console.log(\"Detectors\", detectorList)\r\n\r\n detectorList.forEach((detector:any, i:number) => {\r\n if(detector !== undefined) {\r\n\r\n sortLightSceneGroupsByPercentage(detector);\r\n\r\n Object.entries(detector).forEach((tab: any) => {\r\n let [ currentTab, tabValues ] = tab; \r\n if(currentTab === \"channels\") currentTab = \"settings\";\r\n\r\n if (currentTab !== \"tabs\") {\r\n if(!dataMatrix[`${currentTab}`]) dataMatrix[`${currentTab}`] = {}\r\n let currentSubtab = {};\r\n\r\n tabValues.forEach((item: any) => {\r\n DetectorsInfoMethods.addTranslatedValues(item, currentTab)\r\n\r\n if(item.style === \"h1\" || item.style === \"h2\") {\r\n if(dataMatrix[`${currentTab}`][`${item.type}`]) {\r\n [dataMatrix, currentSubtab] = DetectorsInfoMethods.addSubtabValue(dataMatrix, currentTab, currentSubtab, item, i)\r\n } else {\r\n [dataMatrix, currentSubtab] = DetectorsInfoMethods.addSubtab(dataMatrix, currentTab, currentSubtab, item, i)\r\n }\r\n }\r\n\r\n if(item.style === \"h3\") {\r\n if(dataMatrix[`${currentTab}`][`${currentSubtab}`][`${item.type}`]){\r\n [dataMatrix] = DetectorsInfoMethods.addPropertyValue(dataMatrix, currentTab, currentSubtab, item, i)\r\n }else{\r\n [dataMatrix] = DetectorsInfoMethods.addProperty(dataMatrix, currentTab, currentSubtab, item, i)\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n\r\n dataMatrix = DetectorsInfoMethods.setSettingsDisplayOrder(dataMatrix);\r\n dataMatrix = DetectorsInfoMethods.setFunctionsDisplayOrder(dataMatrix);\r\n dataMatrix = DetectorsInfoMethods.setButtonsDisplayOrder(dataMatrix);\r\n\r\n console.log(\"dataMatrix: \", dataMatrix);\r\n return dataMatrix;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst generateWorksheet = (\r\n worksheet: any,\r\n detectors: any, \r\n isDetectorSetting: boolean\r\n): void => {\r\n let dataMatrix = generateDetectorsInfo(detectors, isDetectorSetting);\r\n\r\n //TO DO: Support 3-letters columns \r\n const getColumn = (i:number) => {\r\n const letter = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\"];\r\n \r\n let col = [];\r\n\r\n let k = 0;\r\n let currentLetter = 'A'\r\n while(k <= i){\r\n currentLetter = letter[k%letter.length]\r\n if(k%letter.length == 0 && k != 0) col[0]=letter[k/letter.length-1]\r\n k++\r\n }\r\n col.push(currentLetter)\r\n\r\n return col.join(\"\");\r\n }\r\n\r\n let detectorCounter = detectors.length;\r\n let detailsRow = 7;\r\n\r\n //SET WIDTH\r\n worksheet.getColumn(\"B\").width = 60;\r\n for(let i=0; i<=detectorCounter; i++) worksheet.getColumn(`${getColumn(i+2)}`).width = 30;\r\n \r\n //TABLE TITLES\r\n worksheet.getCell('B3').value = `${i18n.t(`translation:SensorData.export.detectorType`)}`;\r\n worksheet.getCell('B4').value = `${i18n.t(`translation:SensorData.export.productNumber`)}`;\r\n worksheet.getCell('B5').value = `${i18n.t(`translation:SensorData.export.detectorName`)}`;\r\n worksheet.getCell('B6').value = `${i18n.t(`translation:SensorData.export.macAddress`)}`;\r\n worksheet.getCell('B7').value = `${i18n.t(`translation:SensorData.export.projectName`)}`;\r\n \r\n let isReceivedTemplate = !isDetectorSetting && \"receivedFrom\" in detectors[0];\r\n if (isReceivedTemplate)\r\n {\r\n worksheet.getCell('B8').value = `${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedFrom`)}`;\r\n worksheet.getCell('B9').value = `${i18n.t(`translation:Templates_Receivedtemplates.tableHeadings.receivedDate`)}`;\r\n detailsRow = 9;\r\n }\r\n \r\n for(let i=3; i {\r\n worksheet.getCell(`${getColumn(i+2)}${3}`).value = detector.sensorInformation.detectorShortDescription;\r\n worksheet.getCell(`${getColumn(i+2)}${4}`).value = detector.sensorInformation.name;\r\n worksheet.getCell(`${getColumn(i+2)}${5}`).value = detector.customName ?? '-';\r\n worksheet.getCell(`${getColumn(i+2)}${6}`).value = detector.macAddress?.split(\"\").map((num:any, i:number) => (i%2==0 && i!=0) ? `:${num}` : num).join(\"\") ?? detector.templateName;\r\n worksheet.getCell(`${getColumn(i+2)}${7}`).value = detector.projectName;\r\n worksheet.getCell(`${getColumn(i+2)}${3}`).font = title_style;\r\n worksheet.getCell(`${getColumn(i+2)}${4}`).font = title_style;\r\n worksheet.getCell(`${getColumn(i+2)}${5}`).font = title_style;\r\n worksheet.getCell(`${getColumn(i+2)}${6}`).font = title_style;\r\n worksheet.getCell(`${getColumn(i+2)}${7}`).font = title_style;\r\n if (isReceivedTemplate)\r\n {\r\n worksheet.getCell(`${getColumn(i+2)}${7}`).value = detector.receivedFrom;\r\n worksheet.getCell(`${getColumn(i+2)}${8}`).value = `${moment.tz(detector.receivedOn, moment.tz.guess()).format(\"DD/MM/YYYY\")}`;\r\n worksheet.getCell(`${getColumn(i+2)}${7}`).font = title_style;\r\n worksheet.getCell(`${getColumn(i+2)}${8}`).font = title_style;\r\n }\r\n })\r\n\r\n //FROZEN COLUMN & LINE\r\n worksheet.views = [ {state: 'frozen', xSplit: 2, ySplit: 6, activeCell: 'A1'} ];\r\n\r\n\r\n Object.entries(dataMatrix).forEach((tab:any) => {\r\n const [tabName, properties] = tab;\r\n let tabRow = row; // tab name will be added after proprieties (only if we have some data) \r\n row++\r\n\r\n // console.log(\"TabName: \", tabName)\r\n // console.log(\"Properties: \", properties)\r\n Object.entries(properties).forEach((subtab:any)=>{\r\n const [subtabName, subtabValues] = subtab;\r\n if(subtabValues)\r\n Object.entries(subtabValues).forEach((property:any)=>{\r\n const [ propertyName, keys] = property;\r\n // console.log(\"TabName: \", propertyName)\r\n // console.log(\"Properties: \", keys)\r\n\r\n if(property[1].style === \"h1\" || property[1].style === \"h2\"){\r\n worksheet.getCell(`B${row}`).value = keys.label;\r\n worksheet.getCell(`B${row}`).font = h1;\r\n worksheet.getCell(`B${row}`).alignment = { wrapText: true, vertical: 'top' };\r\n }else{\r\n worksheet.getCell(`B${row}`).value = keys.label;\r\n worksheet.getCell(`B${row}`).font = h3;\r\n worksheet.getCell(`B${row}`).alignment = { wrapText: true, vertical: 'top' };\r\n\r\n //EDGE CASE\r\n if(keys.type && keys.type.includes(\"TunableWhitePresetName\")) worksheet.getCell(`B${row}`).font = h1;\r\n }\r\n\r\n if(keys != undefined) \r\n keys.values.forEach((value:any, c:number) => {\r\n let cell = `${getColumn(c+2)}${row}`;\r\n let currentValue = value.value.join(', ');\r\n\r\n //Light scene format\r\n if((currentValue.includes(\"Group\") || currentValue.includes(\"in use\")) && currentValue.includes(\"luminaire\")){\r\n currentValue = ''\r\n value.value.forEach((val:any)=> currentValue = currentValue + val + ' '.repeat(60-val.length))\r\n }\r\n\r\n worksheet.getCell(cell).value = currentValue;\r\n worksheet.getCell(cell).alignment = { wrapText: true, vertical: 'top' };\r\n (value.isDefault) ? worksheet.getCell(cell).font = value_style\r\n : worksheet.getCell(cell).font = value_bold\r\n })\r\n row++\r\n })\r\n })\r\n\r\n // add the tab name (e.g. communication) if it has some proprieties\r\n if (row != tabRow+1)\r\n {\r\n worksheet.getCell(`B${tabRow}`).value = i18n.t(`translation:SensorData.tabs.${tabName}Tab`)\r\n worksheet.getCell(`B${tabRow}`).font = title_style;\r\n for(let i=1; i {\r\n return detector.projectName != undefined\r\n })\r\n if(!showProjectName) {\r\n worksheet.getRow(5).hidden = true;\r\n worksheet.getRow(6).hidden = true;\r\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 saveExcel = async (workbook: any, title: string) => {\r\n const buf = await workbook.xlsx.writeBuffer();\r\n saveAs(new Blob([buf]), `${title}.xlsx`);\r\n};\r\n\r\n\r\nexport const exportDetectorsExcel = async (\r\n detectors: IDetectorModel[] | ITemplateModel[] | IReceivedTemplateModel[] | ISensorSetting[],\r\n isDetectorSetting: boolean,\r\n title?: string,\r\n) => {\r\n const workbook = new Excel.Workbook();\r\n\r\n let sheetName = (title) ? title : detectors[0].sensorInformation.name\r\n let worksheet = workbook.addWorksheet((sheetName) ? sheetName : `${i18n.t(`translation:SensorData.export.detector`)}`)\r\n generateWorksheet(worksheet, detectors, isDetectorSetting);\r\n\r\n //Download\r\n if (title) saveExcel(workbook, `${title}`);\r\n else if (detectors.length === 1) saveExcel(workbook, `${detectors[0].sensorInformation.name}`);\r\n else saveExcel(workbook, `${i18n.t(`translation:SensorData.export.detectors`)}`);\r\n};\r\n\r\n\r\nexport const exportProjectsExcel = async (projects: IProject[]) => {\r\n const workbook = new Excel.Workbook();\r\n let worksheet = [];\r\n\r\n if (projects.length == 1) {\r\n exportDetectorsExcel(projects[0].sensorSettings, true, projects[0].name);\r\n } else {\r\n projects.forEach((project: IProject, i: number) => {\r\n worksheet[i] = workbook.addWorksheet(\r\n `${i + 1}-${\r\n project.name.length > 25 ? project.name.slice(0, 25) : project.name\r\n }`.replace(\"/\", \".\")\r\n ); //Sheet name must have less than 31 chars and doesn't support '/'\r\n generateWorksheet(worksheet[i], project.sensorSettings, true);\r\n });\r\n\r\n if (projects.length === 1) saveExcel(workbook, `${projects[0].name}`);\r\n else saveExcel(workbook, `${i18n.t(`translation:SensorData.export.projects`)}`);\r\n }\r\n};\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useIntl } from \"react-intl\";\r\nimport moment from \"moment-timezone\";\r\nimport {\r\n Checkbox,\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableCell,\r\n TableRow,\r\n TableBody,\r\n Grid,\r\n Modal,\r\n} from \"@material-ui/core\";\r\nimport UncheckedboxSVG from \"../../common/components/UncheckedBox\";\r\nimport Actions from \"./Components/Actions\";\r\nimport {\r\n getProjectById,\r\n getAllProjects,\r\n removeProjects,\r\n} from \"../../data-services/Projects/ProjectsService\";\r\nimport { IProject } from \"../../models/Project\";\r\nimport ProjectHeader from \"./Components/ProjectHeader\";\r\nimport CheckedBoldBox from \"../../common/components/CheckedBoldBox\";\r\nimport { AppRoute } from \"../../common/constants/routes\";\r\nimport { getLocalizedRoute } from \"../../common/services/i18n/utils/routeLocalization\";\r\nimport useStyles from \"./ProjectsList.style\";\r\nimport { exportProjectsPDF } from \"../../common/components/Export/ExportPDF\";\r\nimport { exportProjectsExcel } from \"../../common/components/Export/ExportExcel\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport LoadingSpinner from \"../../LoadingSpinner\";\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst ProjectsList: React.FC = () => {\r\n\r\n\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { formatMessage, locale } = useIntl();\r\n const cellAlignment = \"left\";\r\n const [selectedProjects, setSelectedProjects] = React.useState([]);\r\n const [projects, setProjects] = useState([]);\r\n const [projectNames, setProjectNames] = useState([]);\r\n const [singleProject, setSingleProject] = useState();\r\n const timeZone = moment.tz.guess();\r\n const authStore = useAuth();\r\n const [sortedBy, setSortedBy] = useState('name');\r\n const [allSelected, setAllSelected] = useState(false);\r\n const [isFetching, setIsFetching] = useState(false);\r\n const [dataLeftToFetch, setDataLeftToFetch] = useState(true);\r\n const [offset, setOffset] = useState(0);\r\n const [allDataFetched, setAllDataFetched] = useState(false);\r\n const history = useHistory();\r\n\r\n\r\n const allProjectIds = projects.length > 0 ? projects.map((project: IProject) => project.id) : [];\r\n\r\n const pageLimit = 100;\r\n\r\n const redirectToProject = (project: IProject) => {\r\n setSingleProject(projects.find((item) => project.id === item.id));\r\n history.push(\r\n getLocalizedRoute(AppRoute.Project, locale, formatMessage).replace(\r\n \":id\",\r\n project.id\r\n )\r\n );\r\n };\r\n\r\n const fetchProject = async (projectId: string) => {\r\n\r\n if (projects[projects.map(e => e.id).indexOf(projectId)].sensorSettings.length == 0) {\r\n return;\r\n }\r\n\r\n const { data } = await getProjectById(projectId, authStore?.getImpersonatedUserEmail() || null);\r\n\r\n let affectedProjectIndex = projects.map(e => e.id).indexOf(data.id);\r\n\r\n // Keep the counts\r\n data.daliCount = projects[affectedProjectIndex].daliCount;\r\n data.two30Count = projects[affectedProjectIndex].two30Count;\r\n\r\n projects.splice(affectedProjectIndex, 1, data);\r\n\r\n // Use array spread to update the state\r\n setProjects([...projects]);\r\n }\r\n\r\n const fetchData = async (withFullInfo: boolean = true, sortBy: string = 'name', offset: number = 0, limit: number = 100) => {\r\n\r\n setIsFetching(true);\r\n offset = 0;\r\n limit = 9999;\r\n\r\n const { data } = await getAllProjects(authStore?.getImpersonatedUserEmail() || null, withFullInfo, sortedBy, offset, limit);\r\n\r\n\r\n if (data) {\r\n\r\n switch (sortedBy) {\r\n\r\n case \"name\":\r\n setProjects(sortedProjectsByName(data));\r\n break;\r\n\r\n case \"date\":\r\n setProjects(sortedProjectsByDate(data));\r\n break;\r\n\r\n default:\r\n setProjects(sortedProjectsByName(data));\r\n }\r\n\r\n // sortProjects(sortedBy, data);\r\n setIsFetching(false);\r\n\r\n }\r\n };\r\n\r\n const handleScroll = (e: any) => {\r\n if (e.target.documentElement.scrollTop + window.innerHeight + 1 >= e.target.documentElement.scrollHeight) {\r\n setIsFetching(true);\r\n //fetchData(false, sortedBy, offset, pageLimit);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchData(true, sortedBy, 0, pageLimit);\r\n // TODO:disable scroll event listener since we've grabbed all the data at once, refactoring needed when we implement pagination\r\n //window.addEventListener(\"scroll\", handleScroll);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!dataLeftToFetch) {\r\n if (allDataFetched) {\r\n setIsFetching(false);\r\n return;\r\n }\r\n if (allSelected) return;\r\n setIsFetching(false);\r\n //return;\r\n }\r\n if (!isFetching) {\r\n return;\r\n }\r\n if (projects.length > 0) {\r\n setOffset(offset + pageLimit)\r\n fetchData(true, sortedBy, offset + pageLimit, pageLimit);\r\n }\r\n }, [isFetching]);\r\n\r\n // useEffect(() => {\r\n // if (!dataLeftToFetch) {\r\n // setIsFetching(false);\r\n // }\r\n // }, [dataLeftToFetch]);\r\n\r\n\r\n const sortedProjectsByName = (projectsToSort: IProject[]) => {\r\n return projectsToSort.sort((a, b) => {\r\n if (a.name?.toUpperCase() < b.name?.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.name?.toUpperCase() > b.name?.toUpperCase()) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n });\r\n };\r\n\r\n const sortedProjectsByDate = (projectsToSort: IProject[]) => {\r\n return projectsToSort.sort((a, b) => b.createdAt - a.createdAt);\r\n };\r\n\r\n const sortProjects = (key: string, myProjects: IProject[] = []) => {\r\n\r\n setSortedBy(key);\r\n\r\n setProjects(prev => {\r\n if (key === 'name') prev = sortedProjectsByName(prev);\r\n if (key === 'date') prev = sortedProjectsByDate(prev);\r\n return [...prev];\r\n })\r\n\r\n };\r\n\r\n const handleChange = (\r\n event: React.ChangeEvent,\r\n project: any\r\n ) => {\r\n if (event.target.checked) {\r\n fetchProject(project.id);\r\n\r\n setSelectedProjects(selectedProjects.concat(project.id));\r\n setProjectNames(projectNames.concat(project.name));\r\n } else {\r\n setSelectedProjects(selectedProjects.filter((id) => id !== project.id));\r\n setProjectNames(projectNames.filter((name) => name !== project.name));\r\n }\r\n };\r\n\r\n const deleteProjects = async (projectIds: string[]): Promise => {\r\n try {\r\n const { status } = await removeProjects(projectIds, authStore?.getImpersonatedUserEmail() || null);\r\n if (status === \"success\") {\r\n setProjects(projects => {\r\n let copiedProjects = [...projects];\r\n\r\n return [...copiedProjects.filter(p => !projectIds.includes(p.id))];\r\n });\r\n setOffset(0);\r\n }\r\n } catch (error) {\r\n return \"error\";\r\n }\r\n };\r\n\r\n const handleExportProjectsPDF = () => {\r\n try {\r\n const selectedProjectsExport = projects.filter((project) =>\r\n selectedProjects.includes(project.id)\r\n );\r\n const contactDetails = t(\"translation:SensorData.export.contactDetails\")\r\n + ' ' + authStore?.userHistory?.firstName + ', '\r\n + authStore?.userHistory?.lastName + ', '\r\n + authStore?.userHistory?.email;\r\n exportProjectsPDF(selectedProjectsExport, contactDetails);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const handleExportProjectsExcel = () => {\r\n try {\r\n const selectedProjectsExport = projects.filter((project) =>\r\n selectedProjects.includes(project.id)\r\n );\r\n exportProjectsExcel(selectedProjectsExport);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n {\r\n isFetching\r\n &&\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:Projects_Myprojects.tableHeadings.name\")}\r\n \r\n \r\n {t(\"translation:Projects_Myprojects.tableHeadings.DALI-2\")}\r\n \r\n \r\n {t(\"translation:Projects_Myprojects.tableHeadings.230V\")}\r\n \r\n \r\n {t(\r\n \"translation:Projects_Myprojects.tableHeadings.CreationDate\"\r\n )}\r\n \r\n \r\n \r\n \r\n\r\n {projects.length > 0 && projects.map((project: IProject) => (\r\n \r\n \r\n id === project.id)}\r\n onChange={(event) => handleChange(event, project)}\r\n checkedIcon={}\r\n inputProps={{ \"aria-label\": \"checkbox\" }}\r\n icon={}\r\n disableRipple\r\n />\r\n \r\n redirectToProject(project)}\r\n >\r\n {project.name ? (\r\n `${project.name}`\r\n ) : (\r\n \"projectName\"\r\n )}\r\n \r\n redirectToProject(project)}\r\n align={cellAlignment}\r\n >\r\n {\r\n project.daliCount\r\n }\r\n \r\n redirectToProject(project)}\r\n >\r\n {\r\n project.two30Count\r\n }\r\n \r\n redirectToProject(project)}\r\n >\r\n {moment\r\n .tz(project.createdAt, timeZone)\r\n .format(\"DD.MM.YYYY\")}\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 ProjectsList;\r\n","import React from 'react';\r\nimport { makeStyles, createStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n icon: {\r\n pointerEvents: 'none',\r\n position: 'absolute',\r\n paddingRight: '16px',\r\n right: 0,\r\n },\r\n}));\r\n\r\nconst ChevronUp: React.FC = (() => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \"dropdown\"\r\n );\r\n});\r\n\r\nexport default ChevronUp;\r\n","import React from \"react\";\r\n\r\nconst Pencil: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Pencil;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(2.5),\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"210px\",\r\n height: \"48px\",\r\n },\r\n width: \"100%\",\r\n justifyContent: \"space-between\",\r\n },\r\n lightButtonColor: {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./SaveChanges.style\";\r\n\r\ninterface ISaveChanges {\r\n cancel(): void;\r\n closeModal(): void;\r\n saveNewName(): void;\r\n}\r\n\r\nconst SaveChanges: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { saveNewName, closeModal, cancel } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:Projects_View.saveModal.title\")}\r\n \r\n \r\n {t(\"translation:Projects_View.saveModal.content\")}\r\n \r\n \r\n \r\n cancel()}\r\n >\r\n {t(\"translation:common.cancel\")}\r\n \r\n {\r\n saveNewName();\r\n closeModal();\r\n }}\r\n >\r\n {t(\"translation:common.save\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SaveChanges;\r\n","import httpService from \"../HTTPService\";\r\nimport { IDeleteResponse } from \"../../models/ResponseModel\";\r\n\r\nconst baseUrl = \"SensorSetting\";\r\n\r\nexport const removeSensorSettings = async (\r\n sensorSettingIds: string[]\r\n): Promise => {\r\n try {\r\n const url = baseUrl + `/DeleteMany`;\r\n const response = await httpService.sendMessage(\r\n \"post\",\r\n url,\r\n sensorSettingIds\r\n );\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n }\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n","import { settings } from \"cluster\";\r\nimport {\r\n GetSensorDescription230VMaster,\r\n GetSensorDescription230VSlave,\r\n GetSensorDescriptionDaliMaster,\r\n GetSensorDescriptionDaliMasterComfort,\r\n GetSensorDescriptionDaliSlave,\r\n} from \"./GetSensorDescription\";\r\n\r\nconst getNameAndValue = (settingList: any, type: string): string => {\r\n const element = settingList.find((el: any) => el.type === type);\r\n if (element) {\r\n return `${element.label} ${element.value.join(\" \")}`;\r\n }\r\n return \"\";\r\n};\r\n\r\nconst getName = (settingList: any, type: string): string => {\r\n const element = settingList.find((el: any) => el.type === type);\r\n if (element) {\r\n return `${element.label}`;\r\n }\r\n return \"\";\r\n};\r\nconst getValue = (settingList: any, type: string): string => {\r\n const element = settingList.find((el: any) => el.type === type);\r\n if (element) {\r\n return `${element.value.join(\" \")}`;\r\n }\r\n return \"\";\r\n};\r\n\r\n\r\n\r\nconst GetProjectDetails = (detector: any) => {\r\n //const details = GetSensorDescription(detector);\r\n try {\r\n let family = detector.sensorInformation.detectorFamily.toLowerCase();\r\n let type = detector.sensorInformation.detectorType.toLowerCase();\r\n let daliComfort = detector.sensorInformation.detectorOutputInfo;\r\n\r\n if (family.includes(\"230v\") && type.includes(\"master\")) {\r\n let data = GetSensorDescription230VMaster(detector, true);\r\n const { channels } = data;\r\n\r\n return `${getName(channels, \"name\")} ${getNameAndValue(\r\n channels,\r\n \"luxLevel\"\r\n )}; ${getNameAndValue(channels, \"switchOffAboveLux\")}; ${getNameAndValue(\r\n channels,\r\n \"switchOffDelay\"\r\n )}`;\r\n } else if (family.includes(\"230v\") && type.includes(\"slave\")) {\r\n let data = GetSensorDescription230VSlave(detector);\r\n const { fineTunning } = data;\r\n let fineTunningDescription = \"\";\r\n\r\n if (fineTunning.length > 2)\r\n {\r\n fineTunning.map((el:any, i:number) => {\r\n if(i < 2 || el.label.includes(\"sector\")) fineTunningDescription += ` ${getNameAndValue(fineTunning, el.type)}`;\r\n });\r\n }\r\n else\r\n {\r\n fineTunningDescription += fineTunningDescription += ` ${getNameAndValue(fineTunning.slice(1), \"sensitivity\")}`;\r\n }\r\n return fineTunningDescription;\r\n } else if (\r\n family.includes(\"dali\") &&\r\n type.includes(\"master\") &&\r\n (daliComfort === \"wirelessComfort\" || daliComfort === \"daliComfort\")\r\n ) {\r\n let { settings } = GetSensorDescriptionDaliMasterComfort(detector, true);\r\n\r\n let daliDescription = \"\";\r\n if (settings[0].type.toLowerCase().includes(\"zones\"))\r\n daliDescription += `${getValue(settings, \"zones\")}; `;\r\n else\r\n daliDescription += `${getNameAndValue(settings, \"name\")} ${settings[0].label.trim()}; `;\r\n\r\n daliDescription += `${getNameAndValue(settings, \"luxLevel\")}; ${getNameAndValue(\r\n settings,\r\n \"movementIsDetected\"\r\n )};\r\n ${getNameAndValue(settings, \"switchOffAboveLux\")}; ${getNameAndValue(\r\n settings,\r\n \"switchOffDelay\"\r\n )}; ${getNameAndValue(\r\n settings,\r\n \"orientationLightLevel\"\r\n )}; ${getNameAndValue(settings, \"orientationLightSwitchOffDelay\")}`;\r\n return daliDescription;\r\n } else if (family.includes(\"dali\") && type.includes(\"master\")) {\r\n let { settings } = GetSensorDescriptionDaliMaster(detector, true);\r\n\r\n let daliDescription = \"\";\r\n if (settings[0].type.toLowerCase().includes(\"zones\"))\r\n daliDescription += `${getValue(settings, \"zones\")}; `;\r\n else\r\n daliDescription += `${getNameAndValue(settings, \"name\")} ${settings[0].label.trim()}; `;\r\n \r\n daliDescription += `${getNameAndValue(settings, \"name\")} ${getNameAndValue(\r\n settings,\r\n \"luxLevel\"\r\n )}; ${getNameAndValue(\r\n settings,\r\n \"switchOffAboveLux\"\r\n )}; ${getNameAndValue(settings, \"switchOffDelay\")}`;\r\n return daliDescription;\r\n } else if (\r\n family.includes(\"dali\") &&\r\n (type.includes(\"bms\") || type.includes(\"slave\"))\r\n ) {\r\n let data = GetSensorDescriptionDaliSlave(detector);\r\n const { fineTunning } = data;\r\n let fineTunningDescription = \"\";\r\n\r\n if (fineTunning.length > 2)\r\n {\r\n fineTunning.map((el:any, i:number) => {\r\n if(i < 2 || el.label.includes(\"sector\")) fineTunningDescription += ` ${getNameAndValue(fineTunning, el.type)}`;\r\n });\r\n }\r\n else\r\n {\r\n fineTunningDescription += fineTunningDescription += ` ${getNameAndValue(fineTunning.slice(1), \"sensitivity\")}`;\r\n }\r\n\r\n return fineTunningDescription;\r\n } else {\r\n return \"Detector details not found\";\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n return \"Detector details not found\";\r\n }\r\n};\r\n\r\nexport {GetProjectDetails};\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../styles/colors\";\r\nimport {\r\n paragraph14pxHumanist,\r\n} from \"../../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n detectorActions: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n width: \"100%\",\r\n padding: \"16px 100px 75px\",\r\n },\r\n infoItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n '&:last-child': {\r\n borderBottom: \"none\"\r\n },\r\n padding: \"7px 24px\",\r\n cursor: \"default\",\r\n \"&.MuiListItem-button:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n list: {\r\n width: \"100%\",\r\n },\r\n closeButton: {\r\n \"& button\": {\r\n width: \"352px\",\r\n },\r\n marginTop: theme.spacing(5),\r\n },\r\n tabName: {\r\n padding: \"7px 0\",\r\n color: colors.primaryColor,\r\n ...paragraph14pxHumanist,\r\n },\r\n propertyName: {\r\n padding: \"7px 0\",\r\n paddingLeft: \"15px\",\r\n color: colors.primaryColor,\r\n ...paragraph14pxHumanist,\r\n },\r\n property: {\r\n padding: \"7px 0\",\r\n paddingLeft: \"30px\",\r\n color: \"red\",\r\n ...paragraph14pxHumanist,\r\n },\r\n newLineProperty: {\r\n padding: \"7px 0\",\r\n paddingLeft: \"30px\",\r\n marginTop: \"-10px\",\r\n color: \"green\",\r\n ...paragraph14pxHumanist,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { Grid, ListItem, ListItemText, Typography } from \"@material-ui/core\";\r\nimport GetSensorDescription from \"../SensorData/GetSensorDescription\";\r\nimport useTypographyStyles from \"../../styles/typography\";\r\nimport useStyles from \"./SensorDataComponent.style\";\r\n\r\nconst SensorDataComponent: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const [sensorData, setSensorData] = useState();\r\n let isSensorSetting = (props.isSensorSetting == false) ? false : true;\r\n //console.log(\"===\", props.isSensorSetting)\r\n useEffect(() => {\r\n let SensorDescription = GetSensorDescription(props.detector, isSensorSetting);\r\n setSensorData(SensorDescription);\r\n }, []);\r\n\r\n return (\r\n <>\r\n {sensorData === undefined ? (\r\n
{\"Undefined\"}
\r\n ) : (\r\n \r\n {Object.entries(sensorData)\r\n .filter((tab) => tab[0] !== \"tabs\")\r\n .map((tab: any, i: number) => {\r\n const settings = tab[1];\r\n\r\n // if nothing in this tab move fwd\r\n if (settings.length == 0) return;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {settings.map((el: any, index: any) => {\r\n return (\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 {tab[1].map((tabProps: any) => {\r\n console.log(tabProps);\r\n\r\n return (\r\n <>\r\n {Object.entries(tabProps).map((property: any) => {\r\n if (property[1].includes(\",\")) {\r\n return (\r\n \r\n \r\n {`${property[1].split(\":\")[1]}`}\r\n {property[1].split(\":\")[2] && (\r\n \r\n
\r\n {`${property[1].split(\":\")[2]}`}\r\n
\r\n )}\r\n {property[1].split(\":\")[3] && (\r\n \r\n
\r\n {`${property[1].split(\":\")[3]}`}\r\n
\r\n )}\r\n {property[1].split(\":\")[4] && (\r\n \r\n
\r\n {`${property[1].split(\":\")[4]}`}\r\n
\r\n )}\r\n

\r\n }\r\n />\r\n \r\n );\r\n } else if (property[0] === \"name\") {\r\n if (property[0].includes(\"notUsed\")) {\r\n return;\r\n }\r\n return property[1].includes(\":\") ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n );\r\n } else {\r\n if (property[1].includes(\"notUsed\")) {\r\n return;\r\n }\r\n return property[1].includes(\":\") ? (\r\n \r\n \r\n {`${property[1].split(\":\")[1]}`}\r\n {property[1].split(\":\")[2] && (\r\n \r\n
\r\n {`${property[1].split(\":\")[2]}`}\r\n
\r\n )}\r\n

\r\n } //wiredButton values\r\n />\r\n
\r\n ) : (\r\n \r\n \r\n \r\n );\r\n }\r\n })}\r\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 SensorDataComponent;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n detectorActions: {\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n width: \"100%\",\r\n paddingBottom: theme.spacing(10),\r\n paddingTop: theme.spacing(2),\r\n },\r\n infoItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 24px\",\r\n },\r\n infoItemCursorDefault: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 24px\",\r\n cursor: \"default\",\r\n \"&.MuiListItem-button:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n list: {\r\n width: \"100%\",\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n \"& button\": {\r\n width: \"352px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n marginTop: theme.spacing(5),\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n },\r\n closeIcon: {\r\n paddingBottom: \"18px\",\r\n alignSelf: \"flex-end\",\r\n cursor: \"default\",\r\n },\r\n spaceBetween: {\r\n marginBottom: \"31px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","export const rawDetectorJsonSource =\r\n\"[\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"e5ecc01e-abc1-40fd-a3ac-71ff759b9df9\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-600021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"139398af-887c-4564-aba0-ad9cf4f3829f\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-600121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"66794d39-7c7d-4694-a9b4-fc653cf98cb1\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-601021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"e7cfce75-31a7-4c55-8bce-f3ac86c0453f\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-601121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"0bb6b805-a230-4173-abcd-4751edcbd08d\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-601221\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"twoChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"b380e2c6-cf23-45d6-b9f8-bc4c56ea9799\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-602021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"c71796bd-b6e6-424a-b3f4-0963f6ff0302\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-602121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"57fbb2be-e960-4b2d-9197-d492aa1333e5\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-602221\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"twoChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"5e44da87-94d3-429f-bb8b-5c323ea66af5\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-650021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"4e13c2bb-d6a3-45a8-ba1a-51b16290ebba\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-650321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"5fd371f5-f6a6-463a-8694-d6bc53e94f6c\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-651021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"b5c42413-a1c3-4f41-a7a3-a2ace3a6df5b\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-651321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"059b7201-da9f-4a16-8781-b4b42c2ebff2\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-651421\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"daliComfort\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P48MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"990f311c-8c6f-466f-ae10-825ecbb71608\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-652021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"d803e945-05c6-4d2a-b14d-02c085b55892\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-652321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"2ce22ed7-1217-4197-aaa6-ad522e7d0221\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-652421\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"daliComfort\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P48MR\\\",\\n\" +\r\n \" \\\"Range\\\": 14,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"a0e4055b-dbe1-40ab-a2f1-caadcc45d107\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-700021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"4394eb8e-7092-47d9-979c-33ada900672c\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-700121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"ef43a417-68dc-4f74-a657-4d97d8a1b032\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-701021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"555cca43-8758-43fa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-701121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"bf02c1c2-0a75-4d55-85c3-8ccc7819fdbc\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-701221\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"twoChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"fe506fad-464c-41e3-8ce3-c3251db94718\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-702021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P41LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"ebbd8bd5-199c-499b-b15a-220def33380a\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-702121\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"87c2b99f-a072-4a38-8a2e-e69c87b13c9b\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-702221\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"twoChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P42LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"d2e8e883-e07e-4fe7-959d-1a1e6cb41929\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-750021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"87818cdd-64aa-4040-aec3-4a68753c3d7a\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-750321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"a929284c-e1ab-4873-bfd2-f062154010a3\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-751021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"43c3fbcf-3d58-477a-be70-c970dc3e5486\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-751321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"d73d381c-ba55-4ec0-98b2-13a7ac5cec35\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-751421\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"daliComfort\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P48LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"83ccc5be-9053-46b8-a6a7-651944a6caaf\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-752021\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P46LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"326ce55e-dcbc-408c-886c-a8cb019d80de\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-752321\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"standard\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P47LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"49d91a4b-a6f6-44f6-afc9-ff8fb6863133\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-752421\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"daliComfort\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"P48LR\\\",\\n\" +\r\n \" \\\"Range\\\": 32,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"3c18262c-1d32-4f13-a251-5bf7fb1fd32f\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-802011\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeSlave\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"M41HC\\\",\\n\" +\r\n \" \\\"Range\\\": 40,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"173d4496-a4f4-4026-9caf-f23a395d7624\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-802111\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"M42HC\\\",\\n\" +\r\n \" \\\"Range\\\": 40,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"7250b615-a237-459e-b0af-bf4c0baf4719\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-852011\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"M46HC\\\",\\n\" +\r\n \" \\\"Range\\\": 40,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \" {\\n\" +\r\n \" \\\"Id\\\": \\\"5eae4a84-5c7d-41b7-bb5c-a6850fb7af46\\\",\\n\" +\r\n \" \\\"Name\\\": \\\"353-852411\\\",\\n\" +\r\n \" \\\"DetectorFamily\\\": \\\"dali2Detector\\\",\\n\" +\r\n \" \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n \" \\\"DetectorOutputInfo\\\": \\\"daliComfort\\\",\\n\" +\r\n \" \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n \" \\\"DetectorShortDescription\\\": \\\"M48HC\\\",\\n\" +\r\n \" \\\"Range\\\": 40,\\n\" +\r\n \" \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \" },\\n\" +\r\n \"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"171796bd-b6e6-424a-b3f4-0963f6ff0302\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-602111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42MR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 14,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n\t\"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"1bbd8bd5-199c-499b-b15a-220def33380a\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-702111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42LR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 32,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n\t\"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"239398af-887c-4564-aba0-ad9cf4f3829f\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-600111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42MR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 14,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n\t\"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"17cfce75-31a7-4c55-8bce-f3ac86c0453f\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-601111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42MR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 14,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n\t\"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"1394eb8e-7092-47d9-979c-33ada900672c\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-700111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42LR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 32,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n\t\"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"155cca43-8758-43fa-a753-f98fdd35f1bf\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-701111\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"230VDectector\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeMaster\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"M42LR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 32,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"flushMounting\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n \"\t{\\n\" +\r\n\t\"\t \\\"Id\\\": \\\"155cca43-8758-11aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n\t\"\t \\\"Name\\\": \\\"353-652521\\\",\\n\" +\r\n\t\"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n\t\"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n\t\"\t \\\"DetectorOutputInfo\\\": \\\"oneChannel\\\",\\n\" +\r\n\t\"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n\t\"\t \\\"DetectorShortDescription\\\": \\\"P49MR\\\",\\n\" +\r\n\t\"\t \\\"Range\\\": 13,\\n\" +\r\n\t\"\t \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n\t\"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-21aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-750521\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"P49LR\\\",\\n\" +\r\n \"\t \\\"Range\\\": 37,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-31aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-751521\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"P49LR\\\",\\n\" +\r\n \"\t \\\"Range\\\": 37,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-41aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-651521\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"P49MR\\\",\\n\" +\r\n \"\t \\\"Range\\\": 13,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-43aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-650521\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"P49MR\\\",\\n\" +\r\n \"\t \\\"Range\\\": 13,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"flushMountingBox\\\"\\n\" +\r\n \"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-51aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-752521\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"presenceDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"P49LR\\\",\\n\" +\r\n \"\t \\\"Range\\\": 37,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \"\t},\\n\" +\r\n \"\t{\\n\" +\r\n \"\t \\\"Id\\\": \\\"155cca43-8758-61aa-a753-f98fdd35f1bf\\\",\\n\" +\r\n \"\t \\\"Name\\\": \\\"353-852511\\\",\\n\" +\r\n \"\t \\\"DetectorFamily\\\": \\\"dali2DetectorBMS\\\",\\n\" +\r\n \"\t \\\"DetectorType\\\": \\\"detectorTypeDaliBMS\\\",\\n\" +\r\n \"\t \\\"DetectorOutputInfo\\\": \\\"\\\",\\n\" +\r\n \"\t \\\"DetectorDescription\\\": \\\"motionDectector360\\\",\\n\" +\r\n \"\t \\\"DetectorShortDescription\\\": \\\"M49HC\\\",\\n\" +\r\n \"\t \\\"Range\\\": 53,\\n\" +\r\n \"\t \\\"DetectorMountDescription\\\": \\\"surfaceMounting\\\"\\n\" +\r\n \"\t}\\n\" +\r\n\"]\";\r\n","import { IBleSensorInformation } from \"../../models/BleSensorInformation\";\r\nimport { ITemplateModel, INikoLibraryModel } from \"../../models/TemplatesModel\";\r\nimport { IReceivedTemplateModel } from \"../../models/TemplatesModel\";\r\nimport {rawDetectorJsonSource} from \"./RawDetectorJsonSource\";\r\n\r\nexport interface ITemplateResponseModel {\r\n id: string;\r\n favoriteName: string;\r\n pinCode: string;\r\n updatedAt: string;\r\n uploadedAt: string;\r\n bleSensorInformationId: string;\r\n sensorInformation: IBleSensorInformation;\r\n userConfigModel: string;\r\n sensorProfile: string;\r\n zones: string;\r\n settingType: string;\r\n\r\n macAddress?: string;\r\n daliBusDevices?: string,\r\n controlGearDeviceCount?: number,\r\n inputDeviceCount?: number,\r\n hvacShortAddressExternalRelay?: number;\r\n cutOffShortAddressExternalRelay?: number;\r\n wiredPushButtonModel?: string;\r\n blePushButtonModel?: string;\r\n daliPushButtonModel?: string;\r\n getSetTunableWhiteListModelReply?: string;\r\n getSetTunableWhitePresetModelReply?: string;\r\n daliDeviceDataScenesModelReplies?: any[];\r\n getSetWirelessLinkFunctionModelReply: string;\r\n}\r\n\r\nexport interface IReceivedTemplateResponseModel {\r\n id: string;\r\n name: string;\r\n receivedOn: string;\r\n receivedFrom: string;\r\n bleSensorInformationId: string;\r\n sensorInformation: IBleSensorInformation;\r\n userConfigModel: string;\r\n sensorProfile: string;\r\n zones: string;\r\n settingType: string;\r\n uploadedAt: number;\r\n\r\n\r\n macAddress?: string;\r\n daliBusDevices?: string,\r\n controlGearDeviceCount?: number,\r\n inputDeviceCount?: number,\r\n hvacShortAddressExternalRelay?: number;\r\n cutOffShortAddressExternalRelay?: number;\r\n wiredPushButtonModel?: string;\r\n blePushButtonModel?: string;\r\n daliPushButtonModel?: string;\r\n getSetTunableWhiteListModelReply?: string;\r\n getSetTunableWhitePresetModelReply?: string;\r\n daliDeviceDataScenesModelReplies?: any[];\r\n getSetWirelessLinkFunctionModelReply: string;\r\n}\r\n\r\nexport interface INikoLibraryResponseModel {\r\n id: string;\r\n favoriteName: string;\r\n updatedAt: string;\r\n uploadedAt: string;\r\n sensorInformation: IBleSensorInformation;\r\n userConfigModel: string;\r\n sensorProfile: string;\r\n zones: string;\r\n}\r\n\r\nconst newMotionDetectors = [\"353-700111\",\"353-600111\",\"353-602111\",\"353-702111\",\"353-601111\",\"353-701111\"];\r\n\r\nconst isStringNullOrEmpty = (str: any): Boolean => {\r\n if (typeof str !== 'undefined' && str) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n\r\nexport const getDetectorTypeFormattedForFilterMenu = (data: any, translation: any): string => {\r\n let sensorInfo = data?.sensorInformation;\r\n\r\n let shortDescription = !isStringNullOrEmpty(sensorInfo?.detectorShortDescription) ? sensorInfo?.detectorShortDescription : \"short-description\";\r\n\r\n let detectorType = !isStringNullOrEmpty(sensorInfo?.detectorType) ? translation(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorType}`) : \"\";\r\n if (sensorInfo.detectorType === \"detectorTypeDaliBMS\") {\r\n detectorType = translation(`translation:BLE_SENSOR_INFORMATION.detectorTypeSlave`);\r\n }\r\n if (detectorType.indexOf(\"-\") !== -1) {\r\n detectorType = detectorType.substr(0, detectorType.indexOf(\"-\"));\r\n }\r\n let detectorTypeWords = detectorType.split(/[ ]+/);\r\n detectorType = detectorTypeWords[0];\r\n\r\n let res;\r\n if (sensorInfo?.detectorOutputInfo === \"twoChannel\") {\r\n res = shortDescription + \", \" + translation(`translation:BLE_SENSOR_INFORMATION.twoChannelExtended`).toLowerCase() + \", \" + detectorType.toLowerCase();\r\n } else {\r\n res = shortDescription + \", \" + detectorType.toLowerCase();\r\n }\r\n\r\n return res;\r\n}\r\n\r\nexport const getDetectorTypeFormatted = (data: any, translation: any): string => {\r\n\r\n let sensorInfo = data?.sensorInformation;\r\n\r\n let detectorFamily = !isStringNullOrEmpty(sensorInfo?.detectorFamily) ? translation(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorFamily}`).toLowerCase() : \"\";\r\n let detectorOutputInfo = !isStringNullOrEmpty(sensorInfo?.detectorOutputInfo) ? translation(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorOutputInfo}`).toLowerCase() : \"\";\r\n let detectorType = !isStringNullOrEmpty(sensorInfo?.detectorType) ? translation(`translation:BLE_SENSOR_INFORMATION.${sensorInfo.detectorType}`).toLowerCase() : \"\";\r\n\r\n let res = \"\";\r\n\r\n if (!isStringNullOrEmpty(sensorInfo?.detectorShortDescription))\r\n {\r\n res += sensorInfo?.detectorShortDescription;\r\n }\r\n\r\n if (!isStringNullOrEmpty(detectorFamily))\r\n {\r\n res += \", \" + detectorFamily.toLowerCase();\r\n }\r\n\r\n if (sensorInfo?.detectorFamily == '230VDectector' && sensorInfo?.detectorType == 'detectorTypeMaster' && !isStringNullOrEmpty(detectorOutputInfo))\r\n {\r\n res += \", \" + detectorOutputInfo.toLowerCase();\r\n }\r\n\r\n if (!isStringNullOrEmpty(detectorType))\r\n {\r\n if (!newMotionDetectors.includes(sensorInfo?.name)){\r\n res += \", \" + detectorType.toLowerCase();\r\n }\r\n }\r\n\r\n\r\n return res;\r\n};\r\n\r\nconst detecorsJsonOb = JSON.parse(rawDetectorJsonSource);\r\n\r\nconst getFilterDataFormattedForDetector = (detector: any, translation: any): any => {\r\n\r\n let detectorCategory: string;\r\n if (detector?.DetectorFamily.includes(\"230V\")) {\r\n detectorCategory = \"230V\";\r\n } else {\r\n detectorCategory = \"dali\";\r\n }\r\n\r\n let inputForGetDetectorTypeFormatted = {\r\n sensorInformation: {\r\n detectorFamily: detector?.DetectorFamily,\r\n detectorOutputInfo: detector?.DetectorOutputInfo,\r\n detectorType: detector?.DetectorType,\r\n detectorShortDescription: detector?.DetectorShortDescription\r\n }\r\n };\r\n\r\n let detectorTypeFormatted = getDetectorTypeFormattedForFilterMenu(inputForGetDetectorTypeFormatted, translation);\r\n\r\n\r\n return { type: detectorCategory, detectorType: detectorTypeFormatted, name: detector?.DetectorShortDescription };\r\n}\r\n\r\nexport const getAllDetectorsByType = (translation: any, type: string): any => {\r\n let res = [];\r\n for (let i = 0; i < detecorsJsonOb.length; ++i) {\r\n let detectorFormatted = getFilterDataFormattedForDetector(detecorsJsonOb[i], translation);\r\n if (detectorFormatted.type === type) {\r\n res.push(detectorFormatted);\r\n }\r\n }\r\n return res;\r\n}\r\n\r\nexport const mapFromTemplateResponseModelToITemplateModel = (\r\n data: ITemplateResponseModel\r\n): ITemplateModel => ({\r\n templateSensorId: data.id,\r\n templateName: data.favoriteName,\r\n detectorType: data.sensorInformation.detectorType,\r\n detectorFamily: data.sensorInformation.detectorFamily,\r\n lastUpload: data.updatedAt,\r\n uploadedAt: data.uploadedAt,\r\n pinCode: data.pinCode,\r\n bleSensorInformationId: data.sensorInformation.id,\r\n userConfigModel: data.userConfigModel,\r\n updatedAt: data.updatedAt,\r\n sensorInformation: data.sensorInformation,\r\n sensorProfile: data.sensorProfile,\r\n zones: data.zones,\r\n settingType: data.settingType,\r\n\r\n macAddress: data.macAddress,\r\n daliBusDevices: data.daliBusDevices,\r\n controlGearDeviceCount: data.controlGearDeviceCount,\r\n inputDeviceCount: data.inputDeviceCount,\r\n hvacShortAddressExternalRelay: data.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay: data.cutOffShortAddressExternalRelay,\r\n wiredPushButtonModel: data.wiredPushButtonModel,\r\n blePushButtonModel: data.blePushButtonModel,\r\n daliPushButtonModel: data.daliPushButtonModel,\r\n getSetTunableWhiteListModelReply: data.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply: data.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies: data.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply: data.getSetWirelessLinkFunctionModelReply\r\n});\r\n\r\nexport const mapReceivedTemplates = (\r\n data: IReceivedTemplateResponseModel\r\n): IReceivedTemplateModel => ({\r\n templateSensorId: data.id,\r\n templateName: data.name,\r\n detectorType: data.sensorInformation.detectorType,\r\n detectorFamily: data.sensorInformation.detectorFamily,\r\n receivedOn: data.receivedOn,\r\n receivedFrom: data.receivedFrom,\r\n bleSensorInformationId: data.bleSensorInformationId,\r\n sensorInformation: data.sensorInformation,\r\n userConfigModel: data.userConfigModel,\r\n sensorProfile: data.sensorProfile,\r\n zones: data.zones,\r\n settingType: data.settingType,\r\n uploadedAt: data.uploadedAt,\r\n\r\n\r\n macAddress: data.macAddress,\r\n daliBusDevices: data.daliBusDevices,\r\n controlGearDeviceCount: data.controlGearDeviceCount,\r\n inputDeviceCount: data.inputDeviceCount,\r\n hvacShortAddressExternalRelay: data.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay: data.cutOffShortAddressExternalRelay,\r\n wiredPushButtonModel: data.wiredPushButtonModel,\r\n blePushButtonModel: data.blePushButtonModel,\r\n daliPushButtonModel: data.daliPushButtonModel,\r\n getSetTunableWhiteListModelReply: data.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply: data.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies: data.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply: data.getSetWirelessLinkFunctionModelReply,\r\n});\r\n\r\nexport const mapNikoLibraryModel = (\r\n data: INikoLibraryResponseModel\r\n): INikoLibraryModel => ({\r\n templateName: data.favoriteName,\r\n detectorType: data.sensorInformation.detectorType,\r\n detectorFamily: data.sensorInformation.detectorFamily,\r\n updatedAt: data.updatedAt,\r\n uploadedAt: data.uploadedAt,\r\n sensorInformation: data.sensorInformation,\r\n userConfigModel: data.userConfigModel,\r\n sensorProfile: data.sensorProfile,\r\n zones: data.zones,\r\n});\r\n","import React, { useState } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Button,\r\n} from \"@material-ui/core\";\r\nimport { ISensorSetting } from \"../../../models/SensorSetting\";\r\nimport SensorDataComponent from \"../../../common/components/SensorDataComponent/SensorDataComponent\";\r\nimport useTypographyStyles from \"../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./ProjectDetails.style\";\r\nimport { getDetectorTypeFormatted } from \"../../../data-services/Templates/TemplateMapper\";\r\nimport { useAuth } from \"../../../context/context\";\r\n\r\ninterface ISettingDetails {\r\n setting: ISensorSetting;\r\n closeModal: () => void;\r\n openExportModal: () => void;\r\n}\r\n\r\nconst ProjectDetails: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const timeZone = moment.tz.guess();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { setting, closeModal, openExportModal } = props;\r\n\r\n const handleOpenExportModal = () => {\r\n closeModal();\r\n openExportModal();\r\n };\r\n //debugger;\r\n return (\r\n <>\r\n \r\n \"close\"\r\n \r\n \r\n \r\n {getDetectorTypeFormatted(setting, t)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:common.closeButton\")}\r\n \r\n \r\n {t(\"translation:common.export\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ProjectDetails;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport {\r\n commonParagraph,\r\n commonParagraph14px,\r\n commonParagraph12px,\r\n commonHeaderThree\r\n} from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n projectViewWrapper: {\r\n margin: \"0 auto\",\r\n maxWidth: \"1040px\",\r\n paddingTop: theme.spacing(5),\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n paddingLeft: 0,\r\n paddingRight: 0,\r\n },\r\n },\r\n headerWrapper: {\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n },\r\n heading: {\r\n fontSize: \"44px\",\r\n lineHeight: \"47px\",\r\n fontFamily: \"VistaSansReg\",\r\n color: colors.primaryColor,\r\n fontWeight: 700,\r\n marginBottom: theme.spacing(4),\r\n wordBreak: \"break-word\"\r\n },\r\n content: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n editName: {\r\n marginLeft: \"25px\",\r\n cursor: 'pointer',\r\n },\r\n inputLabel: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingBottom: \"8px\",\r\n \"& .MuiInputLabel-asterisk\": {\r\n color: \"red\",\r\n },\r\n },\r\n inputName: {\r\n minWidth: \"440px\",\r\n height: \"48px\",\r\n padding: \"1px 16px\",\r\n borderRadius: \"24px\",\r\n border: `1px ${colors.lightGreyColor}`,\r\n backgroundColor: colors.veryLightGreyColor,\r\n \"& input\": {\r\n fontSize: \"14px\",\r\n color: colors.primaryColor,\r\n fontFamily: \"humanistBD\",\r\n textAlign: \"center\",\r\n },\r\n cursor: \"default\",\r\n },\r\n actionsWrapper: {\r\n paddingTop: theme.spacing(4),\r\n paddingBottom: theme.spacing(4),\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n //maxWidth: \"650px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n justifyContent: \"space-around\",\r\n flexDirection: \"column\",\r\n display: \"flex\",\r\n },\r\n \"& button\": {\r\n marginRight: \"20px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n marginRight: \"10px\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"2px\",\r\n }\r\n },\r\n \"& div.searchBox\": {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n alignItems: \"center\",\r\n marginLeft: \"25px\",\r\n borderRadius: \"24px\",\r\n padding: \"0 24px\",\r\n width: \"380px\",\r\n backgroundColor: colors.secondaryColor,\r\n \"& button\": {\r\n marginRight: \"0\",\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n margin: \"20px 0\"\r\n },\r\n },\r\n },\r\n root: {\r\n \"& span\": {\r\n fontSize: \"14px\",\r\n fontFamily: \"humanistRM\",\r\n color: colors.primaryColor,\r\n cursor: \"pointer\",\r\n },\r\n \"& li:hover\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n },\r\n infoItem: {\r\n maxWidth: \"1040px\",\r\n borderBottom: `0px solid ${colors.primaryColor}`,\r\n padding: \"7px 0\",\r\n \"& img\": {\r\n left: 0,\r\n paddingLeft: \"56px\",\r\n position: \"relative\",\r\n },\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n nestedInfo: {\r\n paddingLeft: theme.spacing(5.8),\r\n fontFamily: \"humanistBD\",\r\n fontSize: \"14px\",\r\n },\r\n listItemText: {\r\n flex: \"none\",\r\n width: \"27%\",\r\n \"& span\": {\r\n ...commonParagraph14px,\r\n fontWeight: 700,\r\n cursor: 'pointer',\r\n },\r\n cursor: 'pointer'\r\n },\r\n titleHeader: {\r\n \"& span\": {\r\n ...commonParagraph14px,\r\n fontWeight: 700,\r\n },\r\n },\r\n iconAlign: {\r\n marginRight: \"18px\",\r\n },\r\n checkAlign: {\r\n marginRight: \"37px\",\r\n },\r\n alignContent: {\r\n width: \"90%\",\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n cursor: 'pointer'\r\n },\r\n cursorPointer: {\r\n cursor: \"pointer\",\r\n },\r\n listContent: {\r\n flex: \"none\",\r\n width: \"28%\",\r\n position: \"relative\",\r\n \"& span\": {\r\n ...commonParagraph14px,\r\n position: \"absolute\",\r\n top: \"50%\",\r\n height: \"16px\",\r\n marginTop: \"-8px\",\r\n paddingRight: \"40px\",\r\n },\r\n cursor: 'pointer',\r\n wordBreak: \"break-word\",\r\n },\r\n typo: {\r\n ...commonParagraph14px,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n \"& button\": {\r\n marginTop: \"32px\",\r\n width: \"100%\",\r\n height: \"48px\",\r\n },\r\n width: \"364px\",\r\n justifyContent: \"space-around\",\r\n },\r\n verticalInputSpacing: {\r\n paddingLeft: \"8px\",\r\n borderLeft: `4px solid transparent`,\r\n marginLeft: `-12px`,\r\n },\r\n errorBorder: {\r\n borderLeft: `4px solid ${colors.errorRedColor}`,\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n modalCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"402px\",\r\n padding: \"104px 32px 0\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalDeleteCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"402px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n }\r\n },\r\n projectDetails: {\r\n cursor: \"default\",\r\n \"& span\":{\r\n fontWeight: \"bold\",\r\n paddingRight: \"10px\",\r\n },\r\n ...commonParagraph14px,\r\n },\r\n projectDetailsFW: {\r\n cursor: \"default\",\r\n flexDirection: \"column\",\r\n flexBasis: \"210px\",\r\n padding: \"0\",\r\n \"& p\": {\r\n fontFamily: \"humanistRM\",\r\n fontSize: \"14px\",\r\n },\r\n \"& span\":{\r\n fontSize: \"14px\",\r\n fontWeight: \"bold\",\r\n },\r\n },\r\n projectDetailsTable: {\r\n width:\"100%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n overflowX:\"scroll\",\r\n cursor: 'pointer',\r\n \r\n }\r\n },\r\n projectDetailsContainer: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"536px\",\r\n flexWrap: \"nowrap\",\r\n maxHeight: \"700px\",\r\n overflowY: \"auto\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n // mixBlendMode: \"multiply\",\r\n alignItems: \"center\",\r\n padding: \"35px 40px 60px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n height: \"100%\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n Button,\r\n Checkbox,\r\n Collapse,\r\n Input,\r\n List,\r\n ListItem,\r\n ListItemIcon,\r\n ListItemText,\r\n Modal,\r\n Typography,\r\n InputLabel,\r\n InputBase,\r\n IconButton,\r\n} from \"@material-ui/core\";\r\nimport Export from \"../../common/components/Actions/Export\";\r\nimport ExportModal from \"../../common/components/ExportModal\";\r\nimport Delete from \"../../common/components/Actions/Delete\";\r\nimport CheckAll from \"../../common/components/Actions/CheckAll\";\r\nimport {\r\n getProjectById,\r\n updateProject,\r\n} from \"../../data-services/Projects/ProjectsService\";\r\nimport { IProject } from \"../../models/Project\";\r\nimport { ISensorSetting } from \"../../models/SensorSetting\";\r\nimport ChevronUp from \"../../common/components/ChevronUp\";\r\nimport ChevronDown from \"../../common/components/ChevronDown\";\r\nimport CheckedBoldBox from \"../../common/components/CheckedBoldBox\";\r\nimport UncheckedboxSVG from \"../../common/components/UncheckedBox\";\r\nimport Pencil from \"../../common/components/Pencil\";\r\nimport SaveChanges from \"./Components/SaveChanges\";\r\nimport { exportDetectorsPDF } from \"../../common/components/Export/ExportPDF\";\r\nimport DeleteModal from \"../../common/components/DeleteModal\";\r\nimport { removeSensorSettings } from \"../../data-services/common/SensorSettingsService\";\r\nimport { exportDetectorsExcel } from \"../../common/components/Export/ExportExcel\";\r\nimport { GetProjectDetails } from \"../../common/components/SensorData/GetProjectDetails\";\r\nimport ProjectDetails from \"./Components/ProjectDetails\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useTypoClasses from \"../../common/styles/typography\";\r\nimport useStyles from \"./Project.style\";\r\nimport { getDetectorTypeFormatted } from \"../../data-services/Templates/TemplateMapper\";\r\nimport useNothingIsSelectedModalStyles from \"../../common/styles/nothingIsSelectedModalGeneralStyle\";\r\nimport NothingSelectedModal from \"../../common/components/NothingSelectedModal\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport { getEnvFile } from \"env-cmd/dist/get-env-vars\";\r\nimport { useInterval } from \"../../context/interval\";\r\n\r\nconst Project: React.FC = () => {\r\n const classes = useStyles();\r\n const nothingIsSelectedModalStyles = useNothingIsSelectedModalStyles();\r\n const buttonClasses = useButtonStyles();\r\n const typoClasses = useTypoClasses();\r\n const { t } = useTranslation([\"translation\"]);\r\n const authStore = useAuth();\r\n const [currentLanguageCode, setCurrentLanguageCode] = useState(\r\n authStore?.getCurrentLanguageCode()\r\n );\r\n const [selectedSettings, setSelectedSettings] = useState([]);\r\n const [project, setProject] = useState();\r\n const [setting, setSetting] = useState(undefined);\r\n const [newProjectName, setNewProjectName] = useState(\"\");\r\n const [openDali2, setOpenDali2] = useState(true);\r\n const [open230V, setOpen230V] = useState(true);\r\n const [openDetailsModal, setOpenDetailsModal] = useState(false);\r\n const [openEditModal, setOpenEditModal] = useState(false);\r\n const [isProjectSaved, setIsProjectSaved] = useState(true);\r\n\r\n \r\n let { id } = useParams();\r\n\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const [\r\n openExportNothingIsSelectedModal,\r\n setOpenExportNothingIsSelectedModal,\r\n ] = useState(false);\r\n const [openDeleteModal, setOpenDeleteModal] = useState(false);\r\n const [\r\n openDeleteNothingIsSelectedModal,\r\n setOpenDeleteNothingIsSelectedModal,\r\n ] = useState(false);\r\n\r\n const [filterKey, setFilterKey] = useState(\"\");\r\n\r\n const contactDetails =\r\n t(\"translation:SensorData.export.contactDetails\") +\r\n \" \" +\r\n authStore?.userHistory?.firstName +\r\n \", \" +\r\n authStore?.userHistory?.lastName +\r\n \", \" +\r\n authStore?.userHistory?.email;\r\n\r\n const handleOpenExportModal = () => {\r\n if (selectedSettings.length > 0 || setting) {\r\n setOpenExportModal(true);\r\n } else {\r\n setOpenExportNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n setOpenExportModal(false);\r\n setOpenExportNothingIsSelectedModal(false);\r\n\r\n setSetting(undefined);\r\n };\r\n\r\n const handleOpenDeleteModal = () => {\r\n if (selectedSettings.length > 0) {\r\n setOpenDeleteModal(true);\r\n } else {\r\n setOpenDeleteNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseDeleteModal = () => {\r\n setOpenDeleteModal(false);\r\n setOpenDeleteNothingIsSelectedModal(false);\r\n };\r\n\r\n const handleCloseEditModal = () => {\r\n setOpenEditModal(false);\r\n };\r\n\r\n const [openSaveModal, setOpenSaveModal] = useState(false);\r\n\r\n const handleOpenSaveModal = () => {\r\n if (newProjectName.length > 0) {\r\n setOpenSaveModal(true);\r\n }\r\n };\r\n\r\n const handleCloseSaveModal = () => {\r\n setOpenSaveModal(false);\r\n };\r\n\r\n const handleCancelSaveModal = () => {\r\n setOpenSaveModal(false);\r\n if (project) {\r\n setNewProjectName(\"\");\r\n }\r\n };\r\n\r\n const handleExpandDali2 = () => {\r\n setOpenDali2(!openDali2);\r\n };\r\n\r\n const handleExpand230V = () => {\r\n setOpen230V(!open230V);\r\n };\r\n\r\n const handleCloseDetailsModal = (singleExport = false) => {\r\n setOpenDetailsModal(false);\r\n if (!singleExport) {\r\n setSetting(undefined);\r\n }\r\n };\r\n\r\n const handleEditProject = () => {\r\n project &&\r\n editProject(project.id).then((response) => {\r\n if (response.status === \"success\") {\r\n handleCloseEditModal();\r\n setIsProjectSaved(true);\r\n } else {\r\n setIsProjectSaved(false);\r\n }\r\n });\r\n };\r\n\r\n const handleExportProjectPDF = () => {\r\n try {\r\n if (project !== undefined) {\r\n const selectedDetectorsExport = project.sensorSettings.filter(\r\n (detector) => selectedSettings.includes(detector.id)\r\n );\r\n if (setting) {\r\n exportDetectorsPDF([setting], true, contactDetails, project.name);\r\n } else {\r\n exportDetectorsPDF(\r\n selectedDetectorsExport,\r\n true,\r\n contactDetails,\r\n project.name\r\n );\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const handleExportProjectExcel = () => {\r\n try {\r\n if (project !== undefined) {\r\n const selectedDetectorsExport = project.sensorSettings.filter(\r\n (detector) => selectedSettings.includes(detector.id)\r\n );\r\n if (setting) {\r\n exportDetectorsExcel([setting], true, project.name);\r\n } else {\r\n exportDetectorsExcel(selectedDetectorsExport, true, project.name);\r\n }\r\n }\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const handleCheck = (\r\n event: React.ChangeEvent,\r\n setting: ISensorSetting\r\n ) => {\r\n if (event.target.checked) {\r\n setSelectedSettings(selectedSettings.concat(setting.id));\r\n } else {\r\n setSelectedSettings(selectedSettings.filter((id) => id !== setting.id));\r\n }\r\n };\r\n\r\n const fetchProject = async () => {\r\n if (id) {\r\n const { data } = await getProjectById(\r\n id,\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n\r\n setProject({ ...data });\r\n }\r\n };\r\n\r\n const filterProjects = (newFilter?: string) => {\r\n\r\n const key = newFilter?.toUpperCase() || filterKey.toUpperCase();\r\n\r\n //console.log(project?.sensorSettings)\r\n const newSettings = project?.sensorSettings.map((setting) =>\r\n getDetectorTypeFormatted(setting, t).toUpperCase().includes(key) ||\r\n setting.sensorInformation.detectorFamily.toUpperCase().includes(key) ||\r\n setting.sensorInformation.detectorType.toUpperCase().includes(key) ||\r\n (setting.customName && setting.customName.toUpperCase().includes(key)) ||\r\n setting.sensorInformation.detectorType.includes(key) || newFilter == ''\r\n ? { ...setting, isVisible: true }\r\n : { ...setting, isVisible: false }\r\n );\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n // @ts-ignore\r\n setProject({ ...project, sensorSettings: newSettings });\r\n\r\n if (newFilter !== undefined) {\r\n setFilterKey(newFilter);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchProject();\r\n }, []);\r\n\r\n\r\n useInterval(() => {\r\n if (currentLanguageCode !== authStore?.getCurrentLanguageCode()) {\r\n setCurrentLanguageCode(authStore?.getCurrentLanguageCode());\r\n filterProjects();\r\n }\r\n }, 300);\r\n\r\n const filterSensors = (c: ISensorSetting, type: string) =>\r\n c.sensorInformation.detectorFamily.toLowerCase().includes(type);\r\n\r\n const editProject = async (id: string): Promise<{ status: string }> => {\r\n const { status } = await updateProject(\r\n { id, name: newProjectName },\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n if (status === \"success\") {\r\n fetchProject();\r\n return { status };\r\n }\r\n return { status: \"error\" };\r\n };\r\n\r\n const deleteSettings = async (sensorSettingIds: string[]): Promise => {\r\n try {\r\n const { status } = await removeSensorSettings(sensorSettingIds);\r\n if (status === \"success\") {\r\n fetchProject();\r\n }\r\n } catch (error) {\r\n return \"error\";\r\n }\r\n };\r\n\r\n const handleClickSettings = (setting: ISensorSetting) => {\r\n setOpenDetailsModal(true);\r\n setSetting(setting);\r\n };\r\n\r\n const cutUnwanted = (str: string) => {\r\n const searchStr = \"BLE\";\r\n const index = str.indexOf(searchStr);\r\n\r\n if (index !== -1) {\r\n return str.slice(0, index + searchStr.length - 3);\r\n }\r\n return str.replace(/\\x00$/, \"\");\r\n };\r\n const decodeVersion = (version: string): string => {\r\n try {\r\n const decoded = JSON.parse(version);\r\n return cutUnwanted(atob(decoded.SoftwareVersions));\r\n } catch (e) {\r\n console.log(e);\r\n return \"unknown\";\r\n }\r\n };\r\n\r\n const ListFWItem = ({ type, version }: any) => {\r\n return (\r\n \r\n {type}: \r\n {version}\r\n \r\n );\r\n };\r\n\r\n const ListFWGroup = ({ detector }: any) => {\r\n const { sensorSwVersionModel, sensorActorVersionModel } = detector;\r\n\r\n return (\r\n handleClickSettings(detector)}\r\n >\r\n \r\n {sensorActorVersionModel && (\r\n \r\n )}\r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {openExportModal && (\r\n \r\n )}\r\n {openExportNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {openDeleteModal && (\r\n {\r\n deleteSettings(selectedSettings);\r\n handleCloseDeleteModal();\r\n }}\r\n closeModal={handleCloseDeleteModal}\r\n />\r\n )}\r\n {openDeleteNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n project && editProject(project.id)}\r\n closeModal={handleCloseSaveModal}\r\n />\r\n \r\n \r\n handleCloseDetailsModal()}>\r\n \r\n {setting !== undefined && (\r\n handleCloseDetailsModal(true)}\r\n openExportModal={handleOpenExportModal}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:Projects_View.renameProject\")}\r\n \r\n \r\n \r\n {t(\"translation:common.modals.projectName\")}\r\n \r\n {\r\n setNewProjectName(e.target.value);\r\n }}\r\n disableUnderline={true}\r\n className={classes.inputName}\r\n />\r\n \r\n \r\n {\r\n setNewProjectName(\"\");\r\n handleCloseEditModal();\r\n }}\r\n >\r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n {t(\"translation:common.saveChanges\")}\r\n \r\n {!isProjectSaved && (\r\n \r\n {t(\"translation:common.modals.usedProjectName\")}\r\n \r\n )}\r\n \r\n \r\n \r\n {project && (\r\n \r\n \r\n
\r\n \r\n {`${t(\"translation:Projects_View.projectsName\")} ${\r\n project.name\r\n }`}\r\n \r\n {\r\n setOpenEditModal(true);\r\n setIsProjectSaved(true);\r\n }}\r\n >\r\n \r\n \r\n
\r\n \r\n {t(\"translation:Projects_View.aboutPage\")}\r\n \r\n
\r\n \r\n
\r\n sensor.id\r\n )}\r\n selectedItemIds={selectedSettings}\r\n setSelectedItemsIds={setSelectedSettings}\r\n />\r\n \r\n \r\n
\r\n
\r\n filterProjects(e.target.value)}\r\n className={typoClasses.paragraphPrimary}\r\n onKeyDown={(e) => e.key === \"Enter\" && filterProjects()}\r\n />\r\n filterProjects()}\r\n //className={classes.iconButton}\r\n aria-label=\"search\"\r\n >\r\n \"search\"\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {openDali2 ? : }\r\n \r\n
\r\n \r\n filterSensors(c, \"dali\")\r\n ).length\r\n }]`}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n {project.sensorSettings\r\n .filter((c) => filterSensors(c, \"dali\"))\r\n .filter((c) => !(\"isVisible\" in c) || c.isVisible === true)\r\n .map((setting, index) => {\r\n let sensorInfo = setting.sensorInformation;\r\n return (\r\n \r\n \r\n \r\n id === setting.id\r\n )}\r\n onChange={(event) => handleCheck(event, setting)}\r\n checkedIcon={}\r\n inputProps={{ \"aria-label\": \"checkbox\" }}\r\n icon={}\r\n disableRipple\r\n />\r\n \r\n
\r\n handleClickSettings(setting)}\r\n primary={getDetectorTypeFormatted(setting, t)}\r\n />\r\n handleClickSettings(setting)}\r\n primary={setting.customName || \"-\"}\r\n />\r\n handleClickSettings(setting)}\r\n primary={GetProjectDetails(setting)}\r\n />\r\n \r\n
\r\n
\r\n \r\n );\r\n })}\r\n\r\n \r\n \r\n {open230V ? : }\r\n \r\n
\r\n \r\n filterSensors(c, \"230\")\r\n ).length\r\n }]`}\r\n />\r\n \r\n \r\n \r\n
\r\n \r\n {project.sensorSettings\r\n .filter((c) => filterSensors(c, \"230\"))\r\n .filter((c) => !(\"isVisible\" in c) || c.isVisible === true)\r\n .map((setting, index) => {\r\n let sensorInfo = setting.sensorInformation;\r\n return (\r\n \r\n \r\n \r\n id === setting.id\r\n )}\r\n onChange={(event) => handleCheck(event, setting)}\r\n checkedIcon={}\r\n inputProps={{ \"aria-label\": \"checkbox\" }}\r\n icon={}\r\n disableRipple\r\n />\r\n \r\n
\r\n handleClickSettings(setting)}\r\n primary={getDetectorTypeFormatted(setting, t)}\r\n />\r\n handleClickSettings(setting)}\r\n primary={setting.customName || \"-\"}\r\n />\r\n handleClickSettings(setting)}\r\n primary={GetProjectDetails(setting)}\r\n />\r\n \r\n
\r\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 Project;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../common/styles/typography\";\r\nimport { CSSProperties } from \"react\";\r\n\r\nconst commonContent: CSSProperties = {\r\n ...commonParagraph,\r\n color: colors.darkerGreyColor,\r\n};\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n inputName: {\r\n backgroundColor: colors.veryLightGreyColor,\r\n borderRadius: \"24px\",\r\n padding: \"10px 56px 9px 24px\",\r\n fontSize: \"14px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n lineHeight: \"16px\",\r\n color: colors.primaryColor,\r\n },\r\n wrapperButton: {\r\n width: \"352px\",\r\n margin: \"0 auto\",\r\n paddingBottom: theme.spacing(4),\r\n },\r\n label: {\r\n ...commonContent,\r\n paddingBottom: \"10px\",\r\n },\r\n paragraph: {\r\n ...commonContent,\r\n marginBottom: theme.spacing(5),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Input, InputLabel, Button } from \"@material-ui/core\";\r\nimport useStyles from \"./AddTemplate.style\";\r\nimport useTypographyStyles from \"../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\n\r\ninterface IAddTemplate {\r\n favoriteName: string;\r\n closeModal: () => void;\r\n setFavoriteName: (name: string) => void;\r\n saveTemplate: () => void;\r\n}\r\n\r\nconst AddTemplate: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { closeModal, favoriteName, setFavoriteName, saveTemplate } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:Detectors_search.addFavorite.title\")}\r\n \r\n \r\n {t(\"translation:Detectors_search.addFavorite.content\")}\r\n \r\n \r\n\r\n \r\n \r\n {t(\"translation:Detectors_search.addFavorite.inputLabel\")}\r\n \r\n setFavoriteName(e.target.value)}\r\n disableUnderline={true}\r\n placeholder={t(\"translation:Detectors_search.addFavorite.inputLabel\")}\r\n className={classes.inputName}\r\n fullWidth={true}\r\n />\r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:Detectors_search.addFavorite.addButton\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddTemplate;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport {\r\n paragraph14pxHumanist,\r\n} from \"../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n detectorActions: {\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n width: \"100%\",\r\n paddingBottom: theme.spacing(10),\r\n paddingTop: theme.spacing(2),\r\n },\r\n infoItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 24px\",\r\n cursor: \"default\",\r\n \"&.MuiListItem-button:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n list: {\r\n width: \"100%\",\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n \"& button\": {\r\n width: \"352px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n marginTop: theme.spacing(5),\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n primaryStyle: {\r\n display: \"inline-block\",\r\n ...paragraph14pxHumanist,\r\n color: colors.primaryColor,\r\n },\r\n secondaryStyle: {\r\n display: \"inline-block\",\r\n color: colors.primaryColor,\r\n ...paragraph14pxHumanist,\r\n },\r\n closeIcon: {\r\n paddingBottom: \"18px\",\r\n alignSelf: \"flex-end\",\r\n cursor: \"default\",\r\n },\r\n spaceBetween: {\r\n marginBottom: \"31px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Button,\r\n} from \"@material-ui/core\";\r\nimport { IDetectorModel } from \"../../../models/DetectorModel\";\r\nimport SensorDataComponent from \"../../../common/components/SensorDataComponent/SensorDataComponent\";\r\nimport useTypographyStyles from \"../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./DetectorDetails.style\";\r\nimport { getDetectorTypeFormatted } from \"../../../data-services/Templates/TemplateMapper\";\r\nimport { useAuth } from \"../../../context/context\";\r\n\r\ninterface IDetectorDetails {\r\n detector: IDetectorModel;\r\n closeModal: () => void;\r\n openExportModal: () => void;\r\n}\r\n\r\nconst DetectorDetails: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const timeZone = moment.tz.guess();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { openExportModal, closeModal, detector } = props;\r\n const authStore = useAuth();\r\n\r\n const handleOpenExportModal = () => {\r\n closeModal();\r\n openExportModal();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \"close\"\r\n \r\n \r\n \r\n {getDetectorTypeFormatted(detector, t)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:common.closeButton\")}\r\n \r\n \r\n {t(\"translation:common.export\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DetectorDetails;\r\n","import { IFavoriteDetector } from \"../../models/DetectorModel\";\r\nimport httpService from \"../HTTPService\";\r\nimport {\r\n IDetectorFavoriteResponse,\r\n IDetectorNameResponse,\r\n IDetectorsResponse,\r\n} from \"../../models/ResponseModel\";\r\nimport {\r\n mapFromDetectorResponseToIDetectorModel,\r\n IDetectorResponseModel,\r\n} from \"./DetectorMapper\";\r\nimport { AxiosResponse } from \"axios\";\r\nimport SettingsMocks from \"../../mocks/Settings.json\";\r\nimport { IDetectorNameModel } from \"../../models/TemplatesModel\";\r\n\r\nconst baseUrl = \"Detector\";\r\n\r\nexport const getDetectorByMacAddress = async (\r\n macAddress: string\r\n): Promise => {\r\n try {\r\n const url = baseUrl + `/getByMacAddress/${macAddress}`;\r\n const { data, status } = await httpService.sendMessage(\"get\", url);\r\n\r\n const mock = SettingsMocks as any;\r\n if (status === 200 && data.length > 0) {\r\n return {\r\n status: \"success\",\r\n data: data.map((item: IDetectorResponseModel) =>\r\n mapFromDetectorResponseToIDetectorModel(item)\r\n ),\r\n // data: mock.map((item: IDetectorResponseModel) =>\r\n // mapFromDetectorResponseToIDetectorModel(item)\r\n // ),\r\n };\r\n }\r\n\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\n\r\nexport const markAsFavorite = async (\r\n data: IFavoriteDetector\r\n): Promise => {\r\n const url = baseUrl + `/MarkAsFavorite`;\r\n\r\n try {\r\n const { status }: AxiosResponse = await httpService.sendMessage(\r\n \"post\",\r\n url,\r\n data\r\n );\r\n if (status === 200) {\r\n return { status: \"success\" };\r\n }\r\n\r\n return { status: \"error\" };\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n","import { IDetectorModel } from \"../../models/DetectorModel\";\r\nimport { IBleSensorInformation } from \"../../models/BleSensorInformation\";\r\nimport { IUserConfigModel } from \"../../models/UserConfigModel\";\r\nimport { IZone } from \"../../models/Zone\";\r\nimport { ISensorProfile } from \"../../models/SensorProfile\";\r\nimport { IZones } from \"../../models/Zones\";\r\n\r\nexport interface IDetectorResponseModel {\r\n id: string;\r\n favoriteName: string;\r\n sensorInformation: IBleSensorInformation;\r\n detectorType: string;\r\n customName: string;\r\n macAddress: string;\r\n projectName: string;\r\n pinCode: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n userConfigModel: string;\r\n sensorProfile: string;\r\n zones: string;\r\n isFavorite: boolean;\r\n settingType: string;\r\n hvacShortAddressExternalRelay: number;\r\n cutOffShortAddressExternalRelay: number;\r\n wiredPushButtonModel: string;\r\n blePushButtonModel: string;\r\n daliPushButtonModel: string;\r\n getSetTunableWhiteListModelReply: string;\r\n getSetTunableWhitePresetModelReply: string;\r\n daliDeviceDataScenesModelReplies: any[];\r\n getSetWirelessLinkFunctionModelReply: string;\r\n}\r\n\r\nconst getZones = (userConfigModel: IUserConfigModel): IZone[] => {\r\n let zones: IZone[] = [];\r\n for (const property in userConfigModel) {\r\n if (property.indexOf(\"Zone\") !== -1) {\r\n const zone = userConfigModel[property];\r\n if (!!zone) {\r\n zone.zoneNumber = property;\r\n zones.push(zone);\r\n }\r\n }\r\n }\r\n return zones;\r\n};\r\n\r\nexport const mapFromDetectorResponseToIDetectorModel = (\r\n data: IDetectorResponseModel\r\n): IDetectorModel => ({\r\n sensorSettingId: data.id,\r\n favoriteName: data.favoriteName,\r\n detectorType: data.sensorInformation.detectorType,\r\n macAddress: data.macAddress,\r\n customName: data.customName,\r\n projectName: data.projectName,\r\n pinCode: data.pinCode,\r\n lastUpload: data.updatedAt,\r\n sensorInformation: data.sensorInformation,\r\n userConfigModel: data.userConfigModel,\r\n sensorProfile: data.sensorProfile,\r\n zones: data.zones,\r\n isFavorite: data.isFavorite,\r\n bleSensorInformationId: data.sensorInformation.id,\r\n zonesToSend: data.zones,\r\n settingType: data.settingType,\r\n hvacShortAddressExternalRelay: data.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay: data.cutOffShortAddressExternalRelay,\r\n wiredPushButtonModel: data.wiredPushButtonModel,\r\n blePushButtonModel: data.blePushButtonModel,\r\n daliPushButtonModel: data.daliPushButtonModel,\r\n getSetTunableWhiteListModelReply: data.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply: data.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies: data.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply: data.getSetWirelessLinkFunctionModelReply\r\n});\r\n","import React from \"react\";\r\nimport MaskedInput from \"react-text-mask\";\r\n\r\ninterface TextMask {\r\n inputRef: (ref: HTMLInputElement | null) => void;\r\n}\r\n\r\nconst TextMaskCustom: React.FC = (props) => {\r\n const { inputRef, ...other } = props;\r\n\r\n return (\r\n {\r\n inputRef(ref ? ref.inputElement : null);\r\n }}\r\n mask={[\r\n /[0-9a-fA-F]/,\r\n /[0-9a-fA-F]/,\r\n \":\",\r\n /[0-9a-fA-F]/,\r\n /[0-9a-fA-F]/,\r\n \":\",\r\n /[0-9a-fA-F]/,\r\n /[0-9a-fA-F]/,\r\n ]}\r\n placeholder=\"XX:XX:XX\"\r\n placeholderChar={\"\\u2000\"}\r\n showMask={false}\r\n guide={false}\r\n style={{width: \"80px\"}}\r\n />\r\n );\r\n};\r\n\r\nexport default TextMaskCustom;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n heading: {\r\n fontSize: \"44px\",\r\n lineHeight: \"47px\",\r\n fontFamily: \"VistaSansReg\",\r\n color: colors.primaryColor,\r\n fontWeight: 700,\r\n marginBottom: theme.spacing(4),\r\n },\r\n content: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n paddingBottom: theme.spacing(4),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography } from \"@material-ui/core\";\r\nimport useStyles from \"./DetectorsHeader.style\";\r\n\r\nconst DetectorsHeader: React.FC = () => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n \r\n \r\n {t(\"translation:Detectors.title\")}\r\n \r\n \r\n {t(\"translation:Detectors.content\")}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DetectorsHeader;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n noSearchContainer: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n paddingTop: theme.spacing(5.6),\r\n },\r\n title: {\r\n textAlign: \"center\",\r\n color: colors.primaryColor,\r\n fontWeight: 700,\r\n ...commonParagraph,\r\n marginBottom: theme.spacing(4),\r\n },\r\n itemContainer: {\r\n width: \"45%\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n imgContainer: {\r\n width: \"45%\",\r\n \"& img\": {\r\n width: \"100%\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none\",\r\n }\r\n },\r\n content: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n textAlign: \"center\",\r\n padding: \"0 10px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography } from \"@material-ui/core\";\r\nimport useStyles from \"./DetectorsNoSearch.style\";\r\n\r\nconst DetectorsNoSearch: React.FC = () => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n return (\r\n \r\n
\r\n \r\n {t(\"translation:Detectors_nosearch.title\")}\r\n \r\n \r\n {t(\"translation:Detectors_nosearch.content\")}\r\n \r\n
\r\n
\r\n \"detectors\"\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DetectorsNoSearch;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport {\r\n commonParagraph14px,\r\n commonParagraph,\r\n} from \"../../common/styles/typography\";\r\nimport { min } from \"moment-timezone\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n detectorContainer: {\r\n maxWidth: \"1280px\",\r\n margin: \"0 auto\",\r\n justifyContent: \"space-between\",\r\n paddingTop: theme.spacing(5),\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n // paddingLeft: theme.spacing(2),\r\n // paddingRight: theme.spacing(2),\r\n },\r\n },\r\n actionsBar: {\r\n display: \"flex\",\r\n justifyContent: \"flex-start\",\r\n \"& button\": {\r\n marginRight: \"32px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"2px\",\r\n },\r\n },\r\n },\r\n searchContainer: {\r\n backgroundColor: colors.secondaryColor,\r\n borderRadius: \"24px\",\r\n padding: \"4px 14px 4px 24px\",\r\n marginLeft: \"auto\",\r\n marginRight: \"120px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n marginLeft: \"auto\",\r\n marginRight: \"auto\",\r\n }\r\n },\r\n endAlign: {\r\n justifyContent: \"flex-end\",\r\n },\r\n iconButton: {\r\n height: \"20px\",\r\n width: \"20px\",\r\n },\r\n tableContainer: {\r\n margin:0,\r\n marginTop: theme.spacing(6.5),\r\n marginBottom: theme.spacing(42.5),\r\n [theme.breakpoints.down(\"sm\")]: {\r\n overflowX: \"scroll\",\r\n width:\"100%\",\r\n }\r\n },\r\n table: {\r\n minWidth: \"700px\",\r\n border: \"none\",\r\n \"& th\": {\r\n borderBottom: \"none\",\r\n },\r\n \"& td\": {\r\n cursor: \"pointer\",\r\n borderBottom: \"none\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"6px !important\",\r\n },\r\n },\r\n \"& tr\": {\r\n borderBottom: \"none\",\r\n },\r\n \"& tr:hover\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n },\r\n },\r\n columnName: {\r\n color: colors.darkGreyColor,\r\n fontWeight: 700,\r\n ...commonParagraph14px,\r\n },\r\n headingRow: {\r\n paddingBottom: \"12px\",\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n rowContent: {\r\n // \"& td\": {\r\n // borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n // },\r\n },\r\n star: {\r\n cursor: \"default\",\r\n },\r\n content: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n cursor: \"default\",\r\n wordBreak: \"break-word\",\r\n },\r\n detectorType: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n fontWeight: 700,\r\n cursor: \"default\",\r\n wordBreak: \"break-word\",\r\n },\r\n noSearchBody: {\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n },\r\n title: {\r\n marginTop: theme.spacing(10),\r\n paddingBottom: theme.spacing(2),\r\n },\r\n infoFavorite: {\r\n position: \"absolute\",\r\n bottom: 0,\r\n backgroundColor: colors.darkGreyColor,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n padding: \"25px 120px 47px\",\r\n width: \"100%\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"15px 5px\",\r\n },\r\n \"& img\": {\r\n marginRight: \"45px\",\r\n width: \"40px\",\r\n height: \"40px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"10px\",\r\n },\r\n },\r\n \"& h3\": {\r\n lineHeight: \"36px\",\r\n },\r\n },\r\n infoContent: {\r\n ...commonParagraph,\r\n color: colors.secondaryColor,\r\n paddingBottom: \"22px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n fontSize: \"14px !important\",\r\n },\r\n },\r\n buttonWraper: {\r\n width: \"100px\",\r\n marginLeft: \"77px\",\r\n height: \"48px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginLeft: \"0\",\r\n },\r\n },\r\n detectorDetailsContainer: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"536px\",\r\n flexWrap: \"nowrap\",\r\n maxHeight: \"580px\",\r\n overflowY: \"scroll\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n padding: \"35px 40px 60px\",\r\n },\r\n addTemplateCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"536px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n padding: \"104px 32px 11px\",\r\n },\r\n errorContent: {\r\n paddingTop: \"68px\",\r\n borderBottom: \"0\",\r\n \"& img\": {\r\n width: \"40px\",\r\n height: \"40px\",\r\n marginBottom: \"36px\",\r\n },\r\n },\r\n modalSendCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n maxHeight: \"580px\",\r\n overflowY: \"scroll\",\r\n flexWrap: \"nowrap\",\r\n padding: \"88px 38px 20px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalStatusCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n maxHeight: \"488px\",\r\n overflowY: \"scroll\",\r\n padding: \"88px 32px 50px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n },\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n check: {\r\n paddingRight: \"7px\",\r\n width: \"20px\",\r\n height: \"21px\",\r\n \"& span\": {\r\n height: \"21px\",\r\n },\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n macAddressSuffix: {\r\n fontSize: \"initial\",\r\n marginLeft: \"18px\",\r\n }\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Grid,\r\n InputBase,\r\n IconButton,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Typography,\r\n Modal,\r\n Button,\r\n Checkbox,\r\n} from \"@material-ui/core\";\r\nimport AddTemplate from \"./components/AddTemplate\";\r\nimport DetectorDetails from \"./components/DetectorDetails\";\r\nimport {\r\n getDetectorByMacAddress,\r\n markAsFavorite,\r\n} from \"../../data-services/Detectors/DetectorsService\";\r\nimport { IDetectorModel } from \"../../models/DetectorModel\";\r\nimport TextMaskCustom from \"../../common/components/TextMask/TextMask\";\r\nimport ExportModal from \"../../common/components/ExportModal\";\r\nimport DetectorHeader from \"./components/DetectorsHeader/DetectorsHeader\";\r\nimport DetectorsNoSearch from \"./components/DetectorsNoSearch/DetectorsNoSearch\";\r\nimport { exportDetectorsPDF } from \"../../common/components/Export/ExportPDF\";\r\nimport { exportDetectorsExcel } from \"../..//common/components/Export/ExportExcel\";\r\nimport Export from \"../../common/components/Actions/Export\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\nimport useButtonStyles from \"../../common/styles/buttonStyles\";\r\nimport useStyles from \"./Detector.style\";\r\nimport { getDetectorTypeFormatted } from \"../../data-services/Templates/TemplateMapper\";\r\nimport { getLocalizedRoute } from \"../../common/services/i18n/utils/routeLocalization\";\r\nimport { useHistory, useLocation } from \"react-router-dom\";\r\nimport { AppRoute } from \"../../common/constants/routes\";\r\nimport { useIntl } from \"react-intl\";\r\nimport LoadingSpinner from \"../../LoadingSpinner\";\r\n\r\nconst Detector: React.FC = () => {\r\n const appStore = useAuth();\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const cellAlignment = \"left\";\r\n const [detector, setDetector] = useState(\r\n undefined\r\n );\r\n const [detectors, setDetectors] = useState([]);\r\n const [searchedValue, setSearchedValue] = useState(\"\");\r\n const [error, setError] = useState(false);\r\n const [isFavorite, setIsFavorite] = useState(false);\r\n const [favoriteName, setFavoriteName] = useState(\"\");\r\n const [openAddFavoriteModal, setOpenAddFavoriteModal] = useState(false);\r\n const [openDetailsModal, setOpenDetailsModal] = useState(false);\r\n const [showNote, setShowNote] = useState(\r\n !appStore?.userHistory?.isDetectorNotificationSeen\r\n );\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const [selectedDetectors, setSelectedDetectors] = useState([]);\r\n const [isFetching, setIsFetching] = useState(false);\r\n\r\n const timeZone = moment.tz.guess();\r\n const macAddressSuffix = \"10:B9:F7:\";\r\n const { formatMessage, locale } = useIntl();\r\n\r\n let history = useHistory();\r\n\r\n const useQuery = () => {\r\n return new URLSearchParams(useLocation().search);\r\n };\r\n let query = useQuery();\r\n\r\n const handleNoteInfo = () => {\r\n setShowNote(false);\r\n appStore?.updateUserHistory(appStore.userHistory);\r\n };\r\n\r\n const handleOpenAddFavoriteModal = (detector: IDetectorModel) => {\r\n setOpenAddFavoriteModal(true);\r\n setDetector(detector);\r\n };\r\n\r\n const handleCloseAddFavoriteModal = () => {\r\n setOpenAddFavoriteModal(false);\r\n };\r\n\r\n const handleOpenDetailsModal = (detector: IDetectorModel) => {\r\n setOpenDetailsModal(true);\r\n setDetector(detector);\r\n };\r\n\r\n const handleCloseDetailsModal = () => {\r\n setOpenDetailsModal(false);\r\n };\r\n\r\n const getDetector = async (macQueryParam: string = \"\") => {\r\n let macInput = macAddressSuffix + searchedValue;\r\n let toSearch = searchedValue;\r\n if (macQueryParam.length > 1) {\r\n macInput = macAddressSuffix + macQueryParam;\r\n toSearch = macQueryParam;\r\n }\r\n setIsFetching(true);\r\n\r\n const { data: detectors = [], status } = await getDetectorByMacAddress(\r\n macInput.split(\":\").join(\"\")\r\n );\r\n\r\n if (status === \"success\") {\r\n setDetectors(detectors);\r\n history.push(`${getLocalizedRoute(AppRoute.Detector, locale, formatMessage)}?mac=${encodeURIComponent(toSearch)}`);\r\n } else {\r\n setDetectors([]);\r\n }\r\n\r\n if (status === \"error\") {\r\n setError(true);\r\n }\r\n\r\n setIsFetching(false);\r\n };\r\n\r\n const createTemplate = async () => {\r\n if (!!detector) {\r\n const data = {\r\n sensorSettingId: detector.sensorSettingId,\r\n favoriteName: favoriteName,\r\n };\r\n const { status } = await markAsFavorite(data);\r\n\r\n if (status === \"success\") {\r\n getDetector();\r\n // if (appStore) {\r\n // appStore.countMyNewTemplates();\r\n // }\r\n }\r\n\r\n handleCloseAddFavoriteModal();\r\n }\r\n };\r\n\r\n const handleOpenExportModal = () => {\r\n if (detectors.length > 0) {\r\n setOpenExportModal(true);\r\n }\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n setOpenExportModal(false);\r\n };\r\n\r\n const getSelectedProjectNames = () => {\r\n if (detector) {\r\n return detector.projectName;\r\n } else {\r\n return detectors\r\n .filter((detector) =>\r\n selectedDetectors.includes(detector.sensorSettingId)\r\n )\r\n .map((detector) => detector.projectName)\r\n .join(\", \");\r\n }\r\n };\r\n\r\n const handleCheck = (\r\n event: React.ChangeEvent,\r\n detector: IDetectorModel\r\n ) => {\r\n if (event.target.checked) {\r\n setSelectedDetectors(selectedDetectors.concat(detector.sensorSettingId));\r\n } else {\r\n setSelectedDetectors(\r\n selectedDetectors.filter((id) => id !== detector.sensorSettingId)\r\n );\r\n }\r\n };\r\n\r\n const detectorsIds = detectors.map(\r\n (detector: IDetectorModel) => detector.sensorSettingId\r\n );\r\n\r\n const existDetectors = detectors.length > 0;\r\n\r\n const contactDetails = t(\"translation:SensorData.export.contactDetails\")\r\n + ' ' + appStore?.userHistory?.firstName + ', '\r\n + appStore?.userHistory?.lastName + ', '\r\n + appStore?.userHistory?.email;\r\n\r\n const exportPDF = () => {\r\n try {\r\n if (detectors.length > 0)\r\n exportDetectorsPDF(detectors, true, contactDetails);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const exportExcel = () => {\r\n try {\r\n if (detectors.length > 0)\r\n exportDetectorsExcel(detectors, true);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const getPinCodeStr = (detector: IDetectorModel) => {\r\n if (detector.pinCode) {\r\n return detector.pinCode;\r\n }\r\n return t(\"translation:Templates_Mytemplates.details.noPinCode\");\r\n }\r\n\r\n const keyPress = (e: any) => {\r\n if(e.keyCode == 13){\r\n getDetector(searchedValue);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let macSearch = query.get(\"mac\");\r\n if (macSearch !== null) {\r\n setSearchedValue(macSearch);\r\n getDetector(macSearch);\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n
{isFetching && }
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {detector !== undefined && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {existDetectors && (\r\n <>\r\n \r\n \r\n )}\r\n \r\n {macAddressSuffix}\r\n setSearchedValue(e.target.value)}\r\n onFocus={() => setSearchedValue(\" \")}\r\n className={typoClasses.paragraphPrimary}\r\n onKeyDown={(e) => keyPress(e)}\r\n />\r\n getDetector()}\r\n className={classes.iconButton}\r\n aria-label=\"search\"\r\n >\r\n \"search\"\r\n \r\n \r\n \r\n {existDetectors || error ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\r\n \"translation:Detectors_search.tableHeadings.detectorType\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Detectors_search.tableHeadings.detectorName\"\r\n )}\r\n \r\n \r\n {t(\"translation:Detectors_search.tableHeadings.MACaddress\")}\r\n \r\n \r\n {t(\r\n \"translation:Detectors_search.tableHeadings.projectName\"\r\n )}\r\n \r\n \r\n {t(\"translation:Detectors_search.tableHeadings.pinCode\")}\r\n \r\n \r\n {t(\"translation:Detectors_search.tableHeadings.lastUpload\")}\r\n \r\n \r\n \r\n \r\n {existDetectors ? (\r\n detectors.map((detector: IDetectorModel, index) => (\r\n \r\n handleOpenAddFavoriteModal(detector)}\r\n >\r\n \r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {getDetectorTypeFormatted(detector, t)}\r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {detector.customName}\r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {detector.macAddress?.match(/.{1,2}/g)?.join(\":\")}\r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {detector.projectName}\r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {getPinCodeStr(detector)}\r\n \r\n handleOpenDetailsModal(detector)}\r\n >\r\n {moment\r\n .tz(detector.lastUpload, timeZone)\r\n .format(\"DD.MM.YYYY\")}\r\n \r\n \r\n ))\r\n ) : (\r\n <>\r\n \r\n \r\n \"close\"\r\n \r\n {t(`translation:Detectors_search.errorStatus.title`)}\r\n \r\n \r\n {t(\r\n `translation:Detectors_search.errorStatus.content`\r\n )}\r\n \r\n \r\n {t(\r\n `translation:Detectors_search.errorStatus.secondaryContent`\r\n )}\r\n \r\n \r\n \r\n {/* \r\n Wrong MAC address\r\n \r\n \r\n \r\n The MAC address you entered cannot be found. Please\r\n check the address and try again.\r\n \r\n */}\r\n \r\n )}\r\n \r\n
\r\n
\r\n ) : (\r\n \r\n )}\r\n \r\n\r\n {showNote && existDetectors && (\r\n \r\n \"favorite\"\r\n
\r\n \r\n {t(\"translation:Detectors_search.infoFavorite.infoTitle\")}\r\n \r\n \r\n {t(\"translation:Detectors_search.infoFavorite.infoContent\")}\r\n \r\n
\r\n \r\n {t(\"translation:common.closeButton\")}\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Detector;\r\n","import React from 'react';\r\n\r\nconst UncheckedGreyBox: React.FC = (() => {\r\n return (\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nexport default UncheckedGreyBox;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport { commonParagraph14px } from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n infoItem: {},\r\n nestedInfo: {\r\n \"& span\": {\r\n color: colors.primaryColor,\r\n ...commonParagraph14px,\r\n },\r\n },\r\n boldText: {\r\n \"& span\": {\r\n color: colors.primaryColor,\r\n fontWeight: 700,\r\n ...commonParagraph14px,\r\n },\r\n },\r\n greyedOutText: {\r\n \"& span\": {\r\n color: colors.lightGreyColor,\r\n ...commonParagraph14px,\r\n },\r\n },\r\n checkbox: {\r\n minWidth: \"20px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n marginRight: \"16px\",\r\n \"& .MuiCheckbox-colorSecondary.Mui-checked:hover\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& .MuiIconButton-root:hover\": {\r\n backgroundColor: \"transparent\",\r\n },\r\n \"& span\": {\r\n padding: 0,\r\n cursor: 'pointer',\r\n\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Collapse,\r\n ListItemIcon,\r\n Checkbox,\r\n} from \"@material-ui/core\";\r\nimport ChevronUp from \"../../../../common/components/ChevronUp\";\r\nimport ChevronDown from \"../../../../common/components/ChevronDown\";\r\nimport CheckedBoldBox from \"../../../../common/components/CheckedBoldBox\";\r\nimport UncheckedGreyBox from \"../../../../common/components/UncheckedGreyBox\";\r\nimport useStyles from \"./FilterTemplates.style\";\r\n\r\nexport interface IFilterSet {\r\n [key: string]: {\r\n name: string;\r\n detectorType: string;\r\n count: number;\r\n }[];\r\n}\r\n\r\ninterface IFilterTemplates {\r\n getSelectedTabFilters: string[];\r\n filtersSet: IFilterSet;\r\n selectedNames(data: string[]): void;\r\n}\r\n\r\nconst FilterTemplates: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { getSelectedTabFilters, filtersSet, selectedNames } = props;\r\n const [openDali2, setOpenDali2] = useState(false);\r\n const [open230V, setOpen230V] = useState(false);\r\n const [selectedFilters, setSelectedFilters] = useState([]);\r\n\r\n useEffect(() => {\r\n setSelectedFilters(getSelectedTabFilters);\r\n }, [getSelectedTabFilters]);\r\n\r\n const handleExpandDali2 = () => {\r\n setOpenDali2(!openDali2);\r\n };\r\n\r\n const handleExpand230V = () => {\r\n setOpen230V(!open230V);\r\n };\r\n\r\n const isFilterSelected = (filter: string): boolean => {\r\n return selectedFilters.some((f) => f === filter);\r\n };\r\n\r\n const handleSelectedFilters = (selected: boolean, filter: string, count: number) => {\r\n if (count === 0) {\r\n return;\r\n }\r\n\r\n if (selected) {\r\n const filters = selectedFilters.concat(filter);\r\n setSelectedFilters(filters);\r\n selectedNames(filters);\r\n } else {\r\n const filters = selectedFilters.filter(\r\n (filterName) => filterName !== filter\r\n );\r\n setSelectedFilters(filters);\r\n selectedNames(filters);\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {openDali2 ? : }\r\n \r\n \r\n \r\n {filtersSet[\"dali\"] &&\r\n filtersSet[\"dali\"].map(\r\n (data, index) => (\r\n \r\n \r\n \r\n handleSelectedFilters(event.target.checked, data.detectorType, data.count)\r\n }\r\n checkedIcon={}\r\n inputProps={{ \"aria-labelledby\": \"checkbox\" }}\r\n icon={}\r\n />\r\n \r\n {\r\n handleSelectedFilters(!isFilterSelected(data.detectorType), data.detectorType, data.count)\r\n }}\r\n />\r\n \r\n )\r\n )}\r\n \r\n \r\n \r\n \r\n {open230V ? : }\r\n \r\n \r\n \r\n {filtersSet[\"230V\"] &&\r\n filtersSet[\"230V\"].map(\r\n (data, index) => (\r\n \r\n \r\n \r\n handleSelectedFilters(event.target.checked, data.detectorType, data.count)\r\n }\r\n disableRipple\r\n checkedIcon={}\r\n inputProps={{ \"aria-labelledby\": \"checkbox\" }}\r\n icon={}\r\n />\r\n \r\n {\r\n handleSelectedFilters(!isFilterSelected(data.detectorType), data.detectorType, data.count)\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 FilterTemplates;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n send: {\r\n backgroundColor: colors.whiteColor,\r\n border: `1px solid ${colors.darkGreyColor}`,\r\n borderRadius: \"100px\",\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.whiteColor,\r\n },\r\n textTransform: \"none\",\r\n color: colors.primaryColor,\r\n ...commonParagraph,\r\n padding: \"6px 24px\",\r\n \"& .MuiButton-label\": {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n \"& .MuiButton-startIcon\": {\r\n marginRight: \"15px\",\r\n },\r\n minWidth: \"144px\",\r\n boxShadow: \"none\",\r\n whiteSpace: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"32px\",\r\n },\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport useStyles from \"./Send.style\";\r\n\r\ninterface ISend {\r\n openSendModal(): void;\r\n closeModal?(): void;\r\n}\r\n\r\nconst Send: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const { openSendModal, closeModal } = props;\r\n\r\n return (\r\n }\r\n onClick={openSendModal}\r\n >\r\n {t(\"translation:common.send\")}\r\n \r\n );\r\n};\r\n\r\nexport default Send;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport {\r\n commonParagraph14px,\r\n paragraph14pxHumanist,\r\n} from \"../../../../common/styles/typography\";\r\nimport { lightButtonWithBorder } from \"../../../../common/styles/buttonStyles\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n templateActions: {\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n width: \"100%\",\r\n padding: \"16px 0 48px\",\r\n \"& button\": {\r\n ...lightButtonWithBorder,\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n },\r\n closeIcon: {\r\n paddingBottom: \"18px\",\r\n alignSelf: \"flex-end\",\r\n cursor: \"default\",\r\n },\r\n infoEditableItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 0px 7px 24px\",\r\n fontSize: \"14px\",\r\n },\r\n infoItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 24px\",\r\n fontSize: \"14px\",\r\n cursor: \"default\",\r\n \"&.MuiListItem-button:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n list: {\r\n width: \"100%\",\r\n },\r\n saveButton: {\r\n \"& button\": {\r\n fontSize: \"16px\",\r\n width: \"352px\",\r\n },\r\n marginTop: theme.spacing(5),\r\n },\r\n inputName: {\r\n marginTop: \"16px\",\r\n padding: \"1px 16px\",\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n ...paragraph14pxHumanist,\r\n \"& input\": {\r\n maxWidth: \"380px\",\r\n padding: \"8px 0px\",\r\n color: colors.primaryColor,\r\n ...paragraph14pxHumanist,\r\n },\r\n cursor: \"default\",\r\n },\r\n primaryStyle: {\r\n display: \"inline-block\",\r\n fontWeight: 700,\r\n ...commonParagraph14px,\r\n },\r\n secondaryStyle: {\r\n display: \"inline-block\",\r\n color: colors.primaryColor,\r\n ...paragraph14pxHumanist,\r\n },\r\n display: {\r\n display: \"inline-block\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment-timezone\";\r\nimport {\r\n Grid,\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Button,\r\n Input,\r\n} from \"@material-ui/core\";\r\nimport Delete from \"../../../../common/components/Actions/Delete\";\r\nimport Send from \"../../../../common/components/Actions/Send\";\r\nimport { ITemplateModel } from \"../../../../models/TemplatesModel\";\r\nimport SensorDataComponent from \"../../../../common/components/SensorDataComponent/SensorDataComponent\";\r\nimport useTypographyStyles from \"../../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./MyTemplateDetails.style\";\r\nimport { getDetectorTypeFormatted } from \"../../../../data-services/Templates/TemplateMapper\";\r\n\r\ninterface ITemplateDetails {\r\n newName: string;\r\n setNewName(name: string): void;\r\n template: ITemplateModel;\r\n removeTemplate(id: string): void;\r\n openSendModal(): void;\r\n openDeleteModal(): void;\r\n openSaveModal(templateSensorId: string): void;\r\n closeModal(): void;\r\n}\r\n\r\nconst MyTemplateDetails: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const timeZone = moment.tz.guess();\r\n\r\n const {\r\n template,\r\n openSendModal,\r\n openDeleteModal,\r\n closeModal,\r\n newName,\r\n setNewName,\r\n openSaveModal,\r\n } = props;\r\n\r\n const [innput, setInnput] = useState(template.templateName);\r\n\r\n const handleSetNewName = (e: React.ChangeEvent) => {\r\n setNewName(e.target.value);\r\n setInnput(e.target.value)\r\n };\r\n\r\n const closeTemplateDetailsModal = () => {\r\n if (!!newName) {\r\n openSaveModal(template.templateSensorId);\r\n closeModal();\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const inputSpanLabel = document.getElementById(\"inputExtender\") as HTMLInputElement;\r\n const inputLabel = document.getElementById(\"inputLabel\") as HTMLInputElement;\r\n\r\n inputLabel.style.width = inputSpanLabel.clientWidth + \"px\";\r\n\r\n if (inputSpanLabel.clientWidth > 432) {\r\n inputLabel.style.width = 432 + \"px\";\r\n }\r\n else if (inputSpanLabel.clientWidth < 80) {\r\n inputLabel.style.width = 80 + \"px\";\r\n }\r\n })\r\n //}, [innput])\r\n\r\n useEffect(() => {\r\n setInnput(template.templateName);\r\n }, [template])\r\n\r\n return (\r\n <>\r\n \r\n \"close\"\r\n \r\n \r\n \r\n {template.templateName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {innput}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t(\"translation:common.send\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.save\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MyTemplateDetails;\r\n","import httpService from \"../HTTPService\";\r\nimport {\r\n ITemplateResponse,\r\n ITemplatesResponse,\r\n IReceivedTemplateResponse,\r\n IReceivedTemplatesResponse,\r\n IDeleteResponse,\r\n INikoLibraryResponse,\r\n INewMyTemplatesCountResponse,\r\n INewReceivedTemplatesCountResponse,\r\n} from \"../../models/ResponseModel\";\r\nimport {\r\n mapFromTemplateResponseModelToITemplateModel,\r\n mapReceivedTemplates,\r\n ITemplateResponseModel,\r\n IReceivedTemplateResponseModel,\r\n mapNikoLibraryModel,\r\n INikoLibraryResponseModel,\r\n} from \"./TemplateMapper\";\r\nimport { stringify } from \"querystring\";\r\n\r\nconst baseUrl = \"Template\";\r\n\r\nexport const getTemplateById = async (templateId: string, isReceived: boolean = false,impersonatedUserEmail: string | null): Promise => {\r\n try {\r\n let initialUrl = baseUrl + `/GetTemplateById/${templateId}`\r\n let url = impersonateIfNeeded(initialUrl, impersonatedUserEmail);\r\n\r\n if (initialUrl != url) {\r\n url += `&isReceived=${isReceived}`;\r\n }\r\n else {\r\n url += `?isReceived=${isReceived}`;\r\n }\r\n\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n let d = mapFromTemplateResponseModelToITemplateModel(response.data);\r\n\r\n return {\r\n status: \"success\",\r\n data: isReceived ? mapReceivedTemplates(response.data) : d\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const getTemplates = async (impersonatedUserEmail: string | null,\r\n withFullInfo: boolean = false,\r\n sortBy: string = 'updatedAt',\r\n offset: number = 0,\r\n limit: number = 10000): Promise => {\r\n try {\r\n let url = impersonateIfNeeded(baseUrl, impersonatedUserEmail);\r\n\r\n if (baseUrl != url) {\r\n url += `&withFullInfo=${withFullInfo}`;\r\n }\r\n else {\r\n url += `?withFullInfo=${withFullInfo}`;\r\n }\r\n url += `&sortBy=${sortBy}`;\r\n url += `&offset=${offset}`;\r\n url += `&limit=${limit}`;\r\n\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.map((t: ITemplateResponseModel) =>\r\n mapFromTemplateResponseModelToITemplateModel(t)\r\n ),\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const getNewMyTemplatesCount = async (lastMyTemplatesSeen: number, impersonatedUserEmail: string | null): Promise => {\r\n if (lastMyTemplatesSeen == undefined) return { status: \"error\", message: \"Invalid timestamp\" };\r\n try {\r\n let url = baseUrl + `/NewMyTemplatesCount?lastSeen=${lastMyTemplatesSeen}`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.count\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const getReceivedMyTemplatesCount = async (lastReceivedTemplatesSeen: number, impersonatedUserEmail: string | null): Promise => {\r\n if (lastReceivedTemplatesSeen == undefined) return { status: \"error\", message: \"Invalid timestamp\" };\r\n try {\r\n let url = baseUrl + `/NewReceivedTemplatesCount?lastSeen=${lastReceivedTemplatesSeen}`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.count\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\n\r\nexport const updateTemplate = async (data: { name: string; id: string; }, impersonatedUserEmail: string | null): Promise => {\r\n try {\r\n let url = impersonateIfNeeded(baseUrl, impersonatedUserEmail);\r\n const response = await httpService.sendMessage(\"put\", url, data);\r\n if (response.status === 200) {\r\n return { status: \"success\" };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return \"error\";\r\n }\r\n};\r\n\r\nexport const getReceivedTemplates = async (impersonatedUserEmail: string | null,\r\n withFullInfo: boolean = false,\r\n sortBy: string = 'updatedAt',\r\n offset: number = 0,\r\n limit: number = 10000): Promise => {\r\n let url = baseUrl + `/Received`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n if (url.includes('?')) {\r\n url += `&withFullInfo=${withFullInfo}`;\r\n }\r\n else {\r\n url += `?withFullInfo=${withFullInfo}`;\r\n }\r\n url += `&sortBy=${sortBy}`;\r\n url += `&offset=${offset}`;\r\n url += `&limit=${limit}`;\r\n\r\n try {\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.map((t: IReceivedTemplateResponseModel) =>\r\n mapReceivedTemplates(t)\r\n ),\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const removeReceivedTemplate = async (sensorSettingIds: string[], impersonatedUserEmail: string | null): Promise => {\r\n let url = baseUrl + `/DeleteReceived`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n try {\r\n const response = await httpService.sendMessage(\r\n \"post\",\r\n url,\r\n sensorSettingIds\r\n );\r\n\r\n if (response.status === 204) {\r\n return { status: \"success\" };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else if (response.status === 404) {\r\n return { status: \"error\", message: \"Not found test\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const removeTemplate = async (sensorSettingId: string, impersonatedUserEmail: string | null): Promise => {\r\n let url = baseUrl + `/UnMarkAsFavorite/${sensorSettingId}`;\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n try {\r\n const response = await httpService.sendMessage(\r\n \"delete\",\r\n url,\r\n sensorSettingId\r\n );\r\n\r\n if (response.status === 204) {\r\n return { status: \"success\" };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else if (response.status === 404) {\r\n return { status: \"error\", message: \"Not found test\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nexport const getNikoLibrarySensorSettings = async (impersonatedUserEmail: string | null): Promise => {\r\n let url = \"Library\";\r\n url = impersonateIfNeeded(url, impersonatedUserEmail);\r\n\r\n try {\r\n const response = await httpService.sendMessage(\"get\", url);\r\n if (response.status === 200) {\r\n return {\r\n status: \"success\",\r\n data: response.data.map((nl: INikoLibraryResponseModel) =>\r\n mapNikoLibraryModel(nl)\r\n ),\r\n };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\" };\r\n }\r\n};\r\n\r\nconst impersonateIfNeeded = (initialUrl: string, impersonatedUserEmail: string | null): string => {\r\n let url = initialUrl;\r\n if (impersonatedUserEmail !== null) {\r\n if (url.includes('?')) {\r\n url += (\"&impersonate=\" + impersonatedUserEmail);\r\n }\r\n else {\r\n url += (\"?impersonate=\" + impersonatedUserEmail);\r\n }\r\n }\r\n return url;\r\n}\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../styles/colors\";\r\nimport { commonParagraph, commonParagraph14px } from \"../styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n modalParagraphSubTitle: {\r\n marginBottom: theme.spacing(3),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"85%\",\r\n justifyContent: \"space-around\",\r\n },\r\n textInput: {\r\n width: \"80%\",\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n color: colors.primaryColor,\r\n \"& .MuiOutlinedInput-root\": {\r\n \"& fieldset\": {\r\n border: \"0\",\r\n },\r\n },\r\n padding: \"10px 24px\",\r\n \"& input\": {\r\n color: colors.primaryColor,\r\n ...commonParagraph14px,\r\n },\r\n \"& .MuiOutlinedInput-input\": {\r\n padding: \"5px 0\",\r\n },\r\n \"& .MuiInputBase-root\": {\r\n paddingRight: \"0\",\r\n },\r\n },\r\n emailInput: {\r\n width: \"350px\",\r\n marginLeft: \"-5px\",\r\n marginBottom: theme.spacing(2),\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n },\r\n bottomButton: {\r\n \"& button\": {\r\n width: \"352px\",\r\n },\r\n marginTop: theme.spacing(3),\r\n },\r\n error: {\r\n color: colors.errorRedColor,\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n marginTop: \"8px\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button, TextField, Box } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../styles/typography\";\r\nimport useButtonStyles from \"../styles/buttonStyles\";\r\nimport useStyles from \"./SendModal.style\";\r\n\r\ninterface ISendModal {\r\n title: string;\r\n subTitle?: string;\r\n content: string;\r\n emails: string[];\r\n send(): void;\r\n setEmails(emails: string[]): void;\r\n closeModal(): void;\r\n}\r\n\r\nconst SendModal: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const [duplicateEmails, setDuplicateEmails] = useState(false);\r\n\r\n const { title, subTitle, content, closeModal, send, emails, setEmails } = props;\r\n\r\n const handleChange = (\r\n event: React.ChangeEvent<{ value: any }>,\r\n index: number\r\n ) => {\r\n setDuplicateEmails(false);\r\n const values = [...emails];\r\n values[index] = event.target.value;\r\n setEmails(values);\r\n };\r\n\r\n const checkAreDuplicateEmails = () => {\r\n let r: string[] = [];\r\n\r\n for (let i = 0; i < emails.length; i++) {\r\n if (r.includes(emails[i])) {\r\n setDuplicateEmails(true);\r\n return true;\r\n }\r\n r.push(emails[i]);\r\n }\r\n };\r\n\r\n const handleAddEmail = () => {\r\n checkAreDuplicateEmails();\r\n setEmails([\"\", ...emails]);\r\n };\r\n\r\n const removeEmail = (index: number) => {\r\n setDuplicateEmails(false);\r\n const values = emails;\r\n values.splice(index, 1);\r\n setEmails([...values]);\r\n };\r\n\r\n const showAddIcon = (index: number) => {\r\n return emails.length >= 1 && index === 0;\r\n };\r\n\r\n const handleSend = () => {\r\n let areDuplicates = checkAreDuplicateEmails();\r\n if (areDuplicates) {\r\n return;\r\n }\r\n send();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {title}\r\n \r\n { subTitle && {subTitle} }\r\n {content}\r\n \r\n {emails.map((email, index) => {\r\n return (\r\n \r\n {\r\n handleChange(e, index);\r\n }}\r\n />\r\n {showAddIcon(index) ? (\r\n \r\n ) : (\r\n removeEmail(index)}\r\n />\r\n )}\r\n \r\n );\r\n })}\r\n \r\n {duplicateEmails && (\r\n \r\n \r\n {`${t(\"translation:common.emailUsedError\")}`}\r\n \r\n \r\n )}\r\n \r\n \r\n { setEmails([\"\"]); closeModal(); } }\r\n >\r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.send\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SendModal;\r\n","import httpService from \"../../data-services/HTTPService\";\r\nimport { ISendModel, IShareManyModel } from \"../../models/SendModel\";\r\nimport { AxiosResponse } from \"axios\";\r\n\r\nconst baseUrl = \"SharedSetting\";\r\n\r\nexport const send = async (data: ISendModel): Promise => {\r\n try {\r\n const response: AxiosResponse = await httpService.sendMessage(\r\n \"post\",\r\n baseUrl,\r\n data\r\n );\r\n return { status: \"success\", data: response.data };\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n\r\nexport const shareMany = async (data: IShareManyModel): Promise => {\r\n const url = baseUrl + `/ShareMany`;\r\n try {\r\n const response: AxiosResponse = await httpService.sendMessage(\r\n \"post\",\r\n url,\r\n data\r\n );\r\n if (response.status === 204) {\r\n return { status: \"success\" };\r\n } else if (response.status === 401) {\r\n return { status: \"error\", message: \"Test error not auth\" };\r\n } else {\r\n return { status: \"error\", message: \"Test error bad request\" };\r\n }\r\n } catch (error) {\r\n return { status: \"error\", message: \"Error\" };\r\n }\r\n};\r\n","import { makeStyles, createStyles } from '@material-ui/core/styles';\r\n\r\n\r\nconst useStyles = makeStyles(() => createStyles({\r\n buttonContainer: {\r\n width: '352px',\r\n },\r\n\r\n buttonsContainerTwo: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"80%\",\r\n justifyContent: \"space-around\",\r\n },\r\n}));\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button, Grid, Typography } from \"@material-ui/core\";\r\nimport useButtonStyles from \"../styles/buttonStyles\";\r\nimport useTypographyStyles from \"../styles/typography\";\r\nimport useStyles from \"./StatusModal.style\";\r\n\r\ninterface IStatusModal {\r\n title: string;\r\n retry?: boolean;\r\n retryMethod(): void;\r\n content(): void;\r\n closeModal(): void;\r\n}\r\n\r\nconst StatusModal: React.FC = (props) => {\r\n const classes = useStyles();\r\n const buttonClasses = useButtonStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { title, content, closeModal, retry, retryMethod } = props;\r\n\r\n return (\r\n <>\r\n \r\n \r\n {title}\r\n \r\n \r\n {content()}\r\n {retry &&\r\n \r\n \r\n {t(\"translation:common.back\")}\r\n \r\n \r\n {t(\"translation:common.retry\")}\r\n \r\n \r\n }\r\n\r\n {!retry &&\r\n \r\n \r\n {t(\"translation:common.ok\")}\r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default StatusModal;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../common/styles/colors\";\r\nimport { commonParagraph } from \"../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n paddingTop: theme.spacing(2.5),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n buttonsContainer: {\r\n display: \"flex\",\r\n \"& button\": {\r\n width: \"160px\",\r\n height: \"48px\",\r\n },\r\n width: \"100%\",\r\n justifyContent: \"space-around\",\r\n marginBottom: theme.spacing(2),\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Grid, Typography, Button } from \"@material-ui/core\";\r\nimport useTypographyStyles from \"../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./SaveChanges.style\";\r\n\r\ninterface ISaveChanges {\r\n saveUpdates(): void;\r\n closeModal(): void;\r\n}\r\n\r\nconst SaveChanges: React.FC = (props) => {\r\n const classes = useStyles();\r\n const typographyClasses = useTypographyStyles();\r\n const buttonClasses = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { saveUpdates, closeModal } = props;\r\n\r\n const handleSaveChanges = () => {\r\n saveUpdates();\r\n closeModal();\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:Templates_Mytemplates.saveModal.title\")}\r\n \r\n \r\n {t(\"translation:Templates_Mytemplates.saveModal.content\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.cancel\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:common.yes\")}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SaveChanges;\r\n","import { createStyles, makeStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport {\r\n commonParagraph,\r\n commonParagraph14px,\r\n} from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n myTemplatesContainer: {\r\n paddingTop: \"32px\",\r\n },\r\n headingRow: {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n columnName: {\r\n color: colors.darkGreyColor,\r\n fontWeight: 800,\r\n ...commonParagraph14px,\r\n },\r\n table: {\r\n border: \"none\",\r\n tableLayout: \"fixed\",\r\n \"& th\": {\r\n borderBottom: \"none\",\r\n },\r\n \"& td\": {\r\n cursor: \"pointer\",\r\n borderBottom: \"none\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"6px !important\",\r\n },\r\n },\r\n \"& tr\": {\r\n borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n },\r\n \"& tr:hover\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n },\r\n \"& tr:last-child\":{\r\n borderBottom: \"none\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n tableLayout: \"auto\",\r\n minWidth: \"700px\",\r\n }, \r\n },\r\n check: {\r\n paddingRight: \"7px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n \"& span\": {\r\n padding: 0,\r\n cursor: 'pointer',\r\n\r\n },\r\n },\r\n favorite: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n paddingRight: \"10px\",\r\n cursor: \"default\",\r\n paddingTop: \"22px\"\r\n },\r\n templateName: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n fontWeight: 700,\r\n cursor: \"default\",\r\n wordBreak: \"break-word\",\r\n },\r\n content: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n wordBreak: \"break-word\",\r\n },\r\n actionsBar: {\r\n justifyContent: \"space-between\",\r\n margin: \"40px 0\",\r\n flexWrap: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\",\r\n margin: \"20px 0\",\r\n \"& div\": { \r\n marginTop: \"5px\",\r\n },\r\n },\r\n },\r\n actionItems: {\r\n display: \"flex\",\r\n // width: \"45%\",\r\n justifyContent: \"flex-start\",\r\n \"& button\": {\r\n marginRight: \"40px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"2px\",\r\n }\r\n },\r\n },\r\n modalDeleteCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n padding: \"104px 32px 76px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n templateDetailsContainer: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"536px\",\r\n flexWrap: \"nowrap\",\r\n height: \"580px\",\r\n overflowY: \"scroll\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n padding: \"35px 40px 60px\",\r\n },\r\n modalSaveCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n padding: \"104px 32px 76px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalSendCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"580px\",\r\n overflowY: \"scroll\",\r\n flexWrap: \"nowrap\",\r\n padding: \"88px 38px 20px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalStatusCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n maxHeight: \"488px\",\r\n overflowY: \"scroll\",\r\n padding: \"88px 32px 50px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n },\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n TableContainer,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Checkbox,\r\n Grid,\r\n Modal,\r\n Typography,\r\n Button,\r\n} from \"@material-ui/core\";\r\nimport CheckedBoldBox from \"../../../../common/components/CheckedBoldBox\";\r\nimport Send from \"../../../../common/components/Actions/Send\";\r\nimport CheckAll from \"../../../../common/components/Actions/CheckAll\";\r\nimport Sort from \"../../../../common/components/Actions/Sort\";\r\nimport DeleteModal from \"../../../../common/components/DeleteModal\";\r\nimport MyTemplateDetails from \"./MyTemplateDetails\";\r\nimport {\r\n getTemplateById,\r\n getTemplates,\r\n removeTemplate,\r\n updateTemplate,\r\n} from \"../../../../data-services/Templates/TemplatesService\";\r\nimport { ITemplateModel } from \"../../../../models/TemplatesModel\";\r\nimport SendModal from \"../../../../common/components/SendModal\";\r\nimport { ISendModel, IShareManyModel } from \"../../../../models/SendModel\";\r\nimport { send, shareMany } from \"../../../../data-services/common/SendService\";\r\nimport StatusModal from \"../../../../common/components/StatusModal\";\r\nimport SaveChanges from \"../SaveChanges\";\r\nimport useStyles from \"./MyTemplates.style\";\r\nimport UncheckedboxSVG from \"../../../../common/components/UncheckedBox\";\r\nimport TestExportExcel from \"./TestExportExcel\";\r\nimport TestExportPdf from \"./TestExportPdf\";\r\nimport {\r\n getDetectorTypeFormatted,\r\n getDetectorTypeFormattedForFilterMenu,\r\n} from \"../../../../data-services/Templates/TemplateMapper\";\r\nimport { useAuth } from \"../../../../context/context\";\r\nimport { useInterval } from \"../../../../context/interval\";\r\nimport ExportModal from \"../../../../common/components/ExportModal\";\r\nimport Export from \"../../../../common/components/Actions/Export\";\r\nimport { exportDetectorsPDF } from \"../../../../common/components/Export/ExportPDF\";\r\nimport { exportDetectorsExcel } from \"../../../../common/components/Export/ExportExcel\";\r\nimport NothingSelectedModal from \"../../../../common/components/NothingSelectedModal\";\r\nimport useNothingIsSelectedModalStyles from \"../../../../common/styles/nothingIsSelectedModalGeneralStyle\";\r\nimport LoadingSpinner from \"../../../../LoadingSpinner\";\r\ninterface IMyTemplates {\r\n filtersData(data: any): void;\r\n selectedMyTemplates: string[];\r\n}\r\n\r\nconst MyTemplates: React.FC = (props) => {\r\n const classes = useStyles();\r\n const nothingIsSelectedModalStyles = useNothingIsSelectedModalStyles();\r\n const cellAlignment = \"left\";\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { filtersData, selectedMyTemplates } = props;\r\n\r\n const [templates, setTemplates] = useState([]);\r\n const [selectedTemplatesIds, setSelectedTemplatesIds] = useState(\r\n []\r\n );\r\n const [template, setTemplate] = useState();\r\n const [templateIdToRemove, setTemplateIdToRemove] = useState(\"\");\r\n const [templateIdToSave, setTemplateIdToSave] = useState(\"\");\r\n const [newTemplateName, setNewTemplateName] = useState(\"\");\r\n const [openDeleteModal, setOpenDeleteModal] = useState(false);\r\n const [openSaveModal, setOpenSaveModal] = useState(false);\r\n const [openStatusModal, setOpenStatusModal] = useState(false);\r\n const [openDetailsModal, setOpenDetailsModal] = useState(false);\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const [\r\n openExportNothingIsSelectedModal,\r\n setOpenExportNothingIsSelectedModal,\r\n ] = useState(false);\r\n const [openSendModal, setOpenSendModal] = useState(false);\r\n const [openSendNothingIsSelectedModal, setOpenSendNothingIsSelectedModal] =\r\n useState(false);\r\n const [sendStatus, setSendStatus] = useState(false);\r\n const [emailList, setEmailList] = useState([\"\"]);\r\n const timeZone = moment.tz.guess();\r\n const authStore = useAuth();\r\n const [currentLanguageCode, setCurrentLanguageCode] = useState(\r\n authStore?.getCurrentLanguageCode()\r\n );\r\n const [allSelected, setAllSelected] = useState(false);\r\n const [isFetching, setIsFetching] = useState(true);\r\n const [isSending, setIsSending] = useState(false);\r\n const [dataLeftToFetch, setDataLeftToFetch] = useState(true);\r\n const [offset, setOffset] = useState(0);\r\n const [allDataFetched, setAllDataFetched] = useState(false);\r\n\r\n const pageLimit = 100;\r\n\r\n const contactDetails =\r\n t(\"translation:SensorData.export.contactDetails\") +\r\n \" \" +\r\n authStore?.userHistory?.firstName +\r\n \", \" +\r\n authStore?.userHistory?.lastName +\r\n \", \" +\r\n authStore?.userHistory?.email;\r\n\r\n const handleOpenSendModal = () => {\r\n if (selectedTemplatesIds.length > 0 || template) {\r\n setOpenSendModal(true);\r\n setOpenDetailsModal(false);\r\n } else {\r\n setOpenSendNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n\r\n \r\n const handleOpenShareManyModal = () => {\r\n if (selectedTemplatesIds.length > 0) {\r\n setOpenSendModal(true);\r\n setTemplate(undefined);\r\n } else {\r\n setOpenSendNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseSendModal = () => {\r\n setOpenSendModal(false);\r\n setOpenSendNothingIsSelectedModal(false);\r\n setTemplate(undefined);\r\n };\r\n\r\n const handleOpenStatusModal = () => {\r\n setOpenStatusModal(true);\r\n };\r\n\r\n const handleCloseStatusModal = () => {\r\n setOpenStatusModal(false);\r\n setEmailList([\"\"]);\r\n window.location.reload();\r\n };\r\n\r\n const allMyTemplatesIds = templates.map(\r\n (template: ITemplateModel) => template.templateSensorId\r\n );\r\n\r\n const handleCheck = (\r\n event: React.ChangeEvent,\r\n template: ITemplateModel\r\n ) => {\r\n if (event.target.checked) {\r\n fetchTemplateById(template.templateSensorId);\r\n setTemplate(undefined);\r\n\r\n setSelectedTemplatesIds(\r\n selectedTemplatesIds.concat(template.templateSensorId)\r\n );\r\n // setSelectedTemplatesNames(\r\n // selectedTemplatesNames.concat(template.templateName)\r\n // );\r\n } else {\r\n setTemplate(undefined);\r\n\r\n setSelectedTemplatesIds(\r\n selectedTemplatesIds.filter((id) => id !== template.templateSensorId)\r\n );\r\n }\r\n };\r\n\r\n const getSelectedTemplatesNames = () => {\r\n if (template) {\r\n return template.templateName;\r\n } else {\r\n return templates\r\n .filter((template) =>\r\n selectedTemplatesIds.includes(template.templateSensorId)\r\n )\r\n .map((template) => template.templateName)\r\n .join(\", \");\r\n }\r\n };\r\n\r\n const myTemplatesSortingOptions = [\r\n { name: t(\"translation:common.sortByLastUploadDate\"), key: \"date\" },\r\n { name: t(\"translation:common.sortByTemplateName\"), key: \"name\" },\r\n { name: t(\"translation:common.sortByDetectorType\"), key: \"detectorType\" },\r\n ];\r\n\r\n const sortMyTemplatesByName = (myTemplatesToSort: ITemplateModel[]) => {\r\n setSortedBy(\"name\");\r\n return myTemplatesToSort.sort((a, b) => {\r\n if (a.templateName.toUpperCase() < b.templateName.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.templateName.toUpperCase() > b.templateName.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n };\r\n\r\n const sortMyTemplByDetectorType = (myTemplatesToSort: ITemplateModel[]) => {\r\n setSortedBy(\"detectorType\");\r\n return myTemplatesToSort.sort((a, b) => {\r\n const detectorTypeA = getDetectorTypeFormatted(a, t);\r\n const detectorTypeB = getDetectorTypeFormatted(b, t);\r\n\r\n if (detectorTypeA.toUpperCase() < detectorTypeB.toUpperCase()) {\r\n return -1;\r\n }\r\n if (detectorTypeA.toUpperCase() > detectorTypeB.toUpperCase()) {\r\n return 1;\r\n }\r\n if (a.templateName.toUpperCase() < b.templateName.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.templateName.toUpperCase() > b.templateName.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n };\r\n\r\n const sortMyTemplatesByDate = (myTemplatesToSort: ITemplateModel[]) => {\r\n setSortedBy(\"date\");\r\n return myTemplatesToSort.sort((a, b) => {\r\n if (moment(b.lastUpload).isAfter(a.lastUpload)) {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n };\r\n\r\n const sortMyTemplates = (key: string, myTemplates: ITemplateModel[] = []) => {\r\n let myTemplatesToSort = [];\r\n if (myTemplates.length > 0) {\r\n myTemplatesToSort = myTemplates;\r\n } else {\r\n myTemplatesToSort = [...templates];\r\n }\r\n setSortedBy(key);\r\n\r\n if (dataLeftToFetch) {\r\n fetchTemplateData(false, key, 0, pageLimit);\r\n setOffset(0);\r\n } else {\r\n switch (key) {\r\n case \"name\":\r\n setTemplates(sortMyTemplatesByName(myTemplatesToSort));\r\n break;\r\n case \"detectorType\":\r\n setTemplates(sortMyTemplByDetectorType(myTemplatesToSort));\r\n break;\r\n default:\r\n setTemplates(sortMyTemplatesByDate(myTemplatesToSort));\r\n }\r\n }\r\n };\r\n\r\n const fetchTemplateById = async (templateId: string) => {\r\n if (\r\n templates[templates.map((e) => e.templateSensorId).indexOf(templateId)]\r\n .uploadedAt != null\r\n ) {\r\n setTemplate(\r\n templates[templates.map((e) => e.templateSensorId).indexOf(templateId)]\r\n );\r\n return;\r\n }\r\n const { data } = await getTemplateById(\r\n templateId,\r\n false,\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n\r\n if (data == null) {\r\n return;\r\n }\r\n\r\n let myTemplate = data as ITemplateModel;\r\n\r\n templates.splice(\r\n templates\r\n .map((e) => e.templateSensorId)\r\n .indexOf(myTemplate?.templateSensorId),\r\n 1,\r\n myTemplate\r\n );\r\n setTemplates(templates);\r\n setTemplate(myTemplate);\r\n };\r\n\r\n const fetchTemplateData = async (\r\n withFullInfo: boolean = false,\r\n sortBy: string = \"name\",\r\n offset: number = 0,\r\n limit: number = 100\r\n ) => {\r\n if (!dataLeftToFetch && !withFullInfo) return;\r\n\r\n if (allSelected && withFullInfo) {\r\n return;\r\n }\r\n\r\n if (withFullInfo) {\r\n setAllSelected(true);\r\n\r\n setIsFetching(true);\r\n setDataLeftToFetch(false);\r\n offset = 0;\r\n limit = 9999;\r\n sortBy = \"none\";\r\n }\r\n\r\n const { data } = await getTemplates(\r\n authStore?.getImpersonatedUserEmail() || null,\r\n withFullInfo,\r\n sortBy,\r\n offset,\r\n limit\r\n );\r\n if (data) {\r\n let newData: any = [];\r\n if (offset > 0) {\r\n newData = [...templates, ...data];\r\n\r\n if (sortBy == \"detectorType\") {\r\n setTemplates(sortMyTemplByDetectorType(newData));\r\n } else {\r\n setTemplates(newData);\r\n }\r\n } else {\r\n newData = data;\r\n if (withFullInfo) {\r\n // just sort and set templates\r\n //sortMyTemplates(sortedBy, newData);\r\n switch (sortBy) {\r\n case \"name\":\r\n setTemplates(sortMyTemplatesByName(newData));\r\n break;\r\n case \"detectorType\":\r\n setTemplates(sortMyTemplByDetectorType(newData));\r\n break;\r\n default:\r\n setTemplates(sortMyTemplatesByDate(newData));\r\n }\r\n } else {\r\n // The sort by detector type is done on frontend for better performance\r\n // Avoid an extra JOIN just for the sorting\r\n if (sortBy == \"detectorType\") {\r\n setTemplates(sortMyTemplByDetectorType(newData));\r\n } else {\r\n setTemplates([...newData]);\r\n }\r\n }\r\n }\r\n\r\n setIsFetching(false);\r\n\r\n if (withFullInfo) {\r\n setAllDataFetched(true);\r\n setSelectedTemplatesIds(\r\n newData.map((t: ITemplateModel) => t.templateSensorId)\r\n );\r\n }\r\n\r\n if (data.length < pageLimit) {\r\n setDataLeftToFetch(false);\r\n }\r\n\r\n filtersData(newData);\r\n }\r\n };\r\n\r\n useInterval(() => {\r\n if (currentLanguageCode !== authStore?.getCurrentLanguageCode()) {\r\n setCurrentLanguageCode(authStore?.getCurrentLanguageCode());\r\n filtersData(templates);\r\n }\r\n }, 300);\r\n\r\n const handleScroll = (e: any) => {\r\n if (\r\n e.target.documentElement.scrollTop + window.innerHeight + 1 >=\r\n e.target.documentElement.scrollHeight\r\n ) {\r\n setIsFetching(true);\r\n //fetchData(false, sortedBy, offset, pageLimit);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchTemplateData(false, sortedBy, 0, 100);\r\n window.addEventListener(\"scroll\", handleScroll);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!dataLeftToFetch) {\r\n if (allDataFetched) {\r\n setIsFetching(false);\r\n return;\r\n }\r\n if (allSelected) return;\r\n setIsFetching(false);\r\n }\r\n if (!isFetching) {\r\n return;\r\n }\r\n if (templates.length > 0) {\r\n setOffset(offset + pageLimit);\r\n fetchTemplateData(false, sortedBy, offset + pageLimit, pageLimit);\r\n }\r\n }, [isFetching]);\r\n\r\n const deleteTemplate = async (sensorSettingId: string): Promise => {\r\n try {\r\n const { status } = await removeTemplate(\r\n sensorSettingId,\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n if (status === \"success\") {\r\n setTemplates(prevData => {\r\n let copiedTemplates = prevData;\r\n return [...copiedTemplates.filter(temp => temp.templateSensorId !== sensorSettingId)]\r\n })\r\n setSelectedTemplatesIds([]);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const [sortedBy, setSortedBy] = useState(myTemplatesSortingOptions[0].key);\r\n\r\n const handleChangeSelect = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setSortedBy(event.target.value as string);\r\n };\r\n\r\n const handleOpenDeleteModal = (id: string) => {\r\n setTemplateIdToRemove(id);\r\n setOpenDeleteModal(true);\r\n };\r\n\r\n const handleCloseDeleteModal = () => {\r\n setOpenDeleteModal(false);\r\n setTemplate(undefined);\r\n };\r\n\r\n const handleOpenSaveModal = (templateSensorId: string) => {\r\n setTemplateIdToSave(templateSensorId);\r\n setOpenSaveModal(true);\r\n };\r\n\r\n const handleCloseSaveModal = () => {\r\n setTemplateIdToSave(\"\");\r\n setOpenSaveModal(false);\r\n };\r\n\r\n const handleOpenDetailsModal = (template: ITemplateModel) => {\r\n fetchTemplateById(template.templateSensorId);\r\n setOpenDetailsModal(true);\r\n setNewTemplateName(\"\");\r\n };\r\n\r\n const handleCloseDetailsModal = () => {\r\n setOpenDetailsModal(false);\r\n setTemplate(undefined);\r\n };\r\n\r\n const handleOpenExportModal = () => {\r\n if (selectedTemplatesIds.length > 0) {\r\n setOpenExportModal(true);\r\n } else {\r\n setOpenExportNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n setOpenExportModal(false);\r\n setOpenExportNothingIsSelectedModal(false);\r\n setTemplate(undefined);\r\n };\r\n\r\n const getEmailListWithoutEmptyFields = () => {\r\n let res = [];\r\n for (let i = 0; i < emailList.length; ++i) {\r\n if (emailList[i].length !== 0) {\r\n res.push(emailList[i]);\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n const sendTemplate = async (): Promise => {\r\n let data: ISendModel | undefined;\r\n\r\n if (template) {\r\n data = {\r\n emails: getEmailListWithoutEmptyFields(),\r\n setting: {\r\n favoriteName: template.templateName,\r\n bleSensorInformationId: template.bleSensorInformationId,\r\n userConfigModel: template.userConfigModel,\r\n sensorProfile: template.sensorProfile,\r\n zones: template.zones,\r\n wiredPushButtonModel: template.wiredPushButtonModel,\r\n daliPushButtonModel: template.daliPushButtonModel,\r\n blePushButtonModel: template.blePushButtonModel,\r\n getSetTunableWhiteListModelReply:\r\n template.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply:\r\n template.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies:\r\n template.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply:\r\n template.getSetWirelessLinkFunctionModelReply,\r\n controlGearDeviceCount: template.controlGearDeviceCount,\r\n inputDeviceCount: template.inputDeviceCount,\r\n hvacShortAddressExternalRelay: template.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay:\r\n template.cutOffShortAddressExternalRelay,\r\n daliBusDevices: template.daliBusDevices,\r\n },\r\n };\r\n }\r\n handleCloseSendModal();\r\n handleCloseDetailsModal();\r\n\r\n try {\r\n if (data) {\r\n\r\n const { status } = await send(data);\r\n handleOpenStatusModal();\r\n status === \"success\" ? setSendStatus(true) : setSendStatus(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const shareTemplates = async (): Promise => {\r\n let data: IShareManyModel | undefined;\r\n\r\n if (templates.length > 0) {\r\n data = {\r\n emails: getEmailListWithoutEmptyFields(),\r\n settings: templates\r\n .filter((template) =>\r\n selectedTemplatesIds.includes(template.templateSensorId)\r\n )\r\n .map((template) => ({\r\n favoriteName: template.templateName,\r\n bleSensorInformationId: template.bleSensorInformationId,\r\n userConfigModel: template.userConfigModel,\r\n sensorProfile: template.sensorProfile,\r\n zones: template.zones,\r\n wiredPushButtonModel: template.wiredPushButtonModel,\r\n daliPushButtonModel: template.daliPushButtonModel,\r\n blePushButtonModel: template.blePushButtonModel,\r\n getSetTunableWhiteListModelReply:\r\n template.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply:\r\n template.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies:\r\n template.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply:\r\n template.getSetWirelessLinkFunctionModelReply,\r\n controlGearDeviceCount: template.controlGearDeviceCount,\r\n inputDeviceCount: template.inputDeviceCount,\r\n hvacShortAddressExternalRelay:\r\n template.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay:\r\n template.cutOffShortAddressExternalRelay,\r\n daliBusDevices: template.daliBusDevices,\r\n })),\r\n };\r\n }\r\n setIsSending(true);\r\n\r\n handleCloseSendModal();\r\n handleCloseDetailsModal();\r\n\r\n try {\r\n if (data) {\r\n const { status } = await shareMany(data);\r\n setIsSending(false);\r\n handleOpenStatusModal();\r\n status === \"success\" ? setSendStatus(true) : setSendStatus(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const getStatusContent = () => {\r\n if (sendStatus) {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:Templates_Mytemplates.sendStatus.successContent\")}\r\n \r\n \r\n \r\n \r\n {t(\r\n \"translation:Templates_Mytemplates.sendStatus.successContentInfo\"\r\n )}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {t(\"translation:Templates_Mytemplates.sendStatus.failedContent\")}\r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n const editTemplate = async (\r\n id: string | undefined,\r\n newName: string\r\n ): Promise => {\r\n try {\r\n if (id) {\r\n const { status } = await updateTemplate(\r\n { id, name: newName },\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n\r\n console.log(id)\r\n if (status === \"success\") {\r\n\r\n const exists = templates.findIndex( temp => temp.templateSensorId === id);\r\n\r\n if(exists === -1) return; \r\n\r\n setTemplates(prevTemplates => {\r\n let copiedTemplates = [...prevTemplates];\r\n copiedTemplates[exists] = {...copiedTemplates[exists], templateName: newName}\r\n return [...copiedTemplates]\r\n })\r\n\r\n }\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const handleSaveChanges = (templateSensorId: string) => {\r\n editTemplate(templateSensorId, newTemplateName);\r\n };\r\n\r\n const getPinCodeStr = (template: ITemplateModel) => {\r\n if (template.pinCode) {\r\n return template.pinCode;\r\n }\r\n return t(\"translation:Templates_Mytemplates.details.noPinCode\");\r\n };\r\n\r\n const getTemplatedIdsFromSelectedFilters = () => {\r\n return templates\r\n .filter((myTemplates) => {\r\n if (selectedMyTemplates.length === 0) {\r\n return true;\r\n }\r\n return selectedMyTemplates.includes(\r\n getDetectorTypeFormattedForFilterMenu(myTemplates, t)\r\n );\r\n })\r\n .map((template: ITemplateModel) => {\r\n return template.templateSensorId;\r\n });\r\n };\r\n\r\n const exportPDF = () => {\r\n try {\r\n let selectedTemplates = templates.filter((template) =>\r\n selectedTemplatesIds.includes(template.templateSensorId)\r\n );\r\n exportDetectorsPDF(selectedTemplates, false, contactDetails, \"Templates\");\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n\r\n const exportExcel = () => {\r\n try {\r\n let selectedTemplates = templates.filter((template) =>\r\n selectedTemplatesIds.includes(template.templateSensorId)\r\n );\r\n exportDetectorsExcel(selectedTemplates, false, \"Templates\");\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {\r\n (isFetching || isSending)\r\n &&\r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n {openSendModal && (\r\n \r\n )}\r\n {openSendNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n deleteTemplate(templateIdToRemove);\r\n handleCloseDeleteModal();\r\n }}\r\n closeModal={handleCloseDeleteModal}\r\n />\r\n \r\n \r\n \r\n \r\n handleSaveChanges(templateIdToSave)}\r\n closeModal={handleCloseSaveModal}\r\n />\r\n \r\n \r\n \r\n \r\n {template && (\r\n handleCloseDetailsModal()}\r\n removeTemplate={deleteTemplate}\r\n openSendModal={handleOpenSendModal}\r\n newName={newTemplateName}\r\n setNewName={setNewTemplateName}\r\n openDeleteModal={() => {\r\n handleOpenDeleteModal(template.templateSensorId);\r\n }}\r\n openSaveModal={() =>\r\n handleOpenSaveModal(template.templateSensorId)\r\n }\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n fetchTemplateData(true)}\r\n />\r\n \r\n\r\n \r\n 0\r\n ? openExportModal\r\n : openExportNothingIsSelectedModal\r\n }\r\n onClose={handleCloseExportModal}\r\n >\r\n \r\n {openExportModal && (\r\n \r\n )}\r\n {openExportNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\r\n \"translation:Templates_Mytemplates.tableHeadings.templateName\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Templates_Mytemplates.tableHeadings.detectorType\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Templates_Mytemplates.tableHeadings.lastUpload\"\r\n )}\r\n \r\n \r\n {t(\"translation:Templates_Mytemplates.tableHeadings.pinCode\")}\r\n \r\n \r\n \r\n \r\n {templates\r\n .filter((myTemplates) => {\r\n if (selectedMyTemplates.length === 0) {\r\n return true;\r\n }\r\n return selectedMyTemplates.includes(\r\n getDetectorTypeFormattedForFilterMenu(myTemplates, t)\r\n );\r\n })\r\n .map((template: ITemplateModel) => (\r\n \r\n \r\n id === template.templateSensorId\r\n )}\r\n onChange={(event) => handleCheck(event, template)}\r\n checkedIcon={}\r\n inputProps={{ \"aria-labelledby\": \"checkbox\" }}\r\n icon={}\r\n disableRipple\r\n />\r\n \r\n \r\n handleOpenDeleteModal(template.templateSensorId)\r\n }\r\n >\r\n \"favorite\"\r\n \r\n handleOpenDetailsModal(template)}\r\n >\r\n {template.templateName}\r\n \r\n handleOpenDetailsModal(template)}>\r\n {getDetectorTypeFormatted(template, t)}\r\n \r\n handleOpenDetailsModal(template)}>\r\n {moment\r\n .tz(template.lastUpload, timeZone)\r\n .format(\"DD.MM.YYYY\")}\r\n \r\n handleOpenDetailsModal(template)}>\r\n {getPinCodeStr(template)}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default MyTemplates;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport { commonParagraph14px } from \"../../../../common/styles/typography\";\r\nimport { lightButtonWithBorder } from \"../../../../common/styles/buttonStyles\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n closeIcon: {\r\n paddingBottom: \"18px\",\r\n alignSelf: \"flex-end\",\r\n cursor: \"default\",\r\n },\r\n templateActions: {\r\n display: \"flex\",\r\n justifyContent: \"space-around\",\r\n width: \"100%\",\r\n padding: \"16px 0 75px\",\r\n \"& button\": {\r\n ...lightButtonWithBorder,\r\n \"&.MuiButton-contained:hover\": {\r\n boxShadow: \"none\",\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n },\r\n infoItem: {\r\n borderBottom: `0.5px solid ${colors.primaryColor}`,\r\n padding: \"7px 24px\",\r\n fontSize: \"14px\",\r\n cursor: \"default\",\r\n \"&.MuiListItem-button:hover\": {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n },\r\n list: {\r\n width: \"100%\",\r\n },\r\n closeButton: {\r\n \"& button\": {\r\n width: \"352px\",\r\n },\r\n marginTop: theme.spacing(5),\r\n },\r\n inputName: {\r\n marginLeft: \"10px\",\r\n padding: \"1px 16px\",\r\n borderRadius: \"24px\",\r\n backgroundColor: colors.veryLightGreyColor,\r\n \"& input\": {\r\n fontSize: \"14px\",\r\n color: colors.primaryColor,\r\n },\r\n cursor: \"default\",\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n primaryStyle: {\r\n display: \"inline-block\",\r\n fontWeight: 700,\r\n ...commonParagraph14px,\r\n },\r\n secondaryStyle: {\r\n display: \"inline-block\",\r\n color: colors.primaryColor,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment-timezone\";\r\nimport {\r\n Grid,\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Button,\r\n Modal,\r\n} from \"@material-ui/core\";\r\nimport Export from \"../../../../common/components/Actions/Export\";\r\nimport ExportModal from \"../../../../common/components/ExportModal\";\r\nimport Send from \"../../../../common/components/Actions/Send\";\r\nimport { IReceivedTemplateModel } from \"../../../../models/TemplatesModel\";\r\nimport SensorDataComponent from \"../../../../common/components/SensorDataComponent/SensorDataComponent\";\r\nimport { exportDetectorsPDF } from \"../../../../common/components/Export/ExportPDF\";\r\nimport { exportDetectorsExcel } from \"../../../../common/components/Export/ExportExcel\";\r\nimport useTypographyStyles from \"../../../../common/styles/typography\";\r\nimport useButtonStyles from \"../../../../common/styles/buttonStyles\";\r\nimport useStyles from \"./ReceivedTemplatesDetails.style\";\r\nimport { getDetectorTypeFormatted } from \"../../../../data-services/Templates/TemplateMapper\";\r\nimport { useAuth } from \"../../../../context/context\";\r\n\r\ninterface IReceivedTemplatesDetails {\r\n receivedTemplate: IReceivedTemplateModel;\r\n closeModal(): void;\r\n openSendModal(): void;\r\n}\r\n\r\nconst ReceivedTemplatesDetails: React.FC = (\r\n props\r\n) => {\r\n const classes = useStyles();\r\n const typoClasses = useTypographyStyles();\r\n const buttonStyles = useButtonStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n const timeZone = moment.tz.guess();\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const authStore = useAuth();\r\n const { receivedTemplate, closeModal, openSendModal } = props;\r\n\r\n const contactDetails = t(\"translation:SensorData.export.contactDetails\")\r\n + ' ' + authStore?.userHistory?.firstName + ', '\r\n + authStore?.userHistory?.lastName + ', '\r\n + authStore?.userHistory?.email;\r\n\r\n const handleOpenExportModal = () => {\r\n setOpenExportModal(true);\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n //setOpenExportModal(false);\r\n closeModal();\r\n };\r\n\r\n const exportPDF = () => {\r\n try {\r\n exportDetectorsPDF([receivedTemplate], false, contactDetails);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n const exportExcel = () => {\r\n try {\r\n exportDetectorsExcel([receivedTemplate], false);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {openExportModal ? (\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \"close\"\r\n \r\n \r\n \r\n {!!receivedTemplate.templateName\r\n ? receivedTemplate.templateName\r\n : `${receivedTemplate.sensorInformation.name}\r\n ${t(\r\n `translation:BLE_SENSOR_INFORMATION.${receivedTemplate.sensorInformation.detectorFamily}`\r\n )}\r\n ${t(\r\n `translation:BLE_SENSOR_INFORMATION.${receivedTemplate.detectorType}`\r\n )}`}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\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 ReceivedTemplatesDetails;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport {\r\n commonParagraph,\r\n commonParagraph14px,\r\n} from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n receivedTemplatesContainer: {\r\n paddingTop: theme.spacing(4),\r\n },\r\n actionsBar: {\r\n justifyContent: \"space-between\",\r\n margin: \"40px 0\",\r\n flexWrap: \"nowrap\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n flexWrap: \"wrap\",\r\n justifyContent: \"center\",\r\n margin: \"20px 0\",\r\n \"& div\": { \r\n marginTop: \"5px\",\r\n },\r\n },\r\n },\r\n actionItems: {\r\n display: \"flex\",\r\n // width: \"45%\",\r\n justifyContent: \"flex-start\",\r\n \"& button\": {\r\n marginRight: \"40px\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n marginRight: \"2px\",\r\n }\r\n },\r\n },\r\n table: {\r\n tableLayout: \"fixed\",\r\n \"& th\": {\r\n borderBottom: \"none\",\r\n },\r\n \"& td\": {\r\n cursor: \"pointer\",\r\n borderBottom: \"none\",\r\n [theme.breakpoints.down(\"sm\")]: {\r\n padding: \"6px !important\",\r\n },\r\n },\r\n \"& tr\": {\r\n borderBottom: `1px solid ${colors.veryLightGreyColor}`,\r\n },\r\n \"& tr:hover\": {\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n \"& tr:last-child\":{\r\n borderBottom: \"none\",\r\n }\r\n },\r\n headingRow: {\r\n backgroundColor: colors.secondaryColor,\r\n },\r\n columnName: {\r\n color: colors.darkGreyColor,\r\n fontWeight: 800,\r\n ...commonParagraph14px,\r\n },\r\n check: {\r\n paddingRight: \"7px\",\r\n width: \"20px\",\r\n height: \"20px\",\r\n \"& span\": {\r\n padding: 0,\r\n cursor: 'pointer',\r\n\r\n },\r\n },\r\n templateName: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n fontWeight: 700,\r\n cursor: \"default\",\r\n wordBreak: \"break-word\",\r\n },\r\n content: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n wordBreak: \"break-word\",\r\n },\r\n detailsModalContainer: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"536px\",\r\n flexWrap: \"nowrap\",\r\n height: \"580px\",\r\n overflowY: \"scroll\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n padding: \"35px 40px 60px\",\r\n },\r\n modalDeleteCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n padding: \"88px 32px 70px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalExportCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"488px\",\r\n paddingTop: theme.spacing(13),\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalSendCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n height: \"580px\",\r\n overflowY: \"scroll\",\r\n flexWrap: \"nowrap\",\r\n padding: \"88px 38px 20px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n },\r\n modalStatusCard: {\r\n top: \"50%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n width: \"508px\",\r\n maxHeight: \"488px\",\r\n overflowY: \"scroll\",\r\n padding: \"88px 32px 50px\",\r\n position: \"absolute\",\r\n backgroundColor: colors.secondaryColor,\r\n alignItems: \"center\",\r\n flexWrap: \"nowrap\",\r\n },\r\n modalParagraph: {\r\n marginBottom: theme.spacing(6),\r\n color: colors.darkerGreyColor,\r\n textAlign: \"center\",\r\n ...commonParagraph,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport moment from \"moment-timezone\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n TableContainer,\r\n Grid,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Checkbox,\r\n Modal,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport CheckAll from \"../../../../common/components/Actions/CheckAll\";\r\nimport Send from \"../../../../common/components/Actions/Send\";\r\nimport Delete from \"../../../../common/components/Actions/Delete\";\r\nimport Sort from \"../../../../common/components/Actions/Sort\";\r\nimport CheckedBoldBox from \"../../../../common/components/CheckedBoldBox\";\r\nimport ReceivedTemplatesDetails from \"./ReceivedTemplatesDetails\";\r\nimport {\r\n getReceivedTemplates,\r\n getTemplateById,\r\n removeReceivedTemplate,\r\n} from \"../../../../data-services/Templates/TemplatesService\";\r\nimport { send, shareMany } from \"../../../../data-services/common/SendService\";\r\nimport { IReceivedTemplateModel } from \"../../../../models/TemplatesModel\";\r\nimport SendModal from \"../../../../common/components/SendModal\";\r\nimport DeleteModal from \"../../../../common/components/DeleteModal\";\r\nimport ExportModal from \"../../../../common/components/ExportModal\";\r\nimport { ISendModel, IShareManyModel } from \"../../../../models/SendModel\";\r\nimport StatusModal from \"../../../../common/components/StatusModal\";\r\nimport useStyles from \"./ReceivedTemplates.style\";\r\nimport UncheckedboxSVG from \"../../../../common/components/UncheckedBox\";\r\nimport {\r\n getDetectorTypeFormatted,\r\n getDetectorTypeFormattedForFilterMenu,\r\n} from \"../../../../data-services/Templates/TemplateMapper\";\r\nimport { useAuth } from \"../../../../context/context\";\r\nimport { useInterval } from \"../../../../context/interval\";\r\nimport useNothingIsSelectedModalStyles from \"../../../../common/styles/nothingIsSelectedModalGeneralStyle\";\r\nimport NothingSelectedModal from \"../../../../common/components/NothingSelectedModal\";\r\nimport LoadingSpinner from \"../../../../LoadingSpinner\";\r\n\r\ninterface IReceivedTemplates {\r\n filtersData(data: any): void;\r\n selectedReceivedTemplates: string[];\r\n}\r\n\r\nconst ReceivedTemplates: React.FC = (props) => {\r\n const classes = useStyles();\r\n const nothingIsSelectedModalStyles = useNothingIsSelectedModalStyles();\r\n const cellAlignment = \"left\";\r\n const { t } = useTranslation([\"translation\"]);\r\n const timeZone = moment.tz.guess();\r\n const [selectedReceivedTemplatesIds, setSelectedReceivedTemplatesIds] =\r\n useState([]);\r\n const [openStatusModal, setOpenStatusModal] = useState(false);\r\n const [openDetailsModal, setOpenDetailsModal] = useState(false);\r\n const [openExportModal, setOpenExportModal] = useState(false);\r\n const [idTemplateToRemove, setIdTemplateToRemove] = useState(\"\");\r\n const [receivedTemplates, setReceivedTemplates] = useState<\r\n IReceivedTemplateModel[]\r\n >([]);\r\n const [receivedTemplate, setReceivedTemplate] =\r\n useState();\r\n const [sendStatus, setSendStatus] = useState(false);\r\n const [emailList, setEmailList] = useState([\"\"]);\r\n\r\n const [openSendModal, setOpenSendModal] = useState(false);\r\n const [openSendNothingIsSelectedModal, setOpenSendNothingIsSelectedModal] =\r\n useState(false);\r\n const [openDeleteModal, setOpenDeleteModal] = useState(false);\r\n const [\r\n openDeleteNothingIsSelectedModal,\r\n setOpenDeleteNothingIsSelectedModal,\r\n ] = useState(false);\r\n\r\n const { filtersData, selectedReceivedTemplates } = props;\r\n\r\n const authStore = useAuth();\r\n const [currentLanguageCode, setCurrentLanguageCode] = useState(\r\n authStore?.getCurrentLanguageCode()\r\n );\r\n const [allSelected, setAllSelected] = useState(false);\r\n const [isFetching, setIsFetching] = useState(false);\r\n const [dataLeftToFetch, setDataLeftToFetch] = useState(true);\r\n const [offset, setOffset] = useState(0);\r\n const [allDataFetched, setAllDataFetched] = useState(false);\r\n\r\n const pageLimit = 100;\r\n\r\n const handleCheck = (\r\n event: React.ChangeEvent,\r\n template: IReceivedTemplateModel\r\n ) => {\r\n if (event.target.checked) {\r\n fetchTemplateById(template.templateSensorId);\r\n setSelectedReceivedTemplatesIds(\r\n selectedReceivedTemplatesIds.concat(template.templateSensorId)\r\n );\r\n } else {\r\n setSelectedReceivedTemplatesIds(\r\n selectedReceivedTemplatesIds.filter(\r\n (id) => id !== template.templateSensorId\r\n )\r\n );\r\n }\r\n };\r\n\r\n const receivedTemplatesSortingOptions = [\r\n { name: t(\"translation:common.sortByReceivedOn\"), key: \"receivedDate\" },\r\n { name: t(\"translation:common.sortByTemplateName\"), key: \"name\" },\r\n { name: t(\"translation:common.sortByDetectorType\"), key: \"detectorType\" },\r\n { name: t(\"translation:common.sortByReceivedFrom\"), key: \"sender\" },\r\n ];\r\n\r\n const [sortedBy, setSortedBy] = useState(\r\n receivedTemplatesSortingOptions[0].key\r\n );\r\n\r\n const handleChangeSelect = (event: React.ChangeEvent<{ value: unknown }>) => {\r\n setSortedBy(event.target.value as string);\r\n };\r\n\r\n const handleOpenDetailsModal = (template: IReceivedTemplateModel) => {\r\n fetchTemplateById(template.templateSensorId);\r\n setOpenDetailsModal(true);\r\n //setReceivedTemplate(template);\r\n };\r\n\r\n const handleCloseDetailsModal = () => {\r\n setOpenDetailsModal(false);\r\n setReceivedTemplate(undefined);\r\n };\r\n\r\n const handleOpenDeleteModal = (id: string) => {\r\n if (selectedReceivedTemplatesIds.length > 0) {\r\n setIdTemplateToRemove(id);\r\n setOpenDeleteModal(true);\r\n } else {\r\n setOpenDeleteNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseDeleteModal = () => {\r\n setOpenDeleteModal(false);\r\n setOpenDeleteNothingIsSelectedModal(false);\r\n };\r\n\r\n const handleOpenSendModal = () => {\r\n if (selectedReceivedTemplatesIds.length > 0 || receivedTemplate) {\r\n setOpenSendModal(true);\r\n setOpenDetailsModal(false);\r\n } else {\r\n setOpenSendNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleOpenShareManyModal = () => {\r\n if (selectedReceivedTemplatesIds.length > 0) {\r\n setOpenSendModal(true);\r\n setReceivedTemplate(undefined);\r\n } else {\r\n setOpenSendNothingIsSelectedModal(true);\r\n }\r\n };\r\n\r\n const handleCloseSendModal = () => {\r\n setOpenSendModal(false);\r\n setOpenSendNothingIsSelectedModal(false);\r\n setReceivedTemplate(undefined);\r\n };\r\n\r\n const handleOpenExportModal = () => {\r\n setOpenExportModal(true);\r\n };\r\n\r\n const handleCloseExportModal = () => {\r\n setOpenExportModal(false);\r\n setReceivedTemplate(undefined);\r\n };\r\n\r\n const handleOpenStatusModal = () => {\r\n setOpenStatusModal(true);\r\n };\r\n\r\n const handleCloseStatusModal = () => {\r\n setOpenStatusModal(false);\r\n setEmailList([\"\"]);\r\n window.location.reload();\r\n };\r\n\r\n const sortTemplatesByName = (templatesToSort: IReceivedTemplateModel[]) => {\r\n setSortedBy(\"name\");\r\n return templatesToSort.sort((a, b) => {\r\n const templateNameA = !!a.templateName\r\n ? a.templateName\r\n : `${a.sensorInformation.name}\r\n ${t(`translation:BLE_SENSOR_INFORMATION.${a.detectorFamily}`)}\r\n ${t(`translation:BLE_SENSOR_INFORMATION.${a.detectorType}`)}`;\r\n const templateNameB = !!b.templateName\r\n ? b.templateName\r\n : `${b.sensorInformation.name}\r\n ${t(`translation:BLE_SENSOR_INFORMATION.${b.detectorFamily}`)}\r\n ${t(`translation:BLE_SENSOR_INFORMATION.${b.detectorType}`)}`;\r\n\r\n if (templateNameA.toUpperCase() < templateNameB.toUpperCase()) {\r\n return -1;\r\n }\r\n if (templateNameA.toUpperCase() > templateNameB.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n };\r\n\r\n const sortTemplatesByDetectorType = (\r\n templatesToSort: IReceivedTemplateModel[]\r\n ) => {\r\n setSortedBy(\"detectorType\");\r\n return templatesToSort.sort((a, b) => {\r\n const detectorTypeA = getDetectorTypeFormatted(a, t);\r\n const detectorTypeB = getDetectorTypeFormatted(b, t);\r\n\r\n if (detectorTypeA.toUpperCase() < detectorTypeB.toUpperCase()) {\r\n return -1;\r\n }\r\n if (detectorTypeA.toUpperCase() > detectorTypeB.toUpperCase()) {\r\n return 1;\r\n }\r\n if (a.templateName.toUpperCase() < b.templateName.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.templateName.toUpperCase() > b.templateName.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n };\r\n\r\n const sortTemplatesByDate = (templatesToSort: IReceivedTemplateModel[]) => {\r\n setSortedBy(\"receivedDate\");\r\n return templatesToSort.sort((a, b) => {\r\n if (moment(b.receivedOn).isAfter(a.receivedOn)) {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n };\r\n\r\n const sortTemplatesBySender = (templatesToSort: IReceivedTemplateModel[]) => {\r\n setSortedBy(\"sender\");\r\n return templatesToSort.sort((a, b) => {\r\n if (a.receivedFrom.toUpperCase() < b.receivedFrom.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.receivedFrom.toUpperCase() > b.receivedFrom.toUpperCase()) {\r\n return 1;\r\n }\r\n if (a.templateName.toUpperCase() < b.templateName.toUpperCase()) {\r\n return -1;\r\n }\r\n if (a.templateName.toUpperCase() > b.templateName.toUpperCase()) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n };\r\n\r\n const sortReceivedTemplates = (\r\n key: string,\r\n dataTemplates: IReceivedTemplateModel[] = []\r\n ) => {\r\n let templatesToSort = [];\r\n if (dataTemplates.length > 0) {\r\n templatesToSort = dataTemplates;\r\n } else {\r\n templatesToSort = [...receivedTemplates];\r\n }\r\n\r\n setSortedBy(key);\r\n\r\n if (dataLeftToFetch) {\r\n fetchReceivedTemplates(false, key, 0, pageLimit);\r\n setOffset(0);\r\n } else {\r\n switch (key) {\r\n case \"name\":\r\n setReceivedTemplates(sortTemplatesByName(templatesToSort));\r\n break;\r\n case \"detectorType\":\r\n setReceivedTemplates(sortTemplatesByDetectorType(templatesToSort));\r\n break;\r\n case \"receivedDate\":\r\n setReceivedTemplates(sortTemplatesByDate(templatesToSort));\r\n break;\r\n case \"sender\":\r\n setReceivedTemplates(sortTemplatesBySender(templatesToSort));\r\n break;\r\n default:\r\n setReceivedTemplates(sortTemplatesByDate(templatesToSort));\r\n }\r\n }\r\n };\r\n\r\n const fetchTemplateById = async (templateId: string) => {\r\n if (\r\n receivedTemplates[\r\n receivedTemplates.map((e) => e.templateSensorId).indexOf(templateId)\r\n ].uploadedAt != null\r\n ) {\r\n setReceivedTemplate(\r\n receivedTemplates[\r\n receivedTemplates.map((e) => e.templateSensorId).indexOf(templateId)\r\n ]\r\n );\r\n return;\r\n }\r\n const { data } = await getTemplateById(\r\n templateId,\r\n true,\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n\r\n if (data == null) {\r\n return;\r\n }\r\n let receivedTemplate = data as IReceivedTemplateModel;\r\n\r\n receivedTemplates.splice(\r\n receivedTemplates\r\n .map((e) => e.templateSensorId)\r\n .indexOf(receivedTemplate?.templateSensorId),\r\n 1,\r\n receivedTemplate\r\n );\r\n setReceivedTemplates([...receivedTemplates]);\r\n setReceivedTemplate(receivedTemplate);\r\n };\r\n\r\n const fetchReceivedTemplates = async (\r\n withFullInfo: boolean = false,\r\n sortBy: string = \"name\",\r\n offset: number = 0,\r\n limit: number = 100\r\n ) => {\r\n // if (!dataLeftToFetch && !withFullInfo) return;\r\n\r\n if (allSelected && withFullInfo) {\r\n return;\r\n }\r\n\r\n if (withFullInfo) {\r\n setAllSelected(true);\r\n\r\n setIsFetching(true);\r\n setDataLeftToFetch(false);\r\n offset = 0;\r\n limit = 9999;\r\n sortBy = \"none\";\r\n }\r\n\r\n const { data } = await getReceivedTemplates(\r\n authStore?.getImpersonatedUserEmail() || null,\r\n withFullInfo,\r\n sortBy,\r\n offset,\r\n limit\r\n );\r\n if (data) {\r\n let newData: any = [];\r\n if (offset > 0) {\r\n newData = [...receivedTemplates, ...data];\r\n\r\n if (sortBy == \"detectorType\") {\r\n setReceivedTemplates(sortTemplatesByDetectorType(newData));\r\n } else {\r\n setReceivedTemplates(newData);\r\n }\r\n } else {\r\n newData = data;\r\n if (withFullInfo) {\r\n // just sort and set templates\r\n switch (sortBy) {\r\n case \"name\":\r\n setReceivedTemplates(sortTemplatesByName(newData));\r\n break;\r\n case \"detectorType\":\r\n setReceivedTemplates(sortTemplatesByDetectorType(newData));\r\n break;\r\n case \"sender\":\r\n setReceivedTemplates(sortTemplatesBySender(newData));\r\n break;\r\n default:\r\n setReceivedTemplates(sortTemplatesByDate(newData));\r\n }\r\n } else {\r\n // The sort by detector type is done on frontend for better performance\r\n // Avoid an extra JOIN just for the sorting\r\n if (sortBy == \"detectorType\") {\r\n setReceivedTemplates(sortTemplatesByDetectorType(newData));\r\n } else {\r\n setReceivedTemplates([...newData]);\r\n }\r\n }\r\n }\r\n // sortReceivedTemplates(sortedBy, data);\r\n\r\n setIsFetching(false);\r\n\r\n if (withFullInfo) {\r\n setAllDataFetched(true);\r\n setSelectedReceivedTemplatesIds(\r\n newData.map((t: IReceivedTemplateModel) => t.templateSensorId)\r\n );\r\n }\r\n\r\n if (data.length < pageLimit) {\r\n setDataLeftToFetch(false);\r\n }\r\n\r\n filtersData(newData);\r\n }\r\n };\r\n\r\n useInterval(() => {\r\n if (currentLanguageCode !== authStore?.getCurrentLanguageCode()) {\r\n setCurrentLanguageCode(authStore?.getCurrentLanguageCode());\r\n filtersData(receivedTemplates);\r\n }\r\n }, 300);\r\n\r\n const handleScroll = (e: any) => {\r\n if (\r\n e.target.documentElement.scrollTop + window.innerHeight + 1 >=\r\n e.target.documentElement.scrollHeight\r\n ) {\r\n setIsFetching(true);\r\n //fetchReceivedTemplates(false, sortedBy, offset, pageLimit);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchReceivedTemplates(false, sortedBy, 0, 100);\r\n window.addEventListener(\"scroll\", handleScroll);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!dataLeftToFetch) {\r\n if (allDataFetched) {\r\n setIsFetching(false);\r\n return;\r\n }\r\n if (allSelected) return;\r\n setIsFetching(false);\r\n }\r\n if (!isFetching) {\r\n return;\r\n }\r\n if (receivedTemplates.length > 0) {\r\n setOffset(offset + pageLimit);\r\n fetchReceivedTemplates(false, sortedBy, offset + pageLimit, pageLimit);\r\n }\r\n }, [isFetching]);\r\n\r\n const deleteReceivedTemplate = async (): Promise => {\r\n \r\n try {\r\n const { status } = await removeReceivedTemplate(\r\n selectedReceivedTemplatesIds,\r\n authStore?.getImpersonatedUserEmail() || null\r\n );\r\n\r\n if (status === \"success\") {\r\n setReceivedTemplates((prevData) => {\r\n let copiedTemplates = prevData;\r\n return [\r\n ...copiedTemplates.filter(\r\n (temp) =>\r\n !selectedReceivedTemplatesIds.includes(temp.templateSensorId)\r\n ),\r\n ];\r\n });\r\n setSelectedReceivedTemplatesIds([]);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const sendReceivedTemplate = async (): Promise => {\r\n let data: ISendModel | undefined;\r\n if (receivedTemplate) {\r\n data = {\r\n emails: getEmailListWithoutEmptyFields(),\r\n setting: {\r\n favoriteName: receivedTemplate.templateName,\r\n bleSensorInformationId: receivedTemplate.bleSensorInformationId,\r\n userConfigModel: receivedTemplate.userConfigModel,\r\n sensorProfile: receivedTemplate.sensorProfile,\r\n zones: receivedTemplate.zones,\r\n wiredPushButtonModel: receivedTemplate.wiredPushButtonModel,\r\n daliPushButtonModel: receivedTemplate.daliPushButtonModel,\r\n blePushButtonModel: receivedTemplate.blePushButtonModel,\r\n getSetTunableWhiteListModelReply:\r\n receivedTemplate.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply:\r\n receivedTemplate.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies:\r\n receivedTemplate.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply:\r\n receivedTemplate.getSetWirelessLinkFunctionModelReply,\r\n controlGearDeviceCount: receivedTemplate.controlGearDeviceCount,\r\n inputDeviceCount: receivedTemplate.inputDeviceCount,\r\n hvacShortAddressExternalRelay:\r\n receivedTemplate.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay:\r\n receivedTemplate.cutOffShortAddressExternalRelay,\r\n daliBusDevices: receivedTemplate.daliBusDevices,\r\n },\r\n };\r\n }\r\n handleCloseSendModal();\r\n handleCloseDetailsModal();\r\n\r\n try {\r\n if (data) {\r\n const { status } = await send(data);\r\n handleOpenStatusModal();\r\n status === \"success\" ? setSendStatus(true) : setSendStatus(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const shareManyReceivedTemplates = async (): Promise => {\r\n let data: IShareManyModel | undefined;\r\n\r\n if (receivedTemplates.length > 0) {\r\n data = {\r\n emails: getEmailListWithoutEmptyFields(),\r\n settings: receivedTemplates\r\n .filter((receivedTemplate) =>\r\n selectedReceivedTemplatesIds.includes(\r\n receivedTemplate.templateSensorId\r\n )\r\n )\r\n .map((rTemplate) => ({\r\n favoriteName: rTemplate.templateName,\r\n bleSensorInformationId: rTemplate.bleSensorInformationId,\r\n userConfigModel: rTemplate.userConfigModel,\r\n sensorProfile: rTemplate.sensorProfile,\r\n zones: rTemplate.zones,\r\n wiredPushButtonModel: rTemplate.wiredPushButtonModel,\r\n daliPushButtonModel: rTemplate.daliPushButtonModel,\r\n blePushButtonModel: rTemplate.blePushButtonModel,\r\n getSetTunableWhiteListModelReply:\r\n rTemplate.getSetTunableWhiteListModelReply,\r\n getSetTunableWhitePresetModelReply:\r\n rTemplate.getSetTunableWhitePresetModelReply,\r\n daliDeviceDataScenesModelReplies:\r\n rTemplate.daliDeviceDataScenesModelReplies,\r\n getSetWirelessLinkFunctionModelReply:\r\n rTemplate.getSetWirelessLinkFunctionModelReply,\r\n controlGearDeviceCount: rTemplate.controlGearDeviceCount,\r\n inputDeviceCount: rTemplate.inputDeviceCount,\r\n hvacShortAddressExternalRelay:\r\n rTemplate.hvacShortAddressExternalRelay,\r\n cutOffShortAddressExternalRelay:\r\n rTemplate.cutOffShortAddressExternalRelay,\r\n daliBusDevices: rTemplate.daliBusDevices,\r\n })),\r\n };\r\n }\r\n handleCloseSendModal();\r\n handleCloseDetailsModal();\r\n\r\n try {\r\n if (data) {\r\n const { status } = await shareMany(data);\r\n handleOpenStatusModal();\r\n status === \"success\" ? setSendStatus(true) : setSendStatus(false);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n };\r\n\r\n const getEmailListWithoutEmptyFields = () => {\r\n let res = [];\r\n for (let i = 0; i < emailList.length; ++i) {\r\n if (emailList[i].length !== 0) {\r\n res.push(emailList[i]);\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n const getTemplatedIdsFromSelectedFilters = () => {\r\n return receivedTemplates\r\n .filter((rTemplates) => {\r\n if (selectedReceivedTemplates.length === 0) {\r\n return true;\r\n }\r\n return selectedReceivedTemplates.includes(\r\n getDetectorTypeFormattedForFilterMenu(rTemplates, t)\r\n );\r\n })\r\n .map((template: IReceivedTemplateModel) => {\r\n return template.templateSensorId;\r\n });\r\n };\r\n\r\n const getStatusContent = () => {\r\n if (sendStatus) {\r\n return (\r\n <>\r\n \r\n \r\n {t(\"translation:Templates_Receivedtemplates.successContent\")}\r\n \r\n \r\n \r\n \r\n {t(\"translation:Templates_Receivedtemplates.successContentInfo\")}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {t(\"translation:Templates_Receivedtemplates.failedContent\").replace(\r\n \"::TEMPLATE_NAME::\",\r\n receivedTemplate ? receivedTemplate.templateName : \"\"\r\n )}\r\n \r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
{isFetching && }
\r\n
\r\n \r\n \r\n {openSendModal && (\r\n \r\n )}\r\n {openSendNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n ? openDeleteModal\r\n : openDeleteNothingIsSelectedModal\r\n }\r\n onClose={handleCloseDeleteModal}\r\n >\r\n \r\n {openDeleteModal && (\r\n {\r\n deleteReceivedTemplate();\r\n handleCloseDeleteModal();\r\n }}\r\n deleteButtonName={t(\"translation:common.delete\")}\r\n closeModal={handleCloseDeleteModal}\r\n />\r\n )}\r\n {openDeleteNothingIsSelectedModal && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n {receivedTemplate && (\r\n handleCloseDetailsModal()}\r\n openSendModal={handleOpenSendModal}\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n fetchReceivedTemplates(true)}\r\n />\r\n \r\n handleOpenDeleteModal(idTemplateToRemove)}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t(\r\n \"translation:Templates_Receivedtemplates.tableHeadings.templateName\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Templates_Receivedtemplates.tableHeadings.detectorType\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Templates_Receivedtemplates.tableHeadings.receivedOn\"\r\n )}\r\n \r\n \r\n {t(\r\n \"translation:Templates_Receivedtemplates.tableHeadings.receivedFrom\"\r\n )}\r\n \r\n \r\n \r\n \r\n {receivedTemplates\r\n .filter((rTemplates) => {\r\n if (selectedReceivedTemplates.length === 0) {\r\n return true;\r\n }\r\n return selectedReceivedTemplates.includes(\r\n getDetectorTypeFormattedForFilterMenu(rTemplates, t)\r\n );\r\n })\r\n .map((rt) => (\r\n \r\n \r\n id === rt.templateSensorId\r\n )}\r\n onChange={(event) => handleCheck(event, rt)}\r\n checkedIcon={}\r\n inputProps={{ \"aria-labelledby\": \"checkbox\" }}\r\n icon={}\r\n disableRipple\r\n />\r\n \r\n handleOpenDetailsModal(rt)}\r\n >\r\n {!!rt.templateName\r\n ? rt.templateName\r\n : `${rt.sensorInformation.name}\r\n ${t(\r\n `translation:BLE_SENSOR_INFORMATION.${rt.sensorInformation.detectorFamily}`\r\n )}\r\n ${t(\r\n `translation:BLE_SENSOR_INFORMATION.${rt.detectorType}`\r\n )}`}\r\n \r\n handleOpenDetailsModal(rt)}>\r\n {getDetectorTypeFormatted(rt, t)}\r\n \r\n handleOpenDetailsModal(rt)}>\r\n {moment.tz(rt.receivedOn, timeZone).format(\"DD.MM.YYYY\")}\r\n \r\n handleOpenDetailsModal(rt)}>\r\n {rt.receivedFrom}\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ReceivedTemplates;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../../../common/styles/colors\";\r\nimport {\r\n commonParagraph,\r\n primaryHeader,\r\n} from \"../../../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n headerTemplate: {\r\n marginTop: theme.spacing(5),\r\n paddingLeft: theme.spacing(15),\r\n [theme.breakpoints.down(\"md\")]: {\r\n paddingLeft: theme.spacing(2),\r\n }\r\n },\r\n heading: {\r\n color: colors.primaryColor,\r\n marginBottom: theme.spacing(4),\r\n ...primaryHeader,\r\n },\r\n content: {\r\n color: colors.darkerGreyColor,\r\n ...commonParagraph,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React from \"react\";\r\nimport { Grid, Typography } from \"@material-ui/core\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport useStyles from \"./TemplateHeader.style\";\r\n\r\ninterface ITemplateHeader {\r\n content: string;\r\n}\r\n\r\nconst TemplateHeader: React.FC = (props) => {\r\n const classes = useStyles();\r\n const { t } = useTranslation([\"translation\"]);\r\n\r\n const { content } = props;\r\n\r\n return (\r\n \r\n \r\n {t(\"translation:Header_Templates.title\")}\r\n \r\n {content}\r\n \r\n );\r\n};\r\n\r\nexport default TemplateHeader;\r\n","import { makeStyles, createStyles } from \"@material-ui/core/styles\";\r\nimport colors from \"../../common/styles/colors\";\r\nimport { commonParagraph14px } from \"../../common/styles/typography\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n templatesWrapper: {\r\n flexWrap: \"nowrap\",\r\n paddingBottom: \"50px\",\r\n },\r\n appBar: {\r\n backgroundColor: colors.whiteColor,\r\n boxShadow: \"none\",\r\n },\r\n templatesTabsContainer: {\r\n width: \"75%\",\r\n paddingTop: theme.spacing(4),\r\n paddingRight: \"120px\",\r\n minHeight: \"500px\",\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n paddingRight: \"0\",\r\n },\r\n \"& .MuiBox-root\": {\r\n padding: \"0\",\r\n },\r\n },\r\n wraperTabs: {\r\n borderBottom: `1px solid ${colors.pinkSwan}`,\r\n \"& div > span:last-child\": {\r\n backgroundColor: colors.primaryColor,\r\n height: \"8px\",\r\n with: \"50%\",\r\n },\r\n \"& .MuiTabs-flexContainer\": {\r\n justifyContent: \"space-around\",\r\n },\r\n },\r\n tabLabel: {\r\n textTransform: \"none\",\r\n width: \"50%\",\r\n maxWidth: \"100%\",\r\n paddingBottom: \"17px\",\r\n paddingTop: \"20px\",\r\n color: colors.grey,\r\n \"&.MuiTab-textColorInherit.Mui-selected\": {\r\n color: colors.primaryColor,\r\n },\r\n },\r\n badge: {\r\n \"& .MuiBadge-badge\": {\r\n height: \"16px\",\r\n minWidth: \"16px\",\r\n fontSize: \"12px\",\r\n lineHeight: \"16px\",\r\n fontFamily: \"Roboto, sans-serif\",\r\n color: colors.primaryColor,\r\n backgroundColor: colors.veryLightGreyColor,\r\n },\r\n \"& .MuiBadge-anchorOriginTopRightRectangle\": {\r\n top: \"-5px\",\r\n },\r\n },\r\n filerContainer: {\r\n backgroundColor: colors.secondaryColor,\r\n width: \"20%\",\r\n minWidth: \"300px\",\r\n margin: \"32px 90px 0 16px\",\r\n padding: \"32px 24px 28px\",\r\n },\r\n title: {\r\n ...commonParagraph14px,\r\n color: colors.blackColor,\r\n fontWeight: 700,\r\n },\r\n })\r\n);\r\n\r\nexport default useStyles;\r\n","import React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport moment from \"moment-timezone\";\r\nimport { useAuth } from \"../../context/context\";\r\nimport {\r\n Grid,\r\n AppBar,\r\n Tabs,\r\n Tab,\r\n Box,\r\n Typography,\r\n Badge,\r\n useMediaQuery,\r\n useTheme\r\n} from \"@material-ui/core\";\r\nimport FilterTemplates, {\r\n IFilterSet,\r\n} from \"./components/Filter/FilterTemplates\";\r\nimport MyTemplates from \"./components/MyTemplates/MyTemplates\";\r\nimport ReceivedTemplates from \"./components/ReceivedTemplates/ReceivedTemplates\";\r\nimport TemplateHeader from \"./components/HeaderTemplate/TemplateHeader\";\r\nimport useStyles from \"./Templates.style\";\r\nimport useTypographyStyles from \"../../common/styles/typography\";\r\nimport { getAllDetectorsByType, getDetectorTypeFormattedForFilterMenu } from \"../../data-services/Templates/TemplateMapper\";\r\n\r\n\r\ninterface TabPanelProps {\r\n children?: React.ReactNode;\r\n index: any;\r\n value: any;\r\n}\r\n\r\n\r\nfunction TabPanel(props: TabPanelProps) {\r\n const { children, value, index, ...other } = props;\r\n\r\n return (\r\n