{"version":3,"sources":["serviceWorker.js","i18n.js","auth-config.js","GAuth/GSignIn.jsx","ToU.pdf","TermsOfService.js","data.js","GAuth/GSignUp.jsx","GAuth/GConfirmSignUp.jsx","GAuth/GForgotPassword.jsx","GAuth/GAuth.jsx","Header/assets/TankIcon.js","Header/Header.jsx","Header/assets/Pulse_Level_Logo_white_v2.png","Header/assets/Pulse_Level_Logo_white_v3.png","UpdateNotification/UpdateNotification.js","HelpPage/HelpPage.jsx","helpers/isValidEmail.js","OrgPage/OrgCreate/OrgCreate.jsx","OrgPage/OrgManage/Components/ModalPrompt.js","OrgPage/OrgBilling/Components/Assets/PulseHubUid.png","OrgPage/OrgBilling/Components/Assets/Cellular_UID_ti40038.png","OrgPage/OrgBilling/Components/Assets/Pressure_UID_ti40037.png","OrgPage/OrgBilling/Components/Assets/WiFi_UID_ti40039.png","OrgPage/OrgBilling/Components/Assets/WiFi_ActivationCode_ti40040.png","services/billing.js","OrgPage/OrgBilling/Components/ActivateDevice2.js","OrgPage/OrgBilling/Components/ActivateDevice.js","OrgPage/OrgBilling/Components/ChangeDeviceStatus.js","OrgPage/OrgBilling/Components/StatusList.js","OrgPage/OrgBilling/Components/ChangeDeviceStatus2.js","OrgPage/OrgBilling/Components/Devices.js","OrgPage/OrgBilling/Components/EditButton.jsx","OrgPage/OrgBilling/Components/TableTemplate.jsx","OrgPage/OrgBilling/Components/WidgetTemplate.jsx","OrgPage/OrgBilling/Components/billingConfig.js","helpers/isValidPhoneNumber.js","OrgPage/OrgBilling/Components/BillingForm.jsx","helpers/base64ToArrayBuffer.js","OrgPage/OrgBilling/Components/Billing.js","hooks/useScript.js","OrgPage/Components/BranchNavigationButton.js","OrgPage/OrgBilling/OrgBilling.jsx","OrgPage/OrgFluids/Components/FluidManagement.js","OrgPage/OrgFluids/OrgFluids.jsx","OrgPage/OrgDetails/OrgDetails.jsx","OrgPage/OrgManage/Components/ItemDelete.js","OrgPage/OrgManage/Components/OrganizationTree.js","OrgPage/OrgManage/Components/RolesList.js","OrgPage/OrgManage/Components/UserTable.js","OrgPage/OrgManage/OrgManage.jsx","OrgPage/OrgNav/OrgNav.jsx","TlmPage/TlmTank/Components/StrappingTable.js","TlmPage/TlmTank/Components/Assets/HorizontalTank_ti40042.png","TlmPage/TlmTank/Components/Assets/ObroundTank_ti40043.png","TlmPage/TlmTank/Components/Assets/VerticalTank_ti40781.png","helpers/calculateMaxCapacity.js","OrgPage/OrgTemplates/Components/TankTemplateForm.js","OrgPage/OrgTemplates/Components/TankTemplatesManagement.js","OrgPage/OrgTemplates/OrgTemplates.jsx","OrgPage/OrgNoAccess/OrgNoAccess.jsx","OrgPage/BranchCreate/BranchCreate.jsx","OrgPage/OrgPage.jsx","ProfilePage/UserReportScheduleContent.js","ProfilePage/UserOrganizationContent.js","ProfilePage/ProfilePage.jsx","DemoInvite/DemoInvite.jsx","Theme.js","TlmPage/Components/GoogleMap.jsx","TlmPage/Components/TlmBreadcrumbs.jsx","TlmPage/Components/BranchFilter.js","TlmPage/Components/ColumnSelector.js","TlmPage/Components/TlmFilterBar.jsx","TlmPage/Components/NavigationButton.js","helpers/roundToDecimals.js","services/userSettingsData.js","TlmPage/TlmBranch/BranchPage.jsx","TlmPage/TlmBranch/BranchSettingsPage.jsx","TlmPage/Components/assets/img/barrel-empty-large.png","TlmPage/hooks/useFormatDate.js","TlmPage/Components/TankCard.js","TlmPage/TlmSite/SitePage.jsx","TlmPage/TlmSite/SiteSettingsPage.jsx","TlmPage/Components/TankView.js","TlmPage/TlmTank/Components/DailyUsage.js","TlmPage/TlmTank/TankPage.jsx","TlmPage/TlmTank/Components/TankSettings.js","TlmPage/hooks/input.js","TlmPage/TlmTank/Components/AddDevice.js","TlmPage/TlmTank/Components/TlmSettings.js","TlmPage/Components/AddTankIcon.js","TlmPage/TlmTank/Components/TabsSettings.js","TlmPage/TlmTank/TankSettingsPage.jsx","TlmPage/TlmPage.jsx","SessionTimeout/SessionTimeout.js","TlmPage/MyTanks/MyTanksPage.jsx","App.jsx","Header/assets/Pulse_Level_Logo_black_v2.png","index.js"],"names":["Boolean","window","location","hostname","match","resources","en","translation","fr","es","de","i18n","use","detector","initReactI18next","init","lng","fallbackLng","keySeparator","interpolation","escapeValue","authConfig","key","url","useStyles","makeStyles","theme","errorBox","minHeight","spacing","text","padding","textField","marginBottom","grow","flexGrow","gridStretch","width","GSignIn","authState","onStateChange","changeLanguage","classes","cookies","Cookies","useTranslation","t","React","useState","username","password","showPassword","values","setValues","formError","setFormError","loginLang","setLoginLang","handleChange","prop","event","target","value","handleSignIn","a","test","Auth","configure","authenticationFlowType","signIn","code","message","useEffect","lang","get","Typography","className","variant","Grid","item","xs","style","Select","native","onChange","e","set","path","TextField","label","type","fullWidth","onKeyUp","InputProps","endAdornment","InputAdornment","position","IconButton","aria-label","onClick","onMouseDown","preventDefault","Visibility","VisibilityOff","container","direction","justify","alignContent","alignItems","color","Button","component","Link","pdfjs","GlobalWorkerOptions","workerSrc","pdfjsWorker","paper","minWidth","TermsOfService","openTerms","handleCloseTerms","numPages","setNumPages","Dialog","disableEscapeKeyDown","open","onClose","DialogTitle","DialogContent","file","ToU","onLoadSuccess","Array","apply","map","x","i","page","pageNumber","DialogActions","host","enableBilling","updateNotes","ACCESS","status_severity","TANK_STATUSES","units_settings","id","name","SubscriptionInfo","BillingPlans","plan_code","unit_cost","BillingCurrency","privacy_url","FieldSelectLabel","COOKIE_NAMES","branchColumnSortModel","myTanksColumnsChecked","myTanksColumnsOrder","branchColumnsChecked","branchColumnsOrder","siteColumnsChecked","siteColumnsOrder","branchFilterMyTanks","displayUnits","countries","marginTop","phoneField","GSignUp","given_name","family_name","phone_number","countryLabels","setCountryLabels","errorStr","setOpenTerms","handleSignUp","length","isPossiblePhoneNumber","signUp","attributes","email","console","log","ru","Fragment","FormControl","InputLabel","htmlFor","Input","placeholder","defaultCountry","labels","href","GConfirmSignUp","handleResendCode","resendSignUp","handleConfirm","confirmSignUp","GForgotPassword","new_password","codeSent","handleSendCode","forgotPassword","handleValidateCode","forgotPasswordSubmit","wrap","height","display","justifyContent","content","logo","maxHeight","marginRight","GAuth","appTitle","onAuthStateChange","Container","maxWidth","edge","alt","src","hideDefault","TankIcon","props","SvgIcon","d","Transition","forwardRef","ref","Slide","root","logoMobile","title","marginLeft","breakpoints","up","title_small","icon_link","devicebutton","alertIcon","sectionDesktop","menuItem","backgroundColor","clearAll","textAlign","centeredMenuItem","clearIcon","float","notificationDescription","noNotificationsString","FeedbackButton","borderColor","navBox","borderRadius","HeaderIcon","Header","orgInfo","orgs","orgNavigationHandler","userFeedback","useRef","orgOpen","setOrgOpen","orgAnchor","setOrgAnchor","settingsOpen","setSettingsOpen","settingsAnchor","setSettingsAnchor","openThankYou","setOpenThankYou","feedbackMenuOpen","setFeedbackMenuOpen","feedbackSubjectRadio","setFeedbackSubjectRadio","userRating","setUserRating","handleOrgOpen","currentTarget","handleOrgClose","handleSettingsClose","handleSignOut","signOut","handleFeedbackClose","handleFeedbackSend","current","currentAuthenticatedUser","getSession","err","session","sessionToken","getIdToken","jwtToken","body","JSON","stringify","fetch","method","headers","then","results","json","data","focus","handleThankYouClose","AppBar","Toolbar","Hidden","smDown","RouterLink","to","mdUp","lgUp","Tooltip","aria-controls","undefined","aria-haspopup","noWrap","orgName","ArrowDropDown","mdDown","Popper","anchorEl","placement","transition","TransitionProps","Grow","transformOrigin","Paper","ClickAwayListener","onClickAway","MenuList","autoFocusItem","isOrgEditor","MenuItem","pathname","state","orgEdit","ListItemIcon","Edit","Divider","index","org","concat","size","aria-labelledby","DialogContentText","Rating","defaultValue","precision","RadioGroup","FormControlLabel","control","Radio","multiline","rows","inputRef","inputProps","maxLength","TransitionComponent","keepMounted","ria-haspopup","Settings","AccountCircle","fontSize","indented","indented_subBullet","UpdateNotification","signedIn","showUpdate","onCloseFunction","handleClose","disableBackdropClick","replace","note","gutterBottom","table","border","boxShadow","HelpPage","history","useHistory","showUpdateInfo","setShowUpdateInfo","goBack","ArrowBack","TableContainer","Table","TableBody","TableRow","TableCell","colSpan","align","scope","borderBottom","isValidEmail","textInput","margin","formControl","clickButtons","OrgCreate","setOrgName","org_name","org_address_line_1","address","orgAddressLine1","setOrgAddressLine1","org_contact","orgContactName","setOrgContactName","org_phone","phone","orgContactPhone","setOrgContactPhone","org_city","city","orgCity","setOrgCity","org_postal","postal","orgPostal","setOrgPostal","org_email","orgContactEmail","setOrgContactEmail","country","setCountry","region","setRegion","defCheck","setDefCheck","isValidPhoneNumber","alert","response","orgId","contact_email","contact_name","contact_phone","default_organization","user","validateForm","ret","handleClick","isDef","temp_org_name","ok","rsp","Error","fetchOrgInfo","catch","error","requestOptions","status","push","firstOrg","Box","FormGroup","labelId","countryName","translationKey","countryShortCode","disabled","find","regions","shortCode","Checkbox","checked","confirmField","ModalPrompt","action","handleAction","handleCancel","openModal","useConfirm","setOpen","deleteConfirm","setDeleteConfirm","rdeleteConfirm","invalidConfirm","setInvalidConfirm","cancel","helperText","LOCATION_ERROR_MESSAGE","urlConfig","api","apiInvoices","apiPreview","billing","createAccount","tokenId","currency","plan_label","Authorization","signInUserSession","idToken","billing_params","billing_info","token_id","billing_currency","billing_plan","updateAccount","l_plan","l_currency","deleteAccount","getBillingData","newSubscription","quantity","total_billing_cycles","subscriptions","updateSubscriptions","isArray","updateEmails","cc_emails","downloadInvoice","invoiceId","previewSubscription","formControlLabel","rootpaper","overflowX","HubInfoImg","infoDialog","link","palette","info","dark","buttonProgress","actionButtons","helpButton","ActivateDevice2","setDevices","billingData","setBillingData","orgBilling","deviceUID","setDeviceUID","rdeviceUID","deviceUID2","setDeviceUID2","rdeviceUID2","activationCode","setActivationCode","ractivationCode","addDeviceDialogue","setOpenDeviceDialogue","hasBillingInfo","setHasBillingInfo","deviceFamily","setDeviceFamily","targetUID","setTargetUID","openCellularInfo","setOpenCellularInfo","openPressureInfo","setOpenPressureInfo","openWiFiInfo","setOpenWiFiInfo","openHubInfo","setOpenHubInfo","helpOpen","setHelpOpen","helpAnchor","setHelpAnchor","openEnterSerial","setOpenEnterSerial","isLoading","setIsLoading","handleHelpClose","handleOpenCellularInfo","handleCloseCellularInfo","handleOpenPressureInfo","handleClosePressureInfo","handleOpenWiFiInfo","handleCloseWiFiInfo","handleOpenHubInfo","handleCloseHubInfo","handleCloseEnterSerial","handleOpenAddDevice","tDeviceUID","isAvailable","family","Number","UID","toString","toUpperCase","handleCloseAddDevice","handleAddDevice","l_hasBillingInfo","deviceList","errorList","colorError","CircularProgress","WiFiActivationCodeImg","cellularInfoImg","pressureInfoImg","WiFiInfoImg","pulseHubInfoImg","listItemText","preLoader","ChangeDeviceStatus","uid","newStatus","estNextInvoice","setEstNextInvoice","estCharge","setEstCharge","findSubscriptionPlanCode","subscriptionInfo","handleCloseStatusChange","updateSubscription","devices","msg","billing_curr","sub","billing_account","newCharge","nextInvoice","newQty","l_billingPlan","Math","round","billing_preview","estimated_total","fontWeight","m","targetList","appBar","flex","ChangeDeviceStatus2","openStatusChange","setOpenStatusChange","setAction","displayDevices","setDisplayDevices","checkedList","setCheckedList","deviceColumns","headerName","field","headerClassName","tableHeader","disableClickEventBubbling","renderCell","renderType","renderStatus","deviceColumnsMobile","params","lstatus","row","l_devices","test_status","handleSetNewCharge","amount","abs","toFixed","updateDeviceStatus","l_action","input_quantity","includes","updatePreview","currentlyActive","handleNextInvoice","hideFooterSelectedRowCount","rowsPerPageOptions","pagination","checkboxSelection","onSelectionModelChange","selectedIDs","selectionModel","pageSize","columns","noValidate","dev","activate_device","syncButton","ManageDevices","fetchDevices","baseurl","csvReportData","setCSVReportData","csvFileName","csvLink","targetNewStatus","setTargetNewStatus","openDelete","setOpenDelete","deleteTarget","setDeleteTarget","invoices","setOrgBilling","csvHeaders","branchName","siteName","tankName","renderAction","sortable","ldisabled","convertDatetoCSVFormat","inputTimeStamp","isNaN","getTime","toISOString","slice","org_billing","data_in","k","csvData","Date","tempRow","createCSVData","filename","iconButtons","click","delete_uid","editButton","transform","editIcon","EditButton","memo","clickHandler","StyledTableCell","withStyles","head","primary","main","common","white","StyledTableRow","hover","tableTitle","paddingLeft","paddingBottom","subtitle","TableTemplate","columnTitles","handleCellClick","formattedRows","fill","tableDateFormat","inputDate","outputDate","format","tempDate","substring","indexOf","TableHead","Object","el","keys","data-id","WidgetTemplate","children","billingConfig","plan_name","estimated_total_display","next_invoice_date","number","closed_at","total_display","phoneNumber","buttonGroup","flexDirection","paddingTop","button","cardElement","strongLight","borderBottomColor","BillingForm","handleHideEditClick","setVisibleEditBilling","isData","hasSubscription","formRef","firstName","setFirstName","lastName","setLastName","setEmail","address1","setAddress1","address2","setAddress2","setCity","setState","zip","setZip","setPhone","plan","setPlan","setCurrency","isValidForm","setIsValidForm","sessionstorageValue","useSessionstorage","recurly","useRecurly","onSubmit","token","resp","valid","required","data-recurly","select","billingCurrency","billingPlan","base64ToArrayBuffer","base64","binary_string","atob","len","bytes","Uint8Array","charCodeAt","buffer","recurlyData","config","futureChargesTable","invoicesTable","capitalLetter","textTransform","newEmailBtn","right","top","deleteEmailBtn","emailList","Billing","scriptStatus","setStatus","statusListener","script","document","createElement","async","addEventListener","appendChild","removeEventListener","removeChild","useScript","isVisibleEditBilling","newEmail","setNewEmail","exp_month","exp_year","first_name","last_name","first_six","last_four","street1","street2","postal_code","useParams","openDeleteConfirm","setOpenDeleteConfirm","handleSetBilling","input_billing","l_billingInfo","total","handleSubmitNewEmail","handleDeleteEmail","getAttribute","filter","handleDownloadInvoice","pdfFile","Blob","saveAs","md","publicKey","country_in","region_in","regionTranlsationKey","country_item","findRegionTranslationKey","data-email","chips","flexWrap","chip","noLabel","BranchNavigationButton","branchesList","setAnchorEl","handleRedirect","moduleName","menuItems","Menu","entries","content_nav","breadcrumbFontSize","down","arrowBack","tabsWrap","TabPanel","other","role","hidden","p","OrgBilling","setValue","branches","setBranches","seconds","setSeconds","setUpdateDeviceStatus","handleSetDevices","lDevices","parse","deviceStatusInProcess","ServerTime","ServerTime_UTC","sort","b","setTimeout","Breadcrumbs","Tabs","indicatorColor","textColor","newValue","Tab","dropdown","fluidtable","zIndex","WebkitFontSmoothing","letterSpacing","light","contrastText","FluidManagement","fluids","setFluids","matches","useMediaQuery","openAddFluid","setOpenAddFluid","deleteFluidTarget","setDeleteFluidTarget","openDeleteFluid","setOpenDeleteFluid","editFluidTarget","setEditFluidTarget","editFluidName","setEditFluidName","openFluidEdit","setOpenFluidEdit","rnewFluidName","setDisplayUnits","fluidCol","setFluidCol","deviceCol","setDeviceCol","fluidColumns","sortComparator","v1","v2","param1","param2","volume_sum","ullage_sum","bdisable","tankCount","mapFunctionSetWidth","rest","prevState","tDisplayUnits","maxFluidNameLength","handleCloseDeleteFluid","handleCloseFluidEdit","handleCloseAddFluid","fluidsList","vol_string","VolumeUnit","volume_sum_disp","ullage_sum_disp","UpdateVolumeUnits","newSetting","maxAge","Uval","ListItemText","disableColumnMenu","newName","delete_id","OrgFluids","OrgDetails","dataReady","setDataReady","inviteOpen","setInviteOpen","apiKey","setApiKey","isApiKeyActive","setIsApiKeyActive","recipient","branchCol","setBranchCol","branchColumns","fetchOrgDetails","maxBranchNameLength","handleInviteClose","handleInvite","permissions","recip","trim","recipientArr","split","sent","userToInvite","deleteAPIKey","createAPIKey","api_key","deactivateAPIKey","activateAPIKey","PersonAdd","onResize","autoFocus","selectedLabel","selectedName","deleteButton","ItemDelete","access","selected","inviteUser","allowItemDelete","moveDestinations","handleMove","openDialog","setOpenDialog","l_recipient","destination","toLowerCase","MinusSquare","PlusSquare","treeitem","OrganizationTree","list","selectItem","delTankId","setDelTankId","RenderTree","nodes","node","TreeItem","nodeId","String","icon","onIconClick","TreeView","defaultCollapseIcon","defaultExpandIcon","RolesList","setUserRole","setRole","newRole","modal","UserTable","users","removeUser","currentUser","delUserId","setDelUserId","userList","setUserList","dividerSpacing","OrgManage","fetchOrgInformation","setSelected","orgTree","setOrgTree","setAllowItemDelete","setCurrentUser","setMoveDestinations","fetchOrgTree","j","tempArray","newArray","splice","isValidEnteredEmail","selectedId","l_branchId","allowDelete","lMoveDestinations","parentId","deleteModule","deleted","removeFromTree","deleteTank","tree","childIdToRemove","findIndex","ii","entry","child","iii","parent_id","lSelected_id","lSelected_type","l_siteId","permission_id","user_id","line","OrgNav","StrappingTable","change","remove","replaceTable","viewMode","setUploadResult","fluidHeight","setFluidHeight","fluidVolume","setFluidVolume","accept","files","FileReader","reader","onload","r","result","header","rowObj","newTable","parseInt","volume","unshift","readAsText","onFileUpload","deleteRow","calculateMaxCapacity","dUnits","vUnits","Height","Width","Diameter","Length","Shape","capacity","lHeight","lWidth","lDiameter","lLength","num_pi","parseFloat","formControlTags","infoControl","cols","paddingRight","inputButton","tankInfo","tankInfoForm","TankImg","TankTemplateForm","template","setTemplateData","setCalculatedMaxCapacity","tankShape","dimensionunits","volumeunits","DimensionUnit","dimensionUnit","setDimensionUnits","volumeUnit","setVolumeUnits","TankShape","selectedTankShape","setTankShape","VolumeTable","levelVolumeTable","setLevelVolumeTable","templateName","setTemplateName","rtemplateName","TankHeight","tankHeight","setTankHeight","rtankHeight","TankDiameter","tankDiameter","setTankDiameter","rtankDiameter","TankLength","tankLength","setTankLength","rtankLength","TankWidth","tankWidth","setTankWidth","rtankWidth","TankCapacity","tankCapacity","setTankCapacity","rtankCapacity","FillCapacity","fillCapacity","setFillCapacity","rfillCapacity","showTankImage","setShowTankImage","tankImage","setTankImage","setCSVFileName","calculatedMaxCapacity","tTable","VerticalTankImg","HorizontalTankImg","ObroundTankImg","fileNamePrefix","dformat","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","createCSVFileName","shape","pair","dialogForm","templatetable","TankTemplatesManagement","templates","setTemplates","openAddTemplate","setOpenAddTemplate","deleteTemplateTarget","setDeleteTemplateTarget","openDeleteTemplate","setOpenDeleteTemplate","editTemplateTarget","setEditTemplateTarget","editTemplateTargetId","setEditTemplateTargetId","openTemplateEdit","setOpenTemplateEdit","newTemplate","setNewTemplate","templateCol","setTemplateCol","templateColumns","validateData","input","Name","Params","handleCloseDeleteTemplate","handleCloseTemplateEdit","handleCloseAddTemplate","lnewTemplate","templatesList","OrgTemplates","handleSetTemplates","OrgNoAccess","Geocode","BranchCreate","firstBranch","branch_name","setBranchName","branch_address_line_1","branch_contact","branch_phone","branch_email","branch_city","fromAddress","geometry","lat","PageRouter","useLocation","exact","OrgPage","s","orgpaper","orgtable","reportpaper","reporttable","UserReportScheduleContent","setDeleteOrgTarget","setOpenDeleteOrg","deleteReportTarget","setDeleteReportTarget","openDeleteReport","setOpenDeleteReport","scheduledReportList","setScheduledReportList","renderReportLocation","module_type","handleReportLink","scheduleReportList","handleCloseDeleteReport","renderDeleteReport","report","createScheduleReportLine","infoText","changeDay","reportFrequency","monthly","reportType","clientTimeZoneOffset","getTimezoneOffset","reportTime","recurr_time","reportDaysList","sunday","monday","tuesday","wednesday","thursday","friday","saturday","reportDays","join","monthly_day","monthly_week","reportstable","lscheduledReportList","UserOrganizationContent","deleteOrgTarget","openDeleteOrg","orgList","setOrgList","orgListColumns","isDefault","handleCheck","org_id","orgBranches","defaultBranch","branch_id","branchId","fetchPageData","handleBranchDefaultChange","branch","handleCloseDeleteOrg","siteId","settings","settingsUnedit","passwordSettings","saveButton","submitButton","recurrMenuText","recurrMenuText_1","headerText","passwordButton","passwordButtonEdit","emailTextField","emailTextFieldEdit","languageSelect","ProfilePage","tab1","tab2","tab3","tab4","editActive","setEditActive","userInfoFetched","setUserInfoFetched","userInfo","setUserInfo","changePWord","setChangePWord","ref1Focus","ref2Focus","ref3Focus","ref4Focus","ref5Focus","criticalHelpOpen","setCriticalHelpOpen","dailyStatusReportOpen","setDailyStatusReportHelpOpen","old_password","valuesOld","setValuesOld","daily_status_report_email","daily_status_report_text","critical_level_notification_email","critical_level_notification_text","statePrev","setStatePrev","recurrTime","setRecurrTime","setRecurringInput","userLanguage","setUserLanguage","setUserLanguagePrev","lngAbbrv","setLngAbbrv","lngAbbrvPrev","setLngAbbrvPrev","setPosition","handleCriticalHelpClose","handleDailyStatusReportHelpClose","selectionStart","handleClickShowPassword","handleMouseDownPassword","handleClickEdit","saveUserLanguageSetting","handleClickSubmitChangePWord","changePassword","handleClickSubmit","t_phone_number","updateUserAttributes","go","currentUserInfo","div","a11yProps","fetchUserInfo","handleClickNotificationSubmit","adjustedReportTime","now","setHours","n","notificationsSettings","recurrTimeAdjusted","notification_recurr_time","handleNotificationChange","setCaretPosition","elemId","caretPos","elem","getElementById","createTextRange","range","move","setSelectionRange","centered","scrollButtons","paragraph","notification_recurr_weekday","DemoButton","DemoInvite","Theme","createMuiTheme","MuiDataGrid","overrides","MuiInput","background","default","secondary","none","warning","success","low","high","crit","batt","comm","marker","left","Marker","site","status_disp","Place","getMapOptions","maps","mapTypeControl","streetViewControl","GoogleMap","center","pins","bootstrapURLKeys","defaultZoom","options","onGoogleApiLoaded","bounds","LatLngBounds","formattedPins","latitude","longitude","extend","setCenter","getCenter","fitBounds","setGoogleMapRef","pin","TlmBreadcrumbs","branchInfo","tank","baseUrl","branchesOpen","setBranchesOpen","branchesAnchor","setBranchesAnchor","handleBranchesOpen","handleBranchesClose","ArrowLeft","isBranchEditor","branchList","xsDown","smUp","MenuProps","PaperProps","ITEM_HEIGHT","BranchFilter","statuses","tags","setFilters","DTE_range","filtersInfo","fluidName","setFluidName","statusName","setStatusName","tagName","setTagName","ullage","setUllage","DTE","setDTE","showSensorWarning","setShowSensorWarning","FilterList","form","multiple","renderValue","fluid","DTE_val","Slider","valueLabelDisplay","tag","filterContainer","checkBox","ThemeCheckbox","ColumnSelector","columnOrder","setChecked","setOrder","disableColumns","hideColumnSelector","isColumnsOpen","setIsColumnsOpen","columnsAnchor","setColumnsAnchor","localChecked","setLocalChecked","localOrder","setLocalOrder","onDragEnd","newOrder","source","removed","handleColumnsClose","ViewColumn","elevation","droppableId","provided","snapshot","droppableProps","innerRef","isDraggingOver","draggableId","draggableProps","dragHandleProps","isDragging","draggableStyle","tabIndex","disableRipple","newChecked","assign","tableTools","chipItem","formSubControl","recurrMenuButton","TlmFilterBar","reportsMenu","setReportsMenu","isFiltersOpen","setIsFiltersOpen","filtersAnchor","openScheduleReports","setOpenScheduleReports","recurrMonthlyWeek","setRecurrMonthlyWeek","setRecurrMonthlyFreq","recurrMonthlyDay","setRecurrMonthlyDay","recurringInput","show","weekly","recurMenuState","setRecurMenuState","recurringInputRef","recurrUnits","setRecurringUnits","setUTCShift","disableScheduleReport","openSearchDialogue","setOpenSearchDialogue","searchTerm","setSearchTerm","rsearchTerm","handleCloseSearch","handleFiltersClose","handleScheduleReports","handleDelete","lfluid","ltag","lullage","ullageRange","lDTE","lshowSensorWarning","toggleReportsMenu","onGetUserRecurringReportRequest","reportingMenuItems","utcShift","frequency","monthlyDay","monthlyWeek","units","mondayBool","tuesdayBool","wednesdayBool","thursdayBool","fridayBool","saturdayBool","sundayBool","currState","stateCopy","Chip","onDelete","currentSearchTerm","handleSearchTerm","showRefresh","refreshFunction","Search","disableAutoFocusItem","onCSVDownloadRequest","onPDFDownloadRequest","FormLabel","deleteRecurrentReportRequest","onRecurringReportRequest","checked2","setChecked2","NavigationButton","siteInfo","isModuleEditor","currentSiteName","siteData","SiteName","Site_id","sitesList","tanksList","roundToDecimals","num","places","factor","pow","userSettingsData","getUserSettingsData","updateUserSettingsData","settingsData","formatSettings","settings_name","out","grow_2x","topMap","table_noMap","statusNone","BranchPage","pdfReportData","setPDFReportData","pdfReportDataHeaders","setPDFReportDataHeaders","pdfReportConfigHeaders","setPDFReportConfigHeaders","pdfFileName","setPDFFileName","pdfHeaders","siteNameColWidth","setSiteNameColWidth","tankColWidth","setTankColWidth","fluidColWidth","setfluidColWidth","cityColWidth","setCityColWidth","sitePinWidth","setSitePinWidth","defaultColumnOrder","setColumnOrder","columnsBranch","tank_latitude","tank_longitude","isValid","gps_enable","tankGps","setMapCenter","renderLink","status_key","param_display","param_display_list","ullage_disp","description","volume_disp","volume_pct_int","valueFormatter","valueFormatted","unit","ADU_disp","FillCapacity_disp","fluid_height_disp","FillVolume_sort","mapOpen","setMapOpen","mapPins","setMapPins","mapCenter","setSiteInfo","tableCols","setTableCols","tableRows","setTableRows","reportsMenuItems","setReportsMenuItems","setFiltersInfo","setCurrentSearchTerm","calculateStatusSeverity","severity","createPDFData","headerArr","headerConfigArr","bodyArr","entryArray","date","newDate","offset","hours","month","day","year","hour","minute","convertUTCDateToLocalDate","createTableData","dim_string","Status","fluid_height","ADU","FillVolume","FillVolume_disp","ullage_disp_str","volume_disp_str","FillCapacity_disp_str","ADU_disp_str","fluid_height_disp_str","FillVolume_disp_str","fetchSiteData","tFilter","tMapOpen","Data","json_data","ullage_pct","f","maxSiteNameLength","maxTankNameLength","maxCityNameLength","tankNavigation","City","volume_pct","ReadingTime","ReadingTime_UTC","ReadingTime_CSV","ReadingTime_PDF","toLocaleString","NextReading_CSV","NextReading","FillTime_CSV","FillTime","DTE_disp","tempOrder","tempUpdates","tColumnOrder","forEach","tChecked2","settingsName","settingsDataIn","lsettingsName","lsettingsDataIn","updateData","FilterData","t_tableCols","fetchUserSettingsData","pinIndex","recorded","makePins","newColumns","handleInviteOpen","handleMapToggle","getValue","filterData","update","addItem","newData","tstatus","filters","data_DTE","Tags","lSearchTerm","latMin","latMax","lngMin","lngMax","handleInviteAsViewer","handleInviteAsEditor","scheduleRecurringReport","showing","timeOffset","tuesdayUpdated","wednesdayUpdated","thursdaydayUpdated","fridaydayUpdated","saturdayUpdated","sundayUpdated","mondayUpdated","getUserRecurringReportRequest","deleteRecurrSchedule","getGoogleMap","isOnTop","Map","tagsList","input_units","pdf","jsPDF","img","Image","addImage","autoTable","html","startY","save","isBranchViewer","BranchSettingsPage","resetBranchData","branchAddress","setBranchAddress","branchPhone","setBranchPhone","branchContactName","setBranchContactName","branch_contact_name","branchContactEmail","setBranchContactEmail","branchCity","setBranchCity","default_branch","targetBranch","useFormatDate","locale","hour12","Intl","DateTimeFormat","second","cardHeaderRoot","cardHeader","overflow","textOverflow","cardActionsRoot","pos","backgroundImage","TankImage","backgroundSize","level","bottom","footer","TankCard","currentColor","levelHeight","isEditor","formattedDate","bgColors","fullnessPercentage","tankStatus","Card","CardHeader","subheader","CardActions","disableSpacing","CardContent","statusIn","statusTemp","formatStatus","grow_x2","SitePage","sitesNavDict","columnsSite","isCardView","setCardView","setTankInfo","replaceAll","fetchTankData","tisCardView","openInvite","setting","lnewOrder","flow","lg","formControlShort","SiteSettingsPage","resetSiteData","processingSave","setProcessingSave","site_name","setSiteName","site_address_line_1","siteAddress","setSiteAddress","site_phone","sitePhone","setSitePhone","site_contact_name","siteContactName","setSiteContactName","site_email","siteEmail","setSiteEmail","site_city","siteCity","setSiteCity","site_tag","siteTag","setSiteTag","orgTags","setOrgTags","selectAddTag","setSelectAddTag","selectADU_AVG","setSelectADU_AVG","avgSettings","averageHelpOpen","setAverageHelpOpen","handleAverageHelpClose","adu_avg","handleAddTag","tempTags","handleClick2","temp_site_name","tTags","TagsList","LinearProgress","rowSpacing","avgListItem","orgTagsListItem","CustomizedAxisTick","PureComponent","filterDateRange","this","y","payload","dy","textAnchor","filterCheckbox","warningText","TankView","tankId","defTimePeriod","latestReadingTime","setLastReadingTime","timePeriod","setTimePeriod","showDateRangeFilter","setShowDateRangeFilter","openFilter","setOpenFilter","setFilterApply","chartData","setChartData","tankData","setTankData","showRawData","setShowRawData","refLineFillLevel","setRefLineFillLevel","refLineLowLevel","setRefLineLowLevel","refLineCritLevel","setRefLineCritLevel","fromDatePickerValue","setFromDatePickerValue","toDatePickerValue","setToDatePickerValue","openTankSettingsView","setOpenTankSettingsView","setDailyUsageData","openReplaceBatteriesDialogue","setOpenReplaceBatteriesDialogue","dataTypeList","yLabel","yRange","dataType","setDataType","dataType2","setDataType2","dataTypeTemp","setDataTypeTemp","yyyymmdd","applyFilter","d1","d2","TankData","handleOpenLocation","LatestGps","TankInfo","isCriticallyLowLevelAlarm","CriticallyLowLevelAlarmValue","isFillLevelAlarm","FillAlarmValue","isLowLevelAlarm","LowLevelAlarmValue","ReadingTime_UTC2_CSV","ReadingTime_UTC2_PDF","LatestMeasurement","l_chartData","TankDataIn","dailyUsage","l_tankData","ReadingDate","self","deltaV","deltaV_disp","CalculateDailyUsageData","l_data","SRC","ReadingTime_Chart","batt_chart","maxTankVolume","handleCloseTankSettingsView","handleCloseReplaceBatteries","GpsReadings","serial","Family","time1","MeasurementTime_1","time2","MeasurementTime_2","renderReportingTime","TankType","Offset","html2canvas","querySelector","allowTaint","useCORS","canvas","internal","getWidth","getHeight","widthRatio","heightRatio","ratio","imgData","toDataURL","previous","finalY","strokeDasharray","stroke","dataKey","interval","tick","domain","angle","option","dx","utils","DateFnsUtils","disableToolbar","KeyboardButtonProps","TankPage","setTankId","latestReading","tankDataReady","setTankDataReady","setDefTimePeriod","btnActions","fluidList","snackBar","TankSettings","handleExit","setPageDataReady","setTabsDataReady","addfluid","setTankName","rtankName","newFluidName","setNewFluidName","tankTag","setTankTag","rtankTag","selectAddTemplate","setSelectAddTemplate","orgTemplates","setOrgTemplates","newTemplateCheck","setNewTemplateCheck","tankTemplateName","setTankTemplateName","rtankTemplateName","notification","setNotification","createTemplate","fillCap","bExit","t_Name","floor","dataSetValid","Snackbar","anchorOrigin","vertical","horizontal","autoHideDuration","orgTemplatesListItem","element","useInput","initialValue","AddDevice","updateDevices","setAddDeviceDialogue","formControlDensity","formControlNumber","formControlDensitySelect","deviceWarning","TLMSettings","tlm","pulseDevices","measurementTimes2","measurementTime","setMeasurementTime","secondMeasurementTime","setSecondMeasurementTime","tankType","setTankType","tlmMeasurementOffset","setTlmMeasurementOffset","rtlmMeasurementOffset","fillAlarmValue","rfillAlarmValue","Density","fluidDensity","setFluidDensity","rdensity","offsetHelpOpen","setOffsetHelpOpen","fluidDensityList","density","DensityFluidType","selectFluidDensity","setSelectFluidDensity","selectedDevice","setSelectedDevice","lowLevelAlarmValue","rlowLevelAlarmValue","criticallyLowLevelAlarmValue","rcriticallyLowLevelAlarmValue","gpsSettings","waveguideSettings","gpsDialogueOpen","setGpsDialogueOpen","gpsEnableSelect","setGpsEnableSelect","t_gpsEnableSelect","setTempGpsEnableSelect","waveguide_enable","waveguideEnableSelect","setWaveguideEnableSelect","removeMonitorDialogue","setRemoveMonitorDialogue","openRemoveTlm","handleRemoveMonitorDialogueClose","handleGpsDialogueClose","adjustedMeasurementTime1","tlm_offset","adjustedMeasurementTime2","l_gps_enable","l_waveguide_enable","handleOffsetHelpClose","device","time","targetValue","AddTankIcon","TabsSettings","setPulseDevices","lPulseDevices","dimensionUnits","volumeUnits","addFluid","tank-shape","TlmSettings","TankSettingsPage","TlmPage","branchNavDict","setBranch","branchesFetched","setBranchesFetched","sites","setSites","sitesFetched","setSitesFetched","fetchBranchData","branchesNavDict","targetSite","SessionTimeout","minutes","idleEvent","maxTimeoutMinutes","warningTimeoutMinutes","events","warningMinutes","setWarningMinutes","isOpen","checkTimer","elapsedMinutes","sessionTimeout","clearTimeout","MyTanksPage","orgNameColWidth","setOrgNameColWidth","branchNameColWidth","setBranchNameColWidth","columnsMyTank","fetchMyTanksData","maxOrgNameLength","OrgName","BranchName","handleClickLink","Amplify","userPoolId","userPoolWebClientId","flexgrow","App","setSessionstorageValue","setSignedIn","organization","setOrganization","organizationsList","setOrganizationsList","organizationNavDict","setOrganizationNavDict","orgsFetched","setOrgsfetched","targetOrg","navigate","navUrl","organizationList","lOrgName","clearShowUpdate","show_update","activeElement","blur","ThemeProvider","CssBaseline","handleOrganizationChange","rootElement","ReactDOM","render","StrictMode","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e2ff1a5c.chunk.js","sourcesContent":["// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\nimport detector from \"i18next-browser-languagedetector\";\nimport en from './locales/en/translation.json';\nimport es from './locales/es/translation.json';\nimport fr from './locales/fr/translation.json';\nimport de from './locales/de/translation.json';\n\n// https://react.i18next.com/legacy-v9/step-by-step-guide\nconst resources = {\n en: {\n translation: en\n },\n fr: {\n translation: fr\n },\n es: {\n translation: es\n },\n de: {\n translation: de\n }\n};\n\ni18n\n .use(detector)\n // .debug(true)\n .use(initReactI18next)\n .init({\n resources,\n lng: \"en\",\n fallbackLng: \"en\", // use en if detected lng is not available\n keySeparator: false, \n interpolation: {\n escapeValue: false // prevent xss\n }\n });\n\nexport default i18n;","const authConfig = {\n 'region': 'us-east-2',\n 'userPoolId': 'us-east-2_lAg65HPrI',\n 'userPoolWebClientId': '5e1tfc9h6b99fl7ruccshcrun2',\n 'recurlyData': {\n key: 'ewr1-U2HjyhfLzv4xkZ4RpAUIVZ',\n url: 'https://js.recurly.com/v4/recurly.js'}\n };\nexport default authConfig;","import React, { useEffect, useState, useRef } from 'react';\nimport { Auth } from 'aws-amplify';\nimport {\n Select,\n Button,\n Grid,\n IconButton,\n InputAdornment,\n Link,\n Typography, TextField,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Visibility, VisibilityOff } from '@material-ui/icons';\nimport { useTranslation } from 'react-i18next';\nimport Cookies from 'universal-cookie';\n\n// Inline CSS\nconst useStyles = makeStyles((theme) => ({\n errorBox: { minHeight: theme.spacing(3) },\n text: { padding: theme.spacing(1) },\n textField: {\n marginBottom: theme.spacing(3),\n },\n grow: { flexGrow: 1 },\n gridStretch: { width: '500px'}\n}));\n\nexport default function GSignIn({ authState, onStateChange, changeLanguage }) {\n const classes = useStyles();\n const cookies = new Cookies();\n const { t, i18n } = useTranslation();\n // Set state\n const [values, setValues] = React.useState({\n username: '',\n password: '',\n showPassword: false,\n });\n const [formError, setFormError] = React.useState('');\n const [loginLang, setLoginLang] = React.useState(\"en\");\n\n //Handle UI interactions\n const handleChange = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n };\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n const handleForgotPassword = () => {\n onStateChange('forgotPassword');\n };\n const handleCreateAccount = () => {\n onStateChange('signUp');\n };\n const handleSignIn = async () => {\n // Validate fields\n if (values.username === '') {\n setFormError(t(\"emailCannotBeEmpty\"));\n return;\n }\n if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(values.username) === false) {\n setFormError(t(\"invalidEmailAddress\"));\n return;\n }\n if (values.password === '') {\n setFormError(t(\"passwordCannotBeEmpty\"));\n return;\n }\n\n Auth.configure({\n // 'USER_SRP_AUTH' is default and ideal. 'USER_PASSWORD_AUTH' is required for account migration.\n // Todo: This should be set back when migration is complete.\n authenticationFlowType: 'USER_PASSWORD_AUTH',\n })\n\n // Attempt to sign in\n try {\n await Auth.signIn(values.username, values.password);\n } catch (error) {\n if (error.code === 'UserNotConfirmedException')\n onStateChange('confirmSignUp');\n else setFormError(error.message);\n }\n };\n\n const handleChangeLanguage = (e) => {\n cookies.set('login-lang', e.target.value, { path: '/' });\n changeLanguage(e.target.value);\n setLoginLang(e.target.value);\n };\n\n useEffect(() => {\n var lang = cookies.get('login-lang');\n changeLanguage(lang);\n setLoginLang(lang);\n }, [cookies.get('login-lang')]);\n\n return (\n <>\n {authState === 'signIn' &&\n <>\n {t(\"logInToYourAccount\")}\n\n \n \n \n \n \n \n \n\n {\n if (event.key === 'Enter')\n handleSignIn();\n }}\n />\n {\n if (event.key === 'Enter')\n handleSignIn();\n }}\n InputProps={{\n endAdornment: \n \n {values.showPassword ? : }\n \n \n }}\n />\n \n \n
\n {formError}\n
\n
\n {/* */}\n \n {/* */}\n
\n
\n \n \n {t(\"forgotYourPassword\")}\n \n \n \n \n \n {t(\"dontHaveAnAccount\")}\n \n \n \n {false && \n \n {t(\"needSomeHelp\")}\n \n \n }\n \n }\n \n );\n}","export default __webpack_public_path__ + \"static/media/ToU.0c355e95.pdf\";","import React, { useState } from \"react\";\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions\n} from '@material-ui/core';\nimport { Document, Page, pdfjs } from \"react-pdf\";\nimport pdfjsWorker from \"pdfjs-dist/build/pdf.worker.entry\";\nimport ToU from './ToU.pdf'\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\npdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;\n\nconst useStyles = makeStyles(() => ({\n paper: { minWidth: \"675px\" },\n}));\n\nconst TermsOfService = ({ openTerms, handleCloseTerms }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [numPages, setNumPages] = useState(null);\n\n function onDocumentLoadSuccess({ numPages }) {\n setNumPages(numPages);\n }\n\n return (\n \n {t(\"pulseLevelTermsOfService\")}\n \n
\n \n {Array.apply(null, Array(numPages))\n .map((x, i) => i + 1)\n .map(page => )}\n \n
\n
\n \n \n \n
\n );\n};\n\nexport default TermsOfService;","// Development API Gateway stage endpoint (Original Adhoc)\n// export const host = 'https://nq0dpp9r4m.execute-api.us-east-2.amazonaws.com/dev';\n// Production API Gateway stage endpoint (original Adhoc)\n// export const host = 'https://nq0dpp9r4m.execute-api.us-east-2.amazonaws.com/prod';\n// Production API Gateway CDK Deployed\nexport const host = 'https://q3jttewzk3.execute-api.us-east-2.amazonaws.com/prod';\n// Development API Gateway CDK Depoloyed\n//export const host = 'https://77s71l527d.execute-api.us-east-2.amazonaws.com/prod';\n\nexport const enableBilling = true;\n//export const enableBilling = false;\n\nexport const updateTimeStamp = \"2024-07-18\";\n//export const updateTimeStamp = \"2022-02-14\";\n//export const updateTimeStamp = \"2022-10-28\";\n//export const updateTimeStamp = \"2022-06-06\";\n//export const updateTimeStamp = \"2022-04-25\";\nexport const updateNotes = [\n //2023-12-??\n {label: \" Added decimal places to Average Daily Usage (ADU) displayed.\", type: \"main\"},\n {label: \" Added Puerto Rico locations.\", type: \"main\"},\n {label: \" Level Monitor Serial/UID, Family, latitude, and longitude added to downloadable CSV files.\", type: \"main\"},\n {label: \" Devices without GPS reporting will show its Site coordinates.\", type: \"sub\"},\n //2023-03-29\n //{label: \" Devices table now shows last connection time.\", type: \"main\"},\n //{label: \" Tank View now shows device family.\", type: \"main\"},\n //{label: \" Enhance site data averaging options with 5 and 7 days.\", type: \"main\"},\n //{label: \" Recommend that most applications use 1 - 3 month averaging.\", type: \"sub\"},\n //2023-02-14\n //{label: \" Cellular ultrasonic devices now support configuration settings for waveguides.\", type: \"main\"},\n //{label: \" Tank name search feature on Branch, Site, and My Tank views\", type: \"main\"},\n //{label: \" Sensor Warning filtering option\", type: \"main\"},\n //{label: \" Hidden by default, as warnings are a troubleshooting tool\", type: \"sub\"},\n //{label: \" Tank view now shows secondary graph\", type: \"main\"},\n //{label: \" Tank view now has a feature to display filtered battery reading\", type: \"main\"},\n // 2022-10-28\n //{label: \" Added unit labels to Dashboard and Fluid pages.\", type: \"main\"},\n //{label: \" Prevent navigation to invalid coordinates.\", type: \"main\"},\n //{label: \" Branch page navigation button will be disabled if coordinates are invalid.\", type: \"sub\"},\n //{label: \" Added Israel and New Zealand to country selection lists\", type: \"main\"},\n //{label: \" Improved handling of user settings.\", type: \"main\"},\n //2022-06-06\n //{label: \" Resolved bug that prevented certain tanks from being displayed in My Tanks\", type: \"main\"},\n //{label: \" Tanks without a reading or negative volumes would be filtered out.\", type: \"sub\"},\n //{label: \" Alphebetically sort information on Permissions Management page\", type: \"main\"},\n //{label: \" Refresh button\", type: \"main\"},\n //{label: \" Allows user to update displayed data without refreshing the browser\", type: \"sub\"},\n //{label: \" New feature notification pop-up\", type: \"main\"},\n //{label: \" Alerts users to software changes\", type: \"sub\"},\n //{label: \" This information can also be viewed on the Help page\", type: \"sub\"},\n {label: \" Other minor improvements and bug fixes\", type: 'main'}\n];\n\nexport const ACCESS = { OWNER: 'edit', READ_ONLY: 'view' };\nexport const statuses = ['Low', 'Critically Low', 'Communication Error', 'Low Battery', 'OK'];\nexport const status_severity = { High: 4, Low: 3, Crit: 7, Comm: 8, Batt: 5, OK: 1, unknown: 0, SensW: 2, SensE: 6 };\nexport const products = [{ id: 1, name: 'Product 1' }, { id: 2, name: 'Product 2' },];\nexport const tags = ['Tag 1', 'Tag 2'];\nexport const TANK_STATUSES = { LOW: 'Low', CRITICALLY_LOW: 'Critical', COMMUNICATION_ERROR: 'Comm', LOW_BATTERY: 'Batt', HIGH: 'High', OK: 'OK', SENSOR_WARNING: 'SensW', SENSOR_ERROR: 'SensErr'};\nexport const units_settings = [{ id: 0, name: \"US\", label: \"unitsGalIn\" }, { id: 1, name: \"Metric\", label: \"unitsLCm\" }]\nexport const srcFilter = 8;\nexport const useCookiesForData = false;\n\nexport const SubscriptionInfo = {\n plan_code: \"pulselevelcellp1\",\n currency: \"USD\",\n quantity: 1,\n total_billing_cycles: 1,\n //auto_renew: 10,\n //net_terms: 0\n};\nexport const BillingPlans = [{ label: \"monthly\", plan_code: \"pulselevelcellp1\", unit_cost: { \"USD\": 5, \"CAD\": 6.3, \"EUR\": 5, \"GBP\": 5 } },\n{ label: \"annually\", plan_code: \"pulselevelcellp2\", unit_cost: { \"USD\": 3 * 12, \"CAD\": 3.8 * 12, \"EUR\": 3 * 12, \"GBP\": 3 * 12 } }]\nexport const BillingCurrency = [\"USD\", \"CAD\", \"EUR\", \"GBP\"];\n\nexport const ActivationStatus = [{ label: 'Disabled', info: 'disabled' },\n{ label: 'Active', info: 'active billable' },\n{ label: 'Active', info: 'active free' },\n{ label: 'In Process', info: 'status change in queue' }];\n\n//Originally used: \"http://www.graco.com/us/en/privacy-policy.html\"\nexport const privacy_url = \"https://www.graco.com/us/en/privacy-policy/pulse-data-protection-notice.html\";\n\nexport const FieldSelectLabel ={\n 'coordinates': \"pin\",\n 'OrgName':\"org\",\n 'BranchName':\"branch\", \n 'SiteName':\"site\", \n 'name':\"tank\", \n 'Status':\"status\", \n 'fluidName':\"fluid\", \n 'ullage_disp_str':\"ullage\",\n 'ReadingTime_UTC':\"lastRead\",\n 'City':'city',\n 'volume_disp_str':\"inventory_par\",\n 'volume_pct':\"inventoryPercent_par\",\n 'DTE_disp':\"daysToEmpty\",\n 'ADU_disp_str':\"averageDailyUsage\",\n 'Efficiency':\"fillEfficiency\",\n 'FillCapacity_disp_str':\"capacity_par\",\n 'fluid_height_disp_str':\"fluidHeight_par\",\n 'rssi':\"rfSignal\",\n 'batt':\"batteryPercent\",\n 'FillTime':\"lastFill\",\n 'FillVolume_disp_str':\"lastFillV\",\n 'NextReading':\"nextReading\",\n};\n\nexport const COOKIE_NAMES = {\n branchColumnSortModel: '{orgName}{branchName}ColumnSortModel1',\n myTanksColumnsChecked: 'myTanksColumnsChecked1',\n myTanksColumnsOrder: 'myTanksColumnsOrder1',\n branchColumnsChecked: '{orgName}{branchName}ColumnsChecked2',\n branchColumnsOrder: '{orgName}{branchName}ColumnsOrder2',\n siteColumnsChecked: '{orgName}{branchName}{siteName}ColumnsChecked1',\n siteColumnsOrder: '{orgName}{branchName}{siteName}ColumnsOrder1',\n branchFilterMyTanks: 'branchFilterMyTanks',\n displayUnits: 'DisplayUnits'\n}\n\nexport const countries = [\n {\n \"countryName\": \"Algeria\",\n \"countryShortCode\": \"DZ\",\n \"translationKey\": \"country_name_algeria\",\n \"regions\": [\n {\n \"name\": \"Adrar\",\n \"translationKey\": \"algeria_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Aïn Defla\",\n \"translationKey\": \"algeria_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Aïn Témouchent\",\n \"translationKey\": \"algeria_region_name_46\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Algiers\",\n \"translationKey\": \"algeria_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Annaba\",\n \"translationKey\": \"algeria_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Batna\",\n \"translationKey\": \"algeria_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Béchar\",\n \"translationKey\": \"algeria_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Béjaïa\",\n \"translationKey\": \"algeria_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Biskra\",\n \"translationKey\": \"algeria_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Blida\",\n \"translationKey\": \"algeria_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Bordj Bou Arréridj\",\n \"translationKey\": \"algeria_region_name_34\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Bouïra\",\n \"translationKey\": \"algeria_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Boumerdès\",\n \"translationKey\": \"algeria_region_name_35\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Chlef\",\n \"translationKey\": \"algeria_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Constantine\",\n \"translationKey\": \"algeria_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Djelfa\",\n \"translationKey\": \"algeria_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"El Bayadh\",\n \"translationKey\": \"algeria_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"El Oued\",\n \"translationKey\": \"algeria_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"El Tarf\",\n \"translationKey\": \"algeria_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Ghardaïa\",\n \"translationKey\": \"algeria_region_name_47\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"Guelma\",\n \"translationKey\": \"algeria_region_name_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Illizi\",\n \"translationKey\": \"algeria_region_name_33\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Jijel\",\n \"translationKey\": \"algeria_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Khenchela\",\n \"translationKey\": \"algeria_region_name_40\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Laghouat\",\n \"translationKey\": \"algeria_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Mascara\",\n \"translationKey\": \"algeria_region_name_29\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Médéa\",\n \"translationKey\": \"algeria_region_name_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Mila\",\n \"translationKey\": \"algeria_region_name_43\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Mostaganem\",\n \"translationKey\": \"algeria_region_name_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Msila\",\n \"translationKey\": \"algeria_region_name_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Naâma\",\n \"translationKey\": \"algeria_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Oran\",\n \"translationKey\": \"algeria_region_name_31\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Ouargla\",\n \"translationKey\": \"algeria_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Oum el Bouaghi\",\n \"translationKey\": \"algeria_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Relizane\",\n \"translationKey\": \"algeria_region_name_48\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"Saïda\",\n \"translationKey\": \"algeria_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Sétif\",\n \"translationKey\": \"algeria_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Sidi Bel Abbès\",\n \"translationKey\": \"algeria_region_name_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Skikda\",\n \"translationKey\": \"algeria_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Souk Ahras\",\n \"translationKey\": \"algeria_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Tamanghasset\",\n \"translationKey\": \"algeria_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Tébessa\",\n \"translationKey\": \"algeria_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Tiaret\",\n \"translationKey\": \"algeria_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Tindouf\",\n \"translationKey\": \"algeria_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Tipaza\",\n \"translationKey\": \"algeria_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Tissemsilt\",\n \"translationKey\": \"algeria_region_name_38\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Tizi Ouzou\",\n \"translationKey\": \"algeria_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Tlemcen\",\n \"translationKey\": \"algeria_region_name_13\",\n \"shortCode\": \"13\"\n }\n ]\n },\n {\n \"countryName\": \"Angola\",\n \"countryShortCode\": \"AO\",\n \"translationKey\": \"country_name_angola\",\n \"regions\": [\n {\n \"name\": \"Bengo\",\n \"translationKey\": \"angola_region_name_bgo\",\n \"shortCode\": \"BGO\"\n },\n {\n \"name\": \"Benguela\",\n \"translationKey\": \"angola_region_name_bgu\",\n \"shortCode\": \"BGU\"\n },\n {\n \"name\": \"Bié\",\n \"translationKey\": \"angola_region_name_bie\",\n \"shortCode\": \"BIE\"\n },\n {\n \"name\": \"Cabinda\",\n \"translationKey\": \"angola_region_name_cab\",\n \"shortCode\": \"CAB\"\n },\n {\n \"name\": \"Cuando Cubango\",\n \"translationKey\": \"angola_region_name_ccu\",\n \"shortCode\": \"CCU\"\n },\n {\n \"name\": \"Cuanza Norte\",\n \"translationKey\": \"angola_region_name_cno\",\n \"shortCode\": \"CNO\"\n },\n {\n \"name\": \"Cuanza Sul\",\n \"translationKey\": \"angola_region_name_cus\",\n \"shortCode\": \"CUS\"\n },\n {\n \"name\": \"Cunene\",\n \"translationKey\": \"angola_region_name_cnn\",\n \"shortCode\": \"CNN\"\n },\n {\n \"name\": \"Huambo\",\n \"translationKey\": \"angola_region_name_hua\",\n \"shortCode\": \"HUA\"\n },\n {\n \"name\": \"Huíla\",\n \"translationKey\": \"angola_region_name_hui\",\n \"shortCode\": \"HUI\"\n },\n {\n \"name\": \"Luanda\",\n \"translationKey\": \"angola_region_name_lua\",\n \"shortCode\": \"LUA\"\n },\n {\n \"name\": \"Lunda Norte\",\n \"translationKey\": \"angola_region_name_lno\",\n \"shortCode\": \"LNO\"\n },\n {\n \"name\": \"Lunda Sul\",\n \"translationKey\": \"angola_region_name_lsu\",\n \"shortCode\": \"LSU\"\n },\n {\n \"name\": \"Malanje\",\n \"translationKey\": \"angola_region_name_mal\",\n \"shortCode\": \"MAL\"\n },\n {\n \"name\": \"Moxico\",\n \"translationKey\": \"angola_region_name_mox\",\n \"shortCode\": \"MOX\"\n },\n {\n \"name\": \"Namibe\",\n \"translationKey\": \"angola_region_name_nam\",\n \"shortCode\": \"NAM\"\n },\n {\n \"name\": \"Uíge\",\n \"translationKey\": \"angola_region_name_uig\",\n \"shortCode\": \"UIG\"\n },\n {\n \"name\": \"Zaire\",\n \"translationKey\": \"angola_region_name_zai\",\n \"shortCode\": \"ZAI\"\n }\n ]\n },\n {\n \"countryName\": \"Argentina\",\n \"countryShortCode\": \"AR\",\n \"translationKey\": \"country_name_argentina\",\n \"regions\": [\n {\n \"name\": \"Buenos Aires\",\n \"translationKey\": \"argentina_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Capital Federal\",\n \"translationKey\": \"argentina_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Catamarca\",\n \"translationKey\": \"argentina_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Chaco\",\n \"translationKey\": \"argentina_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Chubut\",\n \"translationKey\": \"argentina_region_name_u\",\n \"shortCode\": \"U\"\n },\n {\n \"name\": \"Córdoba\",\n \"translationKey\": \"argentina_region_name_x\",\n \"shortCode\": \"X\"\n },\n {\n \"name\": \"Corrientes\",\n \"translationKey\": \"argentina_region_name_w\",\n \"shortCode\": \"W\"\n },\n {\n \"name\": \"Entre Ríos\",\n \"translationKey\": \"argentina_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Formosa\",\n \"translationKey\": \"argentina_region_name_p\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Jujuy\",\n \"translationKey\": \"argentina_region_name_y\",\n \"shortCode\": \"Y\"\n },\n {\n \"name\": \"La Pampa\",\n \"translationKey\": \"argentina_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"La Rioja\",\n \"translationKey\": \"argentina_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Mendoza\",\n \"translationKey\": \"argentina_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Misiones\",\n \"translationKey\": \"argentina_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Neuquén\",\n \"translationKey\": \"argentina_region_name_q\",\n \"shortCode\": \"Q\"\n },\n {\n \"name\": \"Río Negro\",\n \"translationKey\": \"argentina_region_name_r\",\n \"shortCode\": \"R\"\n },\n {\n \"name\": \"Salta\",\n \"translationKey\": \"argentina_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"San Juan\",\n \"translationKey\": \"argentina_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"San Luis\",\n \"translationKey\": \"argentina_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Santa Cruz\",\n \"translationKey\": \"argentina_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"Santa Fe\",\n \"translationKey\": \"argentina_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Santiago del Estero\",\n \"translationKey\": \"argentina_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Tierra del Fuego\",\n \"translationKey\": \"argentina_region_name_v\",\n \"shortCode\": \"V\"\n },\n {\n \"name\": \"Tucumán\",\n \"translationKey\": \"argentina_region_name_t\",\n \"shortCode\": \"T\"\n }\n ]\n },\n {\n \"countryName\": \"Armenia\",\n \"countryShortCode\": \"AM\",\n \"regions\": [\n {\n \"name\": \"Aragatsotn\",\n \"shortCode\": \"AG\",\n \"translationKey\": \"Armenia_region_AG\"\n },\n {\n \"name\": \"Ararat\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"Armenia_region_AR\"\n },\n {\n \"name\": \"Armavir\",\n \"shortCode\": \"AV\",\n \"translationKey\": \"Armenia_region_AV\"\n },\n {\n \"name\": \"Gegharkunik\",\n \"shortCode\": \"GR\",\n \"translationKey\": \"Armenia_region_GR\"\n },\n {\n \"name\": \"Kotayk\",\n \"shortCode\": \"KT\",\n \"translationKey\": \"Armenia_region_KT\"\n },\n {\n \"name\": \"Lori\",\n \"shortCode\": \"LO\",\n \"translationKey\": \"Armenia_region_LO\"\n },\n {\n \"name\": \"Shirak\",\n \"shortCode\": \"SH\",\n \"translationKey\": \"Armenia_region_SH\"\n },\n {\n \"name\": \"Syunik\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Armenia_region_SU\"\n },\n {\n \"name\": \"Tavush\",\n \"shortCode\": \"TV\",\n \"translationKey\": \"Armenia_region_TV\"\n },\n {\n \"name\": \"Vayots Dzor\",\n \"shortCode\": \"VD\",\n \"translationKey\": \"Armenia_region_VD\"\n },\n {\n \"name\": \"Yerevan\",\n \"shortCode\": \"ER\",\n \"translationKey\": \"Armenia_region_ER\"\n }\n ],\n \"translationKey\": \"country_name_Armenia\"\n },\n {\n \"countryName\": \"Australia\",\n \"translationKey\": \"country_name_australia\",\n \"countryShortCode\": \"AU\",\n \"regions\": [\n {\n \"name\": \"Australian Capital Territory\",\n \"translationKey\": \"australia_region_act\",\n \"shortCode\": \"ACT\"\n },\n {\n \"name\": \"New South Wales\",\n \"translationKey\": \"australia_region_nsw\",\n \"shortCode\": \"NSW\"\n },\n {\n \"name\": \"Northern Territory\",\n \"translationKey\": \"australia_region_nt\",\n \"shortCode\": \"NT\"\n },\n {\n \"name\": \"Queensland\",\n \"translationKey\": \"australia_region_qld\",\n \"shortCode\": \"QLD\"\n },\n {\n \"name\": \"South Australia\",\n \"translationKey\": \"australia_region_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Tasmania\",\n \"translationKey\": \"australia_region_tas\",\n \"shortCode\": \"TAS\"\n },\n {\n \"name\": \"Victoria\",\n \"translationKey\": \"australia_region_vic\",\n \"shortCode\": \"VIC\"\n },\n {\n \"name\": \"Western Australia\",\n \"translationKey\": \"australia_region_wa\",\n \"shortCode\": \"WA\"\n }\n ]\n },\n {\n \"countryName\": \"Austria\",\n \"countryShortCode\": \"AT\",\n \"translationKey\": \"country_name_austria\",\n \"regions\": [\n {\n \"name\": \"Burgenland\",\n \"translationKey\": \"austria_region_burgenland\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Kärnten\",\n \"translationKey\": \"austria_region_karnten\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Niederösterreich\",\n \"translationKey\": \"austria_region_niederosterreich\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Oberösterreich\",\n \"translationKey\": \"austria_region_oberosterreich\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Salzburg\",\n \"translationKey\": \"austria_region_salzburg\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Steiermark\",\n \"translationKey\": \"austria_region_steiermark\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Tirol\",\n \"translationKey\": \"austria_region_tirol\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Vorarlberg\",\n \"translationKey\": \"austria_region_vorarlberg\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Wien\",\n \"translationKey\": \"austria_region_wien\",\n \"shortCode\": \"9\"\n }\n ]\n },\n {\n \"countryName\": \"Azerbaijan\",\n \"countryShortCode\": \"AZ\",\n \"regions\": [\n {\n \"name\": \"Abşeron\",\n \"shortCode\": \"ABS\",\n \"translationKey\": \"Azerbaijan_region_ABS\"\n },\n {\n \"name\": \"Ağcabədi\",\n \"shortCode\": \"AGC\",\n \"translationKey\": \"Azerbaijan_region_AGC\"\n },\n {\n \"name\": \"Ağdam\",\n \"shortCode\": \"AGM\",\n \"translationKey\": \"Azerbaijan_region_AGM\"\n },\n {\n \"name\": \"Ağdaş\",\n \"shortCode\": \"AGS\",\n \"translationKey\": \"Azerbaijan_region_AGS\"\n },\n {\n \"name\": \"Ağstafa\",\n \"shortCode\": \"AGA\",\n \"translationKey\": \"Azerbaijan_region_AGA\"\n },\n {\n \"name\": \"Ağsu\",\n \"shortCode\": \"AGU\",\n \"translationKey\": \"Azerbaijan_region_AGU\"\n },\n {\n \"name\": \"Astara\",\n \"shortCode\": \"AST\",\n \"translationKey\": \"Azerbaijan_region_AST\"\n },\n {\n \"name\": \"Bakı\",\n \"shortCode\": \"BAK\",\n \"translationKey\": \"Azerbaijan_region_BAK\"\n },\n {\n \"name\": \"Babək\",\n \"shortCode\": \"BAB\",\n \"translationKey\": \"Azerbaijan_region_BAB\"\n },\n {\n \"name\": \"Balakən\",\n \"shortCode\": \"BAL\",\n \"translationKey\": \"Azerbaijan_region_BAL\"\n },\n {\n \"name\": \"Bərdə\",\n \"shortCode\": \"BAR\",\n \"translationKey\": \"Azerbaijan_region_BAR\"\n },\n {\n \"name\": \"Beyləqan\",\n \"shortCode\": \"BEY\",\n \"translationKey\": \"Azerbaijan_region_BEY\"\n },\n {\n \"name\": \"Biləsuvar\",\n \"shortCode\": \"BIL\",\n \"translationKey\": \"Azerbaijan_region_BIL\"\n },\n {\n \"name\": \"Cəbrayıl\",\n \"shortCode\": \"CAB\",\n \"translationKey\": \"Azerbaijan_region_CAB\"\n },\n {\n \"name\": \"Cəlilabad\",\n \"shortCode\": \"CAL\",\n \"translationKey\": \"Azerbaijan_region_CAL\"\n },\n {\n \"name\": \"Culfa\",\n \"shortCode\": \"CUL\",\n \"translationKey\": \"Azerbaijan_region_CUL\"\n },\n {\n \"name\": \"Daşkəsən\",\n \"shortCode\": \"DAS\",\n \"translationKey\": \"Azerbaijan_region_DAS\"\n },\n {\n \"name\": \"Füzuli\",\n \"shortCode\": \"FUZ\",\n \"translationKey\": \"Azerbaijan_region_FUZ\"\n },\n {\n \"name\": \"Gədəbəy\",\n \"shortCode\": \"GAD\",\n \"translationKey\": \"Azerbaijan_region_GAD\"\n },\n {\n \"name\": \"Goranboy\",\n \"shortCode\": \"GOR\",\n \"translationKey\": \"Azerbaijan_region_GOR\"\n },\n {\n \"name\": \"Göyçay\",\n \"shortCode\": \"GOY\",\n \"translationKey\": \"Azerbaijan_region_GOY\"\n },\n {\n \"name\": \"Göygöl\",\n \"shortCode\": \"GYG\",\n \"translationKey\": \"Azerbaijan_region_GYG\"\n },\n {\n \"name\": \"Hacıqabul\",\n \"shortCode\": \"HAC\",\n \"translationKey\": \"Azerbaijan_region_HAC\"\n },\n {\n \"name\": \"İmişli\",\n \"shortCode\": \"IMI\",\n \"translationKey\": \"Azerbaijan_region_IMI\"\n },\n {\n \"name\": \"İsmayıllı\",\n \"shortCode\": \"ISM\",\n \"translationKey\": \"Azerbaijan_region_ISM\"\n },\n {\n \"name\": \"Kəlbəcər\",\n \"shortCode\": \"KAL\",\n \"translationKey\": \"Azerbaijan_region_KAL\"\n },\n {\n \"name\": \"Kǝngǝrli\",\n \"shortCode\": \"KAN\",\n \"translationKey\": \"Azerbaijan_region_KAN\"\n },\n {\n \"name\": \"Kürdəmir\",\n \"shortCode\": \"KUR\",\n \"translationKey\": \"Azerbaijan_region_KUR\"\n },\n {\n \"name\": \"Laçın\",\n \"shortCode\": \"LAC\",\n \"translationKey\": \"Azerbaijan_region_LAC\"\n },\n {\n \"name\": \"Lənkəran\",\n \"shortCode\": \"LAN\",\n \"translationKey\": \"Azerbaijan_region_LAN\"\n },\n {\n \"name\": \"Lerik\",\n \"shortCode\": \"LER\",\n \"translationKey\": \"Azerbaijan_region_LER\"\n },\n {\n \"name\": \"Masallı\",\n \"shortCode\": \"MAS\",\n \"translationKey\": \"Azerbaijan_region_MAS\"\n },\n {\n \"name\": \"Neftçala\",\n \"shortCode\": \"NEF\",\n \"translationKey\": \"Azerbaijan_region_NEF\"\n },\n {\n \"name\": \"Oğuz\",\n \"shortCode\": \"OGU\",\n \"translationKey\": \"Azerbaijan_region_OGU\"\n },\n {\n \"name\": \"Ordubad\",\n \"shortCode\": \"ORD\",\n \"translationKey\": \"Azerbaijan_region_ORD\"\n },\n {\n \"name\": \"Qəbələ\",\n \"shortCode\": \"QAB\",\n \"translationKey\": \"Azerbaijan_region_QAB\"\n },\n {\n \"name\": \"Qax\",\n \"shortCode\": \"QAX\",\n \"translationKey\": \"Azerbaijan_region_QAX\"\n },\n {\n \"name\": \"Qazax\",\n \"shortCode\": \"QAZ\",\n \"translationKey\": \"Azerbaijan_region_QAZ\"\n },\n {\n \"name\": \"Qobustan\",\n \"shortCode\": \"QOB\",\n \"translationKey\": \"Azerbaijan_region_QOB\"\n },\n {\n \"name\": \"Quba\",\n \"shortCode\": \"QBA\",\n \"translationKey\": \"Azerbaijan_region_QBA\"\n },\n {\n \"name\": \"Qubadli\",\n \"shortCode\": \"QBI\",\n \"translationKey\": \"Azerbaijan_region_QBI\"\n },\n {\n \"name\": \"Qusar\",\n \"shortCode\": \"QUS\",\n \"translationKey\": \"Azerbaijan_region_QUS\"\n },\n {\n \"name\": \"Saatlı\",\n \"shortCode\": \"SAT\",\n \"translationKey\": \"Azerbaijan_region_SAT\"\n },\n {\n \"name\": \"Sabirabad\",\n \"shortCode\": \"SAB\",\n \"translationKey\": \"Azerbaijan_region_SAB\"\n },\n {\n \"name\": \"Şabran\",\n \"shortCode\": \"SBN\",\n \"translationKey\": \"Azerbaijan_region_SBN\"\n },\n {\n \"name\": \"Sədərək\",\n \"shortCode\": \"SAD\",\n \"translationKey\": \"Azerbaijan_region_SAD\"\n },\n {\n \"name\": \"Şahbuz\",\n \"shortCode\": \"SAH\",\n \"translationKey\": \"Azerbaijan_region_SAH\"\n },\n {\n \"name\": \"Şəki\",\n \"shortCode\": \"SAK\",\n \"translationKey\": \"Azerbaijan_region_SAK\"\n },\n {\n \"name\": \"Salyan\",\n \"shortCode\": \"SAL\",\n \"translationKey\": \"Azerbaijan_region_SAL\"\n },\n {\n \"name\": \"Şamaxı\",\n \"shortCode\": \"SMI\",\n \"translationKey\": \"Azerbaijan_region_SMI\"\n },\n {\n \"name\": \"Şəmkir\",\n \"shortCode\": \"SKR\",\n \"translationKey\": \"Azerbaijan_region_SKR\"\n },\n {\n \"name\": \"Samux\",\n \"shortCode\": \"SMX\",\n \"translationKey\": \"Azerbaijan_region_SMX\"\n },\n {\n \"name\": \"Şərur\",\n \"shortCode\": \"SAR\",\n \"translationKey\": \"Azerbaijan_region_SAR\"\n },\n {\n \"name\": \"Siyəzən\",\n \"shortCode\": \"SIY\",\n \"translationKey\": \"Azerbaijan_region_SIY\"\n },\n {\n \"name\": \"Şuşa\",\n \"shortCode\": \"SUS\",\n \"translationKey\": \"Azerbaijan_region_SUS\"\n },\n {\n \"name\": \"Tərtər\",\n \"shortCode\": \"TAR\",\n \"translationKey\": \"Azerbaijan_region_TAR\"\n },\n {\n \"name\": \"Tovuz\",\n \"shortCode\": \"TOV\",\n \"translationKey\": \"Azerbaijan_region_TOV\"\n },\n {\n \"name\": \"Ucar\",\n \"shortCode\": \"UCA\",\n \"translationKey\": \"Azerbaijan_region_UCA\"\n },\n {\n \"name\": \"Xaçmaz\",\n \"shortCode\": \"XAC\",\n \"translationKey\": \"Azerbaijan_region_XAC\"\n },\n {\n \"name\": \"Xızı\",\n \"shortCode\": \"XIZ\",\n \"translationKey\": \"Azerbaijan_region_XIZ\"\n },\n {\n \"name\": \"Xocalı\",\n \"shortCode\": \"XCI\",\n \"translationKey\": \"Azerbaijan_region_XCI\"\n },\n {\n \"name\": \"Xocavənd\",\n \"shortCode\": \"XVD\",\n \"translationKey\": \"Azerbaijan_region_XVD\"\n },\n {\n \"name\": \"Yardımlı\",\n \"shortCode\": \"YAR\",\n \"translationKey\": \"Azerbaijan_region_YAR\"\n },\n {\n \"name\": \"Yevlax\",\n \"shortCode\": \"YEV\",\n \"translationKey\": \"Azerbaijan_region_YEV\"\n },\n {\n \"name\": \"Zəngilan\",\n \"shortCode\": \"ZAN\",\n \"translationKey\": \"Azerbaijan_region_ZAN\"\n },\n {\n \"name\": \"Zaqatala\",\n \"shortCode\": \"ZAQ\",\n \"translationKey\": \"Azerbaijan_region_ZAQ\"\n },\n {\n \"name\": \"Zərdab\",\n \"shortCode\": \"ZAR\",\n \"translationKey\": \"Azerbaijan_region_ZAR\"\n }\n ],\n \"translationKey\": \"country_name_Azerbaijan\"\n },\n {\n \"countryName\": \"Bahrain\",\n \"countryShortCode\": \"BH\",\n \"regions\": [\n {\n \"name\": \"Al Janūbīyah\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Bahrain_region_14\"\n },\n {\n \"name\": \"Al Manāmah\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Bahrain_region_13\"\n },\n {\n \"name\": \"Al Muḩarraq\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Bahrain_region_15\"\n },\n {\n \"name\": \"Al Wusţá\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Bahrain_region_16\"\n },\n {\n \"name\": \"Ash Shamālīyah\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Bahrain_region_17\"\n }\n ],\n \"translationKey\": \"country_name_Bahrain\"\n },\n {\n \"countryName\": \"Belarus\",\n \"countryShortCode\": \"BY\",\n \"regions\": [\n {\n \"name\": \"Brest voblast\",\n \"shortCode\": \"BR\",\n \"translationKey\": \"Belarus_region_BR\"\n },\n {\n \"name\": \"Gorod Minsk\",\n \"shortCode\": \"HM\",\n \"translationKey\": \"Belarus_region_HM\"\n },\n {\n \"name\": \"Homiel voblast\",\n \"shortCode\": \"HO\",\n \"translationKey\": \"Belarus_region_HO\"\n },\n {\n \"name\": \"Hrodna voblast\",\n \"shortCode\": \"HR\",\n \"translationKey\": \"Belarus_region_HR\"\n },\n {\n \"name\": \"Mahilyow voblast\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Belarus_region_MA\"\n },\n {\n \"name\": \"Minsk voblast\",\n \"shortCode\": \"MI\",\n \"translationKey\": \"Belarus_region_MI\"\n },\n {\n \"name\": \"Vitsebsk voblast\",\n \"shortCode\": \"VI\",\n \"translationKey\": \"Belarus_region_VI\"\n }\n ],\n \"translationKey\": \"country_name_Belarus\"\n },\n {\n \"countryName\": \"Belgium\",\n \"translationKey\": \"country_name_belgium\",\n \"countryShortCode\": \"BE\",\n \"regions\": [\n {\n \"name\": \"Brussels\",\n \"translationKey\": \"belgium_region_name_brussels\",\n \"shortCode\": \"BRU\"\n },\n {\n \"name\": \"Flanders\",\n \"translationKey\": \"belgium_region_name_flanders\",\n \"shortCode\": \"VLG\"\n },\n {\n \"name\": \"Wallonia\",\n \"translationKey\": \"belgium_region_name_wallonia\",\n \"shortCode\": \"WAL\"\n }\n ]\n },\n {\n \"countryName\": \"Benin\",\n \"countryShortCode\": \"BJ\",\n \"regions\": [\n {\n \"name\": \"Alibori\",\n \"shortCode\": \"AL\",\n \"translationKey\": \"Benin_region_AL\"\n },\n {\n \"name\": \"Atakora\",\n \"shortCode\": \"AK\",\n \"translationKey\": \"Benin_region_AK\"\n },\n {\n \"name\": \"Atlantique\",\n \"shortCode\": \"AQ\",\n \"translationKey\": \"Benin_region_AQ\"\n },\n {\n \"name\": \"Borgou\",\n \"shortCode\": \"BO\",\n \"translationKey\": \"Benin_region_BO\"\n },\n {\n \"name\": \"Collines Department\",\n \"shortCode\": \"CO\",\n \"translationKey\": \"Benin_region_CO\"\n },\n {\n \"name\": \"Donga\",\n \"shortCode\": \"DO\",\n \"translationKey\": \"Benin_region_DO\"\n },\n {\n \"name\": \"Kouffo\",\n \"shortCode\": \"KO\",\n \"translationKey\": \"Benin_region_KO\"\n },\n {\n \"name\": \"Littoral Department\",\n \"shortCode\": \"LI\",\n \"translationKey\": \"Benin_region_LI\"\n },\n {\n \"name\": \"Mono Department\",\n \"shortCode\": \"MO\",\n \"translationKey\": \"Benin_region_MO\"\n },\n {\n \"name\": \"Ouémé\",\n \"shortCode\": \"OU\",\n \"translationKey\": \"Benin_region_OU\"\n },\n {\n \"name\": \"Plateau\",\n \"shortCode\": \"PL\",\n \"translationKey\": \"Benin_region_PL\"\n },\n {\n \"name\": \"Zou\",\n \"shortCode\": \"ZO\",\n \"translationKey\": \"Benin_region_ZO\"\n }\n ],\n \"translationKey\": \"country_name_Benin\"\n },\n {\n \"countryName\": \"Bosnia and Herzegovina\",\n \"countryShortCode\": \"BA\",\n \"regions\": [\n {\n \"name\": \"Brčko Distrikt\",\n \"shortCode\": \"BRC\",\n \"translationKey\": \"Bosnia and Herzegovina_region_BRC\"\n },\n {\n \"name\": \"Federacija Bosne i Hercegovine\",\n \"shortCode\": \"BIH\",\n \"translationKey\": \"Bosnia and Herzegovina_region_BIH\"\n },\n {\n \"name\": \"Republika Srpska\",\n \"shortCode\": \"SRP\",\n \"translationKey\": \"Bosnia and Herzegovina_region_SRP\"\n }\n ],\n \"translationKey\": \"country_name_Bosnia and Herzegovina\"\n },\n {\n \"countryName\": \"Botswana\",\n \"countryShortCode\": \"BW\",\n \"regions\": [\n {\n \"name\": \"Central\",\n \"shortCode\": \"CE\",\n \"translationKey\": \"Botswana_region_CE\"\n },\n {\n \"name\": \"Ghanzi\",\n \"shortCode\": \"GH\",\n \"translationKey\": \"Botswana_region_GH\"\n },\n {\n \"name\": \"Kgalagadi\",\n \"shortCode\": \"KG\",\n \"translationKey\": \"Botswana_region_KG\"\n },\n {\n \"name\": \"Kgatleng\",\n \"shortCode\": \"KL\",\n \"translationKey\": \"Botswana_region_KL\"\n },\n {\n \"name\": \"Kweneng\",\n \"shortCode\": \"KW\",\n \"translationKey\": \"Botswana_region_KW\"\n },\n {\n \"name\": \"North West\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"Botswana_region_NW\"\n },\n {\n \"name\": \"North-East\",\n \"shortCode\": \"NE\",\n \"translationKey\": \"Botswana_region_NE\"\n },\n {\n \"name\": \"South East\",\n \"shortCode\": \"SE\",\n \"translationKey\": \"Botswana_region_SE\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Botswana_region_SO\"\n }\n ],\n \"translationKey\": \"country_name_Botswana\"\n },\n {\n \"countryName\": \"Brazil\",\n \"countryShortCode\": \"BR\",\n \"regions\": [\n {\n \"name\": \"Acre\",\n \"shortCode\": \"AC\",\n \"translationKey\": \"Brazil_region_AC\"\n },\n {\n \"name\": \"Alagoas\",\n \"shortCode\": \"AL\",\n \"translationKey\": \"Brazil_region_AL\"\n },\n {\n \"name\": \"Amapá\",\n \"shortCode\": \"AP\",\n \"translationKey\": \"Brazil_region_AP\"\n },\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AM\",\n \"translationKey\": \"Brazil_region_AM\"\n },\n {\n \"name\": \"Bahia\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Brazil_region_BA\"\n },\n {\n \"name\": \"Ceará\",\n \"shortCode\": \"CE\",\n \"translationKey\": \"Brazil_region_CE\"\n },\n {\n \"name\": \"Distrito Federal\",\n \"shortCode\": \"DF\",\n \"translationKey\": \"Brazil_region_DF\"\n },\n {\n \"name\": \"Espírito Santo\",\n \"shortCode\": \"ES\",\n \"translationKey\": \"Brazil_region_ES\"\n },\n {\n \"name\": \"Goiás\",\n \"shortCode\": \"GO\",\n \"translationKey\": \"Brazil_region_GO\"\n },\n {\n \"name\": \"Maranhão\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Brazil_region_MA\"\n },\n {\n \"name\": \"Mato Grosso\",\n \"shortCode\": \"MT\",\n \"translationKey\": \"Brazil_region_MT\"\n },\n {\n \"name\": \"Mato Grosso do Sul\",\n \"shortCode\": \"MS\",\n \"translationKey\": \"Brazil_region_MS\"\n },\n {\n \"name\": \"Minas Gerais\",\n \"shortCode\": \"MG\",\n \"translationKey\": \"Brazil_region_MG\"\n },\n {\n \"name\": \"Pará\",\n \"shortCode\": \"PA\",\n \"translationKey\": \"Brazil_region_PA\"\n },\n {\n \"name\": \"Paraíba\",\n \"shortCode\": \"PB\",\n \"translationKey\": \"Brazil_region_PB\"\n },\n {\n \"name\": \"Paraná\",\n \"shortCode\": \"PR\",\n \"translationKey\": \"Brazil_region_PR\"\n },\n {\n \"name\": \"Pernambuco\",\n \"shortCode\": \"PE\",\n \"translationKey\": \"Brazil_region_PE\"\n },\n {\n \"name\": \"Piauí\",\n \"shortCode\": \"PI\",\n \"translationKey\": \"Brazil_region_PI\"\n },\n {\n \"name\": \"Rio de Janeiro\",\n \"shortCode\": \"RJ\",\n \"translationKey\": \"Brazil_region_RJ\"\n },\n {\n \"name\": \"Rio Grande do Norte\",\n \"shortCode\": \"RN\",\n \"translationKey\": \"Brazil_region_RN\"\n },\n {\n \"name\": \"Rio Grande do Sul\",\n \"shortCode\": \"RS\",\n \"translationKey\": \"Brazil_region_RS\"\n },\n {\n \"name\": \"Rondônia\",\n \"shortCode\": \"RO\",\n \"translationKey\": \"Brazil_region_RO\"\n },\n {\n \"name\": \"Roraima\",\n \"shortCode\": \"RR\",\n \"translationKey\": \"Brazil_region_RR\"\n },\n {\n \"name\": \"Santa Catarina\",\n \"shortCode\": \"SC\",\n \"translationKey\": \"Brazil_region_SC\"\n },\n {\n \"name\": \"São Paulo\",\n \"shortCode\": \"SP\",\n \"translationKey\": \"Brazil_region_SP\"\n },\n {\n \"name\": \"Sergipe\",\n \"shortCode\": \"SE\",\n \"translationKey\": \"Brazil_region_SE\"\n },\n {\n \"name\": \"Tocantins\",\n \"shortCode\": \"TO\",\n \"translationKey\": \"Brazil_region_TO\"\n }\n ],\n \"translationKey\": \"country_name_Brazil\"\n },\n {\n \"countryName\": \"Bulgaria\",\n \"translationKey\": \"country_name_bulgaria\",\n \"countryShortCode\": \"BG\",\n \"regions\": [\n {\n \"name\": \"Blagoevgrad\",\n \"translationKey\": \"bulgaria_region_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Burgas\",\n \"translationKey\": \"bulgaria_region_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Dobrich\",\n \"translationKey\": \"bulgaria_region_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Gabrovo\",\n \"translationKey\": \"bulgaria_region_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Jambol\",\n \"translationKey\": \"bulgaria_region_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Khaskovo\",\n \"translationKey\": \"bulgaria_region_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Kjustendil\",\n \"translationKey\": \"bulgaria_region_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Kurdzhali\",\n \"translationKey\": \"bulgaria_region_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Lovech\",\n \"translationKey\": \"bulgaria_region_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Montana\",\n \"translationKey\": \"bulgaria_region_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Pazardzhik\",\n \"translationKey\": \"bulgaria_region_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Pernik\",\n \"translationKey\": \"bulgaria_region_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Pleven\",\n \"translationKey\": \"bulgaria_region_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Plovdiv\",\n \"translationKey\": \"bulgaria_region_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Razgrad\",\n \"translationKey\": \"bulgaria_region_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Ruse\",\n \"translationKey\": \"bulgaria_region_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Shumen\",\n \"translationKey\": \"bulgaria_region_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Silistra\",\n \"translationKey\": \"bulgaria_region_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Sliven\",\n \"translationKey\": \"bulgaria_region_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Smoljan\",\n \"translationKey\": \"bulgaria_region_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Sofija\",\n \"translationKey\": \"bulgaria_region_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Sofija-Grad\",\n \"translationKey\": \"bulgaria_region_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Stara Zagora\",\n \"translationKey\": \"bulgaria_region_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Turgovishhe\",\n \"translationKey\": \"bulgaria_region_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Varna\",\n \"translationKey\": \"bulgaria_region_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Veliko Turnovo\",\n \"translationKey\": \"bulgaria_region_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Vidin\",\n \"translationKey\": \"bulgaria_region_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Vraca\",\n \"translationKey\": \"bulgaria_region_06\",\n \"shortCode\": \"06\"\n }\n ]\n },\n {\n \"countryName\": \"Burkina Faso\",\n \"countryShortCode\": \"BF\",\n \"regions\": [\n {\n \"name\": \"Balé\",\n \"shortCode\": \"BAL\",\n \"translationKey\": \"Burkina Faso_region_BAL\"\n },\n {\n \"name\": \"Bam/Lake Bam\",\n \"shortCode\": \"BAM\",\n \"translationKey\": \"Burkina Faso_region_BAM\"\n },\n {\n \"name\": \"Banwa Province\",\n \"shortCode\": \"BAN\",\n \"translationKey\": \"Burkina Faso_region_BAN\"\n },\n {\n \"name\": \"Bazèga\",\n \"shortCode\": \"BAZ\",\n \"translationKey\": \"Burkina Faso_region_BAZ\"\n },\n {\n \"name\": \"Bougouriba\",\n \"shortCode\": \"BGR\",\n \"translationKey\": \"Burkina Faso_region_BGR\"\n },\n {\n \"name\": \"Boulgou Province\",\n \"shortCode\": \"BLG\",\n \"translationKey\": \"Burkina Faso_region_BLG\"\n },\n {\n \"name\": \"Boulkiemdé\",\n \"shortCode\": \"BLK\",\n \"translationKey\": \"Burkina Faso_region_BLK\"\n },\n {\n \"name\": \"Comoé/Komoe\",\n \"shortCode\": \"COM\",\n \"translationKey\": \"Burkina Faso_region_COM\"\n },\n {\n \"name\": \"Ganzourgou Province\",\n \"shortCode\": \"GAN\",\n \"translationKey\": \"Burkina Faso_region_GAN\"\n },\n {\n \"name\": \"Gnagna\",\n \"shortCode\": \"GNA\",\n \"translationKey\": \"Burkina Faso_region_GNA\"\n },\n {\n \"name\": \"Gourma Province\",\n \"shortCode\": \"GOU\",\n \"translationKey\": \"Burkina Faso_region_GOU\"\n },\n {\n \"name\": \"Houet\",\n \"shortCode\": \"HOU\",\n \"translationKey\": \"Burkina Faso_region_HOU\"\n },\n {\n \"name\": \"Ioba\",\n \"shortCode\": \"IOB\",\n \"translationKey\": \"Burkina Faso_region_IOB\"\n },\n {\n \"name\": \"Kadiogo\",\n \"shortCode\": \"KAD\",\n \"translationKey\": \"Burkina Faso_region_KAD\"\n },\n {\n \"name\": \"Kénédougou\",\n \"shortCode\": \"KEN\",\n \"translationKey\": \"Burkina Faso_region_KEN\"\n },\n {\n \"name\": \"Komondjari\",\n \"shortCode\": \"KMD\",\n \"translationKey\": \"Burkina Faso_region_KMD\"\n },\n {\n \"name\": \"Kompienga\",\n \"shortCode\": \"KMP\",\n \"translationKey\": \"Burkina Faso_region_KMP\"\n },\n {\n \"name\": \"Kossi Province\",\n \"shortCode\": \"KOS\",\n \"translationKey\": \"Burkina Faso_region_KOS\"\n },\n {\n \"name\": \"Koulpélogo\",\n \"shortCode\": \"KOP\",\n \"translationKey\": \"Burkina Faso_region_KOP\"\n },\n {\n \"name\": \"Kouritenga\",\n \"shortCode\": \"KOT\",\n \"translationKey\": \"Burkina Faso_region_KOT\"\n },\n {\n \"name\": \"Kourwéogo\",\n \"shortCode\": \"KOW\",\n \"translationKey\": \"Burkina Faso_region_KOW\"\n },\n {\n \"name\": \"Léraba\",\n \"shortCode\": \"LER\",\n \"translationKey\": \"Burkina Faso_region_LER\"\n },\n {\n \"name\": \"Loroum\",\n \"shortCode\": \"LOR\",\n \"translationKey\": \"Burkina Faso_region_LOR\"\n },\n {\n \"name\": \"Mouhoun\",\n \"shortCode\": \"MOU\",\n \"translationKey\": \"Burkina Faso_region_MOU\"\n },\n {\n \"name\": \"Namentenga\",\n \"shortCode\": \"NAM\",\n \"translationKey\": \"Burkina Faso_region_NAM\"\n },\n {\n \"name\": \"Naouri/Nahouri\",\n \"shortCode\": \"NAO\",\n \"translationKey\": \"Burkina Faso_region_NAO\"\n },\n {\n \"name\": \"Nayala\",\n \"shortCode\": \"NAY\",\n \"translationKey\": \"Burkina Faso_region_NAY\"\n },\n {\n \"name\": \"Noumbiel\",\n \"shortCode\": \"NOU\",\n \"translationKey\": \"Burkina Faso_region_NOU\"\n },\n {\n \"name\": \"Oubritenga\",\n \"shortCode\": \"OUB\",\n \"translationKey\": \"Burkina Faso_region_OUB\"\n },\n {\n \"name\": \"Oudalan\",\n \"shortCode\": \"OUD\",\n \"translationKey\": \"Burkina Faso_region_OUD\"\n },\n {\n \"name\": \"Passoré\",\n \"shortCode\": \"PAS\",\n \"translationKey\": \"Burkina Faso_region_PAS\"\n },\n {\n \"name\": \"Poni\",\n \"shortCode\": \"PON\",\n \"translationKey\": \"Burkina Faso_region_PON\"\n },\n {\n \"name\": \"Sanguié\",\n \"shortCode\": \"SNG\",\n \"translationKey\": \"Burkina Faso_region_SNG\"\n },\n {\n \"name\": \"Sanmatenga\",\n \"shortCode\": \"SMT\",\n \"translationKey\": \"Burkina Faso_region_SMT\"\n },\n {\n \"name\": \"Séno\",\n \"shortCode\": \"SEN\",\n \"translationKey\": \"Burkina Faso_region_SEN\"\n },\n {\n \"name\": \"Sissili\",\n \"shortCode\": \"SIS\",\n \"translationKey\": \"Burkina Faso_region_SIS\"\n },\n {\n \"name\": \"Soum\",\n \"shortCode\": \"SOM\",\n \"translationKey\": \"Burkina Faso_region_SOM\"\n },\n {\n \"name\": \"Sourou\",\n \"shortCode\": \"SOR\",\n \"translationKey\": \"Burkina Faso_region_SOR\"\n },\n {\n \"name\": \"Tapoa\",\n \"shortCode\": \"TAP\",\n \"translationKey\": \"Burkina Faso_region_TAP\"\n },\n {\n \"name\": \"Tui/Tuy\",\n \"shortCode\": \"TUI\",\n \"translationKey\": \"Burkina Faso_region_TUI\"\n },\n {\n \"name\": \"Yagha\",\n \"shortCode\": \"YAG\",\n \"translationKey\": \"Burkina Faso_region_YAG\"\n },\n {\n \"name\": \"Yatenga\",\n \"shortCode\": \"YAT\",\n \"translationKey\": \"Burkina Faso_region_YAT\"\n },\n {\n \"name\": \"Ziro\",\n \"shortCode\": \"ZIR\",\n \"translationKey\": \"Burkina Faso_region_ZIR\"\n },\n {\n \"name\": \"Zondoma\",\n \"shortCode\": \"ZON\",\n \"translationKey\": \"Burkina Faso_region_ZON\"\n },\n {\n \"name\": \"Zoundwéogo\",\n \"shortCode\": \"ZOU\",\n \"translationKey\": \"Burkina Faso_region_ZOU\"\n }\n ],\n \"translationKey\": \"country_name_Burkina Faso\"\n },\n {\n \"countryName\": \"Cameroon\",\n \"countryShortCode\": \"CM\",\n \"regions\": [\n {\n \"name\": \"Adamaoua\",\n \"shortCode\": \"AD\",\n \"translationKey\": \"Cameroon_region_AD\"\n },\n {\n \"name\": \"Centre\",\n \"shortCode\": \"CE\",\n \"translationKey\": \"Cameroon_region_CE\"\n },\n {\n \"name\": \"Est\",\n \"shortCode\": \"ES\",\n \"translationKey\": \"Cameroon_region_ES\"\n },\n {\n \"name\": \"Extrême-Nord\",\n \"shortCode\": \"EN\",\n \"translationKey\": \"Cameroon_region_EN\"\n },\n {\n \"name\": \"Littoral\",\n \"shortCode\": \"LT\",\n \"translationKey\": \"Cameroon_region_LT\"\n },\n {\n \"name\": \"Nord\",\n \"shortCode\": \"NO\",\n \"translationKey\": \"Cameroon_region_NO\"\n },\n {\n \"name\": \"Nord-Ouest\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"Cameroon_region_NW\"\n },\n {\n \"name\": \"Ouest\",\n \"shortCode\": \"OU\",\n \"translationKey\": \"Cameroon_region_OU\"\n },\n {\n \"name\": \"Sud\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Cameroon_region_SU\"\n },\n {\n \"name\": \"Sud-Ouest\",\n \"shortCode\": \"SW\",\n \"translationKey\": \"Cameroon_region_SW\"\n }\n ],\n \"translationKey\": \"country_name_Cameroon\"\n },\n {\n \"countryName\": \"Canada\",\n \"countryShortCode\": \"CA\",\n \"translationKey\": \"canada\",\n \"regions\": [\n {\n \"name\": \"Alberta\",\n \"shortCode\": \"AB\",\n \"translationKey\": \"canada_ab\"\n },\n {\n \"name\": \"British Columbia\",\n \"shortCode\": \"BC\",\n \"translationKey\": \"canada_bc\"\n },\n {\n \"name\": \"Manitoba\",\n \"shortCode\": \"MB\",\n \"translationKey\": \"canada_mb\"\n },\n {\n \"name\": \"New Brunswick\",\n \"shortCode\": \"NB\",\n \"translationKey\": \"canada_nb\"\n },\n {\n \"name\": \"Newfoundland and Labrador\",\n \"shortCode\": \"NL\",\n \"translationKey\": \"canada_nl\"\n },\n {\n \"name\": \"Northwest Territories\",\n \"shortCode\": \"NT\",\n \"translationKey\": \"canada_nt\"\n },\n {\n \"name\": \"Nova Scotia\",\n \"shortCode\": \"NS\",\n \"translationKey\": \"canada_ns\"\n },\n {\n \"name\": \"Nunavut\",\n \"shortCode\": \"NU\",\n \"translationKey\": \"canada_nu\"\n },\n {\n \"name\": \"Ontario\",\n \"shortCode\": \"ON\",\n \"translationKey\": \"canada_on\"\n },\n {\n \"name\": \"Prince Edward Island\",\n \"shortCode\": \"PE\",\n \"translationKey\": \"canada_pe\"\n },\n {\n \"name\": \"Quebec\",\n \"shortCode\": \"QC\",\n \"translationKey\": \"canada_qc\"\n },\n {\n \"name\": \"Saskatchewan\",\n \"shortCode\": \"SK\",\n \"translationKey\": \"canada_sk\"\n },\n {\n \"name\": \"Yukon\",\n \"shortCode\": \"YT\",\n \"translationKey\": \"canada_yt\"\n }\n ]\n },\n {\n \"countryName\": \"Chile\",\n \"countryShortCode\": \"CL\",\n \"regions\": [\n {\n \"name\": \"Aisén del General Carlos Ibáñez del Campo\",\n \"shortCode\": \"AI\",\n \"translationKey\": \"Chile_region_AI\"\n },\n {\n \"name\": \"Antofagasta\",\n \"shortCode\": \"AN\",\n \"translationKey\": \"Chile_region_AN\"\n },\n {\n \"name\": \"Araucanía\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"Chile_region_AR\"\n },\n {\n \"name\": \"Arica y Parinacota\",\n \"shortCode\": \"AP\",\n \"translationKey\": \"Chile_region_AP\"\n },\n {\n \"name\": \"Atacama\",\n \"shortCode\": \"AT\",\n \"translationKey\": \"Chile_region_AT\"\n },\n {\n \"name\": \"Bío-Bío\",\n \"shortCode\": \"BI\",\n \"translationKey\": \"Chile_region_BI\"\n },\n {\n \"name\": \"Coquimbo\",\n \"shortCode\": \"CO\",\n \"translationKey\": \"Chile_region_CO\"\n },\n {\n \"name\": \"Libertador General Bernardo O'Higgins\",\n \"shortCode\": \"LI\",\n \"translationKey\": \"Chile_region_LI\"\n },\n {\n \"name\": \"Los Lagos\",\n \"shortCode\": \"LL\",\n \"translationKey\": \"Chile_region_LL\"\n },\n {\n \"name\": \"Los Ríos\",\n \"shortCode\": \"LR\",\n \"translationKey\": \"Chile_region_LR\"\n },\n {\n \"name\": \"Magallanes y Antartica Chilena\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Chile_region_MA\"\n },\n {\n \"name\": \"Marga-Marga\",\n \"shortCode\": \"\",\n \"translationKey\": \"Chile_region_\"\n },\n {\n \"name\": \"Maule\",\n \"shortCode\": \"ML\",\n \"translationKey\": \"Chile_region_ML\"\n },\n {\n \"name\": \"Ñuble\",\n \"shortCode\": \"NB\",\n \"translationKey\": \"Chile_region_NB\"\n },\n {\n \"name\": \"Región Metropolitana de Santiago\",\n \"shortCode\": \"RM\",\n \"translationKey\": \"Chile_region_RM\"\n },\n {\n \"name\": \"Tarapacá\",\n \"shortCode\": \"TA\",\n \"translationKey\": \"Chile_region_TA\"\n },\n {\n \"name\": \"Valparaíso\",\n \"shortCode\": \"VS\",\n \"translationKey\": \"Chile_region_VS\"\n }\n ],\n \"translationKey\": \"country_name_Chile\"\n },\n {\n \"countryName\": \"Colombia\",\n \"countryShortCode\": \"CO\",\n \"regions\": [\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AMA\",\n \"translationKey\": \"Colombia_region_AMA\"\n },\n {\n \"name\": \"Antioquia\",\n \"shortCode\": \"ANT\",\n \"translationKey\": \"Colombia_region_ANT\"\n },\n {\n \"name\": \"Arauca\",\n \"shortCode\": \"ARA\",\n \"translationKey\": \"Colombia_region_ARA\"\n },\n {\n \"name\": \"Archipiélago de San Andrés\",\n \"shortCode\": \"SAP\",\n \"translationKey\": \"Colombia_region_SAP\"\n },\n {\n \"name\": \"Atlántico\",\n \"shortCode\": \"ATL\",\n \"translationKey\": \"Colombia_region_ATL\"\n },\n {\n \"name\": \"Bogotá D.C.\",\n \"shortCode\": \"DC\",\n \"translationKey\": \"Colombia_region_DC\"\n },\n {\n \"name\": \"Bolívar\",\n \"shortCode\": \"BOL\",\n \"translationKey\": \"Colombia_region_BOL\"\n },\n {\n \"name\": \"Boyacá\",\n \"shortCode\": \"BOY\",\n \"translationKey\": \"Colombia_region_BOY\"\n },\n {\n \"name\": \"Caldas\",\n \"shortCode\": \"CAL\",\n \"translationKey\": \"Colombia_region_CAL\"\n },\n {\n \"name\": \"Caquetá\",\n \"shortCode\": \"CAQ\",\n \"translationKey\": \"Colombia_region_CAQ\"\n },\n {\n \"name\": \"Casanare\",\n \"shortCode\": \"CAS\",\n \"translationKey\": \"Colombia_region_CAS\"\n },\n {\n \"name\": \"Cauca\",\n \"shortCode\": \"CAU\",\n \"translationKey\": \"Colombia_region_CAU\"\n },\n {\n \"name\": \"Cesar\",\n \"shortCode\": \"CES\",\n \"translationKey\": \"Colombia_region_CES\"\n },\n {\n \"name\": \"Chocó\",\n \"shortCode\": \"CHO\",\n \"translationKey\": \"Colombia_region_CHO\"\n },\n {\n \"name\": \"Córdoba\",\n \"shortCode\": \"COR\",\n \"translationKey\": \"Colombia_region_COR\"\n },\n {\n \"name\": \"Cundinamarca\",\n \"shortCode\": \"CUN\",\n \"translationKey\": \"Colombia_region_CUN\"\n },\n {\n \"name\": \"Guainía\",\n \"shortCode\": \"GUA\",\n \"translationKey\": \"Colombia_region_GUA\"\n },\n {\n \"name\": \"Guaviare\",\n \"shortCode\": \"GUV\",\n \"translationKey\": \"Colombia_region_GUV\"\n },\n {\n \"name\": \"Huila\",\n \"shortCode\": \"HUI\",\n \"translationKey\": \"Colombia_region_HUI\"\n },\n {\n \"name\": \"La Guajira\",\n \"shortCode\": \"LAG\",\n \"translationKey\": \"Colombia_region_LAG\"\n },\n {\n \"name\": \"Magdalena\",\n \"shortCode\": \"MAG\",\n \"translationKey\": \"Colombia_region_MAG\"\n },\n {\n \"name\": \"Meta\",\n \"shortCode\": \"MET\",\n \"translationKey\": \"Colombia_region_MET\"\n },\n {\n \"name\": \"Nariño\",\n \"shortCode\": \"NAR\",\n \"translationKey\": \"Colombia_region_NAR\"\n },\n {\n \"name\": \"Norte de Santander\",\n \"shortCode\": \"NSA\",\n \"translationKey\": \"Colombia_region_NSA\"\n },\n {\n \"name\": \"Putumayo\",\n \"shortCode\": \"PUT\",\n \"translationKey\": \"Colombia_region_PUT\"\n },\n {\n \"name\": \"Quindío\",\n \"shortCode\": \"QUI\",\n \"translationKey\": \"Colombia_region_QUI\"\n },\n {\n \"name\": \"Risaralda\",\n \"shortCode\": \"RIS\",\n \"translationKey\": \"Colombia_region_RIS\"\n },\n {\n \"name\": \"Santander\",\n \"shortCode\": \"SAN\",\n \"translationKey\": \"Colombia_region_SAN\"\n },\n {\n \"name\": \"Sucre\",\n \"shortCode\": \"SUC\",\n \"translationKey\": \"Colombia_region_SUC\"\n },\n {\n \"name\": \"Tolima\",\n \"shortCode\": \"TOL\",\n \"translationKey\": \"Colombia_region_TOL\"\n },\n {\n \"name\": \"Valle del Cauca\",\n \"shortCode\": \"VAC\",\n \"translationKey\": \"Colombia_region_VAC\"\n },\n {\n \"name\": \"Vaupés\",\n \"shortCode\": \"VAU\",\n \"translationKey\": \"Colombia_region_VAU\"\n },\n {\n \"name\": \"Vichada\",\n \"shortCode\": \"VID\",\n \"translationKey\": \"Colombia_region_VID\"\n }\n ],\n \"translationKey\": \"country_name_Colombia\"\n },\n {\n \"countryName\": \"Congo, Republic of the (Brazzaville)\",\n \"countryShortCode\": \"CG\",\n \"regions\": [\n {\n \"name\": \"Bouenza\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_11\"\n },\n {\n \"name\": \"Brazzaville\",\n \"shortCode\": \"BZV\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_BZV\"\n },\n {\n \"name\": \"Cuvette\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_8\"\n },\n {\n \"name\": \"Cuvette-Ouest\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_15\"\n },\n {\n \"name\": \"Kouilou\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_5\"\n },\n {\n \"name\": \"Lékoumou\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_2\"\n },\n {\n \"name\": \"Likouala\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_7\"\n },\n {\n \"name\": \"Niari\",\n \"shortCode\": \"9\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_9\"\n },\n {\n \"name\": \"Plateaux\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_14\"\n },\n {\n \"name\": \"Pointe-Noire\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_16\"\n },\n {\n \"name\": \"Pool\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_12\"\n },\n {\n \"name\": \"Sangha\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Congo, Republic of the (Brazzaville)_region_13\"\n }\n ],\n \"translationKey\": \"country_name_Congo, Republic of the (Brazzaville)\"\n },\n {\n \"countryName\": \"Congo, the Democratic Republic of the (Kinshasa)\",\n \"countryShortCode\": \"CD\",\n \"regions\": [\n {\n \"name\": \"Bandundu\",\n \"shortCode\": \"BN\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_BN\"\n },\n {\n \"name\": \"Bas-Congo\",\n \"shortCode\": \"BC\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_BC\"\n },\n {\n \"name\": \"Équateur\",\n \"shortCode\": \"EQ\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_EQ\"\n },\n {\n \"name\": \"Kasaï-Occidental\",\n \"shortCode\": \"KE\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_KE\"\n },\n {\n \"name\": \"Kasaï-Oriental\",\n \"shortCode\": \"KW\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_KW\"\n },\n {\n \"name\": \"Katanga\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_KA\"\n },\n {\n \"name\": \"Kinshasa\",\n \"shortCode\": \"KN\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_KN\"\n },\n {\n \"name\": \"Maniema\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_MA\"\n },\n {\n \"name\": \"Nord-Kivu\",\n \"shortCode\": \"NK\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_NK\"\n },\n {\n \"name\": \"Orientale\",\n \"shortCode\": \"OR\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_OR\"\n },\n {\n \"name\": \"Sud-Kivu\",\n \"shortCode\": \"SK\",\n \"translationKey\": \"Congo, the Democratic Republic of the (Kinshasa)_region_SK\"\n }\n ],\n \"translationKey\": \"country_name_Congo, the Democratic Republic of the (Kinshasa)\"\n },\n {\n \"countryName\": \"Croatia\",\n \"translationKey\": \"country_name_croatia\",\n \"countryShortCode\": \"HR\",\n \"regions\": [\n {\n \"name\": \"Bjelovarsko-bilogorska županija\",\n \"translationKey\": \"croatia_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Brodsko-posavska županija\",\n \"translationKey\": \"croatia_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Dubrovačko-neretvanska županija\",\n \"translationKey\": \"croatia_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Grad Zagreb\",\n \"translationKey\": \"croatia_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Istarska županija\",\n \"translationKey\": \"croatia_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Karlovačka županija\",\n \"translationKey\": \"croatia_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Koprivničko-križevačka županija\",\n \"translationKey\": \"croatia_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Krapinsko-zagorska županija\",\n \"translationKey\": \"croatia_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Ličko-senjska županija\",\n \"translationKey\": \"croatia_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Međimurska županija\",\n \"translationKey\": \"croatia_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Osječko-baranjska županija\",\n \"translationKey\": \"croatia_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Požeško-slavonska županija\",\n \"translationKey\": \"croatia_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Primorsko-goranska županija\",\n \"translationKey\": \"croatia_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Sisačko-moslavačka županija\",\n \"translationKey\": \"croatia_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Splitsko-dalmatinska županija\",\n \"translationKey\": \"croatia_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Šibensko-kninska županija\",\n \"translationKey\": \"croatia_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Varaždinska županija\",\n \"translationKey\": \"croatia_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Virovitičko-podravska županija\",\n \"translationKey\": \"croatia_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Vukovarsko-srijemska županija\",\n \"translationKey\": \"croatia_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Zadarska županija\",\n \"translationKey\": \"croatia_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Zagrebačka županija\",\n \"translationKey\": \"croatia_region_name_01\",\n \"shortCode\": \"01\"\n }\n ]\n },\n {\n \"countryName\": \"Republic of Cyprus\",\n \"translationKey\": \"country_name_cyprus\",\n \"countryShortCode\": \"CY\",\n \"regions\": [\n {\n \"name\": \"Ammochostos\",\n \"translationKey\": \"cyprus_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Keryneia\",\n \"translationKey\": \"cyprus_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Larnaka\",\n \"translationKey\": \"cyprus_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Lefkosia\",\n \"translationKey\": \"cyprus_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Lemesos\",\n \"translationKey\": \"cyprus_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Pafos\",\n \"translationKey\": \"cyprus_region_name_05\",\n \"shortCode\": \"05\"\n }\n ]\n },\n {\n \"countryName\": \"Czech Republic\",\n \"translationKey\": \"country_name_czech\",\n \"countryShortCode\": \"CZ\",\n \"regions\": [\n {\n \"name\": \"Hlavní město Praha\",\n \"translationKey\": \"czech_region_name_pr\",\n \"shortCode\": \"PR\"\n },\n {\n \"name\": \"Jihočeský kraj\",\n \"translationKey\": \"czech_region_name_jc\",\n \"shortCode\": \"JC\"\n },\n {\n \"name\": \"Jihomoravský kraj\",\n \"translationKey\": \"czech_region_name_jm\",\n \"shortCode\": \"JM\"\n },\n {\n \"name\": \"Karlovarský kraj\",\n \"translationKey\": \"czech_region_name_ka\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Královéhradecký kraj\",\n \"translationKey\": \"czech_region_name_kr\",\n \"shortCode\": \"KR\"\n },\n {\n \"name\": \"Liberecký kraj\",\n \"translationKey\": \"czech_region_name_li\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Moravskoslezský kraj\",\n \"translationKey\": \"czech_region_name_mo\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Olomoucký kraj\",\n \"translationKey\": \"czech_region_name_ol\",\n \"shortCode\": \"OL\"\n },\n {\n \"name\": \"Pardubický kraj\",\n \"translationKey\": \"czech_region_name_pa\",\n \"shortCode\": \"PA\"\n },\n {\n \"name\": \"Plzeňský kraj\",\n \"translationKey\": \"czech_region_name_pl\",\n \"shortCode\": \"PL\"\n },\n {\n \"name\": \"Středočeský kraj\",\n \"translationKey\": \"czech_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Ústecký kraj\",\n \"translationKey\": \"czech_region_name_us\",\n \"shortCode\": \"US\"\n },\n {\n \"name\": \"Vysočina\",\n \"translationKey\": \"czech_region_name_vy\",\n \"shortCode\": \"VY\"\n },\n {\n \"name\": \"Zlínský kraj\",\n \"translationKey\": \"czech_region_name_zl\",\n \"shortCode\": \"ZL\"\n }\n ]\n },\n {\n \"countryName\": \"Denmark\",\n \"translationKey\": \"country_name_denmark\",\n \"countryShortCode\": \"DK\",\n \"regions\": [\n {\n \"name\": \"Hovedstaden\",\n \"translationKey\": \"denmark_region_name_84\",\n \"shortCode\": \"84\"\n },\n {\n \"name\": \"Kujalleq\",\n \"translationKey\": \"denmark_region_name_gl_ku\",\n \"shortCode\": \"GL-KU\"\n },\n {\n \"name\": \"Midtjylland\",\n \"translationKey\": \"denmark_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Norderøerne\",\n \"translationKey\": \"denmark_region_name_fo_01\",\n \"shortCode\": \"FO-01\"\n },\n {\n \"name\": \"Nordjylland\",\n \"translationKey\": \"denmark_region_name_81\",\n \"shortCode\": \"81\"\n },\n {\n \"name\": \"Østerø\",\n \"translationKey\": \"denmark_region_name_fo_06\",\n \"shortCode\": \"FO-06\"\n },\n {\n \"name\": \"Qaasuitsup\",\n \"translationKey\": \"denmark_region_name_gl_qa\",\n \"shortCode\": \"GL-QA\"\n },\n {\n \"name\": \"Qeqqata\",\n \"translationKey\": \"denmark_region_name_gl_qe\",\n \"shortCode\": \"GL-QE\"\n },\n {\n \"name\": \"Sandø\",\n \"translationKey\": \"denmark_region_name_fo_02\",\n \"shortCode\": \"FO-02\"\n },\n {\n \"name\": \"Sermersooq\",\n \"translationKey\": \"denmark_region_name_gl_sm\",\n \"shortCode\": \"GL-SM\"\n },\n {\n \"name\": \"Sjælland\",\n \"translationKey\": \"denmark_region_name_85\",\n \"shortCode\": \"85\"\n },\n {\n \"name\": \"Strømø\",\n \"translationKey\": \"denmark_region_name_f0_03\",\n \"shortCode\": \"FO-03\"\n },\n {\n \"name\": \"Suderø\",\n \"translationKey\": \"denmark_region_name_fo_04\",\n \"shortCode\": \"FO-04\"\n },\n {\n \"name\": \"Syddanmark\",\n \"translationKey\": \"denmark_region_name_83\",\n \"shortCode\": \"83\"\n },\n {\n \"name\": \"Vågø\",\n \"translationKey\": \"denmark_region_name_fo_05\",\n \"shortCode\": \"FO-05\"\n }\n ]\n },\n {\n \"countryName\": \"Ecuador\",\n \"countryShortCode\": \"EC\",\n \"regions\": [\n {\n \"name\": \"Azuay\",\n \"shortCode\": \"A\",\n \"translationKey\": \"Ecuador_region_A\"\n },\n {\n \"name\": \"Bolívar\",\n \"shortCode\": \"B\",\n \"translationKey\": \"Ecuador_region_B\"\n },\n {\n \"name\": \"Cañar\",\n \"shortCode\": \"F\",\n \"translationKey\": \"Ecuador_region_F\"\n },\n {\n \"name\": \"Carchi\",\n \"shortCode\": \"C\",\n \"translationKey\": \"Ecuador_region_C\"\n },\n {\n \"name\": \"Chimborazo\",\n \"shortCode\": \"H\",\n \"translationKey\": \"Ecuador_region_H\"\n },\n {\n \"name\": \"Cotopaxi\",\n \"shortCode\": \"X\",\n \"translationKey\": \"Ecuador_region_X\"\n },\n {\n \"name\": \"El Oro\",\n \"shortCode\": \"O\",\n \"translationKey\": \"Ecuador_region_O\"\n },\n {\n \"name\": \"Esmeraldas\",\n \"shortCode\": \"E\",\n \"translationKey\": \"Ecuador_region_E\"\n },\n {\n \"name\": \"Galápagos\",\n \"shortCode\": \"W\",\n \"translationKey\": \"Ecuador_region_W\"\n },\n {\n \"name\": \"Guayas\",\n \"shortCode\": \"G\",\n \"translationKey\": \"Ecuador_region_G\"\n },\n {\n \"name\": \"Imbabura\",\n \"shortCode\": \"I\",\n \"translationKey\": \"Ecuador_region_I\"\n },\n {\n \"name\": \"Loja\",\n \"shortCode\": \"L\",\n \"translationKey\": \"Ecuador_region_L\"\n },\n {\n \"name\": \"Los Ríos\",\n \"shortCode\": \"R\",\n \"translationKey\": \"Ecuador_region_R\"\n },\n {\n \"name\": \"Manabí\",\n \"shortCode\": \"M\",\n \"translationKey\": \"Ecuador_region_M\"\n },\n {\n \"name\": \"Morona-Santiago\",\n \"shortCode\": \"S\",\n \"translationKey\": \"Ecuador_region_S\"\n },\n {\n \"name\": \"Napo\",\n \"shortCode\": \"N\",\n \"translationKey\": \"Ecuador_region_N\"\n },\n {\n \"name\": \"Orellana\",\n \"shortCode\": \"D\",\n \"translationKey\": \"Ecuador_region_D\"\n },\n {\n \"name\": \"Pastaza\",\n \"shortCode\": \"Y\",\n \"translationKey\": \"Ecuador_region_Y\"\n },\n {\n \"name\": \"Pichincha\",\n \"shortCode\": \"P\",\n \"translationKey\": \"Ecuador_region_P\"\n },\n {\n \"name\": \"Santa Elena\",\n \"shortCode\": \"SE\",\n \"translationKey\": \"Ecuador_region_SE\"\n },\n {\n \"name\": \"Santo Domingo de los Tsáchilas\",\n \"shortCode\": \"SD\",\n \"translationKey\": \"Ecuador_region_SD\"\n },\n {\n \"name\": \"Sucumbíos\",\n \"shortCode\": \"U\",\n \"translationKey\": \"Ecuador_region_U\"\n },\n {\n \"name\": \"Tungurahua\",\n \"shortCode\": \"T\",\n \"translationKey\": \"Ecuador_region_T\"\n },\n {\n \"name\": \"Zamora-Chinchipe\",\n \"shortCode\": \"Z\",\n \"translationKey\": \"Ecuador_region_Z\"\n }\n ],\n \"translationKey\": \"country_name_Ecuador\"\n },\n {\n \"countryName\": \"Egypt\",\n \"countryShortCode\": \"EG\",\n \"regions\": [\n {\n \"name\": \"Alexandria\",\n \"shortCode\": \"ALX\",\n \"translationKey\": \"Egypt_region_ALX\"\n },\n {\n \"name\": \"Aswan\",\n \"shortCode\": \"ASN\",\n \"translationKey\": \"Egypt_region_ASN\"\n },\n {\n \"name\": \"Asyout\",\n \"shortCode\": \"AST\",\n \"translationKey\": \"Egypt_region_AST\"\n },\n {\n \"name\": \"Bani Sueif\",\n \"shortCode\": \"BNS\",\n \"translationKey\": \"Egypt_region_BNS\"\n },\n {\n \"name\": \"Beheira\",\n \"shortCode\": \"BH\",\n \"translationKey\": \"Egypt_region_BH\"\n },\n {\n \"name\": \"Cairo\",\n \"shortCode\": \"C\",\n \"translationKey\": \"Egypt_region_C\"\n },\n {\n \"name\": \"Daqahlia\",\n \"shortCode\": \"DK\",\n \"translationKey\": \"Egypt_region_DK\"\n },\n {\n \"name\": \"Dumiat\",\n \"shortCode\": \"DT\",\n \"translationKey\": \"Egypt_region_DT\"\n },\n {\n \"name\": \"El Bahr El Ahmar\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Egypt_region_BA\"\n },\n {\n \"name\": \"El Ismailia\",\n \"shortCode\": \"IS\",\n \"translationKey\": \"Egypt_region_IS\"\n },\n {\n \"name\": \"El Suez\",\n \"shortCode\": \"SUZ\",\n \"translationKey\": \"Egypt_region_SUZ\"\n },\n {\n \"name\": \"El Wadi El Gedeed\",\n \"shortCode\": \"WAD\",\n \"translationKey\": \"Egypt_region_WAD\"\n },\n {\n \"name\": \"Fayoum\",\n \"shortCode\": \"FYM\",\n \"translationKey\": \"Egypt_region_FYM\"\n },\n {\n \"name\": \"Gharbia\",\n \"shortCode\": \"GH\",\n \"translationKey\": \"Egypt_region_GH\"\n },\n {\n \"name\": \"Giza\",\n \"shortCode\": \"GZ\",\n \"translationKey\": \"Egypt_region_GZ\"\n },\n {\n \"name\": \"Helwan\",\n \"shortCode\": \"HU\",\n \"translationKey\": \"Egypt_region_HU\"\n },\n {\n \"name\": \"Kafr El Sheikh\",\n \"shortCode\": \"KFS\",\n \"translationKey\": \"Egypt_region_KFS\"\n },\n {\n \"name\": \"Luxor\",\n \"shortCode\": \"LX\",\n \"translationKey\": \"Egypt_region_LX\"\n },\n {\n \"name\": \"Matrouh\",\n \"shortCode\": \"MT\",\n \"translationKey\": \"Egypt_region_MT\"\n },\n {\n \"name\": \"Menia\",\n \"shortCode\": \"MN\",\n \"translationKey\": \"Egypt_region_MN\"\n },\n {\n \"name\": \"Menofia\",\n \"shortCode\": \"MNF\",\n \"translationKey\": \"Egypt_region_MNF\"\n },\n {\n \"name\": \"North Sinai\",\n \"shortCode\": \"SIN\",\n \"translationKey\": \"Egypt_region_SIN\"\n },\n {\n \"name\": \"Port Said\",\n \"shortCode\": \"PTS\",\n \"translationKey\": \"Egypt_region_PTS\"\n },\n {\n \"name\": \"Qalubia\",\n \"shortCode\": \"KB\",\n \"translationKey\": \"Egypt_region_KB\"\n },\n {\n \"name\": \"Qena\",\n \"shortCode\": \"KN\",\n \"translationKey\": \"Egypt_region_KN\"\n },\n {\n \"name\": \"Sharqia\",\n \"shortCode\": \"SHR\",\n \"translationKey\": \"Egypt_region_SHR\"\n },\n {\n \"name\": \"Sixth of October\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Egypt_region_SU\"\n },\n {\n \"name\": \"Sohag\",\n \"shortCode\": \"SHG\",\n \"translationKey\": \"Egypt_region_SHG\"\n },\n {\n \"name\": \"South Sinai\",\n \"shortCode\": \"JS\",\n \"translationKey\": \"Egypt_region_JS\"\n }\n ],\n \"translationKey\": \"country_name_Egypt\"\n },\n {\n \"countryName\": \"Estonia\",\n \"translationKey\": \"country_name_estonia\",\n \"countryShortCode\": \"EE\",\n \"regions\": [\n {\n \"name\": \"Harjumaa (Tallinn)\",\n \"translationKey\": \"estonia_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Hiiumaa (Kardla)\",\n \"translationKey\": \"estonia_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Ida-Virumaa (Johvi)\",\n \"translationKey\": \"estonia_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Järvamaa (Paide)\",\n \"translationKey\": \"estonia_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Jõgevamaa (Jogeva)\",\n \"translationKey\": \"estonia_region_name_49\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"Läänemaa\",\n \"translationKey\": \"estonia_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Lääne-Virumaa (Rakvere)\",\n \"translationKey\": \"estonia_region_name_59\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Pärnumaa (Parnu)\",\n \"translationKey\": \"estonia_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Põlvamaa (Polva)\",\n \"translationKey\": \"estonia_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Raplamaa (Rapla)\",\n \"translationKey\": \"estonia_region_name_70\",\n \"shortCode\": \"70\"\n },\n {\n \"name\": \"Saaremaa (Kuessaare)\",\n \"translationKey\": \"estonia_region_name_74\",\n \"shortCode\": \"74\"\n },\n {\n \"name\": \"Tartumaa (Tartu)\",\n \"translationKey\": \"estonia_region_name_78\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Valgamaa (Valga)\",\n \"translationKey\": \"estonia_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Viljandimaa (Viljandi)\",\n \"translationKey\": \"estonia_region_name_84\",\n \"shortCode\": \"84\"\n },\n {\n \"name\": \"Võrumaa (Voru)\",\n \"translationKey\": \"estonia_region_name_86\",\n \"shortCode\": \"86\"\n }\n ]\n },\n {\n \"countryName\": \"Ethiopia\",\n \"countryShortCode\": \"ET\",\n \"regions\": [\n {\n \"name\": \"Addis Ababa\",\n \"shortCode\": \"AA\",\n \"translationKey\": \"Ethiopia_region_AA\"\n },\n {\n \"name\": \"Afar\",\n \"shortCode\": \"AF\",\n \"translationKey\": \"Ethiopia_region_AF\"\n },\n {\n \"name\": \"Amhara\",\n \"shortCode\": \"AM\",\n \"translationKey\": \"Ethiopia_region_AM\"\n },\n {\n \"name\": \"Benshangul-Gumaz\",\n \"shortCode\": \"BE\",\n \"translationKey\": \"Ethiopia_region_BE\"\n },\n {\n \"name\": \"Dire Dawa\",\n \"shortCode\": \"DD\",\n \"translationKey\": \"Ethiopia_region_DD\"\n },\n {\n \"name\": \"Gambela\",\n \"shortCode\": \"GA\",\n \"translationKey\": \"Ethiopia_region_GA\"\n },\n {\n \"name\": \"Harari\",\n \"shortCode\": \"HA\",\n \"translationKey\": \"Ethiopia_region_HA\"\n },\n {\n \"name\": \"Oromia\",\n \"shortCode\": \"OR\",\n \"translationKey\": \"Ethiopia_region_OR\"\n },\n {\n \"name\": \"Somali\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Ethiopia_region_SO\"\n },\n {\n \"name\": \"Southern Nations Nationalities and People's Region\",\n \"shortCode\": \"SN\",\n \"translationKey\": \"Ethiopia_region_SN\"\n },\n {\n \"name\": \"Tigray\",\n \"shortCode\": \"TI\",\n \"translationKey\": \"Ethiopia_region_TI\"\n }\n ],\n \"translationKey\": \"country_name_Ethiopia\"\n },\n {\n \"countryName\": \"Finland\",\n \"translationKey\": \"country_name_finland\",\n \"countryShortCode\": \"FI\",\n \"regions\": [\n {\n \"name\": \"Ahvenanmaan maakunta\",\n \"translationKey\": \"finland_region_name_fi_01\",\n \"shortCode\": \"FI-01\"\n },\n {\n \"name\": \"Etelä-Karjala\",\n \"translationKey\": \"finland_region_name_fi_02\",\n \"shortCode\": \"FI-02\"\n },\n {\n \"name\": \"Etelä-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_03\",\n \"shortCode\": \"FI-03\"\n },\n {\n \"name\": \"Etelä-Savo\",\n \"translationKey\": \"finland_region_name_fi_04\",\n \"shortCode\": \"FI-04\"\n },\n {\n \"name\": \"Kainuu\",\n \"translationKey\": \"finland_region_name_fi_05\",\n \"shortCode\": \"FI-05\"\n },\n {\n \"name\": \"Kanta-Häme\",\n \"translationKey\": \"finland_region_name_fi_06\",\n \"shortCode\": \"FI-06\"\n },\n {\n \"name\": \"Keski-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_07\",\n \"shortCode\": \"FI-07\"\n },\n {\n \"name\": \"Keski-Suomi\",\n \"translationKey\": \"finland_region_name_fi_08\",\n \"shortCode\": \"FI-08\"\n },\n {\n \"name\": \"Kymenlaakso\",\n \"translationKey\": \"finland_region_name_fi_09\",\n \"shortCode\": \"FI-09\"\n },\n {\n \"name\": \"Lappi\",\n \"translationKey\": \"finland_region_name_fi_10\",\n \"shortCode\": \"FI-10\"\n },\n {\n \"name\": \"Pirkanmaa\",\n \"translationKey\": \"finland_region_name_fi_11\",\n \"shortCode\": \"FI-11\"\n },\n {\n \"name\": \"Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_12\",\n \"shortCode\": \"FI-12\"\n },\n {\n \"name\": \"Pohjois-Karjala\",\n \"translationKey\": \"finland_region_name_fi_13\",\n \"shortCode\": \"FI-13\"\n },\n {\n \"name\": \"Pohjois-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_14\",\n \"shortCode\": \"FI-14\"\n },\n {\n \"name\": \"Pohjois-Savo\",\n \"translationKey\": \"finland_region_name_fi_15\",\n \"shortCode\": \"FI-15\"\n },\n {\n \"name\": \"Päijät-Häme\",\n \"translationKey\": \"finland_region_name_fi_16\",\n \"shortCode\": \"FI-16\"\n },\n {\n \"name\": \"Satakunta\",\n \"translationKey\": \"finland_region_name_fi_17\",\n \"shortCode\": \"FI-17\"\n },\n {\n \"name\": \"Uusimaa\",\n \"translationKey\": \"finland_region_name_fi_18\",\n \"shortCode\": \"FI-18\"\n },\n {\n \"name\": \"Varsinais-Suomi\",\n \"translationKey\": \"finland_region_name_fi_19\",\n \"shortCode\": \"FI-19\"\n }\n ]\n },\n {\n \"countryName\": \"France\",\n \"translationKey\": \"country_name_france\",\n \"countryShortCode\": \"FR\",\n \"regions\": [\n {\n \"name\": \"Auvergne-Rhône-Alpes\",\n \"translationKey\": \"france_region_name_ara\",\n \"shortCode\": \"ARA\"\n },\n {\n \"name\": \"Bourgogne-Franche-Comté\",\n \"translationKey\": \"france_region_name_bfc\",\n \"shortCode\": \"BFC\"\n },\n {\n \"name\": \"Bretagne\",\n \"translationKey\": \"france_region_name_bre\",\n \"shortCode\": \"BRE\"\n },\n {\n \"name\": \"Centre-Val de Loire\",\n \"translationKey\": \"france_region_name_cvl\",\n \"shortCode\": \"CVL\"\n },\n {\n \"name\": \"Corse\",\n \"translationKey\": \"france_region_name_cor\",\n \"shortCode\": \"COR\"\n },\n {\n \"name\": \"Grand Est\",\n \"translationKey\": \"france_region_name_ges\",\n \"shortCode\": \"GES\"\n },\n {\n \"name\": \"Hauts-de-France\",\n \"translationKey\": \"france_region_name_hdf\",\n \"shortCode\": \"HDF\"\n },\n {\n \"name\": \"Île-de-France\",\n \"translationKey\": \"france_region_name_idf\",\n \"shortCode\": \"IDF\"\n },\n {\n \"name\": \"Normandie\",\n \"translationKey\": \"france_region_name_nor\",\n \"shortCode\": \"NOR\"\n },\n {\n \"name\": \"Nouvelle-Aquitaine\",\n \"translationKey\": \"france_region_name_naq\",\n \"shortCode\": \"NAQ\"\n },\n {\n \"name\": \"Occitanie\",\n \"translationKey\": \"france_region_name_occ\",\n \"shortCode\": \"OCC\"\n },\n {\n \"name\": \"Pays de la Loire\",\n \"translationKey\": \"france_region_name_pdl\",\n \"shortCode\": \"PDL\"\n },\n {\n \"name\": \"Provence-Alpes-Cote d'Azur\",\n \"translationKey\": \"france_region_name_pac\",\n \"shortCode\": \"PAC\"\n },\n {\n \"name\": \"Clipperton\",\n \"translationKey\": \"france_region_name_cp\",\n \"shortCode\": \"CP\"\n },\n {\n \"name\": \"Guadeloupe\",\n \"translationKey\": \"france_region_name_gp\",\n \"shortCode\": \"GP\"\n },\n {\n \"name\": \"Guyane\",\n \"translationKey\": \"france_region_name_gf\",\n \"shortCode\": \"GF\"\n },\n {\n \"name\": \"Martinique\",\n \"translationKey\": \"france_region_name_mq\",\n \"shortCode\": \"MQ\"\n },\n {\n \"name\": \"Mayotte\",\n \"translationKey\": \"france_region_name_yt\",\n \"shortCode\": \"YT\"\n },\n {\n \"name\": \"Novelle-Calédonie\",\n \"translationKey\": \"france_region_name_nc\",\n \"shortCode\": \"NC\"\n },\n {\n \"name\": \"Polynésie\",\n \"translationKey\": \"france_region_name_pf\",\n \"shortCode\": \"PF\"\n },\n {\n \"name\": \"Saint-Pierre-et-Miquelon\",\n \"translationKey\": \"france_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Saint Barthélemy\",\n \"translationKey\": \"france_region_name_bl\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Saint Martin\",\n \"translationKey\": \"france_region_name_mf\",\n \"shortCode\": \"MF\"\n },\n {\n \"name\": \"Réunion\",\n \"translationKey\": \"france_region_name_re\",\n \"shortCode\": \"RE\"\n },\n {\n \"name\": \"Terres Australes Françaises\",\n \"translationKey\": \"france_region_name_tf\",\n \"shortCode\": \"TF\"\n },\n {\n \"name\": \"Wallis-et-Futuna\",\n \"translationKey\": \"france_region_name_wf\",\n \"shortCode\": \"WF\"\n }\n ]\n },\n {\n \"countryName\": \"Gabon\",\n \"countryShortCode\": \"GA\",\n \"regions\": [\n {\n \"name\": \"Estuaire\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Gabon_region_1\"\n },\n {\n \"name\": \"Haut-Ogooué\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Gabon_region_2\"\n },\n {\n \"name\": \"Moyen-Ogooué\",\n \"shortCode\": \"3\",\n \"translationKey\": \"Gabon_region_3\"\n },\n {\n \"name\": \"Ngounié\",\n \"shortCode\": \"4\",\n \"translationKey\": \"Gabon_region_4\"\n },\n {\n \"name\": \"Nyanga\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Gabon_region_5\"\n },\n {\n \"name\": \"Ogooué-Ivindo\",\n \"shortCode\": \"6\",\n \"translationKey\": \"Gabon_region_6\"\n },\n {\n \"name\": \"Ogooué-Lolo\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Gabon_region_7\"\n },\n {\n \"name\": \"Ogooué-Maritime\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Gabon_region_8\"\n },\n {\n \"name\": \"Woleu-Ntem\",\n \"shortCode\": \"9\",\n \"translationKey\": \"Gabon_region_9\"\n }\n ],\n \"translationKey\": \"country_name_Gabon\"\n },\n {\n \"countryName\": \"Georgia\",\n \"countryShortCode\": \"GE\",\n \"regions\": [\n {\n \"name\": \"Abkhazia (Sokhumi)\",\n \"shortCode\": \"AB\",\n \"translationKey\": \"Georgia_region_AB\"\n },\n {\n \"name\": \"Ajaria (Bat'umi)\",\n \"shortCode\": \"AJ\",\n \"translationKey\": \"Georgia_region_AJ\"\n },\n {\n \"name\": \"Guria\",\n \"shortCode\": \"GU\",\n \"translationKey\": \"Georgia_region_GU\"\n },\n {\n \"name\": \"Imereti\",\n \"shortCode\": \"IM\",\n \"translationKey\": \"Georgia_region_IM\"\n },\n {\n \"name\": \"K'akheti\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Georgia_region_KA\"\n },\n {\n \"name\": \"Kvemo Kartli\",\n \"shortCode\": \"KK\",\n \"translationKey\": \"Georgia_region_KK\"\n },\n {\n \"name\": \"Mtshkheta-Mtianeti\",\n \"shortCode\": \"MM\",\n \"translationKey\": \"Georgia_region_MM\"\n },\n {\n \"name\": \"Rach'a-Lexhkumi-KvemoSvaneti\",\n \"shortCode\": \"RL\",\n \"translationKey\": \"Georgia_region_RL\"\n },\n {\n \"name\": \"Samegrelo-Zemo Svaneti\",\n \"shortCode\": \"SZ\",\n \"translationKey\": \"Georgia_region_SZ\"\n },\n {\n \"name\": \"Samtskhe-Javakheti\",\n \"shortCode\": \"SJ\",\n \"translationKey\": \"Georgia_region_SJ\"\n },\n {\n \"name\": \"Shida Kartli\",\n \"shortCode\": \"SK\",\n \"translationKey\": \"Georgia_region_SK\"\n },\n {\n \"name\": \"Tbilisi\",\n \"shortCode\": \"TB\",\n \"translationKey\": \"Georgia_region_TB\"\n }\n ],\n \"translationKey\": \"country_name_Georgia\"\n },\n {\n \"countryName\": \"Germany\",\n \"translationKey\": \"country_name_germany\",\n \"countryShortCode\": \"DE\",\n \"regions\": [\n {\n \"name\": \"Baden-Württemberg\",\n \"translationKey\": \"germany_region_name_bw\",\n \"shortCode\": \"BW\"\n },\n {\n \"name\": \"Bayern\",\n \"translationKey\": \"germany_region_name_by\",\n \"shortCode\": \"BY\"\n },\n {\n \"name\": \"Berlin\",\n \"translationKey\": \"germany_region_name_be\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Brandenburg\",\n \"translationKey\": \"germany_region_name_bb\",\n \"shortCode\": \"BB\"\n },\n {\n \"name\": \"Bremen\",\n \"translationKey\": \"germany_region_name_hb\",\n \"shortCode\": \"HB\"\n },\n {\n \"name\": \"Hamburg\",\n \"translationKey\": \"germany_region_name_hh\",\n \"shortCode\": \"HH\"\n },\n {\n \"name\": \"Hessen\",\n \"translationKey\": \"germany_region_name_he\",\n \"shortCode\": \"HE\"\n },\n {\n \"name\": \"Mecklenburg-Vorpommern\",\n \"translationKey\": \"germany_region_name_mv\",\n \"shortCode\": \"MV\"\n },\n {\n \"name\": \"Niedersachsen\",\n \"translationKey\": \"germany_region_name_ni\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Nordrhein-Westfalen\",\n \"translationKey\": \"germany_region_name_nw\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Rheinland-Pfalz\",\n \"translationKey\": \"germany_region_name_rp\",\n \"shortCode\": \"RP\"\n },\n {\n \"name\": \"Saarland\",\n \"translationKey\": \"germany_region_name_sl\",\n \"shortCode\": \"SL\"\n },\n {\n \"name\": \"Sachsen\",\n \"translationKey\": \"germany_region_name_sn\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Sachsen-Anhalt\",\n \"translationKey\": \"germany_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Schleswig-Holstein\",\n \"translationKey\": \"germany_region_name_sh\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Thüringen\",\n \"translationKey\": \"germany_region_name_th\",\n \"shortCode\": \"TH\"\n }\n ]\n },\n {\n \"countryName\": \"Ghana\",\n \"countryShortCode\": \"GH\",\n \"regions\": [\n {\n \"name\": \"Ahafo\",\n \"translationKey\": \"Ghana_region_Ahafo\"\n },\n {\n \"name\": \"Ashanti\",\n \"shortCode\": \"AH\",\n \"translationKey\": \"Ghana_region_AH\"\n },\n {\n \"name\": \"Bono\",\n \"translationKey\": \"Ghana_region_Bono\"\n },\n {\n \"name\": \"Bono East\",\n \"translationKey\": \"Ghana_region_Bono East\"\n },\n {\n \"name\": \"Central\",\n \"shortCode\": \"CP\",\n \"translationKey\": \"Ghana_region_CP\"\n },\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"EP\",\n \"translationKey\": \"Ghana_region_EP\"\n },\n {\n \"name\": \"Greater Accra\",\n \"shortCode\": \"AA\",\n \"translationKey\": \"Ghana_region_AA\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"NP\",\n \"translationKey\": \"Ghana_region_NP\"\n },\n {\n \"name\": \"North East\",\n \"translationKey\": \"Ghana_region_North East\"\n },\n {\n \"name\": \"Oti\",\n \"translationKey\": \"Ghana_region_Oti\"\n },\n {\n \"name\": \"Savannah\",\n \"translationKey\": \"Ghana_region_Savannah\"\n },\n {\n \"name\": \"Upper East\",\n \"shortCode\": \"UE\",\n \"translationKey\": \"Ghana_region_UE\"\n },\n {\n \"name\": \"Upper West\",\n \"shortCode\": \"UW\",\n \"translationKey\": \"Ghana_region_UW\"\n },\n {\n \"name\": \"Volta\",\n \"shortCode\": \"TV\",\n \"translationKey\": \"Ghana_region_TV\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"WP\",\n \"translationKey\": \"Ghana_region_WP\"\n },\n {\n \"name\": \"Western North\",\n \"translationKey\": \"Ghana_region_Western North\"\n }\n ],\n \"translationKey\": \"country_name_Ghana\"\n },\n {\n \"countryName\": \"Greece\",\n \"translationKey\": \"country_name_greece\",\n \"countryShortCode\": \"GR\",\n \"regions\": [\n {\n \"name\": \"Anatolikí Makedonía kai Thráki\",\n \"translationKey\": \"greece_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Attikḯ\",\n \"translationKey\": \"greece_region_name_i\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Dytikí Elláda\",\n \"translationKey\": \"greece_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Dytikí Makedonía\",\n \"translationKey\": \"greece_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Ionía Nísia\",\n \"translationKey\": \"greece_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Kentrikí Makedonía\",\n \"translationKey\": \"greece_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Krítí\",\n \"translationKey\": \"greece_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Notío Aigaío\",\n \"translationKey\": \"greece_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Peloponnísos\",\n \"translationKey\": \"greece_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"Stereá Elláda\",\n \"translationKey\": \"greece_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Thessalía\",\n \"translationKey\": \"greece_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Voreío Aigaío\",\n \"translationKey\": \"greece_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Ípeiros\",\n \"translationKey\": \"greece_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Ágion Óros\",\n \"translationKey\": \"greece_region_name_69\",\n \"shortCode\": \"69\"\n }\n ]\n },\n {\n \"countryName\": \"Guadeloupe\",\n \"countryShortCode\": \"GP\",\n \"regions\": [\n {\n \"name\": \"Guadeloupe\",\n \"translationKey\": \"Guadeloupe_region_Guadeloupe\"\n }\n ],\n \"translationKey\": \"country_name_Guadeloupe\"\n },\n {\n \"countryName\": \"Guatemala\",\n \"countryShortCode\": \"GT\",\n \"regions\": [\n {\n \"name\": \"Alta Verapaz\",\n \"shortCode\": \"AV\",\n \"translationKey\": \"Guatemala_region_AV\"\n },\n {\n \"name\": \"Baja Verapaz\",\n \"shortCode\": \"BV\",\n \"translationKey\": \"Guatemala_region_BV\"\n },\n {\n \"name\": \"Chimaltenango\",\n \"shortCode\": \"CM\",\n \"translationKey\": \"Guatemala_region_CM\"\n },\n {\n \"name\": \"Chiquimula\",\n \"shortCode\": \"CQ\",\n \"translationKey\": \"Guatemala_region_CQ\"\n },\n {\n \"name\": \"El Progreso\",\n \"shortCode\": \"PR\",\n \"translationKey\": \"Guatemala_region_PR\"\n },\n {\n \"name\": \"Escuintla\",\n \"shortCode\": \"ES\",\n \"translationKey\": \"Guatemala_region_ES\"\n },\n {\n \"name\": \"Guatemala\",\n \"shortCode\": \"GU\",\n \"translationKey\": \"Guatemala_region_GU\"\n },\n {\n \"name\": \"Huehuetenango\",\n \"shortCode\": \"HU\",\n \"translationKey\": \"Guatemala_region_HU\"\n },\n {\n \"name\": \"Izabal\",\n \"shortCode\": \"IZ\",\n \"translationKey\": \"Guatemala_region_IZ\"\n },\n {\n \"name\": \"Jalapa\",\n \"shortCode\": \"JA\",\n \"translationKey\": \"Guatemala_region_JA\"\n },\n {\n \"name\": \"Jutiapa\",\n \"shortCode\": \"JU\",\n \"translationKey\": \"Guatemala_region_JU\"\n },\n {\n \"name\": \"Petén\",\n \"shortCode\": \"PE\",\n \"translationKey\": \"Guatemala_region_PE\"\n },\n {\n \"name\": \"Quetzaltenango\",\n \"shortCode\": \"QZ\",\n \"translationKey\": \"Guatemala_region_QZ\"\n },\n {\n \"name\": \"Quiché\",\n \"shortCode\": \"QC\",\n \"translationKey\": \"Guatemala_region_QC\"\n },\n {\n \"name\": \"Retalhuleu\",\n \"shortCode\": \"Re\",\n \"translationKey\": \"Guatemala_region_Re\"\n },\n {\n \"name\": \"Sacatepéquez\",\n \"shortCode\": \"SA\",\n \"translationKey\": \"Guatemala_region_SA\"\n },\n {\n \"name\": \"San Marcos\",\n \"shortCode\": \"SM\",\n \"translationKey\": \"Guatemala_region_SM\"\n },\n {\n \"name\": \"Santa Rosa\",\n \"shortCode\": \"SR\",\n \"translationKey\": \"Guatemala_region_SR\"\n },\n {\n \"name\": \"Sololá\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Guatemala_region_SO\"\n },\n {\n \"name\": \"Suchitepéquez\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Guatemala_region_SU\"\n },\n {\n \"name\": \"Totonicapán\",\n \"shortCode\": \"TO\",\n \"translationKey\": \"Guatemala_region_TO\"\n },\n {\n \"name\": \"Zacapa\",\n \"shortCode\": \"ZA\",\n \"translationKey\": \"Guatemala_region_ZA\"\n }\n ],\n \"translationKey\": \"country_name_Guatemala\"\n },\n {\n \"countryName\": \"Guinea\",\n \"countryShortCode\": \"GN\",\n \"regions\": [\n {\n \"name\": \"Boké\",\n \"shortCode\": \"B\",\n \"translationKey\": \"Guinea_region_B\"\n },\n {\n \"name\": \"Conakry\",\n \"shortCode\": \"C\",\n \"translationKey\": \"Guinea_region_C\"\n },\n {\n \"name\": \"Faranah\",\n \"shortCode\": \"F\",\n \"translationKey\": \"Guinea_region_F\"\n },\n {\n \"name\": \"Kankan\",\n \"shortCode\": \"K\",\n \"translationKey\": \"Guinea_region_K\"\n },\n {\n \"name\": \"Kindia\",\n \"shortCode\": \"D\",\n \"translationKey\": \"Guinea_region_D\"\n },\n {\n \"name\": \"Labé\",\n \"shortCode\": \"L\",\n \"translationKey\": \"Guinea_region_L\"\n },\n {\n \"name\": \"Mamou\",\n \"shortCode\": \"M\",\n \"translationKey\": \"Guinea_region_M\"\n },\n {\n \"name\": \"Nzérékoré\",\n \"shortCode\": \"N\",\n \"translationKey\": \"Guinea_region_N\"\n }\n ],\n \"translationKey\": \"country_name_Guinea\"\n },\n {\n \"countryName\": \"Hungary\",\n \"translationKey\": \"country_name_hungary\",\n \"countryShortCode\": \"HU\",\n \"regions\": [\n {\n \"name\": \"Bács-Kiskun\",\n \"translationKey\": \"hungary_region_name_bk\",\n \"shortCode\": \"BK\"\n },\n {\n \"name\": \"Baranya\",\n \"translationKey\": \"hungary_region_name_ba\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Békés\",\n \"translationKey\": \"hungary_region_name_be\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Békéscsaba\",\n \"translationKey\": \"hungary_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Borsod-Abauj-Zemplen\",\n \"translationKey\": \"hungary_region_name_bz\",\n \"shortCode\": \"BZ\"\n },\n {\n \"name\": \"Budapest\",\n \"translationKey\": \"hungary_region_name_bu\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Csongrád\",\n \"translationKey\": \"hungary_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Debrecen\",\n \"translationKey\": \"hungary_region_name_de\",\n \"shortCode\": \"DE\"\n },\n {\n \"name\": \"Dunaújváros\",\n \"translationKey\": \"hungary_region_name_du\",\n \"shortCode\": \"DU\"\n },\n {\n \"name\": \"Eger\",\n \"translationKey\": \"hungary_region_name_eg\",\n \"shortCode\": \"EG\"\n },\n {\n \"name\": \"Érd\",\n \"translationKey\": \"hungary_region_name_er\",\n \"shortCode\": \"ER\"\n },\n {\n \"name\": \"Fejér\",\n \"translationKey\": \"hungary_region_name_fe\",\n \"shortCode\": \"FE\"\n },\n {\n \"name\": \"Győr\",\n \"translationKey\": \"hungary_region_name_gy\",\n \"shortCode\": \"GY\"\n },\n {\n \"name\": \"Győr-Moson-Sopron\",\n \"translationKey\": \"hungary_region_name_gs\",\n \"shortCode\": \"GS\"\n },\n {\n \"name\": \"Hajdú-Bihar\",\n \"translationKey\": \"hungary_region_name_hb\",\n \"shortCode\": \"HB\"\n },\n {\n \"name\": \"Heves\",\n \"translationKey\": \"hungary_region_name_he\",\n \"shortCode\": \"HE\"\n },\n {\n \"name\": \"Hódmezővásárhely\",\n \"translationKey\": \"hungary_region_name_hv\",\n \"shortCode\": \"HV\"\n },\n {\n \"name\": \"Jász-Nagykun-Szolnok\",\n \"translationKey\": \"hungary_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Kaposvár\",\n \"translationKey\": \"hungary_region_name_kv\",\n \"shortCode\": \"KV\"\n },\n {\n \"name\": \"Kecskemét\",\n \"translationKey\": \"hungary_region_name_km\",\n \"shortCode\": \"KM\"\n },\n {\n \"name\": \"Komárom-Esztergom\",\n \"translationKey\": \"hungary_region_name_ke\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Miskolc\",\n \"translationKey\": \"hungary_region_name_mi\",\n \"shortCode\": \"MI\"\n },\n {\n \"name\": \"Nagykanizsa\",\n \"translationKey\": \"hungary_region_name_nk\",\n \"shortCode\": \"NK\"\n },\n {\n \"name\": \"Nógrád\",\n \"translationKey\": \"hungary_region_name_no\",\n \"shortCode\": \"NO\"\n },\n {\n \"name\": \"Nyíregyháza\",\n \"translationKey\": \"hungary_region_name_ny\",\n \"shortCode\": \"NY\"\n },\n {\n \"name\": \"Pécs\",\n \"translationKey\": \"hungary_region_name_ps\",\n \"shortCode\": \"PS\"\n },\n {\n \"name\": \"Pest\",\n \"translationKey\": \"hungary_region_name_pe\",\n \"shortCode\": \"PE\"\n },\n {\n \"name\": \"Salgótarján\",\n \"translationKey\": \"hungary_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Somogy\",\n \"translationKey\": \"hungary_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Sopron\",\n \"translationKey\": \"hungary_region_name_sn\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Szabolcs-á-Bereg\",\n \"translationKey\": \"hungary_region_name_sz\",\n \"shortCode\": \"SZ\"\n },\n {\n \"name\": \"Szeged\",\n \"translationKey\": \"hungary_region_name_sd\",\n \"shortCode\": \"SD\"\n },\n {\n \"name\": \"Székesfehérvár\",\n \"translationKey\": \"hungary_region_name_sf\",\n \"shortCode\": \"SF\"\n },\n {\n \"name\": \"Szekszárd\",\n \"translationKey\": \"hungary_region_name_ss\",\n \"shortCode\": \"SS\"\n },\n {\n \"name\": \"Szolnok\",\n \"translationKey\": \"hungary_region_name_sk\",\n \"shortCode\": \"SK\"\n },\n {\n \"name\": \"Szombathely\",\n \"translationKey\": \"hungary_region_name_sh\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Tatabánya\",\n \"translationKey\": \"hungary_region_name_tb\",\n \"shortCode\": \"TB\"\n },\n {\n \"name\": \"Tolna\",\n \"translationKey\": \"hungary_region_name_to\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Vas\",\n \"translationKey\": \"hungary_region_name_va\",\n \"shortCode\": \"VA\"\n },\n {\n \"name\": \"Veszprém\",\n \"translationKey\": \"hungary_region_name_ve\",\n \"shortCode\": \"VE\"\n },\n {\n \"name\": \"Veszprém (City)\",\n \"translationKey\": \"hungary_region_name_vm\",\n \"shortCode\": \"VM\"\n },\n {\n \"name\": \"Zala\",\n \"translationKey\": \"hungary_region_name_za\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Zalaegerszeg\",\n \"translationKey\": \"hungary_region_name_ze\",\n \"shortCode\": \"ZE\"\n }\n ]\n },\n {\n \"countryName\": \"Iceland\",\n \"countryShortCode\": \"IS\",\n \"regions\": [\n {\n \"name\": \"Austurland\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Iceland_region_7\"\n },\n {\n \"name\": \"Höfuðborgarsvæði utan Reykjavíkur\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Iceland_region_1\"\n },\n {\n \"name\": \"Norðurland eystra\",\n \"shortCode\": \"6\",\n \"translationKey\": \"Iceland_region_6\"\n },\n {\n \"name\": \"Norðurland vestra\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Iceland_region_5\"\n },\n {\n \"name\": \"Suðurland\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Iceland_region_8\"\n },\n {\n \"name\": \"Suðurnes\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Iceland_region_2\"\n },\n {\n \"name\": \"Vestfirðir\",\n \"shortCode\": \"4\",\n \"translationKey\": \"Iceland_region_4\"\n },\n {\n \"name\": \"Vesturland\",\n \"shortCode\": \"3\",\n \"translationKey\": \"Iceland_region_3\"\n }\n ],\n \"translationKey\": \"country_name_Iceland\"\n },\n {\n \"countryName\": \"Iran, Islamic Republic of\",\n \"countryShortCode\": \"IR\",\n \"regions\": [\n {\n \"name\": \"Alborz\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Iran, Islamic Republic of_region_32\"\n },\n {\n \"name\": \"Ardabīl\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Iran, Islamic Republic of_region_03\"\n },\n {\n \"name\": \"Āz̄arbāyjān-e Gharbī\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Iran, Islamic Republic of_region_02\"\n },\n {\n \"name\": \"Āz̄arbāyjān-e Sharqī\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Iran, Islamic Republic of_region_01\"\n },\n {\n \"name\": \"Būshehr\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Iran, Islamic Republic of_region_06\"\n },\n {\n \"name\": \"Chahār Maḩāl va Bakhtīārī\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Iran, Islamic Republic of_region_08\"\n },\n {\n \"name\": \"Eşfahān\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Iran, Islamic Republic of_region_04\"\n },\n {\n \"name\": \"Fārs\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Iran, Islamic Republic of_region_14\"\n },\n {\n \"name\": \"Gīlān\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Iran, Islamic Republic of_region_19\"\n },\n {\n \"name\": \"Golestān\",\n \"shortCode\": \"27\",\n \"translationKey\": \"Iran, Islamic Republic of_region_27\"\n },\n {\n \"name\": \"Hamadān\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Iran, Islamic Republic of_region_24\"\n },\n {\n \"name\": \"Hormozgān\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Iran, Islamic Republic of_region_23\"\n },\n {\n \"name\": \"Īlām\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Iran, Islamic Republic of_region_05\"\n },\n {\n \"name\": \"Kermān\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Iran, Islamic Republic of_region_15\"\n },\n {\n \"name\": \"Kermānshāh\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Iran, Islamic Republic of_region_17\"\n },\n {\n \"name\": \"Khorāsān-e Jonūbī\",\n \"shortCode\": \"29\",\n \"translationKey\": \"Iran, Islamic Republic of_region_29\"\n },\n {\n \"name\": \"Khorāsān-e Raẕavī\",\n \"shortCode\": \"30\",\n \"translationKey\": \"Iran, Islamic Republic of_region_30\"\n },\n {\n \"name\": \"Khorāsān-e Shomālī\",\n \"shortCode\": \"61\",\n \"translationKey\": \"Iran, Islamic Republic of_region_61\"\n },\n {\n \"name\": \"Khūzestān\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Iran, Islamic Republic of_region_10\"\n },\n {\n \"name\": \"Kohgīlūyeh va Bowyer Aḩmad\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Iran, Islamic Republic of_region_18\"\n },\n {\n \"name\": \"Kordestān\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Iran, Islamic Republic of_region_16\"\n },\n {\n \"name\": \"Lorestān\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Iran, Islamic Republic of_region_20\"\n },\n {\n \"name\": \"Markazi\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Iran, Islamic Republic of_region_22\"\n },\n {\n \"name\": \"Māzandarān\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Iran, Islamic Republic of_region_21\"\n },\n {\n \"name\": \"Qazvīn\",\n \"shortCode\": \"28\",\n \"translationKey\": \"Iran, Islamic Republic of_region_28\"\n },\n {\n \"name\": \"Qom\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Iran, Islamic Republic of_region_26\"\n },\n {\n \"name\": \"Semnān\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Iran, Islamic Republic of_region_12\"\n },\n {\n \"name\": \"Sīstān va Balūchestān\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Iran, Islamic Republic of_region_13\"\n },\n {\n \"name\": \"Tehrān\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Iran, Islamic Republic of_region_07\"\n },\n {\n \"name\": \"Yazd\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Iran, Islamic Republic of_region_25\"\n },\n {\n \"name\": \"Zanjān\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Iran, Islamic Republic of_region_11\"\n }\n ],\n \"translationKey\": \"country_name_Iran, Islamic Republic of\"\n },\n {\n \"countryName\": \"Iraq\",\n \"countryShortCode\": \"IQ\",\n \"regions\": [\n {\n \"name\": \"Al Anbār\",\n \"shortCode\": \"AN\",\n \"translationKey\": \"Iraq_region_AN\"\n },\n {\n \"name\": \"Al Başrah\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Iraq_region_BA\"\n },\n {\n \"name\": \"Al Muthanná\",\n \"shortCode\": \"MU\",\n \"translationKey\": \"Iraq_region_MU\"\n },\n {\n \"name\": \"Al Qādisīyah\",\n \"shortCode\": \"QA\",\n \"translationKey\": \"Iraq_region_QA\"\n },\n {\n \"name\": \"An Najaf\",\n \"shortCode\": \"NA\",\n \"translationKey\": \"Iraq_region_NA\"\n },\n {\n \"name\": \"Arbīl\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"Iraq_region_AR\"\n },\n {\n \"name\": \"As Sulaymānīyah\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Iraq_region_SU\"\n },\n {\n \"name\": \"Bābil\",\n \"shortCode\": \"BB\",\n \"translationKey\": \"Iraq_region_BB\"\n },\n {\n \"name\": \"Baghdād\",\n \"shortCode\": \"BG\",\n \"translationKey\": \"Iraq_region_BG\"\n },\n {\n \"name\": \"Dohuk\",\n \"shortCode\": \"DA\",\n \"translationKey\": \"Iraq_region_DA\"\n },\n {\n \"name\": \"Dhī Qār\",\n \"shortCode\": \"DQ\",\n \"translationKey\": \"Iraq_region_DQ\"\n },\n {\n \"name\": \"Diyālá\",\n \"shortCode\": \"DI\",\n \"translationKey\": \"Iraq_region_DI\"\n },\n {\n \"name\": \"Karbalā'\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Iraq_region_KA\"\n },\n {\n \"name\": \"Kirkuk\",\n \"shortCode\": \"KI\",\n \"translationKey\": \"Iraq_region_KI\"\n },\n {\n \"name\": \"Maysān\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Iraq_region_MA\"\n },\n {\n \"name\": \"Nīnawá\",\n \"shortCode\": \"NI\",\n \"translationKey\": \"Iraq_region_NI\"\n },\n {\n \"name\": \"Şalāḩ ad Dīn\",\n \"shortCode\": \"SD\",\n \"translationKey\": \"Iraq_region_SD\"\n },\n {\n \"name\": \"Wāsiţ\",\n \"shortCode\": \"WA\",\n \"translationKey\": \"Iraq_region_WA\"\n }\n ],\n \"translationKey\": \"country_name_Iraq\"\n },\n {\n \"countryName\": \"Ireland\",\n \"translationKey\": \"country_name_ireland\",\n \"countryShortCode\": \"IE\",\n \"regions\": [\n {\n \"name\": \"Carlow\",\n \"translationKey\": \"ireland_region_name_cw\",\n \"shortCode\": \"CW\"\n },\n {\n \"name\": \"Cavan\",\n \"translationKey\": \"ireland_region_name_cn\",\n \"shortCode\": \"CN\"\n },\n {\n \"name\": \"Clare\",\n \"translationKey\": \"ireland_region_name_ce\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Cork\",\n \"translationKey\": \"ireland_region_name_co\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"Donegal\",\n \"translationKey\": \"ireland_region_name_dl\",\n \"shortCode\": \"DL\"\n },\n {\n \"name\": \"Dublin\",\n \"translationKey\": \"ireland_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Galway\",\n \"translationKey\": \"ireland_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Kerry\",\n \"translationKey\": \"ireland_region_name_ky\",\n \"shortCode\": \"KY\"\n },\n {\n \"name\": \"Kildare\",\n \"translationKey\": \"ireland_region_name_ke\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kilkenny\",\n \"translationKey\": \"ireland_region_name_kk\",\n \"shortCode\": \"KK\"\n },\n {\n \"name\": \"Laois\",\n \"translationKey\": \"ireland_region_name_ls\",\n \"shortCode\": \"LS\"\n },\n {\n \"name\": \"Leitrim\",\n \"translationKey\": \"ireland_region_name_lm\",\n \"shortCode\": \"LM\"\n },\n {\n \"name\": \"Limerick\",\n \"translationKey\": \"ireland_region_name_lk\",\n \"shortCode\": \"LK\"\n },\n {\n \"name\": \"Longford\",\n \"translationKey\": \"ireland_region_name_ld\",\n \"shortCode\": \"LD\"\n },\n {\n \"name\": \"Louth\",\n \"translationKey\": \"ireland_region_name_lh\",\n \"shortCode\": \"LH\"\n },\n {\n \"name\": \"Mayo\",\n \"translationKey\": \"ireland_region_name_mo\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Meath\",\n \"translationKey\": \"ireland_region_name_mh\",\n \"shortCode\": \"MH\"\n },\n {\n \"name\": \"Monaghan\",\n \"translationKey\": \"ireland_region_name_mn\",\n \"shortCode\": \"MN\"\n },\n {\n \"name\": \"Offaly\",\n \"translationKey\": \"ireland_region_name_oy\",\n \"shortCode\": \"OY\"\n },\n {\n \"name\": \"Roscommon\",\n \"translationKey\": \"ireland_region_name_rn\",\n \"shortCode\": \"RN\"\n },\n {\n \"name\": \"Sligo\",\n \"translationKey\": \"ireland_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Tipperary\",\n \"translationKey\": \"ireland_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Waterford\",\n \"translationKey\": \"ireland_region_name_wd\",\n \"shortCode\": \"WD\"\n },\n {\n \"name\": \"Westmeath\",\n \"translationKey\": \"ireland_region_name_wh\",\n \"shortCode\": \"WH\"\n },\n {\n \"name\": \"Wexford\",\n \"translationKey\": \"ireland_region_name_wx\",\n \"shortCode\": \"WX\"\n },\n {\n \"name\": \"Wicklow\",\n \"translationKey\": \"ireland_region_name_ww\",\n \"shortCode\": \"WW\"\n }\n ]\n },\n {\n \"countryName\": \"Israel\",\n \"translationKey\": \"country_name_israel\",\n \"countryShortCode\": \"IL\",\n \"regions\": [\n {\n \"name\": \"HaDarom\",\n \"translationKey\": \"israel_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"HaMerkaz\",\n \"translationKey\": \"israel_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"HaTsafon\",\n \"translationKey\": \"israel_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"H̱efa\",\n \"translationKey\": \"israel_region_name_ha\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Tel-Aviv\",\n \"translationKey\": \"israel_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Yerushalayim\",\n \"translationKey\": \"israel_region_name_jm\",\n \"shortCode\": \"JM\"\n }\n ]\n },\n {\n \"countryName\": \"Italy\",\n \"translationKey\": \"country_name_italy\",\n \"countryShortCode\": \"IT\",\n \"regions\": [\n {\n \"name\": \"Abruzzo\",\n \"translationKey\": \"italy_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Basilicata\",\n \"translationKey\": \"italy_region_name_77\",\n \"shortCode\": \"77\"\n },\n {\n \"name\": \"Calabria\",\n \"translationKey\": \"italy_region_name_78\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Campania\",\n \"translationKey\": \"italy_region_name_72\",\n \"shortCode\": \"72\"\n },\n {\n \"name\": \"Emilia-Romagna\",\n \"translationKey\": \"italy_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Friuli-Venezia Giulia\",\n \"translationKey\": \"italy_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Lazio\",\n \"translationKey\": \"italy_region_name_62\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Liguria\",\n \"translationKey\": \"italy_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Lombardia\",\n \"translationKey\": \"italy_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Marche\",\n \"translationKey\": \"italy_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Molise\",\n \"translationKey\": \"italy_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Piemonte\",\n \"translationKey\": \"italy_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Puglia\",\n \"translationKey\": \"italy_region_name_75\",\n \"shortCode\": \"75\"\n },\n {\n \"name\": \"Sardegna\",\n \"translationKey\": \"italy_region_name_88\",\n \"shortCode\": \"88\"\n },\n {\n \"name\": \"Sicilia\",\n \"translationKey\": \"italy_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Toscana\",\n \"translationKey\": \"italy_region_name_52\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Trentino-Alto Adige\",\n \"translationKey\": \"italy_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Umbria\",\n \"translationKey\": \"italy_region_name_55\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Valle d'Aosta\",\n \"translationKey\": \"italy_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Veneto\",\n \"translationKey\": \"italy_region_name_34\",\n \"shortCode\": \"34\"\n }\n ]\n },\n {\n \"countryName\": \"Jordan\",\n \"countryShortCode\": \"JO\",\n \"regions\": [\n {\n \"name\": \"‘Ajlūn\",\n \"shortCode\": \"AJ\",\n \"translationKey\": \"Jordan_region_AJ\"\n },\n {\n \"name\": \"Al 'Aqabah\",\n \"shortCode\": \"AQ\",\n \"translationKey\": \"Jordan_region_AQ\"\n },\n {\n \"name\": \"Al Balqā’\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Jordan_region_BA\"\n },\n {\n \"name\": \"Al Karak\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Jordan_region_KA\"\n },\n {\n \"name\": \"Al Mafraq\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Jordan_region_MA\"\n },\n {\n \"name\": \"Al ‘A̅şimah\",\n \"shortCode\": \"AM\",\n \"translationKey\": \"Jordan_region_AM\"\n },\n {\n \"name\": \"Aţ Ţafīlah\",\n \"shortCode\": \"AT\",\n \"translationKey\": \"Jordan_region_AT\"\n },\n {\n \"name\": \"Az Zarqā’\",\n \"shortCode\": \"AZ\",\n \"translationKey\": \"Jordan_region_AZ\"\n },\n {\n \"name\": \"Irbid\",\n \"shortCode\": \"IR\",\n \"translationKey\": \"Jordan_region_IR\"\n },\n {\n \"name\": \"Jarash\",\n \"shortCode\": \"JA\",\n \"translationKey\": \"Jordan_region_JA\"\n },\n {\n \"name\": \"Ma‘ān\",\n \"shortCode\": \"MN\",\n \"translationKey\": \"Jordan_region_MN\"\n },\n {\n \"name\": \"Mādabā\",\n \"shortCode\": \"MD\",\n \"translationKey\": \"Jordan_region_MD\"\n }\n ],\n \"translationKey\": \"country_name_Jordan\"\n },\n {\n \"countryName\": \"Kazakhstan\",\n \"countryShortCode\": \"KZ\",\n \"regions\": [\n {\n \"name\": \"Almaty\",\n \"shortCode\": \"ALA\",\n \"translationKey\": \"Kazakhstan_region_ALA\"\n },\n {\n \"name\": \"Aqmola\",\n \"shortCode\": \"AKM\",\n \"translationKey\": \"Kazakhstan_region_AKM\"\n },\n {\n \"name\": \"Aqtobe\",\n \"shortCode\": \"AKT\",\n \"translationKey\": \"Kazakhstan_region_AKT\"\n },\n {\n \"name\": \"Astana\",\n \"shortCode\": \"AST\",\n \"translationKey\": \"Kazakhstan_region_AST\"\n },\n {\n \"name\": \"Atyrau\",\n \"shortCode\": \"ATY\",\n \"translationKey\": \"Kazakhstan_region_ATY\"\n },\n {\n \"name\": \"Batys Qazaqstan\",\n \"shortCode\": \"ZAP\",\n \"translationKey\": \"Kazakhstan_region_ZAP\"\n },\n {\n \"name\": \"Bayqongyr\",\n \"translationKey\": \"Kazakhstan_region_Bayqongyr\"\n },\n {\n \"name\": \"Mangghystau\",\n \"shortCode\": \"MAN\",\n \"translationKey\": \"Kazakhstan_region_MAN\"\n },\n {\n \"name\": \"Ongtustik Qazaqstan\",\n \"shortCode\": \"YUZ\",\n \"translationKey\": \"Kazakhstan_region_YUZ\"\n },\n {\n \"name\": \"Pavlodar\",\n \"shortCode\": \"PAV\",\n \"translationKey\": \"Kazakhstan_region_PAV\"\n },\n {\n \"name\": \"Qaraghandy\",\n \"shortCode\": \"KAR\",\n \"translationKey\": \"Kazakhstan_region_KAR\"\n },\n {\n \"name\": \"Qostanay\",\n \"shortCode\": \"KUS\",\n \"translationKey\": \"Kazakhstan_region_KUS\"\n },\n {\n \"name\": \"Qyzylorda\",\n \"shortCode\": \"KZY\",\n \"translationKey\": \"Kazakhstan_region_KZY\"\n },\n {\n \"name\": \"Shyghys Qazaqstan\",\n \"shortCode\": \"VOS\",\n \"translationKey\": \"Kazakhstan_region_VOS\"\n },\n {\n \"name\": \"Soltustik Qazaqstan\",\n \"shortCode\": \"SEV\",\n \"translationKey\": \"Kazakhstan_region_SEV\"\n },\n {\n \"name\": \"Zhambyl\",\n \"shortCode\": \"ZHA\",\n \"translationKey\": \"Kazakhstan_region_ZHA\"\n }\n ],\n \"translationKey\": \"country_name_Kazakhstan\"\n },\n {\n \"countryName\": \"Kenya\",\n \"countryShortCode\": \"KE\",\n \"regions\": [\n {\n \"name\": \"Baringo\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Kenya_region_01\"\n },\n {\n \"name\": \"Bomet\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Kenya_region_02\"\n },\n {\n \"name\": \"Bungoma\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Kenya_region_03\"\n },\n {\n \"name\": \"Busia\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Kenya_region_04\"\n },\n {\n \"name\": \"Eleyo/Marakwet\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Kenya_region_05\"\n },\n {\n \"name\": \"Embu\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Kenya_region_06\"\n },\n {\n \"name\": \"Garissa\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Kenya_region_07\"\n },\n {\n \"name\": \"Homa Bay\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Kenya_region_08\"\n },\n {\n \"name\": \"Isiolo\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Kenya_region_09\"\n },\n {\n \"name\": \"Kajiado\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Kenya_region_10\"\n },\n {\n \"name\": \"Kakamega\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Kenya_region_11\"\n },\n {\n \"name\": \"Kericho\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Kenya_region_12\"\n },\n {\n \"name\": \"Kiambu\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Kenya_region_13\"\n },\n {\n \"name\": \"Kilifi\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Kenya_region_14\"\n },\n {\n \"name\": \"Kirinyaga\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Kenya_region_15\"\n },\n {\n \"name\": \"Kisii\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Kenya_region_16\"\n },\n {\n \"name\": \"Kisumu\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Kenya_region_17\"\n },\n {\n \"name\": \"Kitui\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Kenya_region_18\"\n },\n {\n \"name\": \"Kwale\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Kenya_region_19\"\n },\n {\n \"name\": \"Laikipia\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Kenya_region_20\"\n },\n {\n \"name\": \"Lamu\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Kenya_region_21\"\n },\n {\n \"name\": \"Machakos\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Kenya_region_22\"\n },\n {\n \"name\": \"Makueni\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Kenya_region_23\"\n },\n {\n \"name\": \"Mandera\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Kenya_region_24\"\n },\n {\n \"name\": \"Marsabit\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Kenya_region_25\"\n },\n {\n \"name\": \"Meru\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Kenya_region_26\"\n },\n {\n \"name\": \"Migori\",\n \"shortCode\": \"27\",\n \"translationKey\": \"Kenya_region_27\"\n },\n {\n \"name\": \"Mombasa\",\n \"shortCode\": \"28\",\n \"translationKey\": \"Kenya_region_28\"\n },\n {\n \"name\": \"Murang'a\",\n \"shortCode\": \"29\",\n \"translationKey\": \"Kenya_region_29\"\n },\n {\n \"name\": \"Nairobi City\",\n \"shortCode\": \"30\",\n \"translationKey\": \"Kenya_region_30\"\n },\n {\n \"name\": \"Nakuru\",\n \"shortCode\": \"31\",\n \"translationKey\": \"Kenya_region_31\"\n },\n {\n \"name\": \"Nandi\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Kenya_region_32\"\n },\n {\n \"name\": \"Narok\",\n \"shortCode\": \"33\",\n \"translationKey\": \"Kenya_region_33\"\n },\n {\n \"name\": \"Nyamira\",\n \"shortCode\": \"34\",\n \"translationKey\": \"Kenya_region_34\"\n },\n {\n \"name\": \"Nyandarua\",\n \"shortCode\": \"35\",\n \"translationKey\": \"Kenya_region_35\"\n },\n {\n \"name\": \"Nyeri\",\n \"shortCode\": \"36\",\n \"translationKey\": \"Kenya_region_36\"\n },\n {\n \"name\": \"Samburu\",\n \"shortCode\": \"37\",\n \"translationKey\": \"Kenya_region_37\"\n },\n {\n \"name\": \"Siaya\",\n \"shortCode\": \"38\",\n \"translationKey\": \"Kenya_region_38\"\n },\n {\n \"name\": \"Taita/Taveta\",\n \"shortCode\": \"39\",\n \"translationKey\": \"Kenya_region_39\"\n },\n {\n \"name\": \"Tana River\",\n \"shortCode\": \"40\",\n \"translationKey\": \"Kenya_region_40\"\n },\n {\n \"name\": \"Tharaka-Nithi\",\n \"shortCode\": \"41\",\n \"translationKey\": \"Kenya_region_41\"\n },\n {\n \"name\": \"Trans Nzoia\",\n \"shortCode\": \"42\",\n \"translationKey\": \"Kenya_region_42\"\n },\n {\n \"name\": \"Turkana\",\n \"shortCode\": \"43\",\n \"translationKey\": \"Kenya_region_43\"\n },\n {\n \"name\": \"Uasin Gishu\",\n \"shortCode\": \"44\",\n \"translationKey\": \"Kenya_region_44\"\n },\n {\n \"name\": \"Vihiga\",\n \"shortCode\": \"45\",\n \"translationKey\": \"Kenya_region_45\"\n },\n {\n \"name\": \"Wajir\",\n \"shortCode\": \"46\",\n \"translationKey\": \"Kenya_region_46\"\n },\n {\n \"name\": \"West Pokot\",\n \"shortCode\": \"47\",\n \"translationKey\": \"Kenya_region_47\"\n }\n ],\n \"translationKey\": \"country_name_Kenya\"\n },\n {\n \"countryName\": \"Kosovo\",\n \"countryShortCode\": \"XK\",\n \"regions\": [\n {\n \"name\": \"Farizaj\",\n \"shortCode\": \"FZ\",\n \"translationKey\": \"Kosovo_region_FZ\"\n },\n {\n \"name\": \"Gjakova\",\n \"shortCode\": \"GK\",\n \"translationKey\": \"Kosovo_region_GK\"\n },\n {\n \"name\": \"Gjilan\",\n \"shortCode\": \"GL\",\n \"translationKey\": \"Kosovo_region_GL\"\n },\n {\n \"name\": \"Mitrovica\",\n \"shortCode\": \"MI\",\n \"translationKey\": \"Kosovo_region_MI\"\n },\n {\n \"name\": \"Peja/Peć\",\n \"shortCode\": \"PE\",\n \"translationKey\": \"Kosovo_region_PE\"\n },\n {\n \"name\": \"Pristina\",\n \"shortCode\": \"PR\",\n \"translationKey\": \"Kosovo_region_PR\"\n },\n {\n \"name\": \"Prizren\",\n \"shortCode\": \"PZ\",\n \"translationKey\": \"Kosovo_region_PZ\"\n }\n ],\n \"translationKey\": \"country_name_Kosovo\"\n },\n {\n \"countryName\": \"Kuwait\",\n \"countryShortCode\": \"KW\",\n \"regions\": [\n {\n \"name\": \"Al Aḩmadi\",\n \"shortCode\": \"AH\",\n \"translationKey\": \"Kuwait_region_AH\"\n },\n {\n \"name\": \"Al Farwānīyah\",\n \"shortCode\": \"FA\",\n \"translationKey\": \"Kuwait_region_FA\"\n },\n {\n \"name\": \"Al Jahrā’\",\n \"shortCode\": \"JA\",\n \"translationKey\": \"Kuwait_region_JA\"\n },\n {\n \"name\": \"Al ‘Āşimah\",\n \"shortCode\": \"KU\",\n \"translationKey\": \"Kuwait_region_KU\"\n },\n {\n \"name\": \"Ḩawallī\",\n \"shortCode\": \"HA\",\n \"translationKey\": \"Kuwait_region_HA\"\n },\n {\n \"name\": \"Mubārak al Kabir\",\n \"shortCode\": \"MU\",\n \"translationKey\": \"Kuwait_region_MU\"\n }\n ],\n \"translationKey\": \"country_name_Kuwait\"\n },\n {\n \"countryName\": \"Kyrgyzstan\",\n \"countryShortCode\": \"KG\",\n \"regions\": [\n {\n \"name\": \"Batken Oblasty\",\n \"shortCode\": \"B\",\n \"translationKey\": \"Kyrgyzstan_region_B\"\n },\n {\n \"name\": \"Bishkek Shaary\",\n \"shortCode\": \"GB\",\n \"translationKey\": \"Kyrgyzstan_region_GB\"\n },\n {\n \"name\": \"Chuy Oblasty (Bishkek)\",\n \"shortCode\": \"C\",\n \"translationKey\": \"Kyrgyzstan_region_C\"\n },\n {\n \"name\": \"Jalal-Abad Oblasty\",\n \"shortCode\": \"J\",\n \"translationKey\": \"Kyrgyzstan_region_J\"\n },\n {\n \"name\": \"Naryn Oblasty\",\n \"shortCode\": \"N\",\n \"translationKey\": \"Kyrgyzstan_region_N\"\n },\n {\n \"name\": \"Osh Oblasty\",\n \"shortCode\": \"O\",\n \"translationKey\": \"Kyrgyzstan_region_O\"\n },\n {\n \"name\": \"Talas Oblasty\",\n \"shortCode\": \"T\",\n \"translationKey\": \"Kyrgyzstan_region_T\"\n },\n {\n \"name\": \"Ysyk-Kol Oblasty (Karakol)\",\n \"shortCode\": \"Y\",\n \"translationKey\": \"Kyrgyzstan_region_Y\"\n }\n ],\n \"translationKey\": \"country_name_Kyrgyzstan\"\n },\n {\n \"countryName\": \"Latvia\",\n \"translationKey\": \"country_name_latvia\",\n \"countryShortCode\": \"LV\",\n \"regions\": [\n {\n \"name\": \"Aglona\",\n \"translationKey\": \"latvia_region_name_001\",\n \"shortCode\": \"001\"\n },\n {\n \"name\": \"Aizkraukle\",\n \"translationKey\": \"latvia_region_name_002\",\n \"shortCode\": \"002\"\n },\n {\n \"name\": \"Aizpute\",\n \"translationKey\": \"latvia_region_name_003\",\n \"shortCode\": \"003\"\n },\n {\n \"name\": \"Aknīste\",\n \"translationKey\": \"latvia_region_name_004\",\n \"shortCode\": \"004\"\n },\n {\n \"name\": \"Aloja\",\n \"translationKey\": \"latvia_region_name_005\",\n \"shortCode\": \"005\"\n },\n {\n \"name\": \"Alsunga\",\n \"translationKey\": \"latvia_region_name_006\",\n \"shortCode\": \"006\"\n },\n {\n \"name\": \"Alūksne\",\n \"translationKey\": \"latvia_region_name_007\",\n \"shortCode\": \"007\"\n },\n {\n \"name\": \"Amata\",\n \"translationKey\": \"latvia_region_name_008\",\n \"shortCode\": \"008\"\n },\n {\n \"name\": \"Ape\",\n \"translationKey\": \"latvia_region_name_009\",\n \"shortCode\": \"009\"\n },\n {\n \"name\": \"Auce\",\n \"translationKey\": \"latvia_region_name_010\",\n \"shortCode\": \"010\"\n },\n {\n \"name\": \"Ādaži\",\n \"translationKey\": \"latvia_region_name_011\",\n \"shortCode\": \"011\"\n },\n {\n \"name\": \"Babīte\",\n \"translationKey\": \"latvia_region_name_012\",\n \"shortCode\": \"012\"\n },\n {\n \"name\": \"Baldone\",\n \"translationKey\": \"latvia_region_name_013\",\n \"shortCode\": \"013\"\n },\n {\n \"name\": \"Baltinava\",\n \"translationKey\": \"latvia_region_name_014\",\n \"shortCode\": \"014\"\n },\n {\n \"name\": \"Balvi\",\n \"translationKey\": \"latvia_region_name_015\",\n \"shortCode\": \"015\"\n },\n {\n \"name\": \"Bauska\",\n \"translationKey\": \"latvia_region_name_016\",\n \"shortCode\": \"016\"\n },\n {\n \"name\": \"Beverīna\",\n \"translationKey\": \"latvia_region_name_017\",\n \"shortCode\": \"017\"\n },\n {\n \"name\": \"Brocēni\",\n \"translationKey\": \"latvia_region_name_018\",\n \"shortCode\": \"018\"\n },\n {\n \"name\": \"Burtnieki\",\n \"translationKey\": \"latvia_region_name_019\",\n \"shortCode\": \"019\"\n },\n {\n \"name\": \"Carnikava\",\n \"translationKey\": \"latvia_region_name_020\",\n \"shortCode\": \"020\"\n },\n {\n \"name\": \"Cesvaine\",\n \"translationKey\": \"latvia_region_name_021\",\n \"shortCode\": \"021\"\n },\n {\n \"name\": \"Cēsis\",\n \"translationKey\": \"latvia_region_name_022\",\n \"shortCode\": \"022\"\n },\n {\n \"name\": \"Cibla\",\n \"translationKey\": \"latvia_region_name_023\",\n \"shortCode\": \"023\"\n },\n {\n \"name\": \"Dagda\",\n \"translationKey\": \"latvia_region_name_024\",\n \"shortCode\": \"024\"\n },\n {\n \"name\": \"Daugavpils\",\n \"translationKey\": \"latvia_region_name_025\",\n \"shortCode\": \"025\"\n },\n {\n \"name\": \"Daugavpils (City)\",\n \"translationKey\": \"latvia_region_name_dgv\",\n \"shortCode\": \"DGV\"\n },\n {\n \"name\": \"Dobele\",\n \"translationKey\": \"latvia_region_name_026\",\n \"shortCode\": \"026\"\n },\n {\n \"name\": \"Dundaga\",\n \"translationKey\": \"latvia_region_name_027\",\n \"shortCode\": \"027\"\n },\n {\n \"name\": \"Durbe\",\n \"translationKey\": \"latvia_region_name_028\",\n \"shortCode\": \"028\"\n },\n {\n \"name\": \"Engure\",\n \"translationKey\": \"latvia_region_name_029\",\n \"shortCode\": \"029\"\n },\n {\n \"name\": \"Ērgļi\",\n \"translationKey\": \"latvia_region_name_030\",\n \"shortCode\": \"030\"\n },\n {\n \"name\": \"Garkalne\",\n \"translationKey\": \"latvia_region_name_031\",\n \"shortCode\": \"031\"\n },\n {\n \"name\": \"Grobiņa\",\n \"translationKey\": \"latvia_region_name_032\",\n \"shortCode\": \"032\"\n },\n {\n \"name\": \"Gulbene\",\n \"translationKey\": \"latvia_region_name_033\",\n \"shortCode\": \"033\"\n },\n {\n \"name\": \"Iecava\",\n \"translationKey\": \"latvia_region_name_034\",\n \"shortCode\": \"034\"\n },\n {\n \"name\": \"Ikšķile\",\n \"translationKey\": \"latvia_region_name_035\",\n \"shortCode\": \"035\"\n },\n {\n \"name\": \"Ilūkste\",\n \"translationKey\": \"latvia_region_name_036\",\n \"shortCode\": \"036\"\n },\n {\n \"name\": \"Inčukalns\",\n \"translationKey\": \"latvia_region_name_037\",\n \"shortCode\": \"037\"\n },\n {\n \"name\": \"Jaunjelgava\",\n \"translationKey\": \"latvia_region_name_038\",\n \"shortCode\": \"038\"\n },\n {\n \"name\": \"Jaunpiebalga\",\n \"translationKey\": \"latvia_region_name_039\",\n \"shortCode\": \"039\"\n },\n {\n \"name\": \"Jaunpils\",\n \"translationKey\": \"latvia_region_name_040\",\n \"shortCode\": \"040\"\n },\n {\n \"name\": \"Jelgava\",\n \"translationKey\": \"latvia_region_name_041\",\n \"shortCode\": \"041\"\n },\n {\n \"name\": \"Jelgava (City)\",\n \"translationKey\": \"latvia_region_name_jel\",\n \"shortCode\": \"JEL\"\n },\n {\n \"name\": \"Jēkabpils\",\n \"translationKey\": \"latvia_region_name_042\",\n \"shortCode\": \"042\"\n },\n {\n \"name\": \"Jēkabpils (City)\",\n \"translationKey\": \"latvia_region_name_jkb\",\n \"shortCode\": \"JKB\"\n },\n {\n \"name\": \"Jūrmala (City)\",\n \"translationKey\": \"latvia_region_name_jur\",\n \"shortCode\": \"JUR\"\n },\n {\n \"name\": \"Kandava\",\n \"translationKey\": \"latvia_region_name_043\",\n \"shortCode\": \"043\"\n },\n {\n \"name\": \"Kārsava\",\n \"translationKey\": \"latvia_region_name_044\",\n \"shortCode\": \"044\"\n },\n {\n \"name\": \"Kocēni\",\n \"translationKey\": \"latvia_region_name_045\",\n \"shortCode\": \"045\"\n },\n {\n \"name\": \"Koknese\",\n \"translationKey\": \"latvia_region_name_046\",\n \"shortCode\": \"046\"\n },\n {\n \"name\": \"Krāslava\",\n \"translationKey\": \"latvia_region_name_047\",\n \"shortCode\": \"047\"\n },\n {\n \"name\": \"Krimulda\",\n \"translationKey\": \"latvia_region_name_048\",\n \"shortCode\": \"048\"\n },\n {\n \"name\": \"Krustpils\",\n \"translationKey\": \"latvia_region_name_049\",\n \"shortCode\": \"049\"\n },\n {\n \"name\": \"Kuldīga\",\n \"translationKey\": \"latvia_region_name_050\",\n \"shortCode\": \"050\"\n },\n {\n \"name\": \"Ķegums\",\n \"translationKey\": \"latvia_region_name_051\",\n \"shortCode\": \"051\"\n },\n {\n \"name\": \"Ķekava\",\n \"translationKey\": \"latvia_region_name_052\",\n \"shortCode\": \"052\"\n },\n {\n \"name\": \"Lielvārde\",\n \"translationKey\": \"latvia_region_name_053\",\n \"shortCode\": \"053\"\n },\n {\n \"name\": \"Liepāja\",\n \"translationKey\": \"latvia_region_name_lpx\",\n \"shortCode\": \"LPX\"\n },\n {\n \"name\": \"Limbaži\",\n \"translationKey\": \"latvia_region_name_054\",\n \"shortCode\": \"054\"\n },\n {\n \"name\": \"Līgatne\",\n \"translationKey\": \"latvia_region_name_055\",\n \"shortCode\": \"055\"\n },\n {\n \"name\": \"Līvāni\",\n \"translationKey\": \"latvia_region_name_056\",\n \"shortCode\": \"056\"\n },\n {\n \"name\": \"Lubāna\",\n \"translationKey\": \"latvia_region_name_057\",\n \"shortCode\": \"057\"\n },\n {\n \"name\": \"Ludza\",\n \"translationKey\": \"latvia_region_name_058\",\n \"shortCode\": \"058\"\n },\n {\n \"name\": \"Madona\",\n \"translationKey\": \"latvia_region_name_059\",\n \"shortCode\": \"059\"\n },\n {\n \"name\": \"Mazsalaca\",\n \"translationKey\": \"latvia_region_name_060\",\n \"shortCode\": \"060\"\n },\n {\n \"name\": \"Mālpils\",\n \"translationKey\": \"latvia_region_name_061\",\n \"shortCode\": \"061\"\n },\n {\n \"name\": \"Mārupe\",\n \"translationKey\": \"latvia_region_name_062\",\n \"shortCode\": \"062\"\n },\n {\n \"name\": \"Mērsrags\",\n \"translationKey\": \"latvia_region_name_063\",\n \"shortCode\": \"063\"\n },\n {\n \"name\": \"Naukšēni\",\n \"translationKey\": \"latvia_region_name_064\",\n \"shortCode\": \"064\"\n },\n {\n \"name\": \"Nereta\",\n \"translationKey\": \"latvia_region_name_065\",\n \"shortCode\": \"065\"\n },\n {\n \"name\": \"Nīca\",\n \"translationKey\": \"latvia_region_name_066\",\n \"shortCode\": \"066\"\n },\n {\n \"name\": \"Ogre\",\n \"translationKey\": \"latvia_region_name_067\",\n \"shortCode\": \"067\"\n },\n {\n \"name\": \"Olaine\",\n \"translationKey\": \"latvia_region_name_068\",\n \"shortCode\": \"068\"\n },\n {\n \"name\": \"Ozolnieki\",\n \"translationKey\": \"latvia_region_name_069\",\n \"shortCode\": \"069\"\n },\n {\n \"name\": \"Pārgauja\",\n \"translationKey\": \"latvia_region_name_070\",\n \"shortCode\": \"070\"\n },\n {\n \"name\": \"Pāvilosta\",\n \"translationKey\": \"latvia_region_name_071\",\n \"shortCode\": \"071\"\n },\n {\n \"name\": \"Pļaviņas\",\n \"translationKey\": \"latvia_region_name_072\",\n \"shortCode\": \"072\"\n },\n {\n \"name\": \"Preiļi\",\n \"translationKey\": \"latvia_region_name_073\",\n \"shortCode\": \"073\"\n },\n {\n \"name\": \"Priekule\",\n \"translationKey\": \"latvia_region_name_074\",\n \"shortCode\": \"074\"\n },\n {\n \"name\": \"Priekuļi\",\n \"translationKey\": \"latvia_region_name_075\",\n \"shortCode\": \"075\"\n },\n {\n \"name\": \"Rauna\",\n \"translationKey\": \"latvia_region_name_076\",\n \"shortCode\": \"076\"\n },\n {\n \"name\": \"Rēzekne\",\n \"translationKey\": \"latvia_region_name_077\",\n \"shortCode\": \"077\"\n },\n {\n \"name\": \"Rēzekne (City)\",\n \"translationKey\": \"latvia_region_name_rez\",\n \"shortCode\": \"REZ\"\n },\n {\n \"name\": \"Riebiņi\",\n \"translationKey\": \"latvia_region_name_078\",\n \"shortCode\": \"078\"\n },\n {\n \"name\": \"Rīga\",\n \"translationKey\": \"latvia_region_name_rix\",\n \"shortCode\": \"RIX\"\n },\n {\n \"name\": \"Roja\",\n \"translationKey\": \"latvia_region_name_079\",\n \"shortCode\": \"079\"\n },\n {\n \"name\": \"Ropaži\",\n \"translationKey\": \"latvia_region_name_080\",\n \"shortCode\": \"080\"\n },\n {\n \"name\": \"Rucava\",\n \"translationKey\": \"latvia_region_name_081\",\n \"shortCode\": \"081\"\n },\n {\n \"name\": \"Rugāji\",\n \"translationKey\": \"latvia_region_name_082\",\n \"shortCode\": \"082\"\n },\n {\n \"name\": \"Rundāle\",\n \"translationKey\": \"latvia_region_name_083\",\n \"shortCode\": \"083\"\n },\n {\n \"name\": \"Rūjiena\",\n \"translationKey\": \"latvia_region_name_084\",\n \"shortCode\": \"084\"\n },\n {\n \"name\": \"Sala\",\n \"translationKey\": \"latvia_region_name_085\",\n \"shortCode\": \"085\"\n },\n {\n \"name\": \"Salacgrīva\",\n \"translationKey\": \"latvia_region_name_086\",\n \"shortCode\": \"086\"\n },\n {\n \"name\": \"Salaspils\",\n \"translationKey\": \"latvia_region_name_087\",\n \"shortCode\": \"087\"\n },\n {\n \"name\": \"Saldus\",\n \"translationKey\": \"latvia_region_name_088\",\n \"shortCode\": \"088\"\n },\n {\n \"name\": \"Saulkrasti\",\n \"translationKey\": \"latvia_region_name_089\",\n \"shortCode\": \"089\"\n },\n {\n \"name\": \"Sēja\",\n \"translationKey\": \"latvia_region_name_090\",\n \"shortCode\": \"090\"\n },\n {\n \"name\": \"Sigulda\",\n \"translationKey\": \"latvia_region_name_091\",\n \"shortCode\": \"091\"\n },\n {\n \"name\": \"Skrīveri\",\n \"translationKey\": \"latvia_region_name_092\",\n \"shortCode\": \"092\"\n },\n {\n \"name\": \"Skrunda\",\n \"translationKey\": \"latvia_region_name_093\",\n \"shortCode\": \"093\"\n },\n {\n \"name\": \"Smiltene\",\n \"translationKey\": \"latvia_region_name_094\",\n \"shortCode\": \"094\"\n },\n {\n \"name\": \"Stopiņi\",\n \"translationKey\": \"latvia_region_name_095\",\n \"shortCode\": \"095\"\n },\n {\n \"name\": \"Strenči\",\n \"translationKey\": \"latvia_region_name_096\",\n \"shortCode\": \"096\"\n },\n {\n \"name\": \"Talsi\",\n \"translationKey\": \"latvia_region_name_097\",\n \"shortCode\": \"097\"\n },\n {\n \"name\": \"Tērvete\",\n \"translationKey\": \"latvia_region_name_098\",\n \"shortCode\": \"098\"\n },\n {\n \"name\": \"Tukums\",\n \"translationKey\": \"latvia_region_name_099\",\n \"shortCode\": \"099\"\n },\n {\n \"name\": \"Vaiņode\",\n \"translationKey\": \"latvia_region_name_100\",\n \"shortCode\": \"100\"\n },\n {\n \"name\": \"Valka\",\n \"translationKey\": \"latvia_region_name_101\",\n \"shortCode\": \"101\"\n },\n {\n \"name\": \"Valmiera\",\n \"translationKey\": \"latvia_region_name_vmr\",\n \"shortCode\": \"VMR\"\n },\n {\n \"name\": \"Varakļāni\",\n \"translationKey\": \"latvia_region_name_102\",\n \"shortCode\": \"102\"\n },\n {\n \"name\": \"Vārkava\",\n \"translationKey\": \"latvia_region_name_103\",\n \"shortCode\": \"103\"\n },\n {\n \"name\": \"Vecpiebalga\",\n \"translationKey\": \"latvia_region_name_104\",\n \"shortCode\": \"104\"\n },\n {\n \"name\": \"Vecumnieki\",\n \"translationKey\": \"latvia_region_name_105\",\n \"shortCode\": \"105\"\n },\n {\n \"name\": \"Ventspils\",\n \"translationKey\": \"latvia_region_name_106\",\n \"shortCode\": \"106\"\n },\n {\n \"name\": \"Ventspils (City)\",\n \"translationKey\": \"latvia_region_name_ven\",\n \"shortCode\": \"VEN\"\n },\n {\n \"name\": \"Viesīte\",\n \"translationKey\": \"latvia_region_name_107\",\n \"shortCode\": \"107\"\n },\n {\n \"name\": \"Viļaka\",\n \"translationKey\": \"latvia_region_name_108\",\n \"shortCode\": \"108\"\n },\n {\n \"name\": \"Viļāni\",\n \"translationKey\": \"latvia_region_name_109\",\n \"shortCode\": \"109\"\n },\n {\n \"name\": \"Zilupe\",\n \"translationKey\": \"latvia_region_name_110\",\n \"shortCode\": \"110\"\n }\n ]\n },\n {\n \"countryName\": \"Lebanon\",\n \"countryShortCode\": \"LB\",\n \"regions\": [\n {\n \"name\": \"Aakkâr\",\n \"shortCode\": \"AK\",\n \"translationKey\": \"Lebanon_region_AK\"\n },\n {\n \"name\": \"Baalbelk-Hermel\",\n \"shortCode\": \"BH\",\n \"translationKey\": \"Lebanon_region_BH\"\n },\n {\n \"name\": \"Béqaa\",\n \"shortCode\": \"BI\",\n \"translationKey\": \"Lebanon_region_BI\"\n },\n {\n \"name\": \"Beyrouth\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Lebanon_region_BA\"\n },\n {\n \"name\": \"Liban-Nord\",\n \"shortCode\": \"AS\",\n \"translationKey\": \"Lebanon_region_AS\"\n },\n {\n \"name\": \"Liban-Sud\",\n \"shortCode\": \"JA\",\n \"translationKey\": \"Lebanon_region_JA\"\n },\n {\n \"name\": \"Mont-Liban\",\n \"shortCode\": \"JL\",\n \"translationKey\": \"Lebanon_region_JL\"\n },\n {\n \"name\": \"Nabatîyé\",\n \"shortCode\": \"NA\",\n \"translationKey\": \"Lebanon_region_NA\"\n }\n ],\n \"translationKey\": \"country_name_Lebanon\"\n },\n {\n \"countryName\": \"Liechtenstein\",\n \"countryShortCode\": \"LI\",\n \"regions\": [\n {\n \"name\": \"Balzers\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Liechtenstein_region_01\"\n },\n {\n \"name\": \"Eschen\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Liechtenstein_region_02\"\n },\n {\n \"name\": \"Gamprin\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Liechtenstein_region_03\"\n },\n {\n \"name\": \"Mauren\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Liechtenstein_region_04\"\n },\n {\n \"name\": \"Planken\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Liechtenstein_region_05\"\n },\n {\n \"name\": \"Ruggell\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Liechtenstein_region_06\"\n },\n {\n \"name\": \"Schaan\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Liechtenstein_region_07\"\n },\n {\n \"name\": \"Schellenberg\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Liechtenstein_region_08\"\n },\n {\n \"name\": \"Triesen\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Liechtenstein_region_09\"\n },\n {\n \"name\": \"Triesenberg\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Liechtenstein_region_10\"\n },\n {\n \"name\": \"Vaduz\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Liechtenstein_region_11\"\n }\n ],\n \"translationKey\": \"country_name_Liechtenstein\"\n },\n {\n \"countryName\": \"Lithuania\",\n \"translationKey\": \"country_name_lithuania\",\n \"countryShortCode\": \"LT\",\n \"regions\": [\n {\n \"name\": \"Alytaus\",\n \"translationKey\": \"lithuania_region_name_al\",\n \"shortCode\": \"AL\"\n },\n {\n \"name\": \"Kauno\",\n \"translationKey\": \"lithuania_region_name_ku\",\n \"shortCode\": \"KU\"\n },\n {\n \"name\": \"Klaipėdos\",\n \"translationKey\": \"lithuania_region_name_kl\",\n \"shortCode\": \"KL\"\n },\n {\n \"name\": \"Marijampolės\",\n \"translationKey\": \"lithuania_region_name_mr\",\n \"shortCode\": \"MR\"\n },\n {\n \"name\": \"Panevėžio\",\n \"translationKey\": \"lithuania_region_name_pn\",\n \"shortCode\": \"PN\"\n },\n {\n \"name\": \"Šiaulių\",\n \"translationKey\": \"lithuania_region_name_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Tauragės\",\n \"translationKey\": \"lithuania_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Telšių\",\n \"translationKey\": \"lithuania_region_name_te\",\n \"shortCode\": \"TE\"\n },\n {\n \"name\": \"Utenos\",\n \"translationKey\": \"lithuania_region_name_ut\",\n \"shortCode\": \"UT\"\n },\n {\n \"name\": \"Vilniaus\",\n \"translationKey\": \"lithuania_region_name_vl\",\n \"shortCode\": \"VL\"\n }\n ]\n },\n {\n \"countryName\": \"Luxembourg\",\n \"translationKey\": \"country_name_luxembourg\",\n \"countryShortCode\": \"LU\",\n \"regions\": [\n {\n \"name\": \"Capellen\",\n \"translationKey\": \"luxembourg_region_name_ca\",\n \"shortCode\": \"CA\"\n },\n {\n \"name\": \"Clevaux\",\n \"translationKey\": \"luxembourg_region_name_cl\",\n \"shortCode\": \"CL\"\n },\n {\n \"name\": \"Diekirch\",\n \"translationKey\": \"luxembourg_region_name_di\",\n \"shortCode\": \"DI\"\n },\n {\n \"name\": \"Echternach\",\n \"translationKey\": \"luxembourg_region_name_ec\",\n \"shortCode\": \"EC\"\n },\n {\n \"name\": \"Esch-sur-Alzette\",\n \"translationKey\": \"luxembourg_region_name_es\",\n \"shortCode\": \"ES\"\n },\n {\n \"name\": \"Grevenmacher\",\n \"translationKey\": \"luxembourg_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Luxembourg\",\n \"translationKey\": \"luxembourg_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Mersch\",\n \"translationKey\": \"luxembourg_region_name_me\",\n \"shortCode\": \"ME\"\n },\n {\n \"name\": \"Redange\",\n \"translationKey\": \"luxembourg_region_name_rd\",\n \"shortCode\": \"RD\"\n },\n {\n \"name\": \"Remich\",\n \"translationKey\": \"luxembourg_region_name_rm\",\n \"shortCode\": \"RM\"\n },\n {\n \"name\": \"Vianden\",\n \"translationKey\": \"luxembourg_region_name_vd\",\n \"shortCode\": \"VD\"\n },\n {\n \"name\": \"Wiltz\",\n \"translationKey\": \"luxembourg_region_name_wi\",\n \"shortCode\": \"WI\"\n }\n ]\n },\n {\n \"countryName\": \"Macedonia, Republic of\",\n \"countryShortCode\": \"MK\",\n \"regions\": [\n {\n \"name\": \"Aračinovo\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Macedonia, Republic of_region_02\"\n },\n {\n \"name\": \"Berovo\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Macedonia, Republic of_region_03\"\n },\n {\n \"name\": \"Bitola\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Macedonia, Republic of_region_04\"\n },\n {\n \"name\": \"Bogdanci\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Macedonia, Republic of_region_05\"\n },\n {\n \"name\": \"Bogovinje\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Macedonia, Republic of_region_06\"\n },\n {\n \"name\": \"Bosilovo\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Macedonia, Republic of_region_07\"\n },\n {\n \"name\": \"Brvenica\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Macedonia, Republic of_region_08\"\n },\n {\n \"name\": \"Centar Župa\",\n \"shortCode\": \"78\",\n \"translationKey\": \"Macedonia, Republic of_region_78\"\n },\n {\n \"name\": \"Čaška\",\n \"shortCode\": \"80\",\n \"translationKey\": \"Macedonia, Republic of_region_80\"\n },\n {\n \"name\": \"Češinovo-Obleševo\",\n \"shortCode\": \"81\",\n \"translationKey\": \"Macedonia, Republic of_region_81\"\n },\n {\n \"name\": \"Čučer Sandevo\",\n \"shortCode\": \"82\",\n \"translationKey\": \"Macedonia, Republic of_region_82\"\n },\n {\n \"name\": \"Debar\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Macedonia, Republic of_region_21\"\n },\n {\n \"name\": \"Debarca\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Macedonia, Republic of_region_22\"\n },\n {\n \"name\": \"Delčevo\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Macedonia, Republic of_region_23\"\n },\n {\n \"name\": \"Demir Hisar\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Macedonia, Republic of_region_25\"\n },\n {\n \"name\": \"Demir Kapija\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Macedonia, Republic of_region_24\"\n },\n {\n \"name\": \"Doran\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Macedonia, Republic of_region_26\"\n },\n {\n \"name\": \"Dolneni\",\n \"shortCode\": \"27\",\n \"translationKey\": \"Macedonia, Republic of_region_27\"\n },\n {\n \"name\": \"Gevgelija\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Macedonia, Republic of_region_18\"\n },\n {\n \"name\": \"Gostivar\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Macedonia, Republic of_region_19\"\n },\n {\n \"name\": \"Gradsko\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Macedonia, Republic of_region_20\"\n },\n {\n \"name\": \"Ilinden\",\n \"shortCode\": \"34\",\n \"translationKey\": \"Macedonia, Republic of_region_34\"\n },\n {\n \"name\": \"Jegunovce\",\n \"shortCode\": \"35\",\n \"translationKey\": \"Macedonia, Republic of_region_35\"\n },\n {\n \"name\": \"Karbinci\",\n \"shortCode\": \"37\",\n \"translationKey\": \"Macedonia, Republic of_region_37\"\n },\n {\n \"name\": \"Kavadarci\",\n \"shortCode\": \"36\",\n \"translationKey\": \"Macedonia, Republic of_region_36\"\n },\n {\n \"name\": \"Kičevo\",\n \"shortCode\": \"40\",\n \"translationKey\": \"Macedonia, Republic of_region_40\"\n },\n {\n \"name\": \"Kočani\",\n \"shortCode\": \"42\",\n \"translationKey\": \"Macedonia, Republic of_region_42\"\n },\n {\n \"name\": \"Konče\",\n \"shortCode\": \"41\",\n \"translationKey\": \"Macedonia, Republic of_region_41\"\n },\n {\n \"name\": \"Kratovo\",\n \"shortCode\": \"43\",\n \"translationKey\": \"Macedonia, Republic of_region_43\"\n },\n {\n \"name\": \"Kriva Palanka\",\n \"shortCode\": \"44\",\n \"translationKey\": \"Macedonia, Republic of_region_44\"\n },\n {\n \"name\": \"Krivogaštani\",\n \"shortCode\": \"45\",\n \"translationKey\": \"Macedonia, Republic of_region_45\"\n },\n {\n \"name\": \"Kruševo\",\n \"shortCode\": \"46\",\n \"translationKey\": \"Macedonia, Republic of_region_46\"\n },\n {\n \"name\": \"Kumanovo\",\n \"shortCode\": \"47\",\n \"translationKey\": \"Macedonia, Republic of_region_47\"\n },\n {\n \"name\": \"Lipkovo\",\n \"shortCode\": \"48\",\n \"translationKey\": \"Macedonia, Republic of_region_48\"\n },\n {\n \"name\": \"Lozovo\",\n \"shortCode\": \"49\",\n \"translationKey\": \"Macedonia, Republic of_region_49\"\n },\n {\n \"name\": \"Makedonska Kamenica\",\n \"shortCode\": \"51\",\n \"translationKey\": \"Macedonia, Republic of_region_51\"\n },\n {\n \"name\": \"Makedonski Brod\",\n \"shortCode\": \"52\",\n \"translationKey\": \"Macedonia, Republic of_region_52\"\n },\n {\n \"name\": \"Mavrovo i Rostuša\",\n \"shortCode\": \"50\",\n \"translationKey\": \"Macedonia, Republic of_region_50\"\n },\n {\n \"name\": \"Mogila\",\n \"shortCode\": \"53\",\n \"translationKey\": \"Macedonia, Republic of_region_53\"\n },\n {\n \"name\": \"Negotino\",\n \"shortCode\": \"54\",\n \"translationKey\": \"Macedonia, Republic of_region_54\"\n },\n {\n \"name\": \"Novaci\",\n \"shortCode\": \"55\",\n \"translationKey\": \"Macedonia, Republic of_region_55\"\n },\n {\n \"name\": \"Novo Selo\",\n \"shortCode\": \"56\",\n \"translationKey\": \"Macedonia, Republic of_region_56\"\n },\n {\n \"name\": \"Ohrid\",\n \"shortCode\": \"58\",\n \"translationKey\": \"Macedonia, Republic of_region_58\"\n },\n {\n \"name\": \"Pehčevo\",\n \"shortCode\": \"60\",\n \"translationKey\": \"Macedonia, Republic of_region_60\"\n },\n {\n \"name\": \"Petrovec\",\n \"shortCode\": \"59\",\n \"translationKey\": \"Macedonia, Republic of_region_59\"\n },\n {\n \"name\": \"Plasnica\",\n \"shortCode\": \"61\",\n \"translationKey\": \"Macedonia, Republic of_region_61\"\n },\n {\n \"name\": \"Prilep\",\n \"shortCode\": \"62\",\n \"translationKey\": \"Macedonia, Republic of_region_62\"\n },\n {\n \"name\": \"Probištip\",\n \"shortCode\": \"63\",\n \"translationKey\": \"Macedonia, Republic of_region_63\"\n },\n {\n \"name\": \"Radoviš\",\n \"shortCode\": \"\",\n \"translationKey\": \"Macedonia, Republic of_region_\"\n },\n {\n \"name\": \"Rankovce\",\n \"shortCode\": \"65\",\n \"translationKey\": \"Macedonia, Republic of_region_65\"\n },\n {\n \"name\": \"Resen\",\n \"shortCode\": \"66\",\n \"translationKey\": \"Macedonia, Republic of_region_66\"\n },\n {\n \"name\": \"Rosoman\",\n \"shortCode\": \"67\",\n \"translationKey\": \"Macedonia, Republic of_region_67\"\n },\n {\n \"name\": \"Skopje\",\n \"shortCode\": \"85\",\n \"translationKey\": \"Macedonia, Republic of_region_85\"\n },\n {\n \"name\": \"Sopište\",\n \"shortCode\": \"70\",\n \"translationKey\": \"Macedonia, Republic of_region_70\"\n },\n {\n \"name\": \"Staro Nagoričane\",\n \"shortCode\": \"71\",\n \"translationKey\": \"Macedonia, Republic of_region_71\"\n },\n {\n \"name\": \"Struga\",\n \"shortCode\": \"72\",\n \"translationKey\": \"Macedonia, Republic of_region_72\"\n },\n {\n \"name\": \"Strumica\",\n \"shortCode\": \"73\",\n \"translationKey\": \"Macedonia, Republic of_region_73\"\n },\n {\n \"name\": \"Studeničani\",\n \"shortCode\": \"74\",\n \"translationKey\": \"Macedonia, Republic of_region_74\"\n },\n {\n \"name\": \"Sveti Nikole\",\n \"shortCode\": \"69\",\n \"translationKey\": \"Macedonia, Republic of_region_69\"\n },\n {\n \"name\": \"Štip\",\n \"shortCode\": \"83\",\n \"translationKey\": \"Macedonia, Republic of_region_83\"\n },\n {\n \"name\": \"Tearce\",\n \"shortCode\": \"75\",\n \"translationKey\": \"Macedonia, Republic of_region_75\"\n },\n {\n \"name\": \"Tetovo\",\n \"shortCode\": \"76\",\n \"translationKey\": \"Macedonia, Republic of_region_76\"\n },\n {\n \"name\": \"Valandovo\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Macedonia, Republic of_region_10\"\n },\n {\n \"name\": \"Vasilevo\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Macedonia, Republic of_region_11\"\n },\n {\n \"name\": \"Veles\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Macedonia, Republic of_region_13\"\n },\n {\n \"name\": \"Vevčani\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Macedonia, Republic of_region_12\"\n },\n {\n \"name\": \"Vinica\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Macedonia, Republic of_region_14\"\n },\n {\n \"name\": \"Vrapčište\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Macedonia, Republic of_region_16\"\n },\n {\n \"name\": \"Zelenikovo\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Macedonia, Republic of_region_32\"\n },\n {\n \"name\": \"Zrnovci\",\n \"shortCode\": \"33\",\n \"translationKey\": \"Macedonia, Republic of_region_33\"\n },\n {\n \"name\": \"Želino\",\n \"shortCode\": \"30\",\n \"translationKey\": \"Macedonia, Republic of_region_30\"\n }\n ],\n \"translationKey\": \"country_name_Macedonia, Republic of\"\n },\n {\n \"countryName\": \"Madagascar\",\n \"countryShortCode\": \"MG\",\n \"regions\": [\n {\n \"name\": \"Antananarivo\",\n \"shortCode\": \"T\",\n \"translationKey\": \"Madagascar_region_T\"\n },\n {\n \"name\": \"Antsiranana\",\n \"shortCode\": \"D\",\n \"translationKey\": \"Madagascar_region_D\"\n },\n {\n \"name\": \"Fianarantsoa\",\n \"shortCode\": \"F\",\n \"translationKey\": \"Madagascar_region_F\"\n },\n {\n \"name\": \"Mahajanga\",\n \"shortCode\": \"M\",\n \"translationKey\": \"Madagascar_region_M\"\n },\n {\n \"name\": \"Toamasina\",\n \"shortCode\": \"A\",\n \"translationKey\": \"Madagascar_region_A\"\n },\n {\n \"name\": \"Toliara\",\n \"shortCode\": \"U\",\n \"translationKey\": \"Madagascar_region_U\"\n }\n ],\n \"translationKey\": \"country_name_Madagascar\"\n },\n {\n \"countryName\": \"Mali\",\n \"countryShortCode\": \"ML\",\n \"regions\": [\n {\n \"name\": \"Bamako\",\n \"shortCode\": \"BKO\",\n \"translationKey\": \"Mali_region_BKO\"\n },\n {\n \"name\": \"Gao\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Mali_region_7\"\n },\n {\n \"name\": \"Kayes\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Mali_region_1\"\n },\n {\n \"name\": \"Kidal\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Mali_region_8\"\n },\n {\n \"name\": \"Koulikoro\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Mali_region_2\"\n },\n {\n \"name\": \"Mopti\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Mali_region_5\"\n },\n {\n \"name\": \"Segou\",\n \"shortCode\": \"4\",\n \"translationKey\": \"Mali_region_4\"\n },\n {\n \"name\": \"Sikasso\",\n \"shortCode\": \"3\",\n \"translationKey\": \"Mali_region_3\"\n },\n {\n \"name\": \"Tombouctou\",\n \"shortCode\": \"6\",\n \"translationKey\": \"Mali_region_6\"\n },\n {\n \"name\": \"Taoudénit\",\n \"shortCode\": \"9\",\n \"translationKey\": \"Mali_region_9\"\n },\n {\n \"name\": \"Ménaka\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Mali_region_10\"\n }\n ],\n \"translationKey\": \"country_name_Mali\"\n },\n {\n \"countryName\": \"Malta\",\n \"translationKey\": \"country_name_malta\",\n \"countryShortCode\": \"MT\",\n \"regions\": [\n {\n \"name\": \"Attard\",\n \"translationKey\": \"malta_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Balzan\",\n \"translationKey\": \"malta_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Birgu\",\n \"translationKey\": \"malta_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Birkirkara\",\n \"translationKey\": \"malta_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Birżebbuġa\",\n \"translationKey\": \"malta_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Bormla\",\n \"translationKey\": \"malta_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Dingli\",\n \"translationKey\": \"malta_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Fgura\",\n \"translationKey\": \"malta_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Floriana\",\n \"translationKey\": \"malta_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Fontana\",\n \"translationKey\": \"malta_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Guda\",\n \"translationKey\": \"malta_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Gżira\",\n \"translationKey\": \"malta_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Għajnsielem\",\n \"translationKey\": \"malta_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Għarb\",\n \"translationKey\": \"malta_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Għargħur\",\n \"translationKey\": \"malta_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Għasri\",\n \"translationKey\": \"malta_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Għaxaq\",\n \"translationKey\": \"malta_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Ħamrun\",\n \"translationKey\": \"malta_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Iklin\",\n \"translationKey\": \"malta_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Isla\",\n \"translationKey\": \"malta_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Kalkara\",\n \"translationKey\": \"malta_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Kerċem\",\n \"translationKey\": \"malta_region_name_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Kirkop\",\n \"translationKey\": \"malta_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Lija\",\n \"translationKey\": \"malta_region_name_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Luqa\",\n \"translationKey\": \"malta_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Marsa\",\n \"translationKey\": \"malta_region_name_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Marsaskala\",\n \"translationKey\": \"malta_region_name_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Marsaxlokk\",\n \"translationKey\": \"malta_region_name_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Mdina\",\n \"translationKey\": \"malta_region_name_29\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Mellieħa\",\n \"translationKey\": \"malta_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Mġarr\",\n \"translationKey\": \"malta_region_name_31\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Mosta\",\n \"translationKey\": \"malta_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Mqabba\",\n \"translationKey\": \"malta_region_name_33\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Msida\",\n \"translationKey\": \"malta_region_name_34\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Mtarfa\",\n \"translationKey\": \"malta_region_name_35\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Munxar\",\n \"translationKey\": \"malta_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Nadur\",\n \"translationKey\": \"malta_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Naxxar\",\n \"translationKey\": \"malta_region_name_38\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Paola\",\n \"translationKey\": \"malta_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Pembroke\",\n \"translationKey\": \"malta_region_name_40\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Pietà\",\n \"translationKey\": \"malta_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Qala\",\n \"translationKey\": \"malta_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Qormi\",\n \"translationKey\": \"malta_region_name_43\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Qrendi\",\n \"translationKey\": \"malta_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Rabat Għawdex\",\n \"translationKey\": \"malta_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Rabat Malta\",\n \"translationKey\": \"malta_region_name_46\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Safi\",\n \"translationKey\": \"malta_region_name_47\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"San Ġiljan\",\n \"translationKey\": \"malta_region_name_48\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"San Ġwann\",\n \"translationKey\": \"malta_region_name_49\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"San Lawrenz\",\n \"translationKey\": \"malta_region_name_50\",\n \"shortCode\": \"50\"\n },\n {\n \"name\": \"San Pawl il-Baħar\",\n \"translationKey\": \"malta_region_name_51\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Sannat\",\n \"translationKey\": \"malta_region_name_52\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Santa Luċija\",\n \"translationKey\": \"malta_region_name_53\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Santa Venera\",\n \"translationKey\": \"malta_region_name_54\",\n \"shortCode\": \"54\"\n },\n {\n \"name\": \"Siġġiewi\",\n \"translationKey\": \"malta_region_name_55\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Sliema\",\n \"translationKey\": \"malta_region_name_56\",\n \"shortCode\": \"56\"\n },\n {\n \"name\": \"Swieqi\",\n \"translationKey\": \"malta_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Tai Xbiex\",\n \"translationKey\": \"malta_region_name_58\",\n \"shortCode\": \"58\"\n },\n {\n \"name\": \"Tarzien\",\n \"translationKey\": \"malta_region_name_59\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Valletta\",\n \"translationKey\": \"malta_region_name_60\",\n \"shortCode\": \"60\"\n },\n {\n \"name\": \"Xagħra\",\n \"translationKey\": \"malta_region_name_61\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Xewkija\",\n \"translationKey\": \"malta_region_name_62\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Xgħajra\",\n \"translationKey\": \"malta_region_name_63\",\n \"shortCode\": \"63\"\n },\n {\n \"name\": \"Żabbar\",\n \"translationKey\": \"malta_region_name_64\",\n \"shortCode\": \"64\"\n },\n {\n \"name\": \"Żebbuġ Għawde\",\n \"translationKey\": \"malta_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Żebbuġ Malta\",\n \"translationKey\": \"malta_region_name_66\",\n \"shortCode\": \"66\"\n },\n {\n \"name\": \"Żejtun\",\n \"translationKey\": \"malta_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Żurrieq\",\n \"translationKey\": \"malta_region_name_68\",\n \"shortCode\": \"68\"\n }\n ]\n },\n {\n \"countryName\": \"Martinique\",\n \"countryShortCode\": \"MQ\",\n \"regions\": [\n {\n \"name\": \"Martinique\",\n \"translationKey\": \"Martinique_region_Martinique\"\n }\n ],\n \"translationKey\": \"country_name_Martinique\"\n },\n {\n \"countryName\": \"Mauritania\",\n \"countryShortCode\": \"MR\",\n \"regions\": [\n {\n \"name\": \"Adrar\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Mauritania_region_07\"\n },\n {\n \"name\": \"Assaba\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Mauritania_region_03\"\n },\n {\n \"name\": \"Brakna\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Mauritania_region_05\"\n },\n {\n \"name\": \"Dakhlet Nouadhibou\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Mauritania_region_08\"\n },\n {\n \"name\": \"Gorgol\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Mauritania_region_04\"\n },\n {\n \"name\": \"Guidimaka\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Mauritania_region_10\"\n },\n {\n \"name\": \"Hodh Ech Chargui\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Mauritania_region_01\"\n },\n {\n \"name\": \"Hodh El Gharbi\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Mauritania_region_02\"\n },\n {\n \"name\": \"Inchiri\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Mauritania_region_12\"\n },\n {\n \"name\": \"Nouakchott Nord\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Mauritania_region_14\"\n },\n {\n \"name\": \"Nouakchott Ouest\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Mauritania_region_13\"\n },\n {\n \"name\": \"Nouakchott Sud\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Mauritania_region_15\"\n },\n {\n \"name\": \"Tagant\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Mauritania_region_09\"\n },\n {\n \"name\": \"Tiris Zemmour\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Mauritania_region_11\"\n },\n {\n \"name\": \"Trarza\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Mauritania_region_06\"\n }\n ],\n \"translationKey\": \"country_name_Mauritania\"\n },\n {\n \"countryName\": \"Mauritius\",\n \"countryShortCode\": \"MU\",\n \"regions\": [\n {\n \"name\": \"Agalega Islands\",\n \"shortCode\": \"AG\",\n \"translationKey\": \"Mauritius_region_AG\"\n },\n {\n \"name\": \"Beau Bassin-Rose Hill\",\n \"shortCode\": \"BR\",\n \"translationKey\": \"Mauritius_region_BR\"\n },\n {\n \"name\": \"Black River\",\n \"shortCode\": \"BL\",\n \"translationKey\": \"Mauritius_region_BL\"\n },\n {\n \"name\": \"Cargados Carajos Shoals\",\n \"shortCode\": \"CC\",\n \"translationKey\": \"Mauritius_region_CC\"\n },\n {\n \"name\": \"Curepipe\",\n \"shortCode\": \"CU\",\n \"translationKey\": \"Mauritius_region_CU\"\n },\n {\n \"name\": \"Flacq\",\n \"shortCode\": \"FL\",\n \"translationKey\": \"Mauritius_region_FL\"\n },\n {\n \"name\": \"Grand Port\",\n \"shortCode\": \"GP\",\n \"translationKey\": \"Mauritius_region_GP\"\n },\n {\n \"name\": \"Moka\",\n \"shortCode\": \"MO\",\n \"translationKey\": \"Mauritius_region_MO\"\n },\n {\n \"name\": \"Pamplemousses\",\n \"shortCode\": \"PA\",\n \"translationKey\": \"Mauritius_region_PA\"\n },\n {\n \"name\": \"Plaines Wilhems\",\n \"shortCode\": \"PW\",\n \"translationKey\": \"Mauritius_region_PW\"\n },\n {\n \"name\": \"Port Louis (City)\",\n \"shortCode\": \"PU\",\n \"translationKey\": \"Mauritius_region_PU\"\n },\n {\n \"name\": \"Port Louis\",\n \"shortCode\": \"PL\",\n \"translationKey\": \"Mauritius_region_PL\"\n },\n {\n \"name\": \"Riviere du Rempart\",\n \"shortCode\": \"RR\",\n \"translationKey\": \"Mauritius_region_RR\"\n },\n {\n \"name\": \"Rodrigues Island\",\n \"shortCode\": \"RO\",\n \"translationKey\": \"Mauritius_region_RO\"\n },\n {\n \"name\": \"Savanne\",\n \"shortCode\": \"SA\",\n \"translationKey\": \"Mauritius_region_SA\"\n },\n {\n \"name\": \"Vacoas-Phoenix\",\n \"shortCode\": \"CP\",\n \"translationKey\": \"Mauritius_region_CP\"\n }\n ],\n \"translationKey\": \"country_name_Mauritius\"\n },\n {\n \"countryName\": \"Mexico\",\n \"translationKey\": \"country_name_mexico\",\n \"countryShortCode\": \"MX\",\n \"regions\": [\n {\n \"name\": \"Aguascalientes\",\n \"translationKey\": \"mexico_region_name_agu\",\n \"shortCode\": \"AGU\"\n },\n {\n \"name\": \"Baja California\",\n \"translationKey\": \"mexico_region_name_bcn\",\n \"shortCode\": \"BCN\"\n },\n {\n \"name\": \"Baja California Sur\",\n \"translationKey\": \"mexico_region_name_bcs\",\n \"shortCode\": \"BCS\"\n },\n {\n \"name\": \"Campeche\",\n \"translationKey\": \"mexico_region_name_cam\",\n \"shortCode\": \"CAM\"\n },\n {\n \"name\": \"Ciudad de México\",\n \"translationKey\": \"mexico_region_name_dif\",\n \"shortCode\": \"DIF\"\n },\n {\n \"name\": \"Chiapas\",\n \"translationKey\": \"mexico_region_name_chp\",\n \"shortCode\": \"CHP\"\n },\n {\n \"name\": \"Chihuahua\",\n \"translationKey\": \"mexico_region_name_chh\",\n \"shortCode\": \"CHH\"\n },\n {\n \"name\": \"Coahuila de Zaragoza\",\n \"translationKey\": \"mexico_region_name_coa\",\n \"shortCode\": \"COA\"\n },\n {\n \"name\": \"Colima\",\n \"translationKey\": \"mexico_region_name_col\",\n \"shortCode\": \"COL\"\n },\n {\n \"name\": \"Durango\",\n \"translationKey\": \"mexico_region_name_dur\",\n \"shortCode\": \"DUR\"\n },\n {\n \"name\": \"Estado de México\",\n \"translationKey\": \"mexico_region_name_mex\",\n \"shortCode\": \"MEX\"\n },\n {\n \"name\": \"Guanajuato\",\n \"translationKey\": \"mexico_region_name_gua\",\n \"shortCode\": \"GUA\"\n },\n {\n \"name\": \"Guerrero\",\n \"translationKey\": \"mexico_region_name_gro\",\n \"shortCode\": \"GRO\"\n },\n {\n \"name\": \"Hidalgo\",\n \"translationKey\": \"mexico_region_name_hid\",\n \"shortCode\": \"HID\"\n },\n {\n \"name\": \"Jalisco\",\n \"translationKey\": \"mexico_region_name_jal\",\n \"shortCode\": \"JAL\"\n },\n {\n \"name\": \"Michoacán de Ocampo\",\n \"translationKey\": \"mexico_region_name_mic\",\n \"shortCode\": \"MIC\"\n },\n {\n \"name\": \"Morelos\",\n \"translationKey\": \"mexico_region_name_mor\",\n \"shortCode\": \"MOR\"\n },\n {\n \"name\": \"Nayarit\",\n \"translationKey\": \"mexico_region_name_nay\",\n \"shortCode\": \"NAY\"\n },\n {\n \"name\": \"Nuevo León\",\n \"translationKey\": \"mexico_region_name_nle\",\n \"shortCode\": \"NLE\"\n },\n {\n \"name\": \"Oaxaca\",\n \"translationKey\": \"mexico_region_name_oax\",\n \"shortCode\": \"OAX\"\n },\n {\n \"name\": \"Puebla\",\n \"translationKey\": \"mexico_region_name_pue\",\n \"shortCode\": \"PUE\"\n },\n {\n \"name\": \"Querétaro de Arteaga\",\n \"translationKey\": \"mexico_region_name_que\",\n \"shortCode\": \"QUE\"\n },\n {\n \"name\": \"Quintana Roo\",\n \"translationKey\": \"mexico_region_name_roo\",\n \"shortCode\": \"ROO\"\n },\n {\n \"name\": \"San Luis Potosí\",\n \"translationKey\": \"mexico_region_name_slp\",\n \"shortCode\": \"SLP\"\n },\n {\n \"name\": \"Sinaloa\",\n \"translationKey\": \"mexico_region_name_sin\",\n \"shortCode\": \"SIN\"\n },\n {\n \"name\": \"Sonora\",\n \"translationKey\": \"mexico_region_name_son\",\n \"shortCode\": \"SON\"\n },\n {\n \"name\": \"Tabasco\",\n \"translationKey\": \"mexico_region_name_tab\",\n \"shortCode\": \"TAB\"\n },\n {\n \"name\": \"Tamaulipas\",\n \"translationKey\": \"mexico_region_name_tam\",\n \"shortCode\": \"TAM\"\n },\n {\n \"name\": \"Tlaxcala\",\n \"translationKey\": \"mexico_region_name_tla\",\n \"shortCode\": \"TLA\"\n },\n {\n \"name\": \"Veracruz\",\n \"translationKey\": \"mexico_region_name_ver\",\n \"shortCode\": \"VER\"\n },\n {\n \"name\": \"Yucatán\",\n \"translationKey\": \"mexico_region_name_yuc\",\n \"shortCode\": \"YUC\"\n },\n {\n \"name\": \"Zacatecas\",\n \"translationKey\": \"mexico_region_name_zac\",\n \"shortCode\": \"ZAC\"\n }\n ]\n },\n {\n \"countryName\": \"Moldova\",\n \"countryShortCode\": \"MD\",\n \"regions\": [\n {\n \"name\": \"Aenii Noi\",\n \"shortCode\": \"AN\",\n \"translationKey\": \"Moldova_region_AN\"\n },\n {\n \"name\": \"Basarabeasca\",\n \"shortCode\": \"BS\",\n \"translationKey\": \"Moldova_region_BS\"\n },\n {\n \"name\": \"Bălți\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Moldova_region_BA\"\n },\n {\n \"name\": \"Bender\",\n \"shortCode\": \"BD\",\n \"translationKey\": \"Moldova_region_BD\"\n },\n {\n \"name\": \"Briceni\",\n \"shortCode\": \"BR\",\n \"translationKey\": \"Moldova_region_BR\"\n },\n {\n \"name\": \"Cahul\",\n \"shortCode\": \"CA\",\n \"translationKey\": \"Moldova_region_CA\"\n },\n {\n \"name\": \"Cantemir\",\n \"shortCode\": \"CT\",\n \"translationKey\": \"Moldova_region_CT\"\n },\n {\n \"name\": \"Călărași\",\n \"shortCode\": \"CL\",\n \"translationKey\": \"Moldova_region_CL\"\n },\n {\n \"name\": \"Căușeni\",\n \"shortCode\": \"CS\",\n \"translationKey\": \"Moldova_region_CS\"\n },\n {\n \"name\": \"Chișinău\",\n \"shortCode\": \"CU\",\n \"translationKey\": \"Moldova_region_CU\"\n },\n {\n \"name\": \"Cimișlia\",\n \"shortCode\": \"CM\",\n \"translationKey\": \"Moldova_region_CM\"\n },\n {\n \"name\": \"Criuleni\",\n \"shortCode\": \"CR\",\n \"translationKey\": \"Moldova_region_CR\"\n },\n {\n \"name\": \"Dondușeni\",\n \"shortCode\": \"DO\",\n \"translationKey\": \"Moldova_region_DO\"\n },\n {\n \"name\": \"Drochia\",\n \"shortCode\": \"DR\",\n \"translationKey\": \"Moldova_region_DR\"\n },\n {\n \"name\": \"Dubăsari\",\n \"shortCode\": \"DU\",\n \"translationKey\": \"Moldova_region_DU\"\n },\n {\n \"name\": \"Edineț\",\n \"shortCode\": \"ED\",\n \"translationKey\": \"Moldova_region_ED\"\n },\n {\n \"name\": \"Fălești\",\n \"shortCode\": \"FA\",\n \"translationKey\": \"Moldova_region_FA\"\n },\n {\n \"name\": \"Florești\",\n \"shortCode\": \"FL\",\n \"translationKey\": \"Moldova_region_FL\"\n },\n {\n \"name\": \"Găgăuzia\",\n \"shortCode\": \"GA\",\n \"translationKey\": \"Moldova_region_GA\"\n },\n {\n \"name\": \"Glodeni\",\n \"shortCode\": \"GL\",\n \"translationKey\": \"Moldova_region_GL\"\n },\n {\n \"name\": \"Hîncești\",\n \"shortCode\": \"HI\",\n \"translationKey\": \"Moldova_region_HI\"\n },\n {\n \"name\": \"Ialoveni\",\n \"shortCode\": \"IA\",\n \"translationKey\": \"Moldova_region_IA\"\n },\n {\n \"name\": \"Leova\",\n \"shortCode\": \"LE\",\n \"translationKey\": \"Moldova_region_LE\"\n },\n {\n \"name\": \"Nisporeni\",\n \"shortCode\": \"NI\",\n \"translationKey\": \"Moldova_region_NI\"\n },\n {\n \"name\": \"Ocnița\",\n \"shortCode\": \"OC\",\n \"translationKey\": \"Moldova_region_OC\"\n },\n {\n \"name\": \"Orhei\",\n \"shortCode\": \"OR\",\n \"translationKey\": \"Moldova_region_OR\"\n },\n {\n \"name\": \"Rezina\",\n \"shortCode\": \"RE\",\n \"translationKey\": \"Moldova_region_RE\"\n },\n {\n \"name\": \"Rîșcani\",\n \"shortCode\": \"RI\",\n \"translationKey\": \"Moldova_region_RI\"\n },\n {\n \"name\": \"Sîngerei\",\n \"shortCode\": \"SI\",\n \"translationKey\": \"Moldova_region_SI\"\n },\n {\n \"name\": \"Soroca\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Moldova_region_SO\"\n },\n {\n \"name\": \"Stînga Nistrului\",\n \"shortCode\": \"SN\",\n \"translationKey\": \"Moldova_region_SN\"\n },\n {\n \"name\": \"Strășeni\",\n \"shortCode\": \"ST\",\n \"translationKey\": \"Moldova_region_ST\"\n },\n {\n \"name\": \"Șoldănești\",\n \"shortCode\": \"SD\",\n \"translationKey\": \"Moldova_region_SD\"\n },\n {\n \"name\": \"Ștefan Vodă\",\n \"shortCode\": \"SV\",\n \"translationKey\": \"Moldova_region_SV\"\n },\n {\n \"name\": \"Taraclia\",\n \"shortCode\": \"TA\",\n \"translationKey\": \"Moldova_region_TA\"\n },\n {\n \"name\": \"Telenești\",\n \"shortCode\": \"TE\",\n \"translationKey\": \"Moldova_region_TE\"\n },\n {\n \"name\": \"Ungheni\",\n \"shortCode\": \"UN\",\n \"translationKey\": \"Moldova_region_UN\"\n }\n ],\n \"translationKey\": \"country_name_Moldova\"\n },\n {\n \"countryName\": \"Mongolia\",\n \"countryShortCode\": \"MN\",\n \"regions\": [\n {\n \"name\": \"Arhangay\",\n \"shortCode\": \"073\",\n \"translationKey\": \"Mongolia_region_073\"\n },\n {\n \"name\": \"Bayan-Olgiy\",\n \"shortCode\": \"071\",\n \"translationKey\": \"Mongolia_region_071\"\n },\n {\n \"name\": \"Bayanhongor\",\n \"shortCode\": \"069\",\n \"translationKey\": \"Mongolia_region_069\"\n },\n {\n \"name\": \"Bulgan\",\n \"shortCode\": \"067\",\n \"translationKey\": \"Mongolia_region_067\"\n },\n {\n \"name\": \"Darhan\",\n \"shortCode\": \"037\",\n \"translationKey\": \"Mongolia_region_037\"\n },\n {\n \"name\": \"Dornod\",\n \"shortCode\": \"061\",\n \"translationKey\": \"Mongolia_region_061\"\n },\n {\n \"name\": \"Dornogovi\",\n \"shortCode\": \"063\",\n \"translationKey\": \"Mongolia_region_063\"\n },\n {\n \"name\": \"Dundgovi\",\n \"shortCode\": \"059\",\n \"translationKey\": \"Mongolia_region_059\"\n },\n {\n \"name\": \"Dzavhan\",\n \"shortCode\": \"057\",\n \"translationKey\": \"Mongolia_region_057\"\n },\n {\n \"name\": \"Govi-Altay\",\n \"shortCode\": \"065\",\n \"translationKey\": \"Mongolia_region_065\"\n },\n {\n \"name\": \"Govi-Sumber\",\n \"shortCode\": \"064\",\n \"translationKey\": \"Mongolia_region_064\"\n },\n {\n \"name\": \"Hovd\",\n \"shortCode\": \"043\",\n \"translationKey\": \"Mongolia_region_043\"\n },\n {\n \"name\": \"Hovsgol\",\n \"shortCode\": \"041\",\n \"translationKey\": \"Mongolia_region_041\"\n },\n {\n \"name\": \"Omnogovi\",\n \"shortCode\": \"053\",\n \"translationKey\": \"Mongolia_region_053\"\n },\n {\n \"name\": \"Ovorhangay\",\n \"shortCode\": \"055\",\n \"translationKey\": \"Mongolia_region_055\"\n },\n {\n \"name\": \"Selenge\",\n \"shortCode\": \"049\",\n \"translationKey\": \"Mongolia_region_049\"\n },\n {\n \"name\": \"Suhbaatar\",\n \"shortCode\": \"051\",\n \"translationKey\": \"Mongolia_region_051\"\n },\n {\n \"name\": \"Tov\",\n \"shortCode\": \"047\",\n \"translationKey\": \"Mongolia_region_047\"\n },\n {\n \"name\": \"Ulaanbaatar\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Mongolia_region_1\"\n },\n {\n \"name\": \"Uvs\",\n \"shortCode\": \"046\",\n \"translationKey\": \"Mongolia_region_046\"\n }\n ],\n \"translationKey\": \"country_name_Mongolia\"\n },\n {\n \"countryName\": \"Morocco\",\n \"countryShortCode\": \"MA\",\n \"regions\": [\n {\n \"name\": \"Tanger-Tétouan-Al Hoceïma\",\n \"code\": \"MA-01\",\n \"translationKey\": \"Morocco_region_Tanger-Tétouan-Al Hoceïma\"\n },\n {\n \"name\": \"L'Oriental\",\n \"code\": \"MA-02\",\n \"translationKey\": \"Morocco_region_L'Oriental\"\n },\n {\n \"name\": \"Fès-Meknès\",\n \"code\": \"MA-03\",\n \"translationKey\": \"Morocco_region_Fès-Meknès\"\n },\n {\n \"name\": \"Rabat-Salé-Kénitra\",\n \"code\": \"MA-04\",\n \"translationKey\": \"Morocco_region_Rabat-Salé-Kénitra\"\n },\n {\n \"name\": \"Béni Mellal-Khénifra\",\n \"code\": \"MA-05\",\n \"translationKey\": \"Morocco_region_Béni Mellal-Khénifra\"\n },\n {\n \"name\": \"Casablanca-Settat\",\n \"code\": \"MA-06\",\n \"translationKey\": \"Morocco_region_Casablanca-Settat\"\n },\n {\n \"name\": \"Marrakech-Safi\",\n \"code\": \"MA-07\",\n \"translationKey\": \"Morocco_region_Marrakech-Safi\"\n },\n {\n \"name\": \"Drâa-Tafilalet\",\n \"code\": \"MA-08\",\n \"translationKey\": \"Morocco_region_Drâa-Tafilalet\"\n },\n {\n \"name\": \"Souss-Massa\",\n \"code\": \"MA-09\",\n \"translationKey\": \"Morocco_region_Souss-Massa\"\n },\n {\n \"name\": \"Guelmim-Oued Noun\",\n \"code\": \"MA-10\",\n \"translationKey\": \"Morocco_region_Guelmim-Oued Noun\"\n },\n {\n \"name\": \"Laâyoune-Sakia El Hamra\",\n \"code\": \"MA-11\",\n \"translationKey\": \"Morocco_region_Laâyoune-Sakia El Hamra\"\n },\n {\n \"name\": \"Dakhla-Oued Ed-Dahab\",\n \"code\": \"MA-12\",\n \"translationKey\": \"Morocco_region_Dakhla-Oued Ed-Dahab\"\n }\n ],\n \"translationKey\": \"country_name_Morocco\"\n },\n {\n \"countryName\": \"Mozambique\",\n \"countryShortCode\": \"MZ\",\n \"regions\": [\n {\n \"name\": \"Cabo Delgado\",\n \"shortCode\": \"P\",\n \"translationKey\": \"Mozambique_region_P\"\n },\n {\n \"name\": \"Gaza\",\n \"shortCode\": \"G\",\n \"translationKey\": \"Mozambique_region_G\"\n },\n {\n \"name\": \"Inhambane\",\n \"shortCode\": \"I\",\n \"translationKey\": \"Mozambique_region_I\"\n },\n {\n \"name\": \"Manica\",\n \"shortCode\": \"B\",\n \"translationKey\": \"Mozambique_region_B\"\n },\n {\n \"name\": \"Maputo\",\n \"shortCode\": \"L\",\n \"translationKey\": \"Mozambique_region_L\"\n },\n {\n \"name\": \"Maputo (City)\",\n \"shortCode\": \"MPM\",\n \"translationKey\": \"Mozambique_region_MPM\"\n },\n {\n \"name\": \"Nampula\",\n \"shortCode\": \"N\",\n \"translationKey\": \"Mozambique_region_N\"\n },\n {\n \"name\": \"Niassa\",\n \"shortCode\": \"A\",\n \"translationKey\": \"Mozambique_region_A\"\n },\n {\n \"name\": \"Sofala\",\n \"shortCode\": \"S\",\n \"translationKey\": \"Mozambique_region_S\"\n },\n {\n \"name\": \"Tete\",\n \"shortCode\": \"T\",\n \"translationKey\": \"Mozambique_region_T\"\n },\n {\n \"name\": \"Zambezia\",\n \"shortCode\": \"Q\",\n \"translationKey\": \"Mozambique_region_Q\"\n }\n ],\n \"translationKey\": \"country_name_Mozambique\"\n },\n {\n \"countryName\": \"Namibia\",\n \"countryShortCode\": \"NA\",\n \"regions\": [\n {\n \"name\": \"Erongo\",\n \"shortCode\": \"ER\",\n \"translationKey\": \"Namibia_region_ER\"\n },\n {\n \"name\": \"Hardap\",\n \"shortCode\": \"HA\",\n \"translationKey\": \"Namibia_region_HA\"\n },\n {\n \"name\": \"Kavango East\",\n \"shortCode\": \"KE\",\n \"translationKey\": \"Namibia_region_KE\"\n },\n {\n \"name\": \"Kavango West\",\n \"shortCode\": \"KW\",\n \"translationKey\": \"Namibia_region_KW\"\n },\n {\n \"name\": \"Karas\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Namibia_region_KA\"\n },\n {\n \"name\": \"Khomas\",\n \"shortCode\": \"KH\",\n \"translationKey\": \"Namibia_region_KH\"\n },\n {\n \"name\": \"Kunene\",\n \"shortCode\": \"KU\",\n \"translationKey\": \"Namibia_region_KU\"\n },\n {\n \"name\": \"Ohangwena\",\n \"shortCode\": \"OW\",\n \"translationKey\": \"Namibia_region_OW\"\n },\n {\n \"name\": \"Omaheke\",\n \"shortCode\": \"OH\",\n \"translationKey\": \"Namibia_region_OH\"\n },\n {\n \"name\": \"Omusati\",\n \"shortCode\": \"OS\",\n \"translationKey\": \"Namibia_region_OS\"\n },\n {\n \"name\": \"Oshana\",\n \"shortCode\": \"ON\",\n \"translationKey\": \"Namibia_region_ON\"\n },\n {\n \"name\": \"Oshikoto\",\n \"shortCode\": \"OT\",\n \"translationKey\": \"Namibia_region_OT\"\n },\n {\n \"name\": \"Otjozondjupa\",\n \"shortCode\": \"OD\",\n \"translationKey\": \"Namibia_region_OD\"\n },\n {\n \"name\": \"Zambezi\",\n \"shortCode\": \"CA\",\n \"translationKey\": \"Namibia_region_CA\"\n }\n ],\n \"translationKey\": \"country_name_Namibia\"\n },\n {\n \"countryName\": \"Netherlands\",\n \"translationKey\": \"country_name_netherlands\",\n \"countryShortCode\": \"NL\",\n \"regions\": [\n {\n \"name\": \"Drenthe\",\n \"translationKey\": \"netherlands_region_name_dr\",\n \"shortCode\": \"DR\"\n },\n {\n \"name\": \"Flevoland\",\n \"translationKey\": \"netherlands_region_name_fl\",\n \"shortCode\": \"FL\"\n },\n {\n \"name\": \"Friesland\",\n \"translationKey\": \"netherlands_region_name_fr\",\n \"shortCode\": \"FR\"\n },\n {\n \"name\": \"Gelderland\",\n \"translationKey\": \"netherlands_region_name_ge\",\n \"shortCode\": \"GE\"\n },\n {\n \"name\": \"Groningen\",\n \"translationKey\": \"netherlands_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Limburg\",\n \"translationKey\": \"netherlands_region_name_li\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Noord-Brabant\",\n \"translationKey\": \"netherlands_region_name_nb\",\n \"shortCode\": \"NB\"\n },\n {\n \"name\": \"Noord-Holland\",\n \"translationKey\": \"netherlands_region_name_nh\",\n \"shortCode\": \"NH\"\n },\n {\n \"name\": \"Overijssel\",\n \"translationKey\": \"netherlands_region_name_ov\",\n \"shortCode\": \"OV\"\n },\n {\n \"name\": \"Utrecht\",\n \"translationKey\": \"netherlands_region_name_ut\",\n \"shortCode\": \"UT\"\n },\n {\n \"name\": \"Zeeland\",\n \"translationKey\": \"netherlands_region_name_ze\",\n \"shortCode\": \"ZE\"\n },\n {\n \"name\": \"Zuid-Holland\",\n \"translationKey\": \"netherlands_region_name_zh\",\n \"shortCode\": \"ZH\"\n }\n ]\n },\n {\n \"countryName\": \"New Caledonia\",\n \"countryShortCode\": \"NC\",\n \"regions\": [\n {\n \"name\": \"Iles Loyaute\",\n \"translationKey\": \"New Caledonia_region_Iles Loyaute\"\n },\n {\n \"name\": \"Nord\",\n \"translationKey\": \"New Caledonia_region_Nord\"\n },\n {\n \"name\": \"Sud\",\n \"translationKey\": \"New Caledonia_region_Sud\"\n }\n ],\n \"translationKey\": \"country_name_New Caledonia\"\n },\n {\n \"countryName\": \"New Zealand\",\n \"translationKey\": \"country_name_new_zealand\",\n \"countryShortCode\": \"NZ\",\n \"regions\": [\n {\n \"name\": \"Auckland\",\n \"translationKey\": \"new_zealand_region_name_auk\",\n \"shortCode\": \"AUK\"\n },\n {\n \"name\": \"Bay of Plenty\",\n \"translationKey\": \"new_zealand_region_name_bop\",\n \"shortCode\": \"BOP\"\n },\n {\n \"name\": \"Canterbury\",\n \"translationKey\": \"new_zealand_region_name_can\",\n \"shortCode\": \"CAN\"\n },\n {\n \"name\": \"Gisborne\",\n \"translationKey\": \"new_zealand_region_name_gis\",\n \"shortCode\": \"GIS\"\n },\n {\n \"name\": \"Hawke's Bay\",\n \"translationKey\": \"new_zealand_region_name_hkb\",\n \"shortCode\": \"HKB\"\n },\n {\n \"name\": \"Marlborough\",\n \"translationKey\": \"new_zealand_region_name_mbh\",\n \"shortCode\": \"MBH\"\n },\n {\n \"name\": \"Manawatu-Wanganui\",\n \"translationKey\": \"new_zealand_region_name_mwt\",\n \"shortCode\": \"MWT\"\n },\n {\n \"name\": \"Northland\",\n \"translationKey\": \"new_zealand_region_name_ntl\",\n \"shortCode\": \"NTL\"\n },\n {\n \"name\": \"Nelson\",\n \"translationKey\": \"new_zealand_region_name_nsn\",\n \"shortCode\": \"NSN\"\n },\n {\n \"name\": \"Otago\",\n \"translationKey\": \"new_zealand_region_name_ota\",\n \"shortCode\": \"OTA\"\n },\n {\n \"name\": \"Southland\",\n \"translationKey\": \"new_zealand_region_name_stl\",\n \"shortCode\": \"STL\"\n },\n {\n \"name\": \"Taranaki\",\n \"translationKey\": \"new_zealand_region_name_tki\",\n \"shortCode\": \"TKI\"\n },\n {\n \"name\": \"Tasman\",\n \"translationKey\": \"new_zealand_region_name_tas\",\n \"shortCode\": \"TAS\"\n },\n {\n \"name\": \"Waikato\",\n \"translationKey\": \"new_zealand_region_name_wko\",\n \"shortCode\": \"WKO\"\n },\n {\n \"name\": \"Wellington\",\n \"translationKey\": \"new_zealand_region_name_wgn\",\n \"shortCode\": \"WGN\"\n },\n {\n \"name\": \"West Coast\",\n \"translationKey\": \"new_zealand_region_name_wtc\",\n \"shortCode\": \"WTC\"\n },\n {\n \"name\": \"Chatham Islands Territory\",\n \"translationKey\": \"new_zealand_region_name_cit\",\n \"shortCode\": \"CIT\"\n }\n ]\n },\n {\n \"countryName\": \"Niger\",\n \"countryShortCode\": \"NE\",\n \"regions\": [\n {\n \"name\": \"Agadez\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Niger_region_1\"\n },\n {\n \"name\": \"Diffa\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Niger_region_2\"\n },\n {\n \"name\": \"Dosso\",\n \"shortCode\": \"3\",\n \"translationKey\": \"Niger_region_3\"\n },\n {\n \"name\": \"Maradi\",\n \"shortCode\": \"4\",\n \"translationKey\": \"Niger_region_4\"\n },\n {\n \"name\": \"Niamey\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Niger_region_8\"\n },\n {\n \"name\": \"Tahoua\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Niger_region_5\"\n },\n {\n \"name\": \"Tillabéri\",\n \"shortCode\": \"6\",\n \"translationKey\": \"Niger_region_6\"\n },\n {\n \"name\": \"Zinder\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Niger_region_7\"\n }\n ],\n \"translationKey\": \"country_name_Niger\"\n },\n {\n \"countryName\": \"Nigeria\",\n \"countryShortCode\": \"NG\",\n \"regions\": [\n {\n \"name\": \"Abia\",\n \"shortCode\": \"AB\",\n \"translationKey\": \"Nigeria_region_AB\"\n },\n {\n \"name\": \"Abuja Federal Capital Territory\",\n \"shortCode\": \"FC\",\n \"translationKey\": \"Nigeria_region_FC\"\n },\n {\n \"name\": \"Adamawa\",\n \"shortCode\": \"AD\",\n \"translationKey\": \"Nigeria_region_AD\"\n },\n {\n \"name\": \"Akwa Ibom\",\n \"shortCode\": \"AK\",\n \"translationKey\": \"Nigeria_region_AK\"\n },\n {\n \"name\": \"Anambra\",\n \"shortCode\": \"AN\",\n \"translationKey\": \"Nigeria_region_AN\"\n },\n {\n \"name\": \"Bauchi\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Nigeria_region_BA\"\n },\n {\n \"name\": \"Bayelsa\",\n \"shortCode\": \"BY\",\n \"translationKey\": \"Nigeria_region_BY\"\n },\n {\n \"name\": \"Benue\",\n \"shortCode\": \"BE\",\n \"translationKey\": \"Nigeria_region_BE\"\n },\n {\n \"name\": \"Borno\",\n \"shortCode\": \"BO\",\n \"translationKey\": \"Nigeria_region_BO\"\n },\n {\n \"name\": \"Cross River\",\n \"shortCode\": \"CR\",\n \"translationKey\": \"Nigeria_region_CR\"\n },\n {\n \"name\": \"Delta\",\n \"shortCode\": \"DE\",\n \"translationKey\": \"Nigeria_region_DE\"\n },\n {\n \"name\": \"Ebonyi\",\n \"shortCode\": \"EB\",\n \"translationKey\": \"Nigeria_region_EB\"\n },\n {\n \"name\": \"Edo\",\n \"shortCode\": \"ED\",\n \"translationKey\": \"Nigeria_region_ED\"\n },\n {\n \"name\": \"Ekiti\",\n \"shortCode\": \"EK\",\n \"translationKey\": \"Nigeria_region_EK\"\n },\n {\n \"name\": \"Enugu\",\n \"shortCode\": \"EN\",\n \"translationKey\": \"Nigeria_region_EN\"\n },\n {\n \"name\": \"Gombe\",\n \"shortCode\": \"GO\",\n \"translationKey\": \"Nigeria_region_GO\"\n },\n {\n \"name\": \"Imo\",\n \"shortCode\": \"IM\",\n \"translationKey\": \"Nigeria_region_IM\"\n },\n {\n \"name\": \"Jigawa\",\n \"shortCode\": \"JI\",\n \"translationKey\": \"Nigeria_region_JI\"\n },\n {\n \"name\": \"Kaduna\",\n \"shortCode\": \"KD\",\n \"translationKey\": \"Nigeria_region_KD\"\n },\n {\n \"name\": \"Kano\",\n \"shortCode\": \"KN\",\n \"translationKey\": \"Nigeria_region_KN\"\n },\n {\n \"name\": \"Katsina\",\n \"shortCode\": \"KT\",\n \"translationKey\": \"Nigeria_region_KT\"\n },\n {\n \"name\": \"Kebbi\",\n \"shortCode\": \"KE\",\n \"translationKey\": \"Nigeria_region_KE\"\n },\n {\n \"name\": \"Kogi\",\n \"shortCode\": \"KO\",\n \"translationKey\": \"Nigeria_region_KO\"\n },\n {\n \"name\": \"Kwara\",\n \"shortCode\": \"KW\",\n \"translationKey\": \"Nigeria_region_KW\"\n },\n {\n \"name\": \"Lagos\",\n \"shortCode\": \"LA\",\n \"translationKey\": \"Nigeria_region_LA\"\n },\n {\n \"name\": \"Nassarawa\",\n \"shortCode\": \"NA\",\n \"translationKey\": \"Nigeria_region_NA\"\n },\n {\n \"name\": \"Niger\",\n \"shortCode\": \"NI\",\n \"translationKey\": \"Nigeria_region_NI\"\n },\n {\n \"name\": \"Ogun\",\n \"shortCode\": \"OG\",\n \"translationKey\": \"Nigeria_region_OG\"\n },\n {\n \"name\": \"Ondo\",\n \"shortCode\": \"ON\",\n \"translationKey\": \"Nigeria_region_ON\"\n },\n {\n \"name\": \"Osun\",\n \"shortCode\": \"OS\",\n \"translationKey\": \"Nigeria_region_OS\"\n },\n {\n \"name\": \"Oyo\",\n \"shortCode\": \"OY\",\n \"translationKey\": \"Nigeria_region_OY\"\n },\n {\n \"name\": \"Plateau\",\n \"shortCode\": \"PL\",\n \"translationKey\": \"Nigeria_region_PL\"\n },\n {\n \"name\": \"Rivers\",\n \"shortCode\": \"RI\",\n \"translationKey\": \"Nigeria_region_RI\"\n },\n {\n \"name\": \"Sokoto\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Nigeria_region_SO\"\n },\n {\n \"name\": \"Taraba\",\n \"shortCode\": \"TA\",\n \"translationKey\": \"Nigeria_region_TA\"\n },\n {\n \"name\": \"Yobe\",\n \"shortCode\": \"YO\",\n \"translationKey\": \"Nigeria_region_YO\"\n },\n {\n \"name\": \"Zamfara\",\n \"shortCode\": \"ZA\",\n \"translationKey\": \"Nigeria_region_ZA\"\n }\n ],\n \"translationKey\": \"country_name_Nigeria\"\n },\n {\n \"countryName\": \"Norway\",\n \"countryShortCode\": \"NO\",\n \"regions\": [\n {\n \"name\": \"Akershus\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Norway_region_02\"\n },\n {\n \"name\": \"Aust-Agder\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Norway_region_09\"\n },\n {\n \"name\": \"Buskerud\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Norway_region_06\"\n },\n {\n \"name\": \"Finnmark\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Norway_region_20\"\n },\n {\n \"name\": \"Hedmark\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Norway_region_04\"\n },\n {\n \"name\": \"Hordaland\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Norway_region_12\"\n },\n {\n \"name\": \"Møre og Romsdal\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Norway_region_15\"\n },\n {\n \"name\": \"Nordland\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Norway_region_18\"\n },\n {\n \"name\": \"Nord-Trøndelag\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Norway_region_17\"\n },\n {\n \"name\": \"Oppland\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Norway_region_05\"\n },\n {\n \"name\": \"Oslo\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Norway_region_03\"\n },\n {\n \"name\": \"Rogaland\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Norway_region_11\"\n },\n {\n \"name\": \"Sogn og Fjordane\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Norway_region_14\"\n },\n {\n \"name\": \"Sør-Trøndelag\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Norway_region_16\"\n },\n {\n \"name\": \"Telemark\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Norway_region_08\"\n },\n {\n \"name\": \"Troms\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Norway_region_19\"\n },\n {\n \"name\": \"Vest-Agder\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Norway_region_10\"\n },\n {\n \"name\": \"Vestfold\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Norway_region_07\"\n },\n {\n \"name\": \"Østfold\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Norway_region_01\"\n },\n {\n \"name\": \"Jan Mayen\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Norway_region_22\"\n },\n {\n \"name\": \"Svalbard\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Norway_region_21\"\n }\n ],\n \"translationKey\": \"country_name_Norway\"\n },\n {\n \"countryName\": \"Oman\",\n \"countryShortCode\": \"OM\",\n \"regions\": [\n {\n \"name\": \"Ad Dakhiliyah\",\n \"shortCode\": \"DA\",\n \"translationKey\": \"Oman_region_DA\"\n },\n {\n \"name\": \"Al Buraymi\",\n \"shortCode\": \"BU\",\n \"translationKey\": \"Oman_region_BU\"\n },\n {\n \"name\": \"Al Wusta\",\n \"shortCode\": \"WU\",\n \"translationKey\": \"Oman_region_WU\"\n },\n {\n \"name\": \"Az Zahirah\",\n \"shortCode\": \"ZA\",\n \"translationKey\": \"Oman_region_ZA\"\n },\n {\n \"name\": \"Janub al Batinah\",\n \"shortCode\": \"BS\",\n \"translationKey\": \"Oman_region_BS\"\n },\n {\n \"name\": \"Janub ash Sharqiyah\",\n \"shortCode\": \"SS\",\n \"translationKey\": \"Oman_region_SS\"\n },\n {\n \"name\": \"Masqat\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Oman_region_MA\"\n },\n {\n \"name\": \"Musandam\",\n \"shortCode\": \"MU\",\n \"translationKey\": \"Oman_region_MU\"\n },\n {\n \"name\": \"Shamal al Batinah\",\n \"shortCode\": \"BJ\",\n \"translationKey\": \"Oman_region_BJ\"\n },\n {\n \"name\": \"Shamal ash Sharqiyah\",\n \"shortCode\": \"SJ\",\n \"translationKey\": \"Oman_region_SJ\"\n },\n {\n \"name\": \"Zufar\",\n \"shortCode\": \"ZU\",\n \"translationKey\": \"Oman_region_ZU\"\n }\n ],\n \"translationKey\": \"country_name_Oman\"\n },\n {\n \"countryName\": \"Panama\",\n \"countryShortCode\": \"PA\",\n \"regions\": [\n {\n \"name\": \"Bocas del Toro\",\n \"shortCode\": \"1\",\n \"translationKey\": \"Panama_region_1\"\n },\n {\n \"name\": \"Chiriquí\",\n \"shortCode\": \"4\",\n \"translationKey\": \"Panama_region_4\"\n },\n {\n \"name\": \"Coclé\",\n \"shortCode\": \"2\",\n \"translationKey\": \"Panama_region_2\"\n },\n {\n \"name\": \"Colón\",\n \"shortCode\": \"3\",\n \"translationKey\": \"Panama_region_3\"\n },\n {\n \"name\": \"Darién\",\n \"shortCode\": \"5\",\n \"translationKey\": \"Panama_region_5\"\n },\n {\n \"name\": \"Emberá\",\n \"shortCode\": \"EM\",\n \"translationKey\": \"Panama_region_EM\"\n },\n {\n \"name\": \"Herrera\",\n \"shortCode\": \"6\",\n \"translationKey\": \"Panama_region_6\"\n },\n {\n \"name\": \"Kuna Yala\",\n \"shortCode\": \"KY\",\n \"translationKey\": \"Panama_region_KY\"\n },\n {\n \"name\": \"Los Santos\",\n \"shortCode\": \"7\",\n \"translationKey\": \"Panama_region_7\"\n },\n {\n \"name\": \"Ngäbe-Buglé\",\n \"shortCode\": \"NB\",\n \"translationKey\": \"Panama_region_NB\"\n },\n {\n \"name\": \"Panamá\",\n \"shortCode\": \"8\",\n \"translationKey\": \"Panama_region_8\"\n },\n {\n \"name\": \"Panamá Oeste\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Panama_region_10\"\n },\n {\n \"name\": \"Veraguas\",\n \"shortCode\": \"9\",\n \"translationKey\": \"Panama_region_9\"\n }\n ],\n \"translationKey\": \"country_name_Panama\"\n },\n {\n \"countryName\": \"Peru\",\n \"countryShortCode\": \"PE\",\n \"regions\": [\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AMA\",\n \"translationKey\": \"Peru_region_AMA\"\n },\n {\n \"name\": \"Ancash\",\n \"shortCode\": \"ANC\",\n \"translationKey\": \"Peru_region_ANC\"\n },\n {\n \"name\": \"Apurimac\",\n \"shortCode\": \"APU\",\n \"translationKey\": \"Peru_region_APU\"\n },\n {\n \"name\": \"Arequipa\",\n \"shortCode\": \"ARE\",\n \"translationKey\": \"Peru_region_ARE\"\n },\n {\n \"name\": \"Ayacucho\",\n \"shortCode\": \"AYA\",\n \"translationKey\": \"Peru_region_AYA\"\n },\n {\n \"name\": \"Cajamarca\",\n \"shortCode\": \"CAJ\",\n \"translationKey\": \"Peru_region_CAJ\"\n },\n {\n \"name\": \"Callao\",\n \"shortCode\": \"CAL\",\n \"translationKey\": \"Peru_region_CAL\"\n },\n {\n \"name\": \"Cusco\",\n \"shortCode\": \"CUS\",\n \"translationKey\": \"Peru_region_CUS\"\n },\n {\n \"name\": \"Huancavelica\",\n \"shortCode\": \"HUV\",\n \"translationKey\": \"Peru_region_HUV\"\n },\n {\n \"name\": \"Huanuco\",\n \"shortCode\": \"HUC\",\n \"translationKey\": \"Peru_region_HUC\"\n },\n {\n \"name\": \"Ica\",\n \"shortCode\": \"ICA\",\n \"translationKey\": \"Peru_region_ICA\"\n },\n {\n \"name\": \"Junin\",\n \"shortCode\": \"JUN\",\n \"translationKey\": \"Peru_region_JUN\"\n },\n {\n \"name\": \"La Libertad\",\n \"shortCode\": \"LAL\",\n \"translationKey\": \"Peru_region_LAL\"\n },\n {\n \"name\": \"Lambayeque\",\n \"shortCode\": \"LAM\",\n \"translationKey\": \"Peru_region_LAM\"\n },\n {\n \"name\": \"Lima\",\n \"shortCode\": \"LIM\",\n \"translationKey\": \"Peru_region_LIM\"\n },\n {\n \"name\": \"Loreto\",\n \"shortCode\": \"LOR\",\n \"translationKey\": \"Peru_region_LOR\"\n },\n {\n \"name\": \"Madre de Dios\",\n \"shortCode\": \"MDD\",\n \"translationKey\": \"Peru_region_MDD\"\n },\n {\n \"name\": \"Moquegua\",\n \"shortCode\": \"MOQ\",\n \"translationKey\": \"Peru_region_MOQ\"\n },\n {\n \"name\": \"Municipalidad Metropolitana de Lima\",\n \"shortCode\": \"LMA\",\n \"translationKey\": \"Peru_region_LMA\"\n },\n {\n \"name\": \"Pasco\",\n \"shortCode\": \"PAS\",\n \"translationKey\": \"Peru_region_PAS\"\n },\n {\n \"name\": \"Piura\",\n \"shortCode\": \"PIU\",\n \"translationKey\": \"Peru_region_PIU\"\n },\n {\n \"name\": \"Puno\",\n \"shortCode\": \"PUN\",\n \"translationKey\": \"Peru_region_PUN\"\n },\n {\n \"name\": \"San Martin\",\n \"shortCode\": \"SAM\",\n \"translationKey\": \"Peru_region_SAM\"\n },\n {\n \"name\": \"Tacna\",\n \"shortCode\": \"TAC\",\n \"translationKey\": \"Peru_region_TAC\"\n },\n {\n \"name\": \"Tumbes\",\n \"shortCode\": \"TUM\",\n \"translationKey\": \"Peru_region_TUM\"\n },\n {\n \"name\": \"Ucayali\",\n \"shortCode\": \"UCA\",\n \"translationKey\": \"Peru_region_UCA\"\n }\n ],\n \"translationKey\": \"country_name_Peru\"\n },\n {\n \"countryName\": \"Poland\",\n \"translationKey\": \"country_name_poland\",\n \"countryShortCode\": \"PL\",\n \"regions\": [\n {\n \"name\": \"Dolnośląskie\",\n \"translationKey\": \"poland_region_name_ds\",\n \"shortCode\": \"DS\"\n },\n {\n \"name\": \"Kujawsko-pomorskie\",\n \"translationKey\": \"poland_region_name_kp\",\n \"shortCode\": \"KP\"\n },\n {\n \"name\": \"Łódzkie\",\n \"translationKey\": \"poland_region_name_ld\",\n \"shortCode\": \"LD\"\n },\n {\n \"name\": \"Lubelskie\",\n \"translationKey\": \"poland_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Lubuskie\",\n \"translationKey\": \"poland_region_name_lb\",\n \"shortCode\": \"LB\"\n },\n {\n \"name\": \"Małopolskie\",\n \"translationKey\": \"poland_region_name_ma\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Mazowieckie\",\n \"translationKey\": \"poland_region_name_mz\",\n \"shortCode\": \"MZ\"\n },\n {\n \"name\": \"Opolskie\",\n \"translationKey\": \"poland_region_name_op\",\n \"shortCode\": \"OP\"\n },\n {\n \"name\": \"Podkarpackie\",\n \"translationKey\": \"poland_region_name_pk\",\n \"shortCode\": \"PK\"\n },\n {\n \"name\": \"Podlaskie\",\n \"translationKey\": \"poland_region_name_pd\",\n \"shortCode\": \"PD\"\n },\n {\n \"name\": \"Pomorskie\",\n \"translationKey\": \"poland_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Śląskie\",\n \"translationKey\": \"poland_region_name_sl\",\n \"shortCode\": \"SL\"\n },\n {\n \"name\": \"Świętokrzyskie\",\n \"translationKey\": \"poland_region_name_sk\",\n \"shortCode\": \"SK\"\n },\n {\n \"name\": \"Warmińsko-mazurskie\",\n \"translationKey\": \"poland_region_name_wn\",\n \"shortCode\": \"WN\"\n },\n {\n \"name\": \"Wielkopolskie\",\n \"translationKey\": \"poland_region_name_wp\",\n \"shortCode\": \"WP\"\n },\n {\n \"name\": \"Zachodniopomorskie\",\n \"translationKey\": \"poland_region_name_zp\",\n \"shortCode\": \"ZP\"\n }\n ]\n },\n {\n \"countryName\": \"Portugal\",\n \"translationKey\": \"country_name_portugal\",\n \"countryShortCode\": \"PT\",\n \"regions\": [\n {\n \"name\": \"Açores\",\n \"translationKey\": \"portugal_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Aveiro\",\n \"translationKey\": \"portugal_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Beja\",\n \"translationKey\": \"portugal_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Braga\",\n \"translationKey\": \"portugal_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Bragança\",\n \"translationKey\": \"portugal_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Castelo Branco\",\n \"translationKey\": \"portugal_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Coimbra\",\n \"translationKey\": \"portugal_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Évora\",\n \"translationKey\": \"portugal_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Faro\",\n \"translationKey\": \"portugal_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Guarda\",\n \"translationKey\": \"portugal_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Leiria\",\n \"translationKey\": \"portugal_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Lisboa\",\n \"translationKey\": \"portugal_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Madeira\",\n \"translationKey\": \"portugal_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Portalegre\",\n \"translationKey\": \"portugal_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Porto\",\n \"translationKey\": \"portugal_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Santarém\",\n \"translationKey\": \"portugal_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Setúbal\",\n \"translationKey\": \"portugal_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Viana do Castelo\",\n \"translationKey\": \"portugal_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Vila Real\",\n \"translationKey\": \"portugal_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Viseu\",\n \"translationKey\": \"portugal_region_name_18\",\n \"shortCode\": \"18\"\n }\n ]\n },\n {\n \"countryName\": \"Qatar\",\n \"countryShortCode\": \"QA\",\n \"regions\": [\n {\n \"name\": \"Ad Dawḩah\",\n \"shortCode\": \"DA\",\n \"translationKey\": \"Qatar_region_DA\"\n },\n {\n \"name\": \"Al Khawr wa adh Dhakhīrah\",\n \"shortCode\": \"KH\",\n \"translationKey\": \"Qatar_region_KH\"\n },\n {\n \"name\": \"Al Wakrah\",\n \"shortCode\": \"WA\",\n \"translationKey\": \"Qatar_region_WA\"\n },\n {\n \"name\": \"Ar Rayyān\",\n \"shortCode\": \"RA\",\n \"translationKey\": \"Qatar_region_RA\"\n },\n {\n \"name\": \"Ash Shamāl\",\n \"shortCode\": \"MS\",\n \"translationKey\": \"Qatar_region_MS\"\n },\n {\n \"name\": \"Az̧ Za̧`āyin\",\n \"shortCode\": \"ZA\",\n \"translationKey\": \"Qatar_region_ZA\"\n },\n {\n \"name\": \"Umm Şalāl\",\n \"shortCode\": \"US\",\n \"translationKey\": \"Qatar_region_US\"\n }\n ],\n \"translationKey\": \"country_name_Qatar\"\n },\n {\n \"countryName\": \"Romania\",\n \"translationKey\": \"country_name_romania\",\n \"countryShortCode\": \"RO\",\n \"regions\": [\n {\n \"name\": \"Alba\",\n \"translationKey\": \"romania_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Arad\",\n \"translationKey\": \"romania_region_name_ar\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"Arges\",\n \"translationKey\": \"romania_region_name_ag\",\n \"shortCode\": \"AG\"\n },\n {\n \"name\": \"Bacau\",\n \"translationKey\": \"romania_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Bihor\",\n \"translationKey\": \"romania_region_name_bh\",\n \"shortCode\": \"BH\"\n },\n {\n \"name\": \"Bistrita-Nasaud\",\n \"translationKey\": \"romania_region_name_bn\",\n \"shortCode\": \"BN\"\n },\n {\n \"name\": \"Botosani\",\n \"translationKey\": \"romania_region_name_bt\",\n \"shortCode\": \"BT\"\n },\n {\n \"name\": \"Braila\",\n \"translationKey\": \"romania_region_name_br\",\n \"shortCode\": \"BR\"\n },\n {\n \"name\": \"Brasov\",\n \"translationKey\": \"romania_region_name_bv\",\n \"shortCode\": \"BV\"\n },\n {\n \"name\": \"Bucuresti\",\n \"translationKey\": \"romania_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Buzau\",\n \"translationKey\": \"romania_region_name_bz\",\n \"shortCode\": \"BZ\"\n },\n {\n \"name\": \"Calarasi\",\n \"translationKey\": \"romania_region_name_cl\",\n \"shortCode\": \"CL\"\n },\n {\n \"name\": \"Caras-Severin\",\n \"translationKey\": \"romania_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Cluj\",\n \"translationKey\": \"romania_region_name_cj\",\n \"shortCode\": \"CJ\"\n },\n {\n \"name\": \"Constanta\",\n \"translationKey\": \"romania_region_name_ct\",\n \"shortCode\": \"CT\"\n },\n {\n \"name\": \"Covasna\",\n \"translationKey\": \"romania_region_name_cv\",\n \"shortCode\": \"CV\"\n },\n {\n \"name\": \"Dambovita\",\n \"translationKey\": \"romania_region_name_db\",\n \"shortCode\": \"DB\"\n },\n {\n \"name\": \"Dolj\",\n \"translationKey\": \"romania_region_name_dj\",\n \"shortCode\": \"DJ\"\n },\n {\n \"name\": \"Galati\",\n \"translationKey\": \"romania_region_name_gl\",\n \"shortCode\": \"GL\"\n },\n {\n \"name\": \"Giurgiu\",\n \"translationKey\": \"romania_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Gorj\",\n \"translationKey\": \"romania_region_name_gj\",\n \"shortCode\": \"GJ\"\n },\n {\n \"name\": \"Harghita\",\n \"translationKey\": \"romania_region_name_hr\",\n \"shortCode\": \"HR\"\n },\n {\n \"name\": \"Hunedoara\",\n \"translationKey\": \"romania_region_name_hd\",\n \"shortCode\": \"HD\"\n },\n {\n \"name\": \"Ialomita\",\n \"translationKey\": \"romania_region_name_il\",\n \"shortCode\": \"IL\"\n },\n {\n \"name\": \"Iasi\",\n \"translationKey\": \"romania_region_name_is\",\n \"shortCode\": \"IS\"\n },\n {\n \"name\": \"Maramures\",\n \"translationKey\": \"romania_region_name_mm\",\n \"shortCode\": \"MM\"\n },\n {\n \"name\": \"Mehedinti\",\n \"translationKey\": \"romania_region_name_mh\",\n \"shortCode\": \"MH\"\n },\n {\n \"name\": \"Mures\",\n \"translationKey\": \"romania_region_name_ms\",\n \"shortCode\": \"MS\"\n },\n {\n \"name\": \"Neamt\",\n \"translationKey\": \"romania_region_name_nt\",\n \"shortCode\": \"NT\"\n },\n {\n \"name\": \"Olt\",\n \"translationKey\": \"romania_region_name_ot\",\n \"shortCode\": \"OT\"\n },\n {\n \"name\": \"Prahova\",\n \"translationKey\": \"romania_region_name_ph\",\n \"shortCode\": \"PH\"\n },\n {\n \"name\": \"Salaj\",\n \"translationKey\": \"romania_region_name_sj\",\n \"shortCode\": \"SJ\"\n },\n {\n \"name\": \"Satu Mare\",\n \"translationKey\": \"romania_region_name_sm\",\n \"shortCode\": \"SM\"\n },\n {\n \"name\": \"Sibiu\",\n \"translationKey\": \"romania_region_name_sb\",\n \"shortCode\": \"SB\"\n },\n {\n \"name\": \"Suceava\",\n \"translationKey\": \"romania_region_name_sv\",\n \"shortCode\": \"SV\"\n },\n {\n \"name\": \"Teleorman\",\n \"translationKey\": \"romania_region_name_tr\",\n \"shortCode\": \"TR\"\n },\n {\n \"name\": \"Timis\",\n \"translationKey\": \"romania_region_name_tm\",\n \"shortCode\": \"TM\"\n },\n {\n \"name\": \"Tulcea\",\n \"translationKey\": \"romania_region_name_tl\",\n \"shortCode\": \"TL\"\n },\n {\n \"name\": \"Valcea\",\n \"translationKey\": \"romania_region_name_vl\",\n \"shortCode\": \"VL\"\n },\n {\n \"name\": \"Vaslui\",\n \"translationKey\": \"romania_region_name_vs\",\n \"shortCode\": \"VS\"\n },\n {\n \"name\": \"Vrancea\",\n \"translationKey\": \"romania_region_name_vn\",\n \"shortCode\": \"VN\"\n }\n ]\n },\n {\n \"countryName\": \"Russian Federation\",\n \"countryShortCode\": \"RU\",\n \"regions\": [\n {\n \"name\": \"Republic of Adygea\",\n \"shortCode\": \"AD\",\n \"translationKey\": \"Russian Federation_region_AD\"\n },\n {\n \"name\": \"Republic of Altai (Gorno-Altaysk)\",\n \"shortCode\": \"AL\",\n \"translationKey\": \"Russian Federation_region_AL\"\n },\n {\n \"name\": \"Altai Krai\",\n \"shortCode\": \"ALT\",\n \"translationKey\": \"Russian Federation_region_ALT\"\n },\n {\n \"name\": \"Amur Oblast\",\n \"shortCode\": \"AMU\",\n \"translationKey\": \"Russian Federation_region_AMU\"\n },\n {\n \"name\": \"Arkhangelsk Oblast\",\n \"shortCode\": \"ARK\",\n \"translationKey\": \"Russian Federation_region_ARK\"\n },\n {\n \"name\": \"Astrakhan Oblast\",\n \"shortCode\": \"AST\",\n \"translationKey\": \"Russian Federation_region_AST\"\n },\n {\n \"name\": \"Republic of Bashkortostan\",\n \"shortCode\": \"BA\",\n \"translationKey\": \"Russian Federation_region_BA\"\n },\n {\n \"name\": \"Belgorod Oblast\",\n \"shortCode\": \"BEL\",\n \"translationKey\": \"Russian Federation_region_BEL\"\n },\n {\n \"name\": \"Bryansk Oblast\",\n \"shortCode\": \"BRY\",\n \"translationKey\": \"Russian Federation_region_BRY\"\n },\n {\n \"name\": \"Republic of Buryatia\",\n \"shortCode\": \"BU\",\n \"translationKey\": \"Russian Federation_region_BU\"\n },\n {\n \"name\": \"Chechen Republic\",\n \"shortCode\": \"CE\",\n \"translationKey\": \"Russian Federation_region_CE\"\n },\n {\n \"name\": \"Chelyabinsk Oblast\",\n \"shortCode\": \"CHE\",\n \"translationKey\": \"Russian Federation_region_CHE\"\n },\n {\n \"name\": \"Chukotka Autonomous Okrug\",\n \"shortCode\": \"CHU\",\n \"translationKey\": \"Russian Federation_region_CHU\"\n },\n {\n \"name\": \"Chuvash Republic\",\n \"shortCode\": \"CU\",\n \"translationKey\": \"Russian Federation_region_CU\"\n },\n {\n \"name\": \"Republic of Dagestan\",\n \"shortCode\": \"DA\",\n \"translationKey\": \"Russian Federation_region_DA\"\n },\n {\n \"name\": \"Republic of Ingushetia\",\n \"shortCode\": \"IN\",\n \"translationKey\": \"Russian Federation_region_IN\"\n },\n {\n \"name\": \"Irkutsk Oblast\",\n \"shortCode\": \"IRK\",\n \"translationKey\": \"Russian Federation_region_IRK\"\n },\n {\n \"name\": \"Ivanovo Oblast\",\n \"shortCode\": \"IVA\",\n \"translationKey\": \"Russian Federation_region_IVA\"\n },\n {\n \"name\": \"Jewish Autonomous Oblast\",\n \"shortCode\": \"JEW\",\n \"translationKey\": \"Russian Federation_region_JEW\"\n },\n {\n \"name\": \"Kabardino-Balkar Republic\",\n \"shortCode\": \"KB\",\n \"translationKey\": \"Russian Federation_region_KB\"\n },\n {\n \"name\": \"Kaliningrad Oblast\",\n \"shortCode\": \"KLN\",\n \"translationKey\": \"Russian Federation_region_KLN\"\n },\n {\n \"name\": \"Republic of Kalmykia\",\n \"shortCode\": \"KL\",\n \"translationKey\": \"Russian Federation_region_KL\"\n },\n {\n \"name\": \"Kaluga Oblast\",\n \"shortCode\": \"KLU\",\n \"translationKey\": \"Russian Federation_region_KLU\"\n },\n {\n \"name\": \"Kamchatka Krai\",\n \"shortCode\": \"KAM\",\n \"translationKey\": \"Russian Federation_region_KAM\"\n },\n {\n \"name\": \"Karachay-Cherkess Republic\",\n \"shortCode\": \"KC\",\n \"translationKey\": \"Russian Federation_region_KC\"\n },\n {\n \"name\": \"Republic of Karelia\",\n \"shortCode\": \"KR\",\n \"translationKey\": \"Russian Federation_region_KR\"\n },\n {\n \"name\": \"Khabarovsk Krai\",\n \"shortCode\": \"KHA\",\n \"translationKey\": \"Russian Federation_region_KHA\"\n },\n {\n \"name\": \"Republic of Khakassia\",\n \"shortCode\": \"KK\",\n \"translationKey\": \"Russian Federation_region_KK\"\n },\n {\n \"name\": \"Khanty-Mansi Autonomous Okrug - Yugra\",\n \"shortCode\": \"KHM\",\n \"translationKey\": \"Russian Federation_region_KHM\"\n },\n {\n \"name\": \"Kemerovo Oblast\",\n \"shortCode\": \"KEM\",\n \"translationKey\": \"Russian Federation_region_KEM\"\n },\n {\n \"name\": \"Kirov Oblast\",\n \"shortCode\": \"KIR\",\n \"translationKey\": \"Russian Federation_region_KIR\"\n },\n {\n \"name\": \"Komi Republic\",\n \"shortCode\": \"KO\",\n \"translationKey\": \"Russian Federation_region_KO\"\n },\n {\n \"name\": \"Kostroma Oblast\",\n \"shortCode\": \"KOS\",\n \"translationKey\": \"Russian Federation_region_KOS\"\n },\n {\n \"name\": \"Krasnodar Krai\",\n \"shortCode\": \"KDA\",\n \"translationKey\": \"Russian Federation_region_KDA\"\n },\n {\n \"name\": \"Krasnoyarsk Krai\",\n \"shortCode\": \"KYA\",\n \"translationKey\": \"Russian Federation_region_KYA\"\n },\n {\n \"name\": \"Kurgan Oblast\",\n \"shortCode\": \"KGN\",\n \"translationKey\": \"Russian Federation_region_KGN\"\n },\n {\n \"name\": \"Kursk Oblast\",\n \"shortCode\": \"KRS\",\n \"translationKey\": \"Russian Federation_region_KRS\"\n },\n {\n \"name\": \"Leningrad Oblast\",\n \"shortCode\": \"LEN\",\n \"translationKey\": \"Russian Federation_region_LEN\"\n },\n {\n \"name\": \"Lipetsk Oblast\",\n \"shortCode\": \"LIP\",\n \"translationKey\": \"Russian Federation_region_LIP\"\n },\n {\n \"name\": \"Magadan Oblast\",\n \"shortCode\": \"MAG\",\n \"translationKey\": \"Russian Federation_region_MAG\"\n },\n {\n \"name\": \"Mari El Republic\",\n \"shortCode\": \"ME\",\n \"translationKey\": \"Russian Federation_region_ME\"\n },\n {\n \"name\": \"Republic of Mordovia\",\n \"shortCode\": \"MO\",\n \"translationKey\": \"Russian Federation_region_MO\"\n },\n {\n \"name\": \"Moscow Oblast\",\n \"shortCode\": \"MOS\",\n \"translationKey\": \"Russian Federation_region_MOS\"\n },\n {\n \"name\": \"Moscow\",\n \"shortCode\": \"MOW\",\n \"translationKey\": \"Russian Federation_region_MOW\"\n },\n {\n \"name\": \"Murmansk Oblast\",\n \"shortCode\": \"MU\",\n \"translationKey\": \"Russian Federation_region_MU\"\n },\n {\n \"name\": \"Nenets Autonomous Okrug\",\n \"shortCode\": \"NEN\",\n \"translationKey\": \"Russian Federation_region_NEN\"\n },\n {\n \"name\": \"Nizhny Novgorod Oblast\",\n \"shortCode\": \"NIZ\",\n \"translationKey\": \"Russian Federation_region_NIZ\"\n },\n {\n \"name\": \"Novgorod Oblast\",\n \"shortCode\": \"NGR\",\n \"translationKey\": \"Russian Federation_region_NGR\"\n },\n {\n \"name\": \"Novosibirsk Oblast\",\n \"shortCode\": \"NVS\",\n \"translationKey\": \"Russian Federation_region_NVS\"\n },\n {\n \"name\": \"Omsk Oblast\",\n \"shortCode\": \"OMS\",\n \"translationKey\": \"Russian Federation_region_OMS\"\n },\n {\n \"name\": \"Orenburg Oblast\",\n \"shortCode\": \"ORE\",\n \"translationKey\": \"Russian Federation_region_ORE\"\n },\n {\n \"name\": \"Oryol Oblast\",\n \"shortCode\": \"ORL\",\n \"translationKey\": \"Russian Federation_region_ORL\"\n },\n {\n \"name\": \"Penza Oblast\",\n \"shortCode\": \"PNZ\",\n \"translationKey\": \"Russian Federation_region_PNZ\"\n },\n {\n \"name\": \"Perm Krai\",\n \"shortCode\": \"PER\",\n \"translationKey\": \"Russian Federation_region_PER\"\n },\n {\n \"name\": \"Primorsky Krai\",\n \"shortCode\": \"PRI\",\n \"translationKey\": \"Russian Federation_region_PRI\"\n },\n {\n \"name\": \"Pskov Oblast\",\n \"shortCode\": \"PSK\",\n \"translationKey\": \"Russian Federation_region_PSK\"\n },\n {\n \"name\": \"Rostov Oblast\",\n \"shortCode\": \"ROS\",\n \"translationKey\": \"Russian Federation_region_ROS\"\n },\n {\n \"name\": \"Ryazan Oblast\",\n \"shortCode\": \"RYA\",\n \"translationKey\": \"Russian Federation_region_RYA\"\n },\n {\n \"name\": \"Saint Petersburg\",\n \"shortCode\": \"SPE\",\n \"translationKey\": \"Russian Federation_region_SPE\"\n },\n {\n \"name\": \"Sakha (Yakutia) Republic\",\n \"shortCode\": \"SA\",\n \"translationKey\": \"Russian Federation_region_SA\"\n },\n {\n \"name\": \"Sakhalin Oblast\",\n \"shortCode\": \"SAK\",\n \"translationKey\": \"Russian Federation_region_SAK\"\n },\n {\n \"name\": \"Samara Oblast\",\n \"shortCode\": \"SAM\",\n \"translationKey\": \"Russian Federation_region_SAM\"\n },\n {\n \"name\": \"Saratov Oblast\",\n \"shortCode\": \"SAR\",\n \"translationKey\": \"Russian Federation_region_SAR\"\n },\n {\n \"name\": \"Republic of North Ossetia-Alania\",\n \"shortCode\": \"NOA\",\n \"translationKey\": \"Russian Federation_region_NOA\"\n },\n {\n \"name\": \"Smolensk Oblast\",\n \"shortCode\": \"SMO\",\n \"translationKey\": \"Russian Federation_region_SMO\"\n },\n {\n \"name\": \"Stavropol Krai\",\n \"shortCode\": \"STA\",\n \"translationKey\": \"Russian Federation_region_STA\"\n },\n {\n \"name\": \"Sverdlovsk Oblast\",\n \"shortCode\": \"SVE\",\n \"translationKey\": \"Russian Federation_region_SVE\"\n },\n {\n \"name\": \"Tambov Oblast\",\n \"shortCode\": \"TAM\",\n \"translationKey\": \"Russian Federation_region_TAM\"\n },\n {\n \"name\": \"Republic of Tatarstan\",\n \"shortCode\": \"TA\",\n \"translationKey\": \"Russian Federation_region_TA\"\n },\n {\n \"name\": \"Tomsk Oblast\",\n \"shortCode\": \"TOM\",\n \"translationKey\": \"Russian Federation_region_TOM\"\n },\n {\n \"name\": \"Tuva Republic\",\n \"shortCode\": \"TU\",\n \"translationKey\": \"Russian Federation_region_TU\"\n },\n {\n \"name\": \"Tula Oblast\",\n \"shortCode\": \"TUL\",\n \"translationKey\": \"Russian Federation_region_TUL\"\n },\n {\n \"name\": \"Tver Oblast\",\n \"shortCode\": \"TVE\",\n \"translationKey\": \"Russian Federation_region_TVE\"\n },\n {\n \"name\": \"Tyumen Oblast\",\n \"shortCode\": \"TYU\",\n \"translationKey\": \"Russian Federation_region_TYU\"\n },\n {\n \"name\": \"Udmurt Republic\",\n \"shortCode\": \"UD\",\n \"translationKey\": \"Russian Federation_region_UD\"\n },\n {\n \"name\": \"Ulyanovsk Oblast\",\n \"shortCode\": \"ULY\",\n \"translationKey\": \"Russian Federation_region_ULY\"\n },\n {\n \"name\": \"Vladimir Oblast\",\n \"shortCode\": \"VLA\",\n \"translationKey\": \"Russian Federation_region_VLA\"\n },\n {\n \"name\": \"Volgograd Oblast\",\n \"shortCode\": \"VGG\",\n \"translationKey\": \"Russian Federation_region_VGG\"\n },\n {\n \"name\": \"Vologda Oblast\",\n \"shortCode\": \"VLG\",\n \"translationKey\": \"Russian Federation_region_VLG\"\n },\n {\n \"name\": \"Voronezh Oblast\",\n \"shortCode\": \"VOR\",\n \"translationKey\": \"Russian Federation_region_VOR\"\n },\n {\n \"name\": \"Yamalo-Nenets Autonomous Okrug\",\n \"shortCode\": \"YAN\",\n \"translationKey\": \"Russian Federation_region_YAN\"\n },\n {\n \"name\": \"Yaroslavl Oblast\",\n \"shortCode\": \"YAR\",\n \"translationKey\": \"Russian Federation_region_YAR\"\n },\n {\n \"name\": \"Zabaykalsky Krai\",\n \"shortCode\": \"ZAB\",\n \"translationKey\": \"Russian Federation_region_ZAB\"\n }\n ],\n \"translationKey\": \"country_name_Russian Federation\"\n },\n {\n \"countryName\": \"Saudi Arabia\",\n \"countryShortCode\": \"SA\",\n \"regions\": [\n {\n \"name\": \"'Asir\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Saudi Arabia_region_14\"\n },\n {\n \"name\": \"Al Bahah\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Saudi Arabia_region_11\"\n },\n {\n \"name\": \"Al Hudud ash Shamaliyah\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Saudi Arabia_region_08\"\n },\n {\n \"name\": \"Al Jawf\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Saudi Arabia_region_12\"\n },\n {\n \"name\": \"Al Madinah al Munawwarah\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Saudi Arabia_region_03\"\n },\n {\n \"name\": \"Al Qasim\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Saudi Arabia_region_05\"\n },\n {\n \"name\": \"Ar Riyad\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Saudi Arabia_region_01\"\n },\n {\n \"name\": \"Ash Sharqiyah\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Saudi Arabia_region_04\"\n },\n {\n \"name\": \"Ha'il\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Saudi Arabia_region_06\"\n },\n {\n \"name\": \"Jazan\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Saudi Arabia_region_09\"\n },\n {\n \"name\": \"Makkah al Mukarramah\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Saudi Arabia_region_02\"\n },\n {\n \"name\": \"Najran\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Saudi Arabia_region_10\"\n },\n {\n \"name\": \"Tabuk\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Saudi Arabia_region_07\"\n }\n ],\n \"translationKey\": \"country_name_Saudi Arabia\"\n },\n {\n \"countryName\": \"Senegal\",\n \"countryShortCode\": \"SN\",\n \"regions\": [\n {\n \"name\": \"Dakar\",\n \"shortCode\": \"DK\",\n \"translationKey\": \"Senegal_region_DK\"\n },\n {\n \"name\": \"Diourbel\",\n \"shortCode\": \"DB\",\n \"translationKey\": \"Senegal_region_DB\"\n },\n {\n \"name\": \"Fatick\",\n \"shortCode\": \"FK\",\n \"translationKey\": \"Senegal_region_FK\"\n },\n {\n \"name\": \"Kaffrine\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Senegal_region_KA\"\n },\n {\n \"name\": \"Kaolack\",\n \"shortCode\": \"KL\",\n \"translationKey\": \"Senegal_region_KL\"\n },\n {\n \"name\": \"Kedougou\",\n \"shortCode\": \"KE\",\n \"translationKey\": \"Senegal_region_KE\"\n },\n {\n \"name\": \"Kolda\",\n \"shortCode\": \"KD\",\n \"translationKey\": \"Senegal_region_KD\"\n },\n {\n \"name\": \"Louga\",\n \"shortCode\": \"LG\",\n \"translationKey\": \"Senegal_region_LG\"\n },\n {\n \"name\": \"Matam\",\n \"shortCode\": \"MT\",\n \"translationKey\": \"Senegal_region_MT\"\n },\n {\n \"name\": \"Saint-Louis\",\n \"shortCode\": \"SL\",\n \"translationKey\": \"Senegal_region_SL\"\n },\n {\n \"name\": \"Sedhiou\",\n \"shortCode\": \"SE\",\n \"translationKey\": \"Senegal_region_SE\"\n },\n {\n \"name\": \"Tambacounda\",\n \"shortCode\": \"TC\",\n \"translationKey\": \"Senegal_region_TC\"\n },\n {\n \"name\": \"Thies\",\n \"shortCode\": \"TH\",\n \"translationKey\": \"Senegal_region_TH\"\n },\n {\n \"name\": \"Ziguinchor\",\n \"shortCode\": \"ZG\",\n \"translationKey\": \"Senegal_region_ZG\"\n }\n ],\n \"translationKey\": \"country_name_Senegal\"\n },\n {\n \"countryName\": \"Serbia\",\n \"countryShortCode\": \"RS\",\n \"regions\": [\n {\n \"name\": \"Beograd (Belgrade)\",\n \"shortCode\": \"00\",\n \"translationKey\": \"Serbia_region_00\"\n },\n {\n \"name\": \"Borski\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Serbia_region_14\"\n },\n {\n \"name\": \"Braničevski\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Serbia_region_11\"\n },\n {\n \"name\": \"Jablanički\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Serbia_region_23\"\n },\n {\n \"name\": \"Južnobački\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Serbia_region_06\"\n },\n {\n \"name\": \"Južnobanatski\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Serbia_region_04\"\n },\n {\n \"name\": \"Kolubarski\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Serbia_region_09\"\n },\n {\n \"name\": \"Kosovski\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Serbia_region_25\"\n },\n {\n \"name\": \"Kosovsko-Mitrovački\",\n \"shortCode\": \"28\",\n \"translationKey\": \"Serbia_region_28\"\n },\n {\n \"name\": \"Kosovsko-Pomoravski\",\n \"shortCode\": \"29\",\n \"translationKey\": \"Serbia_region_29\"\n },\n {\n \"name\": \"Mačvanski\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Serbia_region_08\"\n },\n {\n \"name\": \"Moravički\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Serbia_region_17\"\n },\n {\n \"name\": \"Nišavski\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Serbia_region_20\"\n },\n {\n \"name\": \"Pčinjski\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Serbia_region_24\"\n },\n {\n \"name\": \"Pećki\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Serbia_region_26\"\n },\n {\n \"name\": \"Pirotski\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Serbia_region_22\"\n },\n {\n \"name\": \"Podunavski\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Serbia_region_10\"\n },\n {\n \"name\": \"Pomoravski\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Serbia_region_13\"\n },\n {\n \"name\": \"Prizrenski\",\n \"shortCode\": \"27\",\n \"translationKey\": \"Serbia_region_27\"\n },\n {\n \"name\": \"Rasinski\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Serbia_region_19\"\n },\n {\n \"name\": \"Raški\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Serbia_region_18\"\n },\n {\n \"name\": \"Severnobački\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Serbia_region_01\"\n },\n {\n \"name\": \"Severnobanatski\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Serbia_region_03\"\n },\n {\n \"name\": \"Srednjebanatski\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Serbia_region_02\"\n },\n {\n \"name\": \"Sremski\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Serbia_region_07\"\n },\n {\n \"name\": \"Šumadijski\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Serbia_region_12\"\n },\n {\n \"name\": \"Toplički\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Serbia_region_21\"\n },\n {\n \"name\": \"Zaječarski\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Serbia_region_15\"\n },\n {\n \"name\": \"Zapadnobački\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Serbia_region_05\"\n },\n {\n \"name\": \"Zlatiborski\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Serbia_region_16\"\n }\n ],\n \"translationKey\": \"country_name_Serbia\"\n },\n {\n \"countryName\": \"Sierra Leone\",\n \"countryShortCode\": \"SL\",\n \"regions\": [\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"E\",\n \"translationKey\": \"Sierra Leone_region_E\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"N\",\n \"translationKey\": \"Sierra Leone_region_N\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"S\",\n \"translationKey\": \"Sierra Leone_region_S\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"W\",\n \"translationKey\": \"Sierra Leone_region_W\"\n }\n ],\n \"translationKey\": \"country_name_Sierra Leone\"\n },\n {\n \"countryName\": \"Slovakia\",\n \"translationKey\": \"country_name_slovakia\",\n \"countryShortCode\": \"SK\",\n \"regions\": [\n {\n \"name\": \"Banskobystricky\",\n \"translationKey\": \"slovakia_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Bratislavsky\",\n \"translationKey\": \"slovakia_region_name_bl\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Kosicky\",\n \"translationKey\": \"slovakia_region_name_ki\",\n \"shortCode\": \"KI\"\n },\n {\n \"name\": \"Nitriansky\",\n \"translationKey\": \"slovakia_region_name_ni\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Presovsky\",\n \"translationKey\": \"slovakia_region_name_pv\",\n \"shortCode\": \"PV\"\n },\n {\n \"name\": \"Trenciansky\",\n \"translationKey\": \"slovakia_region_name_tc\",\n \"shortCode\": \"TC\"\n },\n {\n \"name\": \"Trnavsky\",\n \"translationKey\": \"slovakia_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Zilinsky\",\n \"translationKey\": \"slovakia_region_name_zi\",\n \"shortCode\": \"ZI\"\n }\n ]\n },\n {\n \"countryName\": \"Slovenia\",\n \"translationKey\": \"country_name_slovenia\",\n \"countryShortCode\": \"SI\",\n \"regions\": [\n {\n \"name\": \"Ajdovscina\",\n \"translationKey\": \"slovenia_region_name_001\",\n \"shortCode\": \"001\"\n },\n {\n \"name\": \"Apace\",\n \"translationKey\": \"slovenia_region_name_195\",\n \"shortCode\": \"195\"\n },\n {\n \"name\": \"Beltinci\",\n \"translationKey\": \"slovenia_region_name_002\",\n \"shortCode\": \"002\"\n },\n {\n \"name\": \"Benedikt\",\n \"translationKey\": \"slovenia_region_name_148\",\n \"shortCode\": \"148\"\n },\n {\n \"name\": \"Bistrica ob Sotli\",\n \"translationKey\": \"slovenia_region_name_149\",\n \"shortCode\": \"149\"\n },\n {\n \"name\": \"Bled\",\n \"translationKey\": \"slovenia_region_name_003\",\n \"shortCode\": \"003\"\n },\n {\n \"name\": \"Bloke\",\n \"translationKey\": \"slovenia_region_name_150\",\n \"shortCode\": \"150\"\n },\n {\n \"name\": \"Bohinj\",\n \"translationKey\": \"slovenia_region_name_004\",\n \"shortCode\": \"004\"\n },\n {\n \"name\": \"Borovnica\",\n \"translationKey\": \"slovenia_region_name_005\",\n \"shortCode\": \"005\"\n },\n {\n \"name\": \"Bovec\",\n \"translationKey\": \"slovenia_region_name_006\",\n \"shortCode\": \"006\"\n },\n {\n \"name\": \"Braslovce\",\n \"translationKey\": \"slovenia_region_name_151\",\n \"shortCode\": \"151\"\n },\n {\n \"name\": \"Brda\",\n \"translationKey\": \"slovenia_region_name_007\",\n \"shortCode\": \"007\"\n },\n {\n \"name\": \"Brezice\",\n \"translationKey\": \"slovenia_region_name_009\",\n \"shortCode\": \"009\"\n },\n {\n \"name\": \"Brezovica\",\n \"translationKey\": \"slovenia_region_name_008\",\n \"shortCode\": \"008\"\n },\n {\n \"name\": \"Cankova\",\n \"translationKey\": \"slovenia_region_name_152\",\n \"shortCode\": \"152\"\n },\n {\n \"name\": \"Celje\",\n \"translationKey\": \"slovenia_region_name_011\",\n \"shortCode\": \"011\"\n },\n {\n \"name\": \"Cerklje na Gorenjskem\",\n \"translationKey\": \"slovenia_region_name_012\",\n \"shortCode\": \"012\"\n },\n {\n \"name\": \"Cerknica\",\n \"translationKey\": \"slovenia_region_name_013\",\n \"shortCode\": \"013\"\n },\n {\n \"name\": \"Cerkno\",\n \"translationKey\": \"slovenia_region_name_014\",\n \"shortCode\": \"014\"\n },\n {\n \"name\": \"Cerkvenjak\",\n \"translationKey\": \"slovenia_region_name_153\",\n \"shortCode\": \"153\"\n },\n {\n \"name\": \"Cirkulane\",\n \"translationKey\": \"slovenia_region_name_196\",\n \"shortCode\": \"196\"\n },\n {\n \"name\": \"Crensovci\",\n \"translationKey\": \"slovenia_region_name_015\",\n \"shortCode\": \"015\"\n },\n {\n \"name\": \"Crna na Koroskem\",\n \"translationKey\": \"slovenia_region_name_016\",\n \"shortCode\": \"016\"\n },\n {\n \"name\": \"Crnomelj\",\n \"translationKey\": \"slovenia_region_name_017\",\n \"shortCode\": \"017\"\n },\n {\n \"name\": \"Destrnik\",\n \"translationKey\": \"slovenia_region_name_018\",\n \"shortCode\": \"018\"\n },\n {\n \"name\": \"Divaca\",\n \"translationKey\": \"slovenia_region_name_019\",\n \"shortCode\": \"019\"\n },\n {\n \"name\": \"Dobje\",\n \"translationKey\": \"slovenia_region_name_154\",\n \"shortCode\": \"154\"\n },\n {\n \"name\": \"Dobrepolje\",\n \"translationKey\": \"slovenia_region_name_020\",\n \"shortCode\": \"020\"\n },\n {\n \"name\": \"Dobrna\",\n \"translationKey\": \"slovenia_region_name_155\",\n \"shortCode\": \"155\"\n },\n {\n \"name\": \"Dobrova-Polhov Gradec\",\n \"translationKey\": \"slovenia_region_name_021\",\n \"shortCode\": \"021\"\n },\n {\n \"name\": \"Dobrovnik\",\n \"translationKey\": \"slovenia_region_name_156\",\n \"shortCode\": \"156\"\n },\n {\n \"name\": \"Dol pri Ljubljani\",\n \"translationKey\": \"slovenia_region_name_022\",\n \"shortCode\": \"022\"\n },\n {\n \"name\": \"Dolenjske Toplice\",\n \"translationKey\": \"slovenia_region_name_157\",\n \"shortCode\": \"157\"\n },\n {\n \"name\": \"Domzale\",\n \"translationKey\": \"slovenia_region_name_023\",\n \"shortCode\": \"023\"\n },\n {\n \"name\": \"Dornava\",\n \"translationKey\": \"slovenia_region_name_024\",\n \"shortCode\": \"024\"\n },\n {\n \"name\": \"Dravograd\",\n \"translationKey\": \"slovenia_region_name_025\",\n \"shortCode\": \"025\"\n },\n {\n \"name\": \"Duplek\",\n \"translationKey\": \"slovenia_region_name_026\",\n \"shortCode\": \"026\"\n },\n {\n \"name\": \"Gorenja Vas-Poljane\",\n \"translationKey\": \"slovenia_region_name_027\",\n \"shortCode\": \"027\"\n },\n {\n \"name\": \"Gorisnica\",\n \"translationKey\": \"slovenia_region_name_028\",\n \"shortCode\": \"028\"\n },\n {\n \"name\": \"Gorje\",\n \"translationKey\": \"slovenia_region_name_207\",\n \"shortCode\": \"207\"\n },\n {\n \"name\": \"Gornja Radgona\",\n \"translationKey\": \"slovenia_region_name_029\",\n \"shortCode\": \"029\"\n },\n {\n \"name\": \"Gornji Grad\",\n \"translationKey\": \"slovenia_region_name_030\",\n \"shortCode\": \"030\"\n },\n {\n \"name\": \"Gornji Petrovci\",\n \"translationKey\": \"slovenia_region_name_031\",\n \"shortCode\": \"031\"\n },\n {\n \"name\": \"Grad\",\n \"translationKey\": \"slovenia_region_name_158\",\n \"shortCode\": \"158\"\n },\n {\n \"name\": \"Grosuplje\",\n \"translationKey\": \"slovenia_region_name_032\",\n \"shortCode\": \"032\"\n },\n {\n \"name\": \"Hajdina\",\n \"translationKey\": \"slovenia_region_name_159\",\n \"shortCode\": \"159\"\n },\n {\n \"name\": \"Hoce-Slivnica\",\n \"translationKey\": \"slovenia_region_name_160\",\n \"shortCode\": \"\"\n },\n {\n \"name\": \"Hodos\",\n \"translationKey\": \"slovenia_region_name_161\",\n \"shortCode\": \"161\"\n },\n {\n \"name\": \"Horjul\",\n \"translationKey\": \"slovenia_region_name_162\",\n \"shortCode\": \"162\"\n },\n {\n \"name\": \"Hrastnik\",\n \"translationKey\": \"slovenia_region_name_034\",\n \"shortCode\": \"034\"\n },\n {\n \"name\": \"Hrpelje-Kozina\",\n \"translationKey\": \"slovenia_region_name_035\",\n \"shortCode\": \"035\"\n },\n {\n \"name\": \"Idrija\",\n \"translationKey\": \"slovenia_region_name_036\",\n \"shortCode\": \"036\"\n },\n {\n \"name\": \"Ig\",\n \"translationKey\": \"slovenia_region_name_037\",\n \"shortCode\": \"037\"\n },\n {\n \"name\": \"Ilirska Bistrica\",\n \"translationKey\": \"slovenia_region_name_038\",\n \"shortCode\": \"038\"\n },\n {\n \"name\": \"Ivancna Gorica\",\n \"translationKey\": \"slovenia_region_name_039\",\n \"shortCode\": \"039\"\n },\n {\n \"name\": \"Izola\",\n \"translationKey\": \"slovenia_region_name_040\",\n \"shortCode\": \"040\"\n },\n {\n \"name\": \"Jesenice\",\n \"translationKey\": \"slovenia_region_name_041\",\n \"shortCode\": \"041\"\n },\n {\n \"name\": \"Jursinci\",\n \"translationKey\": \"slovenia_region_name_042\",\n \"shortCode\": \"042\"\n },\n {\n \"name\": \"Kamnik\",\n \"translationKey\": \"slovenia_region_name_043\",\n \"shortCode\": \"043\"\n },\n {\n \"name\": \"Kanal\",\n \"translationKey\": \"slovenia_region_name_044\",\n \"shortCode\": \"044\"\n },\n {\n \"name\": \"Kidricevo\",\n \"translationKey\": \"slovenia_region_name_045\",\n \"shortCode\": \"045\"\n },\n {\n \"name\": \"Kobarid\",\n \"translationKey\": \"slovenia_region_name_046\",\n \"shortCode\": \"046\"\n },\n {\n \"name\": \"Kobilje\",\n \"translationKey\": \"slovenia_region_name_047\",\n \"shortCode\": \"047\"\n },\n {\n \"name\": \"Kocevje\",\n \"translationKey\": \"slovenia_region_name_048\",\n \"shortCode\": \"048\"\n },\n {\n \"name\": \"Komen\",\n \"translationKey\": \"slovenia_region_name_049\",\n \"shortCode\": \"049\"\n },\n {\n \"name\": \"Komenda\",\n \"translationKey\": \"slovenia_region_name_164\",\n \"shortCode\": \"164\"\n },\n {\n \"name\": \"Koper\",\n \"translationKey\": \"slovenia_region_name_050\",\n \"shortCode\": \"050\"\n },\n {\n \"name\": \"Kodanjevica na Krki\",\n \"translationKey\": \"slovenia_region_name_197\",\n \"shortCode\": \"197\"\n },\n {\n \"name\": \"Kostel\",\n \"translationKey\": \"slovenia_region_name_165\",\n \"shortCode\": \"165\"\n },\n {\n \"name\": \"Kozje\",\n \"translationKey\": \"slovenia_region_name_051\",\n \"shortCode\": \"051\"\n },\n {\n \"name\": \"Kranj\",\n \"translationKey\": \"slovenia_region_name_052\",\n \"shortCode\": \"052\"\n },\n {\n \"name\": \"Kranjska Gora\",\n \"translationKey\": \"slovenia_region_name_053\",\n \"shortCode\": \"053\"\n },\n {\n \"name\": \"Krizevci\",\n \"translationKey\": \"slovenia_region_name_166\",\n \"shortCode\": \"166\"\n },\n {\n \"name\": \"Krsko\",\n \"translationKey\": \"slovenia_region_name_054\",\n \"shortCode\": \"054\"\n },\n {\n \"name\": \"Kungota\",\n \"translationKey\": \"slovenia_region_name_055\",\n \"shortCode\": \"055\"\n },\n {\n \"name\": \"Kuzma\",\n \"translationKey\": \"slovenia_region_name_056\",\n \"shortCode\": \"056\"\n },\n {\n \"name\": \"Lasko\",\n \"translationKey\": \"slovenia_region_name_057\",\n \"shortCode\": \"057\"\n },\n {\n \"name\": \"Lenart\",\n \"translationKey\": \"slovenia_region_name_058\",\n \"shortCode\": \"058\"\n },\n {\n \"name\": \"Lendava\",\n \"translationKey\": \"slovenia_region_name_059\",\n \"shortCode\": \"059\"\n },\n {\n \"name\": \"Litija\",\n \"translationKey\": \"slovenia_region_name_060\",\n \"shortCode\": \"060\"\n },\n {\n \"name\": \"Ljubljana\",\n \"translationKey\": \"slovenia_region_name_061\",\n \"shortCode\": \"061\"\n },\n {\n \"name\": \"Ljubno\",\n \"translationKey\": \"slovenia_region_name_062\",\n \"shortCode\": \"062\"\n },\n {\n \"name\": \"Ljutomer\",\n \"translationKey\": \"slovenia_region_name_063\",\n \"shortCode\": \"063\"\n },\n {\n \"name\": \"Log-Dragomer\",\n \"translationKey\": \"slovenia_region_name_208\",\n \"shortCode\": \"208\"\n },\n {\n \"name\": \"Logatec\",\n \"translationKey\": \"slovenia_region_name_064\",\n \"shortCode\": \"064\"\n },\n {\n \"name\": \"Loska Dolina\",\n \"translationKey\": \"slovenia_region_name_065\",\n \"shortCode\": \"065\"\n },\n {\n \"name\": \"Loski Potok\",\n \"translationKey\": \"slovenia_region_name_066\",\n \"shortCode\": \"066\"\n },\n {\n \"name\": \"Lovrenc na Pohorju\",\n \"translationKey\": \"slovenia_region_name_167\",\n \"shortCode\": \"167\"\n },\n {\n \"name\": \"Lukovica\",\n \"translationKey\": \"slovenia_region_name_068\",\n \"shortCode\": \"068\"\n },\n {\n \"name\": \"Luce\",\n \"translationKey\": \"slovenia_region_name_067\",\n \"shortCode\": \"067\"\n },\n {\n \"name\": \"Majsperk\",\n \"translationKey\": \"slovenia_region_name_069\",\n \"shortCode\": \"069\"\n },\n {\n \"name\": \"Makole\",\n \"translationKey\": \"slovenia_region_name_198\",\n \"shortCode\": \"198\"\n },\n {\n \"name\": \"Maribor\",\n \"translationKey\": \"slovenia_region_name_070\",\n \"shortCode\": \"070\"\n },\n {\n \"name\": \"Markovci\",\n \"translationKey\": \"slovenia_region_name_168\",\n \"shortCode\": \"168\"\n },\n {\n \"name\": \"Medvode\",\n \"translationKey\": \"slovenia_region_name_071\",\n \"shortCode\": \"071\"\n },\n {\n \"name\": \"Menges\",\n \"translationKey\": \"slovenia_region_name_072\",\n \"shortCode\": \"072\"\n },\n {\n \"name\": \"Metlika\",\n \"translationKey\": \"slovenia_region_name_073\",\n \"shortCode\": \"073\"\n },\n {\n \"name\": \"Mezica\",\n \"translationKey\": \"slovenia_region_name_074\",\n \"shortCode\": \"074\"\n },\n {\n \"name\": \"Miklavz na Dravskem Polju\",\n \"translationKey\": \"slovenia_region_name_169\",\n \"shortCode\": \"169\"\n },\n {\n \"name\": \"Miren-Kostanjevica\",\n \"translationKey\": \"slovenia_region_name_075\",\n \"shortCode\": \"075\"\n },\n {\n \"name\": \"Mirna\",\n \"translationKey\": \"slovenia_region_name_212\",\n \"shortCode\": \"212\"\n },\n {\n \"name\": \"Mirna Pec\",\n \"translationKey\": \"slovenia_region_name_170\",\n \"shortCode\": \"170\"\n },\n {\n \"name\": \"Mislinja\",\n \"translationKey\": \"slovenia_region_name_076\",\n \"shortCode\": \"076\"\n },\n {\n \"name\": \"Mokronog-Trebelno\",\n \"translationKey\": \"slovenia_region_name_199\",\n \"shortCode\": \"199\"\n },\n {\n \"name\": \"Moravce\",\n \"translationKey\": \"slovenia_region_name_077\",\n \"shortCode\": \"077\"\n },\n {\n \"name\": \"Moravske Toplice\",\n \"translationKey\": \"slovenia_region_name_078\",\n \"shortCode\": \"078\"\n },\n {\n \"name\": \"Mozirje\",\n \"translationKey\": \"slovenia_region_name_079\",\n \"shortCode\": \"079\"\n },\n {\n \"name\": \"Murska Sobota\",\n \"translationKey\": \"slovenia_region_name_080\",\n \"shortCode\": \"080\"\n },\n {\n \"name\": \"Naklo\",\n \"translationKey\": \"slovenia_region_name_082\",\n \"shortCode\": \"082\"\n },\n {\n \"name\": \"Nazarje\",\n \"translationKey\": \"slovenia_region_name_083\",\n \"shortCode\": \"083\"\n },\n {\n \"name\": \"Nova Gorica\",\n \"translationKey\": \"slovenia_region_name_084\",\n \"shortCode\": \"084\"\n },\n {\n \"name\": \"Novo Mesto\",\n \"translationKey\": \"slovenia_region_name_085\",\n \"shortCode\": \"085\"\n },\n {\n \"name\": \"Odranci\",\n \"translationKey\": \"slovenia_region_name_086\",\n \"shortCode\": \"086\"\n },\n {\n \"name\": \"Ormoz\",\n \"translationKey\": \"slovenia_region_name_087\",\n \"shortCode\": \"087\"\n },\n {\n \"name\": \"Osilnica\",\n \"translationKey\": \"slovenia_region_name_088\",\n \"shortCode\": \"088\"\n },\n {\n \"name\": \"Pesnica\",\n \"translationKey\": \"slovenia_region_name_089\",\n \"shortCode\": \"089\"\n },\n {\n \"name\": \"Piran\",\n \"translationKey\": \"slovenia_region_name_090\",\n \"shortCode\": \"090\"\n },\n {\n \"name\": \"Pivka\",\n \"translationKey\": \"slovenia_region_name_091\",\n \"shortCode\": \"091\"\n },\n {\n \"name\": \"Podcetrtek\",\n \"translationKey\": \"slovenia_region_name_092\",\n \"shortCode\": \"092\"\n },\n {\n \"name\": \"Podlehnik\",\n \"translationKey\": \"slovenia_region_name_172\",\n \"shortCode\": \"172\"\n },\n {\n \"name\": \"Podvelka\",\n \"translationKey\": \"slovenia_region_name_093\",\n \"shortCode\": \"093\"\n },\n {\n \"name\": \"Poljcane\",\n \"translationKey\": \"slovenia_region_name_200\",\n \"shortCode\": \"200\"\n },\n {\n \"name\": \"Postojna\",\n \"translationKey\": \"slovenia_region_name_094\",\n \"shortCode\": \"094\"\n },\n {\n \"name\": \"Prebold\",\n \"translationKey\": \"slovenia_region_name_174\",\n \"shortCode\": \"174\"\n },\n {\n \"name\": \"Preddvor\",\n \"translationKey\": \"slovenia_region_name_095\",\n \"shortCode\": \"095\"\n },\n {\n \"name\": \"Prevalje\",\n \"translationKey\": \"slovenia_region_name_175\",\n \"shortCode\": \"175\"\n },\n {\n \"name\": \"Ptuj\",\n \"translationKey\": \"slovenia_region_name_096\",\n \"shortCode\": \"096\"\n },\n {\n \"name\": \"Race-Fram\",\n \"translationKey\": \"slovenia_region_name_098\",\n \"shortCode\": \"098\"\n },\n {\n \"name\": \"Radece\",\n \"translationKey\": \"slovenia_region_name_099\",\n \"shortCode\": \"099\"\n },\n {\n \"name\": \"Radenci\",\n \"translationKey\": \"slovenia_region_name_100\",\n \"shortCode\": \"100\"\n },\n {\n \"name\": \"Radlje ob Dravi\",\n \"translationKey\": \"slovenia_region_name_101\",\n \"shortCode\": \"101\"\n },\n {\n \"name\": \"Radovljica\",\n \"translationKey\": \"slovenia_region_name_102\",\n \"shortCode\": \"102\"\n },\n {\n \"name\": \"Ravne na Koroskem\",\n \"translationKey\": \"slovenia_region_name_103\",\n \"shortCode\": \"103\"\n },\n {\n \"name\": \"Razkrizje\",\n \"translationKey\": \"slovenia_region_name_176\",\n \"shortCode\": \"176\"\n },\n {\n \"name\": \"Recica ob Savinji\",\n \"translationKey\": \"slovenia_region_name_209\",\n \"shortCode\": \"209\"\n },\n {\n \"name\": \"Rence-Vogrsko\",\n \"translationKey\": \"slovenia_region_name_201\",\n \"shortCode\": \"201\"\n },\n {\n \"name\": \"Ribnica\",\n \"translationKey\": \"slovenia_region_name_104\",\n \"shortCode\": \"104\"\n },\n {\n \"name\": \"Ribnica na Poboriu\",\n \"translationKey\": \"slovenia_region_name_177\",\n \"shortCode\": \"177\"\n },\n {\n \"name\": \"Rogaska Slatina\",\n \"translationKey\": \"slovenia_region_name_106\",\n \"shortCode\": \"106\"\n },\n {\n \"name\": \"Rogasovci\",\n \"translationKey\": \"slovenia_region_name_105\",\n \"shortCode\": \"105\"\n },\n {\n \"name\": \"Rogatec\",\n \"translationKey\": \"slovenia_region_name_107\",\n \"shortCode\": \"107\"\n },\n {\n \"name\": \"Ruse\",\n \"translationKey\": \"slovenia_region_name_108\",\n \"shortCode\": \"108\"\n },\n {\n \"name\": \"Salovci\",\n \"translationKey\": \"slovenia_region_name_033\",\n \"shortCode\": \"033\"\n },\n {\n \"name\": \"Selnica ob Dravi\",\n \"translationKey\": \"slovenia_region_name_178\",\n \"shortCode\": \"178\"\n },\n {\n \"name\": \"Semic\",\n \"translationKey\": \"slovenia_region_name_109\",\n \"shortCode\": \"109\"\n },\n {\n \"name\": \"Sempeter-Vrtojba\",\n \"translationKey\": \"slovenia_region_name_183\",\n \"shortCode\": \"183\"\n },\n {\n \"name\": \"Sencur\",\n \"translationKey\": \"slovenia_region_name_117\",\n \"shortCode\": \"117\"\n },\n {\n \"name\": \"Sentilj\",\n \"translationKey\": \"slovenia_region_name_118\",\n \"shortCode\": \"118\"\n },\n {\n \"name\": \"Sentjernej\",\n \"translationKey\": \"slovenia_region_name_119\",\n \"shortCode\": \"119\"\n },\n {\n \"name\": \"Sentjur\",\n \"translationKey\": \"slovenia_region_name_120\",\n \"shortCode\": \"120\"\n },\n {\n \"name\": \"Sentrupert\",\n \"translationKey\": \"slovenia_region_name_211\",\n \"shortCode\": \"211\"\n },\n {\n \"name\": \"Sevnica\",\n \"translationKey\": \"slovenia_region_name_110\",\n \"shortCode\": \"110\"\n },\n {\n \"name\": \"Sezana\",\n \"translationKey\": \"slovenia_region_name_111\",\n \"shortCode\": \"111\"\n },\n {\n \"name\": \"Skocjan\",\n \"translationKey\": \"slovenia_region_name_121\",\n \"shortCode\": \"121\"\n },\n {\n \"name\": \"Skofja Loka\",\n \"translationKey\": \"slovenia_region_name_122\",\n \"shortCode\": \"122\"\n },\n {\n \"name\": \"Skofljica\",\n \"translationKey\": \"slovenia_region_name_123\",\n \"shortCode\": \"123\"\n },\n {\n \"name\": \"Slovenj Gradec\",\n \"translationKey\": \"slovenia_region_name_112\",\n \"shortCode\": \"112\"\n },\n {\n \"name\": \"Slovenska Bistrica\",\n \"translationKey\": \"slovenia_region_name_113\",\n \"shortCode\": \"113\"\n },\n {\n \"name\": \"Slovenske Konjice\",\n \"translationKey\": \"slovenia_region_name_114\",\n \"shortCode\": \"114\"\n },\n {\n \"name\": \"Smarje pri elsah\",\n \"translationKey\": \"slovenia_region_name_124\",\n \"shortCode\": \"124\"\n },\n {\n \"name\": \"Smarjeske Toplice\",\n \"translationKey\": \"slovenia_region_name_206\",\n \"shortCode\": \"206\"\n },\n {\n \"name\": \"Smartno ob Paki\",\n \"translationKey\": \"slovenia_region_name_125\",\n \"shortCode\": \"125\"\n },\n {\n \"name\": \"Smartno pri Litiji\",\n \"translationKey\": \"slovenia_region_name_194\",\n \"shortCode\": \"194\"\n },\n {\n \"name\": \"Sodrazica\",\n \"translationKey\": \"slovenia_region_name_179\",\n \"shortCode\": \"179\"\n },\n {\n \"name\": \"Solcava\",\n \"translationKey\": \"slovenia_region_name_180\",\n \"shortCode\": \"180\"\n },\n {\n \"name\": \"Sostanj\",\n \"translationKey\": \"slovenia_region_name_126\",\n \"shortCode\": \"126\"\n },\n {\n \"name\": \"Sredisce ob Dravi\",\n \"translationKey\": \"slovenia_region_name_202\",\n \"shortCode\": \"202\"\n },\n {\n \"name\": \"Starse\",\n \"translationKey\": \"slovenia_region_name_115\",\n \"shortCode\": \"115\"\n },\n {\n \"name\": \"Store\",\n \"translationKey\": \"slovenia_region_name_127\",\n \"shortCode\": \"127\"\n },\n {\n \"name\": \"Straza\",\n \"translationKey\": \"slovenia_region_name_203\",\n \"shortCode\": \"203\"\n },\n {\n \"name\": \"Sveta Ana\",\n \"translationKey\": \"slovenia_region_name_181\",\n \"shortCode\": \"181\"\n },\n {\n \"name\": \"Sveta Trojica v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_204\",\n \"shortCode\": \"204\"\n },\n {\n \"name\": \"Sveta Andraz v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_182\",\n \"shortCode\": \"182\"\n },\n {\n \"name\": \"Sveti Jurij\",\n \"translationKey\": \"slovenia_region_name_116\",\n \"shortCode\": \"116\"\n },\n {\n \"name\": \"Sveti Jurij v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_210\",\n \"shortCode\": \"210\"\n },\n {\n \"name\": \"Sveti Tomaz\",\n \"translationKey\": \"slovenia_region_name_205\",\n \"shortCode\": \"205\"\n },\n {\n \"name\": \"Tabor\",\n \"translationKey\": \"slovenia_region_name_184\",\n \"shortCode\": \"184\"\n },\n {\n \"name\": \"Tisina\",\n \"translationKey\": \"slovenia_region_name_010\",\n \"shortCode\": \"010\"\n },\n {\n \"name\": \"Tolmin\",\n \"translationKey\": \"slovenia_region_name_128\",\n \"shortCode\": \"128\"\n },\n {\n \"name\": \"Trbovlje\",\n \"translationKey\": \"slovenia_region_name_129\",\n \"shortCode\": \"129\"\n },\n {\n \"name\": \"Trebnje\",\n \"translationKey\": \"slovenia_region_name_130\",\n \"shortCode\": \"130\"\n },\n {\n \"name\": \"Trnovska Vas\",\n \"translationKey\": \"slovenia_region_name_185\",\n \"shortCode\": \"185\"\n },\n {\n \"name\": \"Trzin\",\n \"translationKey\": \"slovenia_region_name_186\",\n \"shortCode\": \"186\"\n },\n {\n \"name\": \"Trzic\",\n \"translationKey\": \"slovenia_region_name_131\",\n \"shortCode\": \"131\"\n },\n {\n \"name\": \"Turnisce\",\n \"translationKey\": \"slovenia_region_name_132\",\n \"shortCode\": \"132\"\n },\n {\n \"name\": \"Velenje\",\n \"translationKey\": \"slovenia_region_name_133\",\n \"shortCode\": \"133\"\n },\n {\n \"name\": \"Velika Polana\",\n \"translationKey\": \"slovenia_region_name_187\",\n \"shortCode\": \"187\"\n },\n {\n \"name\": \"Velike Lasce\",\n \"translationKey\": \"slovenia_region_name_134\",\n \"shortCode\": \"134\"\n },\n {\n \"name\": \"Verzej\",\n \"translationKey\": \"slovenia_region_name_188\",\n \"shortCode\": \"188\"\n },\n {\n \"name\": \"Videm\",\n \"translationKey\": \"slovenia_region_name_135\",\n \"shortCode\": \"135\"\n },\n {\n \"name\": \"Vipava\",\n \"translationKey\": \"slovenia_region_name_136\",\n \"shortCode\": \"136\"\n },\n {\n \"name\": \"Vitanje\",\n \"translationKey\": \"slovenia_region_name_137\",\n \"shortCode\": \"137\"\n },\n {\n \"name\": \"Vodice\",\n \"translationKey\": \"slovenia_region_name_138\",\n \"shortCode\": \"138\"\n },\n {\n \"name\": \"Vojnik\",\n \"translationKey\": \"slovenia_region_name_139\",\n \"shortCode\": \"139\"\n },\n {\n \"name\": \"Vransko\",\n \"translationKey\": \"slovenia_region_name_189\",\n \"shortCode\": \"189\"\n },\n {\n \"name\": \"Vrhnika\",\n \"translationKey\": \"slovenia_region_name_140\",\n \"shortCode\": \"140\"\n },\n {\n \"name\": \"Vuzenica\",\n \"translationKey\": \"slovenia_region_name_141\",\n \"shortCode\": \"141\"\n },\n {\n \"name\": \"Zagorje ob Savi\",\n \"translationKey\": \"slovenia_region_name_142\",\n \"shortCode\": \"142\"\n },\n {\n \"name\": \"Zavrc\",\n \"translationKey\": \"slovenia_region_name_143\",\n \"shortCode\": \"143\"\n },\n {\n \"name\": \"Zrece\",\n \"translationKey\": \"slovenia_region_name_144\",\n \"shortCode\": \"144\"\n },\n {\n \"name\": \"Zalec\",\n \"translationKey\": \"slovenia_region_name_190\",\n \"shortCode\": \"190\"\n },\n {\n \"name\": \"Zelezniki\",\n \"translationKey\": \"slovenia_region_name_146\",\n \"shortCode\": \"146\"\n },\n {\n \"name\": \"Zetale\",\n \"translationKey\": \"slovenia_region_name_191\",\n \"shortCode\": \"191\"\n },\n {\n \"name\": \"Ziri\",\n \"translationKey\": \"slovenia_region_name_147\",\n \"shortCode\": \"147\"\n },\n {\n \"name\": \"Zirovnica\",\n \"translationKey\": \"slovenia_region_name_192\",\n \"shortCode\": \"192\"\n },\n {\n \"name\": \"Zuzemberk\",\n \"translationKey\": \"slovenia_region_name_193\",\n \"shortCode\": \"193\"\n }\n ]\n },\n {\n \"countryName\": \"South Africa\",\n \"countryShortCode\": \"ZA\",\n \"regions\": [\n {\n \"name\": \"Eastern Cape\",\n \"shortCode\": \"EC\",\n \"translationKey\": \"South Africa_region_EC\"\n },\n {\n \"name\": \"Free State\",\n \"shortCode\": \"FS\",\n \"translationKey\": \"South Africa_region_FS\"\n },\n {\n \"name\": \"Gauteng\",\n \"shortCode\": \"GT\",\n \"translationKey\": \"South Africa_region_GT\"\n },\n {\n \"name\": \"KwaZulu-Natal\",\n \"shortCode\": \"NL\",\n \"translationKey\": \"South Africa_region_NL\"\n },\n {\n \"name\": \"Limpopo\",\n \"shortCode\": \"LP\",\n \"translationKey\": \"South Africa_region_LP\"\n },\n {\n \"name\": \"Mpumalanga\",\n \"shortCode\": \"MP\",\n \"translationKey\": \"South Africa_region_MP\"\n },\n {\n \"name\": \"Northern Cape\",\n \"shortCode\": \"NC\",\n \"translationKey\": \"South Africa_region_NC\"\n },\n {\n \"name\": \"North West\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"South Africa_region_NW\"\n },\n {\n \"name\": \"Western Cape\",\n \"shortCode\": \"WC\",\n \"translationKey\": \"South Africa_region_WC\"\n }\n ],\n \"translationKey\": \"country_name_South Africa\"\n },\n {\n \"countryName\": \"Spain\",\n \"translationKey\": \"country_name_spain\",\n \"countryShortCode\": \"ES\",\n \"regions\": [\n {\n \"name\": \"Albacete\",\n \"translationKey\": \"spain_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Alicante\",\n \"translationKey\": \"spain_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Almería\",\n \"translationKey\": \"spain_region_name_an\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Araba/Álava\",\n \"translationKey\": \"spain_region_name_vi\",\n \"shortCode\": \"VI\"\n },\n {\n \"name\": \"Asturias\",\n \"translationKey\": \"spain_region_name_o\",\n \"shortCode\": \"O\"\n },\n {\n \"name\": \"Ávila\",\n \"translationKey\": \"spain_region_name_av\",\n \"shortCode\": \"AV\"\n },\n {\n \"name\": \"Badajoz\",\n \"translationKey\": \"spain_region_name_ba\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Barcelona\",\n \"translationKey\": \"spain_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Bizkaia\",\n \"translationKey\": \"spain_region_name_bi\",\n \"shortCode\": \"BI\"\n },\n {\n \"name\": \"Burgos\",\n \"translationKey\": \"spain_region_name_bu\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Cáceres\",\n \"translationKey\": \"spain_region_name_cc\",\n \"shortCode\": \"CC\"\n },\n {\n \"name\": \"Cádiz\",\n \"translationKey\": \"spain_region_name_ca\",\n \"shortCode\": \"CA\"\n },\n {\n \"name\": \"Cantabria\",\n \"translationKey\": \"spain_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Castellón/Castelló\",\n \"translationKey\": \"spain_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Ceuta\",\n \"translationKey\": \"spain_region_name_ce\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Ciudad Real\",\n \"translationKey\": \"spain_region_name_cr\",\n \"shortCode\": \"CR\"\n },\n {\n \"name\": \"Córdoba\",\n \"translationKey\": \"spain_region_name_co\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"A Coruña\",\n \"translationKey\": \"spain_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Cuenca\",\n \"translationKey\": \"spain_region_name_cu\",\n \"shortCode\": \"CU\"\n },\n {\n \"name\": \"Gipuzkoa\",\n \"translationKey\": \"spain_region_name_ss\",\n \"shortCode\": \"SS\"\n },\n {\n \"name\": \"Girona\",\n \"translationKey\": \"spain_region_name_gi\",\n \"shortCode\": \"GI\"\n },\n {\n \"name\": \"Granada\",\n \"translationKey\": \"spain_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Guadalajara\",\n \"translationKey\": \"spain_region_name_gu\",\n \"shortCode\": \"GU\"\n },\n {\n \"name\": \"Huelva\",\n \"translationKey\": \"spain_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Huesca\",\n \"translationKey\": \"spain_region_name_hu\",\n \"shortCode\": \"HU\"\n },\n {\n \"name\": \"Illes Balears\",\n \"translationKey\": \"spain_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Jaén\",\n \"translationKey\": \"spain_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"León\",\n \"translationKey\": \"spain_region_name_le\",\n \"shortCode\": \"LE\"\n },\n {\n \"name\": \"Lleida\",\n \"translationKey\": \"spain_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Lugo\",\n \"translationKey\": \"spain_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Madrid\",\n \"translationKey\": \"spain_region_name_m,\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Málaga\",\n \"translationKey\": \"spain_region_name_ma\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Melilla\",\n \"translationKey\": \"spain_region_name_ml\",\n \"shortCode\": \"ML\"\n },\n {\n \"name\": \"Murcia\",\n \"translationKey\": \"spain_region_name_mu\",\n \"shortCode\": \"MU\"\n },\n {\n \"name\": \"Navarra/Nafarroa\",\n \"translationKey\": \"spain_region_name_na\",\n \"shortCode\": \"NA\"\n },\n {\n \"name\": \"Ourense\",\n \"translationKey\": \"spain_region_name_or\",\n \"shortCode\": \"OR\"\n },\n {\n \"name\": \"Palencia\",\n \"translationKey\": \"spain_region_name_p\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Las Palmas\",\n \"translationKey\": \"spain_region_name_gc\",\n \"shortCode\": \"GC\"\n },\n {\n \"name\": \"Pontevedra\",\n \"translationKey\": \"spain_region_name_po\",\n \"shortCode\": \"PO\"\n },\n {\n \"name\": \"La Rioja\",\n \"translationKey\": \"spain_region_name_lo\",\n \"shortCode\": \"LO\"\n },\n {\n \"name\": \"Salamanca\",\n \"translationKey\": \"spain_region_name_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Santa Cruz de Tenerife\",\n \"translationKey\": \"spain_region_name_tf\",\n \"shortCode\": \"TF\"\n },\n {\n \"name\": \"Segovia\",\n \"translationKey\": \"spain_region_name_sg\",\n \"shortCode\": \"SG\"\n },\n {\n \"name\": \"Sevilla\",\n \"translationKey\": \"spain_region_name_se\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Soria\",\n \"translationKey\": \"spain_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Tarragona\",\n \"translationKey\": \"spain_region_name_t\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Teruel\",\n \"translationKey\": \"spain_region_name_te\",\n \"shortCode\": \"TE\"\n },\n {\n \"name\": \"Toledo\",\n \"translationKey\": \"spain_region_name_to\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Valencia/València\",\n \"translationKey\": \"spain_region_name_v\",\n \"shortCode\": \"V\"\n },\n {\n \"name\": \"Valladolid\",\n \"translationKey\": \"spain_region_name_va\",\n \"shortCode\": \"VA\"\n },\n {\n \"name\": \"Zamora\",\n \"translationKey\": \"spain_region_name_za\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Zaragoza\",\n \"translationKey\": \"spain_region_name_z\",\n \"shortCode\": \"Z\"\n }\n ]\n },\n {\n \"countryName\": \"Sudan\",\n \"countryShortCode\": \"SD\",\n \"regions\": [\n {\n \"name\": \"Al Bahr al Ahmar\",\n \"shortCode\": \"RS\",\n \"translationKey\": \"Sudan_region_RS\"\n },\n {\n \"name\": \"Al Jazirah\",\n \"shortCode\": \"GZ\",\n \"translationKey\": \"Sudan_region_GZ\"\n },\n {\n \"name\": \"Al Khartum\",\n \"shortCode\": \"KH\",\n \"translationKey\": \"Sudan_region_KH\"\n },\n {\n \"name\": \"Al Qadarif\",\n \"shortCode\": \"GD\",\n \"translationKey\": \"Sudan_region_GD\"\n },\n {\n \"name\": \"An Nil al Abyad\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"Sudan_region_NW\"\n },\n {\n \"name\": \"An Nil al Azraq\",\n \"shortCode\": \"NB\",\n \"translationKey\": \"Sudan_region_NB\"\n },\n {\n \"name\": \"Ash Shamaliyah\",\n \"shortCode\": \"NO\",\n \"translationKey\": \"Sudan_region_NO\"\n },\n {\n \"name\": \"Gharb Darfur\",\n \"shortCode\": \"DW\",\n \"translationKey\": \"Sudan_region_DW\"\n },\n {\n \"name\": \"Gharb Kurdufan\",\n \"shortCode\": \"GK\",\n \"translationKey\": \"Sudan_region_GK\"\n },\n {\n \"name\": \"Janub Darfur\",\n \"shortCode\": \"DS\",\n \"translationKey\": \"Sudan_region_DS\"\n },\n {\n \"name\": \"Janub Kurdufan\",\n \"shortCode\": \"KS\",\n \"translationKey\": \"Sudan_region_KS\"\n },\n {\n \"name\": \"Kassala\",\n \"shortCode\": \"KA\",\n \"translationKey\": \"Sudan_region_KA\"\n },\n {\n \"name\": \"Nahr an Nil\",\n \"shortCode\": \"NR\",\n \"translationKey\": \"Sudan_region_NR\"\n },\n {\n \"name\": \"Shamal Darfur\",\n \"shortCode\": \"DN\",\n \"translationKey\": \"Sudan_region_DN\"\n },\n {\n \"name\": \"Sharq Darfur\",\n \"shortCode\": \"DE\",\n \"translationKey\": \"Sudan_region_DE\"\n },\n {\n \"name\": \"Shiamal Kurdufan\",\n \"shortCode\": \"KN\",\n \"translationKey\": \"Sudan_region_KN\"\n },\n {\n \"name\": \"Sinnar\",\n \"shortCode\": \"SI\",\n \"translationKey\": \"Sudan_region_SI\"\n },\n {\n \"name\": \"Wasat Darfur Zalinjay\",\n \"shortCode\": \"DC\",\n \"translationKey\": \"Sudan_region_DC\"\n }\n ],\n \"translationKey\": \"country_name_Sudan\"\n },\n {\n \"countryName\": \"Sweden\",\n \"translationKey\": \"country_name_sweden\",\n \"countryShortCode\": \"SE\",\n \"regions\": [\n {\n \"name\": \"Blekinge\",\n \"translationKey\": \"sweden_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Dalarna\",\n \"translationKey\": \"sweden_region_name_w\",\n \"shortCode\": \"W\"\n },\n {\n \"name\": \"Gävleborg\",\n \"translationKey\": \"sweden_region_name_x\",\n \"shortCode\": \"X\"\n },\n {\n \"name\": \"Gotland\",\n \"translationKey\": \"sweden_region_name_i\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Halland\",\n \"translationKey\": \"sweden_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Jämtland\",\n \"translationKey\": \"sweden_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"Jönköping\",\n \"translationKey\": \"sweden_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Kalmar\",\n \"translationKey\": \"sweden_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Kronoberg\",\n \"translationKey\": \"sweden_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Norrbotten\",\n \"translationKey\": \"sweden_region_name_bd\",\n \"shortCode\": \"BD\"\n },\n {\n \"name\": \"Örebro\",\n \"translationKey\": \"sweden_region_name_t\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Östergötland\",\n \"translationKey\": \"sweden_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Skåne\",\n \"translationKey\": \"sweden_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Södermanland\",\n \"translationKey\": \"sweden_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Stockholm\",\n \"translationKey\": \"sweden_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Uppsala\",\n \"translationKey\": \"sweden_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Värmland\",\n \"translationKey\": \"sweden_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Västerbotten\",\n \"translationKey\": \"sweden_region_name_ac\",\n \"shortCode\": \"AC\"\n },\n {\n \"name\": \"Västernorrland\",\n \"translationKey\": \"sweden_region_name_y\",\n \"shortCode\": \"Y\"\n },\n {\n \"name\": \"Västmanland\",\n \"translationKey\": \"sweden_region_name_u\",\n \"shortCode\": \"U\"\n },\n {\n \"name\": \"Västra Götaland\",\n \"translationKey\": \"sweden_region_name_o\",\n \"shortCode\": \"O\"\n }\n ]\n },\n {\n \"countryName\": \"Switzerland\",\n \"countryShortCode\": \"CH\",\n \"regions\": [\n {\n \"name\": \"Aargau\",\n \"shortCode\": \"AG\",\n \"translationKey\": \"Switzerland_region_AG\"\n },\n {\n \"name\": \"Appenzell Ausserrhoden\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"Switzerland_region_AR\"\n },\n {\n \"name\": \"Appenzell Innerhoden\",\n \"shortCode\": \"AI\",\n \"translationKey\": \"Switzerland_region_AI\"\n },\n {\n \"name\": \"Basel-Landschaft\",\n \"shortCode\": \"BL\",\n \"translationKey\": \"Switzerland_region_BL\"\n },\n {\n \"name\": \"Basel-Stadt\",\n \"shortCode\": \"BS\",\n \"translationKey\": \"Switzerland_region_BS\"\n },\n {\n \"name\": \"Bern\",\n \"shortCode\": \"BE\",\n \"translationKey\": \"Switzerland_region_BE\"\n },\n {\n \"name\": \"Fribourg\",\n \"shortCode\": \"FR\",\n \"translationKey\": \"Switzerland_region_FR\"\n },\n {\n \"name\": \"Genève\",\n \"shortCode\": \"GE\",\n \"translationKey\": \"Switzerland_region_GE\"\n },\n {\n \"name\": \"Glarus\",\n \"shortCode\": \"GL\",\n \"translationKey\": \"Switzerland_region_GL\"\n },\n {\n \"name\": \"Graubünden\",\n \"shortCode\": \"GR\",\n \"translationKey\": \"Switzerland_region_GR\"\n },\n {\n \"name\": \"Jura\",\n \"shortCode\": \"JU\",\n \"translationKey\": \"Switzerland_region_JU\"\n },\n {\n \"name\": \"Luzern\",\n \"shortCode\": \"LU\",\n \"translationKey\": \"Switzerland_region_LU\"\n },\n {\n \"name\": \"Neuchâtel\",\n \"shortCode\": \"NE\",\n \"translationKey\": \"Switzerland_region_NE\"\n },\n {\n \"name\": \"Nidwalden\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"Switzerland_region_NW\"\n },\n {\n \"name\": \"Obwalden\",\n \"shortCode\": \"OW\",\n \"translationKey\": \"Switzerland_region_OW\"\n },\n {\n \"name\": \"Sankt Gallen\",\n \"shortCode\": \"SG\",\n \"translationKey\": \"Switzerland_region_SG\"\n },\n {\n \"name\": \"Schaffhausen\",\n \"shortCode\": \"SH\",\n \"translationKey\": \"Switzerland_region_SH\"\n },\n {\n \"name\": \"Schwyz\",\n \"shortCode\": \"SZ\",\n \"translationKey\": \"Switzerland_region_SZ\"\n },\n {\n \"name\": \"Solothurn\",\n \"shortCode\": \"SO\",\n \"translationKey\": \"Switzerland_region_SO\"\n },\n {\n \"name\": \"Thurgau\",\n \"shortCode\": \"TG\",\n \"translationKey\": \"Switzerland_region_TG\"\n },\n {\n \"name\": \"Ticino\",\n \"shortCode\": \"TI\",\n \"translationKey\": \"Switzerland_region_TI\"\n },\n {\n \"name\": \"Uri\",\n \"shortCode\": \"UR\",\n \"translationKey\": \"Switzerland_region_UR\"\n },\n {\n \"name\": \"Valais\",\n \"shortCode\": \"VS\",\n \"translationKey\": \"Switzerland_region_VS\"\n },\n {\n \"name\": \"Vaud\",\n \"shortCode\": \"VD\",\n \"translationKey\": \"Switzerland_region_VD\"\n },\n {\n \"name\": \"Zug\",\n \"shortCode\": \"ZG\",\n \"translationKey\": \"Switzerland_region_ZG\"\n },\n {\n \"name\": \"Zürich\",\n \"shortCode\": \"ZH\",\n \"translationKey\": \"Switzerland_region_ZH\"\n }\n ],\n \"translationKey\": \"country_name_Switzerland\"\n },\n {\n \"countryName\": \"Tanzania, United Republic of\",\n \"countryShortCode\": \"TZ\",\n \"regions\": [\n {\n \"name\": \"Arusha\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Tanzania, United Republic of_region_01\"\n },\n {\n \"name\": \"Coast\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Tanzania, United Republic of_region_19\"\n },\n {\n \"name\": \"Dar es Salaam\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Tanzania, United Republic of_region_02\"\n },\n {\n \"name\": \"Dodoma\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Tanzania, United Republic of_region_03\"\n },\n {\n \"name\": \"Iringa\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Tanzania, United Republic of_region_04\"\n },\n {\n \"name\": \"Kagera\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Tanzania, United Republic of_region_05\"\n },\n {\n \"name\": \"Kigoma\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Tanzania, United Republic of_region_08\"\n },\n {\n \"name\": \"Kilimanjaro\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Tanzania, United Republic of_region_09\"\n },\n {\n \"name\": \"Lindi\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Tanzania, United Republic of_region_12\"\n },\n {\n \"name\": \"Manyara\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Tanzania, United Republic of_region_26\"\n },\n {\n \"name\": \"Mara\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Tanzania, United Republic of_region_13\"\n },\n {\n \"name\": \"Mbeya\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Tanzania, United Republic of_region_14\"\n },\n {\n \"name\": \"Morogoro\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Tanzania, United Republic of_region_16\"\n },\n {\n \"name\": \"Mtwara\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Tanzania, United Republic of_region_17\"\n },\n {\n \"name\": \"Mwanza\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Tanzania, United Republic of_region_18\"\n },\n {\n \"name\": \"Pemba North\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Tanzania, United Republic of_region_06\"\n },\n {\n \"name\": \"Pemba South\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Tanzania, United Republic of_region_10\"\n },\n {\n \"name\": \"Rukwa\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Tanzania, United Republic of_region_20\"\n },\n {\n \"name\": \"Ruvuma\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Tanzania, United Republic of_region_21\"\n },\n {\n \"name\": \"Shinyanga\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Tanzania, United Republic of_region_22\"\n },\n {\n \"name\": \"Singida\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Tanzania, United Republic of_region_23\"\n },\n {\n \"name\": \"Tabora\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Tanzania, United Republic of_region_24\"\n },\n {\n \"name\": \"Tanga\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Tanzania, United Republic of_region_25\"\n },\n {\n \"name\": \"Zanzibar North\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Tanzania, United Republic of_region_07\"\n },\n {\n \"name\": \"Zanzibar Central/South\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Tanzania, United Republic of_region_11\"\n },\n {\n \"name\": \"Zanzibar Urban/West\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Tanzania, United Republic of_region_15\"\n }\n ],\n \"translationKey\": \"country_name_Tanzania, United Republic of\"\n },\n {\n \"countryName\": \"Tunisia\",\n \"countryShortCode\": \"TN\",\n \"regions\": [\n {\n \"name\": \"Ariana\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Tunisia_region_12\"\n },\n {\n \"name\": \"Beja\",\n \"shortCode\": \"31\",\n \"translationKey\": \"Tunisia_region_31\"\n },\n {\n \"name\": \"Ben Arous\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Tunisia_region_13\"\n },\n {\n \"name\": \"Bizerte\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Tunisia_region_23\"\n },\n {\n \"name\": \"Gabes\",\n \"shortCode\": \"81\",\n \"translationKey\": \"Tunisia_region_81\"\n },\n {\n \"name\": \"Gafsa\",\n \"shortCode\": \"71\",\n \"translationKey\": \"Tunisia_region_71\"\n },\n {\n \"name\": \"Jendouba\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Tunisia_region_32\"\n },\n {\n \"name\": \"Kairouan\",\n \"shortCode\": \"41\",\n \"translationKey\": \"Tunisia_region_41\"\n },\n {\n \"name\": \"Kasserine\",\n \"shortCode\": \"42\",\n \"translationKey\": \"Tunisia_region_42\"\n },\n {\n \"name\": \"Kebili\",\n \"shortCode\": \"73\",\n \"translationKey\": \"Tunisia_region_73\"\n },\n {\n \"name\": \"Kef\",\n \"shortCode\": \"33\",\n \"translationKey\": \"Tunisia_region_33\"\n },\n {\n \"name\": \"Mahdia\",\n \"shortCode\": \"53\",\n \"translationKey\": \"Tunisia_region_53\"\n },\n {\n \"name\": \"Medenine\",\n \"shortCode\": \"82\",\n \"translationKey\": \"Tunisia_region_82\"\n },\n {\n \"name\": \"Monastir\",\n \"shortCode\": \"52\",\n \"translationKey\": \"Tunisia_region_52\"\n },\n {\n \"name\": \"Nabeul\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Tunisia_region_21\"\n },\n {\n \"name\": \"Sfax\",\n \"shortCode\": \"61\",\n \"translationKey\": \"Tunisia_region_61\"\n },\n {\n \"name\": \"Sidi Bouzid\",\n \"shortCode\": \"43\",\n \"translationKey\": \"Tunisia_region_43\"\n },\n {\n \"name\": \"Siliana\",\n \"shortCode\": \"34\",\n \"translationKey\": \"Tunisia_region_34\"\n },\n {\n \"name\": \"Sousse\",\n \"shortCode\": \"51\",\n \"translationKey\": \"Tunisia_region_51\"\n },\n {\n \"name\": \"Tataouine\",\n \"shortCode\": \"83\",\n \"translationKey\": \"Tunisia_region_83\"\n },\n {\n \"name\": \"Tozeur\",\n \"shortCode\": \"72\",\n \"translationKey\": \"Tunisia_region_72\"\n },\n {\n \"name\": \"Tunis\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Tunisia_region_11\"\n },\n {\n \"name\": \"Zaghouan\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Tunisia_region_22\"\n }\n ],\n \"translationKey\": \"country_name_Tunisia\"\n },\n {\n \"countryName\": \"Turkey\",\n \"countryShortCode\": \"TR\",\n \"regions\": [\n {\n \"name\": \"Adana\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Turkey_region_01\"\n },\n {\n \"name\": \"Adiyaman\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Turkey_region_02\"\n },\n {\n \"name\": \"Afyonkarahisar\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Turkey_region_03\"\n },\n {\n \"name\": \"Agri\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Turkey_region_04\"\n },\n {\n \"name\": \"Aksaray\",\n \"shortCode\": \"68\",\n \"translationKey\": \"Turkey_region_68\"\n },\n {\n \"name\": \"Amasya\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Turkey_region_05\"\n },\n {\n \"name\": \"Ankara\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Turkey_region_06\"\n },\n {\n \"name\": \"Antalya\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Turkey_region_07\"\n },\n {\n \"name\": \"Ardahan\",\n \"shortCode\": \"75\",\n \"translationKey\": \"Turkey_region_75\"\n },\n {\n \"name\": \"Artvin\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Turkey_region_08\"\n },\n {\n \"name\": \"Aydin\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Turkey_region_09\"\n },\n {\n \"name\": \"Balikesir\",\n \"shortCode\": \"10\",\n \"translationKey\": \"Turkey_region_10\"\n },\n {\n \"name\": \"Bartin\",\n \"shortCode\": \"74\",\n \"translationKey\": \"Turkey_region_74\"\n },\n {\n \"name\": \"Batman\",\n \"shortCode\": \"72\",\n \"translationKey\": \"Turkey_region_72\"\n },\n {\n \"name\": \"Bayburt\",\n \"shortCode\": \"69\",\n \"translationKey\": \"Turkey_region_69\"\n },\n {\n \"name\": \"Bilecik\",\n \"shortCode\": \"11\",\n \"translationKey\": \"Turkey_region_11\"\n },\n {\n \"name\": \"Bingol\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Turkey_region_12\"\n },\n {\n \"name\": \"Bitlis\",\n \"shortCode\": \"13\",\n \"translationKey\": \"Turkey_region_13\"\n },\n {\n \"name\": \"Bolu\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Turkey_region_14\"\n },\n {\n \"name\": \"Burdur\",\n \"shortCode\": \"15\",\n \"translationKey\": \"Turkey_region_15\"\n },\n {\n \"name\": \"Bursa\",\n \"shortCode\": \"16\",\n \"translationKey\": \"Turkey_region_16\"\n },\n {\n \"name\": \"Canakkale\",\n \"shortCode\": \"17\",\n \"translationKey\": \"Turkey_region_17\"\n },\n {\n \"name\": \"Cankiri\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Turkey_region_18\"\n },\n {\n \"name\": \"Corum\",\n \"shortCode\": \"19\",\n \"translationKey\": \"Turkey_region_19\"\n },\n {\n \"name\": \"Denizli\",\n \"shortCode\": \"20\",\n \"translationKey\": \"Turkey_region_20\"\n },\n {\n \"name\": \"Diyarbakir\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Turkey_region_21\"\n },\n {\n \"name\": \"Duzce\",\n \"shortCode\": \"81\",\n \"translationKey\": \"Turkey_region_81\"\n },\n {\n \"name\": \"Edirne\",\n \"shortCode\": \"22\",\n \"translationKey\": \"Turkey_region_22\"\n },\n {\n \"name\": \"Elazig\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Turkey_region_23\"\n },\n {\n \"name\": \"Erzincan\",\n \"shortCode\": \"24\",\n \"translationKey\": \"Turkey_region_24\"\n },\n {\n \"name\": \"Erzurum\",\n \"shortCode\": \"25\",\n \"translationKey\": \"Turkey_region_25\"\n },\n {\n \"name\": \"Eskisehir\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Turkey_region_26\"\n },\n {\n \"name\": \"Gaziantep\",\n \"shortCode\": \"27\",\n \"translationKey\": \"Turkey_region_27\"\n },\n {\n \"name\": \"Giresun\",\n \"shortCode\": \"28\",\n \"translationKey\": \"Turkey_region_28\"\n },\n {\n \"name\": \"Gumushane\",\n \"shortCode\": \"29\",\n \"translationKey\": \"Turkey_region_29\"\n },\n {\n \"name\": \"Hakkari\",\n \"shortCode\": \"30\",\n \"translationKey\": \"Turkey_region_30\"\n },\n {\n \"name\": \"Hatay\",\n \"shortCode\": \"31\",\n \"translationKey\": \"Turkey_region_31\"\n },\n {\n \"name\": \"Igdir\",\n \"shortCode\": \"76\",\n \"translationKey\": \"Turkey_region_76\"\n },\n {\n \"name\": \"Isparta\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Turkey_region_32\"\n },\n {\n \"name\": \"Istanbul\",\n \"shortCode\": \"34\",\n \"translationKey\": \"Turkey_region_34\"\n },\n {\n \"name\": \"Izmir\",\n \"shortCode\": \"35\",\n \"translationKey\": \"Turkey_region_35\"\n },\n {\n \"name\": \"Kahramanmaras\",\n \"shortCode\": \"46\",\n \"translationKey\": \"Turkey_region_46\"\n },\n {\n \"name\": \"Karabuk\",\n \"shortCode\": \"78\",\n \"translationKey\": \"Turkey_region_78\"\n },\n {\n \"name\": \"Karaman\",\n \"shortCode\": \"70\",\n \"translationKey\": \"Turkey_region_70\"\n },\n {\n \"name\": \"Kars\",\n \"shortCode\": \"36\",\n \"translationKey\": \"Turkey_region_36\"\n },\n {\n \"name\": \"Kastamonu\",\n \"shortCode\": \"37\",\n \"translationKey\": \"Turkey_region_37\"\n },\n {\n \"name\": \"Kayseri\",\n \"shortCode\": \"38\",\n \"translationKey\": \"Turkey_region_38\"\n },\n {\n \"name\": \"Kilis\",\n \"shortCode\": \"79\",\n \"translationKey\": \"Turkey_region_79\"\n },\n {\n \"name\": \"Kirikkale\",\n \"shortCode\": \"71\",\n \"translationKey\": \"Turkey_region_71\"\n },\n {\n \"name\": \"Kirklareli\",\n \"shortCode\": \"39\",\n \"translationKey\": \"Turkey_region_39\"\n },\n {\n \"name\": \"Kirsehir\",\n \"shortCode\": \"40\",\n \"translationKey\": \"Turkey_region_40\"\n },\n {\n \"name\": \"Kocaeli\",\n \"shortCode\": \"41\",\n \"translationKey\": \"Turkey_region_41\"\n },\n {\n \"name\": \"Konya\",\n \"shortCode\": \"42\",\n \"translationKey\": \"Turkey_region_42\"\n },\n {\n \"name\": \"Kutahya\",\n \"shortCode\": \"43\",\n \"translationKey\": \"Turkey_region_43\"\n },\n {\n \"name\": \"Malatya\",\n \"shortCode\": \"44\",\n \"translationKey\": \"Turkey_region_44\"\n },\n {\n \"name\": \"Manisa\",\n \"shortCode\": \"45\",\n \"translationKey\": \"Turkey_region_45\"\n },\n {\n \"name\": \"Mardin\",\n \"shortCode\": \"47\",\n \"translationKey\": \"Turkey_region_47\"\n },\n {\n \"name\": \"Mersin\",\n \"shortCode\": \"33\",\n \"translationKey\": \"Turkey_region_33\"\n },\n {\n \"name\": \"Mugla\",\n \"shortCode\": \"48\",\n \"translationKey\": \"Turkey_region_48\"\n },\n {\n \"name\": \"Mus\",\n \"shortCode\": \"49\",\n \"translationKey\": \"Turkey_region_49\"\n },\n {\n \"name\": \"Nevsehir\",\n \"shortCode\": \"50\",\n \"translationKey\": \"Turkey_region_50\"\n },\n {\n \"name\": \"Nigde\",\n \"shortCode\": \"51\",\n \"translationKey\": \"Turkey_region_51\"\n },\n {\n \"name\": \"Ordu\",\n \"shortCode\": \"52\",\n \"translationKey\": \"Turkey_region_52\"\n },\n {\n \"name\": \"Osmaniye\",\n \"shortCode\": \"80\",\n \"translationKey\": \"Turkey_region_80\"\n },\n {\n \"name\": \"Rize\",\n \"shortCode\": \"53\",\n \"translationKey\": \"Turkey_region_53\"\n },\n {\n \"name\": \"Sakarya\",\n \"shortCode\": \"54\",\n \"translationKey\": \"Turkey_region_54\"\n },\n {\n \"name\": \"Samsun\",\n \"shortCode\": \"55\",\n \"translationKey\": \"Turkey_region_55\"\n },\n {\n \"name\": \"Sanliurfa\",\n \"shortCode\": \"63\",\n \"translationKey\": \"Turkey_region_63\"\n },\n {\n \"name\": \"Siirt\",\n \"shortCode\": \"56\",\n \"translationKey\": \"Turkey_region_56\"\n },\n {\n \"name\": \"Sinop\",\n \"shortCode\": \"57\",\n \"translationKey\": \"Turkey_region_57\"\n },\n {\n \"name\": \"Sirnak\",\n \"shortCode\": \"73\",\n \"translationKey\": \"Turkey_region_73\"\n },\n {\n \"name\": \"Sivas\",\n \"shortCode\": \"58\",\n \"translationKey\": \"Turkey_region_58\"\n },\n {\n \"name\": \"Tekirdag\",\n \"shortCode\": \"59\",\n \"translationKey\": \"Turkey_region_59\"\n },\n {\n \"name\": \"Tokat\",\n \"shortCode\": \"60\",\n \"translationKey\": \"Turkey_region_60\"\n },\n {\n \"name\": \"Trabzon\",\n \"shortCode\": \"61\",\n \"translationKey\": \"Turkey_region_61\"\n },\n {\n \"name\": \"Tunceli\",\n \"shortCode\": \"62\",\n \"translationKey\": \"Turkey_region_62\"\n },\n {\n \"name\": \"Usak\",\n \"shortCode\": \"64\",\n \"translationKey\": \"Turkey_region_64\"\n },\n {\n \"name\": \"Van\",\n \"shortCode\": \"65\",\n \"translationKey\": \"Turkey_region_65\"\n },\n {\n \"name\": \"Yalova\",\n \"shortCode\": \"77\",\n \"translationKey\": \"Turkey_region_77\"\n },\n {\n \"name\": \"Yozgat\",\n \"shortCode\": \"66\",\n \"translationKey\": \"Turkey_region_66\"\n },\n {\n \"name\": \"Zonguldak\",\n \"shortCode\": \"67\",\n \"translationKey\": \"Turkey_region_67\"\n }\n ],\n \"translationKey\": \"country_name_Turkey\"\n },\n {\n \"countryName\": \"Ukraine\",\n \"countryShortCode\": \"UA\",\n \"regions\": [\n {\n \"name\": \"Cherkasy\",\n \"shortCode\": \"71\",\n \"translationKey\": \"Ukraine_region_71\"\n },\n {\n \"name\": \"Chernihiv\",\n \"shortCode\": \"74\",\n \"translationKey\": \"Ukraine_region_74\"\n },\n {\n \"name\": \"Chernivtsi\",\n \"shortCode\": \"77\",\n \"translationKey\": \"Ukraine_region_77\"\n },\n {\n \"name\": \"Dnipropetrovsk\",\n \"shortCode\": \"12\",\n \"translationKey\": \"Ukraine_region_12\"\n },\n {\n \"name\": \"Donetsk\",\n \"shortCode\": \"14\",\n \"translationKey\": \"Ukraine_region_14\"\n },\n {\n \"name\": \"Ivano-Frankivsk\",\n \"shortCode\": \"26\",\n \"translationKey\": \"Ukraine_region_26\"\n },\n {\n \"name\": \"Kharkiv\",\n \"shortCode\": \"63\",\n \"translationKey\": \"Ukraine_region_63\"\n },\n {\n \"name\": \"Kherson\",\n \"shortCode\": \"65\",\n \"translationKey\": \"Ukraine_region_65\"\n },\n {\n \"name\": \"Khmelnytskyi\",\n \"shortCode\": \"68\",\n \"translationKey\": \"Ukraine_region_68\"\n },\n {\n \"name\": \"Kiev\",\n \"shortCode\": \"32\",\n \"translationKey\": \"Ukraine_region_32\"\n },\n {\n \"name\": \"Kirovohrad\",\n \"shortCode\": \"35\",\n \"translationKey\": \"Ukraine_region_35\"\n },\n {\n \"name\": \"Luhansk\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Ukraine_region_09\"\n },\n {\n \"name\": \"Lviv\",\n \"shortCode\": \"46\",\n \"translationKey\": \"Ukraine_region_46\"\n },\n {\n \"name\": \"Mykolaiv\",\n \"shortCode\": \"48\",\n \"translationKey\": \"Ukraine_region_48\"\n },\n {\n \"name\": \"Odessa\",\n \"shortCode\": \"51\",\n \"translationKey\": \"Ukraine_region_51\"\n },\n {\n \"name\": \"Poltava\",\n \"shortCode\": \"53\",\n \"translationKey\": \"Ukraine_region_53\"\n },\n {\n \"name\": \"Rivne\",\n \"shortCode\": \"56\",\n \"translationKey\": \"Ukraine_region_56\"\n },\n {\n \"name\": \"Sumy\",\n \"shortCode\": \"59\",\n \"translationKey\": \"Ukraine_region_59\"\n },\n {\n \"name\": \"Ternopil\",\n \"shortCode\": \"61\",\n \"translationKey\": \"Ukraine_region_61\"\n },\n {\n \"name\": \"Vinnytsia\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Ukraine_region_05\"\n },\n {\n \"name\": \"Volyn\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Ukraine_region_07\"\n },\n {\n \"name\": \"Zakarpattia\",\n \"shortCode\": \"21\",\n \"translationKey\": \"Ukraine_region_21\"\n },\n {\n \"name\": \"Zaporizhia\",\n \"shortCode\": \"23\",\n \"translationKey\": \"Ukraine_region_23\"\n },\n {\n \"name\": \"Zhytomyr\",\n \"shortCode\": \"18\",\n \"translationKey\": \"Ukraine_region_18\"\n },\n {\n \"name\": \"Avtonomna Respublika Krym\",\n \"shortCode\": \"43\",\n \"translationKey\": \"Ukraine_region_43\"\n },\n {\n \"name\": \"Kyïv\",\n \"shortCode\": \"30\",\n \"translationKey\": \"Ukraine_region_30\"\n },\n {\n \"name\": \"Sevastopol\",\n \"shortCode\": \"40\",\n \"translationKey\": \"Ukraine_region_40\"\n }\n ],\n \"translationKey\": \"country_name_Ukraine\"\n },\n {\n \"countryName\": \"United Arab Emirates\",\n \"countryShortCode\": \"AE\",\n \"regions\": [\n {\n \"name\": \"Abu Dhabi\",\n \"shortCode\": \"AZ\",\n \"translationKey\": \"United Arab Emirates_region_AZ\"\n },\n {\n \"name\": \"Ajman\",\n \"shortCode\": \"AJ\",\n \"translationKey\": \"United Arab Emirates_region_AJ\"\n },\n {\n \"name\": \"Dubai\",\n \"shortCode\": \"DU\",\n \"translationKey\": \"United Arab Emirates_region_DU\"\n },\n {\n \"name\": \"Fujairah\",\n \"shortCode\": \"FU\",\n \"translationKey\": \"United Arab Emirates_region_FU\"\n },\n {\n \"name\": \"Ras al Khaimah\",\n \"shortCode\": \"RK\",\n \"translationKey\": \"United Arab Emirates_region_RK\"\n },\n {\n \"name\": \"Sharjah\",\n \"shortCode\": \"SH\",\n \"translationKey\": \"United Arab Emirates_region_SH\"\n },\n {\n \"name\": \"Umm Al Quwain\",\n \"shortCode\": \"UQ\",\n \"translationKey\": \"United Arab Emirates_region_UQ\"\n }\n ],\n \"translationKey\": \"country_name_United Arab Emirates\"\n },\n {\n \"countryName\": \"United Kingdom\",\n \"translationKey\": \"country_name_uk\",\n \"countryShortCode\": \"GB\",\n \"regions\": [\n {\n \"name\": \"Aberdeen City\",\n \"translationKey\": \"uk_region_name_abe\",\n \"shortCode\": \"ABE\"\n },\n {\n \"name\": \"Aberdeenshire\",\n \"translationKey\": \"uk_region_name_abd\",\n \"shortCode\": \"ABD\"\n },\n {\n \"name\": \"Angus\",\n \"translationKey\": \"uk_region_name_ans\",\n \"shortCode\": \"ANS\"\n },\n {\n \"name\": \"Antrim and Newtownabbey\",\n \"translationKey\": \"uk_region_name_ann\",\n \"shortCode\": \"ANN\"\n },\n {\n \"name\": \"Ards and North Down\",\n \"translationKey\": \"uk_region_name_and\",\n \"shortCode\": \"AND\"\n },\n {\n \"name\": \"Argyll and Bute\",\n \"translationKey\": \"uk_region_name_agb\",\n \"shortCode\": \"AGB\"\n },\n {\n \"name\": \"Armagh, Banbridge and Craigavon\",\n \"translationKey\": \"uk_region_name_abc\",\n \"shortCode\": \"ABC\"\n },\n {\n \"name\": \"Barking and Dagenham\",\n \"translationKey\": \"uk_region_name_bdg\",\n \"shortCode\": \"BDG\"\n },\n {\n \"name\": \"Barnet\",\n \"translationKey\": \"uk_region_name_bne\",\n \"shortCode\": \"BNE\"\n },\n {\n \"name\": \"Barnsley\",\n \"translationKey\": \"uk_region_name_bns\",\n \"shortCode\": \"BNS\"\n },\n {\n \"name\": \"Bath and North East Somerset\",\n \"translationKey\": \"uk_region_name_bas\",\n \"shortCode\": \"BAS\"\n },\n {\n \"name\": \"Bedford\",\n \"translationKey\": \"uk_region_name_bdf\",\n \"shortCode\": \"BDF\"\n },\n {\n \"name\": \"Belfast\",\n \"translationKey\": \"uk_region_name_bfs\",\n \"shortCode\": \"BFS\"\n },\n {\n \"name\": \"Bexley\",\n \"translationKey\": \"uk_region_name_bex\",\n \"shortCode\": \"BEX\"\n },\n {\n \"name\": \"Birmingham\",\n \"translationKey\": \"uk_region_name_bir\",\n \"shortCode\": \"BIR\"\n },\n {\n \"name\": \"Blackburn with Darwen\",\n \"translationKey\": \"uk_region_name_bbd\",\n \"shortCode\": \"BBD\"\n },\n {\n \"name\": \"Blackpool\",\n \"translationKey\": \"uk_region_name_bpl\",\n \"shortCode\": \"BPL\"\n },\n {\n \"name\": \"Blaenau Gwent\",\n \"translationKey\": \"uk_region_name_bgw\",\n \"shortCode\": \"BGW\"\n },\n {\n \"name\": \"Bolton\",\n \"translationKey\": \"uk_region_name_bol\",\n \"shortCode\": \"BOL\"\n },\n {\n \"name\": \"Bournemouth\",\n \"translationKey\": \"uk_region_name_bmh\",\n \"shortCode\": \"BMH\"\n },\n {\n \"name\": \"Bracknell Forest\",\n \"translationKey\": \"uk_region_name_brc\",\n \"shortCode\": \"BRC\"\n },\n {\n \"name\": \"Bradford\",\n \"translationKey\": \"uk_region_name_brd\",\n \"shortCode\": \"BRD\"\n },\n {\n \"name\": \"Brent\",\n \"translationKey\": \"uk_region_name_ben\",\n \"shortCode\": \"BEN\"\n },\n {\n \"name\": \"Bridgend\",\n \"translationKey\": \"uk_region_name_bge\",\n \"shortCode\": \"BGE\"\n },\n {\n \"name\": \"Brighton and Hove\",\n \"translationKey\": \"uk_region_name_bnh\",\n \"shortCode\": \"BNH\"\n },\n {\n \"name\": \"Bristol, City of\",\n \"translationKey\": \"uk_region_name_bst\",\n \"shortCode\": \"BST\"\n },\n {\n \"name\": \"Bromley\",\n \"translationKey\": \"uk_region_name_bry\",\n \"shortCode\": \"BRY\"\n },\n {\n \"name\": \"Buckinghamshire\",\n \"translationKey\": \"uk_region_name_bkm\",\n \"shortCode\": \"BKM\"\n },\n {\n \"name\": \"Bury\",\n \"translationKey\": \"uk_region_name_bur\",\n \"shortCode\": \"BUR\"\n },\n {\n \"name\": \"Caerphilly\",\n \"translationKey\": \"uk_region_name_cay\",\n \"shortCode\": \"CAY\"\n },\n {\n \"name\": \"Calderdale\",\n \"translationKey\": \"uk_region_name_cld\",\n \"shortCode\": \"CLD\"\n },\n {\n \"name\": \"Cambridgeshire\",\n \"translationKey\": \"uk_region_name_cam\",\n \"shortCode\": \"CAM\"\n },\n {\n \"name\": \"Camden\",\n \"translationKey\": \"uk_region_name_cmd\",\n \"shortCode\": \"CMD\"\n },\n {\n \"name\": \"Cardiff\",\n \"translationKey\": \"uk_region_name_crf\",\n \"shortCode\": \"CRF\"\n },\n {\n \"name\": \"Carmarthenshire\",\n \"translationKey\": \"uk_region_name_cmn\",\n \"shortCode\": \"CMN\"\n },\n {\n \"name\": \"Causeway Coast and Glens\",\n \"translationKey\": \"uk_region_name_ccg\",\n \"shortCode\": \"CCG\"\n },\n {\n \"name\": \"Central Bedfordshire\",\n \"translationKey\": \"uk_region_name_cbf\",\n \"shortCode\": \"CBF\"\n },\n {\n \"name\": \"Ceredigion\",\n \"translationKey\": \"uk_region_name_cgn\",\n \"shortCode\": \"CGN\"\n },\n {\n \"name\": \"Cheshire East\",\n \"translationKey\": \"uk_region_name_che\",\n \"shortCode\": \"CHE\"\n },\n {\n \"name\": \"Cheshire West and Chester\",\n \"translationKey\": \"uk_region_name_chw\",\n \"shortCode\": \"CHW\"\n },\n {\n \"name\": \"Clackmannanshire\",\n \"translationKey\": \"uk_region_name_clk\",\n \"shortCode\": \"CLK\"\n },\n {\n \"name\": \"Conwy\",\n \"translationKey\": \"uk_region_name_cwy\",\n \"shortCode\": \"CWY\"\n },\n {\n \"name\": \"Cornwall\",\n \"translationKey\": \"uk_region_name_con\",\n \"shortCode\": \"CON\"\n },\n {\n \"name\": \"Coventry\",\n \"translationKey\": \"uk_region_name_cov\",\n \"shortCode\": \"COV\"\n },\n {\n \"name\": \"Croydon\",\n \"translationKey\": \"uk_region_name_cry\",\n \"shortCode\": \"CRY\"\n },\n {\n \"name\": \"Cumbria\",\n \"translationKey\": \"uk_region_name_cma\",\n \"shortCode\": \"CMA\"\n },\n {\n \"name\": \"Darlington\",\n \"translationKey\": \"uk_region_name_dal\",\n \"shortCode\": \"DAL\"\n },\n {\n \"name\": \"Denbighshire\",\n \"translationKey\": \"uk_region_name_den\",\n \"shortCode\": \"DEN\"\n },\n {\n \"name\": \"Derby\",\n \"translationKey\": \"uk_region_name_der\",\n \"shortCode\": \"DER\"\n },\n {\n \"name\": \"Derbyshire\",\n \"translationKey\": \"uk_region_name_dby\",\n \"shortCode\": \"DBY\"\n },\n {\n \"name\": \"Derry and Strabane\",\n \"translationKey\": \"uk_region_name_drs\",\n \"shortCode\": \"DRS\"\n },\n {\n \"name\": \"Devon\",\n \"translationKey\": \"uk_region_name_dev\",\n \"shortCode\": \"DEV\"\n },\n {\n \"name\": \"Doncaster\",\n \"translationKey\": \"uk_region_name_dnc\",\n \"shortCode\": \"DNC\"\n },\n {\n \"name\": \"Dorset\",\n \"translationKey\": \"uk_region_name_dor\",\n \"shortCode\": \"DOR\"\n },\n {\n \"name\": \"Dudley\",\n \"translationKey\": \"uk_region_name_dud\",\n \"shortCode\": \"DUD\"\n },\n {\n \"name\": \"Dumfries and Galloway\",\n \"translationKey\": \"uk_region_name_dgy\",\n \"shortCode\": \"DGY\"\n },\n {\n \"name\": \"Dundee City\",\n \"translationKey\": \"uk_region_name_dnd\",\n \"shortCode\": \"DND\"\n },\n {\n \"name\": \"Durham County\",\n \"translationKey\": \"uk_region_name_dur\",\n \"shortCode\": \"DUR\"\n },\n {\n \"name\": \"Ealing\",\n \"translationKey\": \"uk_region_name_eal\",\n \"shortCode\": \"EAL\"\n },\n {\n \"name\": \"East Ayrshire\",\n \"translationKey\": \"uk_region_name_eay\",\n \"shortCode\": \"EAY\"\n },\n {\n \"name\": \"East Dunbartonshire\",\n \"translationKey\": \"uk_region_name_edu\",\n \"shortCode\": \"EDU\"\n },\n {\n \"name\": \"East Lothian\",\n \"translationKey\": \"uk_region_name_eln\",\n \"shortCode\": \"ELN\"\n },\n {\n \"name\": \"East Renfrewshire\",\n \"translationKey\": \"uk_region_name_erw\",\n \"shortCode\": \"ERW\"\n },\n {\n \"name\": \"East Riding of Yorkshire\",\n \"translationKey\": \"uk_region_name_wry\",\n \"shortCode\": \"ERY\"\n },\n {\n \"name\": \"East Sussex\",\n \"translationKey\": \"uk_region_name_esx\",\n \"shortCode\": \"ESX\"\n },\n {\n \"name\": \"Edinburgh, City of\",\n \"translationKey\": \"uk_region_name_edh\",\n \"shortCode\": \"EDH\"\n },\n {\n \"name\": \"Eilean Siar\",\n \"translationKey\": \"uk_region_name_els\",\n \"shortCode\": \"ELS\"\n },\n {\n \"name\": \"Enfield\",\n \"translationKey\": \"uk_region_name_enf\",\n \"shortCode\": \"ENF\"\n },\n {\n \"name\": \"Essex\",\n \"translationKey\": \"uk_region_name_ess\",\n \"shortCode\": \"ESS\"\n },\n {\n \"name\": \"Falkirk\",\n \"translationKey\": \"uk_region_name_fal\",\n \"shortCode\": \"FAL\"\n },\n {\n \"name\": \"Fermanagh and Omagh\",\n \"translationKey\": \"uk_region_name_fmo\",\n \"shortCode\": \"FMO\"\n },\n {\n \"name\": \"Fife\",\n \"translationKey\": \"uk_region_name_fif\",\n \"shortCode\": \"FIF\"\n },\n {\n \"name\": \"Flintshire\",\n \"translationKey\": \"uk_region_name_fln\",\n \"shortCode\": \"FLN\"\n },\n {\n \"name\": \"Gateshead\",\n \"translationKey\": \"uk_region_name_gat\",\n \"shortCode\": \"GAT\"\n },\n {\n \"name\": \"Glasgow City\",\n \"translationKey\": \"uk_region_name_glg\",\n \"shortCode\": \"GLG\"\n },\n {\n \"name\": \"Gloucestershire\",\n \"translationKey\": \"uk_region_name_gls\",\n \"shortCode\": \"GLS\"\n },\n {\n \"name\": \"Greenwich\",\n \"translationKey\": \"uk_region_name_gre\",\n \"shortCode\": \"GRE\"\n },\n {\n \"name\": \"Gwynedd\",\n \"translationKey\": \"uk_region_name_gwn\",\n \"shortCode\": \"GWN\"\n },\n {\n \"name\": \"Hackney\",\n \"translationKey\": \"uk_region_name_hck\",\n \"shortCode\": \"HCK\"\n },\n {\n \"name\": \"Halton\",\n \"translationKey\": \"uk_region_name_hal\",\n \"shortCode\": \"HAL\"\n },\n {\n \"name\": \"Hammersmith and Fulham\",\n \"translationKey\": \"uk_region_name_hmf\",\n \"shortCode\": \"HMF\"\n },\n {\n \"name\": \"Hampshire\",\n \"translationKey\": \"uk_region_name_ham\",\n \"shortCode\": \"HAM\"\n },\n {\n \"name\": \"Haringey\",\n \"translationKey\": \"uk_region_name_hry\",\n \"shortCode\": \"HRY\"\n },\n {\n \"name\": \"Harrow\",\n \"translationKey\": \"uk_region_name_hrw\",\n \"shortCode\": \"HRW\"\n },\n {\n \"name\": \"Hartlepool\",\n \"translationKey\": \"uk_region_name_hpl\",\n \"shortCode\": \"HPL\"\n },\n {\n \"name\": \"Havering\",\n \"translationKey\": \"uk_region_name_hav\",\n \"shortCode\": \"HAV\"\n },\n {\n \"name\": \"Herefordshire\",\n \"translationKey\": \"uk_region_name_hef\",\n \"shortCode\": \"HEF\"\n },\n {\n \"name\": \"Hertfordshire\",\n \"translationKey\": \"uk_region_name_hrt\",\n \"shortCode\": \"HRT\"\n },\n {\n \"name\": \"Highland\",\n \"translationKey\": \"uk_region_name_hld\",\n \"shortCode\": \"HLD\"\n },\n {\n \"name\": \"Hillingdon\",\n \"translationKey\": \"uk_region_name_hil\",\n \"shortCode\": \"HIL\"\n },\n {\n \"name\": \"Hounslow\",\n \"translationKey\": \"uk_region_name_hns\",\n \"shortCode\": \"HNS\"\n },\n {\n \"name\": \"Inverclyde\",\n \"translationKey\": \"uk_region_name_ivc\",\n \"shortCode\": \"IVC\"\n },\n {\n \"name\": \"Isle of Anglesey\",\n \"translationKey\": \"uk_region_name_agy\",\n \"shortCode\": \"AGY\"\n },\n {\n \"name\": \"Isle of Wight\",\n \"translationKey\": \"uk_region_name_iow\",\n \"shortCode\": \"IOW\"\n },\n {\n \"name\": \"Isles of Scilly\",\n \"translationKey\": \"uk_region_name_ios\",\n \"shortCode\": \"IOS\"\n },\n {\n \"name\": \"Islington\",\n \"translationKey\": \"uk_region_name_isl\",\n \"shortCode\": \"ISL\"\n },\n {\n \"name\": \"Kensington and Chelsea\",\n \"translationKey\": \"uk_region_name_kec\",\n \"shortCode\": \"KEC\"\n },\n {\n \"name\": \"Kent\",\n \"translationKey\": \"uk_region_name_ken\",\n \"shortCode\": \"KEN\"\n },\n {\n \"name\": \"Kingston upon Hull\",\n \"translationKey\": \"uk_region_name_khl\",\n \"shortCode\": \"KHL\"\n },\n {\n \"name\": \"Kingston upon Thames\",\n \"translationKey\": \"uk_region_name_ktt\",\n \"shortCode\": \"KTT\"\n },\n {\n \"name\": \"Kirklees\",\n \"translationKey\": \"uk_region_name_kir\",\n \"shortCode\": \"KIR\"\n },\n {\n \"name\": \"Knowsley\",\n \"translationKey\": \"uk_region_name_kwl\",\n \"shortCode\": \"KWL\"\n },\n {\n \"name\": \"Lambeth\",\n \"translationKey\": \"uk_region_name_lbh\",\n \"shortCode\": \"LBH\"\n },\n {\n \"name\": \"Lancashire\",\n \"translationKey\": \"uk_region_name_lan\",\n \"shortCode\": \"LAN\"\n },\n {\n \"name\": \"Leeds\",\n \"translationKey\": \"uk_region_name_lds\",\n \"shortCode\": \"LDS\"\n },\n {\n \"name\": \"Leicester\",\n \"translationKey\": \"uk_region_name_lce\",\n \"shortCode\": \"LCE\"\n },\n {\n \"name\": \"Leicestershire\",\n \"translationKey\": \"uk_region_name_lec\",\n \"shortCode\": \"LEC\"\n },\n {\n \"name\": \"Lewisham\",\n \"translationKey\": \"uk_region_name_lew\",\n \"shortCode\": \"LEW\"\n },\n {\n \"name\": \"Lincolnshire\",\n \"translationKey\": \"uk_region_name_lin\",\n \"shortCode\": \"LIN\"\n },\n {\n \"name\": \"Lisburn and Castlereagh\",\n \"translationKey\": \"uk_region_name_lbc\",\n \"shortCode\": \"LBC\"\n },\n {\n \"name\": \"Liverpool\",\n \"translationKey\": \"uk_region_name_liv\",\n \"shortCode\": \"LIV\"\n },\n {\n \"name\": \"London, City of\",\n \"translationKey\": \"uk_region_name_lnd\",\n \"shortCode\": \"LND\"\n },\n {\n \"name\": \"Luton\",\n \"translationKey\": \"uk_region_name_lut\",\n \"shortCode\": \"LUT\"\n },\n {\n \"name\": \"Manchester\",\n \"translationKey\": \"uk_region_name_man\",\n \"shortCode\": \"MAN\"\n },\n {\n \"name\": \"Medway\",\n \"translationKey\": \"uk_region_name_mdw\",\n \"shortCode\": \"MDW\"\n },\n {\n \"name\": \"Merthyr Tydfil\",\n \"translationKey\": \"uk_region_name_mty\",\n \"shortCode\": \"MTY\"\n },\n {\n \"name\": \"Merton\",\n \"translationKey\": \"uk_region_name_mrt\",\n \"shortCode\": \"MRT\"\n },\n {\n \"name\": \"Mid and East Antrim\",\n \"translationKey\": \"uk_region_name_mea\",\n \"shortCode\": \"MEA\"\n },\n {\n \"name\": \"Mid Ulster\",\n \"translationKey\": \"uk_region_name_mul\",\n \"shortCode\": \"MUL\"\n },\n {\n \"name\": \"Middlesbrough\",\n \"translationKey\": \"uk_region_name_mdb\",\n \"shortCode\": \"MDB\"\n },\n {\n \"name\": \"Midlothian\",\n \"translationKey\": \"uk_region_name_mln\",\n \"shortCode\": \"MLN\"\n },\n {\n \"name\": \"Milton Keynes\",\n \"translationKey\": \"uk_region_name_mik\",\n \"shortCode\": \"MIK\"\n },\n {\n \"name\": \"Monmouthshire\",\n \"translationKey\": \"uk_region_name_mon\",\n \"shortCode\": \"MON\"\n },\n {\n \"name\": \"Moray\",\n \"translationKey\": \"uk_region_name_mry\",\n \"shortCode\": \"MRY\"\n },\n {\n \"name\": \"Neath Port Talbot\",\n \"translationKey\": \"uk_region_name_ntl\",\n \"shortCode\": \"NTL\"\n },\n {\n \"name\": \"Newcastle upon Tyne\",\n \"translationKey\": \"uk_region_name_net\",\n \"shortCode\": \"NET\"\n },\n {\n \"name\": \"Newham\",\n \"translationKey\": \"uk_region_name_nwm\",\n \"shortCode\": \"NWM\"\n },\n {\n \"name\": \"Newport\",\n \"translationKey\": \"uk_region_name_nwp\",\n \"shortCode\": \"NWP\"\n },\n {\n \"name\": \"Newry, Mourne and Down\",\n \"translationKey\": \"uk_region_name_nmd\",\n \"shortCode\": \"NMD\"\n },\n {\n \"name\": \"Norfolk\",\n \"translationKey\": \"uk_region_name_nfk\",\n \"shortCode\": \"NFK\"\n },\n {\n \"name\": \"North Ayrshire\",\n \"translationKey\": \"uk_region_name_nay\",\n \"shortCode\": \"NAY\"\n },\n {\n \"name\": \"North East Lincolnshire\",\n \"translationKey\": \"uk_region_name_nel\",\n \"shortCode\": \"NEL\"\n },\n {\n \"name\": \"North Lanarkshire\",\n \"translationKey\": \"uk_region_name_nlk\",\n \"shortCode\": \"NLK\"\n },\n {\n \"name\": \"North Lincolnshire\",\n \"translationKey\": \"uk_region_name_nln\",\n \"shortCode\": \"NLN\"\n },\n {\n \"name\": \"North Somerset\",\n \"translationKey\": \"uk_region_name_nsm\",\n \"shortCode\": \"NSM\"\n },\n {\n \"name\": \"North Tyneside\",\n \"translationKey\": \"uk_region_name_nty\",\n \"shortCode\": \"NTY\"\n },\n {\n \"name\": \"North Yorkshire\",\n \"translationKey\": \"uk_region_name_nyk\",\n \"shortCode\": \"NYK\"\n },\n {\n \"name\": \"Northamptonshire\",\n \"translationKey\": \"uk_region_name_nth\",\n \"shortCode\": \"NTH\"\n },\n {\n \"name\": \"Northern Ireland\",\n \"translationKey\": \"uk_region_name_nir\",\n \"shortCode\": \"NIR\"\n },\n {\n \"name\": \"Northumberland\",\n \"translationKey\": \"uk_region_name_nbl\",\n \"shortCode\": \"NBL\"\n },\n {\n \"name\": \"Nottingham\",\n \"translationKey\": \"uk_region_name_ngm\",\n \"shortCode\": \"NGM\"\n },\n {\n \"name\": \"Nottinghamshire\",\n \"translationKey\": \"uk_region_name_ntt\",\n \"shortCode\": \"NTT\"\n },\n {\n \"name\": \"Oldham\",\n \"translationKey\": \"uk_region_name_old\",\n \"shortCode\": \"OLD\"\n },\n {\n \"name\": \"Orkney Islands\",\n \"translationKey\": \"uk_region_name_ork\",\n \"shortCode\": \"ORK\"\n },\n {\n \"name\": \"Oxfordshire\",\n \"translationKey\": \"uk_region_name_oxf\",\n \"shortCode\": \"OXF\"\n },\n {\n \"name\": \"Pembrokeshire\",\n \"translationKey\": \"uk_region_name_pem\",\n \"shortCode\": \"PEM\"\n },\n {\n \"name\": \"Perth and Kinross\",\n \"translationKey\": \"uk_region_name_pkn\",\n \"shortCode\": \"PKN\"\n },\n {\n \"name\": \"Peterborough\",\n \"translationKey\": \"uk_region_name_pte\",\n \"shortCode\": \"PTE\"\n },\n {\n \"name\": \"Plymouth\",\n \"translationKey\": \"uk_region_name_ply\",\n \"shortCode\": \"PLY\"\n },\n {\n \"name\": \"Poole\",\n \"translationKey\": \"uk_region_name_pol\",\n \"shortCode\": \"POL\"\n },\n {\n \"name\": \"Portsmouth\",\n \"translationKey\": \"uk_region_name_por\",\n \"shortCode\": \"POR\"\n },\n {\n \"name\": \"Powys\",\n \"translationKey\": \"uk_region_name_pow\",\n \"shortCode\": \"POW\"\n },\n {\n \"name\": \"Reading\",\n \"translationKey\": \"uk_region_name_rdg\",\n \"shortCode\": \"RDG\"\n },\n {\n \"name\": \"Redbridge\",\n \"translationKey\": \"uk_region_name_rdb\",\n \"shortCode\": \"RDB\"\n },\n {\n \"name\": \"Redcar and Cleveland\",\n \"translationKey\": \"uk_region_name_rcc\",\n \"shortCode\": \"RCC\"\n },\n {\n \"name\": \"Renfrewshire\",\n \"translationKey\": \"uk_region_name_rfw\",\n \"shortCode\": \"RFW\"\n },\n {\n \"name\": \"Rhondda, Cynon, Taff\",\n \"translationKey\": \"uk_region_name_rct\",\n \"shortCode\": \"RCT\"\n },\n {\n \"name\": \"Richmond upon Thames\",\n \"translationKey\": \"uk_region_name_ric\",\n \"shortCode\": \"RIC\"\n },\n {\n \"name\": \"Rochdale\",\n \"translationKey\": \"uk_region_name_rch\",\n \"shortCode\": \"RCH\"\n },\n {\n \"name\": \"Rotherham\",\n \"translationKey\": \"uk_region_name_rot\",\n \"shortCode\": \"ROT\"\n },\n {\n \"name\": \"Rutland\",\n \"translationKey\": \"uk_region_name_rut\",\n \"shortCode\": \"RUT\"\n },\n {\n \"name\": \"St. Helens\",\n \"translationKey\": \"uk_region_name_shn\",\n \"shortCode\": \"SHN\"\n },\n {\n \"name\": \"Salford\",\n \"translationKey\": \"uk_region_name_slf\",\n \"shortCode\": \"SLF\"\n },\n {\n \"name\": \"Sandwell\",\n \"translationKey\": \"uk_region_name_saw\",\n \"shortCode\": \"SAW\"\n },\n {\n \"name\": \"Scottish Borders, The\",\n \"translationKey\": \"uk_region_name_scb\",\n \"shortCode\": \"SCB\"\n },\n {\n \"name\": \"Sefton\",\n \"translationKey\": \"uk_region_name_sft\",\n \"shortCode\": \"SFT\"\n },\n {\n \"name\": \"Sheffield\",\n \"translationKey\": \"uk_region_name_shf\",\n \"shortCode\": \"SHF\"\n },\n {\n \"name\": \"Shetland Islands\",\n \"translationKey\": \"uk_region_name_zet\",\n \"shortCode\": \"ZET\"\n },\n {\n \"name\": \"Shropshire\",\n \"translationKey\": \"uk_region_name_shr\",\n \"shortCode\": \"SHR\"\n },\n {\n \"name\": \"Slough\",\n \"translationKey\": \"uk_region_name_slg\",\n \"shortCode\": \"SLG\"\n },\n {\n \"name\": \"Solihull\",\n \"translationKey\": \"uk_region_name_sol\",\n \"shortCode\": \"SOL\"\n },\n {\n \"name\": \"Somerset\",\n \"translationKey\": \"uk_region_name_som\",\n \"shortCode\": \"SOM\"\n },\n {\n \"name\": \"South Ayrshire\",\n \"translationKey\": \"uk_region_name_say\",\n \"shortCode\": \"SAY\"\n },\n {\n \"name\": \"South Gloucestershire\",\n \"translationKey\": \"uk_region_name_sgc\",\n \"shortCode\": \"SGC\"\n },\n {\n \"name\": \"South Lanarkshire\",\n \"translationKey\": \"uk_region_name_slk\",\n \"shortCode\": \"SLK\"\n },\n {\n \"name\": \"South Tyneside\",\n \"translationKey\": \"uk_region_name_sty\",\n \"shortCode\": \"STY\"\n },\n {\n \"name\": \"Southampton\",\n \"translationKey\": \"uk_region_name_sth\",\n \"shortCode\": \"STH\"\n },\n {\n \"name\": \"Southend-on-Sea\",\n \"translationKey\": \"uk_region_name_sos\",\n \"shortCode\": \"SOS\"\n },\n {\n \"name\": \"Southwark\",\n \"translationKey\": \"uk_region_name_swk\",\n \"shortCode\": \"SWK\"\n },\n {\n \"name\": \"Staffordshire\",\n \"translationKey\": \"uk_region_name_sts\",\n \"shortCode\": \"STS\"\n },\n {\n \"name\": \"Stirling\",\n \"translationKey\": \"uk_region_name_stg\",\n \"shortCode\": \"STG\"\n },\n {\n \"name\": \"Stockport\",\n \"translationKey\": \"uk_region_name_skp\",\n \"shortCode\": \"SKP\"\n },\n {\n \"name\": \"Stockton-on-Tees\",\n \"translationKey\": \"uk_region_name_stt\",\n \"shortCode\": \"STT\"\n },\n {\n \"name\": \"Stoke-on-Trent\",\n \"translationKey\": \"uk_region_name_ste\",\n \"shortCode\": \"STE\"\n },\n {\n \"name\": \"Suffolk\",\n \"translationKey\": \"uk_region_name_sfk\",\n \"shortCode\": \"SFK\"\n },\n {\n \"name\": \"Sunderland\",\n \"translationKey\": \"uk_region_name_snd\",\n \"shortCode\": \"SND\"\n },\n {\n \"name\": \"Surrey\",\n \"translationKey\": \"uk_region_name_sry\",\n \"shortCode\": \"SRY\"\n },\n {\n \"name\": \"Sutton\",\n \"translationKey\": \"uk_region_name_stn\",\n \"shortCode\": \"STN\"\n },\n {\n \"name\": \"Swansea\",\n \"translationKey\": \"uk_region_name_swa\",\n \"shortCode\": \"SWA\"\n },\n {\n \"name\": \"Swindon\",\n \"translationKey\": \"uk_region_name_swd\",\n \"shortCode\": \"SWD\"\n },\n {\n \"name\": \"Tameside\",\n \"translationKey\": \"uk_region_name_tam\",\n \"shortCode\": \"TAM\"\n },\n {\n \"name\": \"Telford and Wrekin\",\n \"translationKey\": \"uk_region_name_tfw\",\n \"shortCode\": \"TFW\"\n },\n {\n \"name\": \"Thurrock\",\n \"translationKey\": \"uk_region_name_thr\",\n \"shortCode\": \"THR\"\n },\n {\n \"name\": \"Torbay\",\n \"translationKey\": \"uk_region_name_tob\",\n \"shortCode\": \"TOB\"\n },\n {\n \"name\": \"Torfaen\",\n \"translationKey\": \"uk_region_name_tof\",\n \"shortCode\": \"TOF\"\n },\n {\n \"name\": \"Tower Hamlets\",\n \"translationKey\": \"uk_region_name_twh\",\n \"shortCode\": \"TWH\"\n },\n {\n \"name\": \"Trafford\",\n \"translationKey\": \"uk_region_name_trf\",\n \"shortCode\": \"TRF\"\n },\n {\n \"name\": \"Vale of Glamorgan, The\",\n \"translationKey\": \"uk_region_name_vgl\",\n \"shortCode\": \"VGL\"\n },\n {\n \"name\": \"Wakefield\",\n \"translationKey\": \"uk_region_name_wkf\",\n \"shortCode\": \"WKF\"\n },\n {\n \"name\": \"Walsall\",\n \"translationKey\": \"uk_region_name_wll\",\n \"shortCode\": \"WLL\"\n },\n {\n \"name\": \"Waltham Forest\",\n \"translationKey\": \"uk_region_name_wft\",\n \"shortCode\": \"WFT\"\n },\n {\n \"name\": \"Wandsworth\",\n \"translationKey\": \"uk_region_name_wns\",\n \"shortCode\": \"WND\"\n },\n {\n \"name\": \"Warrington\",\n \"translationKey\": \"uk_region_name_wrt\",\n \"shortCode\": \"WRT\"\n },\n {\n \"name\": \"Warwickshire\",\n \"translationKey\": \"uk_region_name_war\",\n \"shortCode\": \"WAR\"\n },\n {\n \"name\": \"West Berkshire\",\n \"translationKey\": \"uk_region_name_wbk\",\n \"shortCode\": \"WBK\"\n },\n {\n \"name\": \"West Dunbartonshire\",\n \"translationKey\": \"uk_region_name_wdu\",\n \"shortCode\": \"WDU\"\n },\n {\n \"name\": \"West Lothian\",\n \"translationKey\": \"uk_region_name_wln\",\n \"shortCode\": \"WLN\"\n },\n {\n \"name\": \"West Sussex\",\n \"translationKey\": \"uk_region_name_wsx\",\n \"shortCode\": \"WSX\"\n },\n {\n \"name\": \"Westminster\",\n \"translationKey\": \"uk_region_name_wsm\",\n \"shortCode\": \"WSM\"\n },\n {\n \"name\": \"Wigan\",\n \"translationKey\": \"uk_region_name_wgn\",\n \"shortCode\": \"WGN\"\n },\n {\n \"name\": \"Wiltshire\",\n \"translationKey\": \"uk_region_name_wil\",\n \"shortCode\": \"WIL\"\n },\n {\n \"name\": \"Windsor and Maidenhead\",\n \"translationKey\": \"uk_region_name_wnm\",\n \"shortCode\": \"WNM\"\n },\n {\n \"name\": \"Wirral\",\n \"translationKey\": \"uk_region_name_wrl\",\n \"shortCode\": \"WRL\"\n },\n {\n \"name\": \"Wokingham\",\n \"translationKey\": \"uk_region_name_wok\",\n \"shortCode\": \"WOK\"\n },\n {\n \"name\": \"Wolverhampton\",\n \"translationKey\": \"uk_region_name_wlv\",\n \"shortCode\": \"WLV\"\n },\n {\n \"name\": \"Worcestershire\",\n \"translationKey\": \"uk_region_name_wor\",\n \"shortCode\": \"WOR\"\n },\n {\n \"name\": \"Wrexham\",\n \"translationKey\": \"uk_region_name_wrx\",\n \"shortCode\": \"WRX\"\n },\n {\n \"name\": \"York\",\n \"translationKey\": \"uk_region_name_yor\",\n \"shortCode\": \"YOR\"\n }\n ]\n },\n {\n \"countryName\": \"United States\",\n \"countryShortCode\": \"US\",\n \"translationKey\": \"unitedStates\",\n \"regions\": [\n {\n \"name\": \"Alabama\",\n \"shortCode\": \"AL\",\n \"translationKey\": \"us_state_name_al\"\n },\n {\n \"name\": \"Alaska\",\n \"shortCode\": \"AK\",\n \"translationKey\": \"us_state_name_ak\"\n },\n {\n \"name\": \"Arizona\",\n \"shortCode\": \"AZ\",\n \"translationKey\": \"us_state_name_az\"\n },\n {\n \"name\": \"Arkansas\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"us_state_name_ar\"\n },\n {\n \"name\": \"California\",\n \"shortCode\": \"CA\",\n \"translationKey\": \"us_state_name_ca\"\n },\n {\n \"name\": \"Colorado\",\n \"shortCode\": \"CO\",\n \"translationKey\": \"us_state_name_co\"\n },\n {\n \"name\": \"Connecticut\",\n \"shortCode\": \"CT\",\n \"translationKey\": \"us_state_name_ct\"\n },\n {\n \"name\": \"Delaware\",\n \"shortCode\": \"DE\",\n \"translationKey\": \"us_state_name_de\"\n },\n {\n \"name\": \"District of Columbia\",\n \"shortCode\": \"DC\",\n \"translationKey\": \"us_state_name_dc\"\n },\n {\n \"name\": \"Florida\",\n \"shortCode\": \"FL\",\n \"translationKey\": \"us_state_name_fl\"\n },\n {\n \"name\": \"Georgia\",\n \"shortCode\": \"GA\",\n \"translationKey\": \"us_state_name_ga\"\n },\n {\n \"name\": \"Hawaii\",\n \"shortCode\": \"HI\",\n \"translationKey\": \"us_state_name_hi\"\n },\n {\n \"name\": \"Idaho\",\n \"shortCode\": \"ID\",\n \"translationKey\": \"us_state_name_id\"\n },\n {\n \"name\": \"Illinois\",\n \"shortCode\": \"IL\",\n \"translationKey\": \"us_state_name_il\"\n },\n {\n \"name\": \"Indiana\",\n \"shortCode\": \"IN\",\n \"translationKey\": \"us_state_name_in\"\n },\n {\n \"name\": \"Iowa\",\n \"shortCode\": \"IA\",\n \"translationKey\": \"us_state_name_ia\"\n },\n {\n \"name\": \"Kansas\",\n \"shortCode\": \"KS\",\n \"translationKey\": \"us_state_name_ks\"\n },\n {\n \"name\": \"Kentucky\",\n \"shortCode\": \"KY\",\n \"translationKey\": \"us_state_name_ky\"\n },\n {\n \"name\": \"Louisiana\",\n \"shortCode\": \"LA\",\n \"translationKey\": \"us_state_name_la\"\n },\n {\n \"name\": \"Maine\",\n \"shortCode\": \"ME\",\n \"translationKey\": \"us_state_name_me\"\n },\n {\n \"name\": \"Marshall Islands\",\n \"shortCode\": \"MH\",\n \"translationKey\": \"us_state_name_mislands\"\n },\n {\n \"name\": \"Maryland\",\n \"shortCode\": \"MD\",\n \"translationKey\": \"us_state_name_md\"\n },\n {\n \"name\": \"Massachusetts\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"us_state_name_ma\"\n },\n {\n \"name\": \"Michigan\",\n \"shortCode\": \"MI\",\n \"translationKey\": \"us_state_name_mi\"\n },\n {\n \"name\": \"Minnesota\",\n \"shortCode\": \"MN\",\n \"translationKey\": \"us_state_name_mn\"\n },\n {\n \"name\": \"Mississippi\",\n \"shortCode\": \"MS\",\n \"translationKey\": \"us_state_name_ms\"\n },\n {\n \"name\": \"Missouri\",\n \"shortCode\": \"MO\",\n \"translationKey\": \"us_state_name_mo\"\n },\n {\n \"name\": \"Montana\",\n \"shortCode\": \"MT\",\n \"translationKey\": \"us_state_name_mt\"\n },\n {\n \"name\": \"Nebraska\",\n \"shortCode\": \"NE\",\n \"translationKey\": \"us_state_name_ne\"\n },\n {\n \"name\": \"Nevada\",\n \"shortCode\": \"NV\",\n \"translationKey\": \"us_state_name_nv\"\n },\n {\n \"name\": \"New Hampshire\",\n \"shortCode\": \"NH\",\n \"translationKey\": \"us_state_name_nh\"\n },\n {\n \"name\": \"New Jersey\",\n \"shortCode\": \"NJ\",\n \"translationKey\": \"us_state_name_nj\"\n },\n {\n \"name\": \"New Mexico\",\n \"shortCode\": \"NM\",\n \"translationKey\": \"us_state_name_nm\"\n },\n {\n \"name\": \"New York\",\n \"shortCode\": \"NY\",\n \"translationKey\": \"us_state_name_ny\"\n },\n {\n \"name\": \"North Carolina\",\n \"shortCode\": \"NC\",\n \"translationKey\": \"us_state_name_nc\"\n },\n {\n \"name\": \"North Dakota\",\n \"shortCode\": \"ND\",\n \"translationKey\": \"us_state_name_nd\"\n },\n {\n \"name\": \"Northern Mariana Islands\",\n \"shortCode\": \"MP\",\n \"translationKey\": \"us_state_name_nmislands\"\n },\n {\n \"name\": \"Ohio\",\n \"shortCode\": \"OH\",\n \"translationKey\": \"us_state_name_oh\"\n },\n {\n \"name\": \"Oklahoma\",\n \"shortCode\": \"OK\",\n \"translationKey\": \"us_state_name_ok\"\n },\n {\n \"name\": \"Oregon\",\n \"shortCode\": \"OR\",\n \"translationKey\": \"us_state_name_or\"\n },\n {\n \"name\": \"Pennsylvania\",\n \"shortCode\": \"PA\",\n \"translationKey\": \"us_state_name_pa\"\n },\n {\n \"name\": \"Puerto Rico\",\n \"shortCode\": \"PR\",\n \"translationKey\": \"us_region_name_pr\",\n },\n {\n \"name\": \"Rhode Island\",\n \"shortCode\": \"RI\",\n \"translationKey\": \"us_state_name_ri\"\n },\n {\n \"name\": \"South Carolina\",\n \"shortCode\": \"SC\",\n \"translationKey\": \"us_state_name_sc\"\n },\n {\n \"name\": \"South Dakota\",\n \"shortCode\": \"SD\",\n \"translationKey\": \"us_state_name_sd\"\n },\n {\n \"name\": \"Tennessee\",\n \"shortCode\": \"TN\",\n \"translationKey\": \"us_state_name_tn\"\n },\n {\n \"name\": \"Texas\",\n \"shortCode\": \"TX\",\n \"translationKey\": \"us_state_name_tx\"\n },\n {\n \"name\": \"Utah\",\n \"shortCode\": \"UT\",\n \"translationKey\": \"us_state_name_ut\"\n },\n {\n \"name\": \"Vermont\",\n \"shortCode\": \"VT\",\n \"translationKey\": \"us_state_name_vt\"\n },\n {\n \"name\": \"Virgin Islands\",\n \"shortCode\": \"VI\",\n \"translationKey\": \"us_state_name_vislands\"\n },\n {\n \"name\": \"Virginia\",\n \"shortCode\": \"VA\",\n \"translationKey\": \"us_state_name_va\"\n },\n {\n \"name\": \"Washington\",\n \"shortCode\": \"WA\",\n \"translationKey\": \"us_state_name_wa\"\n },\n {\n \"name\": \"West Virginia\",\n \"shortCode\": \"WV\",\n \"translationKey\": \"us_state_name_wv\"\n },\n {\n \"name\": \"Wisconsin\",\n \"shortCode\": \"WI\",\n \"translationKey\": \"us_state_name_wi\"\n },\n {\n \"name\": \"Wyoming\",\n \"shortCode\": \"WY\",\n \"translationKey\": \"us_state_name_wy\"\n }\n ]\n },\n {\n \"countryName\": \"Uzbekistan\",\n \"countryShortCode\": \"UZ\",\n \"regions\": [\n {\n \"name\": \"Toshkent shahri\",\n \"shortCode\": \"TK\",\n \"translationKey\": \"Uzbekistan_region_TK\"\n },\n {\n \"name\": \"Andijon\",\n \"shortCode\": \"AN\",\n \"translationKey\": \"Uzbekistan_region_AN\"\n },\n {\n \"name\": \"Buxoro\",\n \"shortCode\": \"BU\",\n \"translationKey\": \"Uzbekistan_region_BU\"\n },\n {\n \"name\": \"Farg‘ona\",\n \"shortCode\": \"FA\",\n \"translationKey\": \"Uzbekistan_region_FA\"\n },\n {\n \"name\": \"Jizzax\",\n \"shortCode\": \"JI\",\n \"translationKey\": \"Uzbekistan_region_JI\"\n },\n {\n \"name\": \"Namangan\",\n \"shortCode\": \"NG\",\n \"translationKey\": \"Uzbekistan_region_NG\"\n },\n {\n \"name\": \"Navoiy\",\n \"shortCode\": \"NW\",\n \"translationKey\": \"Uzbekistan_region_NW\"\n },\n {\n \"name\": \"Qashqadaryo (Qarshi)\",\n \"shortCode\": \"QA\",\n \"translationKey\": \"Uzbekistan_region_QA\"\n },\n {\n \"name\": \"Samarqand\",\n \"shortCode\": \"SA\",\n \"translationKey\": \"Uzbekistan_region_SA\"\n },\n {\n \"name\": \"Sirdaryo (Guliston)\",\n \"shortCode\": \"SI\",\n \"translationKey\": \"Uzbekistan_region_SI\"\n },\n {\n \"name\": \"Surxondaryo (Termiz)\",\n \"shortCode\": \"SU\",\n \"translationKey\": \"Uzbekistan_region_SU\"\n },\n {\n \"name\": \"Toshkent wiloyati\",\n \"shortCode\": \"TO\",\n \"translationKey\": \"Uzbekistan_region_TO\"\n },\n {\n \"name\": \"Xorazm (Urganch)\",\n \"shortCode\": \"XO\",\n \"translationKey\": \"Uzbekistan_region_XO\"\n },\n {\n \"name\": \"Qoraqalpog‘iston Respublikasi (Nukus)\",\n \"shortCode\": \"QR\",\n \"translationKey\": \"Uzbekistan_region_QR\"\n }\n ],\n \"translationKey\": \"country_name_Uzbekistan\"\n },\n {\n \"countryName\": \"Zambia\",\n \"countryShortCode\": \"ZM\",\n \"regions\": [\n {\n \"name\": \"Central\",\n \"shortCode\": \"02\",\n \"translationKey\": \"Zambia_region_02\"\n },\n {\n \"name\": \"Copperbelt\",\n \"shortCode\": \"08\",\n \"translationKey\": \"Zambia_region_08\"\n },\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"03\",\n \"translationKey\": \"Zambia_region_03\"\n },\n {\n \"name\": \"Luapula\",\n \"shortCode\": \"04\",\n \"translationKey\": \"Zambia_region_04\"\n },\n {\n \"name\": \"Lusaka\",\n \"shortCode\": \"09\",\n \"translationKey\": \"Zambia_region_09\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"05\",\n \"translationKey\": \"Zambia_region_05\"\n },\n {\n \"name\": \"North-Western\",\n \"shortCode\": \"06\",\n \"translationKey\": \"Zambia_region_06\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"07\",\n \"translationKey\": \"Zambia_region_07\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"01\",\n \"translationKey\": \"Zambia_region_01\"\n }\n ],\n \"translationKey\": \"country_name_Zambia\"\n },\n {\n \"countryName\": \"Zimbabwe\",\n \"countryShortCode\": \"ZW\",\n \"regions\": [\n {\n \"name\": \"Bulawayo\",\n \"shortCode\": \"BU\",\n \"translationKey\": \"Zimbabwe_region_BU\"\n },\n {\n \"name\": \"Harare\",\n \"shortCode\": \"HA\",\n \"translationKey\": \"Zimbabwe_region_HA\"\n },\n {\n \"name\": \"Manicaland\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"Zimbabwe_region_MA\"\n },\n {\n \"name\": \"Mashonaland Central\",\n \"shortCode\": \"MC\",\n \"translationKey\": \"Zimbabwe_region_MC\"\n },\n {\n \"name\": \"Mashonaland East\",\n \"shortCode\": \"ME\",\n \"translationKey\": \"Zimbabwe_region_ME\"\n },\n {\n \"name\": \"Mashonaland West\",\n \"shortCode\": \"MW\",\n \"translationKey\": \"Zimbabwe_region_MW\"\n },\n {\n \"name\": \"Masvingo\",\n \"shortCode\": \"MV\",\n \"translationKey\": \"Zimbabwe_region_MV\"\n },\n {\n \"name\": \"Matabeleland North\",\n \"shortCode\": \"MN\",\n \"translationKey\": \"Zimbabwe_region_MN\"\n },\n {\n \"name\": \"Matabeleland South\",\n \"shortCode\": \"MS\",\n \"translationKey\": \"Zimbabwe_region_MS\"\n },\n {\n \"name\": \"Midlands\",\n \"shortCode\": \"MI\",\n \"translationKey\": \"Zimbabwe_region_MI\"\n }\n ],\n \"translationKey\": \"country_name_Zimbabwe\"\n }\n]\n\nexport const countries_original = [\n // {\n // \"countryName\": \"Afghanistan\",\n // \"countryShortCode\": \"AF\",\n // \"regions\": [\n // {\n // \"name\": \"Badakhshan\",\n // \"shortCode\": \"BDS\"\n // },\n // {\n // \"name\": \"Badghis\",\n // \"shortCode\": \"BDG\"\n // },\n // {\n // \"name\": \"Baghlan\",\n // \"shortCode\": \"BGL\"\n // },\n // {\n // \"name\": \"Balkh\",\n // \"shortCode\": \"BAL\"\n // },\n // {\n // \"name\": \"Bamyan\",\n // \"shortCode\": \"BAM\"\n // },\n // {\n // \"name\": \"Daykundi\",\n // \"shortCode\": \"DAY\"\n // },\n // {\n // \"name\": \"Farah\",\n // \"shortCode\": \"FRA\"\n // },\n // {\n // \"name\": \"Faryab\",\n // \"shortCode\": \"FYB\"\n // },\n // {\n // \"name\": \"Ghazni\",\n // \"shortCode\": \"GHA\"\n // },\n // {\n // \"name\": \"Ghor\",\n // \"shortCode\": \"GHO\"\n // },\n // {\n // \"name\": \"Helmand\",\n // \"shortCode\": \"HEL\"\n // },\n // {\n // \"name\": \"Herat\",\n // \"shortCode\": \"HER\"\n // },\n // {\n // \"name\": \"Jowzjan\",\n // \"shortCode\": \"JOW\"\n // },\n // {\n // \"name\": \"Kabul\",\n // \"shortCode\": \"KAB\"\n // },\n // {\n // \"name\": \"Kandahar\",\n // \"shortCode\": \"KAN\"\n // },\n // {\n // \"name\": \"Kapisa\",\n // \"shortCode\": \"KAP\"\n // },\n // {\n // \"name\": \"Khost\",\n // \"shortCode\": \"KHO\"\n // },\n // {\n // \"name\": \"Kunar\",\n // \"shortCode\": \"KNR\"\n // },\n // {\n // \"name\": \"Kunduz\",\n // \"shortCode\": \"KDZ\"\n // },\n // {\n // \"name\": \"Laghman\",\n // \"shortCode\": \"LAG\"\n // },\n // {\n // \"name\": \"Logar\",\n // \"shortCode\": \"LOW\"\n // },\n // {\n // \"name\": \"Maidan Wardak\",\n // \"shortCode\": \"WAR\"\n // },\n // {\n // \"name\": \"Nangarhar\",\n // \"shortCode\": \"NAN\"\n // },\n // {\n // \"name\": \"Nimruz\",\n // \"shortCode\": \"NIM\"\n // },\n // {\n // \"name\": \"Nuristan\",\n // \"shortCode\": \"NUR\"\n // },\n // {\n // \"name\": \"Paktia\",\n // \"shortCode\": \"PIA\"\n // },\n // {\n // \"name\": \"Paktika\",\n // \"shortCode\": \"PKA\"\n // },\n // {\n // \"name\": \"Panjshir\",\n // \"shortCode\": \"PAN\"\n // },\n // {\n // \"name\": \"Parwan\",\n // \"shortCode\": \"PAR\"\n // },\n // {\n // \"name\": \"Samangan\",\n // \"shortCode\": \"SAM\"\n // },\n // {\n // \"name\": \"Sar-e Pol\",\n // \"shortCode\": \"SAR\"\n // },\n // {\n // \"name\": \"Takhar\",\n // \"shortCode\": \"TAK\"\n // },\n // {\n // \"name\": \"Urozgan\",\n // \"shortCode\": \"ORU\"\n // },\n // {\n // \"name\": \"Zabul\",\n // \"shortCode\": \"ZAB\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Åland Islands\",\n // \"countryShortCode\": \"AX\",\n // \"regions\": [\n // {\n // \"name\": \"Brändö\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Eckerö\",\n // \"shortCode\": \"EC\"\n // },\n // {\n // \"name\": \"Finström\",\n // \"shortCode\": \"FN\"\n // },\n // {\n // \"name\": \"Föglö\",\n // \"shortCode\": \"FG\"\n // },\n // {\n // \"name\": \"Geta\",\n // \"shortCode\": \"GT\"\n // },\n // {\n // \"name\": \"Hammarland\",\n // \"shortCode\": \"HM\"\n // },\n // {\n // \"name\": \"Jomala\",\n // \"shortCode\": \"JM\"\n // },\n // {\n // \"name\": \"Kumlinge\",\n // \"shortCode\": \"KM\"\n // },\n // {\n // \"name\": \"Kökar\",\n // \"shortCode\": \"KK\"\n // },\n // {\n // \"name\": \"Lemland\",\n // \"shortCode\": \"LE\"\n // },\n // {\n // \"name\": \"Lumparland\",\n // \"shortCode\": \"LU\"\n // },\n // {\n // \"name\": \"Mariehamn\",\n // \"shortCode\": \"MH\"\n // },\n // {\n // \"name\": \"Saltvik\",\n // \"shortCode\": \"SV\"\n // },\n // {\n // \"name\": \"Sottunga\",\n // \"shortCode\": \"ST\"\n // },\n // {\n // \"name\": \"Sund\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Vårdö\",\n // \"shortCode\": \"VR\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Albania\",\n // \"countryShortCode\": \"AL\",\n // \"regions\": [\n // {\n // \"name\": \"Berat\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Dibër\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Durrës\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Elbasan\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Fier\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Gjirokastër\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Korçë\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Kukës\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Lezhë\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Shkodër\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Tirana\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Vlorë\",\n // \"shortCode\": \"12\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Algeria\",\n \"countryShortCode\": \"DZ\",\n \"translationKey\": \"country_name_algeria\",\n \"regions\": [\n {\n \"name\": \"Adrar\",\n \"translationKey\": \"algeria_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Aïn Defla\",\n \"translationKey\": \"algeria_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Aïn Témouchent\",\n \"translationKey\": \"algeria_region_name_46\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Algiers\",\n \"translationKey\": \"algeria_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Annaba\",\n \"translationKey\": \"algeria_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Batna\",\n \"translationKey\": \"algeria_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Béchar\",\n \"translationKey\": \"algeria_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Béjaïa\",\n \"translationKey\": \"algeria_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Biskra\",\n \"translationKey\": \"algeria_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Blida\",\n \"translationKey\": \"algeria_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Bordj Bou Arréridj\",\n \"translationKey\": \"algeria_region_name_34\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Bouïra\",\n \"translationKey\": \"algeria_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Boumerdès\",\n \"translationKey\": \"algeria_region_name_35\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Chlef\",\n \"translationKey\": \"algeria_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Constantine\",\n \"translationKey\": \"algeria_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Djelfa\",\n \"translationKey\": \"algeria_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"El Bayadh\",\n \"translationKey\": \"algeria_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"El Oued\",\n \"translationKey\": \"algeria_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"El Tarf\",\n \"translationKey\": \"algeria_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Ghardaïa\",\n \"translationKey\": \"algeria_region_name_47\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"Guelma\",\n \"translationKey\": \"algeria_region_name_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Illizi\",\n \"translationKey\": \"algeria_region_name_33\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Jijel\",\n \"translationKey\": \"algeria_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Khenchela\",\n \"translationKey\": \"algeria_region_name_40\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Laghouat\",\n \"translationKey\": \"algeria_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Mascara\",\n \"translationKey\": \"algeria_region_name_29\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Médéa\",\n \"translationKey\": \"algeria_region_name_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Mila\",\n \"translationKey\": \"algeria_region_name_43\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Mostaganem\",\n \"translationKey\": \"algeria_region_name_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Msila\",\n \"translationKey\": \"algeria_region_name_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Naâma\",\n \"translationKey\": \"algeria_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Oran\",\n \"translationKey\": \"algeria_region_name_31\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Ouargla\",\n \"translationKey\": \"algeria_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Oum el Bouaghi\",\n \"translationKey\": \"algeria_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Relizane\",\n \"translationKey\": \"algeria_region_name_48\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"Saïda\",\n \"translationKey\": \"algeria_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Sétif\",\n \"translationKey\": \"algeria_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Sidi Bel Abbès\",\n \"translationKey\": \"algeria_region_name_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Skikda\",\n \"translationKey\": \"algeria_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Souk Ahras\",\n \"translationKey\": \"algeria_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Tamanghasset\",\n \"translationKey\": \"algeria_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Tébessa\",\n \"translationKey\": \"algeria_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Tiaret\",\n \"translationKey\": \"algeria_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Tindouf\",\n \"translationKey\": \"algeria_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Tipaza\",\n \"translationKey\": \"algeria_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Tissemsilt\",\n \"translationKey\": \"algeria_region_name_38\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Tizi Ouzou\",\n \"translationKey\": \"algeria_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Tlemcen\",\n \"translationKey\": \"algeria_region_name_13\",\n \"shortCode\": \"13\"\n }\n ]\n },\n // {\n // \"countryName\": \"American Samoa\",\n // \"countryShortCode\": \"AS\",\n // \"regions\": [\n // {\n // \"name\": \"Tutuila\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Aunu'u\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Ta'ū\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Ofu‑Olosega\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Rose Atoll\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Swains Island\",\n // \"shortCode\": \"22\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Andorra\",\n // \"countryShortCode\": \"AD\",\n // \"regions\": [\n // {\n // \"name\": \"Andorra la Vella\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Canillo\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Encamp\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Escaldes-Engordany\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"La Massana\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Ordino\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Sant Julià de Lòria\",\n // \"shortCode\": \"06\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Angola\",\n \"countryShortCode\": \"AO\",\n \"translationKey\": \"country_name_angola\",\n \"regions\": [\n {\n \"name\": \"Bengo\",\n \"translationKey\": \"angola_region_name_bgo\",\n \"shortCode\": \"BGO\"\n },\n {\n \"name\": \"Benguela\",\n \"translationKey\": \"angola_region_name_bgu\",\n \"shortCode\": \"BGU\"\n },\n {\n \"name\": \"Bié\",\n \"translationKey\": \"angola_region_name_bie\",\n \"shortCode\": \"BIE\"\n },\n {\n \"name\": \"Cabinda\",\n \"translationKey\": \"angola_region_name_cab\",\n \"shortCode\": \"CAB\"\n },\n {\n \"name\": \"Cuando Cubango\",\n \"translationKey\": \"angola_region_name_ccu\",\n \"shortCode\": \"CCU\"\n },\n {\n \"name\": \"Cuanza Norte\",\n \"translationKey\": \"angola_region_name_cno\",\n \"shortCode\": \"CNO\"\n },\n {\n \"name\": \"Cuanza Sul\",\n \"translationKey\": \"angola_region_name_cus\",\n \"shortCode\": \"CUS\"\n },\n {\n \"name\": \"Cunene\",\n \"translationKey\": \"angola_region_name_cnn\",\n \"shortCode\": \"CNN\"\n },\n {\n \"name\": \"Huambo\",\n \"translationKey\": \"angola_region_name_hua\",\n \"shortCode\": \"HUA\"\n },\n {\n \"name\": \"Huíla\",\n \"translationKey\": \"angola_region_name_hui\",\n \"shortCode\": \"HUI\"\n },\n {\n \"name\": \"Luanda\",\n \"translationKey\": \"angola_region_name_lua\",\n \"shortCode\": \"LUA\"\n },\n {\n \"name\": \"Lunda Norte\",\n \"translationKey\": \"angola_region_name_lno\",\n \"shortCode\": \"LNO\"\n },\n {\n \"name\": \"Lunda Sul\",\n \"translationKey\": \"angola_region_name_lsu\",\n \"shortCode\": \"LSU\"\n },\n {\n \"name\": \"Malanje\",\n \"translationKey\": \"angola_region_name_mal\",\n \"shortCode\": \"MAL\"\n },\n {\n \"name\": \"Moxico\",\n \"translationKey\": \"angola_region_name_mox\",\n \"shortCode\": \"MOX\"\n },\n {\n \"name\": \"Namibe\",\n \"translationKey\": \"angola_region_name_nam\",\n \"shortCode\": \"NAM\"\n },\n {\n \"name\": \"Uíge\",\n \"translationKey\": \"angola_region_name_uig\",\n \"shortCode\": \"UIG\"\n },\n {\n \"name\": \"Zaire\",\n \"translationKey\": \"angola_region_name_zai\",\n \"shortCode\": \"ZAI\"\n }\n ]\n },\n // {\n // \"countryName\": \"Anguilla\",\n // \"countryShortCode\": \"AI\",\n // \"regions\": [\n // {\n // \"name\": \"Anguilla\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Anguillita Island\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Blowing Rock\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Cove Cay\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Crocus Cay\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Deadman's Cay\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Dog Island\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"East Cay\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Little Island\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Little Scrub Island\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Mid Cay\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"North Cay\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Prickly Pear Cays\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Rabbit Island\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Sandy Island/Sand Island\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Scilly Cay\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Scrub Island\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Seal Island\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Sombrero/Hat Island\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"South Cay\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"South Wager Island\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"West Cay\",\n // \"shortCode\": \"22\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Antarctica\",\n // \"countryShortCode\": \"AQ\",\n // \"regions\": [\n // {\n // \"name\": \"Antarctica\",\n // \"shortCode\": \"AQ\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Antigua and Barbuda\",\n // \"countryShortCode\": \"AG\",\n // \"regions\": [\n // {\n // \"name\": \"Antigua Island\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Barbuda Island\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Bird Island\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Bishop Island\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Blake Island\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Crump Island\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Dulcina Island\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Exchange Island\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Five Islands\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Great Bird Island\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Green Island\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Guiana Island\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Hawes Island\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Hells Gate Island\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Henry Island\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Johnson Island\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Kid Island\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Lobster Island\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Maiden Island\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Moor Island\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Nanny Island\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Pelican Island\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Prickly Pear Island\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"Rabbit Island\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Red Head Island\",\n // \"shortCode\": \"31\"\n // },\n // {\n // \"name\": \"Redonda Island\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Sandy Island\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Smith Island\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"The Sisters\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Vernon Island\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"Wicked Will Island\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"York Island\",\n // \"shortCode\": \"37\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Argentina\",\n \"countryShortCode\": \"AR\",\n \"translationKey\": \"country_name_argentina\",\n \"regions\": [\n {\n \"name\": \"Buenos Aires\",\n \"translationKey\":\"argentina_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Capital Federal\",\n \"translationKey\":\"argentina_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Catamarca\",\n \"translationKey\":\"argentina_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Chaco\",\n \"translationKey\":\"argentina_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Chubut\",\n \"translationKey\":\"argentina_region_name_u\",\n \"shortCode\": \"U\"\n },\n {\n \"name\": \"Córdoba\",\n \"translationKey\":\"argentina_region_name_x\",\n \"shortCode\": \"X\"\n },\n {\n \"name\": \"Corrientes\",\n \"translationKey\":\"argentina_region_name_w\",\n \"shortCode\": \"W\"\n },\n {\n \"name\": \"Entre Ríos\",\n \"translationKey\":\"argentina_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Formosa\",\n \"translationKey\":\"argentina_region_name_p\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Jujuy\",\n \"translationKey\":\"argentina_region_name_y\",\n \"shortCode\": \"Y\"\n },\n {\n \"name\": \"La Pampa\",\n \"translationKey\":\"argentina_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"La Rioja\",\n \"translationKey\":\"argentina_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Mendoza\",\n \"translationKey\":\"argentina_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Misiones\",\n \"translationKey\":\"argentina_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Neuquén\",\n \"translationKey\":\"argentina_region_name_q\",\n \"shortCode\": \"Q\"\n },\n {\n \"name\": \"Río Negro\",\n \"translationKey\":\"argentina_region_name_r\",\n \"shortCode\": \"R\"\n },\n {\n \"name\": \"Salta\",\n \"translationKey\":\"argentina_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"San Juan\",\n \"translationKey\":\"argentina_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"San Luis\",\n \"translationKey\":\"argentina_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Santa Cruz\",\n \"translationKey\":\"argentina_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"Santa Fe\",\n \"translationKey\":\"argentina_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Santiago del Estero\",\n \"translationKey\":\"argentina_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Tierra del Fuego\",\n \"translationKey\":\"argentina_region_name_v\",\n \"shortCode\": \"V\"\n },\n {\n \"name\": \"Tucumán\",\n \"translationKey\":\"argentina_region_name_t\",\n \"shortCode\": \"T\"\n }\n ]\n },\n {\n \"countryName\": \"Armenia\",\n \"countryShortCode\": \"AM\",\n \"regions\": [\n {\n \"name\": \"Aragatsotn\",\n \"shortCode\": \"AG\"\n },\n {\n \"name\": \"Ararat\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"Armavir\",\n \"shortCode\": \"AV\"\n },\n {\n \"name\": \"Gegharkunik\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Kotayk\",\n \"shortCode\": \"KT\"\n },\n {\n \"name\": \"Lori\",\n \"shortCode\": \"LO\"\n },\n {\n \"name\": \"Shirak\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Syunik\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Tavush\",\n \"shortCode\": \"TV\"\n },\n {\n \"name\": \"Vayots Dzor\",\n \"shortCode\": \"VD\"\n },\n {\n \"name\": \"Yerevan\",\n \"shortCode\": \"ER\"\n }\n ]\n },\n // {\n // \"countryName\": \"Aruba\",\n // \"countryShortCode\": \"AW\",\n // \"regions\": [\n // {\n // \"name\": \"Aruba\",\n // \"shortCode\": \"AW\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Australia\",\n \"translationKey\": \"country_name_australia\",\n \"countryShortCode\": \"AU\",\n \"regions\": [\n {\n \"name\": \"Australian Capital Territory\",\n \"translationKey\": \"australia_region_act\",\n \"shortCode\": \"ACT\"\n },\n {\n \"name\": \"New South Wales\",\n \"translationKey\": \"australia_region_nsw\",\n \"shortCode\": \"NSW\"\n },\n {\n \"name\": \"Northern Territory\",\n \"translationKey\": \"australia_region_nt\",\n \"shortCode\": \"NT\"\n },\n {\n \"name\": \"Queensland\",\n \"translationKey\": \"australia_region_qld\",\n \"shortCode\": \"QLD\"\n },\n {\n \"name\": \"South Australia\",\n \"translationKey\": \"australia_region_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Tasmania\",\n \"translationKey\": \"australia_region_tas\",\n \"shortCode\": \"TAS\"\n },\n {\n \"name\": \"Victoria\",\n \"translationKey\": \"australia_region_vic\",\n \"shortCode\": \"VIC\"\n },\n {\n \"name\": \"Western Australia\",\n \"translationKey\": \"australia_region_wa\",\n \"shortCode\": \"WA\"\n }\n ]\n },\n {\n \"countryName\": \"Austria\",\n \"countryShortCode\": \"AT\",\n \"translationKey\": \"country_name_austria\",\n \"regions\": [\n {\n \"name\": \"Burgenland\",\n \"translationKey\": \"austria_region_burgenland\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Kärnten\",\n \"translationKey\": \"austria_region_karnten\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Niederösterreich\",\n \"translationKey\": \"austria_region_niederosterreich\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Oberösterreich\",\n \"translationKey\": \"austria_region_oberosterreich\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Salzburg\",\n \"translationKey\": \"austria_region_salzburg\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Steiermark\",\n \"translationKey\": \"austria_region_steiermark\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Tirol\",\n \"translationKey\": \"austria_region_tirol\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Vorarlberg\",\n \"translationKey\": \"austria_region_vorarlberg\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Wien\",\n \"translationKey\": \"austria_region_wien\",\n \"shortCode\": \"9\"\n }\n ]\n },\n {\n \"countryName\": \"Azerbaijan\",\n \"countryShortCode\": \"AZ\",\n \"regions\": [\n {\n \"name\": \"Abşeron\",\n \"shortCode\": \"ABS\"\n },\n {\n \"name\": \"Ağcabədi\",\n \"shortCode\": \"AGC\"\n },\n {\n \"name\": \"Ağdam\",\n \"shortCode\": \"AGM\"\n },\n {\n \"name\": \"Ağdaş\",\n \"shortCode\": \"AGS\"\n },\n {\n \"name\": \"Ağstafa\",\n \"shortCode\": \"AGA\"\n },\n {\n \"name\": \"Ağsu\",\n \"shortCode\": \"AGU\"\n },\n {\n \"name\": \"Astara\",\n \"shortCode\": \"AST\"\n },\n {\n \"name\": \"Bakı\",\n \"shortCode\": \"BAK\"\n },\n {\n \"name\": \"Babək\",\n \"shortCode\": \"BAB\"\n },\n {\n \"name\": \"Balakən\",\n \"shortCode\": \"BAL\"\n },\n {\n \"name\": \"Bərdə\",\n \"shortCode\": \"BAR\"\n },\n {\n \"name\": \"Beyləqan\",\n \"shortCode\": \"BEY\"\n },\n {\n \"name\": \"Biləsuvar\",\n \"shortCode\": \"BIL\"\n },\n {\n \"name\": \"Cəbrayıl\",\n \"shortCode\": \"CAB\"\n },\n {\n \"name\": \"Cəlilabad\",\n \"shortCode\": \"CAL\"\n },\n {\n \"name\": \"Culfa\",\n \"shortCode\": \"CUL\"\n },\n {\n \"name\": \"Daşkəsən\",\n \"shortCode\": \"DAS\"\n },\n {\n \"name\": \"Füzuli\",\n \"shortCode\": \"FUZ\"\n },\n {\n \"name\": \"Gədəbəy\",\n \"shortCode\": \"GAD\"\n },\n {\n \"name\": \"Goranboy\",\n \"shortCode\": \"GOR\"\n },\n {\n \"name\": \"Göyçay\",\n \"shortCode\": \"GOY\"\n },\n {\n \"name\": \"Göygöl\",\n \"shortCode\": \"GYG\"\n },\n {\n \"name\": \"Hacıqabul\",\n \"shortCode\": \"HAC\"\n },\n {\n \"name\": \"İmişli\",\n \"shortCode\": \"IMI\"\n },\n {\n \"name\": \"İsmayıllı\",\n \"shortCode\": \"ISM\"\n },\n {\n \"name\": \"Kəlbəcər\",\n \"shortCode\": \"KAL\"\n },\n {\n \"name\": \"Kǝngǝrli\",\n \"shortCode\": \"KAN\"\n },\n {\n \"name\": \"Kürdəmir\",\n \"shortCode\": \"KUR\"\n },\n {\n \"name\": \"Laçın\",\n \"shortCode\": \"LAC\"\n },\n {\n \"name\": \"Lənkəran\",\n \"shortCode\": \"LAN\"\n },\n {\n \"name\": \"Lerik\",\n \"shortCode\": \"LER\"\n },\n {\n \"name\": \"Masallı\",\n \"shortCode\": \"MAS\"\n },\n {\n \"name\": \"Neftçala\",\n \"shortCode\": \"NEF\"\n },\n {\n \"name\": \"Oğuz\",\n \"shortCode\": \"OGU\"\n },\n {\n \"name\": \"Ordubad\",\n \"shortCode\": \"ORD\"\n },\n {\n \"name\": \"Qəbələ\",\n \"shortCode\": \"QAB\"\n },\n {\n \"name\": \"Qax\",\n \"shortCode\": \"QAX\"\n },\n {\n \"name\": \"Qazax\",\n \"shortCode\": \"QAZ\"\n },\n {\n \"name\": \"Qobustan\",\n \"shortCode\": \"QOB\"\n },\n {\n \"name\": \"Quba\",\n \"shortCode\": \"QBA\"\n },\n {\n \"name\": \"Qubadli\",\n \"shortCode\": \"QBI\"\n },\n {\n \"name\": \"Qusar\",\n \"shortCode\": \"QUS\"\n },\n {\n \"name\": \"Saatlı\",\n \"shortCode\": \"SAT\"\n },\n {\n \"name\": \"Sabirabad\",\n \"shortCode\": \"SAB\"\n },\n {\n \"name\": \"Şabran\",\n \"shortCode\": \"SBN\"\n },\n {\n \"name\": \"Sədərək\",\n \"shortCode\": \"SAD\"\n },\n {\n \"name\": \"Şahbuz\",\n \"shortCode\": \"SAH\"\n },\n {\n \"name\": \"Şəki\",\n \"shortCode\": \"SAK\"\n },\n {\n \"name\": \"Salyan\",\n \"shortCode\": \"SAL\"\n },\n {\n \"name\": \"Şamaxı\",\n \"shortCode\": \"SMI\"\n },\n {\n \"name\": \"Şəmkir\",\n \"shortCode\": \"SKR\"\n },\n {\n \"name\": \"Samux\",\n \"shortCode\": \"SMX\"\n },\n {\n \"name\": \"Şərur\",\n \"shortCode\": \"SAR\"\n },\n {\n \"name\": \"Siyəzən\",\n \"shortCode\": \"SIY\"\n },\n {\n \"name\": \"Şuşa\",\n \"shortCode\": \"SUS\"\n },\n {\n \"name\": \"Tərtər\",\n \"shortCode\": \"TAR\"\n },\n {\n \"name\": \"Tovuz\",\n \"shortCode\": \"TOV\"\n },\n {\n \"name\": \"Ucar\",\n \"shortCode\": \"UCA\"\n },\n {\n \"name\": \"Xaçmaz\",\n \"shortCode\": \"XAC\"\n },\n {\n \"name\": \"Xızı\",\n \"shortCode\": \"XIZ\"\n },\n {\n \"name\": \"Xocalı\",\n \"shortCode\": \"XCI\"\n },\n {\n \"name\": \"Xocavənd\",\n \"shortCode\": \"XVD\"\n },\n {\n \"name\": \"Yardımlı\",\n \"shortCode\": \"YAR\"\n },\n {\n \"name\": \"Yevlax\",\n \"shortCode\": \"YEV\"\n },\n {\n \"name\": \"Zəngilan\",\n \"shortCode\": \"ZAN\"\n },\n {\n \"name\": \"Zaqatala\",\n \"shortCode\": \"ZAQ\"\n },\n {\n \"name\": \"Zərdab\",\n \"shortCode\": \"ZAR\"\n }\n ]\n },\n // {\n // \"countryName\": \"Bahamas\",\n // \"countryShortCode\": \"BS\",\n // \"regions\": [\n // {\n // \"name\": \"Acklins Island\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Berry Islands\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Bimini\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Black Point\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Cat Island\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Central Abaco\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Crooked Island and Long Cay\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"East Grand Bahama\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Exuma\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Freeport\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Fresh Creek\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Governor's Harbour\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Green Turtle Cay\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Harbour Island\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"High Rock\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Inagua\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Kemps Bay\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Long Island\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Marsh Harbour\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Mayaguana\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Moore’s Island\",\n // \"shortCode\": \"40\"\n // },\n // {\n // \"name\": \"New Providence\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Nichollstown and Berry Islands\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"North Abaco\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"North Andros\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"North Eleuthera\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"Ragged Island\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Rock Sound\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"San Salvador and Rum Cay\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Sandy Point\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"South Abaco\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"South Andros\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"South Eleuthera\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"West Grand Bahama\",\n // \"shortCode\": \"39\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Bahrain\",\n \"countryShortCode\": \"BH\",\n \"regions\": [\n {\n \"name\": \"Al Janūbīyah\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Al Manāmah\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Al Muḩarraq\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Al Wusţá\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Ash Shamālīyah\",\n \"shortCode\": \"17\"\n }\n ]\n },\n // {\n // \"countryName\": \"Bangladesh\",\n // \"countryShortCode\": \"BD\",\n // \"regions\": [\n // {\n // \"name\": \"Barisal\",\n // \"shortCode\": \"A\"\n // },\n // {\n // \"name\": \"Chittagong\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Dhaka\",\n // \"shortCode\": \"C\"\n // },\n // {\n // \"name\": \"Khulna\",\n // \"shortCode\": \"D\"\n // },\n // {\n // \"name\": \"Mymensingh\",\n // \"shortCode\": \"M\"\n // },\n // {\n // \"name\": \"Rajshahi\",\n // \"shortCode\": \"E\"\n // },\n // {\n // \"name\": \"Rangpur\",\n // \"shortCode\": \"F\"\n // },\n // {\n // \"name\": \"Sylhet\",\n // \"shortCode\": \"G\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Barbados\",\n // \"countryShortCode\": \"BB\",\n // \"regions\": [\n // {\n // \"name\": \"Christ Church\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Saint Andrew\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Saint George\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Saint James\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Saint John\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Saint Joseph\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Saint Lucy\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Saint Michael\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Saint Peter\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Saint Philip\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Saint Thomas\",\n // \"shortCode\": \"11\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Belarus\",\n \"countryShortCode\": \"BY\",\n \"regions\": [\n {\n \"name\": \"Brest voblast\",\n \"shortCode\": \"BR\"\n },\n {\n \"name\": \"Gorod Minsk\",\n \"shortCode\": \"HM\"\n },\n {\n \"name\": \"Homiel voblast\",\n \"shortCode\": \"HO\"\n },\n {\n \"name\": \"Hrodna voblast\",\n \"shortCode\": \"HR\"\n },\n {\n \"name\": \"Mahilyow voblast\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Minsk voblast\",\n \"shortCode\": \"MI\"\n },\n {\n \"name\": \"Vitsebsk voblast\",\n \"shortCode\": \"VI\"\n }\n ]\n },\n {\n \"countryName\": \"Belgium\",\n \"translationKey\": \"country_name_belgium\",\n \"countryShortCode\": \"BE\",\n \"regions\": [\n {\n \"name\": \"Brussels\",\n \"translationKey\": \"belgium_region_name_brussels\",\n \"shortCode\": \"BRU\"\n },\n {\n \"name\": \"Flanders\",\n \"translationKey\": \"belgium_region_name_flanders\",\n \"shortCode\": \"VLG\"\n },\n {\n \"name\": \"Wallonia\",\n \"translationKey\": \"belgium_region_name_wallonia\",\n \"shortCode\": \"WAL\"\n }\n ]\n },\n // {\n // \"countryName\": \"Belize\",\n // \"countryShortCode\": \"BZ\",\n // \"regions\": [\n // {\n // \"name\": \"Belize District\",\n // \"shortCode\": \"BZ\"\n // },\n // {\n // \"name\": \"Cayo District\",\n // \"shortCode\": \"CY\"\n // },\n // {\n // \"name\": \"Corozal District\",\n // \"shortCode\": \"CZL\"\n // },\n // {\n // \"name\": \"Orange Walk District\",\n // \"shortCode\": \"OW\"\n // },\n // {\n // \"name\": \"Stann Creek District\",\n // \"shortCode\": \"SC\"\n // },\n // {\n // \"name\": \"Toledo District\",\n // \"shortCode\": \"TOL\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Benin\",\n \"countryShortCode\": \"BJ\",\n \"regions\": [\n {\n \"name\": \"Alibori\",\n \"shortCode\": \"AL\"\n },\n {\n \"name\": \"Atakora\",\n \"shortCode\": \"AK\"\n },\n {\n \"name\": \"Atlantique\",\n \"shortCode\": \"AQ\"\n },\n {\n \"name\": \"Borgou\",\n \"shortCode\": \"BO\"\n },\n {\n \"name\": \"Collines Department\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"Donga\",\n \"shortCode\": \"DO\"\n },\n {\n \"name\": \"Kouffo\",\n \"shortCode\": \"KO\"\n },\n {\n \"name\": \"Littoral Department\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Mono Department\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Ouémé\",\n \"shortCode\": \"OU\"\n },\n {\n \"name\": \"Plateau\",\n \"shortCode\": \"PL\"\n },\n {\n \"name\": \"Zou\",\n \"shortCode\": \"ZO\"\n }\n ]\n },\n // {\n // \"countryName\": \"Bermuda\",\n // \"countryShortCode\": \"BM\",\n // \"regions\": [\n // {\n // \"name\": \"City of Hamilton\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Devonshire Parish\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Hamilton Parish\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Paget Parish\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Pembroke Parish\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Sandys Parish\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Smith's Parish\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Southampton Parish\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"St. George's Parish\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Town of St. George\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Warwick Parish\",\n // \"shortCode\": \"11\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Bhutan\",\n // \"countryShortCode\": \"BT\",\n // \"regions\": [\n // {\n // \"name\": \"Bumthang\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"Chhukha\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Dagana\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Gasa\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Haa\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Lhuntse\",\n // \"shortCode\": \"44\"\n // },\n // {\n // \"name\": \"Mongar\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"Paro\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Pemagatshel\",\n // \"shortCode\": \"43\"\n // },\n // {\n // \"name\": \"Punakha\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Samdrup Jongkhar\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Samtse\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Sarpang\",\n // \"shortCode\": \"31\"\n // },\n // {\n // \"name\": \"Thimphu\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Trashigang\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Trashiyangtse\",\n // \"shortCode\": \"TY\"\n // },\n // {\n // \"name\": \"Trongsa\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Tsirang\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Wangdue Phodrang\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Zhemgang\",\n // \"shortCode\": \"34\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Bolivia\",\n // \"countryShortCode\": \"BO\",\n // \"regions\": [\n // {\n // \"name\": \"Beni\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Chuquisaca\",\n // \"shortCode\": \"H\"\n // },\n // {\n // \"name\": \"Cochabamba\",\n // \"shortCode\": \"C\"\n // },\n // {\n // \"name\": \"La Paz\",\n // \"shortCode\": \"L\"\n // },\n // {\n // \"name\": \"Oruro\",\n // \"shortCode\": \"O\"\n // },\n // {\n // \"name\": \"Pando\",\n // \"shortCode\": \"N\"\n // },\n // {\n // \"name\": \"Potosí\",\n // \"shortCode\": \"P\"\n // },\n // {\n // \"name\": \"Santa Cruz\",\n // \"shortCode\": \"S\"\n // },\n // {\n // \"name\": \"Tarija\",\n // \"shortCode\": \"T\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Bonaire, Sint Eustatius and Saba\",\n // \"countryShortCode\": \"BQ\",\n // \"regions\": [\n // {\n // \"name\": \"Bonaire\",\n // \"shortCode\": \"BO\"\n // },\n // {\n // \"name\": \"Saba Isand\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Sint Eustatius\",\n // \"shortCode\": \"SE\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Bosnia and Herzegovina\",\n \"countryShortCode\": \"BA\",\n \"regions\": [\n {\n \"name\": \"Brčko Distrikt\",\n \"shortCode\": \"BRC\"\n },\n {\n \"name\": \"Federacija Bosne i Hercegovine\",\n \"shortCode\": \"BIH\"\n },\n {\n \"name\": \"Republika Srpska\",\n \"shortCode\": \"SRP\"\n }\n ]\n },\n {\n \"countryName\": \"Botswana\",\n \"countryShortCode\": \"BW\",\n \"regions\": [\n {\n \"name\": \"Central\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Ghanzi\",\n \"shortCode\": \"GH\"\n },\n {\n \"name\": \"Kgalagadi\",\n \"shortCode\": \"KG\"\n },\n {\n \"name\": \"Kgatleng\",\n \"shortCode\": \"KL\"\n },\n {\n \"name\": \"Kweneng\",\n \"shortCode\": \"KW\"\n },\n {\n \"name\": \"North West\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"North-East\",\n \"shortCode\": \"NE\"\n },\n {\n \"name\": \"South East\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"SO\"\n }\n ]\n },\n // {\n // \"countryName\": \"Bouvet Island\",\n // \"countryShortCode\": \"BV\",\n // \"regions\": [\n // {\n // \"name\": \"Bouvet Island\",\n // \"shortCode\": \"BV\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Brazil\",\n \"countryShortCode\": \"BR\",\n \"regions\": [\n {\n \"name\": \"Acre\",\n \"shortCode\": \"AC\"\n },\n {\n \"name\": \"Alagoas\",\n \"shortCode\": \"AL\"\n },\n {\n \"name\": \"Amapá\",\n \"shortCode\": \"AP\"\n },\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AM\"\n },\n {\n \"name\": \"Bahia\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Ceará\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Distrito Federal\",\n \"shortCode\": \"DF\"\n },\n {\n \"name\": \"Espírito Santo\",\n \"shortCode\": \"ES\"\n },\n {\n \"name\": \"Goiás\",\n \"shortCode\": \"GO\"\n },\n {\n \"name\": \"Maranhão\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Mato Grosso\",\n \"shortCode\": \"MT\"\n },\n {\n \"name\": \"Mato Grosso do Sul\",\n \"shortCode\": \"MS\"\n },\n {\n \"name\": \"Minas Gerais\",\n \"shortCode\": \"MG\"\n },\n {\n \"name\": \"Pará\",\n \"shortCode\": \"PA\"\n },\n {\n \"name\": \"Paraíba\",\n \"shortCode\": \"PB\"\n },\n {\n \"name\": \"Paraná\",\n \"shortCode\": \"PR\"\n },\n {\n \"name\": \"Pernambuco\",\n \"shortCode\": \"PE\"\n },\n {\n \"name\": \"Piauí\",\n \"shortCode\": \"PI\"\n },\n {\n \"name\": \"Rio de Janeiro\",\n \"shortCode\": \"RJ\"\n },\n {\n \"name\": \"Rio Grande do Norte\",\n \"shortCode\": \"RN\"\n },\n {\n \"name\": \"Rio Grande do Sul\",\n \"shortCode\": \"RS\"\n },\n {\n \"name\": \"Rondônia\",\n \"shortCode\": \"RO\"\n },\n {\n \"name\": \"Roraima\",\n \"shortCode\": \"RR\"\n },\n {\n \"name\": \"Santa Catarina\",\n \"shortCode\": \"SC\"\n },\n {\n \"name\": \"São Paulo\",\n \"shortCode\": \"SP\"\n },\n {\n \"name\": \"Sergipe\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Tocantins\",\n \"shortCode\": \"TO\"\n }\n ]\n },\n // {\n // \"countryName\": \"British Indian Ocean Territory\",\n // \"countryShortCode\": \"IO\",\n // \"regions\": [\n // {\n // \"name\": \"British Indian Ocean Territory\",\n // \"shortCode\": \"IO\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Brunei Darussalam\",\n // \"countryShortCode\": \"BN\",\n // \"regions\": [\n // {\n // \"name\": \"Belait\",\n // \"shortCode\": \"BE\"\n // },\n // {\n // \"name\": \"Brunei Muara\",\n // \"shortCode\": \"BM\"\n // },\n // {\n // \"name\": \"Temburong\",\n // \"shortCode\": \"TE\"\n // },\n // {\n // \"name\": \"Tutong\",\n // \"shortCode\": \"TU\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Bulgaria\",\n \"translationKey\": \"country_name_bulgaria\",\n \"countryShortCode\": \"BG\",\n \"regions\": [\n {\n \"name\": \"Blagoevgrad\",\n \"translationKey\": \"bulgaria_region_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Burgas\",\n \"translationKey\": \"bulgaria_region_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Dobrich\",\n \"translationKey\": \"bulgaria_region_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Gabrovo\",\n \"translationKey\": \"bulgaria_region_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Jambol\",\n \"translationKey\": \"bulgaria_region_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Khaskovo\",\n \"translationKey\": \"bulgaria_region_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Kjustendil\",\n \"translationKey\": \"bulgaria_region_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Kurdzhali\",\n \"translationKey\": \"bulgaria_region_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Lovech\",\n \"translationKey\": \"bulgaria_region_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Montana\",\n \"translationKey\": \"bulgaria_region_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Pazardzhik\",\n \"translationKey\": \"bulgaria_region_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Pernik\",\n \"translationKey\": \"bulgaria_region_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Pleven\",\n \"translationKey\": \"bulgaria_region_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Plovdiv\",\n \"translationKey\": \"bulgaria_region_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Razgrad\",\n \"translationKey\": \"bulgaria_region_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Ruse\",\n \"translationKey\": \"bulgaria_region_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Shumen\",\n \"translationKey\": \"bulgaria_region_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Silistra\",\n \"translationKey\": \"bulgaria_region_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Sliven\",\n \"translationKey\": \"bulgaria_region_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Smoljan\",\n \"translationKey\": \"bulgaria_region_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Sofija\",\n \"translationKey\": \"bulgaria_region_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Sofija-Grad\",\n \"translationKey\": \"bulgaria_region_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Stara Zagora\",\n \"translationKey\": \"bulgaria_region_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Turgovishhe\",\n \"translationKey\": \"bulgaria_region_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Varna\",\n \"translationKey\": \"bulgaria_region_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Veliko Turnovo\",\n \"translationKey\": \"bulgaria_region_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Vidin\",\n \"translationKey\": \"bulgaria_region_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Vraca\",\n \"translationKey\": \"bulgaria_region_06\",\n \"shortCode\": \"06\"\n }\n ]\n },\n {\n \"countryName\": \"Burkina Faso\",\n \"countryShortCode\": \"BF\",\n \"regions\": [\n {\n \"name\": \"Balé\",\n \"shortCode\": \"BAL\"\n },\n {\n \"name\": \"Bam/Lake Bam\",\n \"shortCode\": \"BAM\"\n },\n {\n \"name\": \"Banwa Province\",\n \"shortCode\": \"BAN\"\n },\n {\n \"name\": \"Bazèga\",\n \"shortCode\": \"BAZ\"\n },\n {\n \"name\": \"Bougouriba\",\n \"shortCode\": \"BGR\"\n },\n {\n \"name\": \"Boulgou Province\",\n \"shortCode\": \"BLG\"\n },\n {\n \"name\": \"Boulkiemdé\",\n \"shortCode\": \"BLK\"\n },\n {\n \"name\": \"Comoé/Komoe\",\n \"shortCode\": \"COM\"\n },\n {\n \"name\": \"Ganzourgou Province\",\n \"shortCode\": \"GAN\"\n },\n {\n \"name\": \"Gnagna\",\n \"shortCode\": \"GNA\"\n },\n {\n \"name\": \"Gourma Province\",\n \"shortCode\": \"GOU\"\n },\n {\n \"name\": \"Houet\",\n \"shortCode\": \"HOU\"\n },\n {\n \"name\": \"Ioba\",\n \"shortCode\": \"IOB\"\n },\n {\n \"name\": \"Kadiogo\",\n \"shortCode\": \"KAD\"\n },\n {\n \"name\": \"Kénédougou\",\n \"shortCode\": \"KEN\"\n },\n {\n \"name\": \"Komondjari\",\n \"shortCode\": \"KMD\"\n },\n {\n \"name\": \"Kompienga\",\n \"shortCode\": \"KMP\"\n },\n {\n \"name\": \"Kossi Province\",\n \"shortCode\": \"KOS\"\n },\n {\n \"name\": \"Koulpélogo\",\n \"shortCode\": \"KOP\"\n },\n {\n \"name\": \"Kouritenga\",\n \"shortCode\": \"KOT\"\n },\n {\n \"name\": \"Kourwéogo\",\n \"shortCode\": \"KOW\"\n },\n {\n \"name\": \"Léraba\",\n \"shortCode\": \"LER\"\n },\n {\n \"name\": \"Loroum\",\n \"shortCode\": \"LOR\"\n },\n {\n \"name\": \"Mouhoun\",\n \"shortCode\": \"MOU\"\n },\n {\n \"name\": \"Namentenga\",\n \"shortCode\": \"NAM\"\n },\n {\n \"name\": \"Naouri/Nahouri\",\n \"shortCode\": \"NAO\"\n },\n {\n \"name\": \"Nayala\",\n \"shortCode\": \"NAY\"\n },\n {\n \"name\": \"Noumbiel\",\n \"shortCode\": \"NOU\"\n },\n {\n \"name\": \"Oubritenga\",\n \"shortCode\": \"OUB\"\n },\n {\n \"name\": \"Oudalan\",\n \"shortCode\": \"OUD\"\n },\n {\n \"name\": \"Passoré\",\n \"shortCode\": \"PAS\"\n },\n {\n \"name\": \"Poni\",\n \"shortCode\": \"PON\"\n },\n {\n \"name\": \"Sanguié\",\n \"shortCode\": \"SNG\"\n },\n {\n \"name\": \"Sanmatenga\",\n \"shortCode\": \"SMT\"\n },\n {\n \"name\": \"Séno\",\n \"shortCode\": \"SEN\"\n },\n {\n \"name\": \"Sissili\",\n \"shortCode\": \"SIS\"\n },\n {\n \"name\": \"Soum\",\n \"shortCode\": \"SOM\"\n },\n {\n \"name\": \"Sourou\",\n \"shortCode\": \"SOR\"\n },\n {\n \"name\": \"Tapoa\",\n \"shortCode\": \"TAP\"\n },\n {\n \"name\": \"Tui/Tuy\",\n \"shortCode\": \"TUI\"\n },\n {\n \"name\": \"Yagha\",\n \"shortCode\": \"YAG\"\n },\n {\n \"name\": \"Yatenga\",\n \"shortCode\": \"YAT\"\n },\n {\n \"name\": \"Ziro\",\n \"shortCode\": \"ZIR\"\n },\n {\n \"name\": \"Zondoma\",\n \"shortCode\": \"ZON\"\n },\n {\n \"name\": \"Zoundwéogo\",\n \"shortCode\": \"ZOU\"\n }\n ]\n },\n // {\n // \"countryName\": \"Burundi\",\n // \"countryShortCode\": \"BI\",\n // \"regions\": [\n // {\n // \"name\": \"Bubanza\",\n // \"shortCode\": \"BB\"\n // },\n // {\n // \"name\": \"Bujumbura Mairie\",\n // \"shortCode\": \"BM\"\n // },\n // {\n // \"name\": \"Bujumbura Rural\",\n // \"shortCode\": \"BL\"\n // },\n // {\n // \"name\": \"Bururi\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Cankuzo\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Cibitoke\",\n // \"shortCode\": \"CI\"\n // },\n // {\n // \"name\": \"Gitega\",\n // \"shortCode\": \"GI\"\n // },\n // {\n // \"name\": \"Karuzi\",\n // \"shortCode\": \"KR\"\n // },\n // {\n // \"name\": \"Kayanza\",\n // \"shortCode\": \"KY\"\n // },\n // {\n // \"name\": \"Kirundo\",\n // \"shortCode\": \"KI\"\n // },\n // {\n // \"name\": \"Makamba\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Muramvya\",\n // \"shortCode\": \"MU\"\n // },\n // {\n // \"name\": \"Muyinga\",\n // \"shortCode\": \"MY\"\n // },\n // {\n // \"name\": \"Mwaro\",\n // \"shortCode\": \"MW\"\n // },\n // {\n // \"name\": \"Ngozi\",\n // \"shortCode\": \"NG\"\n // },\n // {\n // \"name\": \"Rutana\",\n // \"shortCode\": \"RT\"\n // },\n // {\n // \"name\": \"Ruyigi\",\n // \"shortCode\": \"RY\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Cambodia\",\n // \"countryShortCode\": \"KH\",\n // \"regions\": [\n // {\n // \"name\": \"Baat Dambang\",\n // \"shortCode\": \"2\"\n // },\n // {\n // \"name\": \"Banteay Mean Chey\",\n // \"shortCode\": \"1\"\n // },\n // {\n // \"name\": \"Kampong Chaam\",\n // \"shortCode\": \"3\"\n // },\n // {\n // \"name\": \"Kampong Chhnang\",\n // \"shortCode\": \"4\"\n // },\n // {\n // \"name\": \"Kampong Spueu\",\n // \"shortCode\": \"5\"\n // },\n // {\n // \"name\": \"Kampong Thum\",\n // \"shortCode\": \"6\"\n // },\n // {\n // \"name\": \"Kampot\",\n // \"shortCode\": \"7\"\n // },\n // {\n // \"name\": \"Kandaal\",\n // \"shortCode\": \"8\"\n // },\n // {\n // \"name\": \"Kaoh Kong\",\n // \"shortCode\": \"9\"\n // },\n // {\n // \"name\": \"Kracheh\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Krong Kaeb\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Krong Pailin\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Krong Preah Sihanouk\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Mondol Kiri\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Otdar Mean Chey\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Phnom Penh\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Pousaat\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Preah Vihear\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Prey Veaeng\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Rotanah Kiri\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Siem Reab\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Stueng Treng\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Svaay Rieng\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Taakaev\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Tbong Khmum\",\n // \"shortCode\": \"25\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Cameroon\",\n \"countryShortCode\": \"CM\",\n \"regions\": [\n {\n \"name\": \"Adamaoua\",\n \"shortCode\": \"AD\"\n },\n {\n \"name\": \"Centre\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Est\",\n \"shortCode\": \"ES\"\n },\n {\n \"name\": \"Extrême-Nord\",\n \"shortCode\": \"EN\"\n },\n {\n \"name\": \"Littoral\",\n \"shortCode\": \"LT\"\n },\n {\n \"name\": \"Nord\",\n \"shortCode\": \"NO\"\n },\n {\n \"name\": \"Nord-Ouest\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Ouest\",\n \"shortCode\": \"OU\"\n },\n {\n \"name\": \"Sud\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Sud-Ouest\",\n \"shortCode\": \"SW\"\n }\n ]\n },\n {\n \"countryName\": \"Canada\",\n \"countryShortCode\": \"CA\",\n \"translationKey\": \"canada\",\n \"regions\": [\n {\n \"name\": \"Alberta\",\n \"shortCode\": \"AB\",\n \"translationKey\": \"canada_ab\"\n },\n {\n \"name\": \"British Columbia\",\n \"shortCode\": \"BC\",\n \"translationKey\": \"canada_bc\"\n },\n {\n \"name\": \"Manitoba\",\n \"shortCode\": \"MB\",\n \"translationKey\": \"canada_mb\"\n },\n {\n \"name\": \"New Brunswick\",\n \"shortCode\": \"NB\",\n \"translationKey\": \"canada_nb\"\n },\n {\n \"name\": \"Newfoundland and Labrador\",\n \"shortCode\": \"NL\",\n \"translationKey\": \"canada_nl\"\n },\n {\n \"name\": \"Northwest Territories\",\n \"shortCode\": \"NT\",\n \"translationKey\": \"canada_nt\"\n },\n {\n \"name\": \"Nova Scotia\",\n \"shortCode\": \"NS\",\n \"translationKey\": \"canada_ns\"\n },\n {\n \"name\": \"Nunavut\",\n \"shortCode\": \"NU\",\n \"translationKey\": \"canada_nu\"\n },\n {\n \"name\": \"Ontario\",\n \"shortCode\": \"ON\",\n \"translationKey\": \"canada_on\"\n },\n {\n \"name\": \"Prince Edward Island\",\n \"shortCode\": \"PE\",\n \"translationKey\": \"canada_pe\"\n },\n {\n \"name\": \"Quebec\",\n \"shortCode\": \"QC\",\n \"translationKey\": \"canada_qc\"\n },\n {\n \"name\": \"Saskatchewan\",\n \"shortCode\": \"SK\",\n \"translationKey\": \"canada_sk\"\n },\n {\n \"name\": \"Yukon\",\n \"shortCode\": \"YT\",\n \"translationKey\": \"canada_yt\"\n }\n ]\n },\n // {\n // \"countryName\": \"Cape Verde\",\n // \"countryShortCode\": \"CV\",\n // \"regions\": [\n // {\n // \"name\": \"Boa Vista\",\n // \"shortCode\": \"BV\"\n // },\n // {\n // \"name\": \"Brava\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Calheta de São Miguel\",\n // \"shortCode\": \"CS\"\n // },\n // {\n // \"name\": \"Maio\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Mosteiros\",\n // \"shortCode\": \"MO\"\n // },\n // {\n // \"name\": \"Paúl\",\n // \"shortCode\": \"PA\"\n // },\n // {\n // \"name\": \"Porto Novo\",\n // \"shortCode\": \"PN\"\n // },\n // {\n // \"name\": \"Praia\",\n // \"shortCode\": \"PR\"\n // },\n // {\n // \"name\": \"Ribeira Brava\",\n // \"shortCode\": \"RB\"\n // },\n // {\n // \"name\": \"Ribeira Grande\",\n // \"shortCode\": \"RG\"\n // },\n // {\n // \"name\": \"Sal\",\n // \"shortCode\": \"SL\"\n // },\n // {\n // \"name\": \"Santa Catarina\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Santa Cruz\",\n // \"shortCode\": \"CR\"\n // },\n // {\n // \"name\": \"São Domingos\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"São Filipe\",\n // \"shortCode\": \"SF\"\n // },\n // {\n // \"name\": \"São Nicolau\",\n // \"shortCode\": \"SN\"\n // },\n // {\n // \"name\": \"São Vicente\",\n // \"shortCode\": \"SV\"\n // },\n // {\n // \"name\": \"Tarrafal\",\n // \"shortCode\": \"TA\"\n // },\n // {\n // \"name\": \"Tarrafal de São Nicolau\",\n // \"shortCode\": \"TS\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Cayman Islands\",\n // \"countryShortCode\": \"KY\",\n // \"regions\": [\n // {\n // \"name\": \"Creek\"\n // },\n // {\n // \"name\": \"Eastern\"\n // },\n // {\n // \"name\": \"Midland\"\n // },\n // {\n // \"name\": \"South Town\"\n // },\n // {\n // \"name\": \"Spot Bay\"\n // },\n // {\n // \"name\": \"Stake Bay\"\n // },\n // {\n // \"name\": \"West End\"\n // },\n // {\n // \"name\": \"Western\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Central African Republic\",\n // \"countryShortCode\": \"CF\",\n // \"regions\": [\n // {\n // \"name\": \"Bamingui-Bangoran\",\n // \"shortCode\": \"BB\"\n // },\n // {\n // \"name\": \"Bangui\",\n // \"shortCode\": \"BGF\"\n // },\n // {\n // \"name\": \"Basse-Kotto\",\n // \"shortCode\": \"BK\"\n // },\n // {\n // \"name\": \"Haute-Kotto\",\n // \"shortCode\": \"HK\"\n // },\n // {\n // \"name\": \"Haut-Mbomou\",\n // \"shortCode\": \"HM\"\n // },\n // {\n // \"name\": \"Kémo\",\n // \"shortCode\": \"KG\"\n // },\n // {\n // \"name\": \"Lobaye\",\n // \"shortCode\": \"LB\"\n // },\n // {\n // \"name\": \"Mambéré-Kadéï\",\n // \"shortCode\": \"HS\"\n // },\n // {\n // \"name\": \"Mbomou\",\n // \"shortCode\": \"MB\"\n // },\n // {\n // \"name\": \"Nana-Grebizi\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Nana-Mambéré\",\n // \"shortCode\": \"NM\"\n // },\n // {\n // \"name\": \"Ombella-M'Poko\",\n // \"shortCode\": \"MP\"\n // },\n // {\n // \"name\": \"Ouaka\",\n // \"shortCode\": \"UK\"\n // },\n // {\n // \"name\": \"Ouham\",\n // \"shortCode\": \"AC\"\n // },\n // {\n // \"name\": \"Ouham Péndé\",\n // \"shortCode\": \"OP\"\n // },\n // {\n // \"name\": \"Sangha-Mbaéré\",\n // \"shortCode\": \"SE\"\n // },\n // {\n // \"name\": \"Vakaga\",\n // \"shortCode\": \"VK\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Chad\",\n // \"countryShortCode\": \"TD\",\n // \"regions\": [\n // {\n // \"name\": \"Bahr el Ghazal\",\n // \"shortCode\": \"BG\"\n // },\n // {\n // \"name\": \"Batha\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Borkou\",\n // \"shortCode\": \"BO\"\n // },\n // {\n // \"name\": \"Chari-Baguirmi\",\n // \"shortCode\": \"CB\"\n // },\n // {\n // \"name\": \"Ennedi-Est\",\n // \"shortCode\": \"EE\"\n // },\n // {\n // \"name\": \"Ennedi-Ouest\",\n // \"shortCode\": \"EO\"\n // },\n // {\n // \"name\": \"Guéra\",\n // \"shortCode\": \"GR\"\n // },\n // {\n // \"name\": \"Hadjer Lamis\",\n // \"shortCode\": \"HL\"\n // },\n // {\n // \"name\": \"Kanem\",\n // \"shortCode\": \"KA\"\n // },\n // {\n // \"name\": \"Lac\",\n // \"shortCode\": \"LC\"\n // },\n // {\n // \"name\": \"Logone Occidental\",\n // \"shortCode\": \"LO\"\n // },\n // {\n // \"name\": \"Logone Oriental\",\n // \"shortCode\": \"LR\"\n // },\n // {\n // \"name\": \"Mondoul\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Mayo-Kébbi-Est\",\n // \"shortCode\": \"ME\"\n // },\n // {\n // \"name\": \"Moyen-Chari\",\n // \"shortCode\": \"MC\"\n // },\n // {\n // \"name\": \"Ouaddai\",\n // \"shortCode\": \"OD\"\n // },\n // {\n // \"name\": \"Salamat\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Sila\",\n // \"shortCode\": \"SI\"\n // },\n // {\n // \"name\": \"Tandjilé\",\n // \"shortCode\": \"TA\"\n // },\n // {\n // \"name\": \"Tibesti\",\n // \"shortCode\": \"TI\"\n // },\n // {\n // \"name\": \"Ville de Ndjamena\",\n // \"shortCode\": \"ND\"\n // },\n // {\n // \"name\": \"Wadi Fira\",\n // \"shortCode\": \"WF\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Chile\",\n \"countryShortCode\": \"CL\",\n \"regions\": [\n {\n \"name\": \"Aisén del General Carlos Ibáñez del Campo\",\n \"shortCode\": \"AI\"\n },\n {\n \"name\": \"Antofagasta\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Araucanía\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"Arica y Parinacota\",\n \"shortCode\": \"AP\"\n },\n {\n \"name\": \"Atacama\",\n \"shortCode\": \"AT\"\n },\n {\n \"name\": \"Bío-Bío\",\n \"shortCode\": \"BI\"\n },\n {\n \"name\": \"Coquimbo\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"Libertador General Bernardo O'Higgins\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Los Lagos\",\n \"shortCode\": \"LL\"\n },\n {\n \"name\": \"Los Ríos\",\n \"shortCode\": \"LR\"\n },\n {\n \"name\": \"Magallanes y Antartica Chilena\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Marga-Marga\",\n \"shortCode\": \"\"\n },\n {\n \"name\": \"Maule\",\n \"shortCode\": \"ML\"\n },\n {\n \"name\": \"Ñuble\",\n \"shortCode\": \"NB\"\n },\n {\n \"name\": \"Región Metropolitana de Santiago\",\n \"shortCode\": \"RM\"\n },\n {\n \"name\": \"Tarapacá\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Valparaíso\",\n \"shortCode\": \"VS\"\n }\n ]\n },\n // {\n // \"countryName\": \"China\",\n // \"countryShortCode\": \"CN\",\n // \"regions\": [\n // {\n // \"name\": \"Anhui\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Beijing\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Chongqing\",\n // \"shortCode\": \"50\"\n // },\n // {\n // \"name\": \"Fujian\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"Gansu\",\n // \"shortCode\": \"62\"\n // },\n // {\n // \"name\": \"Guangdong\",\n // \"shortCode\": \"44\"\n // },\n // {\n // \"name\": \"Guangxi\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Guizhou\",\n // \"shortCode\": \"52\"\n // },\n // {\n // \"name\": \"Hainan\",\n // \"shortCode\": \"46\"\n // },\n // {\n // \"name\": \"Hebei\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Heilongjiang\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Henan\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Hong Kong\",\n // \"shortCode\": \"91\"\n // },\n // {\n // \"name\": \"Hubei\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"Hunan\",\n // \"shortCode\": \"43\"\n // },\n // {\n // \"name\": \"Inner Mongolia\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Jiangsu\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Jiangxi\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"Jilin\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Liaoning\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Macau\",\n // \"shortCode\": \"92\"\n // },\n // {\n // \"name\": \"Ningxia\",\n // \"shortCode\": \"64\"\n // },\n // {\n // \"name\": \"Qinghai\",\n // \"shortCode\": \"63\"\n // },\n // {\n // \"name\": \"Shaanxi\",\n // \"shortCode\": \"61\"\n // },\n // {\n // \"name\": \"Shandong\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"Shanghai\",\n // \"shortCode\": \"31\"\n // },\n // {\n // \"name\": \"Shanxi\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Sichuan\",\n // \"shortCode\": \"51\"\n // },\n // {\n // \"name\": \"Tianjin\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Tibet\",\n // \"shortCode\": \"54\"\n // },\n // {\n // \"name\": \"Xinjiang\",\n // \"shortCode\": \"65\"\n // },\n // {\n // \"name\": \"Yunnan\",\n // \"shortCode\": \"53\"\n // },\n // {\n // \"name\": \"Zhejiang\",\n // \"shortCode\": \"33\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Christmas Island\",\n // \"countryShortCode\": \"CX\",\n // \"regions\": [\n // {\n // \"name\": \"Christmas Island\",\n // \"shortCode\": \"CX\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Cocos (Keeling) Islands\",\n // \"countryShortCode\": \"CC\",\n // \"regions\": [\n // {\n // \"name\": \"Direction Island\",\n // \"shortCode\": \"DI\"\n // },\n // {\n // \"name\": \"Home Island\",\n // \"shortCode\": \"HM\"\n // },\n // {\n // \"name\": \"Horsburgh Island\",\n // \"shortCode\": \"HR\"\n // },\n // {\n // \"name\": \"North Keeling Island\",\n // \"shortCode\": \"NK\"\n // },\n // {\n // \"name\": \"South Island\",\n // \"shortCode\": \"SI\"\n // },\n // {\n // \"name\": \"West Island\",\n // \"shortCode\": \"WI\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Colombia\",\n \"countryShortCode\": \"CO\",\n \"regions\": [\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AMA\"\n },\n {\n \"name\": \"Antioquia\",\n \"shortCode\": \"ANT\"\n },\n {\n \"name\": \"Arauca\",\n \"shortCode\": \"ARA\"\n },\n {\n \"name\": \"Archipiélago de San Andrés\",\n \"shortCode\": \"SAP\"\n },\n {\n \"name\": \"Atlántico\",\n \"shortCode\": \"ATL\"\n },\n {\n \"name\": \"Bogotá D.C.\",\n \"shortCode\": \"DC\"\n },\n {\n \"name\": \"Bolívar\",\n \"shortCode\": \"BOL\"\n },\n {\n \"name\": \"Boyacá\",\n \"shortCode\": \"BOY\"\n },\n {\n \"name\": \"Caldas\",\n \"shortCode\": \"CAL\"\n },\n {\n \"name\": \"Caquetá\",\n \"shortCode\": \"CAQ\"\n },\n {\n \"name\": \"Casanare\",\n \"shortCode\": \"CAS\"\n },\n {\n \"name\": \"Cauca\",\n \"shortCode\": \"CAU\"\n },\n {\n \"name\": \"Cesar\",\n \"shortCode\": \"CES\"\n },\n {\n \"name\": \"Chocó\",\n \"shortCode\": \"CHO\"\n },\n {\n \"name\": \"Córdoba\",\n \"shortCode\": \"COR\"\n },\n {\n \"name\": \"Cundinamarca\",\n \"shortCode\": \"CUN\"\n },\n {\n \"name\": \"Guainía\",\n \"shortCode\": \"GUA\"\n },\n {\n \"name\": \"Guaviare\",\n \"shortCode\": \"GUV\"\n },\n {\n \"name\": \"Huila\",\n \"shortCode\": \"HUI\"\n },\n {\n \"name\": \"La Guajira\",\n \"shortCode\": \"LAG\"\n },\n {\n \"name\": \"Magdalena\",\n \"shortCode\": \"MAG\"\n },\n {\n \"name\": \"Meta\",\n \"shortCode\": \"MET\"\n },\n {\n \"name\": \"Nariño\",\n \"shortCode\": \"NAR\"\n },\n {\n \"name\": \"Norte de Santander\",\n \"shortCode\": \"NSA\"\n },\n {\n \"name\": \"Putumayo\",\n \"shortCode\": \"PUT\"\n },\n {\n \"name\": \"Quindío\",\n \"shortCode\": \"QUI\"\n },\n {\n \"name\": \"Risaralda\",\n \"shortCode\": \"RIS\"\n },\n {\n \"name\": \"Santander\",\n \"shortCode\": \"SAN\"\n },\n {\n \"name\": \"Sucre\",\n \"shortCode\": \"SUC\"\n },\n {\n \"name\": \"Tolima\",\n \"shortCode\": \"TOL\"\n },\n {\n \"name\": \"Valle del Cauca\",\n \"shortCode\": \"VAC\"\n },\n {\n \"name\": \"Vaupés\",\n \"shortCode\": \"VAU\"\n },\n {\n \"name\": \"Vichada\",\n \"shortCode\": \"VID\"\n }\n ]\n },\n // {\n // \"countryName\": \"Comoros\",\n // \"countryShortCode\": \"KM\",\n // \"regions\": [\n // {\n // \"name\": \"Andjazîdja\",\n // \"shortCode\": \"G\"\n // },\n // {\n // \"name\": \"Andjouân\",\n // \"shortCode\": \"A\"\n // },\n // {\n // \"name\": \"Moûhîlî\",\n // \"shortCode\": \"M\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Congo, Republic of the (Brazzaville)\",\n \"countryShortCode\": \"CG\",\n \"regions\": [\n {\n \"name\": \"Bouenza\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Brazzaville\",\n \"shortCode\": \"BZV\"\n },\n {\n \"name\": \"Cuvette\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Cuvette-Ouest\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Kouilou\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Lékoumou\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Likouala\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Niari\",\n \"shortCode\": \"9\"\n },\n {\n \"name\": \"Plateaux\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Pointe-Noire\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Pool\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Sangha\",\n \"shortCode\": \"13\"\n }\n ]\n },\n {\n \"countryName\": \"Congo, the Democratic Republic of the (Kinshasa)\",\n \"countryShortCode\": \"CD\",\n \"regions\": [\n {\n \"name\": \"Bandundu\",\n \"shortCode\": \"BN\"\n },\n {\n \"name\": \"Bas-Congo\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Équateur\",\n \"shortCode\": \"EQ\"\n },\n {\n \"name\": \"Kasaï-Occidental\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kasaï-Oriental\",\n \"shortCode\": \"KW\"\n },\n {\n \"name\": \"Katanga\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Kinshasa\",\n \"shortCode\": \"KN\"\n },\n {\n \"name\": \"Maniema\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Nord-Kivu\",\n \"shortCode\": \"NK\"\n },\n {\n \"name\": \"Orientale\",\n \"shortCode\": \"OR\"\n },\n {\n \"name\": \"Sud-Kivu\",\n \"shortCode\": \"SK\"\n }\n ]\n },\n // {\n // \"countryName\": \"Cook Islands\",\n // \"countryShortCode\": \"CK\",\n // \"regions\": [\n // {\n // \"name\": \"Aitutaki\"\n // },\n // {\n // \"name\": \"Atiu\"\n // },\n // {\n // \"name\": \"Avarua\"\n // },\n // {\n // \"name\": \"Mangaia\"\n // },\n // {\n // \"name\": \"Manihiki\"\n // },\n // {\n // \"name\": \"Ma'uke\"\n // },\n // {\n // \"name\": \"Mitiaro\"\n // },\n // {\n // \"name\": \"Nassau\"\n // },\n // {\n // \"name\": \"Palmerston\"\n // },\n // {\n // \"name\": \"Penrhyn\"\n // },\n // {\n // \"name\": \"Pukapuka\"\n // },\n // {\n // \"name\": \"Rakahanga\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Costa Rica\",\n // \"countryShortCode\": \"CR\",\n // \"regions\": [\n // {\n // \"name\": \"Alajuela\",\n // \"shortCode\": \"2\"\n // },\n // {\n // \"name\": \"Cartago\",\n // \"shortCode\": \"3\"\n // },\n // {\n // \"name\": \"Guanacaste\",\n // \"shortCode\": \"5\"\n // },\n // {\n // \"name\": \"Heredia\",\n // \"shortCode\": \"4\"\n // },\n // {\n // \"name\": \"Limón\",\n // \"shortCode\": \"7\"\n // },\n // {\n // \"name\": \"Puntarenas\",\n // \"shortCode\": \"6\"\n // },\n // {\n // \"name\": \"San José\",\n // \"shortCode\": \"1\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Côte d'Ivoire, Republic of\",\n // \"countryShortCode\": \"CI\",\n // \"regions\": [\n // {\n // \"name\": \"Agnéby\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Bafing\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Bas-Sassandra\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Denguélé\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Dix-Huit Montagnes\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Fromager\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Haut-Sassandra\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Lacs\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Lagunes\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Marahoué\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Moyen-Cavally\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Moyen-Comoé\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"N'zi-Comoé\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Savanes\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Sud-Bandama\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Sud-Comoé\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Vallée du Bandama\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Worodougou\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Zanzan\",\n // \"shortCode\": \"08\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Croatia\",\n \"translationKey\": \"country_name_croatia\",\n \"countryShortCode\": \"HR\",\n \"regions\": [\n {\n \"name\": \"Bjelovarsko-bilogorska županija\",\n \"translationKey\": \"croatia_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Brodsko-posavska županija\",\n \"translationKey\": \"croatia_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Dubrovačko-neretvanska županija\",\n \"translationKey\": \"croatia_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Grad Zagreb\",\n \"translationKey\": \"croatia_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Istarska županija\",\n \"translationKey\": \"croatia_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Karlovačka županija\",\n \"translationKey\": \"croatia_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Koprivničko-križevačka županija\",\n \"translationKey\": \"croatia_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Krapinsko-zagorska županija\",\n \"translationKey\": \"croatia_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Ličko-senjska županija\",\n \"translationKey\": \"croatia_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Međimurska županija\",\n \"translationKey\": \"croatia_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Osječko-baranjska županija\",\n \"translationKey\": \"croatia_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Požeško-slavonska županija\",\n \"translationKey\": \"croatia_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Primorsko-goranska županija\",\n \"translationKey\": \"croatia_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Sisačko-moslavačka županija\",\n \"translationKey\": \"croatia_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Splitsko-dalmatinska županija\",\n \"translationKey\": \"croatia_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Šibensko-kninska županija\",\n \"translationKey\": \"croatia_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Varaždinska županija\",\n \"translationKey\": \"croatia_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Virovitičko-podravska županija\",\n \"translationKey\": \"croatia_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Vukovarsko-srijemska županija\",\n \"translationKey\": \"croatia_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Zadarska županija\",\n \"translationKey\": \"croatia_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Zagrebačka županija\",\n \"translationKey\": \"croatia_region_name_01\",\n \"shortCode\": \"01\"\n }\n ]\n },\n // {\n // \"countryName\": \"Cuba\",\n // \"countryShortCode\": \"CU\",\n // \"regions\": [\n // {\n // \"name\": \"Artemisa\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Camagüey\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Ciego de Ávila\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Cienfuegos\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Granma\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Guantánamo\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Holguín\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Isla de la Juventud\",\n // \"shortCode\": \"99\"\n // },\n // {\n // \"name\": \"La Habana\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Las Tunas\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Matanzas\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Mayabeque\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Pinar del Río\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Sancti Spíritus\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Santiago de Cuba\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Villa Clara\",\n // \"shortCode\": \"05\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Curaçao\",\n // \"countryShortCode\": \"CW\",\n // \"regions\": [\n // {\n // \"name\": \"Curaçao\",\n // \"shortCode\": \"CW\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Republic of Cyprus\",\n \"translationKey\": \"country_name_cyprus\",\n \"countryShortCode\": \"CY\",\n \"regions\": [\n {\n \"name\": \"Ammochostos\",\n \"translationKey\": \"cyprus_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Keryneia\",\n \"translationKey\": \"cyprus_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Larnaka\",\n \"translationKey\": \"cyprus_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Lefkosia\",\n \"translationKey\": \"cyprus_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Lemesos\",\n \"translationKey\": \"cyprus_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Pafos\",\n \"translationKey\": \"cyprus_region_name_05\",\n \"shortCode\": \"05\"\n }\n ]\n },\n {\n \"countryName\": \"Czech Republic\",\n \"translationKey\": \"country_name_czech\",\n \"countryShortCode\": \"CZ\",\n \"regions\": [\n {\n \"name\": \"Hlavní město Praha\",\n \"translationKey\": \"czech_region_name_pr\",\n \"shortCode\": \"PR\"\n },\n {\n \"name\": \"Jihočeský kraj\",\n \"translationKey\": \"czech_region_name_jc\",\n \"shortCode\": \"JC\"\n },\n {\n \"name\": \"Jihomoravský kraj\",\n \"translationKey\": \"czech_region_name_jm\",\n \"shortCode\": \"JM\"\n },\n {\n \"name\": \"Karlovarský kraj\",\n \"translationKey\": \"czech_region_name_ka\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Královéhradecký kraj\",\n \"translationKey\": \"czech_region_name_kr\",\n \"shortCode\": \"KR\"\n },\n {\n \"name\": \"Liberecký kraj\",\n \"translationKey\": \"czech_region_name_li\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Moravskoslezský kraj\",\n \"translationKey\": \"czech_region_name_mo\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Olomoucký kraj\",\n \"translationKey\": \"czech_region_name_ol\",\n \"shortCode\": \"OL\"\n },\n {\n \"name\": \"Pardubický kraj\",\n \"translationKey\": \"czech_region_name_pa\",\n \"shortCode\": \"PA\"\n },\n {\n \"name\": \"Plzeňský kraj\",\n \"translationKey\": \"czech_region_name_pl\",\n \"shortCode\": \"PL\"\n },\n {\n \"name\": \"Středočeský kraj\",\n \"translationKey\": \"czech_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Ústecký kraj\",\n \"translationKey\": \"czech_region_name_us\",\n \"shortCode\": \"US\"\n },\n {\n \"name\": \"Vysočina\",\n \"translationKey\": \"czech_region_name_vy\",\n \"shortCode\": \"VY\"\n },\n {\n \"name\": \"Zlínský kraj\",\n \"translationKey\": \"czech_region_name_zl\",\n \"shortCode\": \"ZL\"\n }\n ]\n },\n {\n \"countryName\": \"Denmark\",\n \"translationKey\": \"country_name_denmark\",\n \"countryShortCode\": \"DK\",\n \"regions\": [\n {\n \"name\": \"Hovedstaden\",\n \"translationKey\": \"denmark_region_name_84\",\n \"shortCode\": \"84\"\n },\n {\n \"name\": \"Kujalleq\",\n \"translationKey\": \"denmark_region_name_gl_ku\",\n \"shortCode\": \"GL-KU\"\n },\n {\n \"name\": \"Midtjylland\",\n \"translationKey\": \"denmark_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Norderøerne\",\n \"translationKey\": \"denmark_region_name_fo_01\",\n \"shortCode\": \"FO-01\"\n },\n {\n \"name\": \"Nordjylland\",\n \"translationKey\": \"denmark_region_name_81\",\n \"shortCode\": \"81\"\n },\n {\n \"name\": \"Østerø\",\n \"translationKey\": \"denmark_region_name_fo_06\",\n \"shortCode\": \"FO-06\"\n },\n {\n \"name\": \"Qaasuitsup\",\n \"translationKey\": \"denmark_region_name_gl_qa\",\n \"shortCode\": \"GL-QA\"\n },\n {\n \"name\": \"Qeqqata\",\n \"translationKey\": \"denmark_region_name_gl_qe\",\n \"shortCode\": \"GL-QE\"\n },\n {\n \"name\": \"Sandø\",\n \"translationKey\": \"denmark_region_name_fo_02\",\n \"shortCode\": \"FO-02\"\n },\n {\n \"name\": \"Sermersooq\",\n \"translationKey\": \"denmark_region_name_gl_sm\",\n \"shortCode\": \"GL-SM\"\n },\n {\n \"name\": \"Sjælland\",\n \"translationKey\": \"denmark_region_name_85\",\n \"shortCode\": \"85\"\n },\n {\n \"name\": \"Strømø\",\n \"translationKey\": \"denmark_region_name_f0_03\",\n \"shortCode\": \"FO-03\"\n },\n {\n \"name\": \"Suderø\",\n \"translationKey\": \"denmark_region_name_fo_04\",\n \"shortCode\": \"FO-04\"\n },\n {\n \"name\": \"Syddanmark\",\n \"translationKey\": \"denmark_region_name_83\",\n \"shortCode\": \"83\"\n },\n {\n \"name\": \"Vågø\",\n \"translationKey\": \"denmark_region_name_fo_05\",\n \"shortCode\": \"FO-05\"\n }\n ]\n },\n // {\n // \"countryName\": \"Djibouti\",\n // \"countryShortCode\": \"DJ\",\n // \"regions\": [\n // {\n // \"name\": \"Ali Sabieh\",\n // \"shortCode\": \"AS\"\n // },\n // {\n // \"name\": \"Arta\",\n // \"shortCode\": \"AR\"\n // },\n // {\n // \"name\": \"Dikhil\",\n // \"shortCode\": \"DI\"\n // },\n // {\n // \"name\": \"Obock\",\n // \"shortCode\": \"OB\"\n // },\n // {\n // \"name\": \"Tadjourah\",\n // \"shortCode\": \"TA\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Dominica\",\n // \"countryShortCode\": \"DM\",\n // \"regions\": [\n // {\n // \"name\": \"Saint Andrew Parish\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Saint David Parish\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Saint George Parish\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Saint John Parish\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Saint Joseph Parish\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Saint Luke Parish\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Saint Mark Parish\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Saint Patrick Parish\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Saint Paul Parish\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Saint Peter Parish\",\n // \"shortCode\": \"11\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Dominican Republic\",\n // \"countryShortCode\": \"DO\",\n // \"regions\": [\n // {\n // \"name\": \"Cibao Central\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Del Valle\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"Distrito Nacional\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Enriquillo\",\n // \"shortCode\": \"38\"\n // },\n // {\n // \"name\": \"Norcentral\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Nordeste\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"Noroeste\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Norte\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"Valdesia\",\n // \"shortCode\": \"42\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Ecuador\",\n \"countryShortCode\": \"EC\",\n \"regions\": [\n {\n \"name\": \"Azuay\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Bolívar\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Cañar\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Carchi\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Chimborazo\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Cotopaxi\",\n \"shortCode\": \"X\"\n },\n {\n \"name\": \"El Oro\",\n \"shortCode\": \"O\"\n },\n {\n \"name\": \"Esmeraldas\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Galápagos\",\n \"shortCode\": \"W\"\n },\n {\n \"name\": \"Guayas\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Imbabura\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Loja\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Los Ríos\",\n \"shortCode\": \"R\"\n },\n {\n \"name\": \"Manabí\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Morona-Santiago\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Napo\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Orellana\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Pastaza\",\n \"shortCode\": \"Y\"\n },\n {\n \"name\": \"Pichincha\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Santa Elena\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Santo Domingo de los Tsáchilas\",\n \"shortCode\": \"SD\"\n },\n {\n \"name\": \"Sucumbíos\",\n \"shortCode\": \"U\"\n },\n {\n \"name\": \"Tungurahua\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Zamora-Chinchipe\",\n \"shortCode\": \"Z\"\n }\n ]\n },\n {\n \"countryName\": \"Egypt\",\n \"countryShortCode\": \"EG\",\n \"regions\": [\n {\n \"name\": \"Alexandria\",\n \"shortCode\": \"ALX\"\n },\n {\n \"name\": \"Aswan\",\n \"shortCode\": \"ASN\"\n },\n {\n \"name\": \"Asyout\",\n \"shortCode\": \"AST\"\n },\n {\n \"name\": \"Bani Sueif\",\n \"shortCode\": \"BNS\"\n },\n {\n \"name\": \"Beheira\",\n \"shortCode\": \"BH\"\n },\n {\n \"name\": \"Cairo\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Daqahlia\",\n \"shortCode\": \"DK\"\n },\n {\n \"name\": \"Dumiat\",\n \"shortCode\": \"DT\"\n },\n {\n \"name\": \"El Bahr El Ahmar\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"El Ismailia\",\n \"shortCode\": \"IS\"\n },\n {\n \"name\": \"El Suez\",\n \"shortCode\": \"SUZ\"\n },\n {\n \"name\": \"El Wadi El Gedeed\",\n \"shortCode\": \"WAD\"\n },\n {\n \"name\": \"Fayoum\",\n \"shortCode\": \"FYM\"\n },\n {\n \"name\": \"Gharbia\",\n \"shortCode\": \"GH\"\n },\n {\n \"name\": \"Giza\",\n \"shortCode\": \"GZ\"\n },\n {\n \"name\": \"Helwan\",\n \"shortCode\": \"HU\"\n },\n {\n \"name\": \"Kafr El Sheikh\",\n \"shortCode\": \"KFS\"\n },\n {\n \"name\": \"Luxor\",\n \"shortCode\": \"LX\"\n },\n {\n \"name\": \"Matrouh\",\n \"shortCode\": \"MT\"\n },\n {\n \"name\": \"Menia\",\n \"shortCode\": \"MN\"\n },\n {\n \"name\": \"Menofia\",\n \"shortCode\": \"MNF\"\n },\n {\n \"name\": \"North Sinai\",\n \"shortCode\": \"SIN\"\n },\n {\n \"name\": \"Port Said\",\n \"shortCode\": \"PTS\"\n },\n {\n \"name\": \"Qalubia\",\n \"shortCode\": \"KB\"\n },\n {\n \"name\": \"Qena\",\n \"shortCode\": \"KN\"\n },\n {\n \"name\": \"Sharqia\",\n \"shortCode\": \"SHR\"\n },\n {\n \"name\": \"Sixth of October\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Sohag\",\n \"shortCode\": \"SHG\"\n },\n {\n \"name\": \"South Sinai\",\n \"shortCode\": \"JS\"\n }\n ]\n },\n // {\n // \"countryName\": \"El Salvador\",\n // \"countryShortCode\": \"SV\",\n // \"regions\": [\n // {\n // \"name\": \"Ahuachapán\",\n // \"shortCode\": \"AH\"\n // },\n // {\n // \"name\": \"Cabañas\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Cuscatlán\",\n // \"shortCode\": \"CU\"\n // },\n // {\n // \"name\": \"Chalatenango\",\n // \"shortCode\": \"CH\"\n // },\n // {\n // \"name\": \"La Libertad\",\n // \"shortCode\": \"LI\"\n // },\n // {\n // \"name\": \"La Paz\",\n // \"shortCode\": \"PA\"\n // },\n // {\n // \"name\": \"La Unión\",\n // \"shortCode\": \"UN\"\n // },\n // {\n // \"name\": \"Morazán\",\n // \"shortCode\": \"MO\"\n // },\n // {\n // \"name\": \"San Miguel\",\n // \"shortCode\": \"SM\"\n // },\n // {\n // \"name\": \"San Salvador\",\n // \"shortCode\": \"SS\"\n // },\n // {\n // \"name\": \"Santa Ana\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"San Vicente\",\n // \"shortCode\": \"SV\"\n // },\n // {\n // \"name\": \"Sonsonate\",\n // \"shortCode\": \"SO\"\n // },\n // {\n // \"name\": \"Usulután\",\n // \"shortCode\": \"US\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Equatorial Guinea\",\n // \"countryShortCode\": \"GQ\",\n // \"regions\": [\n // {\n // \"name\": \"Annobón\",\n // \"shortCode\": \"AN\"\n // },\n // {\n // \"name\": \"Bioko Norte\",\n // \"shortCode\": \"BN\"\n // },\n // {\n // \"name\": \"Bioko Sur\",\n // \"shortCode\": \"BS\"\n // },\n // {\n // \"name\": \"Centro Sur\",\n // \"shortCode\": \"CS\"\n // },\n // {\n // \"name\": \"Kié-Ntem\",\n // \"shortCode\": \"KN\"\n // },\n // {\n // \"name\": \"Litoral\",\n // \"shortCode\": \"LI\"\n // },\n // {\n // \"name\": \"Wele-Nzas\",\n // \"shortCode\": \"WN\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Eritrea\",\n // \"countryShortCode\": \"ER\",\n // \"regions\": [\n // {\n // \"name\": \"Anseba\",\n // \"shortCode\": \"AN\"\n // },\n // {\n // \"name\": \"Debub\",\n // \"shortCode\": \"DU\"\n // },\n // {\n // \"name\": \"Debub-Keih-Bahri\",\n // \"shortCode\": \"DK\"\n // },\n // {\n // \"name\": \"Gash-Barka\",\n // \"shortCode\": \"GB\"\n // },\n // {\n // \"name\": \"Maekel\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Semien-Keih-Bahri\",\n // \"shortCode\": \"SK\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Estonia\",\n \"translationKey\": \"country_name_estonia\",\n \"countryShortCode\": \"EE\",\n \"regions\": [\n {\n \"name\": \"Harjumaa (Tallinn)\",\n \"translationKey\": \"estonia_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Hiiumaa (Kardla)\",\n \"translationKey\": \"estonia_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Ida-Virumaa (Johvi)\",\n \"translationKey\": \"estonia_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Järvamaa (Paide)\",\n \"translationKey\": \"estonia_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Jõgevamaa (Jogeva)\",\n \"translationKey\": \"estonia_region_name_49\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"Läänemaa\",\n \"translationKey\": \"estonia_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Lääne-Virumaa (Rakvere)\",\n \"translationKey\": \"estonia_region_name_59\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Pärnumaa (Parnu)\",\n \"translationKey\": \"estonia_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Põlvamaa (Polva)\",\n \"translationKey\": \"estonia_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Raplamaa (Rapla)\",\n \"translationKey\": \"estonia_region_name_70\",\n \"shortCode\": \"70\"\n },\n {\n \"name\": \"Saaremaa (Kuessaare)\",\n \"translationKey\": \"estonia_region_name_74\",\n \"shortCode\": \"74\"\n },\n {\n \"name\": \"Tartumaa (Tartu)\",\n \"translationKey\": \"estonia_region_name_78\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Valgamaa (Valga)\",\n \"translationKey\": \"estonia_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Viljandimaa (Viljandi)\",\n \"translationKey\": \"estonia_region_name_84\",\n \"shortCode\": \"84\"\n },\n {\n \"name\": \"Võrumaa (Voru)\",\n \"translationKey\": \"estonia_region_name_86\",\n \"shortCode\": \"86\"\n }\n ]\n },\n {\n \"countryName\": \"Ethiopia\",\n \"countryShortCode\": \"ET\",\n \"regions\": [\n {\n \"name\": \"Addis Ababa\",\n \"shortCode\": \"AA\"\n },\n {\n \"name\": \"Afar\",\n \"shortCode\": \"AF\"\n },\n {\n \"name\": \"Amhara\",\n \"shortCode\": \"AM\"\n },\n {\n \"name\": \"Benshangul-Gumaz\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Dire Dawa\",\n \"shortCode\": \"DD\"\n },\n {\n \"name\": \"Gambela\",\n \"shortCode\": \"GA\"\n },\n {\n \"name\": \"Harari\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Oromia\",\n \"shortCode\": \"OR\"\n },\n {\n \"name\": \"Somali\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Southern Nations Nationalities and People's Region\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Tigray\",\n \"shortCode\": \"TI\"\n }\n ]\n },\n // {\n // \"countryName\": \"Falkland Islands (Islas Malvinas)\",\n // \"countryShortCode\": \"FK\",\n // \"regions\": [\n // {\n // \"name\": \"Falkland Islands (Islas Malvinas)\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Faroe Islands\",\n // \"countryShortCode\": \"FO\",\n // \"regions\": [\n // {\n // \"name\": \"Bordoy\"\n // },\n // {\n // \"name\": \"Eysturoy\"\n // },\n // {\n // \"name\": \"Mykines\"\n // },\n // {\n // \"name\": \"Sandoy\"\n // },\n // {\n // \"name\": \"Skuvoy\"\n // },\n // {\n // \"name\": \"Streymoy\"\n // },\n // {\n // \"name\": \"Suduroy\"\n // },\n // {\n // \"name\": \"Tvoroyri\"\n // },\n // {\n // \"name\": \"Vagar\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Fiji\",\n // \"countryShortCode\": \"FJ\",\n // \"regions\": [\n // {\n // \"name\": \"Ba\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Bua\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Cakaudrove\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Kadavu\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Lau\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Lomaiviti\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Macuata\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Nadroga and Navosa\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Naitasiri\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Namosi\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Ra\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Rewa\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Rotuma\",\n // \"shortCode\": \"R\"\n // },\n // {\n // \"name\": \"Serua\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Tailevu\",\n // \"shortCode\": \"14\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Finland\",\n \"translationKey\": \"country_name_finland\",\n \"countryShortCode\": \"FI\",\n \"regions\": [\n {\n \"name\": \"Ahvenanmaan maakunta\",\n \"translationKey\": \"finland_region_name_fi_01\",\n \"shortCode\": \"FI-01\"\n },\n {\n \"name\": \"Etelä-Karjala\",\n \"translationKey\": \"finland_region_name_fi_02\",\n \"shortCode\": \"FI-02\"\n },\n {\n \"name\": \"Etelä-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_03\",\n \"shortCode\": \"FI-03\"\n },\n {\n \"name\": \"Etelä-Savo\",\n \"translationKey\": \"finland_region_name_fi_04\",\n \"shortCode\": \"FI-04\"\n },\n {\n \"name\": \"Kainuu\",\n \"translationKey\": \"finland_region_name_fi_05\",\n \"shortCode\": \"FI-05\"\n },\n {\n \"name\": \"Kanta-Häme\",\n \"translationKey\": \"finland_region_name_fi_06\",\n \"shortCode\": \"FI-06\"\n },\n {\n \"name\": \"Keski-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_07\",\n \"shortCode\": \"FI-07\"\n },\n {\n \"name\": \"Keski-Suomi\",\n \"translationKey\": \"finland_region_name_fi_08\",\n \"shortCode\": \"FI-08\"\n },\n {\n \"name\": \"Kymenlaakso\",\n \"translationKey\": \"finland_region_name_fi_09\",\n \"shortCode\": \"FI-09\"\n },\n {\n \"name\": \"Lappi\",\n \"translationKey\": \"finland_region_name_fi_10\",\n \"shortCode\": \"FI-10\"\n },\n {\n \"name\": \"Pirkanmaa\",\n \"translationKey\": \"finland_region_name_fi_11\",\n \"shortCode\": \"FI-11\"\n },\n {\n \"name\": \"Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_12\",\n \"shortCode\": \"FI-12\"\n },\n {\n \"name\": \"Pohjois-Karjala\",\n \"translationKey\": \"finland_region_name_fi_13\",\n \"shortCode\": \"FI-13\"\n },\n {\n \"name\": \"Pohjois-Pohjanmaa\",\n \"translationKey\": \"finland_region_name_fi_14\",\n \"shortCode\": \"FI-14\"\n },\n {\n \"name\": \"Pohjois-Savo\",\n \"translationKey\": \"finland_region_name_fi_15\",\n \"shortCode\": \"FI-15\"\n },\n {\n \"name\": \"Päijät-Häme\",\n \"translationKey\": \"finland_region_name_fi_16\",\n \"shortCode\": \"FI-16\"\n },\n {\n \"name\": \"Satakunta\",\n \"translationKey\": \"finland_region_name_fi_17\",\n \"shortCode\": \"FI-17\"\n },\n {\n \"name\": \"Uusimaa\",\n \"translationKey\": \"finland_region_name_fi_18\",\n \"shortCode\": \"FI-18\"\n },\n {\n \"name\": \"Varsinais-Suomi\",\n \"translationKey\": \"finland_region_name_fi_19\",\n \"shortCode\": \"FI-19\"\n }\n ]\n },\n {\n \"countryName\": \"France\",\n \"translationKey\": \"country_name_france\",\n \"countryShortCode\": \"FR\",\n \"regions\": [\n {\n \"name\": \"Auvergne-Rhône-Alpes\",\n \"translationKey\": \"france_region_name_ara\",\n \"shortCode\": \"ARA\"\n },\n {\n \"name\": \"Bourgogne-Franche-Comté\",\n \"translationKey\": \"france_region_name_bfc\",\n \"shortCode\": \"BFC\"\n },\n {\n \"name\": \"Bretagne\",\n \"translationKey\": \"france_region_name_bre\",\n \"shortCode\": \"BRE\"\n },\n {\n \"name\": \"Centre-Val de Loire\",\n \"translationKey\": \"france_region_name_cvl\",\n \"shortCode\": \"CVL\"\n },\n {\n \"name\": \"Corse\",\n \"translationKey\": \"france_region_name_cor\",\n \"shortCode\": \"COR\"\n },\n {\n \"name\": \"Grand Est\",\n \"translationKey\": \"france_region_name_ges\",\n \"shortCode\": \"GES\"\n },\n {\n \"name\": \"Hauts-de-France\",\n \"translationKey\": \"france_region_name_hdf\",\n \"shortCode\": \"HDF\"\n },\n {\n \"name\": \"Île-de-France\",\n \"translationKey\": \"france_region_name_idf\",\n \"shortCode\": \"IDF\"\n },\n {\n \"name\": \"Normandie\",\n \"translationKey\": \"france_region_name_nor\",\n \"shortCode\": \"NOR\"\n },\n {\n \"name\": \"Nouvelle-Aquitaine\",\n \"translationKey\": \"france_region_name_naq\",\n \"shortCode\": \"NAQ\"\n },\n {\n \"name\": \"Occitanie\",\n \"translationKey\": \"france_region_name_occ\",\n \"shortCode\": \"OCC\"\n },\n {\n \"name\": \"Pays de la Loire\",\n \"translationKey\": \"france_region_name_pdl\",\n \"shortCode\": \"PDL\"\n },\n {\n \"name\": \"Provence-Alpes-Cote d'Azur\",\n \"translationKey\": \"france_region_name_pac\",\n \"shortCode\": \"PAC\"\n },\n {\n \"name\": \"Clipperton\",\n \"translationKey\": \"france_region_name_cp\",\n \"shortCode\": \"CP\"\n },\n {\n \"name\": \"Guadeloupe\",\n \"translationKey\": \"france_region_name_gp\",\n \"shortCode\": \"GP\"\n },\n {\n \"name\": \"Guyane\",\n \"translationKey\": \"france_region_name_gf\",\n \"shortCode\": \"GF\"\n },\n {\n \"name\": \"Martinique\",\n \"translationKey\": \"france_region_name_mq\",\n \"shortCode\": \"MQ\"\n },\n {\n \"name\": \"Mayotte\",\n \"translationKey\": \"france_region_name_yt\",\n \"shortCode\": \"YT\"\n },\n {\n \"name\": \"Novelle-Calédonie\",\n \"translationKey\": \"france_region_name_nc\",\n \"shortCode\": \"NC\"\n },\n {\n \"name\": \"Polynésie\",\n \"translationKey\": \"france_region_name_pf\",\n \"shortCode\": \"PF\"\n },\n {\n \"name\": \"Saint-Pierre-et-Miquelon\",\n \"translationKey\": \"france_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Saint Barthélemy\",\n \"translationKey\": \"france_region_name_bl\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Saint Martin\",\n \"translationKey\": \"france_region_name_mf\",\n \"shortCode\": \"MF\"\n },\n {\n \"name\": \"Réunion\",\n \"translationKey\": \"france_region_name_re\",\n \"shortCode\": \"RE\"\n },\n {\n \"name\": \"Terres Australes Françaises\",\n \"translationKey\": \"france_region_name_tf\",\n \"shortCode\": \"TF\"\n },\n {\n \"name\": \"Wallis-et-Futuna\",\n \"translationKey\": \"france_region_name_wf\",\n \"shortCode\": \"WF\"\n }\n ]\n },\n // {\n // \"countryName\": \"French Guiana\",\n // \"countryShortCode\": \"GF\",\n // \"regions\": [\n // {\n // \"name\": \"French Guiana\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"French Polynesia\",\n // \"countryShortCode\": \"PF\",\n // \"regions\": [\n // {\n // \"name\": \"Archipel des Marquises\"\n // },\n // {\n // \"name\": \"Archipel des Tuamotu\"\n // },\n // {\n // \"name\": \"Archipel des Tubuai\"\n // },\n // {\n // \"name\": \"Iles du Vent\"\n // },\n // {\n // \"name\": \"Iles Sous-le-Vent\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"French Southern and Antarctic Lands\",\n // \"countryShortCode\": \"TF\",\n // \"regions\": [\n // {\n // \"name\": \"Adelie Land\"\n // },\n // {\n // \"name\": \"Ile Crozet\"\n // },\n // {\n // \"name\": \"Iles Kerguelen\"\n // },\n // {\n // \"name\": \"Iles Saint-Paul et Amsterdam\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Gabon\",\n \"countryShortCode\": \"GA\",\n \"regions\": [\n {\n \"name\": \"Estuaire\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Haut-Ogooué\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Moyen-Ogooué\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Ngounié\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Nyanga\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Ogooué-Ivindo\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Ogooué-Lolo\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Ogooué-Maritime\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Woleu-Ntem\",\n \"shortCode\": \"9\"\n }\n ]\n },\n // {\n // \"countryName\": \"Gambia, The\",\n // \"countryShortCode\": \"GM\",\n // \"regions\": [\n // {\n // \"name\": \"Banjul\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Central River\",\n // \"shortCode\": \"M\"\n // },\n // {\n // \"name\": \"Lower River\",\n // \"shortCode\": \"L\"\n // },\n // {\n // \"name\": \"North Bank\",\n // \"shortCode\": \"N\"\n // },\n // {\n // \"name\": \"Upper River\",\n // \"shortCode\": \"U\"\n // },\n // {\n // \"name\": \"Western\",\n // \"shortCode\": \"W\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Georgia\",\n \"countryShortCode\": \"GE\",\n \"regions\": [\n {\n \"name\": \"Abkhazia (Sokhumi)\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Ajaria (Bat'umi)\",\n \"shortCode\": \"AJ\"\n },\n {\n \"name\": \"Guria\",\n \"shortCode\": \"GU\"\n },\n {\n \"name\": \"Imereti\",\n \"shortCode\": \"IM\"\n },\n {\n \"name\": \"K'akheti\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Kvemo Kartli\",\n \"shortCode\": \"KK\"\n },\n {\n \"name\": \"Mtshkheta-Mtianeti\",\n \"shortCode\": \"MM\"\n },\n {\n \"name\": \"Rach'a-Lexhkumi-KvemoSvaneti\",\n \"shortCode\": \"RL\"\n },\n {\n \"name\": \"Samegrelo-Zemo Svaneti\",\n \"shortCode\": \"SZ\"\n },\n {\n \"name\": \"Samtskhe-Javakheti\",\n \"shortCode\": \"SJ\"\n },\n {\n \"name\": \"Shida Kartli\",\n \"shortCode\": \"SK\"\n },\n {\n \"name\": \"Tbilisi\",\n \"shortCode\": \"TB\"\n }\n ]\n },\n {\n \"countryName\": \"Germany\",\n \"translationKey\": \"country_name_germany\",\n \"countryShortCode\": \"DE\",\n \"regions\": [\n {\n \"name\": \"Baden-Württemberg\",\n \"translationKey\": \"germany_region_name_bw\",\n \"shortCode\": \"BW\"\n },\n {\n \"name\": \"Bayern\",\n \"translationKey\": \"germany_region_name_by\",\n \"shortCode\": \"BY\"\n },\n {\n \"name\": \"Berlin\",\n \"translationKey\": \"germany_region_name_be\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Brandenburg\",\n \"translationKey\": \"germany_region_name_bb\",\n \"shortCode\": \"BB\"\n },\n {\n \"name\": \"Bremen\",\n \"translationKey\": \"germany_region_name_hb\",\n \"shortCode\": \"HB\"\n },\n {\n \"name\": \"Hamburg\",\n \"translationKey\": \"germany_region_name_hh\",\n \"shortCode\": \"HH\"\n },\n {\n \"name\": \"Hessen\",\n \"translationKey\": \"germany_region_name_he\",\n \"shortCode\": \"HE\"\n },\n {\n \"name\": \"Mecklenburg-Vorpommern\",\n \"translationKey\": \"germany_region_name_mv\",\n \"shortCode\": \"MV\"\n },\n {\n \"name\": \"Niedersachsen\",\n \"translationKey\": \"germany_region_name_ni\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Nordrhein-Westfalen\",\n \"translationKey\": \"germany_region_name_nw\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Rheinland-Pfalz\",\n \"translationKey\": \"germany_region_name_rp\",\n \"shortCode\": \"RP\"\n },\n {\n \"name\": \"Saarland\",\n \"translationKey\": \"germany_region_name_sl\",\n \"shortCode\": \"SL\"\n },\n {\n \"name\": \"Sachsen\",\n \"translationKey\": \"germany_region_name_sn\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Sachsen-Anhalt\",\n \"translationKey\": \"germany_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Schleswig-Holstein\",\n \"translationKey\": \"germany_region_name_sh\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Thüringen\",\n \"translationKey\": \"germany_region_name_th\",\n \"shortCode\": \"TH\"\n }\n ]\n },\n {\n \"countryName\": \"Ghana\",\n \"countryShortCode\": \"GH\",\n \"regions\": [\n {\n \"name\": \"Ahafo\"\n },\n {\n \"name\": \"Ashanti\",\n \"shortCode\": \"AH\"\n },\n {\n \"name\": \"Bono\"\n },\n {\n \"name\": \"Bono East\"\n },\n {\n \"name\": \"Central\",\n \"shortCode\": \"CP\"\n },\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"EP\"\n },\n {\n \"name\": \"Greater Accra\",\n \"shortCode\": \"AA\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"NP\"\n },\n {\n \"name\": \"North East\"\n },\n {\n \"name\": \"Oti\"\n },\n {\n \"name\": \"Savannah\"\n },\n {\n \"name\": \"Upper East\",\n \"shortCode\": \"UE\"\n },\n {\n \"name\": \"Upper West\",\n \"shortCode\": \"UW\"\n },\n {\n \"name\": \"Volta\",\n \"shortCode\": \"TV\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"WP\"\n },\n {\n \"name\": \"Western North\"\n }\n ]\n },\n // {\n // \"countryName\": \"Gibraltar\",\n // \"countryShortCode\": \"GI\",\n // \"regions\": [\n // {\n // \"name\": \"Gibraltar\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Greece\",\n \"translationKey\": \"country_name_greece\",\n \"countryShortCode\": \"GR\",\n \"regions\": [\n {\n \"name\": \"Anatolikí Makedonía kai Thráki\",\n \"translationKey\": \"greece_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Attikḯ\",\n \"translationKey\": \"greece_region_name_i\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Dytikí Elláda\",\n \"translationKey\": \"greece_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Dytikí Makedonía\",\n \"translationKey\": \"greece_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Ionía Nísia\",\n \"translationKey\": \"greece_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Kentrikí Makedonía\",\n \"translationKey\": \"greece_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Krítí\",\n \"translationKey\": \"greece_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Notío Aigaío\",\n \"translationKey\": \"greece_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Peloponnísos\",\n \"translationKey\": \"greece_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"Stereá Elláda\",\n \"translationKey\": \"greece_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Thessalía\",\n \"translationKey\": \"greece_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Voreío Aigaío\",\n \"translationKey\": \"greece_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Ípeiros\",\n \"translationKey\": \"greece_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Ágion Óros\",\n \"translationKey\": \"greece_region_name_69\",\n \"shortCode\": \"69\"\n }\n ]\n },\n // {\n // \"countryName\": \"Greenland\",\n // \"countryShortCode\": \"GL\",\n // \"regions\": [\n // {\n // \"name\": \"Kommune Kujalleq\",\n // \"shortCode\": \"KU\"\n // },\n // {\n // \"name\": \"Kommuneqarfik Sermersooq\",\n // \"shortCode\": \"SM\"\n // },\n // {\n // \"name\": \"Qaasuitsup Kommunia\",\n // \"shortCode\": \"QA\"\n // },\n // {\n // \"name\": \"Qeqqata Kommunia\",\n // \"shortCode\": \"QE\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Grenada\",\n // \"countryShortCode\": \"GD\",\n // \"regions\": [\n // {\n // \"name\": \"Saint Andrew\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Saint David\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Saint George\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Saint John\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Saint Mark\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Saint Patrick\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Southern Grenadine Islands\",\n // \"shortCode\": \"10\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Guadeloupe\",\n \"countryShortCode\": \"GP\",\n \"regions\": [\n {\n \"name\": \"Guadeloupe\"\n }\n ]\n },\n // {\n // \"countryName\": \"Guam\",\n // \"countryShortCode\": \"GU\",\n // \"regions\": [\n // {\n // \"name\": \"Guam\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Guatemala\",\n \"countryShortCode\": \"GT\",\n \"regions\": [\n {\n \"name\": \"Alta Verapaz\",\n \"shortCode\": \"AV\"\n },\n {\n \"name\": \"Baja Verapaz\",\n \"shortCode\": \"BV\"\n },\n {\n \"name\": \"Chimaltenango\",\n \"shortCode\": \"CM\"\n },\n {\n \"name\": \"Chiquimula\",\n \"shortCode\": \"CQ\"\n },\n {\n \"name\": \"El Progreso\",\n \"shortCode\": \"PR\"\n },\n {\n \"name\": \"Escuintla\",\n \"shortCode\": \"ES\"\n },\n {\n \"name\": \"Guatemala\",\n \"shortCode\": \"GU\"\n },\n {\n \"name\": \"Huehuetenango\",\n \"shortCode\": \"HU\"\n },\n {\n \"name\": \"Izabal\",\n \"shortCode\": \"IZ\"\n },\n {\n \"name\": \"Jalapa\",\n \"shortCode\": \"JA\"\n },\n {\n \"name\": \"Jutiapa\",\n \"shortCode\": \"JU\"\n },\n {\n \"name\": \"Petén\",\n \"shortCode\": \"PE\"\n },\n {\n \"name\": \"Quetzaltenango\",\n \"shortCode\": \"QZ\"\n },\n {\n \"name\": \"Quiché\",\n \"shortCode\": \"QC\"\n },\n {\n \"name\": \"Retalhuleu\",\n \"shortCode\": \"Re\"\n },\n {\n \"name\": \"Sacatepéquez\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"San Marcos\",\n \"shortCode\": \"SM\"\n },\n {\n \"name\": \"Santa Rosa\",\n \"shortCode\": \"SR\"\n },\n {\n \"name\": \"Sololá\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Suchitepéquez\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Totonicapán\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Zacapa\",\n \"shortCode\": \"ZA\"\n }\n ]\n },\n // {\n // \"countryName\": \"Guernsey\",\n // \"countryShortCode\": \"GG\",\n // \"regions\": [\n // {\n // \"name\": \"Castel\"\n // },\n // {\n // \"name\": \"Forest\"\n // },\n // {\n // \"name\": \"St. Andrew\"\n // },\n // {\n // \"name\": \"St. Martin\"\n // },\n // {\n // \"name\": \"St. Peter Port\"\n // },\n // {\n // \"name\": \"St. Pierre du Bois\"\n // },\n // {\n // \"name\": \"St. Sampson\"\n // },\n // {\n // \"name\": \"St. Saviour\"\n // },\n // {\n // \"name\": \"Torteval\"\n // },\n // {\n // \"name\": \"Vale\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Guinea\",\n \"countryShortCode\": \"GN\",\n \"regions\": [\n {\n \"name\": \"Boké\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Conakry\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Faranah\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Kankan\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Kindia\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Labé\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Mamou\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Nzérékoré\",\n \"shortCode\": \"N\"\n }\n ]\n },\n // {\n // \"countryName\": \"Guinea-Bissau\",\n // \"countryShortCode\": \"GW\",\n // \"regions\": [\n // {\n // \"name\": \"Bafatá\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Biombo\",\n // \"shortCode\": \"BM\"\n // },\n // {\n // \"name\": \"Bissau\",\n // \"shortCode\": \"BS\"\n // },\n // {\n // \"name\": \"Bolama-Bijagos\",\n // \"shortCode\": \"BL\"\n // },\n // {\n // \"name\": \"Cacheu\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Gabú\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Oio\",\n // \"shortCode\": \"OI\"\n // },\n // {\n // \"name\": \"Quinara\",\n // \"shortCode\": \"QU\"\n // },\n // {\n // \"name\": \"Tombali\",\n // \"shortCode\": \"TO\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Guyana\",\n // \"countryShortCode\": \"GY\",\n // \"regions\": [\n // {\n // \"name\": \"Barima-Waini\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Cuyuni-Mazaruni\",\n // \"shortCode\": \"CU\"\n // },\n // {\n // \"name\": \"Demerara-Mahaica\",\n // \"shortCode\": \"DE\"\n // },\n // {\n // \"name\": \"East Berbice-Corentyne\",\n // \"shortCode\": \"EB\"\n // },\n // {\n // \"name\": \"Essequibo Islands-West Demerara\",\n // \"shortCode\": \"ES\"\n // },\n // {\n // \"name\": \"Mahaica-Berbice\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Pomeroon-Supenaam\",\n // \"shortCode\": \"PM\"\n // },\n // {\n // \"name\": \"Potaro-Siparuni\",\n // \"shortCode\": \"PT\"\n // },\n // {\n // \"name\": \"Upper Demerara-Berbice\",\n // \"shortCode\": \"UD\"\n // },\n // {\n // \"name\": \"Upper Takutu-Upper Essequibo\",\n // \"shortCode\": \"UT\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Haiti\",\n // \"countryShortCode\": \"HT\",\n // \"regions\": [\n // {\n // \"name\": \"Artibonite\",\n // \"shortCode\": \"AR\"\n // },\n // {\n // \"name\": \"Centre\",\n // \"shortCode\": \"CE\"\n // },\n // {\n // \"name\": \"Grand'Anse\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Nippes\",\n // \"shortCode\": \"NI\"\n // },\n // {\n // \"name\": \"Nord\",\n // \"shortCode\": \"ND\"\n // },\n // {\n // \"name\": \"Nord-Est\",\n // \"shortCode\": \"NE\"\n // },\n // {\n // \"name\": \"Nord-Ouest\",\n // \"shortCode\": \"NO\"\n // },\n // {\n // \"name\": \"Ouest\",\n // \"shortCode\": \"OU\"\n // },\n // {\n // \"name\": \"Sud\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Sud-Est\",\n // \"shortCode\": \"SE\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Heard Island and McDonald Islands\",\n // \"countryShortCode\": \"HM\",\n // \"regions\": [\n // {\n // \"name\": \"Heard Island and McDonald Islands\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Holy See (Vatican City)\",\n // \"countryShortCode\": \"VA\",\n // \"regions\": [\n // {\n // \"name\": \"Holy See (Vatican City)\",\n // \"shortCode\": \"01\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Honduras\",\n // \"countryShortCode\": \"HN\",\n // \"regions\": [\n // {\n // \"name\": \"Atlántida\",\n // \"shortCode\": \"AT\"\n // },\n // {\n // \"name\": \"Choluteca\",\n // \"shortCode\": \"CH\"\n // },\n // {\n // \"name\": \"Colón\",\n // \"shortCode\": \"CL\"\n // },\n // {\n // \"name\": \"Comayagua\",\n // \"shortCode\": \"CM\"\n // },\n // {\n // \"name\": \"Copán\",\n // \"shortCode\": \"CP\"\n // },\n // {\n // \"name\": \"Cortés\",\n // \"shortCode\": \"CR\"\n // },\n // {\n // \"name\": \"El Paraíso\",\n // \"shortCode\": \"EP\"\n // },\n // {\n // \"name\": \"Francisco Morazan\",\n // \"shortCode\": \"FM\"\n // },\n // {\n // \"name\": \"Gracias a Dios\",\n // \"shortCode\": \"GD\"\n // },\n // {\n // \"name\": \"Intibucá\",\n // \"shortCode\": \"IN\"\n // },\n // {\n // \"name\": \"Islas de la Bahía\",\n // \"shortCode\": \"IB\"\n // },\n // {\n // \"name\": \"La Paz\",\n // \"shortCode\": \"LP\"\n // },\n // {\n // \"name\": \"Lempira\",\n // \"shortCode\": \"LE\"\n // },\n // {\n // \"name\": \"Ocotepeque\",\n // \"shortCode\": \"OC\"\n // },\n // {\n // \"name\": \"Olancho\",\n // \"shortCode\": \"OL\"\n // },\n // {\n // \"name\": \"Santa Bárbara\",\n // \"shortCode\": \"SB\"\n // },\n // {\n // \"name\": \"Valle\",\n // \"shortCode\": \"VA\"\n // },\n // {\n // \"name\": \"Yoro\",\n // \"shortCode\": \"YO\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Hong Kong\",\n // \"countryShortCode\": \"HK\",\n // \"regions\": [\n // {\n // \"name\": \"Hong Kong\",\n // \"shortCode\": \"HK\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Hungary\",\n \"translationKey\": \"country_name_hungary\",\n \"countryShortCode\": \"HU\",\n \"regions\": [\n {\n \"name\": \"Bács-Kiskun\",\n \"translationKey\": \"hungary_region_name_bk\",\n \"shortCode\": \"BK\"\n },\n {\n \"name\": \"Baranya\",\n \"translationKey\": \"hungary_region_name_ba\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Békés\",\n \"translationKey\": \"hungary_region_name_be\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Békéscsaba\",\n \"translationKey\": \"hungary_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Borsod-Abauj-Zemplen\",\n \"translationKey\": \"hungary_region_name_bz\",\n \"shortCode\": \"BZ\"\n },\n {\n \"name\": \"Budapest\",\n \"translationKey\": \"hungary_region_name_bu\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Csongrád\",\n \"translationKey\": \"hungary_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Debrecen\",\n \"translationKey\": \"hungary_region_name_de\",\n \"shortCode\": \"DE\"\n },\n {\n \"name\": \"Dunaújváros\",\n \"translationKey\": \"hungary_region_name_du\",\n \"shortCode\": \"DU\"\n },\n {\n \"name\": \"Eger\",\n \"translationKey\": \"hungary_region_name_eg\",\n \"shortCode\": \"EG\"\n },\n {\n \"name\": \"Érd\",\n \"translationKey\": \"hungary_region_name_er\",\n \"shortCode\": \"ER\"\n },\n {\n \"name\": \"Fejér\",\n \"translationKey\": \"hungary_region_name_fe\",\n \"shortCode\": \"FE\"\n },\n {\n \"name\": \"Győr\",\n \"translationKey\": \"hungary_region_name_gy\",\n \"shortCode\": \"GY\"\n },\n {\n \"name\": \"Győr-Moson-Sopron\",\n \"translationKey\": \"hungary_region_name_gs\",\n \"shortCode\": \"GS\"\n },\n {\n \"name\": \"Hajdú-Bihar\",\n \"translationKey\": \"hungary_region_name_hb\",\n \"shortCode\": \"HB\"\n },\n {\n \"name\": \"Heves\",\n \"translationKey\": \"hungary_region_name_he\",\n \"shortCode\": \"HE\"\n },\n {\n \"name\": \"Hódmezővásárhely\",\n \"translationKey\": \"hungary_region_name_hv\",\n \"shortCode\": \"HV\"\n },\n {\n \"name\": \"Jász-Nagykun-Szolnok\",\n \"translationKey\": \"hungary_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Kaposvár\",\n \"translationKey\": \"hungary_region_name_kv\",\n \"shortCode\": \"KV\"\n },\n {\n \"name\": \"Kecskemét\",\n \"translationKey\": \"hungary_region_name_km\",\n \"shortCode\": \"KM\"\n },\n {\n \"name\": \"Komárom-Esztergom\",\n \"translationKey\": \"hungary_region_name_ke\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Miskolc\",\n \"translationKey\": \"hungary_region_name_mi\",\n \"shortCode\": \"MI\"\n },\n {\n \"name\": \"Nagykanizsa\",\n \"translationKey\": \"hungary_region_name_nk\",\n \"shortCode\": \"NK\"\n },\n {\n \"name\": \"Nógrád\",\n \"translationKey\": \"hungary_region_name_no\",\n \"shortCode\": \"NO\"\n },\n {\n \"name\": \"Nyíregyháza\",\n \"translationKey\": \"hungary_region_name_ny\",\n \"shortCode\": \"NY\"\n },\n {\n \"name\": \"Pécs\",\n \"translationKey\": \"hungary_region_name_ps\",\n \"shortCode\": \"PS\"\n },\n {\n \"name\": \"Pest\",\n \"translationKey\": \"hungary_region_name_pe\",\n \"shortCode\": \"PE\"\n },\n {\n \"name\": \"Salgótarján\",\n \"translationKey\": \"hungary_region_name_st\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Somogy\",\n \"translationKey\": \"hungary_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Sopron\",\n \"translationKey\": \"hungary_region_name_sn\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Szabolcs-á-Bereg\",\n \"translationKey\": \"hungary_region_name_sz\",\n \"shortCode\": \"SZ\"\n },\n {\n \"name\": \"Szeged\",\n \"translationKey\": \"hungary_region_name_sd\",\n \"shortCode\": \"SD\"\n },\n {\n \"name\": \"Székesfehérvár\",\n \"translationKey\": \"hungary_region_name_sf\",\n \"shortCode\": \"SF\"\n },\n {\n \"name\": \"Szekszárd\",\n \"translationKey\": \"hungary_region_name_ss\",\n \"shortCode\": \"SS\"\n },\n {\n \"name\": \"Szolnok\",\n \"translationKey\": \"hungary_region_name_sk\",\n \"shortCode\": \"SK\"\n },\n {\n \"name\": \"Szombathely\",\n \"translationKey\": \"hungary_region_name_sh\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Tatabánya\",\n \"translationKey\": \"hungary_region_name_tb\",\n \"shortCode\": \"TB\"\n },\n {\n \"name\": \"Tolna\",\n \"translationKey\": \"hungary_region_name_to\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Vas\",\n \"translationKey\": \"hungary_region_name_va\",\n \"shortCode\": \"VA\"\n },\n {\n \"name\": \"Veszprém\",\n \"translationKey\": \"hungary_region_name_ve\",\n \"shortCode\": \"VE\"\n },\n {\n \"name\": \"Veszprém (City)\",\n \"translationKey\": \"hungary_region_name_vm\",\n \"shortCode\": \"VM\"\n },\n {\n \"name\": \"Zala\",\n \"translationKey\": \"hungary_region_name_za\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Zalaegerszeg\",\n \"translationKey\": \"hungary_region_name_ze\",\n \"shortCode\": \"ZE\"\n }\n ]\n },\n {\n \"countryName\": \"Iceland\",\n \"countryShortCode\": \"IS\",\n \"regions\": [\n {\n \"name\": \"Austurland\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Höfuðborgarsvæði utan Reykjavíkur\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Norðurland eystra\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Norðurland vestra\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Suðurland\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Suðurnes\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Vestfirðir\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Vesturland\",\n \"shortCode\": \"3\"\n }\n ]\n },\n // {\n // \"countryName\": \"India\",\n // \"countryShortCode\": \"IN\",\n // \"regions\": [\n // {\n // \"name\": \"Andaman and Nicobar Islands\",\n // \"shortCode\": \"AN\"\n // },\n // {\n // \"name\": \"Andhra Pradesh\",\n // \"shortCode\": \"AP\"\n // },\n // {\n // \"name\": \"Arunachal Pradesh\",\n // \"shortCode\": \"AR\"\n // },\n // {\n // \"name\": \"Assam\",\n // \"shortCode\": \"AS\"\n // },\n // {\n // \"name\": \"Bihar\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Chandigarh\",\n // \"shortCode\": \"CH\"\n // },\n // {\n // \"name\": \"Chhattisgarh\",\n // \"shortCode\": \"CT\"\n // },\n // {\n // \"name\": \"Dadra and Nagar Haveli\",\n // \"shortCode\": \"DN\"\n // },\n // {\n // \"name\": \"Daman and Diu\",\n // \"shortCode\": \"DD\"\n // },\n // {\n // \"name\": \"Delhi\",\n // \"shortCode\": \"DL\"\n // },\n // {\n // \"name\": \"Goa\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Gujarat\",\n // \"shortCode\": \"GJ\"\n // },\n // {\n // \"name\": \"Haryana\",\n // \"shortCode\": \"HR\"\n // },\n // {\n // \"name\": \"Himachal Pradesh\",\n // \"shortCode\": \"HP\"\n // },\n // {\n // \"name\": \"Jammu and Kashmir\",\n // \"shortCode\": \"JK\"\n // },\n // {\n // \"name\": \"Jharkhand\",\n // \"shortCode\": \"JH\"\n // },\n // {\n // \"name\": \"Karnataka\",\n // \"shortCode\": \"KA\"\n // },\n // {\n // \"name\": \"Kerala\",\n // \"shortCode\": \"KL\"\n // },\n // {\n // \"name\": \"Lakshadweep\",\n // \"shortCode\": \"LD\"\n // },\n // {\n // \"name\": \"Madhya Pradesh\",\n // \"shortCode\": \"MP\"\n // },\n // {\n // \"name\": \"Maharashtra\",\n // \"shortCode\": \"MH\"\n // },\n // {\n // \"name\": \"Manipur\",\n // \"shortCode\": \"MN\"\n // },\n // {\n // \"name\": \"Meghalaya\",\n // \"shortCode\": \"ML\"\n // },\n // {\n // \"name\": \"Mizoram\",\n // \"shortCode\": \"MZ\"\n // },\n // {\n // \"name\": \"Nagaland\",\n // \"shortCode\": \"NL\"\n // },\n // {\n // \"name\": \"Odisha\",\n // \"shortCode\": \"OR\"\n // },\n // {\n // \"name\": \"Puducherry\",\n // \"shortCode\": \"PY\"\n // },\n // {\n // \"name\": \"Punjab\",\n // \"shortCode\": \"PB\"\n // },\n // {\n // \"name\": \"Rajasthan\",\n // \"shortCode\": \"RJ\"\n // },\n // {\n // \"name\": \"Sikkim\",\n // \"shortCode\": \"WK\"\n // },\n // {\n // \"name\": \"Tamil Nadu\",\n // \"shortCode\": \"TN\"\n // },\n // {\n // \"name\": \"Telangana\",\n // \"shortCode\": \"TG\"\n // },\n // {\n // \"name\": \"Tripura\",\n // \"shortCode\": \"TR\"\n // },\n // {\n // \"name\": \"Uttarakhand\",\n // \"shortCode\": \"UT\"\n // },\n // {\n // \"name\": \"Uttar Pradesh\",\n // \"shortCode\": \"UP\"\n // },\n // {\n // \"name\": \"West Bengal\",\n // \"shortCode\": \"WB\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Indonesia\",\n // \"countryShortCode\": \"ID\",\n // \"regions\": [\n // {\n // \"name\": \"Aceh\",\n // \"shortCode\": \"AC\"\n // },\n // {\n // \"name\": \"Bali\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Bangka Belitung\",\n // \"shortCode\": \"BB\"\n // },\n // {\n // \"name\": \"Banten\",\n // \"shortCode\": \"BT\"\n // },\n // {\n // \"name\": \"Bengkulu\",\n // \"shortCode\": \"BE\"\n // },\n // {\n // \"name\": \"Gorontalo\",\n // \"shortCode\": \"GO\"\n // },\n // {\n // \"name\": \"Jakarta Raya\",\n // \"shortCode\": \"JK\"\n // },\n // {\n // \"name\": \"Jambi\",\n // \"shortCode\": \"JA\"\n // },\n // {\n // \"name\": \"Jawa Barat\",\n // \"shortCode\": \"JB\"\n // },\n // {\n // \"name\": \"Jawa Tengah\",\n // \"shortCode\": \"JT\"\n // },\n // {\n // \"name\": \"Jawa Timur\",\n // \"shortCode\": \"JI\"\n // },\n // {\n // \"name\": \"Kalimantan Barat\",\n // \"shortCode\": \"KB\"\n // },\n // {\n // \"name\": \"Kalimantan Selatan\",\n // \"shortCode\": \"KS\"\n // },\n // {\n // \"name\": \"Kalimantan Tengah\",\n // \"shortCode\": \"KT\"\n // },\n // {\n // \"name\": \"Kalimantan Timur\",\n // \"shortCode\": \"KI\"\n // },\n // {\n // \"name\": \"Kalimantan Utara\",\n // \"shortCode\": \"KU\"\n // },\n // {\n // \"name\": \"Kepulauan Riau\",\n // \"shortCode\": \"KR\"\n // },\n // {\n // \"name\": \"Lampung\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Maluku\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Maluku Utara\",\n // \"shortCode\": \"MU\"\n // },\n // {\n // \"name\": \"Nusa Tenggara Barat\",\n // \"shortCode\": \"NB\"\n // },\n // {\n // \"name\": \"Nusa Tenggara Timur\",\n // \"shortCode\": \"NT\"\n // },\n // {\n // \"name\": \"Papua\",\n // \"shortCode\": \"PA\"\n // },\n // {\n // \"name\": \"Papua Barat\",\n // \"shortCode\": \"PB\"\n // },\n // {\n // \"name\": \"Riau\",\n // \"shortCode\": \"RI\"\n // },\n // {\n // \"name\": \"Sulawesi Selatan\",\n // \"shortCode\": \"SR\"\n // },\n // {\n // \"name\": \"Sulawesi Tengah\",\n // \"shortCode\": \"ST\"\n // },\n // {\n // \"name\": \"Sulawesi Tenggara\",\n // \"shortCode\": \"SG\"\n // },\n // {\n // \"name\": \"Sulawesi Utara\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Sumatera Barat\",\n // \"shortCode\": \"SB\"\n // },\n // {\n // \"name\": \"Sumatera Selatan\",\n // \"shortCode\": \"SS\"\n // },\n // {\n // \"name\": \"Sumatera Utara\",\n // \"shortCode\": \"SU\"\n // },\n // {\n // \"name\": \"Yogyakarta\",\n // \"shortCode\": \"YO\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Iran, Islamic Republic of\",\n \"countryShortCode\": \"IR\",\n \"regions\": [\n {\n \"name\": \"Alborz\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Ardabīl\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Āz̄arbāyjān-e Gharbī\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Āz̄arbāyjān-e Sharqī\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Būshehr\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Chahār Maḩāl va Bakhtīārī\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Eşfahān\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Fārs\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Gīlān\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Golestān\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Hamadān\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Hormozgān\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Īlām\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Kermān\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Kermānshāh\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Khorāsān-e Jonūbī\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Khorāsān-e Raẕavī\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Khorāsān-e Shomālī\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Khūzestān\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Kohgīlūyeh va Bowyer Aḩmad\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Kordestān\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Lorestān\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Markazi\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Māzandarān\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Qazvīn\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Qom\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Semnān\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Sīstān va Balūchestān\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Tehrān\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Yazd\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Zanjān\",\n \"shortCode\": \"11\"\n }\n ]\n },\n {\n \"countryName\": \"Iraq\",\n \"countryShortCode\": \"IQ\",\n \"regions\": [\n {\n \"name\": \"Al Anbār\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Al Başrah\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Al Muthanná\",\n \"shortCode\": \"MU\"\n },\n {\n \"name\": \"Al Qādisīyah\",\n \"shortCode\": \"QA\"\n },\n {\n \"name\": \"An Najaf\",\n \"shortCode\": \"NA\"\n },\n {\n \"name\": \"Arbīl\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"As Sulaymānīyah\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Bābil\",\n \"shortCode\": \"BB\"\n },\n {\n \"name\": \"Baghdād\",\n \"shortCode\": \"BG\"\n },\n {\n \"name\": \"Dohuk\",\n \"shortCode\": \"DA\"\n },\n {\n \"name\": \"Dhī Qār\",\n \"shortCode\": \"DQ\"\n },\n {\n \"name\": \"Diyālá\",\n \"shortCode\": \"DI\"\n },\n {\n \"name\": \"Karbalā'\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Kirkuk\",\n \"shortCode\": \"KI\"\n },\n {\n \"name\": \"Maysān\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Nīnawá\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Şalāḩ ad Dīn\",\n \"shortCode\": \"SD\"\n },\n {\n \"name\": \"Wāsiţ\",\n \"shortCode\": \"WA\"\n }\n ]\n },\n {\n \"countryName\": \"Ireland\",\n \"translationKey\": \"country_name_ireland\",\n \"countryShortCode\": \"IE\",\n \"regions\": [\n {\n \"name\": \"Carlow\",\n \"translationKey\": \"ireland_region_name_cw\",\n \"shortCode\": \"CW\"\n },\n {\n \"name\": \"Cavan\",\n \"translationKey\": \"ireland_region_name_cn\",\n \"shortCode\": \"CN\"\n },\n {\n \"name\": \"Clare\",\n \"translationKey\": \"ireland_region_name_ce\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Cork\",\n \"translationKey\": \"ireland_region_name_co\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"Donegal\",\n \"translationKey\": \"ireland_region_name_dl\",\n \"shortCode\": \"DL\"\n },\n {\n \"name\": \"Dublin\",\n \"translationKey\": \"ireland_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Galway\",\n \"translationKey\": \"ireland_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Kerry\",\n \"translationKey\": \"ireland_region_name_ky\",\n \"shortCode\": \"KY\"\n },\n {\n \"name\": \"Kildare\",\n \"translationKey\": \"ireland_region_name_ke\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kilkenny\",\n \"translationKey\": \"ireland_region_name_kk\",\n \"shortCode\": \"KK\"\n },\n {\n \"name\": \"Laois\",\n \"translationKey\": \"ireland_region_name_ls\",\n \"shortCode\": \"LS\"\n },\n {\n \"name\": \"Leitrim\",\n \"translationKey\": \"ireland_region_name_lm\",\n \"shortCode\": \"LM\"\n },\n {\n \"name\": \"Limerick\",\n \"translationKey\": \"ireland_region_name_lk\",\n \"shortCode\": \"LK\"\n },\n {\n \"name\": \"Longford\",\n \"translationKey\": \"ireland_region_name_ld\",\n \"shortCode\": \"LD\"\n },\n {\n \"name\": \"Louth\",\n \"translationKey\": \"ireland_region_name_lh\",\n \"shortCode\": \"LH\"\n },\n {\n \"name\": \"Mayo\",\n \"translationKey\": \"ireland_region_name_mo\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Meath\",\n \"translationKey\": \"ireland_region_name_mh\",\n \"shortCode\": \"MH\"\n },\n {\n \"name\": \"Monaghan\",\n \"translationKey\": \"ireland_region_name_mn\",\n \"shortCode\": \"MN\"\n },\n {\n \"name\": \"Offaly\",\n \"translationKey\": \"ireland_region_name_oy\",\n \"shortCode\": \"OY\"\n },\n {\n \"name\": \"Roscommon\",\n \"translationKey\": \"ireland_region_name_rn\",\n \"shortCode\": \"RN\"\n },\n {\n \"name\": \"Sligo\",\n \"translationKey\": \"ireland_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Tipperary\",\n \"translationKey\": \"ireland_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Waterford\",\n \"translationKey\": \"ireland_region_name_wd\",\n \"shortCode\": \"WD\"\n },\n {\n \"name\": \"Westmeath\",\n \"translationKey\": \"ireland_region_name_wh\",\n \"shortCode\": \"WH\"\n },\n {\n \"name\": \"Wexford\",\n \"translationKey\": \"ireland_region_name_wx\",\n \"shortCode\": \"WX\"\n },\n {\n \"name\": \"Wicklow\",\n \"translationKey\": \"ireland_region_name_ww\",\n \"shortCode\": \"WW\"\n }\n ]\n },\n // {\n // \"countryName\": \"Isle of Man\",\n // \"countryShortCode\": \"IM\",\n // \"regions\": [\n // {\n // \"name\": \"Isle of Man\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Israel\",\n \"translationKey\": \"country_name_israel\",\n \"countryShortCode\": \"IL\",\n \"regions\": [\n {\n \"name\": \"HaDarom\",\n \"translationKey\": \"israel_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"HaMerkaz\",\n \"translationKey\": \"israel_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"HaTsafon\",\n \"translationKey\": \"israel_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"H̱efa\",\n \"translationKey\": \"israel_region_name_ha\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Tel-Aviv\",\n \"translationKey\": \"israel_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Yerushalayim\",\n \"translationKey\": \"israel_region_name_jm\",\n \"shortCode\": \"JM\"\n }\n ]\n },\n {\n \"countryName\": \"Italy\",\n \"translationKey\": \"country_name_italy\",\n \"countryShortCode\": \"IT\",\n \"regions\": [\n {\n \"name\": \"Abruzzo\",\n \"translationKey\": \"italy_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Basilicata\",\n \"translationKey\": \"italy_region_name_77\",\n \"shortCode\": \"77\"\n },\n {\n \"name\": \"Calabria\",\n \"translationKey\": \"italy_region_name_78\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Campania\",\n \"translationKey\": \"italy_region_name_72\",\n \"shortCode\": \"72\"\n },\n {\n \"name\": \"Emilia-Romagna\",\n \"translationKey\": \"italy_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Friuli-Venezia Giulia\",\n \"translationKey\": \"italy_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Lazio\",\n \"translationKey\": \"italy_region_name_62\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Liguria\",\n \"translationKey\": \"italy_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Lombardia\",\n \"translationKey\": \"italy_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Marche\",\n \"translationKey\": \"italy_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Molise\",\n \"translationKey\": \"italy_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Piemonte\",\n \"translationKey\": \"italy_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Puglia\",\n \"translationKey\": \"italy_region_name_75\",\n \"shortCode\": \"75\"\n },\n {\n \"name\": \"Sardegna\",\n \"translationKey\": \"italy_region_name_88\",\n \"shortCode\": \"88\"\n },\n {\n \"name\": \"Sicilia\",\n \"translationKey\": \"italy_region_name_82\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Toscana\",\n \"translationKey\": \"italy_region_name_52\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Trentino-Alto Adige\",\n \"translationKey\": \"italy_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Umbria\",\n \"translationKey\": \"italy_region_name_55\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Valle d'Aosta\",\n \"translationKey\": \"italy_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Veneto\",\n \"translationKey\": \"italy_region_name_34\",\n \"shortCode\": \"34\"\n }\n ]\n },\n // {\n // \"countryName\": \"Jamaica\",\n // \"countryShortCode\": \"JM\",\n // \"regions\": [\n // {\n // \"name\": \"Clarendon\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Hanover\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Kingston\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Manchester\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Portland\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Saint Andrew\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Saint Ann\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Saint Catherine\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Saint Elizabeth\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Saint James\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Saint Mary\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Saint Thomas\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Trelawny\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Westmoreland\",\n // \"shortCode\": \"10\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Japan\",\n // \"countryShortCode\": \"JP\",\n // \"regions\": [\n // {\n // \"name\": \"Aichi\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Akita\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Aomori\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Chiba\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Ehime\",\n // \"shortCode\": \"38\"\n // },\n // {\n // \"name\": \"Fukui\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Fukuoka\",\n // \"shortCode\": \"40\"\n // },\n // {\n // \"name\": \"Fukushima\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Gifu\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Gunma\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Hiroshima\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Hokkaido\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Hyogo\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"Ibaraki\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Ishikawa\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Iwate\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Kagawa\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"Kagoshima\",\n // \"shortCode\": \"46\"\n // },\n // {\n // \"name\": \"Kanagawa\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Kochi\",\n // \"shortCode\": \"39\"\n // },\n // {\n // \"name\": \"Kumamoto\",\n // \"shortCode\": \"43\"\n // },\n // {\n // \"name\": \"Kyoto\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Mie\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Miyagi\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Miyazaki\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Nagano\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Nagasaki\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"Nara\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Niigata\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Oita\",\n // \"shortCode\": \"44\"\n // },\n // {\n // \"name\": \"Okayama\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"Okinawa\",\n // \"shortCode\": \"47\"\n // },\n // {\n // \"name\": \"Osaka\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Saga\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Saitama\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Shiga\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Shimane\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Shizuoka\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Tochigi\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Tokushima\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"Tokyo\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Tottori\",\n // \"shortCode\": \"31\"\n // },\n // {\n // \"name\": \"Toyama\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Wakayama\",\n // \"shortCode\": \"30\"\n // },\n // {\n // \"name\": \"Yamagata\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Yamaguchi\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"Yamanashi\",\n // \"shortCode\": \"19\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Jersey\",\n // \"countryShortCode\": \"JE\",\n // \"regions\": [\n // {\n // \"name\": \"Jersey\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Jordan\",\n \"countryShortCode\": \"JO\",\n \"regions\": [\n {\n \"name\": \"‘Ajlūn\",\n \"shortCode\": \"AJ\"\n },\n {\n \"name\": \"Al 'Aqabah\",\n \"shortCode\": \"AQ\"\n },\n {\n \"name\": \"Al Balqā’\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Al Karak\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Al Mafraq\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Al ‘A̅şimah\",\n \"shortCode\": \"AM\"\n },\n {\n \"name\": \"Aţ Ţafīlah\",\n \"shortCode\": \"AT\"\n },\n {\n \"name\": \"Az Zarqā’\",\n \"shortCode\": \"AZ\"\n },\n {\n \"name\": \"Irbid\",\n \"shortCode\": \"IR\"\n },\n {\n \"name\": \"Jarash\",\n \"shortCode\": \"JA\"\n },\n {\n \"name\": \"Ma‘ān\",\n \"shortCode\": \"MN\"\n },\n {\n \"name\": \"Mādabā\",\n \"shortCode\": \"MD\"\n }\n ]\n },\n {\n \"countryName\": \"Kazakhstan\",\n \"countryShortCode\": \"KZ\",\n \"regions\": [\n {\n \"name\": \"Almaty\",\n \"shortCode\": \"ALA\"\n },\n {\n \"name\": \"Aqmola\",\n \"shortCode\": \"AKM\"\n },\n {\n \"name\": \"Aqtobe\",\n \"shortCode\": \"AKT\"\n },\n {\n \"name\": \"Astana\",\n \"shortCode\": \"AST\"\n },\n {\n \"name\": \"Atyrau\",\n \"shortCode\": \"ATY\"\n },\n {\n \"name\": \"Batys Qazaqstan\",\n \"shortCode\": \"ZAP\"\n },\n {\n \"name\": \"Bayqongyr\"\n },\n {\n \"name\": \"Mangghystau\",\n \"shortCode\": \"MAN\"\n },\n {\n \"name\": \"Ongtustik Qazaqstan\",\n \"shortCode\": \"YUZ\"\n },\n {\n \"name\": \"Pavlodar\",\n \"shortCode\": \"PAV\"\n },\n {\n \"name\": \"Qaraghandy\",\n \"shortCode\": \"KAR\"\n },\n {\n \"name\": \"Qostanay\",\n \"shortCode\": \"KUS\"\n },\n {\n \"name\": \"Qyzylorda\",\n \"shortCode\": \"KZY\"\n },\n {\n \"name\": \"Shyghys Qazaqstan\",\n \"shortCode\": \"VOS\"\n },\n {\n \"name\": \"Soltustik Qazaqstan\",\n \"shortCode\": \"SEV\"\n },\n {\n \"name\": \"Zhambyl\",\n \"shortCode\": \"ZHA\"\n }\n ]\n },\n {\n \"countryName\": \"Kenya\",\n \"countryShortCode\": \"KE\",\n \"regions\": [\n {\n \"name\": \"Baringo\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Bomet\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Bungoma\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Busia\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Eleyo/Marakwet\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Embu\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Garissa\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Homa Bay\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Isiolo\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Kajiado\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Kakamega\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Kericho\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Kiambu\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Kilifi\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Kirinyaga\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Kisii\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Kisumu\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Kitui\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Kwale\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Laikipia\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Lamu\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Machakos\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Makueni\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Mandera\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Marsabit\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Meru\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Migori\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Mombasa\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Murang'a\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Nairobi City\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Nakuru\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Nandi\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Narok\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Nyamira\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Nyandarua\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Nyeri\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Samburu\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Siaya\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Taita/Taveta\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Tana River\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Tharaka-Nithi\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Trans Nzoia\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Turkana\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Uasin Gishu\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Vihiga\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Wajir\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"West Pokot\",\n \"shortCode\": \"47\"\n }\n ]\n },\n // {\n // \"countryName\": \"Kiribati\",\n // \"countryShortCode\": \"KI\",\n // \"regions\": [\n // {\n // \"name\": \"Abaiang\"\n // },\n // {\n // \"name\": \"Abemama\"\n // },\n // {\n // \"name\": \"Aranuka\"\n // },\n // {\n // \"name\": \"Arorae\"\n // },\n // {\n // \"name\": \"Banaba\"\n // },\n // {\n // \"name\": \"Beru\"\n // },\n // {\n // \"name\": \"Butaritari\"\n // },\n // {\n // \"name\": \"Central Gilberts\"\n // },\n // {\n // \"name\": \"Gilbert Islands\",\n // \"shortCode\": \"G\"\n // },\n // {\n // \"name\": \"Kanton\"\n // },\n // {\n // \"name\": \"Kiritimati\"\n // },\n // {\n // \"name\": \"Kuria\"\n // },\n // {\n // \"name\": \"Line Islands\",\n // \"shortCode\": \"L\"\n // },\n // {\n // \"name\": \"Maiana\"\n // },\n // {\n // \"name\": \"Makin\"\n // },\n // {\n // \"name\": \"Marakei\"\n // },\n // {\n // \"name\": \"Nikunau\"\n // },\n // {\n // \"name\": \"Nonouti\"\n // },\n // {\n // \"name\": \"Northern Gilberts\"\n // },\n // {\n // \"name\": \"Onotoa\"\n // },\n // {\n // \"name\": \"Phoenix Islands\",\n // \"shortCode\": \"P\"\n // },\n // {\n // \"name\": \"Southern Gilberts\"\n // },\n // {\n // \"name\": \"Tabiteuea\"\n // },\n // {\n // \"name\": \"Tabuaeran\"\n // },\n // {\n // \"name\": \"Tamana\"\n // },\n // {\n // \"name\": \"Tarawa\"\n // },\n // {\n // \"name\": \"Teraina\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Korea, Democratic People's Republic of\",\n // \"countryShortCode\": \"KP\",\n // \"regions\": [\n // {\n // \"name\": \"Chagang-do (Chagang Province)\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Hamgyong-bukto (North Hamgyong Province)\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Hamgyong-namdo (South Hamgyong Province)\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Hwanghae-bukto (North Hwanghae Province)\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Hwanghae-namdo (South Hwanghae Province)\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Kangwon-do (Kangwon Province)\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Nasŏn (Najin-Sŏnbong)\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"P'yongan-bukto (North P'yongan Province)\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"P'yongan-namdo (South P'yongan Province)\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"P'yongyang-si (P'yongyang City)\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Yanggang-do (Yanggang Province)\",\n // \"shortCode\": \"10\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Korea, Republic of\",\n // \"countryShortCode\": \"KR\",\n // \"regions\": [\n // {\n // \"name\": \"Ch'ungch'ongbuk-do\",\n // \"shortCode\": \"43\"\n // },\n // {\n // \"name\": \"Ch'ungch'ongnam-do\",\n // \"shortCode\": \"44\"\n // },\n // {\n // \"name\": \"Cheju-do\",\n // \"shortCode\": \"49\"\n // },\n // {\n // \"name\": \"Chollabuk-do\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Chollanam-do\",\n // \"shortCode\": \"46\"\n // },\n // {\n // \"name\": \"Inch'on-Kwangyokhi\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"Kang-won-do\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"Kwangju-Kwangyokshi\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Kyonggi-do\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Kyongsangbuk-do\",\n // \"shortCode\": \"47\"\n // },\n // {\n // \"name\": \"Kyongsangnam-do\",\n // \"shortCode\": \"48\"\n // },\n // {\n // \"name\": \"Pusan-Kwangyokshi\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Seoul-T'ukpyolshi\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Sejong\",\n // \"shortCode\": \"50\"\n // },\n // {\n // \"name\": \"Taegu-Kwangyokshi\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Taejon-Kwangyokshi\",\n // \"shortCode\": \"30\"\n // },\n // {\n // \"name\": \"Ulsan-Kwangyokshi\",\n // \"shortCode\": \"31\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Kosovo\",\n \"countryShortCode\": \"XK\",\n \"regions\": [\n {\n \"name\": \"Farizaj\",\n \"shortCode\": \"FZ\"\n },\n {\n \"name\": \"Gjakova\",\n \"shortCode\": \"GK\"\n },\n {\n \"name\": \"Gjilan\",\n \"shortCode\": \"GL\"\n },\n {\n \"name\": \"Mitrovica\",\n \"shortCode\": \"MI\"\n },\n {\n \"name\": \"Peja/Peć\",\n \"shortCode\": \"PE\"\n },\n {\n \"name\": \"Pristina\",\n \"shortCode\": \"PR\"\n },\n {\n \"name\": \"Prizren\",\n \"shortCode\": \"PZ\"\n }\n ]\n },\n {\n \"countryName\": \"Kuwait\",\n \"countryShortCode\": \"KW\",\n \"regions\": [\n {\n \"name\": \"Al Aḩmadi\",\n \"shortCode\": \"AH\"\n },\n {\n \"name\": \"Al Farwānīyah\",\n \"shortCode\": \"FA\"\n },\n {\n \"name\": \"Al Jahrā’\",\n \"shortCode\": \"JA\"\n },\n {\n \"name\": \"Al ‘Āşimah\",\n \"shortCode\": \"KU\"\n },\n {\n \"name\": \"Ḩawallī\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Mubārak al Kabir\",\n \"shortCode\": \"MU\"\n }\n ]\n },\n {\n \"countryName\": \"Kyrgyzstan\",\n \"countryShortCode\": \"KG\",\n \"regions\": [\n {\n \"name\": \"Batken Oblasty\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Bishkek Shaary\",\n \"shortCode\": \"GB\"\n },\n {\n \"name\": \"Chuy Oblasty (Bishkek)\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Jalal-Abad Oblasty\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"Naryn Oblasty\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Osh Oblasty\",\n \"shortCode\": \"O\"\n },\n {\n \"name\": \"Talas Oblasty\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Ysyk-Kol Oblasty (Karakol)\",\n \"shortCode\": \"Y\"\n }\n ]\n },\n // {\n // \"countryName\": \"Laos\",\n // \"countryShortCode\": \"LA\",\n // \"regions\": [\n // {\n // \"name\": \"Attapu\",\n // \"shortCode\": \"AT\"\n // },\n // {\n // \"name\": \"Bokèo\",\n // \"shortCode\": \"BK\"\n // },\n // {\n // \"name\": \"Bolikhamxai\",\n // \"shortCode\": \"BL\"\n // },\n // {\n // \"name\": \"Champasak\",\n // \"shortCode\": \"CH\"\n // },\n // {\n // \"name\": \"Houaphan\",\n // \"shortCode\": \"HO\"\n // },\n // {\n // \"name\": \"Khammouan\",\n // \"shortCode\": \"KH\"\n // },\n // {\n // \"name\": \"Louang Namtha\",\n // \"shortCode\": \"LM\"\n // },\n // {\n // \"name\": \"Louangphabang\",\n // \"shortCode\": \"LP\"\n // },\n // {\n // \"name\": \"Oudômxai\",\n // \"shortCode\": \"OU\"\n // },\n // {\n // \"name\": \"Phôngsali\",\n // \"shortCode\": \"PH\"\n // },\n // {\n // \"name\": \"Salavan\",\n // \"shortCode\": \"SL\"\n // },\n // {\n // \"name\": \"Savannakhét\",\n // \"shortCode\": \"SV\"\n // },\n // {\n // \"name\": \"Vientiane\",\n // \"shortCode\": \"VI\"\n // },\n // {\n // \"name\": \"Xaignabouli\",\n // \"shortCode\": \"XA\"\n // },\n // {\n // \"name\": \"Xékong\",\n // \"shortCode\": \"XE\"\n // },\n // {\n // \"name\": \"Xaisomboun\",\n // \"shortCode\": \"XS\"\n // },\n // {\n // \"name\": \"Xiangkhouang\",\n // \"shortCode\": \"XI\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Latvia\",\n \"translationKey\": \"country_name_latvia\",\n \"countryShortCode\": \"LV\",\n \"regions\": [\n {\n \"name\": \"Aglona\",\n \"translationKey\": \"latvia_region_name_001\",\n \"shortCode\": \"001\"\n },\n {\n \"name\": \"Aizkraukle\",\n \"translationKey\": \"latvia_region_name_002\",\n \"shortCode\": \"002\"\n },\n {\n \"name\": \"Aizpute\",\n \"translationKey\": \"latvia_region_name_003\",\n \"shortCode\": \"003\"\n },\n {\n \"name\": \"Aknīste\",\n \"translationKey\": \"latvia_region_name_004\",\n \"shortCode\": \"004\"\n },\n {\n \"name\": \"Aloja\",\n \"translationKey\": \"latvia_region_name_005\",\n \"shortCode\": \"005\"\n },\n {\n \"name\": \"Alsunga\",\n \"translationKey\": \"latvia_region_name_006\",\n \"shortCode\": \"006\"\n },\n {\n \"name\": \"Alūksne\",\n \"translationKey\": \"latvia_region_name_007\",\n \"shortCode\": \"007\"\n },\n {\n \"name\": \"Amata\",\n \"translationKey\": \"latvia_region_name_008\",\n \"shortCode\": \"008\"\n },\n {\n \"name\": \"Ape\",\n \"translationKey\": \"latvia_region_name_009\",\n \"shortCode\": \"009\"\n },\n {\n \"name\": \"Auce\",\n \"translationKey\": \"latvia_region_name_010\",\n \"shortCode\": \"010\"\n },\n {\n \"name\": \"Ādaži\",\n \"translationKey\": \"latvia_region_name_011\",\n \"shortCode\": \"011\"\n },\n {\n \"name\": \"Babīte\",\n \"translationKey\": \"latvia_region_name_012\",\n \"shortCode\": \"012\"\n },\n {\n \"name\": \"Baldone\",\n \"translationKey\": \"latvia_region_name_013\",\n \"shortCode\": \"013\"\n },\n {\n \"name\": \"Baltinava\",\n \"translationKey\": \"latvia_region_name_014\",\n \"shortCode\": \"014\"\n },\n {\n \"name\": \"Balvi\",\n \"translationKey\": \"latvia_region_name_015\",\n \"shortCode\": \"015\"\n },\n {\n \"name\": \"Bauska\",\n \"translationKey\": \"latvia_region_name_016\",\n \"shortCode\": \"016\"\n },\n {\n \"name\": \"Beverīna\",\n \"translationKey\": \"latvia_region_name_017\",\n \"shortCode\": \"017\"\n },\n {\n \"name\": \"Brocēni\",\n \"translationKey\": \"latvia_region_name_018\",\n \"shortCode\": \"018\"\n },\n {\n \"name\": \"Burtnieki\",\n \"translationKey\": \"latvia_region_name_019\",\n \"shortCode\": \"019\"\n },\n {\n \"name\": \"Carnikava\",\n \"translationKey\": \"latvia_region_name_020\",\n \"shortCode\": \"020\"\n },\n {\n \"name\": \"Cesvaine\",\n \"translationKey\": \"latvia_region_name_021\",\n \"shortCode\": \"021\"\n },\n {\n \"name\": \"Cēsis\",\n \"translationKey\": \"latvia_region_name_022\",\n \"shortCode\": \"022\"\n },\n {\n \"name\": \"Cibla\",\n \"translationKey\": \"latvia_region_name_023\",\n \"shortCode\": \"023\"\n },\n {\n \"name\": \"Dagda\",\n \"translationKey\": \"latvia_region_name_024\",\n \"shortCode\": \"024\"\n },\n {\n \"name\": \"Daugavpils\",\n \"translationKey\": \"latvia_region_name_025\",\n \"shortCode\": \"025\"\n },\n {\n \"name\": \"Daugavpils (City)\",\n \"translationKey\": \"latvia_region_name_dgv\",\n \"shortCode\": \"DGV\"\n },\n {\n \"name\": \"Dobele\",\n \"translationKey\": \"latvia_region_name_026\",\n \"shortCode\": \"026\"\n },\n {\n \"name\": \"Dundaga\",\n \"translationKey\": \"latvia_region_name_027\",\n \"shortCode\": \"027\"\n },\n {\n \"name\": \"Durbe\",\n \"translationKey\": \"latvia_region_name_028\",\n \"shortCode\": \"028\"\n },\n {\n \"name\": \"Engure\",\n \"translationKey\": \"latvia_region_name_029\",\n \"shortCode\": \"029\"\n },\n {\n \"name\": \"Ērgļi\",\n \"translationKey\": \"latvia_region_name_030\",\n \"shortCode\": \"030\"\n },\n {\n \"name\": \"Garkalne\",\n \"translationKey\": \"latvia_region_name_031\",\n \"shortCode\": \"031\"\n },\n {\n \"name\": \"Grobiņa\",\n \"translationKey\": \"latvia_region_name_032\",\n \"shortCode\": \"032\"\n },\n {\n \"name\": \"Gulbene\",\n \"translationKey\": \"latvia_region_name_033\",\n \"shortCode\": \"033\"\n },\n {\n \"name\": \"Iecava\",\n \"translationKey\": \"latvia_region_name_034\",\n \"shortCode\": \"034\"\n },\n {\n \"name\": \"Ikšķile\",\n \"translationKey\": \"latvia_region_name_035\",\n \"shortCode\": \"035\"\n },\n {\n \"name\": \"Ilūkste\",\n \"translationKey\": \"latvia_region_name_036\",\n \"shortCode\": \"036\"\n },\n {\n \"name\": \"Inčukalns\",\n \"translationKey\": \"latvia_region_name_037\",\n \"shortCode\": \"037\"\n },\n {\n \"name\": \"Jaunjelgava\",\n \"translationKey\": \"latvia_region_name_038\",\n \"shortCode\": \"038\"\n },\n {\n \"name\": \"Jaunpiebalga\",\n \"translationKey\": \"latvia_region_name_039\",\n \"shortCode\": \"039\"\n },\n {\n \"name\": \"Jaunpils\",\n \"translationKey\": \"latvia_region_name_040\",\n \"shortCode\": \"040\"\n },\n {\n \"name\": \"Jelgava\",\n \"translationKey\": \"latvia_region_name_041\",\n \"shortCode\": \"041\"\n },\n {\n \"name\": \"Jelgava (City)\",\n \"translationKey\": \"latvia_region_name_jel\",\n \"shortCode\": \"JEL\"\n },\n {\n \"name\": \"Jēkabpils\",\n \"translationKey\": \"latvia_region_name_042\",\n \"shortCode\": \"042\"\n },\n {\n \"name\": \"Jēkabpils (City)\",\n \"translationKey\": \"latvia_region_name_jkb\",\n \"shortCode\": \"JKB\"\n },\n {\n \"name\": \"Jūrmala (City)\",\n \"translationKey\": \"latvia_region_name_jur\",\n \"shortCode\": \"JUR\"\n },\n {\n \"name\": \"Kandava\",\n \"translationKey\": \"latvia_region_name_043\",\n \"shortCode\": \"043\"\n },\n {\n \"name\": \"Kārsava\",\n \"translationKey\": \"latvia_region_name_044\",\n \"shortCode\": \"044\"\n },\n {\n \"name\": \"Kocēni\",\n \"translationKey\": \"latvia_region_name_045\",\n \"shortCode\": \"045\"\n },\n {\n \"name\": \"Koknese\",\n \"translationKey\": \"latvia_region_name_046\",\n \"shortCode\": \"046\"\n },\n {\n \"name\": \"Krāslava\",\n \"translationKey\": \"latvia_region_name_047\",\n \"shortCode\": \"047\"\n },\n {\n \"name\": \"Krimulda\",\n \"translationKey\": \"latvia_region_name_048\",\n \"shortCode\": \"048\"\n },\n {\n \"name\": \"Krustpils\",\n \"translationKey\": \"latvia_region_name_049\",\n \"shortCode\": \"049\"\n },\n {\n \"name\": \"Kuldīga\",\n \"translationKey\": \"latvia_region_name_050\",\n \"shortCode\": \"050\"\n },\n {\n \"name\": \"Ķegums\",\n \"translationKey\": \"latvia_region_name_051\",\n \"shortCode\": \"051\"\n },\n {\n \"name\": \"Ķekava\",\n \"translationKey\": \"latvia_region_name_052\",\n \"shortCode\": \"052\"\n },\n {\n \"name\": \"Lielvārde\",\n \"translationKey\": \"latvia_region_name_053\",\n \"shortCode\": \"053\"\n },\n {\n \"name\": \"Liepāja\",\n \"translationKey\": \"latvia_region_name_lpx\",\n \"shortCode\": \"LPX\"\n },\n {\n \"name\": \"Limbaži\",\n \"translationKey\": \"latvia_region_name_054\",\n \"shortCode\": \"054\"\n },\n {\n \"name\": \"Līgatne\",\n \"translationKey\": \"latvia_region_name_055\",\n \"shortCode\": \"055\"\n },\n {\n \"name\": \"Līvāni\",\n \"translationKey\": \"latvia_region_name_056\",\n \"shortCode\": \"056\"\n },\n {\n \"name\": \"Lubāna\",\n \"translationKey\": \"latvia_region_name_057\",\n \"shortCode\": \"057\"\n },\n {\n \"name\": \"Ludza\",\n \"translationKey\": \"latvia_region_name_058\",\n \"shortCode\": \"058\"\n },\n {\n \"name\": \"Madona\",\n \"translationKey\": \"latvia_region_name_059\",\n \"shortCode\": \"059\"\n },\n {\n \"name\": \"Mazsalaca\",\n \"translationKey\": \"latvia_region_name_060\",\n \"shortCode\": \"060\"\n },\n {\n \"name\": \"Mālpils\",\n \"translationKey\": \"latvia_region_name_061\",\n \"shortCode\": \"061\"\n },\n {\n \"name\": \"Mārupe\",\n \"translationKey\": \"latvia_region_name_062\",\n \"shortCode\": \"062\"\n },\n {\n \"name\": \"Mērsrags\",\n \"translationKey\": \"latvia_region_name_063\",\n \"shortCode\": \"063\"\n },\n {\n \"name\": \"Naukšēni\",\n \"translationKey\": \"latvia_region_name_064\",\n \"shortCode\": \"064\"\n },\n {\n \"name\": \"Nereta\",\n \"translationKey\": \"latvia_region_name_065\",\n \"shortCode\": \"065\"\n },\n {\n \"name\": \"Nīca\",\n \"translationKey\": \"latvia_region_name_066\",\n \"shortCode\": \"066\"\n },\n {\n \"name\": \"Ogre\",\n \"translationKey\": \"latvia_region_name_067\",\n \"shortCode\": \"067\"\n },\n {\n \"name\": \"Olaine\",\n \"translationKey\": \"latvia_region_name_068\",\n \"shortCode\": \"068\"\n },\n {\n \"name\": \"Ozolnieki\",\n \"translationKey\": \"latvia_region_name_069\",\n \"shortCode\": \"069\"\n },\n {\n \"name\": \"Pārgauja\",\n \"translationKey\": \"latvia_region_name_070\",\n \"shortCode\": \"070\"\n },\n {\n \"name\": \"Pāvilosta\",\n \"translationKey\": \"latvia_region_name_071\",\n \"shortCode\": \"071\"\n },\n {\n \"name\": \"Pļaviņas\",\n \"translationKey\": \"latvia_region_name_072\",\n \"shortCode\": \"072\"\n },\n {\n \"name\": \"Preiļi\",\n \"translationKey\": \"latvia_region_name_073\",\n \"shortCode\": \"073\"\n },\n {\n \"name\": \"Priekule\",\n \"translationKey\": \"latvia_region_name_074\",\n \"shortCode\": \"074\"\n },\n {\n \"name\": \"Priekuļi\",\n \"translationKey\": \"latvia_region_name_075\",\n \"shortCode\": \"075\"\n },\n {\n \"name\": \"Rauna\",\n \"translationKey\": \"latvia_region_name_076\",\n \"shortCode\": \"076\"\n },\n {\n \"name\": \"Rēzekne\",\n \"translationKey\": \"latvia_region_name_077\",\n \"shortCode\": \"077\"\n },\n {\n \"name\": \"Rēzekne (City)\",\n \"translationKey\": \"latvia_region_name_rez\",\n \"shortCode\": \"REZ\"\n },\n {\n \"name\": \"Riebiņi\",\n \"translationKey\": \"latvia_region_name_078\",\n \"shortCode\": \"078\"\n },\n {\n \"name\": \"Rīga\",\n \"translationKey\": \"latvia_region_name_rix\",\n \"shortCode\": \"RIX\"\n },\n {\n \"name\": \"Roja\",\n \"translationKey\": \"latvia_region_name_079\",\n \"shortCode\": \"079\"\n },\n {\n \"name\": \"Ropaži\",\n \"translationKey\": \"latvia_region_name_080\",\n \"shortCode\": \"080\"\n },\n {\n \"name\": \"Rucava\",\n \"translationKey\": \"latvia_region_name_081\",\n \"shortCode\": \"081\"\n },\n {\n \"name\": \"Rugāji\",\n \"translationKey\": \"latvia_region_name_082\",\n \"shortCode\": \"082\"\n },\n {\n \"name\": \"Rundāle\",\n \"translationKey\": \"latvia_region_name_083\",\n \"shortCode\": \"083\"\n },\n {\n \"name\": \"Rūjiena\",\n \"translationKey\": \"latvia_region_name_084\",\n \"shortCode\": \"084\"\n },\n {\n \"name\": \"Sala\",\n \"translationKey\": \"latvia_region_name_085\",\n \"shortCode\": \"085\"\n },\n {\n \"name\": \"Salacgrīva\",\n \"translationKey\": \"latvia_region_name_086\",\n \"shortCode\": \"086\"\n },\n {\n \"name\": \"Salaspils\",\n \"translationKey\": \"latvia_region_name_087\",\n \"shortCode\": \"087\"\n },\n {\n \"name\": \"Saldus\",\n \"translationKey\": \"latvia_region_name_088\",\n \"shortCode\": \"088\"\n },\n {\n \"name\": \"Saulkrasti\",\n \"translationKey\": \"latvia_region_name_089\",\n \"shortCode\": \"089\"\n },\n {\n \"name\": \"Sēja\",\n \"translationKey\": \"latvia_region_name_090\",\n \"shortCode\": \"090\"\n },\n {\n \"name\": \"Sigulda\",\n \"translationKey\": \"latvia_region_name_091\",\n \"shortCode\": \"091\"\n },\n {\n \"name\": \"Skrīveri\",\n \"translationKey\": \"latvia_region_name_092\",\n \"shortCode\": \"092\"\n },\n {\n \"name\": \"Skrunda\",\n \"translationKey\": \"latvia_region_name_093\",\n \"shortCode\": \"093\"\n },\n {\n \"name\": \"Smiltene\",\n \"translationKey\": \"latvia_region_name_094\",\n \"shortCode\": \"094\"\n },\n {\n \"name\": \"Stopiņi\",\n \"translationKey\": \"latvia_region_name_095\",\n \"shortCode\": \"095\"\n },\n {\n \"name\": \"Strenči\",\n \"translationKey\": \"latvia_region_name_096\",\n \"shortCode\": \"096\"\n },\n {\n \"name\": \"Talsi\",\n \"translationKey\": \"latvia_region_name_097\",\n \"shortCode\": \"097\"\n },\n {\n \"name\": \"Tērvete\",\n \"translationKey\": \"latvia_region_name_098\",\n \"shortCode\": \"098\"\n },\n {\n \"name\": \"Tukums\",\n \"translationKey\": \"latvia_region_name_099\",\n \"shortCode\": \"099\"\n },\n {\n \"name\": \"Vaiņode\",\n \"translationKey\": \"latvia_region_name_100\",\n \"shortCode\": \"100\"\n },\n {\n \"name\": \"Valka\",\n \"translationKey\": \"latvia_region_name_101\",\n \"shortCode\": \"101\"\n },\n {\n \"name\": \"Valmiera\",\n \"translationKey\": \"latvia_region_name_vmr\",\n \"shortCode\": \"VMR\"\n },\n {\n \"name\": \"Varakļāni\",\n \"translationKey\": \"latvia_region_name_102\",\n \"shortCode\": \"102\"\n },\n {\n \"name\": \"Vārkava\",\n \"translationKey\": \"latvia_region_name_103\",\n \"shortCode\": \"103\"\n },\n {\n \"name\": \"Vecpiebalga\",\n \"translationKey\": \"latvia_region_name_104\",\n \"shortCode\": \"104\"\n },\n {\n \"name\": \"Vecumnieki\",\n \"translationKey\": \"latvia_region_name_105\",\n \"shortCode\": \"105\"\n },\n {\n \"name\": \"Ventspils\",\n \"translationKey\": \"latvia_region_name_106\",\n \"shortCode\": \"106\"\n },\n {\n \"name\": \"Ventspils (City)\",\n \"translationKey\": \"latvia_region_name_ven\",\n \"shortCode\": \"VEN\"\n },\n {\n \"name\": \"Viesīte\",\n \"translationKey\": \"latvia_region_name_107\",\n \"shortCode\": \"107\"\n },\n {\n \"name\": \"Viļaka\",\n \"translationKey\": \"latvia_region_name_108\",\n \"shortCode\": \"108\"\n },\n {\n \"name\": \"Viļāni\",\n \"translationKey\": \"latvia_region_name_109\",\n \"shortCode\": \"109\"\n },\n {\n \"name\": \"Zilupe\",\n \"translationKey\": \"latvia_region_name_110\",\n \"shortCode\": \"110\"\n }\n ]\n },\n {\n \"countryName\": \"Lebanon\",\n \"countryShortCode\": \"LB\",\n \"regions\": [\n {\n \"name\": \"Aakkâr\",\n \"shortCode\": \"AK\"\n },\n {\n \"name\": \"Baalbelk-Hermel\",\n \"shortCode\": \"BH\"\n },\n {\n \"name\": \"Béqaa\",\n \"shortCode\": \"BI\"\n },\n {\n \"name\": \"Beyrouth\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Liban-Nord\",\n \"shortCode\": \"AS\"\n },\n {\n \"name\": \"Liban-Sud\",\n \"shortCode\": \"JA\"\n },\n {\n \"name\": \"Mont-Liban\",\n \"shortCode\": \"JL\"\n },\n {\n \"name\": \"Nabatîyé\",\n \"shortCode\": \"NA\"\n }\n ]\n },\n // {\n // \"countryName\": \"Lesotho\",\n // \"countryShortCode\": \"LS\",\n // \"regions\": [\n // {\n // \"name\": \"Berea\",\n // \"shortCode\": \"D\"\n // },\n // {\n // \"name\": \"Butha-Buthe\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Leribe\",\n // \"shortCode\": \"C\"\n // },\n // {\n // \"name\": \"Mafeteng\",\n // \"shortCode\": \"E\"\n // },\n // {\n // \"name\": \"Maseru\",\n // \"shortCode\": \"A\"\n // },\n // {\n // \"name\": \"Mohales Hoek\",\n // \"shortCode\": \"F\"\n // },\n // {\n // \"name\": \"Mokhotlong\",\n // \"shortCode\": \"J\"\n // },\n // {\n // \"name\": \"Qacha's Nek\",\n // \"shortCode\": \"H\"\n // },\n // {\n // \"name\": \"Quthing\",\n // \"shortCode\": \"G\"\n // },\n // {\n // \"name\": \"Thaba-Tseka\",\n // \"shortCode\": \"K\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Liberia\",\n // \"countryShortCode\": \"LR\",\n // \"regions\": [\n // {\n // \"name\": \"Bomi\",\n // \"shortCode\": \"BM\"\n // },\n // {\n // \"name\": \"Bong\",\n // \"shortCode\": \"BG\"\n // },\n // {\n // \"name\": \"Gbarpolu\",\n // \"shortCode\": \"GP\"\n // },\n // {\n // \"name\": \"Grand Bassa\",\n // \"shortCode\": \"GB\"\n // },\n // {\n // \"name\": \"Grand Cape Mount\",\n // \"shortCode\": \"CM\"\n // },\n // {\n // \"name\": \"Grand Gedeh\",\n // \"shortCode\": \"GG\"\n // },\n // {\n // \"name\": \"Grand Kru\",\n // \"shortCode\": \"GK\"\n // },\n // {\n // \"name\": \"Lofa\",\n // \"shortCode\": \"LO\"\n // },\n // {\n // \"name\": \"Margibi\",\n // \"shortCode\": \"MG\"\n // },\n // {\n // \"name\": \"Maryland\",\n // \"shortCode\": \"MY\"\n // },\n // {\n // \"name\": \"Montserrado\",\n // \"shortCode\": \"MO\"\n // },\n // {\n // \"name\": \"Nimba\",\n // \"shortCode\": \"NI\"\n // },\n // {\n // \"name\": \"River Cess\",\n // \"shortCode\": \"RI\"\n // },\n // {\n // \"name\": \"River Geee\",\n // \"shortCode\": \"RG\"\n // },\n // {\n // \"name\": \"Sinoe\",\n // \"shortCode\": \"SI\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Libya\",\n // \"countryShortCode\": \"LY\",\n // \"regions\": [\n // {\n // \"name\": \"Al Buţnān\",\n // \"shortCode\": \"BU\"\n // },\n // {\n // \"name\": \"Al Jabal al Akhḑar\",\n // \"shortCode\": \"JA\"\n // },\n // {\n // \"name\": \"Al Jabal al Gharbī\",\n // \"shortCode\": \"JG\"\n // },\n // {\n // \"name\": \"Al Jafārah\",\n // \"shortCode\": \"JI\"\n // },\n // {\n // \"name\": \"Al Jufrah\",\n // \"shortCode\": \"JU\"\n // },\n // {\n // \"name\": \"Al Kufrah\",\n // \"shortCode\": \"FK\"\n // },\n // {\n // \"name\": \"Al Marj\",\n // \"shortCode\": \"MJ\"\n // },\n // {\n // \"name\": \"Al Marquab\",\n // \"shortCode\": \"MB\"\n // },\n // {\n // \"name\": \"Al Wāḩāt\",\n // \"shortCode\": \"WA\"\n // },\n // {\n // \"name\": \"An Nuqaţ al Khams\",\n // \"shortCode\": \"NQ\"\n // },\n // {\n // \"name\": \"Az Zāwiyah\",\n // \"shortCode\": \"ZA\"\n // },\n // {\n // \"name\": \"Banghāzī\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Darnah\",\n // \"shortCode\": \"DR\"\n // },\n // {\n // \"name\": \"Ghāt\",\n // \"shortCode\": \"GH\"\n // },\n // {\n // \"name\": \"Mişrātah\",\n // \"shortCode\": \"MI\"\n // },\n // {\n // \"name\": \"Murzuq\",\n // \"shortCode\": \"MQ\"\n // },\n // {\n // \"name\": \"Nālūt\",\n // \"shortCode\": \"NL\"\n // },\n // {\n // \"name\": \"Sabhā\",\n // \"shortCode\": \"SB\"\n // },\n // {\n // \"name\": \"Surt\",\n // \"shortCode\": \"SR\"\n // },\n // {\n // \"name\": \"Ţarābulus\",\n // \"shortCode\": \"TB\"\n // },\n // {\n // \"name\": \"Yafran\",\n // \"shortCode\": \"WD\"\n // },\n // {\n // \"name\": \"Wādī ash Shāţiʾ\",\n // \"shortCode\": \"WS\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Liechtenstein\",\n \"countryShortCode\": \"LI\",\n \"regions\": [\n {\n \"name\": \"Balzers\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Eschen\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Gamprin\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Mauren\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Planken\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Ruggell\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Schaan\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Schellenberg\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Triesen\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Triesenberg\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Vaduz\",\n \"shortCode\": \"11\"\n }\n ]\n },\n {\n \"countryName\": \"Lithuania\",\n \"translationKey\": \"country_name_lithuania\",\n \"countryShortCode\": \"LT\",\n \"regions\": [\n {\n \"name\": \"Alytaus\",\n \"translationKey\": \"lithuania_region_name_al\",\n \"shortCode\": \"AL\"\n },\n {\n \"name\": \"Kauno\",\n \"translationKey\": \"lithuania_region_name_ku\",\n \"shortCode\": \"KU\"\n },\n {\n \"name\": \"Klaipėdos\",\n \"translationKey\": \"lithuania_region_name_kl\",\n \"shortCode\": \"KL\"\n },\n {\n \"name\": \"Marijampolės\",\n \"translationKey\": \"lithuania_region_name_mr\",\n \"shortCode\": \"MR\"\n },\n {\n \"name\": \"Panevėžio\",\n \"translationKey\": \"lithuania_region_name_pn\",\n \"shortCode\": \"PN\"\n },\n {\n \"name\": \"Šiaulių\",\n \"translationKey\": \"lithuania_region_name_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Tauragės\",\n \"translationKey\": \"lithuania_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Telšių\",\n \"translationKey\": \"lithuania_region_name_te\",\n \"shortCode\": \"TE\"\n },\n {\n \"name\": \"Utenos\",\n \"translationKey\": \"lithuania_region_name_ut\",\n \"shortCode\": \"UT\"\n },\n {\n \"name\": \"Vilniaus\",\n \"translationKey\": \"lithuania_region_name_vl\",\n \"shortCode\": \"VL\"\n }\n ]\n },\n {\n \"countryName\": \"Luxembourg\",\n \"translationKey\": \"country_name_luxembourg\",\n \"countryShortCode\": \"LU\",\n \"regions\": [\n {\n \"name\": \"Capellen\",\n \"translationKey\": \"luxembourg_region_name_ca\",\n \"shortCode\": \"CA\"\n },\n {\n \"name\": \"Clevaux\",\n \"translationKey\": \"luxembourg_region_name_cl\",\n \"shortCode\": \"CL\"\n },\n {\n \"name\": \"Diekirch\",\n \"translationKey\": \"luxembourg_region_name_di\",\n \"shortCode\": \"DI\"\n },\n {\n \"name\": \"Echternach\",\n \"translationKey\": \"luxembourg_region_name_ec\",\n \"shortCode\": \"EC\"\n },\n {\n \"name\": \"Esch-sur-Alzette\",\n \"translationKey\": \"luxembourg_region_name_es\",\n \"shortCode\": \"ES\"\n },\n {\n \"name\": \"Grevenmacher\",\n \"translationKey\": \"luxembourg_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Luxembourg\",\n \"translationKey\": \"luxembourg_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Mersch\",\n \"translationKey\": \"luxembourg_region_name_me\",\n \"shortCode\": \"ME\"\n },\n {\n \"name\": \"Redange\",\n \"translationKey\": \"luxembourg_region_name_rd\",\n \"shortCode\": \"RD\"\n },\n {\n \"name\": \"Remich\",\n \"translationKey\": \"luxembourg_region_name_rm\",\n \"shortCode\": \"RM\"\n },\n {\n \"name\": \"Vianden\",\n \"translationKey\": \"luxembourg_region_name_vd\",\n \"shortCode\": \"VD\"\n },\n {\n \"name\": \"Wiltz\",\n \"translationKey\": \"luxembourg_region_name_wi\",\n \"shortCode\": \"WI\"\n }\n ]\n },\n // {\n // \"countryName\": \"Macao\",\n // \"countryShortCode\": \"MO\",\n // \"regions\": [\n // {\n // \"name\": \"Macao\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Macedonia, Republic of\",\n \"countryShortCode\": \"MK\",\n \"regions\": [\n {\n \"name\": \"Aračinovo\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Berovo\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Bitola\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Bogdanci\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Bogovinje\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Bosilovo\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Brvenica\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Centar Župa\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Čaška\",\n \"shortCode\": \"80\"\n },\n {\n \"name\": \"Češinovo-Obleševo\",\n \"shortCode\": \"81\"\n },\n {\n \"name\": \"Čučer Sandevo\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Debar\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Debarca\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Delčevo\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Demir Hisar\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Demir Kapija\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Doran\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Dolneni\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Gevgelija\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Gostivar\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Gradsko\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Ilinden\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Jegunovce\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Karbinci\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Kavadarci\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Kičevo\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Kočani\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Konče\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Kratovo\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Kriva Palanka\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Krivogaštani\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Kruševo\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Kumanovo\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"Lipkovo\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"Lozovo\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"Makedonska Kamenica\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Makedonski Brod\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Mavrovo i Rostuša\",\n \"shortCode\": \"50\"\n },\n {\n \"name\": \"Mogila\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Negotino\",\n \"shortCode\": \"54\"\n },\n {\n \"name\": \"Novaci\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Novo Selo\",\n \"shortCode\": \"56\"\n },\n {\n \"name\": \"Ohrid\",\n \"shortCode\": \"58\"\n },\n {\n \"name\": \"Pehčevo\",\n \"shortCode\": \"60\"\n },\n {\n \"name\": \"Petrovec\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Plasnica\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Prilep\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Probištip\",\n \"shortCode\": \"63\"\n },\n {\n \"name\": \"Radoviš\",\n \"shortCode\": \"\"\n },\n {\n \"name\": \"Rankovce\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Resen\",\n \"shortCode\": \"66\"\n },\n {\n \"name\": \"Rosoman\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Skopje\",\n \"shortCode\": \"85\"\n },\n {\n \"name\": \"Sopište\",\n \"shortCode\": \"70\"\n },\n {\n \"name\": \"Staro Nagoričane\",\n \"shortCode\": \"71\"\n },\n {\n \"name\": \"Struga\",\n \"shortCode\": \"72\"\n },\n {\n \"name\": \"Strumica\",\n \"shortCode\": \"73\"\n },\n {\n \"name\": \"Studeničani\",\n \"shortCode\": \"74\"\n },\n {\n \"name\": \"Sveti Nikole\",\n \"shortCode\": \"69\"\n },\n {\n \"name\": \"Štip\",\n \"shortCode\": \"83\"\n },\n {\n \"name\": \"Tearce\",\n \"shortCode\": \"75\"\n },\n {\n \"name\": \"Tetovo\",\n \"shortCode\": \"76\"\n },\n {\n \"name\": \"Valandovo\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Vasilevo\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Veles\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Vevčani\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Vinica\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Vrapčište\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Zelenikovo\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Zrnovci\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Želino\",\n \"shortCode\": \"30\"\n }\n ]\n },\n {\n \"countryName\": \"Madagascar\",\n \"countryShortCode\": \"MG\",\n \"regions\": [\n {\n \"name\": \"Antananarivo\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Antsiranana\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Fianarantsoa\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Mahajanga\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Toamasina\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Toliara\",\n \"shortCode\": \"U\"\n }\n ]\n },\n // {\n // \"countryName\": \"Malawi\",\n // \"countryShortCode\": \"MW\",\n // \"regions\": [\n // {\n // \"name\": \"Balaka\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Blantyre\",\n // \"shortCode\": \"BL\"\n // },\n // {\n // \"name\": \"Chikwawa\",\n // \"shortCode\": \"CK\"\n // },\n // {\n // \"name\": \"Chiradzulu\",\n // \"shortCode\": \"CR\"\n // },\n // {\n // \"name\": \"Chitipa\",\n // \"shortCode\": \"CT\"\n // },\n // {\n // \"name\": \"Dedza\",\n // \"shortCode\": \"DE\"\n // },\n // {\n // \"name\": \"Dowa\",\n // \"shortCode\": \"DO\"\n // },\n // {\n // \"name\": \"Karonga\",\n // \"shortCode\": \"KR\"\n // },\n // {\n // \"name\": \"Kasungu\",\n // \"shortCode\": \"KS\"\n // },\n // {\n // \"name\": \"Likoma\",\n // \"shortCode\": \"LK\"\n // },\n // {\n // \"name\": \"Lilongwe\",\n // \"shortCode\": \"LI\"\n // },\n // {\n // \"name\": \"Machinga\",\n // \"shortCode\": \"MH\"\n // },\n // {\n // \"name\": \"Mangochi\",\n // \"shortCode\": \"MG\"\n // },\n // {\n // \"name\": \"Mchinji\",\n // \"shortCode\": \"MC\"\n // },\n // {\n // \"name\": \"Mulanje\",\n // \"shortCode\": \"MU\"\n // },\n // {\n // \"name\": \"Mwanza\",\n // \"shortCode\": \"MW\"\n // },\n // {\n // \"name\": \"Mzimba\",\n // \"shortCode\": \"MZ\"\n // },\n // {\n // \"name\": \"Nkhata Bay\",\n // \"shortCode\": \"NE\"\n // },\n // {\n // \"name\": \"Nkhotakota\",\n // \"shortCode\": \"NB\"\n // },\n // {\n // \"name\": \"Nsanje\",\n // \"shortCode\": \"NS\"\n // },\n // {\n // \"name\": \"Ntcheu\",\n // \"shortCode\": \"NU\"\n // },\n // {\n // \"name\": \"Ntchisi\",\n // \"shortCode\": \"NI\"\n // },\n // {\n // \"name\": \"Phalombe\",\n // \"shortCode\": \"PH\"\n // },\n // {\n // \"name\": \"Rumphi\",\n // \"shortCode\": \"RU\"\n // },\n // {\n // \"name\": \"Salima\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Thyolo\",\n // \"shortCode\": \"TH\"\n // },\n // {\n // \"name\": \"Zomba\",\n // \"shortCode\": \"ZO\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Malaysia\",\n // \"countryShortCode\": \"MY\",\n // \"regions\": [\n // {\n // \"name\": \"Johor\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Kedah\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Kelantan\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Melaka\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Negeri Sembilan\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Pahang\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Perak\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Perlis\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Pulau Pinang\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Sabah\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Sarawak\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Selangor\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Terengganu\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Wilayah Persekutuan (Kuala Lumpur)\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Wilayah Persekutuan (Labuan)\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Wilayah Persekutuan (Putrajaya)\",\n // \"shortCode\": \"16\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Maldives\",\n // \"countryShortCode\": \"MV\",\n // \"regions\": [\n // {\n // \"name\": \"Alifu Alifu\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Alifu Dhaalu\",\n // \"shortCode\": \"00\"\n // },\n // {\n // \"name\": \"Baa\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Dhaalu\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Faafu\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Gaafu Alifu\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Gaafu Dhaalu\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"Gnaviyani\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Haa Alifu\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Haa Dhaalu\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Kaafu\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Laamu\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Lhaviyani\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Malé\",\n // \"shortCode\": \"MLE\"\n // },\n // {\n // \"name\": \"Meemu\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Noonu\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Raa\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Seenu\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Shaviyani\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Thaa\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Vaavu\",\n // \"shortCode\": \"04\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Mali\",\n \"countryShortCode\": \"ML\",\n \"regions\": [\n {\n \"name\": \"Bamako\",\n \"shortCode\": \"BKO\"\n },\n {\n \"name\": \"Gao\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Kayes\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Kidal\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Koulikoro\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Mopti\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Segou\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Sikasso\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Tombouctou\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Taoudénit\",\n \"shortCode\": \"9\"\n },\n {\n \"name\": \"Ménaka\",\n \"shortCode\": \"10\"\n }\n ]\n },\n {\n \"countryName\": \"Malta\",\n \"translationKey\": \"country_name_malta\",\n \"countryShortCode\": \"MT\",\n \"regions\": [\n {\n \"name\": \"Attard\",\n \"translationKey\": \"malta_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Balzan\",\n \"translationKey\": \"malta_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Birgu\",\n \"translationKey\": \"malta_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Birkirkara\",\n \"translationKey\": \"malta_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Birżebbuġa\",\n \"translationKey\": \"malta_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Bormla\",\n \"translationKey\": \"malta_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Dingli\",\n \"translationKey\": \"malta_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Fgura\",\n \"translationKey\": \"malta_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Floriana\",\n \"translationKey\": \"malta_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Fontana\",\n \"translationKey\": \"malta_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Guda\",\n \"translationKey\": \"malta_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Gżira\",\n \"translationKey\": \"malta_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Għajnsielem\",\n \"translationKey\": \"malta_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Għarb\",\n \"translationKey\": \"malta_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Għargħur\",\n \"translationKey\": \"malta_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Għasri\",\n \"translationKey\": \"malta_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Għaxaq\",\n \"translationKey\": \"malta_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Ħamrun\",\n \"translationKey\": \"malta_region_name_18\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Iklin\",\n \"translationKey\": \"malta_region_name_19\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Isla\",\n \"translationKey\": \"malta_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Kalkara\",\n \"translationKey\": \"malta_region_name_21\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Kerċem\",\n \"translationKey\": \"malta_region_name_22\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Kirkop\",\n \"translationKey\": \"malta_region_name_23\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Lija\",\n \"translationKey\": \"malta_region_name_24\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Luqa\",\n \"translationKey\": \"malta_region_name_25\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Marsa\",\n \"translationKey\": \"malta_region_name_26\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Marsaskala\",\n \"translationKey\": \"malta_region_name_27\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Marsaxlokk\",\n \"translationKey\": \"malta_region_name_28\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Mdina\",\n \"translationKey\": \"malta_region_name_29\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Mellieħa\",\n \"translationKey\": \"malta_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Mġarr\",\n \"translationKey\": \"malta_region_name_31\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Mosta\",\n \"translationKey\": \"malta_region_name_32\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Mqabba\",\n \"translationKey\": \"malta_region_name_33\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Msida\",\n \"translationKey\": \"malta_region_name_34\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Mtarfa\",\n \"translationKey\": \"malta_region_name_35\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Munxar\",\n \"translationKey\": \"malta_region_name_36\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Nadur\",\n \"translationKey\": \"malta_region_name_37\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Naxxar\",\n \"translationKey\": \"malta_region_name_38\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Paola\",\n \"translationKey\": \"malta_region_name_39\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Pembroke\",\n \"translationKey\": \"malta_region_name_40\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Pietà\",\n \"translationKey\": \"malta_region_name_41\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Qala\",\n \"translationKey\": \"malta_region_name_42\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Qormi\",\n \"translationKey\": \"malta_region_name_43\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Qrendi\",\n \"translationKey\": \"malta_region_name_44\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Rabat Għawdex\",\n \"translationKey\": \"malta_region_name_45\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Rabat Malta\",\n \"translationKey\": \"malta_region_name_46\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Safi\",\n \"translationKey\": \"malta_region_name_47\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"San Ġiljan\",\n \"translationKey\": \"malta_region_name_48\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"San Ġwann\",\n \"translationKey\": \"malta_region_name_49\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"San Lawrenz\",\n \"translationKey\": \"malta_region_name_50\",\n \"shortCode\": \"50\"\n },\n {\n \"name\": \"San Pawl il-Baħar\",\n \"translationKey\": \"malta_region_name_51\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Sannat\",\n \"translationKey\": \"malta_region_name_52\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Santa Luċija\",\n \"translationKey\": \"malta_region_name_53\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Santa Venera\",\n \"translationKey\": \"malta_region_name_54\",\n \"shortCode\": \"54\"\n },\n {\n \"name\": \"Siġġiewi\",\n \"translationKey\": \"malta_region_name_55\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Sliema\",\n \"translationKey\": \"malta_region_name_56\",\n \"shortCode\": \"56\"\n },\n {\n \"name\": \"Swieqi\",\n \"translationKey\": \"malta_region_name_57\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Tai Xbiex\",\n \"translationKey\": \"malta_region_name_58\",\n \"shortCode\": \"58\"\n },\n {\n \"name\": \"Tarzien\",\n \"translationKey\": \"malta_region_name_59\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Valletta\",\n \"translationKey\": \"malta_region_name_60\",\n \"shortCode\": \"60\"\n },\n {\n \"name\": \"Xagħra\",\n \"translationKey\": \"malta_region_name_61\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Xewkija\",\n \"translationKey\": \"malta_region_name_62\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Xgħajra\",\n \"translationKey\": \"malta_region_name_63\",\n \"shortCode\": \"63\"\n },\n {\n \"name\": \"Żabbar\",\n \"translationKey\": \"malta_region_name_64\",\n \"shortCode\": \"64\"\n },\n {\n \"name\": \"Żebbuġ Għawde\",\n \"translationKey\": \"malta_region_name_65\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Żebbuġ Malta\",\n \"translationKey\": \"malta_region_name_66\",\n \"shortCode\": \"66\"\n },\n {\n \"name\": \"Żejtun\",\n \"translationKey\": \"malta_region_name_67\",\n \"shortCode\": \"67\"\n },\n {\n \"name\": \"Żurrieq\",\n \"translationKey\": \"malta_region_name_68\",\n \"shortCode\": \"68\"\n }\n ]\n },\n // {\n // \"countryName\": \"Marshall Islands\",\n // \"countryShortCode\": \"MH\",\n // \"regions\": [\n // {\n // \"name\": \"Ailinglaplap\",\n // \"shortCode\": \"ALL\"\n // },\n // {\n // \"name\": \"Ailuk\",\n // \"shortCode\": \"ALK\"\n // },\n // {\n // \"name\": \"Arno\",\n // \"shortCode\": \"ARN\"\n // },\n // {\n // \"name\": \"Aur\",\n // \"shortCode\": \"AUR\"\n // },\n // {\n // \"name\": \"Bikini and Kili\",\n // \"shortCode\": \"KIL\"\n // },\n // {\n // \"name\": \"Ebon\",\n // \"shortCode\": \"EBO\"\n // },\n // {\n // \"name\": \"Jabat\",\n // \"shortCode\": \"JAB\"\n // },\n // {\n // \"name\": \"Jaluit\",\n // \"shortCode\": \"JAL\"\n // },\n // {\n // \"name\": \"Kwajalein\",\n // \"shortCode\": \"KWA\"\n // },\n // {\n // \"name\": \"Lae\",\n // \"shortCode\": \"LAE\"\n // },\n // {\n // \"name\": \"Lib\",\n // \"shortCode\": \"LIB\"\n // },\n // {\n // \"name\": \"Likiep\",\n // \"shortCode\": \"LIK\"\n // },\n // {\n // \"name\": \"Majuro\",\n // \"shortCode\": \"MAJ\"\n // },\n // {\n // \"name\": \"Maloelap\",\n // \"shortCode\": \"MAL\"\n // },\n // {\n // \"name\": \"Mejit\",\n // \"shortCode\": \"MEJ\"\n // },\n // {\n // \"name\": \"Namdrik\",\n // \"shortCode\": \"NMK\"\n // },\n // {\n // \"name\": \"Namu\",\n // \"shortCode\": \"NMU\"\n // },\n // {\n // \"name\": \"Rongelap\",\n // \"shortCode\": \"RON\"\n // },\n // {\n // \"name\": \"Ujae\",\n // \"shortCode\": \"UJA\"\n // },\n // {\n // \"name\": \"Utrik\",\n // \"shortCode\": \"UTI\"\n // },\n // {\n // \"name\": \"Wotho\",\n // \"shortCode\": \"WTH\"\n // },\n // {\n // \"name\": \"Wotje\",\n // \"shortCode\": \"WTJ\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Martinique\",\n \"countryShortCode\": \"MQ\",\n \"regions\": [\n {\n \"name\": \"Martinique\"\n }\n ]\n },\n {\n \"countryName\": \"Mauritania\",\n \"countryShortCode\": \"MR\",\n \"regions\": [\n {\n \"name\": \"Adrar\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Assaba\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Brakna\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Dakhlet Nouadhibou\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Gorgol\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Guidimaka\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Hodh Ech Chargui\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Hodh El Gharbi\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Inchiri\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Nouakchott Nord\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Nouakchott Ouest\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Nouakchott Sud\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Tagant\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Tiris Zemmour\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Trarza\",\n \"shortCode\": \"06\"\n }\n ]\n },\n {\n \"countryName\": \"Mauritius\",\n \"countryShortCode\": \"MU\",\n \"regions\": [\n {\n \"name\": \"Agalega Islands\",\n \"shortCode\": \"AG\"\n },\n {\n \"name\": \"Beau Bassin-Rose Hill\",\n \"shortCode\": \"BR\"\n },\n {\n \"name\": \"Black River\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Cargados Carajos Shoals\",\n \"shortCode\": \"CC\"\n },\n {\n \"name\": \"Curepipe\",\n \"shortCode\": \"CU\"\n },\n {\n \"name\": \"Flacq\",\n \"shortCode\": \"FL\"\n },\n {\n \"name\": \"Grand Port\",\n \"shortCode\": \"GP\"\n },\n {\n \"name\": \"Moka\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Pamplemousses\",\n \"shortCode\": \"PA\"\n },\n {\n \"name\": \"Plaines Wilhems\",\n \"shortCode\": \"PW\"\n },\n {\n \"name\": \"Port Louis (City)\",\n \"shortCode\": \"PU\"\n },\n {\n \"name\": \"Port Louis\",\n \"shortCode\": \"PL\"\n },\n {\n \"name\": \"Riviere du Rempart\",\n \"shortCode\": \"RR\"\n },\n {\n \"name\": \"Rodrigues Island\",\n \"shortCode\": \"RO\"\n },\n {\n \"name\": \"Savanne\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Vacoas-Phoenix\",\n \"shortCode\": \"CP\"\n }\n ]\n },\n // {\n // \"countryName\": \"Mayotte\",\n // \"countryShortCode\": \"YT\",\n // \"regions\": [\n // {\n // \"name\": \"Dzaoudzi\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Pamandzi\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Mamoudzou\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Dembeni\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Bandrélé\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Kani-Kéli\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Bouéni\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Chirongui\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Sada\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Ouangani\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Chiconi\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Tsingoni\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"M'Tsangamouji\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Acoua\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Mtsamboro\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Bandraboua\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Koungou\",\n // \"shortCode\": \"17\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Mexico\",\n \"translationKey\": \"country_name_mexico\",\n \"countryShortCode\": \"MX\",\n \"regions\": [\n {\n \"name\": \"Aguascalientes\",\n \"translationKey\": \"mexico_region_name_agu\",\n \"shortCode\": \"AGU\"\n },\n {\n \"name\": \"Baja California\",\n \"translationKey\": \"mexico_region_name_bcn\",\n \"shortCode\": \"BCN\"\n },\n {\n \"name\": \"Baja California Sur\",\n \"translationKey\": \"mexico_region_name_bcs\",\n \"shortCode\": \"BCS\"\n },\n {\n \"name\": \"Campeche\",\n \"translationKey\": \"mexico_region_name_cam\",\n \"shortCode\": \"CAM\"\n },\n {\n \"name\": \"Ciudad de México\",\n \"translationKey\": \"mexico_region_name_dif\",\n \"shortCode\": \"DIF\"\n },\n {\n \"name\": \"Chiapas\",\n \"translationKey\": \"mexico_region_name_chp\",\n \"shortCode\": \"CHP\"\n },\n {\n \"name\": \"Chihuahua\",\n \"translationKey\": \"mexico_region_name_chh\",\n \"shortCode\": \"CHH\"\n },\n {\n \"name\": \"Coahuila de Zaragoza\",\n \"translationKey\": \"mexico_region_name_coa\",\n \"shortCode\": \"COA\"\n },\n {\n \"name\": \"Colima\",\n \"translationKey\": \"mexico_region_name_col\",\n \"shortCode\": \"COL\"\n },\n {\n \"name\": \"Durango\",\n \"translationKey\": \"mexico_region_name_dur\",\n \"shortCode\": \"DUR\"\n },\n {\n \"name\": \"Estado de México\",\n \"translationKey\": \"mexico_region_name_mex\",\n \"shortCode\": \"MEX\"\n },\n {\n \"name\": \"Guanajuato\",\n \"translationKey\": \"mexico_region_name_gua\",\n \"shortCode\": \"GUA\"\n },\n {\n \"name\": \"Guerrero\",\n \"translationKey\": \"mexico_region_name_gro\",\n \"shortCode\": \"GRO\"\n },\n {\n \"name\": \"Hidalgo\",\n \"translationKey\": \"mexico_region_name_hid\",\n \"shortCode\": \"HID\"\n },\n {\n \"name\": \"Jalisco\",\n \"translationKey\": \"mexico_region_name_jal\",\n \"shortCode\": \"JAL\"\n },\n {\n \"name\": \"Michoacán de Ocampo\",\n \"translationKey\": \"mexico_region_name_mic\",\n \"shortCode\": \"MIC\"\n },\n {\n \"name\": \"Morelos\",\n \"translationKey\": \"mexico_region_name_mor\",\n \"shortCode\": \"MOR\"\n },\n {\n \"name\": \"Nayarit\",\n \"translationKey\": \"mexico_region_name_nay\",\n \"shortCode\": \"NAY\"\n },\n {\n \"name\": \"Nuevo León\",\n \"translationKey\": \"mexico_region_name_nle\",\n \"shortCode\": \"NLE\"\n },\n {\n \"name\": \"Oaxaca\",\n \"translationKey\": \"mexico_region_name_oax\",\n \"shortCode\": \"OAX\"\n },\n {\n \"name\": \"Puebla\",\n \"translationKey\": \"mexico_region_name_pue\",\n \"shortCode\": \"PUE\"\n },\n {\n \"name\": \"Querétaro de Arteaga\",\n \"translationKey\": \"mexico_region_name_que\",\n \"shortCode\": \"QUE\"\n },\n {\n \"name\": \"Quintana Roo\",\n \"translationKey\": \"mexico_region_name_roo\",\n \"shortCode\": \"ROO\"\n },\n {\n \"name\": \"San Luis Potosí\",\n \"translationKey\": \"mexico_region_name_slp\",\n \"shortCode\": \"SLP\"\n },\n {\n \"name\": \"Sinaloa\",\n \"translationKey\": \"mexico_region_name_sin\",\n \"shortCode\": \"SIN\"\n },\n {\n \"name\": \"Sonora\",\n \"translationKey\": \"mexico_region_name_son\",\n \"shortCode\": \"SON\"\n },\n {\n \"name\": \"Tabasco\",\n \"translationKey\": \"mexico_region_name_tab\",\n \"shortCode\": \"TAB\"\n },\n {\n \"name\": \"Tamaulipas\",\n \"translationKey\": \"mexico_region_name_tam\",\n \"shortCode\": \"TAM\"\n },\n {\n \"name\": \"Tlaxcala\",\n \"translationKey\": \"mexico_region_name_tla\",\n \"shortCode\": \"TLA\"\n },\n {\n \"name\": \"Veracruz\",\n \"translationKey\": \"mexico_region_name_ver\",\n \"shortCode\": \"VER\"\n },\n {\n \"name\": \"Yucatán\",\n \"translationKey\": \"mexico_region_name_yuc\",\n \"shortCode\": \"YUC\"\n },\n {\n \"name\": \"Zacatecas\",\n \"translationKey\": \"mexico_region_name_zac\",\n \"shortCode\": \"ZAC\"\n }\n ]\n },\n // {\n // \"countryName\": \"Micronesia, Federated States of\",\n // \"countryShortCode\": \"FM\",\n // \"regions\": [\n // {\n // \"name\": \"Chuuk (Truk)\",\n // \"shortCode\": \"TRK\"\n // },\n // {\n // \"name\": \"Kosrae\",\n // \"shortCode\": \"KSA\"\n // },\n // {\n // \"name\": \"Pohnpei\",\n // \"shortCode\": \"PNI\"\n // },\n // {\n // \"name\": \"Yap\",\n // \"shortCode\": \"YAP\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Moldova\",\n \"countryShortCode\": \"MD\",\n \"regions\": [\n {\n \"name\": \"Aenii Noi\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Basarabeasca\",\n \"shortCode\": \"BS\"\n },\n {\n \"name\": \"Bălți\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Bender\",\n \"shortCode\": \"BD\"\n },\n {\n \"name\": \"Briceni\",\n \"shortCode\": \"BR\"\n },\n {\n \"name\": \"Cahul\",\n \"shortCode\": \"CA\"\n },\n {\n \"name\": \"Cantemir\",\n \"shortCode\": \"CT\"\n },\n {\n \"name\": \"Călărași\",\n \"shortCode\": \"CL\"\n },\n {\n \"name\": \"Căușeni\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Chișinău\",\n \"shortCode\": \"CU\"\n },\n {\n \"name\": \"Cimișlia\",\n \"shortCode\": \"CM\"\n },\n {\n \"name\": \"Criuleni\",\n \"shortCode\": \"CR\"\n },\n {\n \"name\": \"Dondușeni\",\n \"shortCode\": \"DO\"\n },\n {\n \"name\": \"Drochia\",\n \"shortCode\": \"DR\"\n },\n {\n \"name\": \"Dubăsari\",\n \"shortCode\": \"DU\"\n },\n {\n \"name\": \"Edineț\",\n \"shortCode\": \"ED\"\n },\n {\n \"name\": \"Fălești\",\n \"shortCode\": \"FA\"\n },\n {\n \"name\": \"Florești\",\n \"shortCode\": \"FL\"\n },\n {\n \"name\": \"Găgăuzia\",\n \"shortCode\": \"GA\"\n },\n {\n \"name\": \"Glodeni\",\n \"shortCode\": \"GL\"\n },\n {\n \"name\": \"Hîncești\",\n \"shortCode\": \"HI\"\n },\n {\n \"name\": \"Ialoveni\",\n \"shortCode\": \"IA\"\n },\n {\n \"name\": \"Leova\",\n \"shortCode\": \"LE\"\n },\n {\n \"name\": \"Nisporeni\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Ocnița\",\n \"shortCode\": \"OC\"\n },\n {\n \"name\": \"Orhei\",\n \"shortCode\": \"OR\"\n },\n {\n \"name\": \"Rezina\",\n \"shortCode\": \"RE\"\n },\n {\n \"name\": \"Rîșcani\",\n \"shortCode\": \"RI\"\n },\n {\n \"name\": \"Sîngerei\",\n \"shortCode\": \"SI\"\n },\n {\n \"name\": \"Soroca\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Stînga Nistrului\",\n \"shortCode\": \"SN\"\n },\n {\n \"name\": \"Strășeni\",\n \"shortCode\": \"ST\"\n },\n {\n \"name\": \"Șoldănești\",\n \"shortCode\": \"SD\"\n },\n {\n \"name\": \"Ștefan Vodă\",\n \"shortCode\": \"SV\"\n },\n {\n \"name\": \"Taraclia\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Telenești\",\n \"shortCode\": \"TE\"\n },\n {\n \"name\": \"Ungheni\",\n \"shortCode\": \"UN\"\n }\n ]\n },\n // {\n // \"countryName\": \"Monaco\",\n // \"countryShortCode\": \"MC\",\n // \"regions\": [\n // {\n // \"name\": \"Colle\",\n // \"shortCode\": \"CL\"\n // },\n // {\n // \"name\": \"Condamine\",\n // \"shortCode\": \"CO\"\n // },\n // {\n // \"name\": \"Fontvieille\",\n // \"shortCode\": \"FO\"\n // },\n // {\n // \"name\": \"Gare\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Jardin Exotique\",\n // \"shortCode\": \"JE\"\n // },\n // {\n // \"name\": \"Larvotto\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Malbousquet\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Monaco-Ville\",\n // \"shortCode\": \"MO\"\n // },\n // {\n // \"name\": \"Moneghetti\",\n // \"shortCode\": \"MG\"\n // },\n // {\n // \"name\": \"Monte-Carlo\",\n // \"shortCode\": \"MC\"\n // },\n // {\n // \"name\": \"Moulins\",\n // \"shortCode\": \"MU\"\n // },\n // {\n // \"name\": \"Port-Hercule\",\n // \"shortCode\": \"PH\"\n // },\n // {\n // \"name\": \"Saint-Roman\",\n // \"shortCode\": \"SR\"\n // },\n // {\n // \"name\": \"Sainte-Dévote\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Source\",\n // \"shortCode\": \"SO\"\n // },\n // {\n // \"name\": \"Spélugues\",\n // \"shortCode\": \"SP\"\n // },\n // {\n // \"name\": \"Vallon de la Rousse\",\n // \"shortCode\": \"VR\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Mongolia\",\n \"countryShortCode\": \"MN\",\n \"regions\": [\n {\n \"name\": \"Arhangay\",\n \"shortCode\": \"073\"\n },\n {\n \"name\": \"Bayan-Olgiy\",\n \"shortCode\": \"071\"\n },\n {\n \"name\": \"Bayanhongor\",\n \"shortCode\": \"069\"\n },\n {\n \"name\": \"Bulgan\",\n \"shortCode\": \"067\"\n },\n {\n \"name\": \"Darhan\",\n \"shortCode\": \"037\"\n },\n {\n \"name\": \"Dornod\",\n \"shortCode\": \"061\"\n },\n {\n \"name\": \"Dornogovi\",\n \"shortCode\": \"063\"\n },\n {\n \"name\": \"Dundgovi\",\n \"shortCode\": \"059\"\n },\n {\n \"name\": \"Dzavhan\",\n \"shortCode\": \"057\"\n },\n {\n \"name\": \"Govi-Altay\",\n \"shortCode\": \"065\"\n },\n {\n \"name\": \"Govi-Sumber\",\n \"shortCode\": \"064\"\n },\n {\n \"name\": \"Hovd\",\n \"shortCode\": \"043\"\n },\n {\n \"name\": \"Hovsgol\",\n \"shortCode\": \"041\"\n },\n {\n \"name\": \"Omnogovi\",\n \"shortCode\": \"053\"\n },\n {\n \"name\": \"Ovorhangay\",\n \"shortCode\": \"055\"\n },\n {\n \"name\": \"Selenge\",\n \"shortCode\": \"049\"\n },\n {\n \"name\": \"Suhbaatar\",\n \"shortCode\": \"051\"\n },\n {\n \"name\": \"Tov\",\n \"shortCode\": \"047\"\n },\n {\n \"name\": \"Ulaanbaatar\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Uvs\",\n \"shortCode\": \"046\"\n }\n ]\n },\n // {\n // \"countryName\": \"Montenegro\",\n // \"countryShortCode\": \"ME\",\n // \"regions\": [\n // {\n // \"name\": \"Andrijevica\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Bar\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Berane\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Bijelo Polje\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Budva\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Cetinje\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Danilovgrad\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Gusinje\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Herceg Novi\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Kolašin\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Kotor\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Mojkovac\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Nikšić\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Petnica\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Plav\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Plužine\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Pljevlja\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Podgorica\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Rožaje\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Šavnik\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Tivat\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Ulcinj\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Žabljak\",\n // \"shortCode\": \"21\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Montserrat\",\n // \"countryShortCode\": \"MS\",\n // \"regions\": [\n // {\n // \"name\": \"Saint Anthony\"\n // },\n // {\n // \"name\": \"Saint Georges\"\n // },\n // {\n // \"name\": \"Saint Peter's\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Morocco\",\n \"countryShortCode\": \"MA\",\n \"regions\": [\n {\n \"name\": \"Tanger-Tétouan-Al Hoceïma\",\n \"code\": \"MA-01\"\n },\n {\n \"name\": \"L'Oriental\",\n \"code\": \"MA-02\"\n },\n {\n \"name\": \"Fès-Meknès\",\n \"code\": \"MA-03\"\n },\n {\n \"name\": \"Rabat-Salé-Kénitra\",\n \"code\": \"MA-04\"\n },\n {\n \"name\": \"Béni Mellal-Khénifra\",\n \"code\": \"MA-05\"\n },\n {\n \"name\": \"Casablanca-Settat\",\n \"code\": \"MA-06\"\n },\n {\n \"name\": \"Marrakech-Safi\",\n \"code\": \"MA-07\"\n },\n {\n \"name\": \"Drâa-Tafilalet\",\n \"code\": \"MA-08\"\n },\n {\n \"name\": \"Souss-Massa\",\n \"code\": \"MA-09\"\n },\n {\n \"name\": \"Guelmim-Oued Noun\",\n \"code\": \"MA-10\"\n },\n {\n \"name\": \"Laâyoune-Sakia El Hamra\",\n \"code\": \"MA-11\"\n },\n {\n \"name\": \"Dakhla-Oued Ed-Dahab\",\n \"code\": \"MA-12\"\n }\n ]\n },\n {\n \"countryName\": \"Mozambique\",\n \"countryShortCode\": \"MZ\",\n \"regions\": [\n {\n \"name\": \"Cabo Delgado\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Gaza\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Inhambane\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Manica\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Maputo\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Maputo (City)\",\n \"shortCode\": \"MPM\"\n },\n {\n \"name\": \"Nampula\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Niassa\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Sofala\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Tete\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Zambezia\",\n \"shortCode\": \"Q\"\n }\n ]\n },\n // {\n // \"countryName\": \"Myanmar\",\n // \"countryShortCode\": \"MM\",\n // \"regions\": [\n // {\n // \"name\": \"Ayeyarwady\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Bago\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Chin\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Kachin\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Kayah\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Kayin\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Magway\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Mandalay\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Mon\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Nay Pyi Taw\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Rakhine\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Sagaing\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Shan\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Tanintharyi\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Yangon\",\n // \"shortCode\": \"06\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Namibia\",\n \"countryShortCode\": \"NA\",\n \"regions\": [\n {\n \"name\": \"Erongo\",\n \"shortCode\": \"ER\"\n },\n {\n \"name\": \"Hardap\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Kavango East\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kavango West\",\n \"shortCode\": \"KW\"\n },\n {\n \"name\": \"Karas\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Khomas\",\n \"shortCode\": \"KH\"\n },\n {\n \"name\": \"Kunene\",\n \"shortCode\": \"KU\"\n },\n {\n \"name\": \"Ohangwena\",\n \"shortCode\": \"OW\"\n },\n {\n \"name\": \"Omaheke\",\n \"shortCode\": \"OH\"\n },\n {\n \"name\": \"Omusati\",\n \"shortCode\": \"OS\"\n },\n {\n \"name\": \"Oshana\",\n \"shortCode\": \"ON\"\n },\n {\n \"name\": \"Oshikoto\",\n \"shortCode\": \"OT\"\n },\n {\n \"name\": \"Otjozondjupa\",\n \"shortCode\": \"OD\"\n },\n {\n \"name\": \"Zambezi\",\n \"shortCode\": \"CA\"\n }\n ]\n },\n // {\n // \"countryName\": \"Nauru\",\n // \"countryShortCode\": \"NR\",\n // \"regions\": [\n // {\n // \"name\": \"Aiwo\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Anabar\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Anetan\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Anibare\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Baiti\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Boe\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Buada\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Denigomodu\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Ewa\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Ijuw\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Meneng\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Nibok\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Uaboe\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Yaren\",\n // \"shortCode\": \"14\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Nepal\",\n // \"countryShortCode\": \"NP\",\n // \"regions\": [\n // {\n // \"name\": \"Bagmati\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Bheri\",\n // \"shortCode\": \"BH\"\n // },\n // {\n // \"name\": \"Dhawalagiri\",\n // \"shortCode\": \"DH\"\n // },\n // {\n // \"name\": \"Gandaki\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Janakpur\",\n // \"shortCode\": \"JA\"\n // },\n // {\n // \"name\": \"Karnali\",\n // \"shortCode\": \"KA\"\n // },\n // {\n // \"name\": \"Kosi\",\n // \"shortCode\": \"KO\"\n // },\n // {\n // \"name\": \"Lumbini\",\n // \"shortCode\": \"LU\"\n // },\n // {\n // \"name\": \"Mahakali\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Mechi\",\n // \"shortCode\": \"ME\"\n // },\n // {\n // \"name\": \"Narayani\",\n // \"shortCode\": \"NA\"\n // },\n // {\n // \"name\": \"Rapti\",\n // \"shortCode\": \"RA\"\n // },\n // {\n // \"name\": \"Sagarmatha\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Seti\",\n // \"shortCode\": \"SE\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Netherlands\",\n \"translationKey\": \"country_name_netherlands\",\n \"countryShortCode\": \"NL\",\n \"regions\": [\n {\n \"name\": \"Drenthe\",\n \"translationKey\": \"netherlands_region_name_dr\",\n \"shortCode\": \"DR\"\n },\n {\n \"name\": \"Flevoland\",\n \"translationKey\": \"netherlands_region_name_fl\",\n \"shortCode\": \"FL\"\n },\n {\n \"name\": \"Friesland\",\n \"translationKey\": \"netherlands_region_name_fr\",\n \"shortCode\": \"FR\"\n },\n {\n \"name\": \"Gelderland\",\n \"translationKey\": \"netherlands_region_name_ge\",\n \"shortCode\": \"GE\"\n },\n {\n \"name\": \"Groningen\",\n \"translationKey\": \"netherlands_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Limburg\",\n \"translationKey\": \"netherlands_region_name_li\",\n \"shortCode\": \"LI\"\n },\n {\n \"name\": \"Noord-Brabant\",\n \"translationKey\": \"netherlands_region_name_nb\",\n \"shortCode\": \"NB\"\n },\n {\n \"name\": \"Noord-Holland\",\n \"translationKey\": \"netherlands_region_name_nh\",\n \"shortCode\": \"NH\"\n },\n {\n \"name\": \"Overijssel\",\n \"translationKey\": \"netherlands_region_name_ov\",\n \"shortCode\": \"OV\"\n },\n {\n \"name\": \"Utrecht\",\n \"translationKey\": \"netherlands_region_name_ut\",\n \"shortCode\": \"UT\"\n },\n {\n \"name\": \"Zeeland\",\n \"translationKey\": \"netherlands_region_name_ze\",\n \"shortCode\": \"ZE\"\n },\n {\n \"name\": \"Zuid-Holland\",\n \"translationKey\": \"netherlands_region_name_zh\",\n \"shortCode\": \"ZH\"\n }\n ]\n },\n {\n \"countryName\": \"New Caledonia\",\n \"countryShortCode\": \"NC\",\n \"regions\": [\n {\n \"name\": \"Iles Loyaute\"\n },\n {\n \"name\": \"Nord\"\n },\n {\n \"name\": \"Sud\"\n }\n ]\n },\n {\n \"countryName\": \"New Zealand\",\n \"translationKey\": \"country_name_new_zealand\",\n \"countryShortCode\": \"NZ\",\n \"regions\": [\n {\n \"name\": \"Auckland\",\n \"translationKey\": \"new_zealand_region_name_auk\",\n \"shortCode\": \"AUK\"\n },\n {\n \"name\": \"Bay of Plenty\",\n \"translationKey\": \"new_zealand_region_name_bop\",\n \"shortCode\": \"BOP\"\n },\n {\n \"name\": \"Canterbury\",\n \"translationKey\": \"new_zealand_region_name_can\",\n \"shortCode\": \"CAN\"\n },\n {\n \"name\": \"Gisborne\",\n \"translationKey\": \"new_zealand_region_name_gis\",\n \"shortCode\": \"GIS\"\n },\n {\n \"name\": \"Hawke's Bay\",\n \"translationKey\": \"new_zealand_region_name_hkb\",\n \"shortCode\": \"HKB\"\n },\n {\n \"name\": \"Marlborough\",\n \"translationKey\": \"new_zealand_region_name_mbh\",\n \"shortCode\": \"MBH\"\n },\n {\n \"name\": \"Manawatu-Wanganui\",\n \"translationKey\": \"new_zealand_region_name_mwt\",\n \"shortCode\": \"MWT\"\n },\n {\n \"name\": \"Northland\",\n \"translationKey\": \"new_zealand_region_name_ntl\",\n \"shortCode\": \"NTL\"\n },\n {\n \"name\": \"Nelson\",\n \"translationKey\": \"new_zealand_region_name_nsn\",\n \"shortCode\": \"NSN\"\n },\n {\n \"name\": \"Otago\",\n \"translationKey\": \"new_zealand_region_name_ota\",\n \"shortCode\": \"OTA\"\n },\n {\n \"name\": \"Southland\",\n \"translationKey\": \"new_zealand_region_name_stl\",\n \"shortCode\": \"STL\"\n },\n {\n \"name\": \"Taranaki\",\n \"translationKey\": \"new_zealand_region_name_tki\",\n \"shortCode\": \"TKI\"\n },\n {\n \"name\": \"Tasman\",\n \"translationKey\": \"new_zealand_region_name_tas\",\n \"shortCode\": \"TAS\"\n },\n {\n \"name\": \"Waikato\",\n \"translationKey\": \"new_zealand_region_name_wko\",\n \"shortCode\": \"WKO\"\n },\n {\n \"name\": \"Wellington\",\n \"translationKey\": \"new_zealand_region_name_wgn\",\n \"shortCode\": \"WGN\"\n },\n {\n \"name\": \"West Coast\",\n \"translationKey\": \"new_zealand_region_name_wtc\",\n \"shortCode\": \"WTC\"\n },\n {\n \"name\": \"Chatham Islands Territory\",\n \"translationKey\": \"new_zealand_region_name_cit\",\n \"shortCode\": \"CIT\"\n }\n ]\n },\n // {\n // \"countryName\": \"Nicaragua\",\n // \"countryShortCode\": \"NI\",\n // \"regions\": [\n // {\n // \"name\": \"Boaco\",\n // \"shortCode\": \"BO\"\n // },\n // {\n // \"name\": \"Carazo\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Chinandega\",\n // \"shortCode\": \"CI\"\n // },\n // {\n // \"name\": \"Chontales\",\n // \"shortCode\": \"CO\"\n // },\n // {\n // \"name\": \"Estelí\",\n // \"shortCode\": \"ES\"\n // },\n // {\n // \"name\": \"Granada\",\n // \"shortCode\": \"GR\"\n // },\n // {\n // \"name\": \"Jinotega\",\n // \"shortCode\": \"JI\"\n // },\n // {\n // \"name\": \"León\",\n // \"shortCode\": \"LE\"\n // },\n // {\n // \"name\": \"Madriz\",\n // \"shortCode\": \"MD\"\n // },\n // {\n // \"name\": \"Managua\",\n // \"shortCode\": \"MN\"\n // },\n // {\n // \"name\": \"Masaya\",\n // \"shortCode\": \"MS\"\n // },\n // {\n // \"name\": \"Matagalpa\",\n // \"shortCode\": \"MT\"\n // },\n // {\n // \"name\": \"Nueva Segovia\",\n // \"shortCode\": \"NS\"\n // },\n // {\n // \"name\": \"Río San Juan\",\n // \"shortCode\": \"SJ\"\n // },\n // {\n // \"name\": \"Rivas\",\n // \"shortCode\": \"RI\"\n // },\n // {\n // \"name\": \"Atlántico Norte\",\n // \"shortCode\": \"AN\"\n // },\n // {\n // \"name\": \"Atlántico Sur\",\n // \"shortCode\": \"AS\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Niger\",\n \"countryShortCode\": \"NE\",\n \"regions\": [\n {\n \"name\": \"Agadez\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Diffa\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Dosso\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Maradi\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Niamey\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Tahoua\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Tillabéri\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Zinder\",\n \"shortCode\": \"7\"\n }\n ]\n },\n {\n \"countryName\": \"Nigeria\",\n \"countryShortCode\": \"NG\",\n \"regions\": [\n {\n \"name\": \"Abia\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Abuja Federal Capital Territory\",\n \"shortCode\": \"FC\"\n },\n {\n \"name\": \"Adamawa\",\n \"shortCode\": \"AD\"\n },\n {\n \"name\": \"Akwa Ibom\",\n \"shortCode\": \"AK\"\n },\n {\n \"name\": \"Anambra\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Bauchi\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Bayelsa\",\n \"shortCode\": \"BY\"\n },\n {\n \"name\": \"Benue\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Borno\",\n \"shortCode\": \"BO\"\n },\n {\n \"name\": \"Cross River\",\n \"shortCode\": \"CR\"\n },\n {\n \"name\": \"Delta\",\n \"shortCode\": \"DE\"\n },\n {\n \"name\": \"Ebonyi\",\n \"shortCode\": \"EB\"\n },\n {\n \"name\": \"Edo\",\n \"shortCode\": \"ED\"\n },\n {\n \"name\": \"Ekiti\",\n \"shortCode\": \"EK\"\n },\n {\n \"name\": \"Enugu\",\n \"shortCode\": \"EN\"\n },\n {\n \"name\": \"Gombe\",\n \"shortCode\": \"GO\"\n },\n {\n \"name\": \"Imo\",\n \"shortCode\": \"IM\"\n },\n {\n \"name\": \"Jigawa\",\n \"shortCode\": \"JI\"\n },\n {\n \"name\": \"Kaduna\",\n \"shortCode\": \"KD\"\n },\n {\n \"name\": \"Kano\",\n \"shortCode\": \"KN\"\n },\n {\n \"name\": \"Katsina\",\n \"shortCode\": \"KT\"\n },\n {\n \"name\": \"Kebbi\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kogi\",\n \"shortCode\": \"KO\"\n },\n {\n \"name\": \"Kwara\",\n \"shortCode\": \"KW\"\n },\n {\n \"name\": \"Lagos\",\n \"shortCode\": \"LA\"\n },\n {\n \"name\": \"Nassarawa\",\n \"shortCode\": \"NA\"\n },\n {\n \"name\": \"Niger\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Ogun\",\n \"shortCode\": \"OG\"\n },\n {\n \"name\": \"Ondo\",\n \"shortCode\": \"ON\"\n },\n {\n \"name\": \"Osun\",\n \"shortCode\": \"OS\"\n },\n {\n \"name\": \"Oyo\",\n \"shortCode\": \"OY\"\n },\n {\n \"name\": \"Plateau\",\n \"shortCode\": \"PL\"\n },\n {\n \"name\": \"Rivers\",\n \"shortCode\": \"RI\"\n },\n {\n \"name\": \"Sokoto\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Taraba\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Yobe\",\n \"shortCode\": \"YO\"\n },\n {\n \"name\": \"Zamfara\",\n \"shortCode\": \"ZA\"\n }\n ]\n },\n // {\n // \"countryName\": \"Niue\",\n // \"countryShortCode\": \"NU\",\n // \"regions\": [\n // {\n // \"name\": \"Niue\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Norfolk Island\",\n // \"countryShortCode\": \"NF\",\n // \"regions\": [\n // {\n // \"name\": \"Norfolk Island\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Northern Mariana Islands\",\n // \"countryShortCode\": \"MP\",\n // \"regions\": [\n // {\n // \"name\": \"Northern Islands\"\n // },\n // {\n // \"name\": \"Rota\"\n // },\n // {\n // \"name\": \"Saipan\"\n // },\n // {\n // \"name\": \"Tinian\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Norway\",\n \"countryShortCode\": \"NO\",\n \"regions\": [\n {\n \"name\": \"Akershus\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Aust-Agder\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Buskerud\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Finnmark\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Hedmark\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Hordaland\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Møre og Romsdal\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Nordland\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Nord-Trøndelag\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Oppland\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Oslo\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Rogaland\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Sogn og Fjordane\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Sør-Trøndelag\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Telemark\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Troms\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Vest-Agder\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Vestfold\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Østfold\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Jan Mayen\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Svalbard\",\n \"shortCode\": \"21\"\n }\n ]\n },\n {\n \"countryName\": \"Oman\",\n \"countryShortCode\": \"OM\",\n \"regions\": [\n {\n \"name\": \"Ad Dakhiliyah\",\n \"shortCode\": \"DA\"\n },\n {\n \"name\": \"Al Buraymi\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Al Wusta\",\n \"shortCode\": \"WU\"\n },\n {\n \"name\": \"Az Zahirah\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Janub al Batinah\",\n \"shortCode\": \"BS\"\n },\n {\n \"name\": \"Janub ash Sharqiyah\",\n \"shortCode\": \"SS\"\n },\n {\n \"name\": \"Masqat\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Musandam\",\n \"shortCode\": \"MU\"\n },\n {\n \"name\": \"Shamal al Batinah\",\n \"shortCode\": \"BJ\"\n },\n {\n \"name\": \"Shamal ash Sharqiyah\",\n \"shortCode\": \"SJ\"\n },\n {\n \"name\": \"Zufar\",\n \"shortCode\": \"ZU\"\n }\n ]\n },\n // {\n // \"countryName\": \"Pakistan\",\n // \"countryShortCode\": \"PK\",\n // \"regions\": [\n // {\n // \"name\": \"Āzād Kashmīr\",\n // \"shortCode\": \"JK\"\n // },\n // {\n // \"name\": \"Balōchistān\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Gilgit-Baltistān\",\n // \"shortCode\": \"GB\"\n // },\n // {\n // \"name\": \"Islāmābād\",\n // \"shortCode\": \"IS\"\n // },\n // {\n // \"name\": \"Khaībar Pakhtūnkhwās\",\n // \"shortCode\": \"KP\"\n // },\n // {\n // \"name\": \"Punjāb\",\n // \"shortCode\": \"PB\"\n // },\n // {\n // \"name\": \"Sindh\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Federally Administered Tribal Areas\",\n // \"shortCode\": \"TA\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Palau\",\n // \"countryShortCode\": \"PW\",\n // \"regions\": [\n // {\n // \"name\": \"Aimeliik\",\n // \"shortCode\": \"002\"\n // },\n // {\n // \"name\": \"Airai\",\n // \"shortCode\": \"004\"\n // },\n // {\n // \"name\": \"Angaur\",\n // \"shortCode\": \"010\"\n // },\n // {\n // \"name\": \"Hatobohei\",\n // \"shortCode\": \"050\"\n // },\n // {\n // \"name\": \"Kayangel\",\n // \"shortCode\": \"100\"\n // },\n // {\n // \"name\": \"Koror\",\n // \"shortCode\": \"150\"\n // },\n // {\n // \"name\": \"Melekeok\",\n // \"shortCode\": \"212\"\n // },\n // {\n // \"name\": \"Ngaraard\",\n // \"shortCode\": \"214\"\n // },\n // {\n // \"name\": \"Ngarchelong\",\n // \"shortCode\": \"218\"\n // },\n // {\n // \"name\": \"Ngardmau\",\n // \"shortCode\": \"222\"\n // },\n // {\n // \"name\": \"Ngatpang\",\n // \"shortCode\": \"224\"\n // },\n // {\n // \"name\": \"Ngchesar\",\n // \"shortCode\": \"226\"\n // },\n // {\n // \"name\": \"Ngeremlengui\",\n // \"shortCode\": \"227\"\n // },\n // {\n // \"name\": \"Ngiwal\",\n // \"shortCode\": \"228\"\n // },\n // {\n // \"name\": \"Peleliu\",\n // \"shortCode\": \"350\"\n // },\n // {\n // \"name\": \"Sonsoral\",\n // \"shortCode\": \"370\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Palestine, State of\",\n // \"countryShortCode\": \"PS\",\n // \"regions\": [\n // {\n // \"name\": \"Ak Khalīl\",\n // \"shortCode\": \"HBN\"\n // },\n // {\n // \"name\": \"Al Quds\",\n // \"shortCode\": \"JEM\"\n // },\n // {\n // \"name\": \"Arīḩā wal Aghwār\",\n // \"shortCode\": \"JRH\"\n // },\n // {\n // \"name\": \"Bayt Laḩm\",\n // \"shortCode\": \"BTH\"\n // },\n // {\n // \"name\": \"Dayr al Balaḩ\",\n // \"shortCode\": \"DEB\"\n // },\n // {\n // \"name\": \"Ghazzah\",\n // \"shortCode\": \"GZA\"\n // },\n // {\n // \"name\": \"Janīn\",\n // \"shortCode\": \"JEN\"\n // },\n // {\n // \"name\": \"Khān Yūnis\",\n // \"shortCode\": \"KYS\"\n // },\n // {\n // \"name\": \"Nāblus\",\n // \"shortCode\": \"NBS\"\n // },\n // {\n // \"name\": \"Qalqīyah\",\n // \"shortCode\": \"QQA\"\n // },\n // {\n // \"name\": \"Rafaḩ\",\n // \"shortCode\": \"RFH\"\n // },\n // {\n // \"name\": \"Rām Allāh wal Bīrah\",\n // \"shortCode\": \"RBH\"\n // },\n // {\n // \"name\": \"Salfīt\",\n // \"shortCode\": \"SLT\"\n // },\n // {\n // \"name\": \"Shamāl Ghazzah\",\n // \"shortCode\": \"NGZ\"\n // },\n // {\n // \"name\": \"Ţūbās\",\n // \"shortCode\": \"TBS\"\n // },\n // {\n // \"name\": \"Ţūlkarm\",\n // \"shortCode\": \"TKM\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Panama\",\n \"countryShortCode\": \"PA\",\n \"regions\": [\n {\n \"name\": \"Bocas del Toro\",\n \"shortCode\": \"1\"\n },\n {\n \"name\": \"Chiriquí\",\n \"shortCode\": \"4\"\n },\n {\n \"name\": \"Coclé\",\n \"shortCode\": \"2\"\n },\n {\n \"name\": \"Colón\",\n \"shortCode\": \"3\"\n },\n {\n \"name\": \"Darién\",\n \"shortCode\": \"5\"\n },\n {\n \"name\": \"Emberá\",\n \"shortCode\": \"EM\"\n },\n {\n \"name\": \"Herrera\",\n \"shortCode\": \"6\"\n },\n {\n \"name\": \"Kuna Yala\",\n \"shortCode\": \"KY\"\n },\n {\n \"name\": \"Los Santos\",\n \"shortCode\": \"7\"\n },\n {\n \"name\": \"Ngäbe-Buglé\",\n \"shortCode\": \"NB\"\n },\n {\n \"name\": \"Panamá\",\n \"shortCode\": \"8\"\n },\n {\n \"name\": \"Panamá Oeste\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Veraguas\",\n \"shortCode\": \"9\"\n }\n ]\n },\n // {\n // \"countryName\": \"Papua New Guinea\",\n // \"countryShortCode\": \"PG\",\n // \"regions\": [\n // {\n // \"name\": \"Bougainville\",\n // \"shortCode\": \"NSB\"\n // },\n // {\n // \"name\": \"Central\",\n // \"shortCode\": \"CPM\"\n // },\n // {\n // \"name\": \"Chimbu\",\n // \"shortCode\": \"CPK\"\n // },\n // {\n // \"name\": \"East New Britain\",\n // \"shortCode\": \"EBR\"\n // },\n // {\n // \"name\": \"East Sepik\",\n // \"shortCode\": \"ESW\"\n // },\n // {\n // \"name\": \"Eastern Highlands\",\n // \"shortCode\": \"EHG\"\n // },\n // {\n // \"name\": \"Enga\",\n // \"shortCode\": \"EPW\"\n // },\n // {\n // \"name\": \"Gulf\",\n // \"shortCode\": \"GPK\"\n // },\n // {\n // \"name\": \"Hela\",\n // \"shortCode\": \"HLA\"\n // },\n // {\n // \"name\": \"Jiwaka\",\n // \"shortCode\": \"JWK\"\n // },\n // {\n // \"name\": \"Madang\",\n // \"shortCode\": \"MOM\"\n // },\n // {\n // \"name\": \"Manus\",\n // \"shortCode\": \"MRL\"\n // },\n // {\n // \"name\": \"Milne Bay\",\n // \"shortCode\": \"MBA\"\n // },\n // {\n // \"name\": \"Morobe\",\n // \"shortCode\": \"MPL\"\n // },\n // {\n // \"name\": \"Port Moresby\",\n // \"shortCode\": \"NCD\"\n // },\n // {\n // \"name\": \"New Ireland\",\n // \"shortCode\": \"NIK\"\n // },\n // {\n // \"name\": \"Northern\",\n // \"shortCode\": \"NPP\"\n // },\n // {\n // \"name\": \"Southern Highlands\",\n // \"shortCode\": \"SHM\"\n // },\n // {\n // \"name\": \"West New Britain\",\n // \"shortCode\": \"WBK\"\n // },\n // {\n // \"name\": \"West Sepik\",\n // \"shortCode\": \"SAN\"\n // },\n // {\n // \"name\": \"Western\",\n // \"shortCode\": \"WPD\"\n // },\n // {\n // \"name\": \"Western Highlands\",\n // \"shortCode\": \"WHM\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Paraguay\",\n // \"countryShortCode\": \"PY\",\n // \"regions\": [\n // {\n // \"name\": \"Alto Paraguay\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Alto Parana\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Amambay\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Asuncion\",\n // \"shortCode\": \"ASU\"\n // },\n // {\n // \"name\": \"Caaguazu\",\n // \"shortCode\": \"5\"\n // },\n // {\n // \"name\": \"Caazapa\",\n // \"shortCode\": \"6\"\n // },\n // {\n // \"name\": \"Canindeyu\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Central\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Concepcion\",\n // \"shortCode\": \"1\"\n // },\n // {\n // \"name\": \"Cordillera\",\n // \"shortCode\": \"3\"\n // },\n // {\n // \"name\": \"Boqueron\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Guaira\",\n // \"shortCode\": \"4\"\n // },\n // {\n // \"name\": \"Itapua\",\n // \"shortCode\": \"7\"\n // },\n // {\n // \"name\": \"Misiones\",\n // \"shortCode\": \"8\"\n // },\n // {\n // \"name\": \"Neembucu\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Paraguari\",\n // \"shortCode\": \"9\"\n // },\n // {\n // \"name\": \"Presidente Hayes\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"San Pedro\",\n // \"shortCode\": \"2\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Peru\",\n \"countryShortCode\": \"PE\",\n \"regions\": [\n {\n \"name\": \"Amazonas\",\n \"shortCode\": \"AMA\"\n },\n {\n \"name\": \"Ancash\",\n \"shortCode\": \"ANC\"\n },\n {\n \"name\": \"Apurimac\",\n \"shortCode\": \"APU\"\n },\n {\n \"name\": \"Arequipa\",\n \"shortCode\": \"ARE\"\n },\n {\n \"name\": \"Ayacucho\",\n \"shortCode\": \"AYA\"\n },\n {\n \"name\": \"Cajamarca\",\n \"shortCode\": \"CAJ\"\n },\n {\n \"name\": \"Callao\",\n \"shortCode\": \"CAL\"\n },\n {\n \"name\": \"Cusco\",\n \"shortCode\": \"CUS\"\n },\n {\n \"name\": \"Huancavelica\",\n \"shortCode\": \"HUV\"\n },\n {\n \"name\": \"Huanuco\",\n \"shortCode\": \"HUC\"\n },\n {\n \"name\": \"Ica\",\n \"shortCode\": \"ICA\"\n },\n {\n \"name\": \"Junin\",\n \"shortCode\": \"JUN\"\n },\n {\n \"name\": \"La Libertad\",\n \"shortCode\": \"LAL\"\n },\n {\n \"name\": \"Lambayeque\",\n \"shortCode\": \"LAM\"\n },\n {\n \"name\": \"Lima\",\n \"shortCode\": \"LIM\"\n },\n {\n \"name\": \"Loreto\",\n \"shortCode\": \"LOR\"\n },\n {\n \"name\": \"Madre de Dios\",\n \"shortCode\": \"MDD\"\n },\n {\n \"name\": \"Moquegua\",\n \"shortCode\": \"MOQ\"\n },\n {\n \"name\": \"Municipalidad Metropolitana de Lima\",\n \"shortCode\": \"LMA\"\n },\n {\n \"name\": \"Pasco\",\n \"shortCode\": \"PAS\"\n },\n {\n \"name\": \"Piura\",\n \"shortCode\": \"PIU\"\n },\n {\n \"name\": \"Puno\",\n \"shortCode\": \"PUN\"\n },\n {\n \"name\": \"San Martin\",\n \"shortCode\": \"SAM\"\n },\n {\n \"name\": \"Tacna\",\n \"shortCode\": \"TAC\"\n },\n {\n \"name\": \"Tumbes\",\n \"shortCode\": \"TUM\"\n },\n {\n \"name\": \"Ucayali\",\n \"shortCode\": \"UCA\"\n }\n ]\n },\n // {\n // \"countryName\": \"Philippines\",\n // \"countryShortCode\": \"PH\",\n // \"regions\": [\n // {\n // \"name\": \"Abra\",\n // \"shortCode\": \"ABR\"\n // },\n // {\n // \"name\": \"Agusan del Norte\",\n // \"shortCode\": \"AGN\"\n // },\n // {\n // \"name\": \"Agusan del Sur\",\n // \"shortCode\": \"AGS\"\n // },\n // {\n // \"name\": \"Aklan\",\n // \"shortCode\": \"AKL\"\n // },\n // {\n // \"name\": \"Albay\",\n // \"shortCode\": \"ALB\"\n // },\n // {\n // \"name\": \"Antique\",\n // \"shortCode\": \"ANT\"\n // },\n // {\n // \"name\": \"Apayao\",\n // \"shortCode\": \"APA\"\n // },\n // {\n // \"name\": \"Aurora\",\n // \"shortCode\": \"AUR\"\n // },\n // {\n // \"name\": \"Basilan\",\n // \"shortCode\": \"BAS\"\n // },\n // {\n // \"name\": \"Bataan\",\n // \"shortCode\": \"BAN\"\n // },\n // {\n // \"name\": \"Batanes\",\n // \"shortCode\": \"BTN\"\n // },\n // {\n // \"name\": \"Batangas\",\n // \"shortCode\": \"BTG\"\n // },\n // {\n // \"name\": \"Benguet\",\n // \"shortCode\": \"BEN\"\n // },\n // {\n // \"name\": \"Biliran\",\n // \"shortCode\": \"BIL\"\n // },\n // {\n // \"name\": \"Bohol\",\n // \"shortCode\": \"BOH\"\n // },\n // {\n // \"name\": \"Bukidnon\",\n // \"shortCode\": \"BUK\"\n // },\n // {\n // \"name\": \"Bulacan\",\n // \"shortCode\": \"BUL\"\n // },\n // {\n // \"name\": \"Cagayan\",\n // \"shortCode\": \"CAG\"\n // },\n // {\n // \"name\": \"Camarines Norte\",\n // \"shortCode\": \"CAN\"\n // },\n // {\n // \"name\": \"Camarines Sur\",\n // \"shortCode\": \"CAS\"\n // },\n // {\n // \"name\": \"Camiguin\",\n // \"shortCode\": \"CAM\"\n // },\n // {\n // \"name\": \"Capiz\",\n // \"shortCode\": \"CAP\"\n // },\n // {\n // \"name\": \"Catanduanes\",\n // \"shortCode\": \"CAT\"\n // },\n // {\n // \"name\": \"Cavite\",\n // \"shortCode\": \"CAV\"\n // },\n // {\n // \"name\": \"Cebu\",\n // \"shortCode\": \"CEB\"\n // },\n // {\n // \"name\": \"Compostela\",\n // \"shortCode\": \"COM\"\n // },\n // {\n // \"name\": \"Cotabato\",\n // \"shortCode\": \"NCO\"\n // },\n // {\n // \"name\": \"Davao del Norte\",\n // \"shortCode\": \"DAV\"\n // },\n // {\n // \"name\": \"Davao del Sur\",\n // \"shortCode\": \"DAS\"\n // },\n // {\n // \"name\": \"Davao Occidental\",\n // \"shortCode\": \"DVO\"\n // },\n // {\n // \"name\": \"Davao Oriental\",\n // \"shortCode\": \"DAO\"\n // },\n // {\n // \"name\": \"Dinagat Islands\",\n // \"shortCode\": \"DIN\"\n // },\n // {\n // \"name\": \"Eastern Samar\",\n // \"shortCode\": \"EAS\"\n // },\n // {\n // \"name\": \"Guimaras\",\n // \"shortCode\": \"GUI\"\n // },\n // {\n // \"name\": \"Ifugao\",\n // \"shortCode\": \"IFU\"\n // },\n // {\n // \"name\": \"Ilocos Norte\",\n // \"shortCode\": \"ILN\"\n // },\n // {\n // \"name\": \"Ilocos Sur\",\n // \"shortCode\": \"ILS\"\n // },\n // {\n // \"name\": \"Iloilo\",\n // \"shortCode\": \"ILI\"\n // },\n // {\n // \"name\": \"Isabela\",\n // \"shortCode\": \"ISA\"\n // },\n // {\n // \"name\": \"Kalinga\",\n // \"shortCode\": \"KAL\"\n // },\n // {\n // \"name\": \"La Union\",\n // \"shortCode\": \"LUN\"\n // },\n // {\n // \"name\": \"Laguna\",\n // \"shortCode\": \"LAG\"\n // },\n // {\n // \"name\": \"Lanao del Norte\",\n // \"shortCode\": \"LAN\"\n // },\n // {\n // \"name\": \"Lanao del Sur\",\n // \"shortCode\": \"LAS\"\n // },\n // {\n // \"name\": \"Leyte\",\n // \"shortCode\": \"LEY\"\n // },\n // {\n // \"name\": \"Maguindanao\",\n // \"shortCode\": \"MAG\"\n // },\n // {\n // \"name\": \"Masbate\",\n // \"shortCode\": \"MAS\"\n // },\n // {\n // \"name\": \"Metro Manila\",\n // \"shortCode\": \"00\"\n // },\n // {\n // \"name\": \"Mindoro Occidental\",\n // \"shortCode\": \"MDC\"\n // },\n // {\n // \"name\": \"Mindoro Oriental\",\n // \"shortCode\": \"MDR\"\n // },\n // {\n // \"name\": \"Misamis Occidental\",\n // \"shortCode\": \"MSC\"\n // },\n // {\n // \"name\": \"Misamis Oriental\",\n // \"shortCode\": \"MSR\"\n // },\n // {\n // \"name\": \"Mountain Province\",\n // \"shortCode\": \"MOU\"\n // },\n // {\n // \"name\": \"Negros Occidental\",\n // \"shortCode\": \"NEC\"\n // },\n // {\n // \"name\": \"Negros Oriental\",\n // \"shortCode\": \"NER\"\n // },\n // {\n // \"name\": \"Northern Samar\",\n // \"shortCode\": \"NSA\"\n // },\n // {\n // \"name\": \"Nueva Ecija\",\n // \"shortCode\": \"NUE\"\n // },\n // {\n // \"name\": \"Nueva Vizcaya\",\n // \"shortCode\": \"NUV\"\n // },\n // {\n // \"name\": \"Palawan\",\n // \"shortCode\": \"PLW\"\n // },\n // {\n // \"name\": \"Pampanga\",\n // \"shortCode\": \"PAM\"\n // },\n // {\n // \"name\": \"Pangasinan\",\n // \"shortCode\": \"PAN\"\n // },\n // {\n // \"name\": \"Quezon\",\n // \"shortCode\": \"QUE\"\n // },\n // {\n // \"name\": \"Quirino\",\n // \"shortCode\": \"QUI\"\n // },\n // {\n // \"name\": \"Rizal\",\n // \"shortCode\": \"RIZ\"\n // },\n // {\n // \"name\": \"Romblon\",\n // \"shortCode\": \"ROM\"\n // },\n // {\n // \"name\": \"Samar\",\n // \"shortCode\": \"WSA\"\n // },\n // {\n // \"name\": \"Sarangani\",\n // \"shortCode\": \"SAR\"\n // },\n // {\n // \"name\": \"Siquijor\",\n // \"shortCode\": \"SIG\"\n // },\n // {\n // \"name\": \"Sorsogon\",\n // \"shortCode\": \"SOR\"\n // },\n // {\n // \"name\": \"Southern Leyte\",\n // \"shortCode\": \"SLE\"\n // },\n // {\n // \"name\": \"Sultan Kudarat\",\n // \"shortCode\": \"AUK\"\n // },\n // {\n // \"name\": \"Sulu\",\n // \"shortCode\": \"SLU\"\n // },\n // {\n // \"name\": \"Surigao del Norte\",\n // \"shortCode\": \"SUN\"\n // },\n // {\n // \"name\": \"Surigao del Sur\",\n // \"shortCode\": \"SUR\"\n // },\n // {\n // \"name\": \"Tarlac\",\n // \"shortCode\": \"TAR\"\n // },\n // {\n // \"name\": \"Tawi-Tawi\",\n // \"shortCode\": \"TAW\"\n // },\n // {\n // \"name\": \"Zambales\",\n // \"shortCode\": \"ZMB\"\n // },\n // {\n // \"name\": \"Zamboanga del Norte\",\n // \"shortCode\": \"ZAN\"\n // },\n // {\n // \"name\": \"Zamboanga del Sur\",\n // \"shortCode\": \"ZAS\"\n // },\n // {\n // \"name\": \"Zamboanga Sibugay\",\n // \"shortCode\": \"ZSI\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Pitcairn\",\n // \"countryShortCode\": \"PN\",\n // \"regions\": [\n // {\n // \"name\": \"Pitcairn Islands\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Poland\",\n \"translationKey\": \"country_name_poland\",\n \"countryShortCode\": \"PL\",\n \"regions\": [\n {\n \"name\": \"Dolnośląskie\",\n \"translationKey\": \"poland_region_name_ds\",\n \"shortCode\": \"DS\"\n },\n {\n \"name\": \"Kujawsko-pomorskie\",\n \"translationKey\": \"poland_region_name_kp\",\n \"shortCode\": \"KP\"\n },\n {\n \"name\": \"Łódzkie\",\n \"translationKey\": \"poland_region_name_ld\",\n \"shortCode\": \"LD\"\n },\n {\n \"name\": \"Lubelskie\",\n \"translationKey\": \"poland_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Lubuskie\",\n \"translationKey\": \"poland_region_name_lb\",\n \"shortCode\": \"LB\"\n },\n {\n \"name\": \"Małopolskie\",\n \"translationKey\": \"poland_region_name_ma\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Mazowieckie\",\n \"translationKey\": \"poland_region_name_mz\",\n \"shortCode\": \"MZ\"\n },\n {\n \"name\": \"Opolskie\",\n \"translationKey\": \"poland_region_name_op\",\n \"shortCode\": \"OP\"\n },\n {\n \"name\": \"Podkarpackie\",\n \"translationKey\": \"poland_region_name_pk\",\n \"shortCode\": \"PK\"\n },\n {\n \"name\": \"Podlaskie\",\n \"translationKey\": \"poland_region_name_pd\",\n \"shortCode\": \"PD\"\n },\n {\n \"name\": \"Pomorskie\",\n \"translationKey\": \"poland_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Śląskie\",\n \"translationKey\": \"poland_region_name_sl\",\n \"shortCode\": \"SL\"\n },\n {\n \"name\": \"Świętokrzyskie\",\n \"translationKey\": \"poland_region_name_sk\",\n \"shortCode\": \"SK\"\n },\n {\n \"name\": \"Warmińsko-mazurskie\",\n \"translationKey\": \"poland_region_name_wn\",\n \"shortCode\": \"WN\"\n },\n {\n \"name\": \"Wielkopolskie\",\n \"translationKey\": \"poland_region_name_wp\",\n \"shortCode\": \"WP\"\n },\n {\n \"name\": \"Zachodniopomorskie\",\n \"translationKey\": \"poland_region_name_zp\",\n \"shortCode\": \"ZP\"\n }\n ]\n },\n {\n \"countryName\": \"Portugal\",\n \"translationKey\": \"country_name_portugal\",\n \"countryShortCode\": \"PT\",\n \"regions\": [\n {\n \"name\": \"Açores\",\n \"translationKey\": \"portugal_region_name_20\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Aveiro\",\n \"translationKey\": \"portugal_region_name_01\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Beja\",\n \"translationKey\": \"portugal_region_name_02\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Braga\",\n \"translationKey\": \"portugal_region_name_03\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Bragança\",\n \"translationKey\": \"portugal_region_name_04\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Castelo Branco\",\n \"translationKey\": \"portugal_region_name_05\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Coimbra\",\n \"translationKey\": \"portugal_region_name_06\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Évora\",\n \"translationKey\": \"portugal_region_name_07\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Faro\",\n \"translationKey\": \"portugal_region_name_08\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Guarda\",\n \"translationKey\": \"portugal_region_name_09\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Leiria\",\n \"translationKey\": \"portugal_region_name_10\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Lisboa\",\n \"translationKey\": \"portugal_region_name_11\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Madeira\",\n \"translationKey\": \"portugal_region_name_30\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Portalegre\",\n \"translationKey\": \"portugal_region_name_12\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Porto\",\n \"translationKey\": \"portugal_region_name_13\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Santarém\",\n \"translationKey\": \"portugal_region_name_14\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Setúbal\",\n \"translationKey\": \"portugal_region_name_15\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Viana do Castelo\",\n \"translationKey\": \"portugal_region_name_16\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Vila Real\",\n \"translationKey\": \"portugal_region_name_17\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Viseu\",\n \"translationKey\": \"portugal_region_name_18\",\n \"shortCode\": \"18\"\n }\n ]\n },\n // {\n // \"countryName\": \"Puerto Rico\",\n // \"translationKey\": \"country_name_puerto_rico\",\n // \"countryShortCode\": \"PR\",\n // \"regions\": [\n // {\n // \"name\": \"Adjuntas\",\n // \"translationKey\": \"puerto_rico_region_name_001\",\n // \"shortCode\": \"001\"\n // },\n // {\n // \"name\": \"Aguada\",\n // \"translationKey\": \"puerto_rico_region_name_003\",\n // \"shortCode\": \"003\"\n // },\n // {\n // \"name\": \"Aguadilla\",\n // \"translationKey\": \"puerto_rico_region_name_005\",\n // \"shortCode\": \"005\"\n // },\n // {\n // \"name\": \"Aguas Buenas\",\n // \"translationKey\": \"puerto_rico_region_name_007\",\n // \"shortCode\": \"007\"\n // },\n // {\n // \"name\": \"Aibonito\",\n // \"translationKey\": \"puerto_rico_region_name_009\",\n // \"shortCode\": \"009\"\n // },\n // {\n // \"name\": \"Anasco\",\n // \"translationKey\": \"puerto_rico_region_name_011\",\n // \"shortCode\": \"011\"\n\n // },\n // {\n // \"name\": \"Arecibo\",\n // \"translationKey\": \"puerto_rico_region_name_013\",\n // \"shortCode\": \"013\"\n // },\n // {\n // \"name\": \"Arroyo\",\n // \"translationKey\": \"puerto_rico_region_name_015\",\n // \"shortCode\": \"015\"\n // },\n // {\n // \"name\": \"Barceloneta\"\n // },\n // {\n // \"name\": \"Barranquitas\"\n // },\n // {\n // \"name\": \"Bayamon\"\n // },\n // {\n // \"name\": \"Cabo Rojo\"\n // },\n // {\n // \"name\": \"Caguas\"\n // },\n // {\n // \"name\": \"Camuy\"\n // },\n // {\n // \"name\": \"Canovanas\"\n // },\n // {\n // \"name\": \"Carolina\"\n // },\n // {\n // \"name\": \"Cat\"\n // },\n // {\n // \"name\": \"Ceiba\"\n // },\n // {\n // \"name\": \"Ciales\"\n // },\n // {\n // \"name\": \"Cidra\"\n // },\n // {\n // \"name\": \"Coamo\"\n // },\n // {\n // \"name\": \"Comerio\"\n // },\n // {\n // \"name\": \"Corozal\"\n // },\n // {\n // \"name\": \"Culebra\"\n // },\n // {\n // \"name\": \"Dorado\"\n // },\n // {\n // \"name\": \"Fajardo\"\n // },\n // {\n // \"name\": \"Florida\"\n // },\n // {\n // \"name\": \"Guanica\"\n // },\n // {\n // \"name\": \"Guayama\"\n // },\n // {\n // \"name\": \"Guayanilla\"\n // },\n // {\n // \"name\": \"Guaynabo\"\n // },\n // {\n // \"name\": \"Gurabo\"\n // },\n // {\n // \"name\": \"Hatillo\"\n // },\n // {\n // \"name\": \"Hormigueros\"\n // },\n // {\n // \"name\": \"Humacao\"\n // },\n // {\n // \"name\": \"Isabe\"\n // },\n // {\n // \"name\": \"Juana Diaz\"\n // },\n // {\n // \"name\": \"Juncos\"\n // },\n // {\n // \"name\": \"Lajas\"\n // },\n // {\n // \"name\": \"Lares\"\n // },\n // {\n // \"name\": \"Las Marias\"\n // },\n // {\n // \"name\": \"Las oiza\"\n // },\n // {\n // \"name\": \"Luquillo\"\n // },\n // {\n // \"name\": \"Manati\"\n // },\n // {\n // \"name\": \"Maricao\"\n // },\n // {\n // \"name\": \"Maunabo\"\n // },\n // {\n // \"name\": \"Mayaguez\"\n // },\n // {\n // \"name\": \"Moca\"\n // },\n // {\n // \"name\": \"Morovis\"\n // },\n // {\n // \"name\": \"Naguabo\"\n // },\n // {\n // \"name\": \"Naranjito\"\n // },\n // {\n // \"name\": \"Orocovis\"\n // },\n // {\n // \"name\": \"Patillas\"\n // },\n // {\n // \"name\": \"Penuelas\"\n // },\n // {\n // \"name\": \"Ponce\"\n // },\n // {\n // \"name\": \"Quebradillas\"\n // },\n // {\n // \"name\": \"Rincon\"\n // },\n // {\n // \"name\": \"Rio Grande\"\n // },\n // {\n // \"name\": \"Sabana linas\"\n // },\n // {\n // \"name\": \"San German\"\n // },\n // {\n // \"name\": \"San Juan\"\n // },\n // {\n // \"name\": \"San Lorenzo\"\n // },\n // {\n // \"name\": \"San Sebastian\"\n // },\n // {\n // \"name\": \"Santa Isabel\"\n // },\n // {\n // \"name\": \"Toa Alta\"\n // },\n // {\n // \"name\": \"Toa Baja\"\n // },\n // {\n // \"name\": \"Trujillo Alto\"\n // },\n // {\n // \"name\": \"Utuado\"\n // },\n // {\n // \"name\": \"Vega Alta\"\n // },\n // {\n // \"name\": \"Vega ues\"\n // },\n // {\n // \"name\": \"Villalba\"\n // },\n // {\n // \"name\": \"Yabucoa\",\n // \"translationKey\": \"puerto_rico_region_name_151\",\n // \"shortCode\": \"151\"\n // },\n // {\n // \"name\": \"Yauco\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Qatar\",\n \"countryShortCode\": \"QA\",\n \"regions\": [\n {\n \"name\": \"Ad Dawḩah\",\n \"shortCode\": \"DA\"\n },\n {\n \"name\": \"Al Khawr wa adh Dhakhīrah\",\n \"shortCode\": \"KH\"\n },\n {\n \"name\": \"Al Wakrah\",\n \"shortCode\": \"WA\"\n },\n {\n \"name\": \"Ar Rayyān\",\n \"shortCode\": \"RA\"\n },\n {\n \"name\": \"Ash Shamāl\",\n \"shortCode\": \"MS\"\n },\n {\n \"name\": \"Az̧ Za̧`āyin\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Umm Şalāl\",\n \"shortCode\": \"US\"\n }\n ]\n },\n // {\n // \"countryName\": \"Réunion\",\n // \"countryShortCode\": \"RE\",\n // \"regions\": [\n // {\n // \"name\": \"Réunion\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Romania\",\n \"translationKey\": \"country_name_romania\",\n \"countryShortCode\": \"RO\",\n \"regions\": [\n {\n \"name\": \"Alba\",\n \"translationKey\": \"romania_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Arad\",\n \"translationKey\": \"romania_region_name_ar\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"Arges\",\n \"translationKey\": \"romania_region_name_ag\",\n \"shortCode\": \"AG\"\n },\n {\n \"name\": \"Bacau\",\n \"translationKey\": \"romania_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Bihor\",\n \"translationKey\": \"romania_region_name_bh\",\n \"shortCode\": \"BH\"\n },\n {\n \"name\": \"Bistrita-Nasaud\",\n \"translationKey\": \"romania_region_name_bn\",\n \"shortCode\": \"BN\"\n },\n {\n \"name\": \"Botosani\",\n \"translationKey\": \"romania_region_name_bt\",\n \"shortCode\": \"BT\"\n },\n {\n \"name\": \"Braila\",\n \"translationKey\": \"romania_region_name_br\",\n \"shortCode\": \"BR\"\n },\n {\n \"name\": \"Brasov\",\n \"translationKey\": \"romania_region_name_bv\",\n \"shortCode\": \"BV\"\n },\n {\n \"name\": \"Bucuresti\",\n \"translationKey\": \"romania_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Buzau\",\n \"translationKey\": \"romania_region_name_bz\",\n \"shortCode\": \"BZ\"\n },\n {\n \"name\": \"Calarasi\",\n \"translationKey\": \"romania_region_name_cl\",\n \"shortCode\": \"CL\"\n },\n {\n \"name\": \"Caras-Severin\",\n \"translationKey\": \"romania_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Cluj\",\n \"translationKey\": \"romania_region_name_cj\",\n \"shortCode\": \"CJ\"\n },\n {\n \"name\": \"Constanta\",\n \"translationKey\": \"romania_region_name_ct\",\n \"shortCode\": \"CT\"\n },\n {\n \"name\": \"Covasna\",\n \"translationKey\": \"romania_region_name_cv\",\n \"shortCode\": \"CV\"\n },\n {\n \"name\": \"Dambovita\",\n \"translationKey\": \"romania_region_name_db\",\n \"shortCode\": \"DB\"\n },\n {\n \"name\": \"Dolj\",\n \"translationKey\": \"romania_region_name_dj\",\n \"shortCode\": \"DJ\"\n },\n {\n \"name\": \"Galati\",\n \"translationKey\": \"romania_region_name_gl\",\n \"shortCode\": \"GL\"\n },\n {\n \"name\": \"Giurgiu\",\n \"translationKey\": \"romania_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Gorj\",\n \"translationKey\": \"romania_region_name_gj\",\n \"shortCode\": \"GJ\"\n },\n {\n \"name\": \"Harghita\",\n \"translationKey\": \"romania_region_name_hr\",\n \"shortCode\": \"HR\"\n },\n {\n \"name\": \"Hunedoara\",\n \"translationKey\": \"romania_region_name_hd\",\n \"shortCode\": \"HD\"\n },\n {\n \"name\": \"Ialomita\",\n \"translationKey\": \"romania_region_name_il\",\n \"shortCode\": \"IL\"\n },\n {\n \"name\": \"Iasi\",\n \"translationKey\": \"romania_region_name_is\",\n \"shortCode\": \"IS\"\n },\n {\n \"name\": \"Maramures\",\n \"translationKey\": \"romania_region_name_mm\",\n \"shortCode\": \"MM\"\n },\n {\n \"name\": \"Mehedinti\",\n \"translationKey\": \"romania_region_name_mh\",\n \"shortCode\": \"MH\"\n },\n {\n \"name\": \"Mures\",\n \"translationKey\": \"romania_region_name_ms\",\n \"shortCode\": \"MS\"\n },\n {\n \"name\": \"Neamt\",\n \"translationKey\": \"romania_region_name_nt\",\n \"shortCode\": \"NT\"\n },\n {\n \"name\": \"Olt\",\n \"translationKey\": \"romania_region_name_ot\",\n \"shortCode\": \"OT\"\n },\n {\n \"name\": \"Prahova\",\n \"translationKey\": \"romania_region_name_ph\",\n \"shortCode\": \"PH\"\n },\n {\n \"name\": \"Salaj\",\n \"translationKey\": \"romania_region_name_sj\",\n \"shortCode\": \"SJ\"\n },\n {\n \"name\": \"Satu Mare\",\n \"translationKey\": \"romania_region_name_sm\",\n \"shortCode\": \"SM\"\n },\n {\n \"name\": \"Sibiu\",\n \"translationKey\": \"romania_region_name_sb\",\n \"shortCode\": \"SB\"\n },\n {\n \"name\": \"Suceava\",\n \"translationKey\": \"romania_region_name_sv\",\n \"shortCode\": \"SV\"\n },\n {\n \"name\": \"Teleorman\",\n \"translationKey\": \"romania_region_name_tr\",\n \"shortCode\": \"TR\"\n },\n {\n \"name\": \"Timis\",\n \"translationKey\": \"romania_region_name_tm\",\n \"shortCode\": \"TM\"\n },\n {\n \"name\": \"Tulcea\",\n \"translationKey\": \"romania_region_name_tl\",\n \"shortCode\": \"TL\"\n },\n {\n \"name\": \"Valcea\",\n \"translationKey\": \"romania_region_name_vl\",\n \"shortCode\": \"VL\"\n },\n {\n \"name\": \"Vaslui\",\n \"translationKey\": \"romania_region_name_vs\",\n \"shortCode\": \"VS\"\n },\n {\n \"name\": \"Vrancea\",\n \"translationKey\": \"romania_region_name_vn\",\n \"shortCode\": \"VN\"\n }\n ]\n },\n {\n \"countryName\": \"Russian Federation\",\n \"countryShortCode\": \"RU\",\n \"regions\": [\n {\n \"name\": \"Republic of Adygea\",\n \"shortCode\": \"AD\"\n },\n {\n \"name\": \"Republic of Altai (Gorno-Altaysk)\",\n \"shortCode\": \"AL\"\n },\n {\n \"name\": \"Altai Krai\",\n \"shortCode\": \"ALT\"\n },\n {\n \"name\": \"Amur Oblast\",\n \"shortCode\": \"AMU\"\n },\n {\n \"name\": \"Arkhangelsk Oblast\",\n \"shortCode\": \"ARK\"\n },\n {\n \"name\": \"Astrakhan Oblast\",\n \"shortCode\": \"AST\"\n },\n {\n \"name\": \"Republic of Bashkortostan\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Belgorod Oblast\",\n \"shortCode\": \"BEL\"\n },\n {\n \"name\": \"Bryansk Oblast\",\n \"shortCode\": \"BRY\"\n },\n {\n \"name\": \"Republic of Buryatia\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Chechen Republic\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Chelyabinsk Oblast\",\n \"shortCode\": \"CHE\"\n },\n {\n \"name\": \"Chukotka Autonomous Okrug\",\n \"shortCode\": \"CHU\"\n },\n {\n \"name\": \"Chuvash Republic\",\n \"shortCode\": \"CU\"\n },\n {\n \"name\": \"Republic of Dagestan\",\n \"shortCode\": \"DA\"\n },\n {\n \"name\": \"Republic of Ingushetia\",\n \"shortCode\": \"IN\"\n },\n {\n \"name\": \"Irkutsk Oblast\",\n \"shortCode\": \"IRK\"\n },\n {\n \"name\": \"Ivanovo Oblast\",\n \"shortCode\": \"IVA\"\n },\n {\n \"name\": \"Jewish Autonomous Oblast\",\n \"shortCode\": \"JEW\"\n },\n {\n \"name\": \"Kabardino-Balkar Republic\",\n \"shortCode\": \"KB\"\n },\n {\n \"name\": \"Kaliningrad Oblast\",\n \"shortCode\": \"KLN\"\n },\n {\n \"name\": \"Republic of Kalmykia\",\n \"shortCode\": \"KL\"\n },\n {\n \"name\": \"Kaluga Oblast\",\n \"shortCode\": \"KLU\"\n },\n {\n \"name\": \"Kamchatka Krai\",\n \"shortCode\": \"KAM\"\n },\n {\n \"name\": \"Karachay-Cherkess Republic\",\n \"shortCode\": \"KC\"\n },\n {\n \"name\": \"Republic of Karelia\",\n \"shortCode\": \"KR\"\n },\n {\n \"name\": \"Khabarovsk Krai\",\n \"shortCode\": \"KHA\"\n },\n {\n \"name\": \"Republic of Khakassia\",\n \"shortCode\": \"KK\"\n },\n {\n \"name\": \"Khanty-Mansi Autonomous Okrug - Yugra\",\n \"shortCode\": \"KHM\"\n },\n {\n \"name\": \"Kemerovo Oblast\",\n \"shortCode\": \"KEM\"\n },\n {\n \"name\": \"Kirov Oblast\",\n \"shortCode\": \"KIR\"\n },\n {\n \"name\": \"Komi Republic\",\n \"shortCode\": \"KO\"\n },\n {\n \"name\": \"Kostroma Oblast\",\n \"shortCode\": \"KOS\"\n },\n {\n \"name\": \"Krasnodar Krai\",\n \"shortCode\": \"KDA\"\n },\n {\n \"name\": \"Krasnoyarsk Krai\",\n \"shortCode\": \"KYA\"\n },\n {\n \"name\": \"Kurgan Oblast\",\n \"shortCode\": \"KGN\"\n },\n {\n \"name\": \"Kursk Oblast\",\n \"shortCode\": \"KRS\"\n },\n {\n \"name\": \"Leningrad Oblast\",\n \"shortCode\": \"LEN\"\n },\n {\n \"name\": \"Lipetsk Oblast\",\n \"shortCode\": \"LIP\"\n },\n {\n \"name\": \"Magadan Oblast\",\n \"shortCode\": \"MAG\"\n },\n {\n \"name\": \"Mari El Republic\",\n \"shortCode\": \"ME\"\n },\n {\n \"name\": \"Republic of Mordovia\",\n \"shortCode\": \"MO\"\n },\n {\n \"name\": \"Moscow Oblast\",\n \"shortCode\": \"MOS\"\n },\n {\n \"name\": \"Moscow\",\n \"shortCode\": \"MOW\"\n },\n {\n \"name\": \"Murmansk Oblast\",\n \"shortCode\": \"MU\"\n },\n {\n \"name\": \"Nenets Autonomous Okrug\",\n \"shortCode\": \"NEN\"\n },\n {\n \"name\": \"Nizhny Novgorod Oblast\",\n \"shortCode\": \"NIZ\"\n },\n {\n \"name\": \"Novgorod Oblast\",\n \"shortCode\": \"NGR\"\n },\n {\n \"name\": \"Novosibirsk Oblast\",\n \"shortCode\": \"NVS\"\n },\n {\n \"name\": \"Omsk Oblast\",\n \"shortCode\": \"OMS\"\n },\n {\n \"name\": \"Orenburg Oblast\",\n \"shortCode\": \"ORE\"\n },\n {\n \"name\": \"Oryol Oblast\",\n \"shortCode\": \"ORL\"\n },\n {\n \"name\": \"Penza Oblast\",\n \"shortCode\": \"PNZ\"\n },\n {\n \"name\": \"Perm Krai\",\n \"shortCode\": \"PER\"\n },\n {\n \"name\": \"Primorsky Krai\",\n \"shortCode\": \"PRI\"\n },\n {\n \"name\": \"Pskov Oblast\",\n \"shortCode\": \"PSK\"\n },\n {\n \"name\": \"Rostov Oblast\",\n \"shortCode\": \"ROS\"\n },\n {\n \"name\": \"Ryazan Oblast\",\n \"shortCode\": \"RYA\"\n },\n {\n \"name\": \"Saint Petersburg\",\n \"shortCode\": \"SPE\"\n },\n {\n \"name\": \"Sakha (Yakutia) Republic\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Sakhalin Oblast\",\n \"shortCode\": \"SAK\"\n },\n {\n \"name\": \"Samara Oblast\",\n \"shortCode\": \"SAM\"\n },\n {\n \"name\": \"Saratov Oblast\",\n \"shortCode\": \"SAR\"\n },\n {\n \"name\": \"Republic of North Ossetia-Alania\",\n \"shortCode\": \"NOA\"\n },\n {\n \"name\": \"Smolensk Oblast\",\n \"shortCode\": \"SMO\"\n },\n {\n \"name\": \"Stavropol Krai\",\n \"shortCode\": \"STA\"\n },\n {\n \"name\": \"Sverdlovsk Oblast\",\n \"shortCode\": \"SVE\"\n },\n {\n \"name\": \"Tambov Oblast\",\n \"shortCode\": \"TAM\"\n },\n {\n \"name\": \"Republic of Tatarstan\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Tomsk Oblast\",\n \"shortCode\": \"TOM\"\n },\n {\n \"name\": \"Tuva Republic\",\n \"shortCode\": \"TU\"\n },\n {\n \"name\": \"Tula Oblast\",\n \"shortCode\": \"TUL\"\n },\n {\n \"name\": \"Tver Oblast\",\n \"shortCode\": \"TVE\"\n },\n {\n \"name\": \"Tyumen Oblast\",\n \"shortCode\": \"TYU\"\n },\n {\n \"name\": \"Udmurt Republic\",\n \"shortCode\": \"UD\"\n },\n {\n \"name\": \"Ulyanovsk Oblast\",\n \"shortCode\": \"ULY\"\n },\n {\n \"name\": \"Vladimir Oblast\",\n \"shortCode\": \"VLA\"\n },\n {\n \"name\": \"Volgograd Oblast\",\n \"shortCode\": \"VGG\"\n },\n {\n \"name\": \"Vologda Oblast\",\n \"shortCode\": \"VLG\"\n },\n {\n \"name\": \"Voronezh Oblast\",\n \"shortCode\": \"VOR\"\n },\n {\n \"name\": \"Yamalo-Nenets Autonomous Okrug\",\n \"shortCode\": \"YAN\"\n },\n {\n \"name\": \"Yaroslavl Oblast\",\n \"shortCode\": \"YAR\"\n },\n {\n \"name\": \"Zabaykalsky Krai\",\n \"shortCode\": \"ZAB\"\n }\n ]\n },\n // {\n // \"countryName\": \"Rwanda\",\n // \"countryShortCode\": \"RW\",\n // \"regions\": [\n // {\n // \"name\": \"Kigali\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Eastern\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Northern\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Western\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Southern\",\n // \"shortCode\": \"05\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Barthélemy\",\n // \"countryShortCode\": \"BL\",\n // \"regions\": [\n // {\n // \"name\": \"Au Vent\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Sous le Vent\",\n // \"shortCode\": \"01\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Helena, Ascension and Tristan da Cunha\",\n // \"countryShortCode\": \"SH\",\n // \"regions\": [\n // {\n // \"name\": \"Ascension\",\n // \"shortCode\": \"AC\"\n // },\n // {\n // \"name\": \"Saint Helena\",\n // \"shortCode\": \"HL\"\n // },\n // {\n // \"name\": \"Tristan da Cunha\",\n // \"shortCode\": \"TA\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Kitts and Nevis\",\n // \"countryShortCode\": \"KN\",\n // \"regions\": [\n // {\n // \"name\": \"Saint Kitts\",\n // \"shortCode\": \"K\"\n // },\n // {\n // \"name\": \"Nevis\",\n // \"shortCode\": \"N\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Lucia\",\n // \"countryShortCode\": \"LC\",\n // \"regions\": [\n // {\n // \"name\": \"Anse-la-Raye\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Canaries\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Castries\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Choiseul\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Dennery\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Gros Islet\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Laborie\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Micoud\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Soufriere\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Vieux Fort\",\n // \"shortCode\": \"11\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Martin\",\n // \"countryShortCode\": \"MF\",\n // \"regions\": [\n // {\n // \"name\": \"Saint Martin\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Pierre and Miquelon\",\n // \"countryShortCode\": \"PM\",\n // \"regions\": [\n // {\n // \"name\": \"Miquelon\"\n // },\n // {\n // \"name\": \"Saint Pierre\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Saint Vincent and the Grenadines\",\n // \"countryShortCode\": \"VC\",\n // \"regions\": [\n // {\n // \"name\": \"Charlotte\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Grenadines\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Saint Andrew\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Saint David\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Saint George\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Saint Patrick\",\n // \"shortCode\": \"05\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Samoa\",\n // \"countryShortCode\": \"WS\",\n // \"regions\": [\n // {\n // \"name\": \"A'ana\",\n // \"shortCode\": \"AA\"\n // },\n // {\n // \"name\": \"Aiga-i-le-Tai\",\n // \"shortCode\": \"AL\"\n // },\n // {\n // \"name\": \"Atua\",\n // \"shortCode\": \"AT\"\n // },\n // {\n // \"name\": \"Fa'asaleleaga\",\n // \"shortCode\": \"FA\"\n // },\n // {\n // \"name\": \"Gaga'emauga\",\n // \"shortCode\": \"GE\"\n // },\n // {\n // \"name\": \"Gagaifomauga\",\n // \"shortCode\": \"GI\"\n // },\n // {\n // \"name\": \"Palauli\",\n // \"shortCode\": \"PA\"\n // },\n // {\n // \"name\": \"Satupa'itea\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Tuamasaga\",\n // \"shortCode\": \"TU\"\n // },\n // {\n // \"name\": \"Va'a-o-Fonoti\",\n // \"shortCode\": \"VF\"\n // },\n // {\n // \"name\": \"Vaisigano\",\n // \"shortCode\": \"VS\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"San Marino\",\n // \"countryShortCode\": \"SM\",\n // \"regions\": [\n // {\n // \"name\": \"Acquaviva\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Borgo Maggiore\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Chiesanuova\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Domagnano\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Faetano\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Fiorentino\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Montegiardino\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"San Marino\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Serravalle\",\n // \"shortCode\": \"09\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Sao Tome and Principe\",\n // \"countryShortCode\": \"ST\",\n // \"regions\": [\n // {\n // \"name\": \"Principe\",\n // \"shortCode\": \"P\"\n // },\n // {\n // \"name\": \"Sao Tome\",\n // \"shortCode\": \"S\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Saudi Arabia\",\n \"countryShortCode\": \"SA\",\n \"regions\": [\n {\n \"name\": \"'Asir\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Al Bahah\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Al Hudud ash Shamaliyah\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Al Jawf\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Al Madinah al Munawwarah\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Al Qasim\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Ar Riyad\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Ash Sharqiyah\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Ha'il\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Jazan\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Makkah al Mukarramah\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Najran\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Tabuk\",\n \"shortCode\": \"07\"\n }\n ]\n },\n {\n \"countryName\": \"Senegal\",\n \"countryShortCode\": \"SN\",\n \"regions\": [\n {\n \"name\": \"Dakar\",\n \"shortCode\": \"DK\"\n },\n {\n \"name\": \"Diourbel\",\n \"shortCode\": \"DB\"\n },\n {\n \"name\": \"Fatick\",\n \"shortCode\": \"FK\"\n },\n {\n \"name\": \"Kaffrine\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Kaolack\",\n \"shortCode\": \"KL\"\n },\n {\n \"name\": \"Kedougou\",\n \"shortCode\": \"KE\"\n },\n {\n \"name\": \"Kolda\",\n \"shortCode\": \"KD\"\n },\n {\n \"name\": \"Louga\",\n \"shortCode\": \"LG\"\n },\n {\n \"name\": \"Matam\",\n \"shortCode\": \"MT\"\n },\n {\n \"name\": \"Saint-Louis\",\n \"shortCode\": \"SL\"\n },\n {\n \"name\": \"Sedhiou\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Tambacounda\",\n \"shortCode\": \"TC\"\n },\n {\n \"name\": \"Thies\",\n \"shortCode\": \"TH\"\n },\n {\n \"name\": \"Ziguinchor\",\n \"shortCode\": \"ZG\"\n }\n ]\n },\n {\n \"countryName\": \"Serbia\",\n \"countryShortCode\": \"RS\",\n \"regions\": [\n {\n \"name\": \"Beograd (Belgrade)\",\n \"shortCode\": \"00\"\n },\n {\n \"name\": \"Borski\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Braničevski\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Jablanički\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Južnobački\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Južnobanatski\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Kolubarski\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Kosovski\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Kosovsko-Mitrovački\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Kosovsko-Pomoravski\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Mačvanski\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Moravički\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Nišavski\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Pčinjski\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Pećki\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Pirotski\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Podunavski\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Pomoravski\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Prizrenski\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Rasinski\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Raški\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Severnobački\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Severnobanatski\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Srednjebanatski\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Sremski\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Šumadijski\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Toplički\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Zaječarski\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Zapadnobački\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Zlatiborski\",\n \"shortCode\": \"16\"\n }\n ]\n },\n // {\n // \"countryName\": \"Seychelles\",\n // \"countryShortCode\": \"SC\",\n // \"regions\": [\n // {\n // \"name\": \"Anse aux Pins\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Anse Boileau\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Anse Etoile\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Anse Royale\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Anu Cap\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Baie Lazare\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Baie Sainte Anne\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Beau Vallon\",\n // \"shortCode\": \"08\"\n // },\n // {\n // \"name\": \"Bel Air\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Bel Ombre\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Cascade\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Glacis\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Grand'Anse Mahe\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Grand'Anse Praslin\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"La Digue\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"La Riviere Anglaise\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Les Mamelles\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Mont Buxton\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Mont Fleuri\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Plaisance\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Pointe La Rue\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Port Glaud\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Roche Caiman\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Saint Louis\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Takamaka\",\n // \"shortCode\": \"23\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Sierra Leone\",\n \"countryShortCode\": \"SL\",\n \"regions\": [\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"W\"\n }\n ]\n },\n // {\n // \"countryName\": \"Singapore\",\n // \"countryShortCode\": \"SG\",\n // \"regions\": [\n // {\n // \"name\": \"Central Singapore\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"North East\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"North West\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"South East\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"South West\",\n // \"shortCode\": \"05\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Sint Maarten (Dutch part)\",\n // \"countryShortCode\": \"SX\",\n // \"regions\": [\n // {\n // \"name\": \"Sint Maarten\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Slovakia\",\n \"translationKey\": \"country_name_slovakia\",\n \"countryShortCode\": \"SK\",\n \"regions\": [\n {\n \"name\": \"Banskobystricky\",\n \"translationKey\": \"slovakia_region_name_bc\",\n \"shortCode\": \"BC\"\n },\n {\n \"name\": \"Bratislavsky\",\n \"translationKey\": \"slovakia_region_name_bl\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Kosicky\",\n \"translationKey\": \"slovakia_region_name_ki\",\n \"shortCode\": \"KI\"\n },\n {\n \"name\": \"Nitriansky\",\n \"translationKey\": \"slovakia_region_name_ni\",\n \"shortCode\": \"NI\"\n },\n {\n \"name\": \"Presovsky\",\n \"translationKey\": \"slovakia_region_name_pv\",\n \"shortCode\": \"PV\"\n },\n {\n \"name\": \"Trenciansky\",\n \"translationKey\": \"slovakia_region_name_tc\",\n \"shortCode\": \"TC\"\n },\n {\n \"name\": \"Trnavsky\",\n \"translationKey\": \"slovakia_region_name_ta\",\n \"shortCode\": \"TA\"\n },\n {\n \"name\": \"Zilinsky\",\n \"translationKey\": \"slovakia_region_name_zi\",\n \"shortCode\": \"ZI\"\n }\n ]\n },\n {\n \"countryName\": \"Slovenia\",\n \"translationKey\": \"country_name_slovenia\",\n \"countryShortCode\": \"SI\",\n \"regions\": [\n {\n \"name\": \"Ajdovscina\",\n \"translationKey\": \"slovenia_region_name_001\",\n \"shortCode\": \"001\"\n },\n {\n \"name\": \"Apace\",\n \"translationKey\": \"slovenia_region_name_195\",\n \"shortCode\": \"195\"\n },\n {\n \"name\": \"Beltinci\",\n \"translationKey\": \"slovenia_region_name_002\",\n \"shortCode\": \"002\"\n },\n {\n \"name\": \"Benedikt\",\n \"translationKey\": \"slovenia_region_name_148\",\n \"shortCode\": \"148\"\n },\n {\n \"name\": \"Bistrica ob Sotli\",\n \"translationKey\": \"slovenia_region_name_149\",\n \"shortCode\": \"149\"\n },\n {\n \"name\": \"Bled\",\n \"translationKey\": \"slovenia_region_name_003\",\n \"shortCode\": \"003\"\n },\n {\n \"name\": \"Bloke\",\n \"translationKey\": \"slovenia_region_name_150\",\n \"shortCode\": \"150\"\n },\n {\n \"name\": \"Bohinj\",\n \"translationKey\": \"slovenia_region_name_004\",\n \"shortCode\": \"004\"\n },\n {\n \"name\": \"Borovnica\",\n \"translationKey\": \"slovenia_region_name_005\",\n \"shortCode\": \"005\"\n },\n {\n \"name\": \"Bovec\",\n \"translationKey\": \"slovenia_region_name_006\",\n \"shortCode\": \"006\"\n },\n {\n \"name\": \"Braslovce\",\n \"translationKey\": \"slovenia_region_name_151\",\n \"shortCode\": \"151\"\n },\n {\n \"name\": \"Brda\",\n \"translationKey\": \"slovenia_region_name_007\",\n \"shortCode\": \"007\"\n },\n {\n \"name\": \"Brezice\",\n \"translationKey\": \"slovenia_region_name_009\",\n \"shortCode\": \"009\"\n },\n {\n \"name\": \"Brezovica\",\n \"translationKey\": \"slovenia_region_name_008\",\n \"shortCode\": \"008\"\n },\n {\n \"name\": \"Cankova\",\n \"translationKey\": \"slovenia_region_name_152\",\n \"shortCode\": \"152\"\n },\n {\n \"name\": \"Celje\",\n \"translationKey\": \"slovenia_region_name_011\",\n \"shortCode\": \"011\"\n },\n {\n \"name\": \"Cerklje na Gorenjskem\",\n \"translationKey\": \"slovenia_region_name_012\",\n \"shortCode\": \"012\"\n },\n {\n \"name\": \"Cerknica\",\n \"translationKey\": \"slovenia_region_name_013\",\n \"shortCode\": \"013\"\n },\n {\n \"name\": \"Cerkno\",\n \"translationKey\": \"slovenia_region_name_014\",\n \"shortCode\": \"014\"\n },\n {\n \"name\": \"Cerkvenjak\",\n \"translationKey\": \"slovenia_region_name_153\",\n \"shortCode\": \"153\"\n },\n {\n \"name\": \"Cirkulane\",\n \"translationKey\": \"slovenia_region_name_196\",\n \"shortCode\": \"196\"\n },\n {\n \"name\": \"Crensovci\",\n \"translationKey\": \"slovenia_region_name_015\",\n \"shortCode\": \"015\"\n },\n {\n \"name\": \"Crna na Koroskem\",\n \"translationKey\": \"slovenia_region_name_016\",\n \"shortCode\": \"016\"\n },\n {\n \"name\": \"Crnomelj\",\n \"translationKey\": \"slovenia_region_name_017\",\n \"shortCode\": \"017\"\n },\n {\n \"name\": \"Destrnik\",\n \"translationKey\": \"slovenia_region_name_018\",\n \"shortCode\": \"018\"\n },\n {\n \"name\": \"Divaca\",\n \"translationKey\": \"slovenia_region_name_019\",\n \"shortCode\": \"019\"\n },\n {\n \"name\": \"Dobje\",\n \"translationKey\": \"slovenia_region_name_154\",\n \"shortCode\": \"154\"\n },\n {\n \"name\": \"Dobrepolje\",\n \"translationKey\": \"slovenia_region_name_020\",\n \"shortCode\": \"020\"\n },\n {\n \"name\": \"Dobrna\",\n \"translationKey\": \"slovenia_region_name_155\",\n \"shortCode\": \"155\"\n },\n {\n \"name\": \"Dobrova-Polhov Gradec\",\n \"translationKey\": \"slovenia_region_name_021\",\n \"shortCode\": \"021\"\n },\n {\n \"name\": \"Dobrovnik\",\n \"translationKey\": \"slovenia_region_name_156\",\n \"shortCode\": \"156\"\n },\n {\n \"name\": \"Dol pri Ljubljani\",\n \"translationKey\": \"slovenia_region_name_022\",\n \"shortCode\": \"022\"\n },\n {\n \"name\": \"Dolenjske Toplice\",\n \"translationKey\": \"slovenia_region_name_157\",\n \"shortCode\": \"157\"\n },\n {\n \"name\": \"Domzale\",\n \"translationKey\": \"slovenia_region_name_023\",\n \"shortCode\": \"023\"\n },\n {\n \"name\": \"Dornava\",\n \"translationKey\": \"slovenia_region_name_024\",\n \"shortCode\": \"024\"\n },\n {\n \"name\": \"Dravograd\",\n \"translationKey\": \"slovenia_region_name_025\",\n \"shortCode\": \"025\"\n },\n {\n \"name\": \"Duplek\",\n \"translationKey\": \"slovenia_region_name_026\",\n \"shortCode\": \"026\"\n },\n {\n \"name\": \"Gorenja Vas-Poljane\",\n \"translationKey\": \"slovenia_region_name_027\",\n \"shortCode\": \"027\"\n },\n {\n \"name\": \"Gorisnica\",\n \"translationKey\": \"slovenia_region_name_028\",\n \"shortCode\": \"028\"\n },\n {\n \"name\": \"Gorje\",\n \"translationKey\": \"slovenia_region_name_207\",\n \"shortCode\": \"207\"\n },\n {\n \"name\": \"Gornja Radgona\",\n \"translationKey\": \"slovenia_region_name_029\",\n \"shortCode\": \"029\"\n },\n {\n \"name\": \"Gornji Grad\",\n \"translationKey\": \"slovenia_region_name_030\",\n \"shortCode\": \"030\"\n },\n {\n \"name\": \"Gornji Petrovci\",\n \"translationKey\": \"slovenia_region_name_031\",\n \"shortCode\": \"031\"\n },\n {\n \"name\": \"Grad\",\n \"translationKey\": \"slovenia_region_name_158\",\n \"shortCode\": \"158\"\n },\n {\n \"name\": \"Grosuplje\",\n \"translationKey\": \"slovenia_region_name_032\",\n \"shortCode\": \"032\"\n },\n {\n \"name\": \"Hajdina\",\n \"translationKey\": \"slovenia_region_name_159\",\n \"shortCode\": \"159\"\n },\n {\n \"name\": \"Hoce-Slivnica\",\n \"translationKey\": \"slovenia_region_name_160\",\n \"shortCode\": \"\"\n },\n {\n \"name\": \"Hodos\",\n \"translationKey\": \"slovenia_region_name_161\",\n \"shortCode\": \"161\"\n },\n {\n \"name\": \"Horjul\",\n \"translationKey\": \"slovenia_region_name_162\",\n \"shortCode\": \"162\"\n },\n {\n \"name\": \"Hrastnik\",\n \"translationKey\": \"slovenia_region_name_034\",\n \"shortCode\": \"034\"\n },\n {\n \"name\": \"Hrpelje-Kozina\",\n \"translationKey\": \"slovenia_region_name_035\",\n \"shortCode\": \"035\"\n },\n {\n \"name\": \"Idrija\",\n \"translationKey\": \"slovenia_region_name_036\",\n \"shortCode\": \"036\"\n },\n {\n \"name\": \"Ig\",\n \"translationKey\": \"slovenia_region_name_037\",\n \"shortCode\": \"037\"\n },\n {\n \"name\": \"Ilirska Bistrica\",\n \"translationKey\": \"slovenia_region_name_038\",\n \"shortCode\": \"038\"\n },\n {\n \"name\": \"Ivancna Gorica\",\n \"translationKey\": \"slovenia_region_name_039\",\n \"shortCode\": \"039\"\n },\n {\n \"name\": \"Izola\",\n \"translationKey\": \"slovenia_region_name_040\",\n \"shortCode\": \"040\"\n },\n {\n \"name\": \"Jesenice\",\n \"translationKey\": \"slovenia_region_name_041\",\n \"shortCode\": \"041\"\n },\n {\n \"name\": \"Jursinci\",\n \"translationKey\": \"slovenia_region_name_042\",\n \"shortCode\": \"042\"\n },\n {\n \"name\": \"Kamnik\",\n \"translationKey\": \"slovenia_region_name_043\",\n \"shortCode\": \"043\"\n },\n {\n \"name\": \"Kanal\",\n \"translationKey\": \"slovenia_region_name_044\",\n \"shortCode\": \"044\"\n },\n {\n \"name\": \"Kidricevo\",\n \"translationKey\": \"slovenia_region_name_045\",\n \"shortCode\": \"045\"\n },\n {\n \"name\": \"Kobarid\",\n \"translationKey\": \"slovenia_region_name_046\",\n \"shortCode\": \"046\"\n },\n {\n \"name\": \"Kobilje\",\n \"translationKey\": \"slovenia_region_name_047\",\n \"shortCode\": \"047\"\n },\n {\n \"name\": \"Kocevje\",\n \"translationKey\": \"slovenia_region_name_048\",\n \"shortCode\": \"048\"\n },\n {\n \"name\": \"Komen\",\n \"translationKey\": \"slovenia_region_name_049\",\n \"shortCode\": \"049\"\n },\n {\n \"name\": \"Komenda\",\n \"translationKey\": \"slovenia_region_name_164\",\n \"shortCode\": \"164\"\n },\n {\n \"name\": \"Koper\",\n \"translationKey\": \"slovenia_region_name_050\",\n \"shortCode\": \"050\"\n },\n {\n \"name\": \"Kodanjevica na Krki\",\n \"translationKey\": \"slovenia_region_name_197\",\n \"shortCode\": \"197\"\n },\n {\n \"name\": \"Kostel\",\n \"translationKey\": \"slovenia_region_name_165\",\n \"shortCode\": \"165\"\n },\n {\n \"name\": \"Kozje\",\n \"translationKey\": \"slovenia_region_name_051\",\n \"shortCode\": \"051\"\n },\n {\n \"name\": \"Kranj\",\n \"translationKey\": \"slovenia_region_name_052\",\n \"shortCode\": \"052\"\n },\n {\n \"name\": \"Kranjska Gora\",\n \"translationKey\": \"slovenia_region_name_053\",\n \"shortCode\": \"053\"\n },\n {\n \"name\": \"Krizevci\",\n \"translationKey\": \"slovenia_region_name_166\",\n \"shortCode\": \"166\"\n },\n {\n \"name\": \"Krsko\",\n \"translationKey\": \"slovenia_region_name_054\",\n \"shortCode\": \"054\"\n },\n {\n \"name\": \"Kungota\",\n \"translationKey\": \"slovenia_region_name_055\",\n \"shortCode\": \"055\"\n },\n {\n \"name\": \"Kuzma\",\n \"translationKey\": \"slovenia_region_name_056\",\n \"shortCode\": \"056\"\n },\n {\n \"name\": \"Lasko\",\n \"translationKey\": \"slovenia_region_name_057\",\n \"shortCode\": \"057\"\n },\n {\n \"name\": \"Lenart\",\n \"translationKey\": \"slovenia_region_name_058\",\n \"shortCode\": \"058\"\n },\n {\n \"name\": \"Lendava\",\n \"translationKey\": \"slovenia_region_name_059\",\n \"shortCode\": \"059\"\n },\n {\n \"name\": \"Litija\",\n \"translationKey\": \"slovenia_region_name_060\",\n \"shortCode\": \"060\"\n },\n {\n \"name\": \"Ljubljana\",\n \"translationKey\": \"slovenia_region_name_061\",\n \"shortCode\": \"061\"\n },\n {\n \"name\": \"Ljubno\",\n \"translationKey\": \"slovenia_region_name_062\",\n \"shortCode\": \"062\"\n },\n {\n \"name\": \"Ljutomer\",\n \"translationKey\": \"slovenia_region_name_063\",\n \"shortCode\": \"063\"\n },\n {\n \"name\": \"Log-Dragomer\",\n \"translationKey\": \"slovenia_region_name_208\",\n \"shortCode\": \"208\"\n },\n {\n \"name\": \"Logatec\",\n \"translationKey\": \"slovenia_region_name_064\",\n \"shortCode\": \"064\"\n },\n {\n \"name\": \"Loska Dolina\",\n \"translationKey\": \"slovenia_region_name_065\",\n \"shortCode\": \"065\"\n },\n {\n \"name\": \"Loski Potok\",\n \"translationKey\": \"slovenia_region_name_066\",\n \"shortCode\": \"066\"\n },\n {\n \"name\": \"Lovrenc na Pohorju\",\n \"translationKey\": \"slovenia_region_name_167\",\n \"shortCode\": \"167\"\n },\n {\n \"name\": \"Lukovica\",\n \"translationKey\": \"slovenia_region_name_068\",\n \"shortCode\": \"068\"\n },\n {\n \"name\": \"Luce\",\n \"translationKey\": \"slovenia_region_name_067\",\n \"shortCode\": \"067\"\n },\n {\n \"name\": \"Majsperk\",\n \"translationKey\": \"slovenia_region_name_069\",\n \"shortCode\": \"069\"\n },\n {\n \"name\": \"Makole\",\n \"translationKey\": \"slovenia_region_name_198\",\n \"shortCode\": \"198\"\n },\n {\n \"name\": \"Maribor\",\n \"translationKey\": \"slovenia_region_name_070\",\n \"shortCode\": \"070\"\n },\n {\n \"name\": \"Markovci\",\n \"translationKey\": \"slovenia_region_name_168\",\n \"shortCode\": \"168\"\n },\n {\n \"name\": \"Medvode\",\n \"translationKey\": \"slovenia_region_name_071\",\n \"shortCode\": \"071\"\n },\n {\n \"name\": \"Menges\",\n \"translationKey\": \"slovenia_region_name_072\",\n \"shortCode\": \"072\"\n },\n {\n \"name\": \"Metlika\",\n \"translationKey\": \"slovenia_region_name_073\",\n \"shortCode\": \"073\"\n },\n {\n \"name\": \"Mezica\",\n \"translationKey\": \"slovenia_region_name_074\",\n \"shortCode\": \"074\"\n },\n {\n \"name\": \"Miklavz na Dravskem Polju\",\n \"translationKey\": \"slovenia_region_name_169\",\n \"shortCode\": \"169\"\n },\n {\n \"name\": \"Miren-Kostanjevica\",\n \"translationKey\": \"slovenia_region_name_075\",\n \"shortCode\": \"075\"\n },\n {\n \"name\": \"Mirna\",\n \"translationKey\": \"slovenia_region_name_212\",\n \"shortCode\": \"212\"\n },\n {\n \"name\": \"Mirna Pec\",\n \"translationKey\": \"slovenia_region_name_170\",\n \"shortCode\": \"170\"\n },\n {\n \"name\": \"Mislinja\",\n \"translationKey\": \"slovenia_region_name_076\",\n \"shortCode\": \"076\"\n },\n {\n \"name\": \"Mokronog-Trebelno\",\n \"translationKey\": \"slovenia_region_name_199\",\n \"shortCode\": \"199\"\n },\n {\n \"name\": \"Moravce\",\n \"translationKey\": \"slovenia_region_name_077\",\n \"shortCode\": \"077\"\n },\n {\n \"name\": \"Moravske Toplice\",\n \"translationKey\": \"slovenia_region_name_078\",\n \"shortCode\": \"078\"\n },\n {\n \"name\": \"Mozirje\",\n \"translationKey\": \"slovenia_region_name_079\",\n \"shortCode\": \"079\"\n },\n {\n \"name\": \"Murska Sobota\",\n \"translationKey\": \"slovenia_region_name_080\",\n \"shortCode\": \"080\"\n },\n {\n \"name\": \"Naklo\",\n \"translationKey\": \"slovenia_region_name_082\",\n \"shortCode\": \"082\"\n },\n {\n \"name\": \"Nazarje\",\n \"translationKey\": \"slovenia_region_name_083\",\n \"shortCode\": \"083\"\n },\n {\n \"name\": \"Nova Gorica\",\n \"translationKey\": \"slovenia_region_name_084\",\n \"shortCode\": \"084\"\n },\n {\n \"name\": \"Novo Mesto\",\n \"translationKey\": \"slovenia_region_name_085\",\n \"shortCode\": \"085\"\n },\n {\n \"name\": \"Odranci\",\n \"translationKey\": \"slovenia_region_name_086\",\n \"shortCode\": \"086\"\n },\n {\n \"name\": \"Ormoz\",\n \"translationKey\": \"slovenia_region_name_087\",\n \"shortCode\": \"087\"\n },\n {\n \"name\": \"Osilnica\",\n \"translationKey\": \"slovenia_region_name_088\",\n \"shortCode\": \"088\"\n },\n {\n \"name\": \"Pesnica\",\n \"translationKey\": \"slovenia_region_name_089\",\n \"shortCode\": \"089\"\n },\n {\n \"name\": \"Piran\",\n \"translationKey\": \"slovenia_region_name_090\",\n \"shortCode\": \"090\"\n },\n {\n \"name\": \"Pivka\",\n \"translationKey\": \"slovenia_region_name_091\",\n \"shortCode\": \"091\"\n },\n {\n \"name\": \"Podcetrtek\",\n \"translationKey\": \"slovenia_region_name_092\",\n \"shortCode\": \"092\"\n },\n {\n \"name\": \"Podlehnik\",\n \"translationKey\": \"slovenia_region_name_172\",\n \"shortCode\": \"172\"\n },\n {\n \"name\": \"Podvelka\",\n \"translationKey\": \"slovenia_region_name_093\",\n \"shortCode\": \"093\"\n },\n {\n \"name\": \"Poljcane\",\n \"translationKey\": \"slovenia_region_name_200\",\n \"shortCode\": \"200\"\n },\n {\n \"name\": \"Postojna\",\n \"translationKey\": \"slovenia_region_name_094\",\n \"shortCode\": \"094\"\n },\n {\n \"name\": \"Prebold\",\n \"translationKey\": \"slovenia_region_name_174\",\n \"shortCode\": \"174\"\n },\n {\n \"name\": \"Preddvor\",\n \"translationKey\": \"slovenia_region_name_095\",\n \"shortCode\": \"095\"\n },\n {\n \"name\": \"Prevalje\",\n \"translationKey\": \"slovenia_region_name_175\",\n \"shortCode\": \"175\"\n },\n {\n \"name\": \"Ptuj\",\n \"translationKey\": \"slovenia_region_name_096\",\n \"shortCode\": \"096\"\n },\n {\n \"name\": \"Race-Fram\",\n \"translationKey\": \"slovenia_region_name_098\",\n \"shortCode\": \"098\"\n },\n {\n \"name\": \"Radece\",\n \"translationKey\": \"slovenia_region_name_099\",\n \"shortCode\": \"099\"\n },\n {\n \"name\": \"Radenci\",\n \"translationKey\": \"slovenia_region_name_100\",\n \"shortCode\": \"100\"\n },\n {\n \"name\": \"Radlje ob Dravi\",\n \"translationKey\": \"slovenia_region_name_101\",\n \"shortCode\": \"101\"\n },\n {\n \"name\": \"Radovljica\",\n \"translationKey\": \"slovenia_region_name_102\",\n \"shortCode\": \"102\"\n },\n {\n \"name\": \"Ravne na Koroskem\",\n \"translationKey\": \"slovenia_region_name_103\",\n \"shortCode\": \"103\"\n },\n {\n \"name\": \"Razkrizje\",\n \"translationKey\": \"slovenia_region_name_176\",\n \"shortCode\": \"176\"\n },\n {\n \"name\": \"Recica ob Savinji\",\n \"translationKey\": \"slovenia_region_name_209\",\n \"shortCode\": \"209\"\n },\n {\n \"name\": \"Rence-Vogrsko\",\n \"translationKey\": \"slovenia_region_name_201\",\n \"shortCode\": \"201\"\n },\n {\n \"name\": \"Ribnica\",\n \"translationKey\": \"slovenia_region_name_104\",\n \"shortCode\": \"104\"\n },\n {\n \"name\": \"Ribnica na Poboriu\",\n \"translationKey\": \"slovenia_region_name_177\",\n \"shortCode\": \"177\"\n },\n {\n \"name\": \"Rogaska Slatina\",\n \"translationKey\": \"slovenia_region_name_106\",\n \"shortCode\": \"106\"\n },\n {\n \"name\": \"Rogasovci\",\n \"translationKey\": \"slovenia_region_name_105\",\n \"shortCode\": \"105\"\n },\n {\n \"name\": \"Rogatec\",\n \"translationKey\": \"slovenia_region_name_107\",\n \"shortCode\": \"107\"\n },\n {\n \"name\": \"Ruse\",\n \"translationKey\": \"slovenia_region_name_108\",\n \"shortCode\": \"108\"\n },\n {\n \"name\": \"Salovci\",\n \"translationKey\": \"slovenia_region_name_033\",\n \"shortCode\": \"033\"\n },\n {\n \"name\": \"Selnica ob Dravi\",\n \"translationKey\": \"slovenia_region_name_178\",\n \"shortCode\": \"178\"\n },\n {\n \"name\": \"Semic\",\n \"translationKey\": \"slovenia_region_name_109\",\n \"shortCode\": \"109\"\n },\n {\n \"name\": \"Sempeter-Vrtojba\",\n \"translationKey\": \"slovenia_region_name_183\",\n \"shortCode\": \"183\"\n },\n {\n \"name\": \"Sencur\",\n \"translationKey\": \"slovenia_region_name_117\",\n \"shortCode\": \"117\"\n },\n {\n \"name\": \"Sentilj\",\n \"translationKey\": \"slovenia_region_name_118\",\n \"shortCode\": \"118\"\n },\n {\n \"name\": \"Sentjernej\",\n \"translationKey\": \"slovenia_region_name_119\",\n \"shortCode\": \"119\"\n },\n {\n \"name\": \"Sentjur\",\n \"translationKey\": \"slovenia_region_name_120\",\n \"shortCode\": \"120\"\n },\n {\n \"name\": \"Sentrupert\",\n \"translationKey\": \"slovenia_region_name_211\",\n \"shortCode\": \"211\"\n },\n {\n \"name\": \"Sevnica\",\n \"translationKey\": \"slovenia_region_name_110\",\n \"shortCode\": \"110\"\n },\n {\n \"name\": \"Sezana\",\n \"translationKey\": \"slovenia_region_name_111\",\n \"shortCode\": \"111\"\n },\n {\n \"name\": \"Skocjan\",\n \"translationKey\": \"slovenia_region_name_121\",\n \"shortCode\": \"121\"\n },\n {\n \"name\": \"Skofja Loka\",\n \"translationKey\": \"slovenia_region_name_122\",\n \"shortCode\": \"122\"\n },\n {\n \"name\": \"Skofljica\",\n \"translationKey\": \"slovenia_region_name_123\",\n \"shortCode\": \"123\"\n },\n {\n \"name\": \"Slovenj Gradec\",\n \"translationKey\": \"slovenia_region_name_112\",\n \"shortCode\": \"112\"\n },\n {\n \"name\": \"Slovenska Bistrica\",\n \"translationKey\": \"slovenia_region_name_113\",\n \"shortCode\": \"113\"\n },\n {\n \"name\": \"Slovenske Konjice\",\n \"translationKey\": \"slovenia_region_name_114\",\n \"shortCode\": \"114\"\n },\n {\n \"name\": \"Smarje pri elsah\",\n \"translationKey\": \"slovenia_region_name_124\",\n \"shortCode\": \"124\"\n },\n {\n \"name\": \"Smarjeske Toplice\",\n \"translationKey\": \"slovenia_region_name_206\",\n \"shortCode\": \"206\"\n },\n {\n \"name\": \"Smartno ob Paki\",\n \"translationKey\": \"slovenia_region_name_125\",\n \"shortCode\": \"125\"\n },\n {\n \"name\": \"Smartno pri Litiji\",\n \"translationKey\": \"slovenia_region_name_194\",\n \"shortCode\": \"194\"\n },\n {\n \"name\": \"Sodrazica\",\n \"translationKey\": \"slovenia_region_name_179\",\n \"shortCode\": \"179\"\n },\n {\n \"name\": \"Solcava\",\n \"translationKey\": \"slovenia_region_name_180\",\n \"shortCode\": \"180\"\n },\n {\n \"name\": \"Sostanj\",\n \"translationKey\": \"slovenia_region_name_126\",\n \"shortCode\": \"126\"\n },\n {\n \"name\": \"Sredisce ob Dravi\",\n \"translationKey\": \"slovenia_region_name_202\",\n \"shortCode\": \"202\"\n },\n {\n \"name\": \"Starse\",\n \"translationKey\": \"slovenia_region_name_115\",\n \"shortCode\": \"115\"\n },\n {\n \"name\": \"Store\",\n \"translationKey\": \"slovenia_region_name_127\",\n \"shortCode\": \"127\"\n },\n {\n \"name\": \"Straza\",\n \"translationKey\": \"slovenia_region_name_203\",\n \"shortCode\": \"203\"\n },\n {\n \"name\": \"Sveta Ana\",\n \"translationKey\": \"slovenia_region_name_181\",\n \"shortCode\": \"181\"\n },\n {\n \"name\": \"Sveta Trojica v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_204\",\n \"shortCode\": \"204\"\n },\n {\n \"name\": \"Sveta Andraz v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_182\",\n \"shortCode\": \"182\"\n },\n {\n \"name\": \"Sveti Jurij\",\n \"translationKey\": \"slovenia_region_name_116\",\n \"shortCode\": \"116\"\n },\n {\n \"name\": \"Sveti Jurij v Slovenskih Goricah\",\n \"translationKey\": \"slovenia_region_name_210\",\n \"shortCode\": \"210\"\n },\n {\n \"name\": \"Sveti Tomaz\",\n \"translationKey\": \"slovenia_region_name_205\",\n \"shortCode\": \"205\"\n },\n {\n \"name\": \"Tabor\",\n \"translationKey\": \"slovenia_region_name_184\",\n \"shortCode\": \"184\"\n },\n {\n \"name\": \"Tisina\",\n \"translationKey\": \"slovenia_region_name_010\",\n \"shortCode\": \"010\"\n },\n {\n \"name\": \"Tolmin\",\n \"translationKey\": \"slovenia_region_name_128\",\n \"shortCode\": \"128\"\n },\n {\n \"name\": \"Trbovlje\",\n \"translationKey\": \"slovenia_region_name_129\",\n \"shortCode\": \"129\"\n },\n {\n \"name\": \"Trebnje\",\n \"translationKey\": \"slovenia_region_name_130\",\n \"shortCode\": \"130\"\n },\n {\n \"name\": \"Trnovska Vas\",\n \"translationKey\": \"slovenia_region_name_185\",\n \"shortCode\": \"185\"\n },\n {\n \"name\": \"Trzin\",\n \"translationKey\": \"slovenia_region_name_186\",\n \"shortCode\": \"186\"\n },\n {\n \"name\": \"Trzic\",\n \"translationKey\": \"slovenia_region_name_131\",\n \"shortCode\": \"131\"\n },\n {\n \"name\": \"Turnisce\",\n \"translationKey\": \"slovenia_region_name_132\",\n \"shortCode\": \"132\"\n },\n {\n \"name\": \"Velenje\",\n \"translationKey\": \"slovenia_region_name_133\",\n \"shortCode\": \"133\"\n },\n {\n \"name\": \"Velika Polana\",\n \"translationKey\": \"slovenia_region_name_187\",\n \"shortCode\": \"187\"\n },\n {\n \"name\": \"Velike Lasce\",\n \"translationKey\": \"slovenia_region_name_134\",\n \"shortCode\": \"134\"\n },\n {\n \"name\": \"Verzej\",\n \"translationKey\": \"slovenia_region_name_188\",\n \"shortCode\": \"188\"\n },\n {\n \"name\": \"Videm\",\n \"translationKey\": \"slovenia_region_name_135\",\n \"shortCode\": \"135\"\n },\n {\n \"name\": \"Vipava\",\n \"translationKey\": \"slovenia_region_name_136\",\n \"shortCode\": \"136\"\n },\n {\n \"name\": \"Vitanje\",\n \"translationKey\": \"slovenia_region_name_137\",\n \"shortCode\": \"137\"\n },\n {\n \"name\": \"Vodice\",\n \"translationKey\": \"slovenia_region_name_138\",\n \"shortCode\": \"138\"\n },\n {\n \"name\": \"Vojnik\",\n \"translationKey\": \"slovenia_region_name_139\",\n \"shortCode\": \"139\"\n },\n {\n \"name\": \"Vransko\",\n \"translationKey\": \"slovenia_region_name_189\",\n \"shortCode\": \"189\"\n },\n {\n \"name\": \"Vrhnika\",\n \"translationKey\": \"slovenia_region_name_140\",\n \"shortCode\": \"140\"\n },\n {\n \"name\": \"Vuzenica\",\n \"translationKey\": \"slovenia_region_name_141\",\n \"shortCode\": \"141\"\n },\n {\n \"name\": \"Zagorje ob Savi\",\n \"translationKey\": \"slovenia_region_name_142\",\n \"shortCode\": \"142\"\n },\n {\n \"name\": \"Zavrc\",\n \"translationKey\": \"slovenia_region_name_143\",\n \"shortCode\": \"143\"\n },\n {\n \"name\": \"Zrece\",\n \"translationKey\": \"slovenia_region_name_144\",\n \"shortCode\": \"144\"\n },\n {\n \"name\": \"Zalec\",\n \"translationKey\": \"slovenia_region_name_190\",\n \"shortCode\": \"190\"\n },\n {\n \"name\": \"Zelezniki\",\n \"translationKey\": \"slovenia_region_name_146\",\n \"shortCode\": \"146\"\n },\n {\n \"name\": \"Zetale\",\n \"translationKey\": \"slovenia_region_name_191\",\n \"shortCode\": \"191\"\n },\n {\n \"name\": \"Ziri\",\n \"translationKey\": \"slovenia_region_name_147\",\n \"shortCode\": \"147\"\n },\n {\n \"name\": \"Zirovnica\",\n \"translationKey\": \"slovenia_region_name_192\",\n \"shortCode\": \"192\"\n },\n {\n \"name\": \"Zuzemberk\",\n \"translationKey\": \"slovenia_region_name_193\",\n \"shortCode\": \"193\"\n }\n ]\n },\n // {\n // \"countryName\": \"Solomon Islands\",\n // \"countryShortCode\": \"SB\",\n // \"regions\": [\n // {\n // \"name\": \"Central\",\n // \"shortCode\": \"CE\"\n // },\n // {\n // \"name\": \"Choiseul\",\n // \"shortCode\": \"CH\"\n // },\n // {\n // \"name\": \"Guadalcanal\",\n // \"shortCode\": \"GU\"\n // },\n // {\n // \"name\": \"Honiara\",\n // \"shortCode\": \"CT\"\n // },\n // {\n // \"name\": \"Isabel\",\n // \"shortCode\": \"IS\"\n // },\n // {\n // \"name\": \"Makira-Ulawa\",\n // \"shortCode\": \"MK\"\n // },\n // {\n // \"name\": \"Malaita\",\n // \"shortCode\": \"ML\"\n // },\n // {\n // \"name\": \"Rennell and Bellona\",\n // \"shortCode\": \"RB\"\n // },\n // {\n // \"name\": \"Temotu\",\n // \"shortCode\": \"TE\"\n // },\n // {\n // \"name\": \"Western\",\n // \"shortCode\": \"WE\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Somalia\",\n // \"countryShortCode\": \"SO\",\n // \"regions\": [\n // {\n // \"name\": \"Awdal\",\n // \"shortCode\": \"AW\"\n // },\n // {\n // \"name\": \"Bakool\",\n // \"shortCode\": \"BK\"\n // },\n // {\n // \"name\": \"Banaadir\",\n // \"shortCode\": \"BN\"\n // },\n // {\n // \"name\": \"Bari\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Bay\",\n // \"shortCode\": \"BY\"\n // },\n // {\n // \"name\": \"Galguduud\",\n // \"shortCode\": \"GA\"\n // },\n // {\n // \"name\": \"Gedo\",\n // \"shortCode\": \"GE\"\n // },\n // {\n // \"name\": \"Hiiraan\",\n // \"shortCode\": \"HI\"\n // },\n // {\n // \"name\": \"Jubbada Dhexe\",\n // \"shortCode\": \"JD\"\n // },\n // {\n // \"name\": \"Jubbada Hoose\",\n // \"shortCode\": \"JH\"\n // },\n // {\n // \"name\": \"Mudug\",\n // \"shortCode\": \"MU\"\n // },\n // {\n // \"name\": \"Nugaal\",\n // \"shortCode\": \"NU\"\n // },\n // {\n // \"name\": \"Sanaag\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Shabeellaha Dhexe\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Shabeellaha Hoose\",\n // \"shortCode\": \"SH\"\n // },\n // {\n // \"name\": \"Sool\",\n // \"shortCode\": \"SO\"\n // },\n // {\n // \"name\": \"Togdheer\",\n // \"shortCode\": \"TO\"\n // },\n // {\n // \"name\": \"Woqooyi Galbeed\",\n // \"shortCode\": \"WO\"\n // }\n // ]\n // },\n {\n \"countryName\": \"South Africa\",\n \"countryShortCode\": \"ZA\",\n \"regions\": [\n {\n \"name\": \"Eastern Cape\",\n \"shortCode\": \"EC\"\n },\n {\n \"name\": \"Free State\",\n \"shortCode\": \"FS\"\n },\n {\n \"name\": \"Gauteng\",\n \"shortCode\": \"GT\"\n },\n {\n \"name\": \"KwaZulu-Natal\",\n \"shortCode\": \"NL\"\n },\n {\n \"name\": \"Limpopo\",\n \"shortCode\": \"LP\"\n },\n {\n \"name\": \"Mpumalanga\",\n \"shortCode\": \"MP\"\n },\n {\n \"name\": \"Northern Cape\",\n \"shortCode\": \"NC\"\n },\n {\n \"name\": \"North West\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Western Cape\",\n \"shortCode\": \"WC\"\n }\n ]\n },\n // {\n // \"countryName\": \"South Georgia and South Sandwich Islands\",\n // \"countryShortCode\": \"GS\",\n // \"regions\": [\n // {\n // \"name\": \"Bird Island\"\n // },\n // {\n // \"name\": \"Bristol Island\"\n // },\n // {\n // \"name\": \"Clerke Rocks\"\n // },\n // {\n // \"name\": \"Montagu Island\"\n // },\n // {\n // \"name\": \"Saunders Island\"\n // },\n // {\n // \"name\": \"South Georgia\"\n // },\n // {\n // \"name\": \"Southern Thule\"\n // },\n // {\n // \"name\": \"Traversay Islands\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"South Sudan\",\n // \"countryShortCode\": \"SS\",\n // \"regions\": [\n // {\n // \"name\": \"Central Equatoria\",\n // \"shortCode\": \"CE\"\n // },\n // {\n // \"name\": \"Eastern Equatoria\",\n // \"shortCode\": \"EE\"\n // },\n // {\n // \"name\": \"Jonglei\",\n // \"shortCode\": \"JG\"\n // },\n // {\n // \"name\": \"Lakes\",\n // \"shortCode\": \"LK\"\n // },\n // {\n // \"name\": \"Northern Bahr el Ghazal\",\n // \"shortCode\": \"BN\"\n // },\n // {\n // \"name\": \"Unity\",\n // \"shortCode\": \"UY\"\n // },\n // {\n // \"name\": \"Upper Nile\",\n // \"shortCode\": \"NU\"\n // },\n // {\n // \"name\": \"Warrap\",\n // \"shortCode\": \"WR\"\n // },\n // {\n // \"name\": \"Western Bahr el Ghazal\",\n // \"shortCode\": \"BW\"\n // },\n // {\n // \"name\": \"Western Equatoria\",\n // \"shortCode\": \"EW\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Spain\",\n \"translationKey\": \"country_name_spain\",\n \"countryShortCode\": \"ES\",\n \"regions\": [\n {\n \"name\": \"Albacete\",\n \"translationKey\": \"spain_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Alicante\",\n \"translationKey\": \"spain_region_name_a\",\n \"shortCode\": \"A\"\n },\n {\n \"name\": \"Almería\",\n \"translationKey\": \"spain_region_name_an\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Araba/Álava\",\n \"translationKey\": \"spain_region_name_vi\",\n \"shortCode\": \"VI\"\n },\n {\n \"name\": \"Asturias\",\n \"translationKey\": \"spain_region_name_o\",\n \"shortCode\": \"O\"\n },\n {\n \"name\": \"Ávila\",\n \"translationKey\": \"spain_region_name_av\",\n \"shortCode\": \"AV\"\n },\n {\n \"name\": \"Badajoz\",\n \"translationKey\": \"spain_region_name_ba\",\n \"shortCode\": \"BA\"\n },\n {\n \"name\": \"Barcelona\",\n \"translationKey\": \"spain_region_name_b\",\n \"shortCode\": \"B\"\n },\n {\n \"name\": \"Bizkaia\",\n \"translationKey\": \"spain_region_name_bi\",\n \"shortCode\": \"BI\"\n },\n {\n \"name\": \"Burgos\",\n \"translationKey\": \"spain_region_name_bu\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Cáceres\",\n \"translationKey\": \"spain_region_name_cc\",\n \"shortCode\": \"CC\"\n },\n {\n \"name\": \"Cádiz\",\n \"translationKey\": \"spain_region_name_ca\",\n \"shortCode\": \"CA\"\n },\n {\n \"name\": \"Cantabria\",\n \"translationKey\": \"spain_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Castellón/Castelló\",\n \"translationKey\": \"spain_region_name_cs\",\n \"shortCode\": \"CS\"\n },\n {\n \"name\": \"Ceuta\",\n \"translationKey\": \"spain_region_name_ce\",\n \"shortCode\": \"CE\"\n },\n {\n \"name\": \"Ciudad Real\",\n \"translationKey\": \"spain_region_name_cr\",\n \"shortCode\": \"CR\"\n },\n {\n \"name\": \"Córdoba\",\n \"translationKey\": \"spain_region_name_co\",\n \"shortCode\": \"CO\"\n },\n {\n \"name\": \"A Coruña\",\n \"translationKey\": \"spain_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Cuenca\",\n \"translationKey\": \"spain_region_name_cu\",\n \"shortCode\": \"CU\"\n },\n {\n \"name\": \"Gipuzkoa\",\n \"translationKey\": \"spain_region_name_ss\",\n \"shortCode\": \"SS\"\n },\n {\n \"name\": \"Girona\",\n \"translationKey\": \"spain_region_name_gi\",\n \"shortCode\": \"GI\"\n },\n {\n \"name\": \"Granada\",\n \"translationKey\": \"spain_region_name_gr\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Guadalajara\",\n \"translationKey\": \"spain_region_name_gu\",\n \"shortCode\": \"GU\"\n },\n {\n \"name\": \"Huelva\",\n \"translationKey\": \"spain_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Huesca\",\n \"translationKey\": \"spain_region_name_hu\",\n \"shortCode\": \"HU\"\n },\n {\n \"name\": \"Illes Balears\",\n \"translationKey\": \"spain_region_name_pm\",\n \"shortCode\": \"PM\"\n },\n {\n \"name\": \"Jaén\",\n \"translationKey\": \"spain_region_name_j\",\n \"shortCode\": \"J\"\n },\n {\n \"name\": \"León\",\n \"translationKey\": \"spain_region_name_le\",\n \"shortCode\": \"LE\"\n },\n {\n \"name\": \"Lleida\",\n \"translationKey\": \"spain_region_name_l\",\n \"shortCode\": \"L\"\n },\n {\n \"name\": \"Lugo\",\n \"translationKey\": \"spain_region_name_lu\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Madrid\",\n \"translationKey\": \"spain_region_name_m,\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Málaga\",\n \"translationKey\": \"spain_region_name_ma\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Melilla\",\n \"translationKey\": \"spain_region_name_ml\",\n \"shortCode\": \"ML\"\n },\n {\n \"name\": \"Murcia\",\n \"translationKey\": \"spain_region_name_mu\",\n \"shortCode\": \"MU\"\n },\n {\n \"name\": \"Navarra/Nafarroa\",\n \"translationKey\": \"spain_region_name_na\",\n \"shortCode\": \"NA\"\n },\n {\n \"name\": \"Ourense\",\n \"translationKey\": \"spain_region_name_or\",\n \"shortCode\": \"OR\"\n },\n {\n \"name\": \"Palencia\",\n \"translationKey\": \"spain_region_name_p\",\n \"shortCode\": \"P\"\n },\n {\n \"name\": \"Las Palmas\",\n \"translationKey\": \"spain_region_name_gc\",\n \"shortCode\": \"GC\"\n },\n {\n \"name\": \"Pontevedra\",\n \"translationKey\": \"spain_region_name_po\",\n \"shortCode\": \"PO\"\n },\n {\n \"name\": \"La Rioja\",\n \"translationKey\": \"spain_region_name_lo\",\n \"shortCode\": \"LO\"\n },\n {\n \"name\": \"Salamanca\",\n \"translationKey\": \"spain_region_name_sa\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Santa Cruz de Tenerife\",\n \"translationKey\": \"spain_region_name_tf\",\n \"shortCode\": \"TF\"\n },\n {\n \"name\": \"Segovia\",\n \"translationKey\": \"spain_region_name_sg\",\n \"shortCode\": \"SG\"\n },\n {\n \"name\": \"Sevilla\",\n \"translationKey\": \"spain_region_name_se\",\n \"shortCode\": \"SE\"\n },\n {\n \"name\": \"Soria\",\n \"translationKey\": \"spain_region_name_so\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Tarragona\",\n \"translationKey\": \"spain_region_name_t\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Teruel\",\n \"translationKey\": \"spain_region_name_te\",\n \"shortCode\": \"TE\"\n },\n {\n \"name\": \"Toledo\",\n \"translationKey\": \"spain_region_name_to\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Valencia/València\",\n \"translationKey\": \"spain_region_name_v\",\n \"shortCode\": \"V\"\n },\n {\n \"name\": \"Valladolid\",\n \"translationKey\": \"spain_region_name_va\",\n \"shortCode\": \"VA\"\n },\n {\n \"name\": \"Zamora\",\n \"translationKey\": \"spain_region_name_za\",\n \"shortCode\": \"ZA\"\n },\n {\n \"name\": \"Zaragoza\",\n \"translationKey\": \"spain_region_name_z\",\n \"shortCode\": \"Z\"\n }\n ]\n },\n // {\n // \"countryName\": \"Sri Lanka\",\n // \"countryShortCode\": \"LK\",\n // \"regions\": [\n // {\n // \"name\": \"Basnahira\",\n // \"shortCode\": \"1\"\n // },\n // {\n // \"name\": \"Dakunu\",\n // \"shortCode\": \"3\"\n // },\n // {\n // \"name\": \"Madhyama\",\n // \"shortCode\": \"2\"\n // },\n // {\n // \"name\": \"Naegenahira\",\n // \"shortCode\": \"5\"\n // },\n // {\n // \"name\": \"Sabaragamuwa\",\n // \"shortCode\": \"9\"\n // },\n // {\n // \"name\": \"Uturu\",\n // \"shortCode\": \"4\"\n // },\n // {\n // \"name\": \"Uturumaeda\",\n // \"shortCode\": \"7\"\n // },\n // {\n // \"name\": \"Vayamba\",\n // \"shortCode\": \"6\"\n // },\n // {\n // \"name\": \"Uva\",\n // \"shortCode\": \"8\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Sudan\",\n \"countryShortCode\": \"SD\",\n \"regions\": [\n {\n \"name\": \"Al Bahr al Ahmar\",\n \"shortCode\": \"RS\"\n },\n {\n \"name\": \"Al Jazirah\",\n \"shortCode\": \"GZ\"\n },\n {\n \"name\": \"Al Khartum\",\n \"shortCode\": \"KH\"\n },\n {\n \"name\": \"Al Qadarif\",\n \"shortCode\": \"GD\"\n },\n {\n \"name\": \"An Nil al Abyad\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"An Nil al Azraq\",\n \"shortCode\": \"NB\"\n },\n {\n \"name\": \"Ash Shamaliyah\",\n \"shortCode\": \"NO\"\n },\n {\n \"name\": \"Gharb Darfur\",\n \"shortCode\": \"DW\"\n },\n {\n \"name\": \"Gharb Kurdufan\",\n \"shortCode\": \"GK\"\n },\n {\n \"name\": \"Janub Darfur\",\n \"shortCode\": \"DS\"\n },\n {\n \"name\": \"Janub Kurdufan\",\n \"shortCode\": \"KS\"\n },\n {\n \"name\": \"Kassala\",\n \"shortCode\": \"KA\"\n },\n {\n \"name\": \"Nahr an Nil\",\n \"shortCode\": \"NR\"\n },\n {\n \"name\": \"Shamal Darfur\",\n \"shortCode\": \"DN\"\n },\n {\n \"name\": \"Sharq Darfur\",\n \"shortCode\": \"DE\"\n },\n {\n \"name\": \"Shiamal Kurdufan\",\n \"shortCode\": \"KN\"\n },\n {\n \"name\": \"Sinnar\",\n \"shortCode\": \"SI\"\n },\n {\n \"name\": \"Wasat Darfur Zalinjay\",\n \"shortCode\": \"DC\"\n }\n ]\n },\n // {\n // \"countryName\": \"Suriname\",\n // \"countryShortCode\": \"SR\",\n // \"regions\": [\n // {\n // \"name\": \"Brokopondo\",\n // \"shortCode\": \"BR\"\n // },\n // {\n // \"name\": \"Commewijne\",\n // \"shortCode\": \"CM\"\n // },\n // {\n // \"name\": \"Coronie\",\n // \"shortCode\": \"CR\"\n // },\n // {\n // \"name\": \"Marowijne\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Nickerie\",\n // \"shortCode\": \"NI\"\n // },\n // {\n // \"name\": \"Para\",\n // \"shortCode\": \"PR\"\n // },\n // {\n // \"name\": \"Paramaribo\",\n // \"shortCode\": \"PM\"\n // },\n // {\n // \"name\": \"Saramacca\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"Sipaliwini\",\n // \"shortCode\": \"SI\"\n // },\n // {\n // \"name\": \"Wanica\",\n // \"shortCode\": \"WA\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Swaziland\",\n // \"countryShortCode\": \"SZ\",\n // \"regions\": [\n // {\n // \"name\": \"Hhohho\",\n // \"shortCode\": \"HH\"\n // },\n // {\n // \"name\": \"Lubombo\",\n // \"shortCode\": \"LU\"\n // },\n // {\n // \"name\": \"Manzini\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Shiselweni\",\n // \"shortCode\": \"SH\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Sweden\",\n \"translationKey\": \"country_name_sweden\",\n \"countryShortCode\": \"SE\",\n \"regions\": [\n {\n \"name\": \"Blekinge\",\n \"translationKey\": \"sweden_region_name_k\",\n \"shortCode\": \"K\"\n },\n {\n \"name\": \"Dalarna\",\n \"translationKey\": \"sweden_region_name_w\",\n \"shortCode\": \"W\"\n },\n {\n \"name\": \"Gävleborg\",\n \"translationKey\": \"sweden_region_name_x\",\n \"shortCode\": \"X\"\n },\n {\n \"name\": \"Gotland\",\n \"translationKey\": \"sweden_region_name_i\",\n \"shortCode\": \"I\"\n },\n {\n \"name\": \"Halland\",\n \"translationKey\": \"sweden_region_name_n\",\n \"shortCode\": \"N\"\n },\n {\n \"name\": \"Jämtland\",\n \"translationKey\": \"sweden_region_name_z\",\n \"shortCode\": \"Z\"\n },\n {\n \"name\": \"Jönköping\",\n \"translationKey\": \"sweden_region_name_f\",\n \"shortCode\": \"F\"\n },\n {\n \"name\": \"Kalmar\",\n \"translationKey\": \"sweden_region_name_h\",\n \"shortCode\": \"H\"\n },\n {\n \"name\": \"Kronoberg\",\n \"translationKey\": \"sweden_region_name_g\",\n \"shortCode\": \"G\"\n },\n {\n \"name\": \"Norrbotten\",\n \"translationKey\": \"sweden_region_name_bd\",\n \"shortCode\": \"BD\"\n },\n {\n \"name\": \"Örebro\",\n \"translationKey\": \"sweden_region_name_t\",\n \"shortCode\": \"T\"\n },\n {\n \"name\": \"Östergötland\",\n \"translationKey\": \"sweden_region_name_e\",\n \"shortCode\": \"E\"\n },\n {\n \"name\": \"Skåne\",\n \"translationKey\": \"sweden_region_name_m\",\n \"shortCode\": \"M\"\n },\n {\n \"name\": \"Södermanland\",\n \"translationKey\": \"sweden_region_name_d\",\n \"shortCode\": \"D\"\n },\n {\n \"name\": \"Stockholm\",\n \"translationKey\": \"sweden_region_name_ab\",\n \"shortCode\": \"AB\"\n },\n {\n \"name\": \"Uppsala\",\n \"translationKey\": \"sweden_region_name_c\",\n \"shortCode\": \"C\"\n },\n {\n \"name\": \"Värmland\",\n \"translationKey\": \"sweden_region_name_s\",\n \"shortCode\": \"S\"\n },\n {\n \"name\": \"Västerbotten\",\n \"translationKey\": \"sweden_region_name_ac\",\n \"shortCode\": \"AC\"\n },\n {\n \"name\": \"Västernorrland\",\n \"translationKey\": \"sweden_region_name_y\",\n \"shortCode\": \"Y\"\n },\n {\n \"name\": \"Västmanland\",\n \"translationKey\": \"sweden_region_name_u\",\n \"shortCode\": \"U\"\n },\n {\n \"name\": \"Västra Götaland\",\n \"translationKey\": \"sweden_region_name_o\",\n \"shortCode\": \"O\"\n }\n ]\n },\n {\n \"countryName\": \"Switzerland\",\n \"countryShortCode\": \"CH\",\n \"regions\": [\n {\n \"name\": \"Aargau\",\n \"shortCode\": \"AG\"\n },\n {\n \"name\": \"Appenzell Ausserrhoden\",\n \"shortCode\": \"AR\"\n },\n {\n \"name\": \"Appenzell Innerhoden\",\n \"shortCode\": \"AI\"\n },\n {\n \"name\": \"Basel-Landschaft\",\n \"shortCode\": \"BL\"\n },\n {\n \"name\": \"Basel-Stadt\",\n \"shortCode\": \"BS\"\n },\n {\n \"name\": \"Bern\",\n \"shortCode\": \"BE\"\n },\n {\n \"name\": \"Fribourg\",\n \"shortCode\": \"FR\"\n },\n {\n \"name\": \"Genève\",\n \"shortCode\": \"GE\"\n },\n {\n \"name\": \"Glarus\",\n \"shortCode\": \"GL\"\n },\n {\n \"name\": \"Graubünden\",\n \"shortCode\": \"GR\"\n },\n {\n \"name\": \"Jura\",\n \"shortCode\": \"JU\"\n },\n {\n \"name\": \"Luzern\",\n \"shortCode\": \"LU\"\n },\n {\n \"name\": \"Neuchâtel\",\n \"shortCode\": \"NE\"\n },\n {\n \"name\": \"Nidwalden\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Obwalden\",\n \"shortCode\": \"OW\"\n },\n {\n \"name\": \"Sankt Gallen\",\n \"shortCode\": \"SG\"\n },\n {\n \"name\": \"Schaffhausen\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Schwyz\",\n \"shortCode\": \"SZ\"\n },\n {\n \"name\": \"Solothurn\",\n \"shortCode\": \"SO\"\n },\n {\n \"name\": \"Thurgau\",\n \"shortCode\": \"TG\"\n },\n {\n \"name\": \"Ticino\",\n \"shortCode\": \"TI\"\n },\n {\n \"name\": \"Uri\",\n \"shortCode\": \"UR\"\n },\n {\n \"name\": \"Valais\",\n \"shortCode\": \"VS\"\n },\n {\n \"name\": \"Vaud\",\n \"shortCode\": \"VD\"\n },\n {\n \"name\": \"Zug\",\n \"shortCode\": \"ZG\"\n },\n {\n \"name\": \"Zürich\",\n \"shortCode\": \"ZH\"\n }\n ]\n },\n // {\n // \"countryName\": \"Syrian Arab Republic\",\n // \"countryShortCode\": \"SY\",\n // \"regions\": [\n // {\n // \"name\": \"Al Hasakah\",\n // \"shortCode\": \"HA\"\n // },\n // {\n // \"name\": \"Al Ladhiqiyah\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Al Qunaytirah\",\n // \"shortCode\": \"QU\"\n // },\n // {\n // \"name\": \"Ar Raqqah\",\n // \"shortCode\": \"RA\"\n // },\n // {\n // \"name\": \"As Suwayda'\",\n // \"shortCode\": \"SU\"\n // },\n // {\n // \"name\": \"Dar'a\",\n // \"shortCode\": \"DR\"\n // },\n // {\n // \"name\": \"Dayr az Zawr\",\n // \"shortCode\": \"DY\"\n // },\n // {\n // \"name\": \"Dimashq\",\n // \"shortCode\": \"DI\"\n // },\n // {\n // \"name\": \"Halab\",\n // \"shortCode\": \"HL\"\n // },\n // {\n // \"name\": \"Hamah\",\n // \"shortCode\": \"HM\"\n // },\n // {\n // \"name\": \"Hims\",\n // \"shortCode\": \"HI\"\n // },\n // {\n // \"name\": \"Idlib\",\n // \"shortCode\": \"ID\"\n // },\n // {\n // \"name\": \"Rif Dimashq\",\n // \"shortCode\": \"RD\"\n // },\n // {\n // \"name\": \"Tartus\",\n // \"shortCode\": \"TA\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Taiwan\",\n // \"countryShortCode\": \"TW\",\n // \"regions\": [\n // {\n // \"name\": \"Chang-hua\",\n // \"shortCode\": \"CHA\"\n // },\n // {\n // \"name\": \"Chia-i\",\n // \"shortCode\": \"CYQ\"\n // },\n // {\n // \"name\": \"Hsin-chu\",\n // \"shortCode\": \"HSQ\"\n // },\n // {\n // \"name\": \"Hua-lien\",\n // \"shortCode\": \"HUA\"\n // },\n // {\n // \"name\": \"Kao-hsiung\",\n // \"shortCode\": \"KHH\"\n // },\n // {\n // \"name\": \"Keelung\",\n // \"shortCode\": \"KEE\"\n // },\n // {\n // \"name\": \"Kinmen\",\n // \"shortCode\": \"KIN\"\n // },\n // {\n // \"name\": \"Lienchiang\",\n // \"shortCode\": \"LIE\"\n // },\n // {\n // \"name\": \"Miao-li\",\n // \"shortCode\": \"MIA\"\n // },\n // {\n // \"name\": \"Nan-t'ou\",\n // \"shortCode\": \"NAN\"\n // },\n // {\n // \"name\": \"P'eng-hu\",\n // \"shortCode\": \"PEN\"\n // },\n // {\n // \"name\": \"New Taipei\",\n // \"shortCode\": \"NWT\"\n // },\n // {\n // \"name\": \"P'ing-tung\",\n // \"shortCode\": \"PING\"\n // },\n // {\n // \"name\": \"T'ai-chung\",\n // \"shortCode\": \"TXG\"\n // },\n // {\n // \"name\": \"T'ai-nan\",\n // \"shortCode\": \"TNN\"\n // },\n // {\n // \"name\": \"T'ai-pei\",\n // \"shortCode\": \"TPE\"\n // },\n // {\n // \"name\": \"T'ai-tung\",\n // \"shortCode\": \"TTT\"\n // },\n // {\n // \"name\": \"T'ao-yuan\",\n // \"shortCode\": \"TAO\"\n // },\n // {\n // \"name\": \"Yi-lan\",\n // \"shortCode\": \"ILA\"\n // },\n // {\n // \"name\": \"Yun-lin\",\n // \"shortCode\": \"YUN\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Tajikistan\",\n // \"countryShortCode\": \"TJ\",\n // \"regions\": [\n // {\n // \"name\": \"Dushanbe\",\n // \"shortCode\": \"DU\"\n // },\n // {\n // \"name\": \"Kŭhistoni Badakhshon\",\n // \"shortCode\": \"GB\"\n // },\n // {\n // \"name\": \"Khatlon\",\n // \"shortCode\": \"KT\"\n // },\n // {\n // \"name\": \"Sughd\",\n // \"shortCode\": \"SU\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Tanzania, United Republic of\",\n \"countryShortCode\": \"TZ\",\n \"regions\": [\n {\n \"name\": \"Arusha\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Coast\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Dar es Salaam\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Dodoma\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Iringa\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Kagera\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Kigoma\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Kilimanjaro\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Lindi\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Manyara\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Mara\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Mbeya\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Morogoro\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Mtwara\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Mwanza\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Pemba North\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Pemba South\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Rukwa\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Ruvuma\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Shinyanga\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Singida\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Tabora\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Tanga\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Zanzibar North\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Zanzibar Central/South\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Zanzibar Urban/West\",\n \"shortCode\": \"15\"\n }\n ]\n },\n // {\n // \"countryName\": \"Thailand\",\n // \"countryShortCode\": \"TH\",\n // \"regions\": [\n // {\n // \"name\": \"Amnat Charoen\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"Ang Thong\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Bueng Kan\",\n // \"shortCode\": \"38\"\n // },\n // {\n // \"name\": \"Buri Ram\",\n // \"shortCode\": \"31\"\n // },\n // {\n // \"name\": \"Chachoengsao\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Chai Nat\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Chaiyaphum\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"Chanthaburi\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Chiang Mai\",\n // \"shortCode\": \"50\"\n // },\n // {\n // \"name\": \"Chiang Rai\",\n // \"shortCode\": \"57\"\n // },\n // {\n // \"name\": \"Chon Buri\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Chumphon\",\n // \"shortCode\": \"86\"\n // },\n // {\n // \"name\": \"Kalasin\",\n // \"shortCode\": \"46\"\n // },\n // {\n // \"name\": \"Kamphaeng Phet\",\n // \"shortCode\": \"62\"\n // },\n // {\n // \"name\": \"Kanchanaburi\",\n // \"shortCode\": \"71\"\n // },\n // {\n // \"name\": \"Khon Kaen\",\n // \"shortCode\": \"40\"\n // },\n // {\n // \"name\": \"Krabi\",\n // \"shortCode\": \"81\"\n // },\n // {\n // \"name\": \"Krung Thep Mahanakhon (Bangkok)\",\n // \"shortCode\": \"10\"\n // },\n // {\n // \"name\": \"Lampang\",\n // \"shortCode\": \"52\"\n // },\n // {\n // \"name\": \"Lamphun\",\n // \"shortCode\": \"51\"\n // },\n // {\n // \"name\": \"Loei\",\n // \"shortCode\": \"42\"\n // },\n // {\n // \"name\": \"Lop Buri\",\n // \"shortCode\": \"16\"\n // },\n // {\n // \"name\": \"Mae Hong Son\",\n // \"shortCode\": \"58\"\n // },\n // {\n // \"name\": \"Maha Sarakham\",\n // \"shortCode\": \"44\"\n // },\n // {\n // \"name\": \"Mukdahan\",\n // \"shortCode\": \"49\"\n // },\n // {\n // \"name\": \"Nakhon Nayok\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Nakhon Phathom\",\n // \"shortCode\": \"73\"\n // },\n // {\n // \"name\": \"Nakhon Phanom\",\n // \"shortCode\": \"48\"\n // },\n // {\n // \"name\": \"Nakhon Ratchasima\",\n // \"shortCode\": \"30\"\n // },\n // {\n // \"name\": \"Nakhon Sawan\",\n // \"shortCode\": \"60\"\n // },\n // {\n // \"name\": \"Nakhon Si Thammarat\",\n // \"shortCode\": \"80\"\n // },\n // {\n // \"name\": \"Nan\",\n // \"shortCode\": \"55\"\n // },\n // {\n // \"name\": \"Narathiwat\",\n // \"shortCode\": \"96\"\n // },\n // {\n // \"name\": \"Nong Bua Lam Phu\",\n // \"shortCode\": \"39\"\n // },\n // {\n // \"name\": \"Nong Khai\",\n // \"shortCode\": \"43\"\n // },\n // {\n // \"name\": \"Nonthaburi\",\n // \"shortCode\": \"12\"\n // },\n // {\n // \"name\": \"Pathum Thani\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Pattani\",\n // \"shortCode\": \"94\"\n // },\n // {\n // \"name\": \"Phangnga\",\n // \"shortCode\": \"82\"\n // },\n // {\n // \"name\": \"Phatthalung\",\n // \"shortCode\": \"93\"\n // },\n // {\n // \"name\": \"Phayao\",\n // \"shortCode\": \"56\"\n // },\n // {\n // \"name\": \"Phetchabun\",\n // \"shortCode\": \"67\"\n // },\n // {\n // \"name\": \"Phetchaburi\",\n // \"shortCode\": \"76\"\n // },\n // {\n // \"name\": \"Phichit\",\n // \"shortCode\": \"66\"\n // },\n // {\n // \"name\": \"Phitsanulok\",\n // \"shortCode\": \"65\"\n // },\n // {\n // \"name\": \"Phra Nakhon Si Ayutthaya\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Phrae\",\n // \"shortCode\": \"54\"\n // },\n // {\n // \"name\": \"Phuket\",\n // \"shortCode\": \"83\"\n // },\n // {\n // \"name\": \"Prachin Buri\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Prachuap Khiri Khan\",\n // \"shortCode\": \"77\"\n // },\n // {\n // \"name\": \"Ranong\",\n // \"shortCode\": \"85\"\n // },\n // {\n // \"name\": \"Ratchaburi\",\n // \"shortCode\": \"70\"\n // },\n // {\n // \"name\": \"Rayong\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Roi Et\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Sa Kaeo\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Sakon Nakhon\",\n // \"shortCode\": \"47\"\n // },\n // {\n // \"name\": \"Samut Prakan\",\n // \"shortCode\": \"11\"\n // },\n // {\n // \"name\": \"Samut Sakhon\",\n // \"shortCode\": \"74\"\n // },\n // {\n // \"name\": \"Samut Songkhram\",\n // \"shortCode\": \"75\"\n // },\n // {\n // \"name\": \"Saraburi\",\n // \"shortCode\": \"19\"\n // },\n // {\n // \"name\": \"Satun\",\n // \"shortCode\": \"91\"\n // },\n // {\n // \"name\": \"Sing Buri\",\n // \"shortCode\": \"17\"\n // },\n // {\n // \"name\": \"Si Sa ket\",\n // \"shortCode\": \"33\"\n // },\n // {\n // \"name\": \"Songkhla\",\n // \"shortCode\": \"90\"\n // },\n // {\n // \"name\": \"Sukhothai\",\n // \"shortCode\": \"64\"\n // },\n // {\n // \"name\": \"Suphan Buri\",\n // \"shortCode\": \"72\"\n // },\n // {\n // \"name\": \"Surat Thani\",\n // \"shortCode\": \"84\"\n // },\n // {\n // \"name\": \"Surin\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Tak\",\n // \"shortCode\": \"63\"\n // },\n // {\n // \"name\": \"Trang\",\n // \"shortCode\": \"92\"\n // },\n // {\n // \"name\": \"Trat\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Ubon Ratchathani\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Udon Thani\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Uthai Thani\",\n // \"shortCode\": \"61\"\n // },\n // {\n // \"name\": \"Uttaradit\",\n // \"shortCode\": \"53\"\n // },\n // {\n // \"name\": \"Yala\",\n // \"shortCode\": \"95\"\n // },\n // {\n // \"name\": \"Yasothon\",\n // \"shortCode\": \"35\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Timor-Leste\",\n // \"countryShortCode\": \"TL\",\n // \"regions\": [\n // {\n // \"name\": \"Aileu\",\n // \"shortCode\": \"AL\"\n // },\n // {\n // \"name\": \"Ainaro\",\n // \"shortCode\": \"AN\"\n // },\n // {\n // \"name\": \"Baucau\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Bobonaro\",\n // \"shortCode\": \"BO\"\n // },\n // {\n // \"name\": \"Cova Lima\",\n // \"shortCode\": \"CO\"\n // },\n // {\n // \"name\": \"Dili\",\n // \"shortCode\": \"DI\"\n // },\n // {\n // \"name\": \"Ermera\",\n // \"shortCode\": \"ER\"\n // },\n // {\n // \"name\": \"Lautem\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Liquica\",\n // \"shortCode\": \"LI\"\n // },\n // {\n // \"name\": \"Manatuto\",\n // \"shortCode\": \"MT\"\n // },\n // {\n // \"name\": \"Manufahi\",\n // \"shortCode\": \"MF\"\n // },\n // {\n // \"name\": \"Oecussi\",\n // \"shortCode\": \"OE\"\n // },\n // {\n // \"name\": \"Viqueque\",\n // \"shortCode\": \"VI\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Togo\",\n // \"countryShortCode\": \"TG\",\n // \"regions\": [\n // {\n // \"name\": \"Centre\",\n // \"shortCode\": \"C\"\n // },\n // {\n // \"name\": \"Kara\",\n // \"shortCode\": \"K\"\n // },\n // {\n // \"name\": \"Maritime\",\n // \"shortCode\": \"M\"\n // },\n // {\n // \"name\": \"Plateaux\",\n // \"shortCode\": \"P\"\n // },\n // {\n // \"name\": \"Savannes\",\n // \"shortCode\": \"S\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Tokelau\",\n // \"countryShortCode\": \"TK\",\n // \"regions\": [\n // {\n // \"name\": \"Atafu\"\n // },\n // {\n // \"name\": \"Fakaofo\"\n // },\n // {\n // \"name\": \"Nukunonu\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Tonga\",\n // \"countryShortCode\": \"TO\",\n // \"regions\": [\n // {\n // \"name\": \"'Eua\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Ha'apai\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Niuas\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Tongatapu\",\n // \"shortCode\": \"04\"\n // },\n // {\n // \"name\": \"Vava'u\",\n // \"shortCode\": \"05\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Trinidad and Tobago\",\n // \"countryShortCode\": \"TT\",\n // \"regions\": [\n // {\n // \"name\": \"Arima\",\n // \"shortCode\": \"ARI\"\n // },\n // {\n // \"name\": \"Chaguanas\",\n // \"shortCode\": \"CHA\"\n // },\n // {\n // \"name\": \"Couva-Tabaquite-Talparo\",\n // \"shortCode\": \"CTT\"\n // },\n // {\n // \"name\": \"Diefo Martin\",\n // \"shortCode\": \"DMN\"\n // },\n // {\n // \"name\": \"Mayaro-Rio Claro\",\n // \"shortCode\": \"MRC\"\n // },\n // {\n // \"name\": \"Penal-Debe\",\n // \"shortCode\": \"PED\"\n // },\n // {\n // \"name\": \"Point Fortin\",\n // \"shortCode\": \"PTF\"\n // },\n // {\n // \"name\": \"Port-of-Spain\",\n // \"shortCode\": \"POS\"\n // },\n // {\n // \"name\": \"Princes Town\",\n // \"shortCode\": \"PRT\"\n // },\n // {\n // \"name\": \"San Fernando\",\n // \"shortCode\": \"SFO\"\n // },\n // {\n // \"name\": \"San Juan-Laventille\",\n // \"shortCode\": \"SJL\"\n // },\n // {\n // \"name\": \"Sangre Grande\",\n // \"shortCode\": \"SGE\"\n // },\n // {\n // \"name\": \"Siparia\",\n // \"shortCode\": \"SIP\"\n // },\n // {\n // \"name\": \"Tobago\",\n // \"shortCode\": \"TOB\"\n // },\n // {\n // \"name\": \"Tunapuna-Piarco\",\n // \"shortCode\": \"TUP\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Tunisia\",\n \"countryShortCode\": \"TN\",\n \"regions\": [\n {\n \"name\": \"Ariana\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Beja\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Ben Arous\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Bizerte\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Gabes\",\n \"shortCode\": \"81\"\n },\n {\n \"name\": \"Gafsa\",\n \"shortCode\": \"71\"\n },\n {\n \"name\": \"Jendouba\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Kairouan\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Kasserine\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Kebili\",\n \"shortCode\": \"73\"\n },\n {\n \"name\": \"Kef\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Mahdia\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Medenine\",\n \"shortCode\": \"82\"\n },\n {\n \"name\": \"Monastir\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Nabeul\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Sfax\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Sidi Bouzid\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Siliana\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Sousse\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Tataouine\",\n \"shortCode\": \"83\"\n },\n {\n \"name\": \"Tozeur\",\n \"shortCode\": \"72\"\n },\n {\n \"name\": \"Tunis\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Zaghouan\",\n \"shortCode\": \"22\"\n }\n ]\n },\n {\n \"countryName\": \"Turkey\",\n \"countryShortCode\": \"TR\",\n \"regions\": [\n {\n \"name\": \"Adana\",\n \"shortCode\": \"01\"\n },\n {\n \"name\": \"Adiyaman\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Afyonkarahisar\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Agri\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Aksaray\",\n \"shortCode\": \"68\"\n },\n {\n \"name\": \"Amasya\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Ankara\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Antalya\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Ardahan\",\n \"shortCode\": \"75\"\n },\n {\n \"name\": \"Artvin\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Aydin\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Balikesir\",\n \"shortCode\": \"10\"\n },\n {\n \"name\": \"Bartin\",\n \"shortCode\": \"74\"\n },\n {\n \"name\": \"Batman\",\n \"shortCode\": \"72\"\n },\n {\n \"name\": \"Bayburt\",\n \"shortCode\": \"69\"\n },\n {\n \"name\": \"Bilecik\",\n \"shortCode\": \"11\"\n },\n {\n \"name\": \"Bingol\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Bitlis\",\n \"shortCode\": \"13\"\n },\n {\n \"name\": \"Bolu\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Burdur\",\n \"shortCode\": \"15\"\n },\n {\n \"name\": \"Bursa\",\n \"shortCode\": \"16\"\n },\n {\n \"name\": \"Canakkale\",\n \"shortCode\": \"17\"\n },\n {\n \"name\": \"Cankiri\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Corum\",\n \"shortCode\": \"19\"\n },\n {\n \"name\": \"Denizli\",\n \"shortCode\": \"20\"\n },\n {\n \"name\": \"Diyarbakir\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Duzce\",\n \"shortCode\": \"81\"\n },\n {\n \"name\": \"Edirne\",\n \"shortCode\": \"22\"\n },\n {\n \"name\": \"Elazig\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Erzincan\",\n \"shortCode\": \"24\"\n },\n {\n \"name\": \"Erzurum\",\n \"shortCode\": \"25\"\n },\n {\n \"name\": \"Eskisehir\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Gaziantep\",\n \"shortCode\": \"27\"\n },\n {\n \"name\": \"Giresun\",\n \"shortCode\": \"28\"\n },\n {\n \"name\": \"Gumushane\",\n \"shortCode\": \"29\"\n },\n {\n \"name\": \"Hakkari\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Hatay\",\n \"shortCode\": \"31\"\n },\n {\n \"name\": \"Igdir\",\n \"shortCode\": \"76\"\n },\n {\n \"name\": \"Isparta\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Istanbul\",\n \"shortCode\": \"34\"\n },\n {\n \"name\": \"Izmir\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Kahramanmaras\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Karabuk\",\n \"shortCode\": \"78\"\n },\n {\n \"name\": \"Karaman\",\n \"shortCode\": \"70\"\n },\n {\n \"name\": \"Kars\",\n \"shortCode\": \"36\"\n },\n {\n \"name\": \"Kastamonu\",\n \"shortCode\": \"37\"\n },\n {\n \"name\": \"Kayseri\",\n \"shortCode\": \"38\"\n },\n {\n \"name\": \"Kilis\",\n \"shortCode\": \"79\"\n },\n {\n \"name\": \"Kirikkale\",\n \"shortCode\": \"71\"\n },\n {\n \"name\": \"Kirklareli\",\n \"shortCode\": \"39\"\n },\n {\n \"name\": \"Kirsehir\",\n \"shortCode\": \"40\"\n },\n {\n \"name\": \"Kocaeli\",\n \"shortCode\": \"41\"\n },\n {\n \"name\": \"Konya\",\n \"shortCode\": \"42\"\n },\n {\n \"name\": \"Kutahya\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Malatya\",\n \"shortCode\": \"44\"\n },\n {\n \"name\": \"Manisa\",\n \"shortCode\": \"45\"\n },\n {\n \"name\": \"Mardin\",\n \"shortCode\": \"47\"\n },\n {\n \"name\": \"Mersin\",\n \"shortCode\": \"33\"\n },\n {\n \"name\": \"Mugla\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"Mus\",\n \"shortCode\": \"49\"\n },\n {\n \"name\": \"Nevsehir\",\n \"shortCode\": \"50\"\n },\n {\n \"name\": \"Nigde\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Ordu\",\n \"shortCode\": \"52\"\n },\n {\n \"name\": \"Osmaniye\",\n \"shortCode\": \"80\"\n },\n {\n \"name\": \"Rize\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Sakarya\",\n \"shortCode\": \"54\"\n },\n {\n \"name\": \"Samsun\",\n \"shortCode\": \"55\"\n },\n {\n \"name\": \"Sanliurfa\",\n \"shortCode\": \"63\"\n },\n {\n \"name\": \"Siirt\",\n \"shortCode\": \"56\"\n },\n {\n \"name\": \"Sinop\",\n \"shortCode\": \"57\"\n },\n {\n \"name\": \"Sirnak\",\n \"shortCode\": \"73\"\n },\n {\n \"name\": \"Sivas\",\n \"shortCode\": \"58\"\n },\n {\n \"name\": \"Tekirdag\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Tokat\",\n \"shortCode\": \"60\"\n },\n {\n \"name\": \"Trabzon\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Tunceli\",\n \"shortCode\": \"62\"\n },\n {\n \"name\": \"Usak\",\n \"shortCode\": \"64\"\n },\n {\n \"name\": \"Van\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Yalova\",\n \"shortCode\": \"77\"\n },\n {\n \"name\": \"Yozgat\",\n \"shortCode\": \"66\"\n },\n {\n \"name\": \"Zonguldak\",\n \"shortCode\": \"67\"\n }\n ]\n },\n // {\n // \"countryName\": \"Turkmenistan\",\n // \"countryShortCode\": \"TM\",\n // \"regions\": [\n // {\n // \"name\": \"Ahal\",\n // \"shortCode\": \"A\"\n // },\n // {\n // \"name\": \"Asgabat\",\n // \"shortCode\": \"S\"\n // },\n // {\n // \"name\": \"Balkan\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Dashoguz\",\n // \"shortCode\": \"D\"\n // },\n // {\n // \"name\": \"Lebap\",\n // \"shortCode\": \"L\"\n // },\n // {\n // \"name\": \"Mary\",\n // \"shortCode\": \"M\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Turks and Caicos Islands\",\n // \"countryShortCode\": \"TC\",\n // \"regions\": [\n // {\n // \"name\": \"Turks and Caicos Islands\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Tuvalu\",\n // \"countryShortCode\": \"TV\",\n // \"regions\": [\n // {\n // \"name\": \"Funafuti\",\n // \"shortCode\": \"FUN\"\n // },\n // {\n // \"name\": \"Nanumanga\",\n // \"shortCode\": \"NMG\"\n // },\n // {\n // \"name\": \"Nanumea\",\n // \"shortCode\": \"NMA\"\n // },\n // {\n // \"name\": \"Niutao\",\n // \"shortCode\": \"NIT\"\n // },\n // {\n // \"name\": \"Nui\",\n // \"shortCode\": \"NUI\"\n // },\n // {\n // \"name\": \"Nukufetau\",\n // \"shortCode\": \"NKF\"\n // },\n // {\n // \"name\": \"Nukulaelae\",\n // \"shortCode\": \"NKL\"\n // },\n // {\n // \"name\": \"Vaitupu\",\n // \"shortCode\": \"VAU\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Uganda\",\n // \"countryShortCode\": \"UG\",\n // \"regions\": [\n // {\n // \"name\": \"Abim\",\n // \"shortCode\": \"317\"\n // },\n // {\n // \"name\": \"Adjumani\",\n // \"shortCode\": \"301\"\n // },\n // {\n // \"name\": \"Amolatar\",\n // \"shortCode\": \"314\"\n // },\n // {\n // \"name\": \"Amuria\",\n // \"shortCode\": \"216\"\n // },\n // {\n // \"name\": \"Amuru\",\n // \"shortCode\": \"319\"\n // },\n // {\n // \"name\": \"Apac\",\n // \"shortCode\": \"302\"\n // },\n // {\n // \"name\": \"Arua\",\n // \"shortCode\": \"303\"\n // },\n // {\n // \"name\": \"Budaka\",\n // \"shortCode\": \"217\"\n // },\n // {\n // \"name\": \"Bududa\",\n // \"shortCode\": \"223\"\n // },\n // {\n // \"name\": \"Bugiri\",\n // \"shortCode\": \"201\"\n // },\n // {\n // \"name\": \"Bukedea\",\n // \"shortCode\": \"224\"\n // },\n // {\n // \"name\": \"Bukwa\",\n // \"shortCode\": \"218\"\n // },\n // {\n // \"name\": \"Buliisa\",\n // \"shortCode\": \"419\"\n // },\n // {\n // \"name\": \"Bundibugyo\",\n // \"shortCode\": \"401\"\n // },\n // {\n // \"name\": \"Bushenyi\",\n // \"shortCode\": \"402\"\n // },\n // {\n // \"name\": \"Busia\",\n // \"shortCode\": \"202\"\n // },\n // {\n // \"name\": \"Butaleja\",\n // \"shortCode\": \"219\"\n // },\n // {\n // \"name\": \"Dokolo\",\n // \"shortCode\": \"318\"\n // },\n // {\n // \"name\": \"Gulu\",\n // \"shortCode\": \"304\"\n // },\n // {\n // \"name\": \"Hoima\",\n // \"shortCode\": \"403\"\n // },\n // {\n // \"name\": \"Ibanda\",\n // \"shortCode\": \"416\"\n // },\n // {\n // \"name\": \"Iganga\",\n // \"shortCode\": \"203\"\n // },\n // {\n // \"name\": \"Isingiro\",\n // \"shortCode\": \"417\"\n // },\n // {\n // \"name\": \"Jinja\",\n // \"shortCode\": \"204\"\n // },\n // {\n // \"name\": \"Kaabong\",\n // \"shortCode\": \"315\"\n // },\n // {\n // \"name\": \"Kabale\",\n // \"shortCode\": \"404\"\n // },\n // {\n // \"name\": \"Kabarole\",\n // \"shortCode\": \"405\"\n // },\n // {\n // \"name\": \"Kaberamaido\",\n // \"shortCode\": \"213\"\n // },\n // {\n // \"name\": \"Kalangala\",\n // \"shortCode\": \"101\"\n // },\n // {\n // \"name\": \"Kaliro\",\n // \"shortCode\": \"220\"\n // },\n // {\n // \"name\": \"Kampala\",\n // \"shortCode\": \"102\"\n // },\n // {\n // \"name\": \"Kamuli\",\n // \"shortCode\": \"205\"\n // },\n // {\n // \"name\": \"Kamwenge\",\n // \"shortCode\": \"413\"\n // },\n // {\n // \"name\": \"Kanungu\",\n // \"shortCode\": \"414\"\n // },\n // {\n // \"name\": \"Kapchorwa\",\n // \"shortCode\": \"206\"\n // },\n // {\n // \"name\": \"Kasese\",\n // \"shortCode\": \"406\"\n // },\n // {\n // \"name\": \"Katakwi\",\n // \"shortCode\": \"207\"\n // },\n // {\n // \"name\": \"Kayunga\",\n // \"shortCode\": \"112\"\n // },\n // {\n // \"name\": \"Kibaale\",\n // \"shortCode\": \"407\"\n // },\n // {\n // \"name\": \"Kiboga\",\n // \"shortCode\": \"103\"\n // },\n // {\n // \"name\": \"Kiruhura\",\n // \"shortCode\": \"418\"\n // },\n // {\n // \"name\": \"Kisoro\",\n // \"shortCode\": \"408\"\n // },\n // {\n // \"name\": \"Kitgum\",\n // \"shortCode\": \"305\"\n // },\n // {\n // \"name\": \"Koboko\",\n // \"shortCode\": \"316\"\n // },\n // {\n // \"name\": \"Kotido\",\n // \"shortCode\": \"306\"\n // },\n // {\n // \"name\": \"Kumi\",\n // \"shortCode\": \"208\"\n // },\n // {\n // \"name\": \"Kyenjojo\",\n // \"shortCode\": \"415\"\n // },\n // {\n // \"name\": \"Lira\",\n // \"shortCode\": \"307\"\n // },\n // {\n // \"name\": \"Luwero\",\n // \"shortCode\": \"104\"\n // },\n // {\n // \"name\": \"Lyantonde\",\n // \"shortCode\": \"116\"\n // },\n // {\n // \"name\": \"Manafwa\",\n // \"shortCode\": \"221\"\n // },\n // {\n // \"name\": \"Maracha\",\n // \"shortCode\": \"320\"\n // },\n // {\n // \"name\": \"Masaka\",\n // \"shortCode\": \"105\"\n // },\n // {\n // \"name\": \"Masindi\",\n // \"shortCode\": \"409\"\n // },\n // {\n // \"name\": \"Mayuge\",\n // \"shortCode\": \"214\"\n // },\n // {\n // \"name\": \"Mbale\",\n // \"shortCode\": \"209\"\n // },\n // {\n // \"name\": \"Mbarara\",\n // \"shortCode\": \"410\"\n // },\n // {\n // \"name\": \"Mityana\",\n // \"shortCode\": \"114\"\n // },\n // {\n // \"name\": \"Moroto\",\n // \"shortCode\": \"308\"\n // },\n // {\n // \"name\": \"Moyo\",\n // \"shortCode\": \"309\"\n // },\n // {\n // \"name\": \"Mpigi\",\n // \"shortCode\": \"106\"\n // },\n // {\n // \"name\": \"Mubende\",\n // \"shortCode\": \"107\"\n // },\n // {\n // \"name\": \"Mukono\",\n // \"shortCode\": \"108\"\n // },\n // {\n // \"name\": \"Nakapiripirit\",\n // \"shortCode\": \"311\"\n // },\n // {\n // \"name\": \"Nakaseke\",\n // \"shortCode\": \"115\"\n // },\n // {\n // \"name\": \"Nakasongola\",\n // \"shortCode\": \"109\"\n // },\n // {\n // \"name\": \"Namutumba\",\n // \"shortCode\": \"222\"\n // },\n // {\n // \"name\": \"Nebbi\",\n // \"shortCode\": \"310\"\n // },\n // {\n // \"name\": \"Ntungamo\",\n // \"shortCode\": \"411\"\n // },\n // {\n // \"name\": \"Oyam\",\n // \"shortCode\": \"321\"\n // },\n // {\n // \"name\": \"Pader\",\n // \"shortCode\": \"312\"\n // },\n // {\n // \"name\": \"Pallisa\",\n // \"shortCode\": \"210\"\n // },\n // {\n // \"name\": \"Rakai\",\n // \"shortCode\": \"110\"\n // },\n // {\n // \"name\": \"Rukungiri\",\n // \"shortCode\": \"412\"\n // },\n // {\n // \"name\": \"Sembabule\",\n // \"shortCode\": \"111\"\n // },\n // {\n // \"name\": \"Sironko\",\n // \"shortCode\": \"215\"\n // },\n // {\n // \"name\": \"Soroti\",\n // \"shortCode\": \"211\"\n // },\n // {\n // \"name\": \"Tororo\",\n // \"shortCode\": \"212\"\n // },\n // {\n // \"name\": \"Wakiso\",\n // \"shortCode\": \"113\"\n // },\n // {\n // \"name\": \"Yumbe\",\n // \"shortCode\": \"313\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Ukraine\",\n \"countryShortCode\": \"UA\",\n \"regions\": [\n {\n \"name\": \"Cherkasy\",\n \"shortCode\": \"71\"\n },\n {\n \"name\": \"Chernihiv\",\n \"shortCode\": \"74\"\n },\n {\n \"name\": \"Chernivtsi\",\n \"shortCode\": \"77\"\n },\n {\n \"name\": \"Dnipropetrovsk\",\n \"shortCode\": \"12\"\n },\n {\n \"name\": \"Donetsk\",\n \"shortCode\": \"14\"\n },\n {\n \"name\": \"Ivano-Frankivsk\",\n \"shortCode\": \"26\"\n },\n {\n \"name\": \"Kharkiv\",\n \"shortCode\": \"63\"\n },\n {\n \"name\": \"Kherson\",\n \"shortCode\": \"65\"\n },\n {\n \"name\": \"Khmelnytskyi\",\n \"shortCode\": \"68\"\n },\n {\n \"name\": \"Kiev\",\n \"shortCode\": \"32\"\n },\n {\n \"name\": \"Kirovohrad\",\n \"shortCode\": \"35\"\n },\n {\n \"name\": \"Luhansk\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Lviv\",\n \"shortCode\": \"46\"\n },\n {\n \"name\": \"Mykolaiv\",\n \"shortCode\": \"48\"\n },\n {\n \"name\": \"Odessa\",\n \"shortCode\": \"51\"\n },\n {\n \"name\": \"Poltava\",\n \"shortCode\": \"53\"\n },\n {\n \"name\": \"Rivne\",\n \"shortCode\": \"56\"\n },\n {\n \"name\": \"Sumy\",\n \"shortCode\": \"59\"\n },\n {\n \"name\": \"Ternopil\",\n \"shortCode\": \"61\"\n },\n {\n \"name\": \"Vinnytsia\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"Volyn\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Zakarpattia\",\n \"shortCode\": \"21\"\n },\n {\n \"name\": \"Zaporizhia\",\n \"shortCode\": \"23\"\n },\n {\n \"name\": \"Zhytomyr\",\n \"shortCode\": \"18\"\n },\n {\n \"name\": \"Avtonomna Respublika Krym\",\n \"shortCode\": \"43\"\n },\n {\n \"name\": \"Kyïv\",\n \"shortCode\": \"30\"\n },\n {\n \"name\": \"Sevastopol\",\n \"shortCode\": \"40\"\n }\n ]\n },\n {\n \"countryName\": \"United Arab Emirates\",\n \"countryShortCode\": \"AE\",\n \"regions\": [\n {\n \"name\": \"Abu Dhabi\",\n \"shortCode\": \"AZ\"\n },\n {\n \"name\": \"Ajman\",\n \"shortCode\": \"AJ\"\n },\n {\n \"name\": \"Dubai\",\n \"shortCode\": \"DU\"\n },\n {\n \"name\": \"Fujairah\",\n \"shortCode\": \"FU\"\n },\n {\n \"name\": \"Ras al Khaimah\",\n \"shortCode\": \"RK\"\n },\n {\n \"name\": \"Sharjah\",\n \"shortCode\": \"SH\"\n },\n {\n \"name\": \"Umm Al Quwain\",\n \"shortCode\": \"UQ\"\n }\n ]\n },\n {\n \"countryName\": \"United Kingdom\",\n \"translationKey\": \"country_name_uk\",\n \"countryShortCode\": \"GB\",\n \"regions\": [\n {\n \"name\": \"Aberdeen City\",\n \"translationKey\": \"uk_region_name_abe\",\n \"shortCode\": \"ABE\"\n },\n {\n \"name\": \"Aberdeenshire\",\n \"translationKey\": \"uk_region_name_abd\",\n \"shortCode\": \"ABD\"\n },\n {\n \"name\": \"Angus\",\n \"translationKey\": \"uk_region_name_ans\",\n \"shortCode\": \"ANS\"\n },\n {\n \"name\": \"Antrim and Newtownabbey\",\n \"translationKey\": \"uk_region_name_ann\",\n \"shortCode\": \"ANN\"\n },\n {\n \"name\": \"Ards and North Down\",\n \"translationKey\": \"uk_region_name_and\",\n \"shortCode\": \"AND\"\n },\n {\n \"name\": \"Argyll and Bute\",\n \"translationKey\": \"uk_region_name_agb\",\n \"shortCode\": \"AGB\"\n },\n {\n \"name\": \"Armagh, Banbridge and Craigavon\",\n \"translationKey\": \"uk_region_name_abc\",\n \"shortCode\": \"ABC\"\n },\n {\n \"name\": \"Barking and Dagenham\",\n \"translationKey\": \"uk_region_name_bdg\",\n \"shortCode\": \"BDG\"\n },\n {\n \"name\": \"Barnet\",\n \"translationKey\": \"uk_region_name_bne\",\n \"shortCode\": \"BNE\"\n },\n {\n \"name\": \"Barnsley\",\n \"translationKey\": \"uk_region_name_bns\",\n \"shortCode\": \"BNS\"\n },\n {\n \"name\": \"Bath and North East Somerset\",\n \"translationKey\": \"uk_region_name_bas\",\n \"shortCode\": \"BAS\"\n },\n {\n \"name\": \"Bedford\",\n \"translationKey\": \"uk_region_name_bdf\",\n \"shortCode\": \"BDF\"\n },\n {\n \"name\": \"Belfast\",\n \"translationKey\": \"uk_region_name_bfs\",\n \"shortCode\": \"BFS\"\n },\n {\n \"name\": \"Bexley\",\n \"translationKey\": \"uk_region_name_bex\",\n \"shortCode\": \"BEX\"\n },\n {\n \"name\": \"Birmingham\",\n \"translationKey\": \"uk_region_name_bir\",\n \"shortCode\": \"BIR\"\n },\n {\n \"name\": \"Blackburn with Darwen\",\n \"translationKey\": \"uk_region_name_bbd\",\n \"shortCode\": \"BBD\"\n },\n {\n \"name\": \"Blackpool\",\n \"translationKey\": \"uk_region_name_bpl\",\n \"shortCode\": \"BPL\"\n },\n {\n \"name\": \"Blaenau Gwent\",\n \"translationKey\": \"uk_region_name_bgw\",\n \"shortCode\": \"BGW\"\n },\n {\n \"name\": \"Bolton\",\n \"translationKey\": \"uk_region_name_bol\",\n \"shortCode\": \"BOL\"\n },\n {\n \"name\": \"Bournemouth\",\n \"translationKey\": \"uk_region_name_bmh\",\n \"shortCode\": \"BMH\"\n },\n {\n \"name\": \"Bracknell Forest\",\n \"translationKey\": \"uk_region_name_brc\",\n \"shortCode\": \"BRC\"\n },\n {\n \"name\": \"Bradford\",\n \"translationKey\": \"uk_region_name_brd\",\n \"shortCode\": \"BRD\"\n },\n {\n \"name\": \"Brent\",\n \"translationKey\": \"uk_region_name_ben\",\n \"shortCode\": \"BEN\"\n },\n {\n \"name\": \"Bridgend\",\n \"translationKey\": \"uk_region_name_bge\",\n \"shortCode\": \"BGE\"\n },\n {\n \"name\": \"Brighton and Hove\",\n \"translationKey\": \"uk_region_name_bnh\",\n \"shortCode\": \"BNH\"\n },\n {\n \"name\": \"Bristol, City of\",\n \"translationKey\": \"uk_region_name_bst\",\n \"shortCode\": \"BST\"\n },\n {\n \"name\": \"Bromley\",\n \"translationKey\": \"uk_region_name_bry\",\n \"shortCode\": \"BRY\"\n },\n {\n \"name\": \"Buckinghamshire\",\n \"translationKey\": \"uk_region_name_bkm\",\n \"shortCode\": \"BKM\"\n },\n {\n \"name\": \"Bury\",\n \"translationKey\": \"uk_region_name_bur\",\n \"shortCode\": \"BUR\"\n },\n {\n \"name\": \"Caerphilly\",\n \"translationKey\": \"uk_region_name_cay\",\n \"shortCode\": \"CAY\"\n },\n {\n \"name\": \"Calderdale\",\n \"translationKey\": \"uk_region_name_cld\",\n \"shortCode\": \"CLD\"\n },\n {\n \"name\": \"Cambridgeshire\",\n \"translationKey\": \"uk_region_name_cam\",\n \"shortCode\": \"CAM\"\n },\n {\n \"name\": \"Camden\",\n \"translationKey\": \"uk_region_name_cmd\",\n \"shortCode\": \"CMD\"\n },\n {\n \"name\": \"Cardiff\",\n \"translationKey\": \"uk_region_name_crf\",\n \"shortCode\": \"CRF\"\n },\n {\n \"name\": \"Carmarthenshire\",\n \"translationKey\": \"uk_region_name_cmn\",\n \"shortCode\": \"CMN\"\n },\n {\n \"name\": \"Causeway Coast and Glens\",\n \"translationKey\": \"uk_region_name_ccg\",\n \"shortCode\": \"CCG\"\n },\n {\n \"name\": \"Central Bedfordshire\",\n \"translationKey\": \"uk_region_name_cbf\",\n \"shortCode\": \"CBF\"\n },\n {\n \"name\": \"Ceredigion\",\n \"translationKey\": \"uk_region_name_cgn\",\n \"shortCode\": \"CGN\"\n },\n {\n \"name\": \"Cheshire East\",\n \"translationKey\": \"uk_region_name_che\",\n \"shortCode\": \"CHE\"\n },\n {\n \"name\": \"Cheshire West and Chester\",\n \"translationKey\": \"uk_region_name_chw\",\n \"shortCode\": \"CHW\"\n },\n {\n \"name\": \"Clackmannanshire\",\n \"translationKey\": \"uk_region_name_clk\",\n \"shortCode\": \"CLK\"\n },\n {\n \"name\": \"Conwy\",\n \"translationKey\": \"uk_region_name_cwy\",\n \"shortCode\": \"CWY\"\n },\n {\n \"name\": \"Cornwall\",\n \"translationKey\": \"uk_region_name_con\",\n \"shortCode\": \"CON\"\n },\n {\n \"name\": \"Coventry\",\n \"translationKey\": \"uk_region_name_cov\",\n \"shortCode\": \"COV\"\n },\n {\n \"name\": \"Croydon\",\n \"translationKey\": \"uk_region_name_cry\",\n \"shortCode\": \"CRY\"\n },\n {\n \"name\": \"Cumbria\",\n \"translationKey\": \"uk_region_name_cma\",\n \"shortCode\": \"CMA\"\n },\n {\n \"name\": \"Darlington\",\n \"translationKey\": \"uk_region_name_dal\",\n \"shortCode\": \"DAL\"\n },\n {\n \"name\": \"Denbighshire\",\n \"translationKey\": \"uk_region_name_den\",\n \"shortCode\": \"DEN\"\n },\n {\n \"name\": \"Derby\",\n \"translationKey\": \"uk_region_name_der\",\n \"shortCode\": \"DER\"\n },\n {\n \"name\": \"Derbyshire\",\n \"translationKey\": \"uk_region_name_dby\",\n \"shortCode\": \"DBY\"\n },\n {\n \"name\": \"Derry and Strabane\",\n \"translationKey\": \"uk_region_name_drs\",\n \"shortCode\": \"DRS\"\n },\n {\n \"name\": \"Devon\",\n \"translationKey\": \"uk_region_name_dev\",\n \"shortCode\": \"DEV\"\n },\n {\n \"name\": \"Doncaster\",\n \"translationKey\": \"uk_region_name_dnc\",\n \"shortCode\": \"DNC\"\n },\n {\n \"name\": \"Dorset\",\n \"translationKey\": \"uk_region_name_dor\",\n \"shortCode\": \"DOR\"\n },\n {\n \"name\": \"Dudley\",\n \"translationKey\": \"uk_region_name_dud\",\n \"shortCode\": \"DUD\"\n },\n {\n \"name\": \"Dumfries and Galloway\",\n \"translationKey\": \"uk_region_name_dgy\",\n \"shortCode\": \"DGY\"\n },\n {\n \"name\": \"Dundee City\",\n \"translationKey\": \"uk_region_name_dnd\",\n \"shortCode\": \"DND\"\n },\n {\n \"name\": \"Durham County\",\n \"translationKey\": \"uk_region_name_dur\",\n \"shortCode\": \"DUR\"\n },\n {\n \"name\": \"Ealing\",\n \"translationKey\": \"uk_region_name_eal\",\n \"shortCode\": \"EAL\"\n },\n {\n \"name\": \"East Ayrshire\",\n \"translationKey\": \"uk_region_name_eay\",\n \"shortCode\": \"EAY\"\n },\n {\n \"name\": \"East Dunbartonshire\",\n \"translationKey\": \"uk_region_name_edu\",\n \"shortCode\": \"EDU\"\n },\n {\n \"name\": \"East Lothian\",\n \"translationKey\": \"uk_region_name_eln\",\n \"shortCode\": \"ELN\"\n },\n {\n \"name\": \"East Renfrewshire\",\n \"translationKey\": \"uk_region_name_erw\",\n \"shortCode\": \"ERW\"\n },\n {\n \"name\": \"East Riding of Yorkshire\",\n \"translationKey\": \"uk_region_name_wry\",\n \"shortCode\": \"ERY\"\n },\n {\n \"name\": \"East Sussex\",\n \"translationKey\": \"uk_region_name_esx\",\n \"shortCode\": \"ESX\"\n },\n {\n \"name\": \"Edinburgh, City of\",\n \"translationKey\": \"uk_region_name_edh\",\n \"shortCode\": \"EDH\"\n },\n {\n \"name\": \"Eilean Siar\",\n \"translationKey\": \"uk_region_name_els\",\n \"shortCode\": \"ELS\"\n },\n {\n \"name\": \"Enfield\",\n \"translationKey\": \"uk_region_name_enf\",\n \"shortCode\": \"ENF\"\n },\n {\n \"name\": \"Essex\",\n \"translationKey\": \"uk_region_name_ess\",\n \"shortCode\": \"ESS\"\n },\n {\n \"name\": \"Falkirk\",\n \"translationKey\": \"uk_region_name_fal\",\n \"shortCode\": \"FAL\"\n },\n {\n \"name\": \"Fermanagh and Omagh\",\n \"translationKey\": \"uk_region_name_fmo\",\n \"shortCode\": \"FMO\"\n },\n {\n \"name\": \"Fife\",\n \"translationKey\": \"uk_region_name_fif\",\n \"shortCode\": \"FIF\"\n },\n {\n \"name\": \"Flintshire\",\n \"translationKey\": \"uk_region_name_fln\",\n \"shortCode\": \"FLN\"\n },\n {\n \"name\": \"Gateshead\",\n \"translationKey\": \"uk_region_name_gat\",\n \"shortCode\": \"GAT\"\n },\n {\n \"name\": \"Glasgow City\",\n \"translationKey\": \"uk_region_name_glg\",\n \"shortCode\": \"GLG\"\n },\n {\n \"name\": \"Gloucestershire\",\n \"translationKey\": \"uk_region_name_gls\",\n \"shortCode\": \"GLS\"\n },\n {\n \"name\": \"Greenwich\",\n \"translationKey\": \"uk_region_name_gre\",\n \"shortCode\": \"GRE\"\n },\n {\n \"name\": \"Gwynedd\",\n \"translationKey\": \"uk_region_name_gwn\",\n \"shortCode\": \"GWN\"\n },\n {\n \"name\": \"Hackney\",\n \"translationKey\": \"uk_region_name_hck\",\n \"shortCode\": \"HCK\"\n },\n {\n \"name\": \"Halton\",\n \"translationKey\": \"uk_region_name_hal\",\n \"shortCode\": \"HAL\"\n },\n {\n \"name\": \"Hammersmith and Fulham\",\n \"translationKey\": \"uk_region_name_hmf\",\n \"shortCode\": \"HMF\"\n },\n {\n \"name\": \"Hampshire\",\n \"translationKey\": \"uk_region_name_ham\",\n \"shortCode\": \"HAM\"\n },\n {\n \"name\": \"Haringey\",\n \"translationKey\": \"uk_region_name_hry\",\n \"shortCode\": \"HRY\"\n },\n {\n \"name\": \"Harrow\",\n \"translationKey\": \"uk_region_name_hrw\",\n \"shortCode\": \"HRW\"\n },\n {\n \"name\": \"Hartlepool\",\n \"translationKey\": \"uk_region_name_hpl\",\n \"shortCode\": \"HPL\"\n },\n {\n \"name\": \"Havering\",\n \"translationKey\": \"uk_region_name_hav\",\n \"shortCode\": \"HAV\"\n },\n {\n \"name\": \"Herefordshire\",\n \"translationKey\": \"uk_region_name_hef\",\n \"shortCode\": \"HEF\"\n },\n {\n \"name\": \"Hertfordshire\",\n \"translationKey\": \"uk_region_name_hrt\",\n \"shortCode\": \"HRT\"\n },\n {\n \"name\": \"Highland\",\n \"translationKey\": \"uk_region_name_hld\",\n \"shortCode\": \"HLD\"\n },\n {\n \"name\": \"Hillingdon\",\n \"translationKey\": \"uk_region_name_hil\",\n \"shortCode\": \"HIL\"\n },\n {\n \"name\": \"Hounslow\",\n \"translationKey\": \"uk_region_name_hns\",\n \"shortCode\": \"HNS\"\n },\n {\n \"name\": \"Inverclyde\",\n \"translationKey\": \"uk_region_name_ivc\",\n \"shortCode\": \"IVC\"\n },\n {\n \"name\": \"Isle of Anglesey\",\n \"translationKey\": \"uk_region_name_agy\",\n \"shortCode\": \"AGY\"\n },\n {\n \"name\": \"Isle of Wight\",\n \"translationKey\": \"uk_region_name_iow\",\n \"shortCode\": \"IOW\"\n },\n {\n \"name\": \"Isles of Scilly\",\n \"translationKey\": \"uk_region_name_ios\",\n \"shortCode\": \"IOS\"\n },\n {\n \"name\": \"Islington\",\n \"translationKey\": \"uk_region_name_isl\",\n \"shortCode\": \"ISL\"\n },\n {\n \"name\": \"Kensington and Chelsea\",\n \"translationKey\": \"uk_region_name_kec\",\n \"shortCode\": \"KEC\"\n },\n {\n \"name\": \"Kent\",\n \"translationKey\": \"uk_region_name_ken\",\n \"shortCode\": \"KEN\"\n },\n {\n \"name\": \"Kingston upon Hull\",\n \"translationKey\": \"uk_region_name_khl\",\n \"shortCode\": \"KHL\"\n },\n {\n \"name\": \"Kingston upon Thames\",\n \"translationKey\": \"uk_region_name_ktt\",\n \"shortCode\": \"KTT\"\n },\n {\n \"name\": \"Kirklees\",\n \"translationKey\": \"uk_region_name_kir\",\n \"shortCode\": \"KIR\"\n },\n {\n \"name\": \"Knowsley\",\n \"translationKey\": \"uk_region_name_kwl\",\n \"shortCode\": \"KWL\"\n },\n {\n \"name\": \"Lambeth\",\n \"translationKey\": \"uk_region_name_lbh\",\n \"shortCode\": \"LBH\"\n },\n {\n \"name\": \"Lancashire\",\n \"translationKey\": \"uk_region_name_lan\",\n \"shortCode\": \"LAN\"\n },\n {\n \"name\": \"Leeds\",\n \"translationKey\": \"uk_region_name_lds\",\n \"shortCode\": \"LDS\"\n },\n {\n \"name\": \"Leicester\",\n \"translationKey\": \"uk_region_name_lce\",\n \"shortCode\": \"LCE\"\n },\n {\n \"name\": \"Leicestershire\",\n \"translationKey\": \"uk_region_name_lec\",\n \"shortCode\": \"LEC\"\n },\n {\n \"name\": \"Lewisham\",\n \"translationKey\": \"uk_region_name_lew\",\n \"shortCode\": \"LEW\"\n },\n {\n \"name\": \"Lincolnshire\",\n \"translationKey\": \"uk_region_name_lin\",\n \"shortCode\": \"LIN\"\n },\n {\n \"name\": \"Lisburn and Castlereagh\",\n \"translationKey\": \"uk_region_name_lbc\",\n \"shortCode\": \"LBC\"\n },\n {\n \"name\": \"Liverpool\",\n \"translationKey\": \"uk_region_name_liv\",\n \"shortCode\": \"LIV\"\n },\n {\n \"name\": \"London, City of\",\n \"translationKey\": \"uk_region_name_lnd\",\n \"shortCode\": \"LND\"\n },\n {\n \"name\": \"Luton\",\n \"translationKey\": \"uk_region_name_lut\",\n \"shortCode\": \"LUT\"\n },\n {\n \"name\": \"Manchester\",\n \"translationKey\": \"uk_region_name_man\",\n \"shortCode\": \"MAN\"\n },\n {\n \"name\": \"Medway\",\n \"translationKey\": \"uk_region_name_mdw\",\n \"shortCode\": \"MDW\"\n },\n {\n \"name\": \"Merthyr Tydfil\",\n \"translationKey\": \"uk_region_name_mty\",\n \"shortCode\": \"MTY\"\n },\n {\n \"name\": \"Merton\",\n \"translationKey\": \"uk_region_name_mrt\",\n \"shortCode\": \"MRT\"\n },\n {\n \"name\": \"Mid and East Antrim\",\n \"translationKey\": \"uk_region_name_mea\",\n \"shortCode\": \"MEA\"\n },\n {\n \"name\": \"Mid Ulster\",\n \"translationKey\": \"uk_region_name_mul\",\n \"shortCode\": \"MUL\"\n },\n {\n \"name\": \"Middlesbrough\",\n \"translationKey\": \"uk_region_name_mdb\",\n \"shortCode\": \"MDB\"\n },\n {\n \"name\": \"Midlothian\",\n \"translationKey\": \"uk_region_name_mln\",\n \"shortCode\": \"MLN\"\n },\n {\n \"name\": \"Milton Keynes\",\n \"translationKey\": \"uk_region_name_mik\",\n \"shortCode\": \"MIK\"\n },\n {\n \"name\": \"Monmouthshire\",\n \"translationKey\": \"uk_region_name_mon\",\n \"shortCode\": \"MON\"\n },\n {\n \"name\": \"Moray\",\n \"translationKey\": \"uk_region_name_mry\",\n \"shortCode\": \"MRY\"\n },\n {\n \"name\": \"Neath Port Talbot\",\n \"translationKey\": \"uk_region_name_ntl\",\n \"shortCode\": \"NTL\"\n },\n {\n \"name\": \"Newcastle upon Tyne\",\n \"translationKey\": \"uk_region_name_net\",\n \"shortCode\": \"NET\"\n },\n {\n \"name\": \"Newham\",\n \"translationKey\": \"uk_region_name_nwm\",\n \"shortCode\": \"NWM\"\n },\n {\n \"name\": \"Newport\",\n \"translationKey\": \"uk_region_name_nwp\",\n \"shortCode\": \"NWP\"\n },\n {\n \"name\": \"Newry, Mourne and Down\",\n \"translationKey\": \"uk_region_name_nmd\",\n \"shortCode\": \"NMD\"\n },\n {\n \"name\": \"Norfolk\",\n \"translationKey\": \"uk_region_name_nfk\",\n \"shortCode\": \"NFK\"\n },\n {\n \"name\": \"North Ayrshire\",\n \"translationKey\": \"uk_region_name_nay\",\n \"shortCode\": \"NAY\"\n },\n {\n \"name\": \"North East Lincolnshire\",\n \"translationKey\": \"uk_region_name_nel\",\n \"shortCode\": \"NEL\"\n },\n {\n \"name\": \"North Lanarkshire\",\n \"translationKey\": \"uk_region_name_nlk\",\n \"shortCode\": \"NLK\"\n },\n {\n \"name\": \"North Lincolnshire\",\n \"translationKey\": \"uk_region_name_nln\",\n \"shortCode\": \"NLN\"\n },\n {\n \"name\": \"North Somerset\",\n \"translationKey\": \"uk_region_name_nsm\",\n \"shortCode\": \"NSM\"\n },\n {\n \"name\": \"North Tyneside\",\n \"translationKey\": \"uk_region_name_nty\",\n \"shortCode\": \"NTY\"\n },\n {\n \"name\": \"North Yorkshire\",\n \"translationKey\": \"uk_region_name_nyk\",\n \"shortCode\": \"NYK\"\n },\n {\n \"name\": \"Northamptonshire\",\n \"translationKey\": \"uk_region_name_nth\",\n \"shortCode\": \"NTH\"\n },\n {\n \"name\": \"Northern Ireland\",\n \"translationKey\": \"uk_region_name_nir\",\n \"shortCode\": \"NIR\"\n },\n {\n \"name\": \"Northumberland\",\n \"translationKey\": \"uk_region_name_nbl\",\n \"shortCode\": \"NBL\"\n },\n {\n \"name\": \"Nottingham\",\n \"translationKey\": \"uk_region_name_ngm\",\n \"shortCode\": \"NGM\"\n },\n {\n \"name\": \"Nottinghamshire\",\n \"translationKey\": \"uk_region_name_ntt\",\n \"shortCode\": \"NTT\"\n },\n {\n \"name\": \"Oldham\",\n \"translationKey\": \"uk_region_name_old\",\n \"shortCode\": \"OLD\"\n },\n {\n \"name\": \"Orkney Islands\",\n \"translationKey\": \"uk_region_name_ork\",\n \"shortCode\": \"ORK\"\n },\n {\n \"name\": \"Oxfordshire\",\n \"translationKey\": \"uk_region_name_oxf\",\n \"shortCode\": \"OXF\"\n },\n {\n \"name\": \"Pembrokeshire\",\n \"translationKey\": \"uk_region_name_pem\",\n \"shortCode\": \"PEM\"\n },\n {\n \"name\": \"Perth and Kinross\",\n \"translationKey\": \"uk_region_name_pkn\",\n \"shortCode\": \"PKN\"\n },\n {\n \"name\": \"Peterborough\",\n \"translationKey\": \"uk_region_name_pte\",\n \"shortCode\": \"PTE\"\n },\n {\n \"name\": \"Plymouth\",\n \"translationKey\": \"uk_region_name_ply\",\n \"shortCode\": \"PLY\"\n },\n {\n \"name\": \"Poole\",\n \"translationKey\": \"uk_region_name_pol\",\n \"shortCode\": \"POL\"\n },\n {\n \"name\": \"Portsmouth\",\n \"translationKey\": \"uk_region_name_por\",\n \"shortCode\": \"POR\"\n },\n {\n \"name\": \"Powys\",\n \"translationKey\": \"uk_region_name_pow\",\n \"shortCode\": \"POW\"\n },\n {\n \"name\": \"Reading\",\n \"translationKey\": \"uk_region_name_rdg\",\n \"shortCode\": \"RDG\"\n },\n {\n \"name\": \"Redbridge\",\n \"translationKey\": \"uk_region_name_rdb\",\n \"shortCode\": \"RDB\"\n },\n {\n \"name\": \"Redcar and Cleveland\",\n \"translationKey\": \"uk_region_name_rcc\",\n \"shortCode\": \"RCC\"\n },\n {\n \"name\": \"Renfrewshire\",\n \"translationKey\": \"uk_region_name_rfw\",\n \"shortCode\": \"RFW\"\n },\n {\n \"name\": \"Rhondda, Cynon, Taff\",\n \"translationKey\": \"uk_region_name_rct\",\n \"shortCode\": \"RCT\"\n },\n {\n \"name\": \"Richmond upon Thames\",\n \"translationKey\": \"uk_region_name_ric\",\n \"shortCode\": \"RIC\"\n },\n {\n \"name\": \"Rochdale\",\n \"translationKey\": \"uk_region_name_rch\",\n \"shortCode\": \"RCH\"\n },\n {\n \"name\": \"Rotherham\",\n \"translationKey\": \"uk_region_name_rot\",\n \"shortCode\": \"ROT\"\n },\n {\n \"name\": \"Rutland\",\n \"translationKey\": \"uk_region_name_rut\",\n \"shortCode\": \"RUT\"\n },\n {\n \"name\": \"St. Helens\",\n \"translationKey\": \"uk_region_name_shn\",\n \"shortCode\": \"SHN\"\n },\n {\n \"name\": \"Salford\",\n \"translationKey\": \"uk_region_name_slf\",\n \"shortCode\": \"SLF\"\n },\n {\n \"name\": \"Sandwell\",\n \"translationKey\": \"uk_region_name_saw\",\n \"shortCode\": \"SAW\"\n },\n {\n \"name\": \"Scottish Borders, The\",\n \"translationKey\": \"uk_region_name_scb\",\n \"shortCode\": \"SCB\"\n },\n {\n \"name\": \"Sefton\",\n \"translationKey\": \"uk_region_name_sft\",\n \"shortCode\": \"SFT\"\n },\n {\n \"name\": \"Sheffield\",\n \"translationKey\": \"uk_region_name_shf\",\n \"shortCode\": \"SHF\"\n },\n {\n \"name\": \"Shetland Islands\",\n \"translationKey\": \"uk_region_name_zet\",\n \"shortCode\": \"ZET\"\n },\n {\n \"name\": \"Shropshire\",\n \"translationKey\": \"uk_region_name_shr\",\n \"shortCode\": \"SHR\"\n },\n {\n \"name\": \"Slough\",\n \"translationKey\": \"uk_region_name_slg\",\n \"shortCode\": \"SLG\"\n },\n {\n \"name\": \"Solihull\",\n \"translationKey\": \"uk_region_name_sol\",\n \"shortCode\": \"SOL\"\n },\n {\n \"name\": \"Somerset\",\n \"translationKey\": \"uk_region_name_som\",\n \"shortCode\": \"SOM\"\n },\n {\n \"name\": \"South Ayrshire\",\n \"translationKey\": \"uk_region_name_say\",\n \"shortCode\": \"SAY\"\n },\n {\n \"name\": \"South Gloucestershire\",\n \"translationKey\": \"uk_region_name_sgc\",\n \"shortCode\": \"SGC\"\n },\n {\n \"name\": \"South Lanarkshire\",\n \"translationKey\": \"uk_region_name_slk\",\n \"shortCode\": \"SLK\"\n },\n {\n \"name\": \"South Tyneside\",\n \"translationKey\": \"uk_region_name_sty\",\n \"shortCode\": \"STY\"\n },\n {\n \"name\": \"Southampton\",\n \"translationKey\": \"uk_region_name_sth\",\n \"shortCode\": \"STH\"\n },\n {\n \"name\": \"Southend-on-Sea\",\n \"translationKey\": \"uk_region_name_sos\",\n \"shortCode\": \"SOS\"\n },\n {\n \"name\": \"Southwark\",\n \"translationKey\": \"uk_region_name_swk\",\n \"shortCode\": \"SWK\"\n },\n {\n \"name\": \"Staffordshire\",\n \"translationKey\": \"uk_region_name_sts\",\n \"shortCode\": \"STS\"\n },\n {\n \"name\": \"Stirling\",\n \"translationKey\": \"uk_region_name_stg\",\n \"shortCode\": \"STG\"\n },\n {\n \"name\": \"Stockport\",\n \"translationKey\": \"uk_region_name_skp\",\n \"shortCode\": \"SKP\"\n },\n {\n \"name\": \"Stockton-on-Tees\",\n \"translationKey\": \"uk_region_name_stt\",\n \"shortCode\": \"STT\"\n },\n {\n \"name\": \"Stoke-on-Trent\",\n \"translationKey\": \"uk_region_name_ste\",\n \"shortCode\": \"STE\"\n },\n {\n \"name\": \"Suffolk\",\n \"translationKey\": \"uk_region_name_sfk\",\n \"shortCode\": \"SFK\"\n },\n {\n \"name\": \"Sunderland\",\n \"translationKey\": \"uk_region_name_snd\",\n \"shortCode\": \"SND\"\n },\n {\n \"name\": \"Surrey\",\n \"translationKey\": \"uk_region_name_sry\",\n \"shortCode\": \"SRY\"\n },\n {\n \"name\": \"Sutton\",\n \"translationKey\": \"uk_region_name_stn\",\n \"shortCode\": \"STN\"\n },\n {\n \"name\": \"Swansea\",\n \"translationKey\": \"uk_region_name_swa\",\n \"shortCode\": \"SWA\"\n },\n {\n \"name\": \"Swindon\",\n \"translationKey\": \"uk_region_name_swd\",\n \"shortCode\": \"SWD\"\n },\n {\n \"name\": \"Tameside\",\n \"translationKey\": \"uk_region_name_tam\",\n \"shortCode\": \"TAM\"\n },\n {\n \"name\": \"Telford and Wrekin\",\n \"translationKey\": \"uk_region_name_tfw\",\n \"shortCode\": \"TFW\"\n },\n {\n \"name\": \"Thurrock\",\n \"translationKey\": \"uk_region_name_thr\",\n \"shortCode\": \"THR\"\n },\n {\n \"name\": \"Torbay\",\n \"translationKey\": \"uk_region_name_tob\",\n \"shortCode\": \"TOB\"\n },\n {\n \"name\": \"Torfaen\",\n \"translationKey\": \"uk_region_name_tof\",\n \"shortCode\": \"TOF\"\n },\n {\n \"name\": \"Tower Hamlets\",\n \"translationKey\": \"uk_region_name_twh\",\n \"shortCode\": \"TWH\"\n },\n {\n \"name\": \"Trafford\",\n \"translationKey\": \"uk_region_name_trf\",\n \"shortCode\": \"TRF\"\n },\n {\n \"name\": \"Vale of Glamorgan, The\",\n \"translationKey\": \"uk_region_name_vgl\",\n \"shortCode\": \"VGL\"\n },\n {\n \"name\": \"Wakefield\",\n \"translationKey\": \"uk_region_name_wkf\",\n \"shortCode\": \"WKF\"\n },\n {\n \"name\": \"Walsall\",\n \"translationKey\": \"uk_region_name_wll\",\n \"shortCode\": \"WLL\"\n },\n {\n \"name\": \"Waltham Forest\",\n \"translationKey\": \"uk_region_name_wft\",\n \"shortCode\": \"WFT\"\n },\n {\n \"name\": \"Wandsworth\",\n \"translationKey\": \"uk_region_name_wns\",\n \"shortCode\": \"WND\"\n },\n {\n \"name\": \"Warrington\",\n \"translationKey\": \"uk_region_name_wrt\",\n \"shortCode\": \"WRT\"\n },\n {\n \"name\": \"Warwickshire\",\n \"translationKey\": \"uk_region_name_war\",\n \"shortCode\": \"WAR\"\n },\n {\n \"name\": \"West Berkshire\",\n \"translationKey\": \"uk_region_name_wbk\",\n \"shortCode\": \"WBK\"\n },\n {\n \"name\": \"West Dunbartonshire\",\n \"translationKey\": \"uk_region_name_wdu\",\n \"shortCode\": \"WDU\"\n },\n {\n \"name\": \"West Lothian\",\n \"translationKey\": \"uk_region_name_wln\",\n \"shortCode\": \"WLN\"\n },\n {\n \"name\": \"West Sussex\",\n \"translationKey\": \"uk_region_name_wsx\",\n \"shortCode\": \"WSX\"\n },\n {\n \"name\": \"Westminster\",\n \"translationKey\": \"uk_region_name_wsm\",\n \"shortCode\": \"WSM\"\n },\n {\n \"name\": \"Wigan\",\n \"translationKey\": \"uk_region_name_wgn\",\n \"shortCode\": \"WGN\"\n },\n {\n \"name\": \"Wiltshire\",\n \"translationKey\": \"uk_region_name_wil\",\n \"shortCode\": \"WIL\"\n },\n {\n \"name\": \"Windsor and Maidenhead\",\n \"translationKey\": \"uk_region_name_wnm\",\n \"shortCode\": \"WNM\"\n },\n {\n \"name\": \"Wirral\",\n \"translationKey\": \"uk_region_name_wrl\",\n \"shortCode\": \"WRL\"\n },\n {\n \"name\": \"Wokingham\",\n \"translationKey\": \"uk_region_name_wok\",\n \"shortCode\": \"WOK\"\n },\n {\n \"name\": \"Wolverhampton\",\n \"translationKey\": \"uk_region_name_wlv\",\n \"shortCode\": \"WLV\"\n },\n {\n \"name\": \"Worcestershire\",\n \"translationKey\": \"uk_region_name_wor\",\n \"shortCode\": \"WOR\"\n },\n {\n \"name\": \"Wrexham\",\n \"translationKey\": \"uk_region_name_wrx\",\n \"shortCode\": \"WRX\"\n },\n {\n \"name\": \"York\",\n \"translationKey\": \"uk_region_name_yor\",\n \"shortCode\": \"YOR\"\n }\n ]\n },\n {\n \"countryName\": \"United States\",\n \"countryShortCode\": \"US\",\n \"translationKey\": \"unitedStates\",\n \"regions\": [\n {\n \"name\": \"Alabama\",\n \"shortCode\": \"AL\",\n \"translationKey\": \"us_state_name_al\"\n },\n {\n \"name\": \"Alaska\",\n \"shortCode\": \"AK\",\n \"translationKey\": \"us_state_name_ak\"\n },\n // {\n // \"name\": \"American Samoa\",\n // \"shortCode\": \"AS\",\n // \"translationKey\": \"us_state_name_\"\n // },\n {\n \"name\": \"Arizona\",\n \"shortCode\": \"AZ\",\n \"translationKey\": \"us_state_name_az\"\n },\n {\n \"name\": \"Arkansas\",\n \"shortCode\": \"AR\",\n \"translationKey\": \"us_state_name_ar\"\n },\n {\n \"name\": \"California\",\n \"shortCode\": \"CA\",\n \"translationKey\": \"us_state_name_ca\"\n },\n {\n \"name\": \"Colorado\",\n \"shortCode\": \"CO\",\n \"translationKey\": \"us_state_name_co\"\n },\n {\n \"name\": \"Connecticut\",\n \"shortCode\": \"CT\",\n \"translationKey\": \"us_state_name_ct\"\n },\n {\n \"name\": \"Delaware\",\n \"shortCode\": \"DE\",\n \"translationKey\": \"us_state_name_de\"\n },\n {\n \"name\": \"District of Columbia\",\n \"shortCode\": \"DC\",\n \"translationKey\": \"us_state_name_dc\"\n },\n // {\n // \"name\": \"Micronesia\",\n // \"shortCode\": \"FM\"\n // },\n {\n \"name\": \"Florida\",\n \"shortCode\": \"FL\",\n \"translationKey\": \"us_state_name_fl\"\n },\n {\n \"name\": \"Georgia\",\n \"shortCode\": \"GA\",\n \"translationKey\": \"us_state_name_ga\"\n },\n // {\n // \"name\": \"Guam\",\n // \"shortCode\": \"GU\"\n // },\n {\n \"name\": \"Hawaii\",\n \"shortCode\": \"HI\",\n \"translationKey\": \"us_state_name_hi\"\n },\n {\n \"name\": \"Idaho\",\n \"shortCode\": \"ID\",\n \"translationKey\": \"us_state_name_id\"\n },\n {\n \"name\": \"Illinois\",\n \"shortCode\": \"IL\",\n \"translationKey\": \"us_state_name_il\"\n },\n {\n \"name\": \"Indiana\",\n \"shortCode\": \"IN\",\n \"translationKey\": \"us_state_name_in\"\n },\n {\n \"name\": \"Iowa\",\n \"shortCode\": \"IA\",\n \"translationKey\": \"us_state_name_ia\"\n },\n {\n \"name\": \"Kansas\",\n \"shortCode\": \"KS\",\n \"translationKey\": \"us_state_name_ks\"\n },\n {\n \"name\": \"Kentucky\",\n \"shortCode\": \"KY\",\n \"translationKey\": \"us_state_name_ky\"\n },\n {\n \"name\": \"Louisiana\",\n \"shortCode\": \"LA\",\n \"translationKey\": \"us_state_name_la\"\n },\n {\n \"name\": \"Maine\",\n \"shortCode\": \"ME\"\n ,\n \"translationKey\": \"us_state_name_me\"\n },\n {\n \"name\": \"Marshall Islands\",\n \"shortCode\": \"MH\",\n \"translationKey\": \"us_state_name_mislands\"\n },\n {\n \"name\": \"Maryland\",\n \"shortCode\": \"MD\",\n \"translationKey\": \"us_state_name_md\"\n },\n {\n \"name\": \"Massachusetts\",\n \"shortCode\": \"MA\",\n \"translationKey\": \"us_state_name_ma\"\n },\n {\n \"name\": \"Michigan\",\n \"shortCode\": \"MI\",\n \"translationKey\": \"us_state_name_mi\"\n },\n {\n \"name\": \"Minnesota\",\n \"shortCode\": \"MN\",\n \"translationKey\": \"us_state_name_mn\"\n },\n {\n \"name\": \"Mississippi\",\n \"shortCode\": \"MS\",\n \"translationKey\": \"us_state_name_ms\"\n },\n {\n \"name\": \"Missouri\",\n \"shortCode\": \"MO\",\n \"translationKey\": \"us_state_name_mo\"\n },\n {\n \"name\": \"Montana\",\n \"shortCode\": \"MT\",\n \"translationKey\": \"us_state_name_mt\"\n },\n {\n \"name\": \"Nebraska\",\n \"shortCode\": \"NE\",\n \"translationKey\": \"us_state_name_ne\"\n },\n {\n \"name\": \"Nevada\",\n \"shortCode\": \"NV\",\n \"translationKey\": \"us_state_name_nv\"\n },\n {\n \"name\": \"New Hampshire\",\n \"shortCode\": \"NH\",\n \"translationKey\": \"us_state_name_nh\"\n },\n {\n \"name\": \"New Jersey\",\n \"shortCode\": \"NJ\",\n \"translationKey\": \"us_state_name_nj\"\n },\n {\n \"name\": \"New Mexico\",\n \"shortCode\": \"NM\",\n \"translationKey\": \"us_state_name_nm\"\n },\n {\n \"name\": \"New York\",\n \"shortCode\": \"NY\",\n \"translationKey\": \"us_state_name_ny\"\n },\n {\n \"name\": \"North Carolina\",\n \"shortCode\": \"NC\",\n \"translationKey\": \"us_state_name_nc\"\n },\n {\n \"name\": \"North Dakota\",\n \"shortCode\": \"ND\",\n \"translationKey\": \"us_state_name_nd\"\n },\n {\n \"name\": \"Northern Mariana Islands\",\n \"shortCode\": \"MP\",\n \"translationKey\": \"us_state_name_nmislands\"\n },\n {\n \"name\": \"Ohio\",\n \"shortCode\": \"OH\",\n \"translationKey\": \"us_state_name_oh\"\n },\n {\n \"name\": \"Oklahoma\",\n \"shortCode\": \"OK\",\n \"translationKey\": \"us_state_name_ok\"\n },\n {\n \"name\": \"Oregon\",\n \"shortCode\": \"OR\",\n \"translationKey\": \"us_state_name_or\"\n },\n // {\n // \"name\": \"Palau\",\n // \"shortCode\": \"PW\"\n // },\n {\n \"name\": \"Pennsylvania\",\n \"shortCode\": \"PA\",\n \"translationKey\": \"us_state_name_pa\"\n },\n {\n \"name\": \"Puerto Rico\",\n \"shortCode\": \"PR\",\n \"translationKey\": \"us_region_name_pr\"\n },\n {\n \"name\": \"Rhode Island\",\n \"shortCode\": \"RI\",\n \"translationKey\": \"us_state_name_ri\"\n },\n {\n \"name\": \"South Carolina\",\n \"shortCode\": \"SC\",\n \"translationKey\": \"us_state_name_sc\"\n },\n {\n \"name\": \"South Dakota\",\n \"shortCode\": \"SD\",\n \"translationKey\": \"us_state_name_sd\"\n },\n {\n \"name\": \"Tennessee\",\n \"shortCode\": \"TN\",\n \"translationKey\": \"us_state_name_tn\"\n },\n {\n \"name\": \"Texas\",\n \"shortCode\": \"TX\",\n \"translationKey\": \"us_state_name_tx\"\n },\n {\n \"name\": \"Utah\",\n \"shortCode\": \"UT\",\n \"translationKey\": \"us_state_name_ut\"\n },\n {\n \"name\": \"Vermont\",\n \"shortCode\": \"VT\",\n \"translationKey\": \"us_state_name_vt\"\n },\n {\n \"name\": \"Virgin Islands\",\n \"shortCode\": \"VI\",\n \"translationKey\": \"us_state_name_vislands\"\n },\n {\n \"name\": \"Virginia\",\n \"shortCode\": \"VA\",\n \"translationKey\": \"us_state_name_va\"\n },\n {\n \"name\": \"Washington\",\n \"shortCode\": \"WA\",\n \"translationKey\": \"us_state_name_wa\"\n },\n {\n \"name\": \"West Virginia\",\n \"shortCode\": \"WV\",\n \"translationKey\": \"us_state_name_wv\"\n },\n {\n \"name\": \"Wisconsin\",\n \"shortCode\": \"WI\",\n \"translationKey\": \"us_state_name_wi\"\n },\n {\n \"name\": \"Wyoming\",\n \"shortCode\": \"WY\",\n \"translationKey\": \"us_state_name_wy\"\n },\n // {\n // \"name\": \"Armed Forces Americas\",\n // \"shortCode\": \"AA\"\n // },\n // {\n // \"name\": \"Armed Forces Europe, Canada, Africa and Middle East\",\n // \"shortCode\": \"AE\"\n // },\n // {\n // \"name\": \"Armed Forces Pacific\",\n // \"shortCode\": \"AP\"\n // }\n ]\n },\n // {\n // \"countryName\": \"United States Minor Outlying Islands\",\n // \"countryShortCode\": \"UM\",\n // \"regions\": [\n // {\n // \"name\": \"Baker Island\",\n // \"shortCode\": \"81\"\n // },\n // {\n // \"name\": \"Howland Island\",\n // \"shortCode\": \"84\"\n // },\n // {\n // \"name\": \"Jarvis Island\",\n // \"shortCode\": \"86\"\n // },\n // {\n // \"name\": \"Johnston Atoll\",\n // \"shortCode\": \"67\"\n // },\n // {\n // \"name\": \"Kingman Reef\",\n // \"shortCode\": \"89\"\n // },\n // {\n // \"name\": \"Midway Islands\",\n // \"shortCode\": \"71\"\n // },\n // {\n // \"name\": \"Navassa Island\",\n // \"shortCode\": \"76\"\n // },\n // {\n // \"name\": \"Palmyra Atoll\",\n // \"shortCode\": \"95\"\n // },\n // {\n // \"name\": \"Wake Island\",\n // \"shortCode\": \"79\"\n // },\n // {\n // \"name\": \"Bajo Nuevo Bank\",\n // \"shortCode\": \"BN\"\n // },\n // {\n // \"name\": \"Serranilla Bank\",\n // \"shortCode\": \"SB\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Uruguay\",\n // \"countryShortCode\": \"UY\",\n // \"regions\": [\n // {\n // \"name\": \"Artigas\",\n // \"shortCode\": \"AR\"\n // },\n // {\n // \"name\": \"Canelones\",\n // \"shortCode\": \"CA\"\n // },\n // {\n // \"name\": \"Cerro Largo\",\n // \"shortCode\": \"CL\"\n // },\n // {\n // \"name\": \"Colonia\",\n // \"shortCode\": \"CO\"\n // },\n // {\n // \"name\": \"Durazno\",\n // \"shortCode\": \"DU\"\n // },\n // {\n // \"name\": \"Flores\",\n // \"shortCode\": \"FS\"\n // },\n // {\n // \"name\": \"Florida\",\n // \"shortCode\": \"FD\"\n // },\n // {\n // \"name\": \"Lavalleja\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Maldonado\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Montevideo\",\n // \"shortCode\": \"MO\"\n // },\n // {\n // \"name\": \"Paysandú\",\n // \"shortCode\": \"PA\"\n // },\n // {\n // \"name\": \"Río Negro\",\n // \"shortCode\": \"RN\"\n // },\n // {\n // \"name\": \"Rivera\",\n // \"shortCode\": \"RV\"\n // },\n // {\n // \"name\": \"Rocha\",\n // \"shortCode\": \"RO\"\n // },\n // {\n // \"name\": \"Salto\",\n // \"shortCode\": \"SA\"\n // },\n // {\n // \"name\": \"San José\",\n // \"shortCode\": \"SJ\"\n // },\n // {\n // \"name\": \"Soriano\",\n // \"shortCode\": \"SO\"\n // },\n // {\n // \"name\": \"Tacuarembó\",\n // \"shortCode\": \"TA\"\n // },\n // {\n // \"name\": \"Treinta y Tres\",\n // \"shortCode\": \"TT\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Uzbekistan\",\n \"countryShortCode\": \"UZ\",\n \"regions\": [\n {\n \"name\": \"Toshkent shahri\",\n \"shortCode\": \"TK\"\n },\n {\n \"name\": \"Andijon\",\n \"shortCode\": \"AN\"\n },\n {\n \"name\": \"Buxoro\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Farg‘ona\",\n \"shortCode\": \"FA\"\n },\n {\n \"name\": \"Jizzax\",\n \"shortCode\": \"JI\"\n },\n {\n \"name\": \"Namangan\",\n \"shortCode\": \"NG\"\n },\n {\n \"name\": \"Navoiy\",\n \"shortCode\": \"NW\"\n },\n {\n \"name\": \"Qashqadaryo (Qarshi)\",\n \"shortCode\": \"QA\"\n },\n {\n \"name\": \"Samarqand\",\n \"shortCode\": \"SA\"\n },\n {\n \"name\": \"Sirdaryo (Guliston)\",\n \"shortCode\": \"SI\"\n },\n {\n \"name\": \"Surxondaryo (Termiz)\",\n \"shortCode\": \"SU\"\n },\n {\n \"name\": \"Toshkent wiloyati\",\n \"shortCode\": \"TO\"\n },\n {\n \"name\": \"Xorazm (Urganch)\",\n \"shortCode\": \"XO\"\n },\n {\n \"name\": \"Qoraqalpog‘iston Respublikasi (Nukus)\",\n \"shortCode\": \"QR\"\n }\n ]\n },\n // {\n // \"countryName\": \"Vanuatu\",\n // \"countryShortCode\": \"VU\",\n // \"regions\": [\n // {\n // \"name\": \"Malampa\",\n // \"shortCode\": \"MAP\"\n // },\n // {\n // \"name\": \"Pénama\",\n // \"shortCode\": \"PAM\"\n // },\n // {\n // \"name\": \"Sanma\",\n // \"shortCode\": \"SAM\"\n // },\n // {\n // \"name\": \"Shéfa\",\n // \"shortCode\": \"SEE\"\n // },\n // {\n // \"name\": \"Taféa\",\n // \"shortCode\": \"TAE\"\n // },\n // {\n // \"name\": \"Torba\",\n // \"shortCode\": \"TOB\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Venezuela, Bolivarian Republic of\",\n // \"countryShortCode\": \"VE\",\n // \"regions\": [\n // {\n // \"name\": \"Dependencias Federales\",\n // \"shortCode\": \"W\"\n // },\n // {\n // \"name\": \"Distrito Federal\",\n // \"shortCode\": \"A\"\n // },\n // {\n // \"name\": \"Amazonas\",\n // \"shortCode\": \"Z\"\n // },\n // {\n // \"name\": \"Anzoátegui\",\n // \"shortCode\": \"B\"\n // },\n // {\n // \"name\": \"Apure\",\n // \"shortCode\": \"C\"\n // },\n // {\n // \"name\": \"Aragua\",\n // \"shortCode\": \"D\"\n // },\n // {\n // \"name\": \"Barinas\",\n // \"shortCode\": \"E\"\n // },\n // {\n // \"name\": \"Bolívar\",\n // \"shortCode\": \"F\"\n // },\n // {\n // \"name\": \"Carabobo\",\n // \"shortCode\": \"G\"\n // },\n // {\n // \"name\": \"Cojedes\",\n // \"shortCode\": \"H\"\n // },\n // {\n // \"name\": \"Delta Amacuro\",\n // \"shortCode\": \"Y\"\n // },\n // {\n // \"name\": \"Falcón\",\n // \"shortCode\": \"I\"\n // },\n // {\n // \"name\": \"Guárico\",\n // \"shortCode\": \"J\"\n // },\n // {\n // \"name\": \"Lara\",\n // \"shortCode\": \"K\"\n // },\n // {\n // \"name\": \"Mérida\",\n // \"shortCode\": \"L\"\n // },\n // {\n // \"name\": \"Miranda\",\n // \"shortCode\": \"M\"\n // },\n // {\n // \"name\": \"Monagas\",\n // \"shortCode\": \"N\"\n // },\n // {\n // \"name\": \"Nueva Esparta\",\n // \"shortCode\": \"O\"\n // },\n // {\n // \"name\": \"Portuguesa\",\n // \"shortCode\": \"P\"\n // },\n // {\n // \"name\": \"Sucre\",\n // \"shortCode\": \"R\"\n // },\n // {\n // \"name\": \"Táchira\",\n // \"shortCode\": \"S\"\n // },\n // {\n // \"name\": \"Trujillo\",\n // \"shortCode\": \"T\"\n // },\n // {\n // \"name\": \"Vargas\",\n // \"shortCode\": \"X\"\n // },\n // {\n // \"name\": \"Yaracuy\",\n // \"shortCode\": \"U\"\n // },\n // {\n // \"name\": \"Zulia\",\n // \"shortCode\": \"V\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Vietnam\",\n // \"countryShortCode\": \"VN\",\n // \"regions\": [\n // {\n // \"name\": \"Đồng Nai\",\n // \"shortCode\": \"39\"\n // },\n // {\n // \"name\": \"Đồng Tháp\",\n // \"shortCode\": \"45\"\n // },\n // {\n // \"name\": \"Gia Lai\",\n // \"shortCode\": \"30\"\n // },\n // {\n // \"name\": \"Hà Giang\",\n // \"shortCode\": \"03\"\n // },\n // {\n // \"name\": \"Hà Nam\",\n // \"shortCode\": \"63\"\n // },\n // {\n // \"name\": \"Hà Tây\",\n // \"shortCode\": \"15\"\n // },\n // {\n // \"name\": \"Hà Tĩnh\",\n // \"shortCode\": \"23\"\n // },\n // {\n // \"name\": \"Hải Dương\",\n // \"shortCode\": \"61\"\n // },\n // {\n // \"name\": \"Hậu Giang\",\n // \"shortCode\": \"73\"\n // },\n // {\n // \"name\": \"Hòa Bình\",\n // \"shortCode\": \"14\"\n // },\n // {\n // \"name\": \"Hưng Yên\",\n // \"shortCode\": \"66\"\n // },\n // {\n // \"name\": \"Khánh Hòa\",\n // \"shortCode\": \"34\"\n // },\n // {\n // \"name\": \"Kiên Giang\",\n // \"shortCode\": \"47\"\n // },\n // {\n // \"name\": \"Kon Tum\",\n // \"shortCode\": \"28\"\n // },\n // {\n // \"name\": \"Lai Châu\",\n // \"shortCode\": \"01\"\n // },\n // {\n // \"name\": \"Lâm Đồng\",\n // \"shortCode\": \"35\"\n // },\n // {\n // \"name\": \"Lạng Sơn\",\n // \"shortCode\": \"09\"\n // },\n // {\n // \"name\": \"Lào Cai\",\n // \"shortCode\": \"02\"\n // },\n // {\n // \"name\": \"Long An\",\n // \"shortCode\": \"41\"\n // },\n // {\n // \"name\": \"Nam Định\",\n // \"shortCode\": \"67\"\n // },\n // {\n // \"name\": \"Nghệ An\",\n // \"shortCode\": \"22\"\n // },\n // {\n // \"name\": \"Ninh Bình\",\n // \"shortCode\": \"18\"\n // },\n // {\n // \"name\": \"Ninh Thuận\",\n // \"shortCode\": \"36\"\n // },\n // {\n // \"name\": \"Phú Thọ\",\n // \"shortCode\": \"68\"\n // },\n // {\n // \"name\": \"Phú Yên\",\n // \"shortCode\": \"32\"\n // },\n // {\n // \"name\": \"Quảng Bình\",\n // \"shortCode\": \"24\"\n // },\n // {\n // \"name\": \"Quảng Nam\",\n // \"shortCode\": \"27\"\n // },\n // {\n // \"name\": \"Quảng Ngãi\",\n // \"shortCode\": \"29\"\n // },\n // {\n // \"name\": \"Quảng Ninh\",\n // \"shortCode\": \"13\"\n // },\n // {\n // \"name\": \"Quảng Trị\",\n // \"shortCode\": \"25\"\n // },\n // {\n // \"name\": \"Sóc Trăng\",\n // \"shortCode\": \"52\"\n // },\n // {\n // \"name\": \"Sơn La\",\n // \"shortCode\": \"05\"\n // },\n // {\n // \"name\": \"Tây Ninh\",\n // \"shortCode\": \"37\"\n // },\n // {\n // \"name\": \"Thái Bình\",\n // \"shortCode\": \"20\"\n // },\n // {\n // \"name\": \"Thái Nguyên\",\n // \"shortCode\": \"69\"\n // },\n // {\n // \"name\": \"Thanh Hóa\",\n // \"shortCode\": \"21\"\n // },\n // {\n // \"name\": \"Thừa Thiên–Huế\",\n // \"shortCode\": \"26\"\n // },\n // {\n // \"name\": \"Tiền Giang\",\n // \"shortCode\": \"46\"\n // },\n // {\n // \"name\": \"Trà Vinh\",\n // \"shortCode\": \"51\"\n // },\n // {\n // \"name\": \"Tuyên Quang\",\n // \"shortCode\": \"07\"\n // },\n // {\n // \"name\": \"Vĩnh Long\",\n // \"shortCode\": \"49\"\n // },\n // {\n // \"name\": \"Vĩnh Phúc\",\n // \"shortCode\": \"70\"\n // },\n // {\n // \"name\": \"Yên Bái\",\n // \"shortCode\": \"06\"\n // },\n // {\n // \"name\": \"Cần Thơ\",\n // \"shortCode\": \"CT\"\n // },\n // {\n // \"name\": \"Đà Nẵng\",\n // \"shortCode\": \"DN\"\n // },\n // {\n // \"name\": \"Hà Nội\",\n // \"shortCode\": \"HN\"\n // },\n // {\n // \"name\": \"Hải Phòng\",\n // \"shortCode\": \"HP\"\n // },\n // {\n // \"name\": \"Hồ Chí Minh (Sài Gòn)\",\n // \"shortCode\": \"SG\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Virgin Islands, British\",\n // \"countryShortCode\": \"VG\",\n // \"regions\": [\n // {\n // \"name\": \"Anegada\",\n // \"shortCode\": \"ANG\"\n // },\n // {\n // \"name\": \"Jost Van Dyke\",\n // \"shortCode\": \"JVD\"\n // },\n // {\n // \"name\": \"Tortola\",\n // \"shortCode\": \"TTA\"\n // },\n // {\n // \"name\": \"Virgin Gorda\",\n // \"shortCode\": \"VGD\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Virgin Islands, U.S.\",\n // \"countryShortCode\": \"VI\",\n // \"regions\": [\n // {\n // \"name\": \"St. Thomas\",\n // \"shortCode\": \"STH\"\n // },\n // {\n // \"name\": \"St. John\",\n // \"shortCode\": \"SJO\"\n // },\n // {\n // \"name\": \"St. Croix\",\n // \"shortCode\": \"SCR\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Wallis and Futuna\",\n // \"countryShortCode\": \"WF\",\n // \"regions\": [\n // {\n // \"name\": \"Alo\",\n // \"shortCode\": \"ALO\"\n // },\n // {\n // \"name\": \"Sigave\",\n // \"shortCode\": \"SIG\"\n // },\n // {\n // \"name\": \"Wallis\",\n // \"shortCode\": \"WAL\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Western Sahara\",\n // \"countryShortCode\": \"EH\",\n // \"regions\": [\n // {\n // \"name\": \"Es Smara\",\n // \"shortCode\": \"ESM\"\n // },\n // {\n // \"name\": \"Boujdour\",\n // \"shortCode\": \"BOD\"\n // },\n // {\n // \"name\": \"Laâyoune\",\n // \"shortCode\": \"LAA\"\n // },\n // {\n // \"name\": \"Aousserd\",\n // \"shortCode\": \"AOU\"\n // },\n // {\n // \"name\": \"Oued ed Dahab\",\n // \"shortCode\": \"OUD\"\n // }\n // ]\n // },\n // {\n // \"countryName\": \"Yemen\",\n // \"countryShortCode\": \"YE\",\n // \"regions\": [\n // {\n // \"name\": \"Abyān\",\n // \"shortCode\": \"AB\"\n // },\n // {\n // \"name\": \"'Adan\",\n // \"shortCode\": \"AD\"\n // },\n // {\n // \"name\": \"Aḑ Ḑāli'\",\n // \"shortCode\": \"DA\"\n // },\n // {\n // \"name\": \"Al Bayḑā'\",\n // \"shortCode\": \"BA\"\n // },\n // {\n // \"name\": \"Al Ḩudaydah\",\n // \"shortCode\": \"HU\"\n // },\n // {\n // \"name\": \"Al Jawf\",\n // \"shortCode\": \"JA\"\n // },\n // {\n // \"name\": \"Al Mahrah\",\n // \"shortCode\": \"MR\"\n // },\n // {\n // \"name\": \"Al Maḩwīt\",\n // \"shortCode\": \"MW\"\n // },\n // {\n // \"name\": \"'Amrān\",\n // \"shortCode\": \"AM\"\n // },\n // {\n // \"name\": \"Dhamār\",\n // \"shortCode\": \"DH\"\n // },\n // {\n // \"name\": \"Ḩaḑramawt\",\n // \"shortCode\": \"HD\"\n // },\n // {\n // \"name\": \"Ḩajjah\",\n // \"shortCode\": \"HJ\"\n // },\n // {\n // \"name\": \"Ibb\",\n // \"shortCode\": \"IB\"\n // },\n // {\n // \"name\": \"Laḩij\",\n // \"shortCode\": \"LA\"\n // },\n // {\n // \"name\": \"Ma'rib\",\n // \"shortCode\": \"MA\"\n // },\n // {\n // \"name\": \"Raymah\",\n // \"shortCode\": \"RA\"\n // },\n // {\n // \"name\": \"Şā‘dah\",\n // \"shortCode\": \"SD\"\n // },\n // {\n // \"name\": \"Şan‘ā'\",\n // \"shortCode\": \"SN\"\n // },\n // {\n // \"name\": \"Shabwah\",\n // \"shortCode\": \"SH\"\n // },\n // {\n // \"name\": \"Tā‘izz\",\n // \"shortCode\": \"TA\"\n // }\n // ]\n // },\n {\n \"countryName\": \"Zambia\",\n \"countryShortCode\": \"ZM\",\n \"regions\": [\n {\n \"name\": \"Central\",\n \"shortCode\": \"02\"\n },\n {\n \"name\": \"Copperbelt\",\n \"shortCode\": \"08\"\n },\n {\n \"name\": \"Eastern\",\n \"shortCode\": \"03\"\n },\n {\n \"name\": \"Luapula\",\n \"shortCode\": \"04\"\n },\n {\n \"name\": \"Lusaka\",\n \"shortCode\": \"09\"\n },\n {\n \"name\": \"Northern\",\n \"shortCode\": \"05\"\n },\n {\n \"name\": \"North-Western\",\n \"shortCode\": \"06\"\n },\n {\n \"name\": \"Southern\",\n \"shortCode\": \"07\"\n },\n {\n \"name\": \"Western\",\n \"shortCode\": \"01\"\n }\n ]\n },\n {\n \"countryName\": \"Zimbabwe\",\n \"countryShortCode\": \"ZW\",\n \"regions\": [\n {\n \"name\": \"Bulawayo\",\n \"shortCode\": \"BU\"\n },\n {\n \"name\": \"Harare\",\n \"shortCode\": \"HA\"\n },\n {\n \"name\": \"Manicaland\",\n \"shortCode\": \"MA\"\n },\n {\n \"name\": \"Mashonaland Central\",\n \"shortCode\": \"MC\"\n },\n {\n \"name\": \"Mashonaland East\",\n \"shortCode\": \"ME\"\n },\n {\n \"name\": \"Mashonaland West\",\n \"shortCode\": \"MW\"\n },\n {\n \"name\": \"Masvingo\",\n \"shortCode\": \"MV\"\n },\n {\n \"name\": \"Matabeleland North\",\n \"shortCode\": \"MN\"\n },\n {\n \"name\": \"Matabeleland South\",\n \"shortCode\": \"MS\"\n },\n {\n \"name\": \"Midlands\",\n \"shortCode\": \"MI\"\n }\n ]\n }\n];\n\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n FormControl,\n Grid,\n IconButton,\n InputAdornment,\n Input,\n InputLabel,\n Link,\n Typography,\n Select,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Visibility, VisibilityOff } from '@material-ui/icons';\nimport TermsOfService from '../TermsOfService';\nimport { privacy_url } from '../data';\nimport { useTranslation } from 'react-i18next';\nimport Cookies from 'universal-cookie';\nimport 'react-phone-number-input/style.css'\nimport PhoneInput, {isPossiblePhoneNumber} from 'react-phone-number-input'\nimport ru from 'react-phone-number-input/locale/ru.json'\nimport en from 'react-phone-number-input/locale/en.json'\nimport es from 'react-phone-number-input/locale/es.json'\nimport fr from 'react-phone-number-input/locale/fr.json'\n\n// Inline CSS\nconst useStyles = makeStyles((theme) => ({\n errorBox: {\n minHeight: theme.spacing(3),\n marginTop: '10px',\n }\n ,\n text: { padding: theme.spacing(1) },\n textField: {\n padding: theme.spacing(1),\n width: '50ch',\n },\n phoneField: {\n },\n grow: { flexGrow: 2 }\n}));\n\nexport default function GSignUp({ authState, onStateChange, changeLanguage }) {\n const classes = useStyles();\n const cookies = new Cookies();\n const { t, i18n } = useTranslation();\n // Set state\n const [values, setValues] = React.useState({\n username: '',\n password: '',\n showPassword: false,\n given_name: '',\n family_name: '',\n phone_number: ''\n });\n const [countryLabels, setCountryLabels] = React.useState(en);\n const [formError, setFormError] = React.useState('');\n const [errorStr, setErrorStr] = React.useState(t(\"invalidPassword\"));\n const [openTerms, setOpenTerms] = React.useState(false);\n const [loginLang, setLoginLang] = React.useState(\"en\");\n \n // Handle UI interactions\n const handleChange = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n };\n const handleChangePhone = (prop) => (event) => {\n setValues({ ...values, [prop]: event});\n };\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n const handleBackToSignIn = () => {\n onStateChange('signIn');\n };\n const handleSignUp = async () => {\n // Validate fields\n if (values.username === '') {\n setFormError(t(\"emailCannotBeEmpty\"));\n return;\n }\n\n if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(values.username) === false) {\n setFormError(t(\"invalidEmailAddress\"));\n return;\n }\n\n if (values.password === '') {\n setFormError(errorStr);\n return;\n }\n\n if (values.password.length < 8) {\n setFormError(errorStr);\n return;\n }\n\n if (values.given_name === '') {\n setFormError(t(\"mustIncludeFirst\"));\n return;\n }\n\n if (values.family_name === '') {\n setFormError(t(\"mustIncludeLast\"));\n return;\n }\n\n if (values.phone_number ? (isPossiblePhoneNumber(values.phone_number) ? false : true) : false) {\n setFormError(t(\"invalidPhoneNumber\"));\n return;\n }\n else setFormError('');\n //console.log(values);\n //return;\n // Attempt to create Cognito account\n try {\n await Auth.signUp({\n username: values.username,\n password: values.password,\n attributes: {\n email: values.username,\n given_name: values.given_name,\n family_name: values.family_name,\n phone_number: (values.phone_number !== '' ? values.phone_number : '')\n }\n });\n onStateChange('confirmSignUp');\n } catch (error) {\n console.log(error);\n\n if (error.code === 'InvalidPasswordException') {\n setFormError(errorStr);\n } else {\n setFormError(error.message);\n }\n\n }\n };\n\n const handleOpenTerms = () => {\n setOpenTerms(true);\n };\n\n const handleCloseTerms = () => {\n setOpenTerms(false);\n };\n\n const handleChangeLanguage = (e) => {\n cookies.set('login-lang', e.target.value, { path: '/' });\n changeLanguage(e.target.value);\n setLoginLang(e.target.value);\n };\n useEffect(() => {\n var lang = cookies.get('login-lang');\n changeLanguage(lang);\n setLoginLang(lang);\n setCountryLabels(lang === 'ru' ? ru : (lang === \"es\" ? es : (lang === 'fr' ? fr : en)));\n }, [cookies.get('login-lang')]);\n\n return (\n \n {authState === 'signUp'\n ? \n \n {t(\"createAccount\")}\n \n\n \n \n \n \n \n \n \n\n \n \n \n {t(\"email\")}\n \n \n \n \n \n \n \n {t(\"password\")}\n \n \n \n {values.showPassword ? : }\n \n } />\n \n \n \n \n \n {t(\"firstName\")}\n \n \n \n \n \n \n \n {t(\"lastName\")}\n \n \n \n \n \n \n \n
\n {formError}\n
\n
\n {false && \n \n {t(\"phoneNumber2\")}\n \n +1} />\n\n
\n {formError}\n
\n\n
}\n
\n \n \n \n {t(\"byClickingOnCreate\")}\n \n\n \n \n \n \n \n {t(\"privacy\")}\n \n \n \n \n \n\n \n \n \n {t(\"haveAnAccount\")}\n \n \n \n \n
\n :\n null\n }\n {openTerms && }\n
\n );\n}","import React from 'react'\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n FormControl,\n Grid,\n Input,\n InputLabel,\n Link,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n errorBox: { minHeight: theme.spacing(3) },\n text: { padding: theme.spacing(1) },\n textField: {\n padding: theme.spacing(1),\n width: '50ch',\n },\n grow: { flexGrow: 2 }\n}));\n\nexport default function GConfirmSignUp({ authState, onStateChange }) {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [values, setValues] = React.useState({\n username: '',\n code: ''\n });\n const [formError, setFormError] = React.useState('');\n\n const handleChange = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n };\n \n const handleBackToSignIn = () => {\n onStateChange('signIn');\n };\n\n const handleResendCode = async () => {\n // Validate the fields.\n if (values.username === '') {\n setFormError(t(\"emailCannotBeEmpty\"));\n return;\n }\n if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(values.username) === false) {\n setFormError(t(\"invalidEmailAddress\"));\n return;\n }\n\n try {\n await Auth.resendSignUp(values.username);\n setFormError(t(\"codeResent\"));\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n const handleConfirm = async () => {\n // Validate the fields.\n if (values.username === '') {\n setFormError(t(\"emailCannotBeEmpty\"));\n return;\n }\n if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(values.username) === false) {\n setFormError(t(\"invalidEmailAddress\"));\n return;\n }\n if (values.code === '') {\n setFormError(t(\"codeCannotBeEmpty\"));\n return;\n }\n\n try {\n await Auth.confirmSignUp(values.username, values.code);\n onStateChange('signIn');\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n return (\n \n {authState === 'confirmSignUp'\n ? \n \n {t(\"confirmEmail\")}\n {t(\"pleaseCheckYourJunkFolder\")}\n \n \n \n \n {t(\"email\")}\n \n \n \n \n \n \n \n {t(\"confirmationCode\")}\n \n \n \n \n \n \n \n
\n {formError}\n
\n
\n \n \n \n
\n
\n \n \n \n {t(\"lostYourCode\")}\n \n \n \n \n \n \n \n
\n : null}\n
\n );\n}","import React from 'react'\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n FormControl,\n Grid,\n IconButton,\n Input,\n InputAdornment,\n InputLabel,\n Link,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Visibility, VisibilityOff } from '@material-ui/icons';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n errorBox: { minHeight: theme.spacing(3) },\n text: { padding: theme.spacing(1) },\n textField: {\n padding: theme.spacing(1),\n width: '50ch',\n },\n grow: { flexGrow: 2 }\n}));\n\nexport default function GForgotPassword({ authState, onStateChange }) {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [values, setValues] = React.useState({\n username: '',\n code: '',\n new_password: '',\n codeSent: false,\n showPassword: false\n });\n const [formError, setFormError] = React.useState('');\n\n // Handle UI interactions\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n const handleChange = (prop) => (event) => {\n setValues({ ...values, [prop]: event.target.value });\n };\n const handleBackToSignIn = () => {\n onStateChange('signIn');\n };\n const handleSendCode = async () => {\n // Validate fields\n if (values.username === '') {\n setFormError(t(\"emailCannotBeEmpty\"));\n return;\n }\n if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(values.username) === false) {\n setFormError(t(\"invalidEmailAddress\"));\n return;\n }\n else setFormError('');\n\n // Submit for code email\n try {\n await Auth.forgotPassword(values.username);\n setValues({ ...values, codeSent: true });\n } catch (error) {\n setFormError(error.message);\n }\n };\n const handleValidateCode = async () => {\n // Validate fields\n if (values.code === '') {\n setFormError(t(\"codeCannotBeEmpty\"));\n return;\n }\n if (values.new_password === '') {\n setFormError(t(\"newPasswordCannotBeEmpty\"));\n return;\n }\n\n // Attempt to set new password\n try {\n await Auth.forgotPasswordSubmit(values.username, values.code, values.new_password)\n onStateChange('signIn');\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n return (\n \n {authState === 'forgotPassword'\n ? \n {values.codeSent\n ? \n \n {t(\"resetYourPassword\")}\n \n \n \n \n {t(\"verificationCode\")}\n \n \n \n \n \n \n \n {t(\"newPassword\")}\n \n \n \n {values.showPassword ? : }\n \n } />\n \n \n \n \n \n
\n {formError}\n
\n
\n {/* */}\n \n {/* */}\n
\n
\n
\n : \n \n {t(\"resetYourPassword\")}\n \n \n \n \n {t(\"email\")}\n \n \n \n \n \n \n \n
\n {formError}\n
\n
\n {/* */}\n \n {/* */}\n
\n
\n
}\n \n \n \n
\n : null}\n
\n );\n}","import React from 'react';\nimport { Authenticator } from 'aws-amplify-react';\nimport { Typography, Container } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport GSignIn from './GSignIn.jsx'\nimport GSignUp from './GSignUp.jsx'\nimport GConfirmSignUp from './GConfirmSignUp.jsx'\nimport GForgotPassword from './GForgotPassword.jsx'\n\nconst useStyles = makeStyles((theme) => ({\n wrap: {\n height: '100%',\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n text: { padding: theme.spacing(1) },\n content: { padding: theme.spacing(3) },\n logo: {\n display: \"block\",\n width: '100%',\n maxHeight: '100px',\n marginRight: theme.spacing(2),\n },\n container: {\n padding: theme.spacing(2)\n }\n}));\n\nexport default function GAuth({ appTitle, onAuthStateChange, logo, changeLanguage }) {\n const classes = useStyles();\n\n return (\n
\n \n {logo && Graco}\n {!logo && \n {appTitle}\n }\n \n \n \n \n \n \n \n
\n );\n}","import React from 'react';\nimport { SvgIcon } from '@material-ui/core';\n\nconst TankIcon = (props) => {\n return(\n \n \n \n )\n}\n\nexport default TankIcon;\n","import React, { useRef } from \"react\";\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport {\n AppBar,\n Button,\n ClickAwayListener,\n Divider,\n Grow,\n Hidden,\n IconButton,\n Link,\n ListItemIcon,\n MenuItem, MenuList,\n Paper,\n Popper,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n AccountCircle,\n ArrowDropDown,\n Settings,\n Edit,\n} from '@material-ui/icons';\nimport BusinessIcon from '@material-ui/icons/Business';\nimport Badge from '@material-ui/core/Badge';\nimport ExitToAppIcon from '@material-ui/icons/ExitToApp';\nimport AccountTreeIcon from '@material-ui/icons/AccountTree';\nimport HelpIcon from '@material-ui/icons/Help';\nimport PlaylistAddIcon from '@material-ui/icons/PlaylistAdd';\nimport ListIcon from '@material-ui/icons/List';\nimport OpacityIcon from '@material-ui/icons/Opacity';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport SettingsApplicationsIcon from '@material-ui/icons/SettingsApplications';\nimport logoPulse from './assets/Pulse_Level_Logo_white_v2.png';\nimport logoPulseMobile from './assets/Pulse_Level_Logo_white_v3.png';\nimport TankIcon from './assets/TankIcon.js';\nimport { host } from \"../data\";\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Dialog from '@material-ui/core/Dialog';\nimport RadioGroup from '@material-ui/core/RadioGroup';\nimport Radio from '@material-ui/core/Radio';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport TextField from '@material-ui/core/TextField';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Rating from '@material-ui/lab/Rating';\nimport Slide from '@material-ui/core/Slide';\nimport { useTranslation } from 'react-i18next';\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nconst logo = logoPulse;\nconst logoMobile = logoPulseMobile;\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n '& > * + *': {\n marginTop: theme.spacing(2),\n },\n },\n grow: {\n flexGrow: 1,\n height: '64px'\n },\n logo: {\n maxHeight: '50px',\n marginRight: theme.spacing(2),\n },\n logoMobile: {\n width: '30vw',\n maxWidth: '145px',\n marginRight: theme.spacing(1) / 2,\n },\n title: {\n marginLeft: theme.spacing(2),\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'block',\n //maxWidth: 177\n },\n },\n title_small: {\n marginLeft: theme.spacing(2),\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'block',\n maxWidth: 177\n },\n },\n icon_link: {\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'block',\n },\n marginLeft: theme.spacing(0),\n marginRight: theme.spacing(0),\n },\n devicebutton: {\n marginRight: theme.spacing(2),\n },\n alertIcon: {\n marginRight: theme.spacing(1),\n },\n sectionDesktop: {\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'flex',\n },\n },\n menuItem: {\n minWidth: '500px',\n marginTop: '5px',\n marginBottom: '5x',\n marginLeft: '0',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n clearAll: {\n marginTop: '5px',\n textAlign: \"center\",\n color: '#1976d2',\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n centeredMenuItem: {\n minWidth: '400px',\n textAlign: \"center\",\n '&:hover': {\n backgroundColor: 'transparent',\n },\n },\n clearIcon: {\n float: \"right\",\n marginLeft: 'auto',\n marginRight: '0',\n width: '10px',\n minWidth: '25px',\n },\n notificationDescription: {\n marginRight: '25px',\n },\n noNotificationsString: {\n marginTop: '10px',\n textAlign: \"center\",\n minWidth: '400px',\n },\n FeedbackButton: {\n marginRight: '20px',\n color: 'white',\n borderColor: 'white',\n },\n navBox: {\n borderRadius: 8\n },\n HeaderIcon: {\n marginLeft: '5px'\n },\n}));\n\nexport default function Header({ orgInfo, orgs, orgNavigationHandler }) {\n const classes = useStyles();\n const userFeedback = useRef(\"\");\n const [orgOpen, setOrgOpen] = React.useState(false);\n const [orgAnchor, setOrgAnchor] = React.useState(null);\n const [settingsOpen, setSettingsOpen] = React.useState(false);\n const [settingsAnchor, setSettingsAnchor] = React.useState(null);\n const [openThankYou, setOpenThankYou] = React.useState(false);\n const [feedbackMenuOpen, setFeedbackMenuOpen] = React.useState(false);\n const [feedbackSubjectRadio, setFeedbackSubjectRadio] = React.useState(\"\");\n const [userRating, setUserRating] = React.useState(null);\n const { t, i18n } = useTranslation();\n\n const handleOrgOpen = (event) => {\n setOrgAnchor(event.currentTarget);\n setOrgOpen(true);\n };\n\n const handleOrgClose = () => {\n setOrgOpen(false);\n };\n\n const handleOrgClick = (org) => {\n handleOrgClose();\n orgNavigationHandler(org);\n };\n\n const handleSettingsOpen = (event) => {\n setSettingsAnchor(event.currentTarget);\n setSettingsOpen(true);\n };\n\n const handleSettingsClose = () => {\n setSettingsOpen(false);\n };\n\n const handleSignOut = () => {\n Auth.signOut();\n };\n\n const handleClickOpen = () => {\n setFeedbackSubjectRadio(null);\n setUserRating(null);\n setFeedbackMenuOpen(true);\n };\n\n const handleFeedbackClose = () => {\n setFeedbackMenuOpen(false);\n };\n\n const handleFeedbackSend = async () => {\n if (userFeedback.current.value != \"\") {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n var body = JSON.stringify(\n {\n 'Subject': feedbackSubjectRadio,\n 'FeedbackText': userFeedback.current.value,\n 'Rating': userRating,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/user/feedback', requestOptions)\n .then(results => results.json())\n .then(data => {\n });\n });\n\n setFeedbackMenuOpen(false);\n setOpenThankYou(true);\n } else {\n userFeedback.current.focus();\n }\n };\n\n const handleThankYouClose = () => {\n setOpenThankYou(false);\n };\n\n return (\n
\n \n \n \n \n Graco\n \n \n\n \n \n Graco\n \n \n \n \n \n \n {orgInfo.orgName}\n \n \n \n \n \n \n \n \n \n {orgInfo.orgName}\n \n \n \n \n \n\n \n\n {({ TransitionProps, placement }) => (\n \n \n \n \n {orgInfo.isOrgEditor && { setOrgOpen(false) }} component={RouterLink} to={{ pathname: '/orgs/new', state: { orgInfo: { orgInfo }, orgEdit: true } }}>\n \n \n \n {orgInfo.orgName}\n }\n {orgInfo.isOrgEditor && }\n {orgs !== undefined\n ? orgs.map((name, index) =>\n handleOrgClick(orgs[index])}>\n {name}\n )\n : null}\n \n \n + {t(\"createNewOrg\")}\n \n {orgInfo.isOrgEditor && \n + {t(\"createNewBranch\")}\n }\n \n \n \n )}\n \n
\n {false && \n \n \n \n \n \n
\n }\n\n {orgInfo.isOrgEditor && \n \n \n \n {t(\"dashboard\")}\n \n \n }\n {false && orgInfo.isOrgEditor && \n \n \n \n \n \n }\n {orgInfo.isOrgEditor &&
}\n {orgInfo.isOrgEditor && \n \n \n \n {t(\"devices\")}\n \n \n }\n {false && orgInfo.isOrgEditor && \n \n \n \n \n \n }\n {orgInfo.isOrgEditor &&
}\n \n {\n \n \n {t(\"myTanks\")}\n \n }\n \n {false && \n \n {\n \n }\n \n }\n\n
\n \n \n \n \n \n\n \n {t(\"sendUsFeedback\")}\n \n\n \n {t(\"feedbackStr1\")}\n \n\n setUserRating(e.target.value)}\n />\n\n \n {t(\"feedbackStr2\")}\n \n\n setFeedbackSubjectRadio(e.target.value)}\n >\n } label={t(\"setup\")} />\n } label={t(\"mapping\")} />\n } label={t(\"dataVisualization\")} />\n } label={t(\"dataAnalysis\")} />\n } label={t(\"reports\")} />\n } label={t(\"other\")} />\n \n\n \n {t(\"feedbackStr3\")}\n \n\n \n\n \n \n \n \n \n \n\n \n {t(\"thankYou\")}\n \n \n {t(\"feedbackStr4\")}\n \n \n \n \n \n \n\n\n \n \n \n \n \n\n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n {orgInfo.isOrgEditor && \n \n \n \n {t(\"dashboard\")}\n }\n \n \n \n \n {t(\"myTanks\")}\n \n \n \n {false\n ? \n \n \n \n {t(\"settings\")}\n \n : null}\n \n \n \n \n {t(\"userSettings\")}\n \n \n {orgInfo.isOrgEditor\n ? \n \n \n \n {t(\"permissionManagement\")}\n \n : null}\n {orgInfo.isOrgEditor\n ? \n \n \n \n {t(\"deviceBilling\")}\n \n : null}\n {orgInfo.isOrgEditor\n ? \n \n \n \n {t(\"templates\")}\n \n : null}\n {orgInfo.isOrgEditor\n ? \n \n \n \n {t(\"fluids\")}\n \n : null}\n\n \n \n \n \n {t(\"help\")}\n \n \n \n \n \n \n {t(\"logOut\")}\n \n \n \n \n )}\n \n \n \n
\n );\n}\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import React, {\n useState,\n useEffect,\n Fragment,\n } from 'react';\n import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Typography,\n } from '@material-ui/core';\n import { CircleIcon } from '@material-ui/icons/Add'\n import { Auth } from 'aws-amplify';\n import { useHistory } from \"react-router-dom\";\n import { useTranslation } from 'react-i18next';\n import { makeStyles } from '@material-ui/core/styles';\n import {updateTimeStamp, updateNotes} from '../data';\n \n\n const useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(0),\n marginTop: theme.spacing(1)\n },\n indented_subBullet: {\n marginLeft: theme.spacing(4),\n },\n}));\n\n const UpdateNotification = ({ signedIn, showUpdate, onCloseFunction=()=>{} }) => {\n //let history = useHistory();\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n let idleInterval = 1000 * 60 * 1; //1 minute\n let idleEvent;\n const handleClose = () => {\n //Fetch to set that this update has been has been acknowledge\n onCloseFunction();\n };\n \n\n // change fragment to modal and handleclose func to close\n return \n \n \n {t(\"pulseLevelUpdated\").replace(\"{date}\",updateTimeStamp)}\n \n \n {{t(\"whatsNew\")}:}\n {updateNotes.map((note) => (\n {note.type === 'main' ? '\\u25AA' : '\\u25CB'} {note.label}\n ))}\n \n \n \n \n \n ;\n };\n \n export default UpdateNotification;","import React from 'react'\nimport { Link as RouterLink, useHistory } from 'react-router-dom';\nimport {\n Button,\n Divider,\n Grid,\n IconButton,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport TableRow from '@material-ui/core/TableRow';\nimport Paper from '@material-ui/core/Paper';\nimport { privacy_url } from '../data';\nimport TermsOfService from '../TermsOfService';\nimport { useTranslation } from 'react-i18next';\nimport UpdateNotification from '../UpdateNotification/UpdateNotification.js';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n table: {\n minWidth: 650,\n border: \"none\",\n boxShadow: \"none\"\n }\n}));\n\nexport default function HelpPage() {\n const classes = useStyles();\n const history = useHistory();\n const [openTerms, setOpenTerms] = React.useState(false);\n const [showUpdateInfo, setShowUpdateInfo] = React.useState(false);\n const { t } = useTranslation();\n\n const handleCloseTerms = () => {\n setOpenTerms(false);\n };\n const handleOpenSoftwareInfo = () => {\n setShowUpdateInfo(true);\n };\n const clearShowUpdate = () => {\n setShowUpdateInfo(false);\n };\n\n const handleOpenTerms = () => {\n setOpenTerms(true);\n };\n\n return (\n \n \n \n \n history.goBack()}>\n \n \n \n \n {t(\"help\")}\n \n \n \n \n \n \n \n \n \n \n {t(\"setupGuide\")}\n \n \n \n \n {t(\"operationGuide\")}\n \n \n \n \n \n \n \n \n \n {t(\"forHelpEmail_colon\")} ledtech@graco.com\n \n \n \n \n {t(\"techAssistancePhone\")}\n \n \n \n \n \n \n \n \n \n {t(\"privacy\")}\n \n \n \n \n www.graco.com\n \n \n \n
\n
\n {openTerms && }\n
\n
\n );\n}\n","export const isValidEmail = (email) =>\n /^(([^<>()[\\],;:\\s@]+(\\.[^<>()[\\],;:\\s@]+)*)|(.+))@(([^<>()[\\],;:\\s@]+\\.)+[^<>()[\\],;:\\s@]{2,})$/i.test(\n email\n );\n","import React, { useRef, useState } from \"react\";\nimport { Link as RouterLink, useHistory } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport {\n Box,\n Button,\n Checkbox,\n Divider,\n FormGroup,\n FormControlLabel,\n Grid,\n IconButton,\n TextField,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { host } from \"../../data\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { countries } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n textInput: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n clickButtons: {\n marginLeft: theme.spacing(1),\n }\n}));\n\nexport default function OrgCreate(props) {\n const { t } = useTranslation();\n let history = useHistory();\n const classes = useStyles();\n const [orgName, setOrgName] = useState({ name: '' });\n const org_name = useRef(\"\");\n const org_address_line_1 = useRef(\"\");\n const [orgAddressLine1, setOrgAddressLine1] = useState({ address: '' });\n const org_contact = useRef(\"\");\n const [orgContactName, setOrgContactName] = useState({ name: \"\" });\n const org_phone = useRef(\"\");\n const [orgContactPhone, setOrgContactPhone] = useState({ phone: \"\" });\n const org_city = useRef(\"\");\n const [orgCity, setOrgCity] = useState({ city: '' });\n const org_postal = useRef(\"\");\n const [orgPostal, setOrgPostal] = useState({ postal: '' });\n const org_email = useRef(\"\");\n const [orgContactEmail, setOrgContactEmail] = useState({ email: \"\" });\n const [country, setCountry] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [defCheck, setDefCheck] = useState(false);\n\n function isValidEnteredEmail(value) {\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n };\n\n function isValidPhoneNumber(value) {\n if ((/^\\d{7,}$/).test(value.replace(/[\\s()+\\-\\.]|ext/gi, ''))) {\n return (true);\n }\n\n alert(t(\"youHaveEnteredAnInvalidPhone\"));\n return (false);\n }\n\n const handleCheck = (event) => {\n setDefCheck(event.target.checked);\n };\n\n React.useEffect(() => {\n if (!props.orgEdit) {\n setOrgName({ name: \"\" });\n setOrgAddressLine1({ address: \"\" });\n setOrgCity({ city: \"\" });\n setOrgPostal({ postal: \"\" });\n setOrgContactEmail({ email: \"\" });\n setOrgContactName({ name: \"\" });\n setOrgContactPhone({ phone: \"\" });\n setCountry(\"\");\n setRegion(\"\");\n\n try {\n (async () => {\n let user = await Auth.currentAuthenticatedUser();\n setOrgContactEmail({ email: user.attributes.email });\n })();\n } catch (e) {\n console.log(e);\n }\n } else {\n setOrgName({ name: props.orgInfo.orgInfo.orgName });\n\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n console.log(\"Fetching org information...\");\n\n fetch(host + '/orgs/' + props.orgInfo.orgInfo.orgId, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n }\n }).then(response => response.json())\n .then(data => {\n setOrgAddressLine1({ address: data.address });\n setOrgCity({ city: data.city });\n setOrgPostal({ postal: data.postal });\n setOrgContactEmail({ email: data.contact_email });\n setOrgContactName({ name: data.contact_name });\n setOrgContactPhone({ phone: data.contact_phone });\n setCountry(data.country);\n setRegion(data.state);\n\n if (data.default_organization) {\n setDefCheck(true);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n })\n }\n }, [props.orgEdit]);\n\n const handleChangeCountry = (event) => {\n setCountry(event.target.value);\n };\n\n const handleChangeRegion = (event) => {\n setRegion(event.target.value);\n };\n\n function validateForm() {\n var ret = 1;\n\n if (country === \"\") {\n console.log(\"country is empty\");\n alert(t(\"countryInvalid\"));\n ret = 0;\n }\n\n if (region === \"\") {\n alert(t(\"stateRegionInvalid\"));\n ret = 0;\n }\n\n if (org_name.current.value === \"\") {\n alert(t(\"nameInvalid\"));\n ret = 0;\n }\n\n if (org_contact.current.value === \"\") {\n alert(\"Contact Invalid\");\n ret = 0;\n }\n\n if (org_address_line_1.current.value === \"\") {\n alert(t(\"addressInvalid\"));\n ret = 0;\n }\n\n if (org_city.current.value === \"\") {\n alert(t(\"cityInvalid\"));\n ret = 0;\n }\n\n if (org_postal.current.value === \"\") {\n alert(\"Zip/Postal Code Invalid\");\n ret = 0;\n }\n\n return ret;\n };\n\n const handleClick = async () => {\n if (isValidEnteredEmail(org_email.current.value) && isValidPhoneNumber(org_phone.current.value) && validateForm() === 1) {\n try {\n if (!props.orgEdit) {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var isDef = 0;\n if (defCheck) {\n isDef = 1;\n }\n var temp_org_name = org_name.current.value;\n var body = JSON.stringify(\n {\n \"Name\": org_name.current.value,\n \"ContactName\": org_contact.current.value,\n \"Email\": org_email.current.value,\n \"ContactPhone\": org_phone.current.value,\n \"AddressLine1\": org_address_line_1.current.value,\n \"Country\": country,\n \"City\": org_city.current.value,\n \"State\": region,\n \"PostalCode\": org_postal.current.value,\n \"User\": user.attributes.email,\n \"isDefault\": isDef\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs', requestOptions)\n .then(async response => {\n if (!response.ok) {\n const rsp = await response.json();\n throw new Error(rsp);\n }\n else {\n props.fetchOrgInfo(temp_org_name);\n }\n })\n .catch((error) => {\n console.log(error);\n\n if (error == \"Error: Organization name already exists\") {\n alert(\"Error: Organization name already exists\");\n }\n });\n });\n } else {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var isDef = 0;\n\n if (defCheck) {\n isDef = 1;\n }\n\n var temp_org_name = org_name.current.value;\n var body = JSON.stringify(\n {\n \"Name\": org_name.current.value,\n \"ContactName\": org_contact.current.value,\n \"Email\": org_email.current.value,\n \"ContactPhone\": org_phone.current.value,\n \"Address\": org_address_line_1.current.value,\n \"Country\": country,\n \"City\": org_city.current.value,\n \"State\": region,\n \"PostalCode\": org_postal.current.value,\n \"User\": user.attributes.email,\n \"isDefault\": isDef\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + props.orgInfo.orgInfo.orgId, requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n console.log(data)\n if (data.status === 200) {\n let url = \"/\";\n props.fetchOrgInfo(temp_org_name);\n history.push(url);\n }\n else {\n alert(data.body);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n });\n }\n } catch (e) {\n console.log(e);\n };\n }\n };\n\n return (\n \n {!props.orgEdit\n ?
\n {props.firstOrg\n ? \n \n \n {t(\"youAreNotCurrentlyConnected\")}\n \n \n \n : \n \n \n \n \n \n \n \n \n {t(\"back\")}\n \n \n \n \n \n \n \n {t(\"warningByCreatingANewOrg\")}\n \n \n \n }\n
\n : null\n }\n\n \n
\n {!props.orgEdit\n ?\n \n {t(\"createOrganization\")}\n \n : \n {t(\"editOrganization\")}\n }\n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setOrgName({ name: e.target.value });\n }\n }}\n value={orgName.name}\n inputRef={org_name}\n label={t(\"organizationName\")}\n variant='filled'\n className={classes.textInput} />\n\n setOrgAddressLine1({ address: e.target.value })}\n value={orgAddressLine1.address}\n inputRef={org_address_line_1}\n label={t(\"addressLine\")}\n variant='filled'\n className={classes.textInput} />\n\n setOrgCity({ city: e.target.value })}\n value={orgCity.city}\n inputRef={org_city}\n label={t(\"city\")}\n variant='filled'\n className={classes.textInput} />\n\n setOrgPostal({ postal: e.target.value })}\n value={orgPostal.postal}\n inputRef={org_postal}\n label={t(\"zipPostalCode\")}\n variant='filled'\n className={classes.textInput} />\n\n \n {t(\"country\")}\n \n {countries.map((country) => (\n \n {t(country.translationKey)}\n \n ))}\n \n \n\n \n {t(\"stateRegionInvalid\")}\n \n {country\n ? countries\n .find(({ countryName }) => countryName === country)\n .regions.map((region) => (\n \n {t(region.translationKey)}\n \n )) : []}\n \n \n \n \n {t(\"organizationContact\")}\n \n \n setOrgContactName({ name: e.target.value })}\n value={orgContactName.name}\n inputRef={org_contact}\n label={t(\"name\")}\n variant='filled'\n className={classes.textInput} />\n\n setOrgContactPhone({ phone: e.target.value })}\n value={orgContactPhone.phone}\n inputRef={org_phone}\n label={t(\"phoneNumber\")}\n variant='filled'\n className={classes.textInput} />\n\n setOrgContactEmail({ email: e.target.value })}\n value={orgContactEmail.email}\n inputRef={org_email}\n label={t(\"email\")}\n variant='filled'\n className={classes.textInput} />\n {(!props.firstOrg) && \n }\n label=\"default organization\"\n />}\n \n
\n
\n\n \n \n\n \n \n \n )\n}","import React, { useState, useRef } from 'react';\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport { Typography, TextField } from \"@material-ui/core\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n maxWidth: 600,\n minWidth: 400,\n },\n content: {\n marginBottom: theme.spacing(2),\n },\n confirmField: {\n width: 300\n }\n}));\n\nconst ModalPrompt = ({ title, content, action, handleAction, handleCancel, openModal, useConfirm = false }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [open, setOpen] = useState(openModal);\n const [deleteConfirm, setDeleteConfirm] = useState(\"\");\n const rdeleteConfirm = useRef(\"\");\n const [invalidConfirm, setInvalidConfirm] = useState(false);\n \n const handle = () => {\n if (!useConfirm || (useConfirm && deleteConfirm === t(\"delete_caps\"))) {\n setOpen(false);\n handleAction();\n }\n else {\n setInvalidConfirm(true);\n }\n };\n const cancel = () => {\n setOpen(false);\n handleCancel();\n };\n return (\n \n {title}\n \n \n {content}\n \n {useConfirm && {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setDeleteConfirm(e.target.value);\n }\n }}\n error={invalidConfirm}\n helperText={invalidConfirm ? t(\"deleteConfirm_error\") : \"\"}\n />}\n \n \n \n \n \n \n );\n};\n\nexport default ModalPrompt;\n","export default __webpack_public_path__ + \"static/media/PulseHubUid.a4bdb268.png\";","export default __webpack_public_path__ + \"static/media/Cellular_UID_ti40038.d65de628.png\";","export default __webpack_public_path__ + \"static/media/Pressure_UID_ti40037.d4f7a119.png\";","export default __webpack_public_path__ + \"static/media/WiFi_UID_ti40039.6dfa9e19.png\";","export default __webpack_public_path__ + \"static/media/WiFi_ActivationCode_ti40040.4fd4a75c.png\";","import {Auth} from 'aws-amplify';\nimport {host} from '../data.js'\n\nconst LOCATION_ERROR_MESSAGE =\n 'Error in billing information service! Provide, please, a data to the service!';\n\nlet urlConfig = {\n api: '/orgs/{orgId}/billing',\n apiInvoices: '/orgs/{orgId}/invoices/{invoiceId}/pdf',\n apiPreview: '/orgs/{orgId}/billing/preview',\n //proxyPort: 5000\n}\n\nexport const billing = {\n createAccount: async ({orgId, tokenId, email, currency, plan_label, username}) => {\n try {\n if (!orgId || !tokenId || !email || !currency || !username) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n \n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n email,\n username,\n billing_info: {\n token_id: tokenId,\n },\n },\n billing_currency: currency,\n billing_plan: plan_label\n }),\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n updateAccount: async ({orgId, tokenId, email, currency, plan_label, username}) => {\n try {\n if (!orgId || !tokenId || !email ) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n var l_plan = plan_label;\n if (plan_label === undefined){\n l_plan = 0;\n }\n var l_currency = currency;\n if (currency === undefined){\n l_currency = 0;\n }\n \n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n var testbody = {body: {\n billing_params: {\n email,\n billing_info: {\n token_id: tokenId,\n },\n },\n billing_currency: l_currency,\n billing_plan: l_plan\n }}\n //console.log(testbody);\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n email,\n billing_info: {\n token_id: tokenId,\n },\n },\n billing_currency: l_currency,\n billing_plan: l_plan\n }),\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n deleteAccount: async (orgId) => {\n try {\n if (!orgId) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n getBillingData: async (orgId) => {\n try {\n if (!orgId) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n newSubscription: async (\n orgId,\n plan_code,\n currency,\n quantity,\n total_billing_cycles,\n ) => {\n try {\n if (!orgId || !plan_code || !currency ) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n subscriptions: [\n {\n plan_code,\n currency,\n quantity,\n total_billing_cycles,\n },\n ],\n },\n }),\n });\n\n const data = await response.json();\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n updateSubscriptions: async (orgId, subscriptions) => {\n try {\n if (!orgId || !Array.isArray(subscriptions)) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n subscriptions,\n },\n }),\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n updateEmails: async (orgId, cc_emails) => {\n try {\n if (!orgId || !Array.isArray(cc_emails)) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host + urlConfig.api.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n cc_emails,\n },\n }),\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n downloadInvoice: async (orgId, invoiceId) => {\n try {\n if (!orgId || !invoiceId) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host +\n urlConfig.apiInvoices\n .replace('{orgId}', orgId)\n .replace('{invoiceId}', invoiceId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n });\n \n const data = await response.text();\n \n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n previewSubscription: async (orgId, subscriptions) => {\n try {\n if (!orgId || !Array.isArray(subscriptions)) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n\n const url =\n host + urlConfig.apiPreview.replace('{orgId}', orgId);\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify({\n billing_params: {\n subscriptions,\n },\n }),\n });\n\n const data = await response.json();\n\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n};\n","import { useState, useRef, Fragment, useEffect } from 'react';\nimport {\n Button,\n ClickAwayListener,\n DialogActions,\n Dialog,\n DialogTitle,\n DialogContent,\n FormControl,\n Grow,\n Hidden,\n IconButton,\n MenuItem,\n MenuList,\n Paper,\n Popper,\n Tooltip,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport HelpIcon from '@material-ui/icons/Help';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host, enableBilling } from \"../../../data\";\nimport pulseHubInfoImg from './Assets/PulseHubUid.png';\nimport cellularInfoImg from './Assets/Cellular_UID_ti40038.png';\nimport pressureInfoImg from './Assets/Pressure_UID_ti40037.png';\nimport WiFiInfoImg from './Assets/WiFi_UID_ti40039.png';\nimport WiFiActivationCodeImg from './Assets/WiFi_ActivationCode_ti40040.png';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n actionButtons: {\n marginTop: theme.spacing(2),\n },\n helpButton: {\n marginTop: theme.spacing(2),\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n HubInfoImg: {\n maxHeight: '200px',\n marginRight: theme.spacing(2),\n },\n infoDialog: {\n maxWidth: 'sm',\n fullWidth: 'true'\n },\n table: {\n width: 1200,\n height: '55vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n buttonProgress: {\n position: 'absolute',\n marginRight: 36,\n },\n}));\n\nconst ActivateDevice2 = ({ orgInfo, setDevices, billingData, setBillingData, orgBilling }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [deviceUID, setDeviceUID] = useState();\n const rdeviceUID = useRef();\n const [deviceUID2, setDeviceUID2] = useState();\n const rdeviceUID2 = useRef();\n const [activationCode, setActivationCode] = useState(\"\");\n const ractivationCode = useRef(\"\");\n const [addDeviceDialogue, setOpenDeviceDialogue] = useState(false);\n const [hasBillingInfo, setHasBillingInfo] = useState(!enableBilling);\n const [deviceFamily, setDeviceFamily] = useState();\n const [targetUID, setTargetUID] = useState();\n const [openCellularInfo, setOpenCellularInfo] = useState(false);\n const [openPressureInfo, setOpenPressureInfo] = useState(false);\n const [openWiFiInfo, setOpenWiFiInfo] = useState(false);\n const [openHubInfo, setOpenHubInfo] = useState(false);\n const [helpOpen, setHelpOpen] = useState(false);\n const [helpAnchor, setHelpAnchor] = useState();\n const [openEnterSerial, setOpenEnterSerial] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const handleHelpOpen = (event) => {\n setHelpAnchor(event.currentTarget);\n setHelpOpen(true);\n };\n\n const handleHelpClose = () => {\n setHelpOpen(false);\n };\n\n const handleOpenCellularInfo = () => {\n setOpenCellularInfo(true);\n };\n\n const handleCloseCellularInfo = () => {\n setOpenCellularInfo(false);\n };\n\n const handleOpenPressureInfo = () => {\n setOpenPressureInfo(true);\n };\n\n const handleClosePressureInfo = () => {\n setOpenPressureInfo(false);\n };\n\n const handleOpenWiFiInfo = () => {\n setOpenWiFiInfo(true);\n };\n\n const handleCloseWiFiInfo = () => {\n setOpenWiFiInfo(false);\n };\n\n const handleOpenHubInfo = () => {\n setOpenHubInfo(true);\n };\n\n const handleCloseHubInfo = () => {\n setOpenHubInfo(false);\n };\n\n const handleCloseEnterSerial = () => {\n setOpenEnterSerial(false);\n setDeviceUID2();\n };\n\n const handleOpenAddDevice = () => {\n if (deviceUID) {\n var tDeviceUID = deviceUID.replace(/\\b0+/g, \"\");\n } else if (deviceUID2) {\n var tDeviceUID = deviceUID2.replace(/\\b0+/g, \"\");\n } else {\n var tDeviceUID = \"\";\n }\n\n if (tDeviceUID !== \"\") {\n handleCloseEnterSerial();\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'UID': tDeviceUID });\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body,\n };\n\n fetch(host + '/device', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n //console.log(data);\n if (data.isAvailable === 1) {\n setDeviceFamily(data.family);\n setOpenDeviceDialogue(true);\n if (data.family === \"WiFi\") {\n setTargetUID(Number(data.UID).toString());\n } else {\n setTargetUID(data.UID.toUpperCase());\n }\n }\n else {\n alert(t(\"deviceIsAlreadyAssigned\"));\n }\n }\n else {\n \n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n else {\n setOpenEnterSerial(true);\n }\n };\n const handleCloseAddDevice = () => {\n setOpenDeviceDialogue(false);\n };\n const handleAddDevice = () => {\n var code = activationCode;\n if (deviceFamily === \"PulseHUB\") {\n code = \"\";\n }\n\n if (deviceFamily === \"cellular\" || deviceFamily === 'pressure') {\n code = \"\";\n }\n var l_hasBillingInfo = hasBillingInfo ? 1 : 0;\n setOpenDeviceDialogue(false);\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': [{ 'uid': targetUID, 'code': code, 'action': \"add\" }],\n 'hasBillingInfo': l_hasBillingInfo, 'sync': 0\n });\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n var url = host + '/orgs/' + orgInfo.orgId + '/ftdevices/';\n if (enableBilling) {\n url = host + '/orgs/' + orgInfo.orgId + '/devices/';\n }\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setDevices(data.deviceList);\n setDeviceUID(\"\");\n }\n else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(t(\"tryAgainOrContactTa\").replace(\"{error}\", data.error));\n //alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n useEffect(() => {\n if (!addDeviceDialogue) {\n setIsLoading(false);\n }\n }, [addDeviceDialogue]);\n\n useEffect(() => {\n //var testMsg = \"some error multi mode thingy\";\n //alert(t(\"tryAgainOrContactTa\").replace(\"{error}\",testMsg));\n if (billingData.billing_info) {\n if (billingData.billing_info.id !== undefined) {\n setHasBillingInfo(true);\n }\n else {\n setHasBillingInfo(!enableBilling);\n }\n }\n }, [billingData]);\n\n\n return (\n \n {openEnterSerial && \n {t(\"enterSerialNumber\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9]){0,30}$/i;\n if (regex.test(e.target.value)) {\n setDeviceUID2(e.target.value.toUpperCase());\n }\n }\n }\n helperText={t(\"tankLevelMonitor\")} />\n \n \n \n \n \n \n }\n {(deviceFamily === \"pressure\" || deviceFamily === \"cellular\") && addDeviceDialogue && \n {t(\"addDevice\")}\n \n {(!enableBilling || hasBillingInfo) && \n {t(\"add\")} {deviceFamily === 'PulseHUB' ? t(\"existingPulseProTank\") : deviceFamily + \" \" + t(\"device\") + \" \"} {targetUID}?\n }\n {(enableBilling && !hasBillingInfo) && \n {t(\"priorToAddingThisDevice\")}\n }\n \n \n \n \n {isLoading && }\n \n }\n {deviceFamily === \"PulseHUB\" && addDeviceDialogue && \n {t(\"addDevice\")}\n \n \n {t(\"addPulseProTlm\")}{\" \" + targetUID}?\n \n \n \n \n \n \n }\n {deviceFamily === \"WiFi\" && addDeviceDialogue && \n {t(\"addDevice\")}\n \n \n NOTE: For Field Test product (green plastic), reference the additional activation code sticker on the product!\n \n Wi-Fi Activation Code\n \n {t(\"activationCodeCanBeFound\")}\n \n \n {t(\"add\")}{deviceFamily + \" \" + t(\"device\") + \" \"} {targetUID}?\n \n \n setActivationCode(e.target.value.toUpperCase())} />\n \n \n \n \n \n \n }\n\n \n \n {\n const regex = /^([ a-zA-Z0-9]){0,30}$/i;\n if (regex.test(e.target.value)) {\n setDeviceUID(e.target.value.toUpperCase());\n }\n }\n }\n helperText={t(\"tankLevelMonitor\")} />\n \n \n \n \n \n \n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n {t(\"cellularLevelMonitor\")}\n \n \n {t(\"pressureLevelMonitor\")}\n \n \n {t(\"wifiLevelMonitor\")}\n \n \n {t(\"pulseProLevelMonitor\")}\n \n \n \n \n )}\n \n {openCellularInfo && \n {t(\"cellularLevelMonitor\")}\n \n {t(\"cellularLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber1\")}\n \n \n \n \n \n }\n {openPressureInfo && \n {t(\"pressureLevelMonitor\")}\n \n {t(\"pressureLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber1\")}\n \n \n \n \n \n }\n {openWiFiInfo && \n {t(\"wifiLevelMonitor\")}\n \n {t(\"wifiLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber2\")}\n \n \n \n \n \n }\n {openHubInfo && \n {t(\"pulseProLevelMonitor\")}\n \n {t(\"pulseProLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber3\")}\n \n \n {t(\"findDeviceSerialNumber4\")}\n \n \n \n \n \n }\n \n );\n};\n\nexport default ActivateDevice2;","import { useState, useRef, Fragment, useEffect } from 'react';\nimport {\n Box,\n Button,\n ClickAwayListener,\n DialogActions,\n Dialog,\n DialogTitle,\n DialogContent,\n FormControl,\n Grow,\n Grid,\n IconButton,\n MenuItem,\n MenuList,\n Paper,\n Popper,\n Tooltip,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport HelpIcon from '@material-ui/icons/Help';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host, enableBilling, SubscriptionInfo, BillingPlans } from \"../../../data\";\nimport pulseHubInfoImg from './Assets/PulseHubUid.png';\nimport cellularInfoImg from './Assets/Cellular_UID_ti40038.png';\nimport pressureInfoImg from './Assets/Pressure_UID_ti40037.png';\nimport WiFiInfoImg from './Assets/WiFi_UID_ti40039.png';\nimport WiFiActivationCodeImg from './Assets/WiFi_ActivationCode_ti40040.png';\nimport { billing } from '../../../services/billing';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n HubInfoImg: {\n maxHeight: '200px',\n marginRight: theme.spacing(2),\n },\n infoDialog: {\n maxWidth: 'sm',\n fullWidth: 'true'\n },\n table: {\n width: 1200,\n height: '55vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n buttonProgress: {\n position: 'absolute',\n marginRight: 36,\n },\n}));\n\nconst ActivateDevice = ({ orgInfo, setDevices, billingData, setBillingData, orgBilling }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [deviceUID, setDeviceUID] = useState();\n const rdeviceUID = useRef();\n const [deviceUID2, setDeviceUID2] = useState();\n const rdeviceUID2 = useRef();\n const [activationCode, setActivationCode] = useState(\"\");\n const ractivationCode = useRef(\"\");\n const [addDeviceDialogue, setOpenDeviceDialogue] = useState(false);\n const [isBillable, setisBillable] = useState(false);\n const [hasBillingInfo, setHasBillingInfo] = useState(!enableBilling);\n const [deviceFamily, setDeviceFamily] = useState();\n const [targetUID, setTargetUID] = useState();\n const [targetDeviceList, setTargetDeviceList] = useState([]);\n const [targetDeviceListDisplay, setTargetDeviceListDisplay] = useState(deviceUID);\n const [additionalDeviceUID, setAdditionalDeviceUID] = useState(\"\");\n const radditionalDeviceUID = useRef(\"\");\n const [openCellularInfo, setOpenCellularInfo] = useState(false);\n const [openPressureInfo, setOpenPressureInfo] = useState(false);\n const [openWiFiInfo, setOpenWiFiInfo] = useState(false);\n const [openHubInfo, setOpenHubInfo] = useState(false);\n const [helpOpen, setHelpOpen] = useState(false);\n const [helpAnchor, setHelpAnchor] = useState();\n const [estNextInvoice, setEstNextInvoice] = useState(\"0.00\");\n const [estCharge, setEstCharge] = useState(\"0.00\");\n\n const [openEnterSerial, setOpenEnterSerial] = useState(false);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const handleHelpOpen = (event) => {\n setHelpAnchor(event.currentTarget);\n setHelpOpen(true);\n };\n const handleHelpClose = () => {\n setHelpOpen(false);\n };\n const handleOpenCellularInfo = () => {\n setOpenCellularInfo(true);\n };\n const handleCloseCellularInfo = () => {\n setOpenCellularInfo(false);\n };\n const handleOpenPressureInfo = () => {\n setOpenPressureInfo(true);\n };\n const handleClosePressureInfo = () => {\n setOpenPressureInfo(false);\n };\n const handleOpenWiFiInfo = () => {\n setOpenWiFiInfo(true);\n };\n const handleCloseWiFiInfo = () => {\n setOpenWiFiInfo(false);\n };\n const handleOpenHubInfo = () => {\n setOpenHubInfo(true);\n };\n const handleCloseHubInfo = () => {\n setOpenHubInfo(false);\n };\n const handleCloseEnterSerial = () => {\n setOpenEnterSerial(false);\n setDeviceUID2();\n };\n\n const handleAddAdditionalDevice = () => {\n if (targetDeviceList.includes(additionalDeviceUID.toUpperCase())) {\n console.log(\"duplicate device add\");\n }\n else {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var tDeviceUID = additionalDeviceUID.replace(/\\b0+/g, \"\");\n var body = JSON.stringify({ 'UID': tDeviceUID });\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body,\n };\n\n fetch(host + '/device', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n console.log(data);\n if (data.isAvailable === 1) {\n if (data.family === \"cellular\" || data.family === 'pressure') {\n var newList = targetDeviceList;\n newList.push(additionalDeviceUID.toUpperCase());\n setTargetDeviceList(newList);\n setAdditionalDeviceUID(\"\");\n } else {\n const fam = data.family;\n alert(tDeviceUID + \" is not a cellular device. Please add seperately.\");\n }\n }\n else {\n alert(t(\"deviceIsAlreadyAssigned\"));\n }\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n }\n\n const handleOpenAddDevice = () => {\n if (deviceUID) {\n var tDeviceUID = deviceUID.replace(/\\b0+/g, \"\");\n }\n else if (deviceUID2) {\n var tDeviceUID = deviceUID2.replace(/\\b0+/g, \"\");\n }\n else {\n var tDeviceUID = \"\";\n }\n\n if (tDeviceUID !== \"\") {\n handleCloseEnterSerial();\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'UID': tDeviceUID });\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body,\n };\n\n fetch(host + '/device', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n console.log(data);\n if (data.isAvailable === 1) {\n setDeviceFamily(data.family);\n setOpenDeviceDialogue(true);\n if (data.family === \"WiFi\") {\n setTargetUID(Number(data.UID).toString());\n } else {\n setTargetUID(data.UID.toUpperCase());\n setTargetDeviceList([data.UID.toUpperCase()]);\n }\n }\n else {\n alert(t(\"deviceIsAlreadyAssigned\"));\n }\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n else {\n setOpenEnterSerial(true);\n }\n };\n\n const handleCloseAddDevice = () => {\n setOpenDeviceDialogue(false);\n setTargetDeviceList([]);\n setTargetDeviceListDisplay(\"\");\n setAdditionalDeviceUID(\"\");\n };\n\n const handleAddDevice = () => {\n var code = activationCode;\n\n if (deviceFamily === \"PulseHUB\") {\n code = \"\";\n }\n\n if (deviceFamily === \"cellular\" || deviceFamily === 'pressure') {\n code = \"\";\n }\n\n setOpenDeviceDialogue(false);\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': [{ 'uid': targetUID, 'code': code, 'action': \"activate\" }],\n 'hasBillingInfo': hasBillingInfo\n });\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n var url = host + '/orgs/' + orgInfo.orgId + '/ftdevices/';\n\n if (enableBilling) {\n url = host + '/orgs/' + orgInfo.orgId + '/devices/';\n }\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setDevices(data.deviceList);\n }\n else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n useEffect(() => {\n if ((deviceFamily === \"pressure\" || deviceFamily === \"cellular\") && enableBilling) {\n setisBillable(true);\n }\n else {\n setisBillable(false);\n }\n }, [deviceFamily]);\n\n useEffect(() => {\n if (!addDeviceDialogue) {\n setIsLoading(false);\n }\n }, [addDeviceDialogue]);\n\n useEffect(() => {\n var displayDeviceList = \"\";\n for (var i = 0; i < targetDeviceList.length; i++) {\n displayDeviceList = displayDeviceList + targetDeviceList[i];\n if (i < targetDeviceList.length - 1) {\n displayDeviceList = displayDeviceList + \", \";\n }\n }\n setTargetDeviceListDisplay(displayDeviceList);\n }, [targetDeviceList, additionalDeviceUID]);\n\n useEffect(() => {\n var newQty = targetDeviceList.length;\n var newCharge = 0\n var nextInvoice = 0;\n\n if (targetDeviceList.length > 0 && hasBillingInfo) {\n var l_billingPlan = BillingPlans[0];\n\n for (var i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === orgBilling.billing_plan) {\n l_billingPlan = BillingPlans[i];\n break;\n }\n }\n\n if (billingData.subscriptions.length == 0) {\n newCharge = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * newQty * 100) / 100;\n nextInvoice = newCharge;\n\n if (billingData.subscriptions.length > 0) {\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (billingData.subscriptions[0].quantity + newQty) * 100) / 100;\n }\n\n setEstCharge(newCharge.toString());\n } else {\n previewSubscription();\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (billingData.subscriptions[0].quantity + newQty) * 100) / 100;\n }\n\n setEstNextInvoice(nextInvoice.toString());\n }\n }, [targetDeviceListDisplay]);\n\n useEffect(() => {\n if (billingData.billing_info.id !== undefined) {\n setHasBillingInfo(true);\n }\n else {\n setHasBillingInfo(!enableBilling);\n }\n }, [billingData]);\n\n function findSubscriptionPlanCode(subscriptionInfo) {\n var plan_code = BillingPlans[0].plan_code;\n\n for (var i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === subscriptionInfo) {\n plan_code = BillingPlans[i].plan_code;\n break;\n }\n }\n\n return plan_code;\n }\n\n const handleAddBillableDevice = () => {\n var code = activationCode;\n code = \"\";\n var targetList = [];\n\n for (var i = 0; i < targetDeviceList.length; i++) {\n targetList.push({ 'uid': targetDeviceList[i], 'code': code, 'action': 'activate' });\n }\n\n setIsLoading(true);\n\n if (!enableBilling) {\n handleAddDevice();\n } else {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': targetList,\n 'hasBillingInfo': hasBillingInfo\n });\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n var url = host + '/orgs/' + orgInfo.orgId + '/ftdevices/';\n\n if (enableBilling) {\n url = host + '/orgs/' + orgInfo.orgId + '/devices/';\n }\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n updateSubscription(data.deviceList);\n setDevices(data.deviceList);\n } else {\n setIsLoading(false);\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n } else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error);\n })\n });\n }\n };\n\n const previewSubscription = async () => {\n var msg = { status: 0, data: {} };\n setIsLoading(false);\n const quantity = targetDeviceList.length;\n\n try {\n if (billingData.subscriptions.length == 0) {\n console.log(\"No Subscription, cannot preview\");\n }\n else {\n console.log(\"Update Subscription\");\n var sub = [{}];\n sub[0].quantity = billingData.subscriptions[0].quantity + quantity;\n sub[0].id = billingData.subscriptions[0].id;\n msg = await billing.previewSubscription(\n orgInfo.orgId,\n sub\n );\n }\n\n const { error, billing_preview } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n alert(error);\n throw new Error(error);\n }\n\n setEstCharge(billing_preview[0].estimated_total);\n } catch (error) {\n console.error(error);\n }\n };\n\n const updateSubscription = async (devices) => {\n var msg = { status: 0, data: {} };\n const quantity = targetDeviceList.length;\n\n try {\n if (billingData.subscriptions.length == 0) {\n console.log(\"New Subscription\");\n const plan_code = findSubscriptionPlanCode(orgBilling.billing_plan);\n msg = await billing.newSubscription(\n orgInfo.orgId,\n plan_code,\n orgBilling.billing_curr,\n quantity,\n SubscriptionInfo.total_billing_cycles);\n }\n else {\n console.log(\"Update Subscription\");\n var sub = [{}];\n sub[0].quantity = billingData.subscriptions[0].quantity + quantity;\n sub[0].id = billingData.subscriptions[0].id;\n msg = await billing.updateSubscriptions(\n orgInfo.orgId,\n sub\n );\n }\n\n const { error, billing_account } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n alert(error);\n throw new Error(error);\n }\n\n setBillingData(billing_account);\n setOpenDeviceDialogue(false);\n } catch (error) {\n console.error(error);\n alert(error)\n }\n setIsLoading(false);\n };\n\n return (\n \n {openEnterSerial && \n {t(\"enterSerialNumber\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9]){0,30}$/i;\n if (regex.test(e.target.value)) {\n setDeviceUID2(e.target.value.toUpperCase());\n }\n }\n }\n helperText={t(\"tankLevelMonitor\")} />\n \n \n \n \n \n \n }\n {(deviceFamily === \"pressure\" || deviceFamily === \"cellular\") && addDeviceDialogue && \n {t(\"addDevice\")}\n \n {(!enableBilling || hasBillingInfo) && \n {t(\"add\")} {deviceFamily === 'PulseHUB' ? t(\"existingPulseProTank\") : deviceFamily + \" \" + t(\"device\") + \" \"} {targetDeviceListDisplay}?\n }\n
\n {enableBilling && hasBillingInfo && \n \n {t(\"estimatedTotalDueNow\")}: {estCharge} {orgBilling.billing_curr}\n \n }\n {enableBilling && hasBillingInfo && \n \n {t(\"estimatedTotaleDueNext\")} {estNextInvoice} {orgBilling.billing_curr}\n \n }\n {enableBilling && hasBillingInfo && \n \n {t(\"additonalTaxesFeesCredits\")}\n \n }\n {(enableBilling && !hasBillingInfo) && \n {t(\"priorToAddingThisDevice\")}\n }\n {enableBilling &&
}\n {(enableBilling && hasBillingInfo) && \n
\n \n setAdditionalDeviceUID(e.target.value.toUpperCase())} />\n \n \n \n \n }\n \n \n \n \n {isLoading && }\n \n
}\n {deviceFamily === \"PulseHUB\" && addDeviceDialogue && \n {t(\"addDevice\")}\n \n \n {t(\"addPulseProTlm\")}{\" \" + targetUID}?\n \n \n \n \n \n \n }\n {deviceFamily === \"WiFi\" && addDeviceDialogue && \n {t(\"addDevice\")}\n \n \n NOTE: For Field Test product (green plastic), reference the additional activation code sticker on the product!\n \n Wi-Fi Activation Code\n \n {t(\"activationCodeCanBeFound\")}\n \n \n {t(\"add\")} {deviceFamily + + \" \" + t(\"device\") + \" \"} {targetUID}?\n \n \n setActivationCode(e.target.value.toUpperCase())} />\n \n \n \n \n \n \n }\n\n \n {\n const regex = /^([ a-zA-Z0-9]){0,30}$/i;\n if (regex.test(e.target.value)) {\n setDeviceUID(e.target.value.toUpperCase());\n }\n }\n }\n helperText={t(\"tankLevelMonitor\")} />\n \n \n \n \n \n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n {t(\"cellularLevelMonitor\")}\n \n \n {t(\"pressureLevelMonitor\")}\n \n \n {t(\"wifiLevelMonitor\")}\n \n \n {t(\"pulseProLevelMonitor\")}\n \n \n \n \n )}\n \n {openCellularInfo && \n {t(\"cellularLevelMonitor\")}\n \n {t(\"cellularLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber1\")}\n \n \n \n \n \n }\n {openPressureInfo && \n {t(\"pressureLevelMonitor\")}\n \n {t(\"pressureLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber1\")}\n \n \n \n \n \n }\n {openWiFiInfo && \n {t(\"wifiLevelMonitor\")}\n \n {t(\"wifiLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber2\")}\n \n \n \n \n \n }\n {openHubInfo && \n {t(\"pulseProLevelMonitor\")}\n \n {t(\"pulseProLevelMonitor\")}\n\n \n {t(\"findDeviceSerialNumber3\")}\n \n \n {t(\"findDeviceSerialNumber4\")}\n \n \n \n \n \n }\n
\n );\n};\n\nexport default ActivateDevice;","import React, { useState, Fragment, useEffect } from 'react';\nimport {\n Box,\n Button,\n DialogActions,\n Dialog,\n DialogTitle,\n DialogContent,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { Auth } from 'aws-amplify';\nimport { host, SubscriptionInfo, BillingPlans } from \"../../../data\";\nimport { billing } from '../../../services/billing';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n preLoader: {\n display: 'block',\n margin: `${theme.spacing(3)}px auto`,\n },\n buttonProgress: {\n position: 'absolute',\n marginRight: 36,\n },\n}));\n\nconst ChangeDeviceStatus = ({ orgInfo, orgBilling, billingData, setBillingData, uid, newStatus, open, handleClose, setDevices }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [estNextInvoice, setEstNextInvoice] = useState(\"0.00\");\n const [estCharge, setEstCharge] = useState(\"0.00\");\n const [hasBillingInfo, setHasBillingInfo] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n\n function findSubscriptionPlanCode(subscriptionInfo) {\n var plan_code = BillingPlans[0].plan_code;\n for (var i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === subscriptionInfo) {\n plan_code = BillingPlans[i].plan_code;\n break;\n }\n }\n return plan_code;\n }\n\n const handleCloseStatusChange = () => {\n setIsLoading(false);\n handleClose();\n };\n\n const handleStatusChange = () => {\n var code = \"\";\n var action = newStatus === \"Active\" ? 'activate' : 'deactivate'\n var targetList = [];\n\n targetList.push({ 'uid': uid, 'code': code, 'action': action });\n\n setIsLoading(true);\n {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': targetList,\n 'hasBillingInfo': hasBillingInfo\n });\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/devices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n // Update and Create Subscription\n updateSubscription(data.deviceList);\n setDevices(data.deviceList);\n } else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n };\n\n const updateSubscription = async (devices) => {\n var msg = { status: 0, data: {} };\n var quantity = 1;\n\n try {\n if (billingData.subscriptions.length == 0 && newStatus !== \"Active\") {\n handleCloseStatusChange();\n throw new Error(\"No subscription to delete\");\n }\n else if (billingData.subscriptions.length == 0 && newStatus === \"Active\") {\n console.log(\"New Subscription\");\n\n const plan_code = findSubscriptionPlanCode(orgBilling.billing_plan);\n msg = await billing.newSubscription(\n orgInfo.orgId,\n plan_code,\n orgBilling.billing_curr,\n quantity,\n SubscriptionInfo.total_billing_cycles);\n } else {\n quantity = newStatus === \"Active\" ? billingData.subscriptions[0].quantity + 1 : billingData.subscriptions[0].quantity - 1;\n\n console.log(\"Update Subscription\");\n\n var sub = [{}];\n sub[0].quantity = quantity;\n sub[0].id = billingData.subscriptions[0].id;\n msg = await billing.updateSubscriptions(\n orgInfo.orgId,\n sub\n );\n }\n\n const { error, billing_account } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n throw new Error(error);\n }\n\n setBillingData(billing_account);\n handleCloseStatusChange();\n } catch (error) {\n console.error(error);\n }\n };\n\n useEffect(() => {\n var newCharge = 0\n var nextInvoice = 0;\n var newQty = 1;\n var l_billingPlan = BillingPlans[0];\n\n for (var i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === orgBilling.billing_plan) {\n l_billingPlan = BillingPlans[i];\n break;\n }\n }\n\n if (billingData.subscriptions.length == 0) {\n newCharge = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * newQty * 100) / 100;\n nextInvoice = newCharge;\n if (billingData.subscriptions.length > 0) {\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (billingData.subscriptions[0].quantity + newQty) * 100) / 100;\n }\n setEstCharge(newCharge.toString());\n } else {\n newQty = newStatus === \"Active\" ? 1 : -1;\n if (newStatus === \"Active\") {\n previewSubscription();\n }\n else {\n previewSubscription();\n }\n\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (billingData.subscriptions[0].quantity + newQty) * 100) / 100;\n }\n setEstNextInvoice(nextInvoice.toString());\n }, []);\n\n const previewSubscription = async () => {\n var msg = { status: 0, data: {} };\n\n try {\n if (billingData.subscriptions.length == 0) {\n console.log(\"No Subscription, cannot preview\");\n } else {\n console.log(\"Update Subscription\");\n var sub = [{}];\n sub[0].quantity = newStatus === \"Active\" ? billingData.subscriptions[0].quantity + 1 : billingData.subscriptions[0].quantity - 1;\n sub[0].id = billingData.subscriptions[0].id;\n msg = await billing.previewSubscription(\n orgInfo.orgId,\n sub\n );\n }\n console.log(msg.data);\n const { error, billing_preview } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n throw new Error(error);\n }\n\n setEstCharge(billing_preview[0].estimated_total);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n \n {open && \n {t(\"addDevice\")}\n \n {\n {newStatus === \"Active\" ? t(\"areYouSureYouWantToActivate\") : t(\"areYouSureYouWantToDisable\")} {' ' + uid}?\n }\n\n
\n {\n \n {newStatus === \"Active\" ? t(\"estimatedTotalDueNow\") : t(\"estimatedCredit\")}: {estCharge} {orgBilling.billing_curr}\n \n }\n\n {\n \n {t(\"estimatedTotaleDueNext\")} {estNextInvoice} {orgBilling.billing_curr}\n \n }\n\n {\n {t(\"additonalTaxesFeesCredits\")}\n }\n\n {
}\n \n\n \n \n {}\n {isLoading && }\n \n
}\n
\n );\n};\n\nexport default ChangeDeviceStatus;","import React, { useState } from 'react';\nimport { FormControl, Select, MenuItem } from \"@material-ui/core\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n listItemText: {\n marginTop: theme.spacing(1),\n fontSize: '1.0em',\n }\n}));\n\nconst StatusList = ({ uid, status_in, disabled, setNewStatus }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [status, setStatus] = useState(status_in);\n const handleStatusChange = (e) => {\n const newStatus = e.target.value;\n setStatus(e.target.value);\n setNewStatus(uid, newStatus);\n };\n\n return (\n
\n \n \n {t(\"active\")}\n {t(\"disabled\")}\n \n \n
\n );\n};\n\nexport default StatusList;","import React, { useState, Fragment, useEffect } from 'react';\nimport {\n AppBar,\n Box,\n Button,\n DialogActions,\n Dialog,\n DialogTitle,\n DialogContent,\n FormControl,\n Hidden,\n IconButton,\n MenuItem,\n Select,\n Toolbar,\n Typography,\n} from '@material-ui/core';\nimport { DataGrid } from '@material-ui/data-grid';\nimport { makeStyles } from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Auth } from 'aws-amplify';\nimport { host, SubscriptionInfo, BillingPlans } from \"../../../data\";\nimport { billing } from '../../../services/billing';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n appBar: {\n position: 'relative',\n },\n title: {\n marginLeft: theme.spacing(2),\n flex: 1,\n },\n preLoader: {\n display: 'block',\n margin: `${theme.spacing(3)}px auto`,\n },\n actionButtons: {\n marginRight: theme.spacing(2),\n },\n buttonProgress: {\n position: 'absolute',\n marginRight: 36,\n },\n table: {\n width: '100%',\n margin: '0 auto',\n maxWidth: '1200px',\n height: '55vh',\n },\n}));\n\nconst ChangeDeviceStatus2 = ({ orgInfo, orgBilling, billingData, setBillingData, devices, setDevices }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [estNextInvoice, setEstNextInvoice] = useState(\"0.00\");\n const [estCharge, setEstCharge] = useState(\"0.00\");\n const [hasBillingInfo, setHasBillingInfo] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [openStatusChange, setOpenStatusChange] = useState(false);\n const [action, setAction] = useState('activate');\n const [open, setOpen] = useState(false);\n const [displayDevices, setDisplayDevices] = useState([]);\n const [checkedList, setCheckedList] = useState([]);\n const deviceColumns = [\n {\n headerName: t(\"device\"),\n field: 'uid',\n width: 160,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"branch\"),\n field: 'branchName',\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"site\"),\n field: 'siteName',\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tank\"),\n field: 'tankName',\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"type\"),\n field: 'type',\n renderCell: renderType,\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'status',\n renderCell: renderStatus,\n flex: 1,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n ];\n\n const deviceColumnsMobile = [\n {\n headerName: t(\"device\"),\n field: 'uid',\n width: 160,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"type\"),\n field: 'type',\n renderCell: renderType,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'status',\n renderCell: renderStatus,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n ];\n\n function renderStatus(params) {\n var lstatus = \"Disabled\";\n var ldisabled = false;\n\n switch (params.row.status) {\n case 1:\n lstatus = t(\"active\");\n break;\n case 2:\n lstatus = t(\"active\");\n ldisabled = true;\n break;\n case 3:\n lstatus = t(\"inProcess\");\n default:\n break;\n }\n return ( {lstatus} );\n };\n function renderType(params) {\n return (\n

\n {params.value === \"WiFi\" ? t(\"wifi\") : params.value === \"PulseHUB\" ? t(\"pulseProLevelMonitor\") : params.value}\n

\n );\n };\n\n useEffect(() => {\n var i = 0;\n var l_devices = [];\n var test_status = 1;\n\n if (devices !== undefined) {\n if (action === 'activate') {\n test_status = 0;\n }\n for (i = 0; i < devices.length; i++) {\n if (devices[i].type === \"cellular\" || devices[i].type === 'pressure') {\n if (devices[i].status === test_status) {\n l_devices.push(devices[i]);\n }\n }\n }\n for (i = 0; i < l_devices.length; i++) {\n if (l_devices[i].checked === undefined) {\n l_devices[i].checked = false;\n }\n }\n setDisplayDevices(l_devices);\n }\n }, [devices, action]);\n\n function findSubscriptionPlanCode(subscriptionInfo) {\n var plan_code = BillingPlans[0].plan_code;\n for (var i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === subscriptionInfo) {\n plan_code = BillingPlans[i].plan_code;\n break;\n }\n }\n return plan_code;\n }\n\n const handleSetNewCharge = (value) => {\n var amount = Math.abs(value).toFixed(2).toString();\n setEstCharge(amount);\n };\n\n const handleNextInvoice = (value) => {\n var amount = value.toFixed(2).toString()\n setEstNextInvoice(amount);\n };\n\n const handleClickOpenActivate = () => {\n setOpenStatusChange(true);\n setAction(\"activate\");\n };\n\n const handleClickOpenDisable = () => {\n setOpenStatusChange(true);\n setAction(\"deactivate\");\n };\n\n const handleConfirmSelection = () => {\n setOpenStatusChange(false);\n if (checkedList.length > 0) {\n updatePreview();\n setOpen(true);\n }\n }\n\n const handleCloseStatusChange = () => {\n setIsLoading(false);\n setOpen(false);\n setOpenStatusChange(false);\n setCheckedList([]);\n };\n const handleStatusChange = () => {\n var quantity = 0;\n var i;\n\n setIsLoading(true);\n\n for (i = 0; i < devices.length; i++) {\n if (devices[i].status === 1) {\n quantity = quantity + 1;\n }\n }\n\n for (i = 0; i < checkedList.length; i++) {\n quantity = action === \"activate\" ? quantity + 1 : quantity - 1;\n }\n\n // update Subscription will update device status if no billing errors.\n updateSubscription(quantity);\n };\n\n const updateDeviceStatus = () => {\n var code = \"\";\n var targetList = [];\n var l_action = action;\n\n if (checkedList.length > 2) {\n l_action = 'Q_' + action; //Set up to be a queued/batched transaction\n }\n\n for (var i = 0; i < checkedList.length; i++) {\n targetList.push({ 'uid': checkedList[i], 'code': code, 'action': l_action });\n }\n\n console.log(\"Update Device Status\");\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': targetList, 'sync': 0,\n 'hasBillingInfo': hasBillingInfo\n });\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/devices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n //Update and Create Subscription\n setDevices(data.deviceList);\n } else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(data.error)\n }\n }\n handleCloseStatusChange();\n }).catch((error) => {\n handleCloseStatusChange();\n console.log(error)\n })\n });\n }\n\n const updateSubscription = async (input_quantity) => {\n var msg = { status: 0, data: {} };\n var quantity = input_quantity;\n\n try {\n if (billingData.subscriptions.length == 0 && action !== \"activate\") {\n throw new Error(\"No subscription to delete\");\n }\n else if (billingData.subscriptions.length == 0 && action === \"activate\") {\n console.log(\"New Subscription\");\n\n const plan_code = findSubscriptionPlanCode(orgBilling.billing_plan);\n msg = await billing.newSubscription(\n orgInfo.orgId,\n plan_code,\n orgBilling.billing_curr,\n quantity,\n SubscriptionInfo.total_billing_cycles);\n }\n else {\n console.log(\"Update Subscription\");\n\n var sub = [{}];\n sub[0].quantity = quantity;\n sub[0].id = billingData.subscriptions[0].id;\n msg = await billing.updateSubscriptions(\n orgInfo.orgId,\n sub\n );\n }\n\n const { error, billing_account } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n if(error.includes(\"submitted values match the current subscriptions\")){\n //Still update the device status if the subscription value is correct.\n updateDeviceStatus();\n throw new Error(error);\n }\n else{\n alert(error);\n throw new Error(error);\n }\n }\n\n setBillingData(billing_account);\n updateDeviceStatus();\n } catch (error) {\n console.error(error);\n //handleCloseStatusChange();\n //No longer prevent activation for billing errors. Improve customer experience\n updateDeviceStatus();\n }\n };\n\n const updatePreview = () => {\n var newCharge = 0\n var nextInvoice = 0;\n var newQty = 0;\n var currentlyActive = 0;\n var l_billingPlan = BillingPlans[0];\n var i = 0;\n\n for (i = 0; i < BillingPlans.length; i++) {\n if (BillingPlans[i].label === orgBilling.billing_plan) {\n l_billingPlan = BillingPlans[i];\n break;\n }\n }\n\n newQty = checkedList.length;\n\n for (i = 0; i < devices.length; i++) {\n if (devices[i].status === 1) {\n currentlyActive = currentlyActive + 1;\n }\n }\n\n if (billingData.subscriptions.length == 0) {\n newCharge = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * newQty * 100) / 100;\n nextInvoice = newCharge;\n if (billingData.subscriptions.length > 0) {\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (currentlyActive + newQty) * 100) / 100;\n }\n handleSetNewCharge(newCharge);\n } else {\n if (action === \"deactivate\") {\n newQty = newQty * -1;\n }\n previewSubscription();\n nextInvoice = Math.round(l_billingPlan.unit_cost[orgBilling.billing_curr] * (currentlyActive + newQty) * 100) / 100;\n }\n\n handleNextInvoice(nextInvoice);\n };\n\n const previewSubscription = async () => {\n var msg = { status: 0, data: {} };\n var newQty = 0;\n var currentlyActive = 0;\n var i = 0;\n\n try {\n if (billingData.subscriptions.length == 0) {\n console.log(\"No Subscription, cannot preview\");\n } else {\n newQty = checkedList.length;\n for (i = 0; i < devices.length; i++) {\n if (devices[i].status === 1) {\n currentlyActive = currentlyActive + 1;\n }\n }\n\n console.log(\"Update Subscription\");\n\n var sub = [{}];\n\n if (action === \"activate\") {\n sub[0].quantity = currentlyActive + newQty;\n } else {\n sub[0].quantity = currentlyActive - newQty;\n }\n\n sub[0].id = billingData.subscriptions[0].id;\n //console.log(sub);\n msg = await billing.previewSubscription(\n orgInfo.orgId,\n sub\n );\n }\n\n //console.log(msg.data);\n\n const { error, billing_preview } = msg.data;\n\n if (msg.status === 404) {\n console.log(msg.status);\n }\n\n if (error !== 'OK' && msg.status !== 200) {\n throw new Error(error);\n }\n\n handleSetNewCharge(billing_preview[0].estimated_total);\n } catch (error) {\n console.error(error);\n }\n };\n\n return (\n \n \n \n {\n \n \n \n {action === \"activate\" ? t(\"activateDevices_caps\") : t(\"disableDevices_caps\")}\n \n \n \n \n \n \n \n
\n \n
\n {\n const selectedIDs = (e.selectionModel);\n setCheckedList(selectedIDs);\n }}\n pageSize={100}\n rows={displayDevices}\n columns={deviceColumns} />\n
\n
\n \n
\n {\n const selectedIDs = (e.selectionModel);\n setCheckedList(selectedIDs);\n }}\n pageSize={100}\n rows={displayDevices}\n columns={deviceColumnsMobile} />\n
\n
\n \n \n \n \n \n
}\n {open && \n Change Device Status\n \n {\n {action === \"activate\" ? t(\"areYouSureYouWantToActivate\") : t(\"areYouSureYouWantToDisable\")}\n }\n
\n \n \n {checkedList.map((dev) => (\n \n {dev}\n \n ))}\n \n \n
\n
\n {\n \n {action === \"activate\" ? t(\"estimatedTotalDueNow\") : t(\"estimatedCredit\")}: {estCharge} {orgBilling.billing_curr}\n \n }\n {\n \n {t(\"estimatedTotaleDueNext\",{billing_plan: t(orgBilling.billing_plan)})} {estNextInvoice} {orgBilling.billing_curr}\n \n }\n {\n {t(\"additonalTaxesFeesCredits\")}\n }\n {
}\n \n \n \n {}\n {isLoading && }\n \n
}\n
\n );\n};\n\nexport default ChangeDeviceStatus2;","import { useState, useRef, useEffect } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Button,\n Grid,\n IconButton,\n Hidden,\n Link,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { DataGrid } from '@material-ui/data-grid';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host, enableBilling, BillingCurrency, BillingPlans } from \"../../../data\";\nimport ModalPrompt from \"../../OrgManage/Components/ModalPrompt\";\nimport ActivateDevice from \"./ActivateDevice.js\";\nimport ActivateDevice2 from \"./ActivateDevice2.js\";\nimport { billing } from '../../../services/billing';\nimport StatusList from './StatusList.js';\nimport ChangeDeviceStatus from './ChangeDeviceStatus.js';\nimport ChangeDeviceStatus2 from './ChangeDeviceStatus2.js';\nimport { CSVLink } from \"react-csv\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n table: {\n width: '100%',\n margin: '0 auto',\n maxWidth: '1400px',\n height: '60vh',\n },\n activate_device: {\n margin: '0 auto',\n maxWidth: '1200px',\n width: '100%',\n },\n link: {\n color: theme.palette.info.dark,\n },\n syncButton: {\n marginRight: theme.spacing(2),\n },\n buttonProgress: {\n marginRight: 64,\n },\n}));\n\nconst ManageDevices = ({ orgInfo, devices, setDevices, fetchDevices=()=>{} }) => {\n const { t } = useTranslation();\n const baseurl = '/orgs/' + orgInfo.orgName;\n const classes = useStyles();\n const [csvReportData, setCSVReportData] = useState([]);\n const [csvFileName, setCSVFileName] = useState(orgInfo.orgName + '_devices.csv');\n const csvLink = useRef();\n const [targetUID, setTargetUID] = useState();\n const [targetNewStatus, setTargetNewStatus] = useState();\n const [openStatusChange, setOpenStatusChange] = useState(false);\n const [openDeviceSyncDialogue, setOpenDeviceSyncDialogue] = useState(false);\n const [isSyncing, setIsSyncing] = useState(false);\n const [openDelete, setOpenDelete] = useState(false);\n const [deleteTarget, setDeleteTarget] = useState();\n const [billingData, setBillingData] = useState({\n billing_info: {},\n email: '',\n subscriptions: [],\n invoices: [],\n cc_emails: [],\n });\n const [orgBilling, setOrgBilling] = useState({\n billing_curr: BillingCurrency[0],\n billing_plan: BillingPlans[0].plan_code\n });\n const csvHeaders = [\n { label: t(\"device\"), key: 'uid' },\n { label: t(\"branch\"), key: 'branchName' },\n { label: t(\"site\"), key: 'siteName' },\n { label: t(\"tank\"), key: 'tankName' },\n { label: t(\"status\"), key: 'status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"type\"), key: 'type' },\n ];\n const deviceColumns = [\n {\n headerName: t(\"device\"),\n field: 'uid',\n width: 160,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"branch\"),\n field: 'branchName',\n renderCell: renderBranchLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"site\"),\n field: 'siteName',\n renderCell: renderSiteLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tank\"),\n field: 'tankName',\n renderCell: renderLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"type\"),\n field: 'type',\n renderCell: renderType,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'status',\n renderCell: renderStatus,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastReading\"),\n field: 'ServerTime_UTC',\n width: 190,\n type: 'dateTime',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: 'Action',\n renderCell: renderAction,\n sortable: false,\n disableClickEventBubbling: true\n },\n ];\n\n const deviceColumnsMobile = [\n {\n headerName: t(\"device\"),\n field: 'uid',\n width: 160,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"type\"),\n field: 'type',\n width: 130,\n renderCell: renderType,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'status',\n width: 130,\n renderCell: renderStatus,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: 'Action',\n width: 130,\n renderCell: renderAction,\n sortable: false,\n disableClickEventBubbling: true\n },\n ];\n\n\n const handleOpenDeleteDevice = (item) => {\n setDeleteTarget(item.uid);\n setOpenDelete(true);\n };\n\n const handleCloseDeleteDevice = () => {\n setDeleteTarget(\"\");\n setOpenDelete(false);\n };\n\n const handleDeleteRow = () => {\n var delete_uid = deleteTarget;\n\n setOpenDelete(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'uid': delete_uid });\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/ftdevices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setDevices(data.deviceList);\n }\n else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n } else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n function renderType(params) {\n return (\n

\n {params.value === \"WiFi\" ? t(\"wifi\") : params.value === \"PulseHUB\" ? \"Pulse Pro\" : t(params.value)}\n

\n );\n };\n\n function renderLink(params) {\n if (params.row.tankName === undefined) {\n return;\n }\n\n return (\n \n \n {params.value}\n \n \n );\n };\n\n function renderSiteLink(params) {\n if (params.row.siteName === undefined) {\n return;\n }\n\n return (\n \n \n {params.value}\n \n \n );\n };\n\n function renderBranchLink(params) {\n if (params.row.branchName === undefined) {\n return;\n }\n\n return (\n \n \n {params.value}\n \n \n );\n };\n\n function renderAction(params) {\n var ldisabled = params.row.status === 1 ? true : params.row.status === 3 ? true : false;\n\n return (\n handleOpenDeleteDevice(params.row)}>\n \n \n );\n };\n\n function renderStatus(params) {\n var lstatus = t(\"disabled\");\n var lfamily = params.row.type;\n var ldisabled = false;\n var l_uid = params.row.uid;\n\n switch (params.row.status) {\n case 0:\n lstatus = t(\"disabled\");\n break;\n case 1:\n lstatus = t(\"active\");\n break;\n case 2:\n lstatus = t(\"active\");\n ldisabled = true;\n break;\n case 3:\n lstatus = t(\"inProcess\");\n break;\n default:\n break;\n }\n\n if (false && (lfamily === \"pressure\" || lfamily === 'cellular') && !(l_uid.includes(\"Test\")) && enableBilling) {\n return (\n \n );\n }\n else {\n return ( {lstatus} );\n }\n };\n function StatusChange(uid, newStatus) {\n if (enableBilling) {\n // Update subscription\n setTargetUID(uid);\n setTargetNewStatus(newStatus);\n setOpenStatusChange(true);\n }\n else {\n // Update device status\n }\n };\n\n const handleCloseStatusChange = () => {\n setTargetUID();\n setTargetNewStatus();\n setOpenStatusChange(false);\n }\n\n const handleSyncDeviceStatus = () => {\n setOpenDeviceSyncDialogue(false);\n setIsSyncing(true);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'devices': [], 'hasBillingInfo': 0, 'sync': 1 });\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n var url = host + '/orgs/' + orgInfo.orgId + '/ftdevices/';\n\n if (enableBilling) {\n url = host + '/orgs/' + orgInfo.orgId + '/devices/';\n }\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n setIsSyncing(false);\n if (data.error === \"OK\") {\n setDevices(data.deviceList);\n } else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n useEffect(() => {\n (async () => {\n try {\n const { status, data } = await billing.getBillingData(\n orgInfo.orgId\n );\n\n const { error, billing_account, org_billing } = data;\n\n if (status === 404) {\n // console.log(status);\n }\n\n if (error !== 'OK' && status !== 200) {\n throw new Error(error);\n }\n\n setBillingData(billing_account);\n\n if (org_billing.billing_curr == null) {\n org_billing.billing_curr = BillingCurrency[0];\n }\n if (org_billing.billing_plan == null) {\n org_billing.billing_plan = BillingPlans[0].plan_code;\n }\n setOrgBilling(org_billing);\n } catch (error) {\n console.error(error);\n }\n })();\n }, []);\n\n function createCSVData(data_in) {\n var i;\n var k;\n var csvData = [[t('devices'), orgInfo.orgName]];\n let d = new Date;\n\n csvData.push([t('dateCreated'), convertDatetoCSVFormat(d)]);\n csvData.push(['']);\n\n var tempRow = [];\n\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n\n csvData.push(tempRow);\n\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n } else {\n if (csvHeaders[i].key === \"status\") {\n if (data_in[k][csvHeaders[i].key] == 0) {\n tempRow.push(t(\"disabled\"));\n } else {\n tempRow.push(t(\"active\"));\n }\n }\n else if(csvHeaders[i].key === \"type\")\n if (data_in[k][csvHeaders[i].key] === \"pulseHUB\"){\n tempRow.push(\"Pulse Pro\");\n }\n else{\n tempRow.push(t(data_in[k][csvHeaders[i].key]));\n }\n else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n }\n csvData.push(tempRow);\n }\n }\n\n setCSVReportData(csvData);\n };\n\n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n let ret = inputTimeStamp;\n\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ').replace(/-/g, '/');\n }\n\n return ret;\n }\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for branch data...\");\n csvLink.current.link.click();\n };\n\n useEffect(() => {\n createCSVData(devices);\n }, [devices]);\n\n return (\n \n \n {openStatusChange && }\n \n
\n \n \n {false && }\n {true && }\n \n
\n \n \n \n \n \n \n \n {false && enableBilling && \n {isSyncing ? \n : }\n }\n {enableBilling && \n \n }\n \n \n downloadCSVReport()}>\n \n \n \n \n \n
\n
\n \n {openDelete && }\n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n );\n};\n\nexport default ManageDevices;","import React from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport EditIcon from '@material-ui/icons/Edit';\nimport { IconButton } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n editButton: {\n position: 'absolute',\n padding: '6px',\n transform: 'translate(25%, -3px)',\n },\n editIcon: {\n fontSize: '1.1rem',\n },\n}));\n\nconst EditButton = React.memo(({ clickHandler, ...props }) => {\n const classes = useStyles();\n\n return (\n \n \n \n );\n});\n\nexport default EditButton;","import React from 'react';\nimport {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Typography,\n Paper,\n IconButton,\n} from '@material-ui/core';\nimport { format } from 'date-fns';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { makeStyles } from '@material-ui/core/styles';\nimport PictureAsPdfIcon from '@material-ui/icons/PictureAsPdf';\nimport { useTranslation } from 'react-i18next';\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst useStyles = makeStyles((theme) => ({\n tableTitle: {\n display: 'inline-block',\n position: 'relative',\n paddingLeft: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '1rem',\n fontWeight: 600,\n },\n subtitle: {\n display: 'block',\n fontSize: '0.8rem',\n },\n table: {\n marginBottom: theme.spacing(3),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n}));\n\nconst TableTemplate = ({\n title,\n subtitle,\n columnTitles,\n rows,\n handleCellClick,\n}) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const formattedRows = rows.length\n ? rows\n : new Array(columnTitles.length).fill('-');\n function tableDateFormat(inputDate){\n var outputDate = \"\";\n try{\n outputDate = format(new Date(inputDate), 'MM/dd/yyyy');\n } catch {\n console.log(\"DateFormatError : {date}\".replace(\"{date}\", inputDate));\n var tempDate = inputDate;\n if(tempDate.includes(\"+\")){\n //tempDate = tempDate.substring(0, tempDate.indexOf('+')).replace(\" \",\"T\")+\"Z\";\n tempDate = tempDate.substring(0, tempDate.indexOf('+')).replace(\" \",\"T\");\n //tempDate = tempDate.substring(0, tempDate.indexOf('+'));\n }\n //console.log(\"tempDate: {date}\".replace(\"{date}\",tempDate));\n outputDate = format(new Date(tempDate), 'MM/dd/yyyy');\n }\n return outputDate;\n }\n \n return (\n <>\n \n {t(title)}\n \n {subtitle && (\n \n {t(subtitle)}\n \n )}\n \n \n \n \n {!!Object.values(columnTitles).length &&\n Object.values(columnTitles).map((el) => (\n \n {t(el)}\n \n ))}\n \n \n \n {formattedRows.map((row) => {\n if (row === '-') {\n return (\n \n {Object.keys(columnTitles).map((el, index) => (\n {row}\n ))}\n \n );\n }\n\n return (\n \n {Object.keys(columnTitles).map(\n (el, index) => {\n if (\n el === 'id' &&\n typeof handleCellClick ===\n 'function'\n ) {\n return (\n \n \n \n \n \n );\n }\n\n if (\n el === 'next_invoice_date' ||\n el === 'closed_at' ||\n el === 'due_at'\n ) {\n return (\n \n {row[el] === null ? \"\" :\n tableDateFormat(row[el])}\n \n );\n }\n\n return (\n \n {t(row[el])}\n \n );\n }\n )}\n \n );\n })}\n \n
\n
\n \n );\n};\n\nexport default TableTemplate;","import React from 'react';\nimport {\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\nexport const useStyles = makeStyles((theme) => ({\n tableTitle: {\n display: 'inline-block',\n position: 'relative',\n paddingLeft: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '1rem',\n fontWeight: 600,\n },\n table: {\n marginBottom: theme.spacing(2),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n}));\n\nconst WidgetTemplate = ({ title, children }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n\n return (\n <>\n \n {title}\n \n \n \n \n \n {children}\n \n \n
\n
\n \n );\n};\n\nexport default WidgetTemplate;","import { useTranslation } from 'react-i18next';\n\n// const { t } = useTranslation();\n\nexport const billingConfig = {\n \n futureChargesTable: {\n title: 'futureCharges',\n subtitle: 'estimatedChargesDoNotInclude',\n columnTitles: {\n plan_name: 'plan',\n quantity: 'quantity',\n estimated_total_display: 'estimatedTotal',\n next_invoice_date: 'nextInvoiceDate',\n },\n },\n invoicesTable: {\n title: 'invoices',\n columnTitles: {\n number: 'numberAbbr',\n closed_at: 'closedOn',\n state: 'status',\n total_display: 'total',\n id: 'download',\n },\n },\n};\n","export const isValidPhoneNumber = (phoneNumber) =>\n /^\\d{7,}$/.test(phoneNumber.replace(/[\\s()+\\-\\.]|ext/gi, ''));\n","import React, { useRef, useState } from 'react';\nimport { CardElement, useRecurly } from '@recurly/react-recurly';\nimport {\n Box,\n Button,\n FormControl,\n Input,\n InputLabel,\n MenuItem,\n Select,\n TextField,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport useSessionstorage from '@rooks/use-sessionstorage';\nimport { billing } from '../../../services/billing';\nimport { countries, BillingCurrency, BillingPlans } from '../../../data';\nimport { isValidPhoneNumber } from '../../../helpers/isValidPhoneNumber';\nimport { isValidEmail } from '../../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n tableTitle: {\n position: 'relative',\n paddingLeft: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '1rem',\n fontWeight: 600,\n },\n buttonGroup: {\n display: 'flex',\n flexDirection: 'row-reverse',\n paddingTop: theme.spacing(1),\n '& button:first-child': {\n marginLeft: theme.spacing(2),\n },\n },\n SubscriptionInfo: {\n display: 'flex',\n flexDirection: 'column',\n paddingBottom: theme.spacing(2),\n },\n button: {\n fontSize: '1.1rem',\n },\n formControl: {\n minWidth: 120,\n marginBottom: theme.spacing(1),\n '& .MuiInputLabel-asterisk': {\n display: 'none',\n },\n },\n cardElement: {\n '& .recurly-element': {\n height: '45px',\n marginBottom: theme.spacing(1),\n borderBottom: `2px solid ${theme.palette.primary.strongLight}`,\n transition: 'border 0.3s',\n },\n '& > .recurly-element-focus, .recurly-element:hover': {\n borderBottomColor: theme.palette.primary.dark,\n },\n '&.invalid .recurly-element': {\n borderBottomColor: theme.palette.error.main,\n },\n },\n}));\n\nexport const BillingForm = ({ handleHideEditClick, setBillingData, setVisibleEditBilling, setOrgBilling, isData, hasSubscription, username }) => {\n const { t } = useTranslation();\n const formRef = useRef(null);\n const classes = useStyles();\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [email, setEmail] = useState('');\n const [address1, setAddress1] = useState('');\n const [address2, setAddress2] = useState('');\n const [city, setCity] = useState('');\n const [country, setCountry] = useState('');\n const [state, setState] = useState('');\n const [zip, setZip] = useState('');\n const [phone, setPhone] = useState('');\n const [plan, setPlan] = useState(BillingPlans[0]);\n const [currency, setCurrency] = useState(BillingCurrency[0]);\n const [isValidForm, setIsValidForm] = useState(false);\n const { value: sessionstorageValue } = useSessionstorage('orgInfo', {});\n const recurly = useRecurly();\n const handleSetFirstName = ({ target }) => setFirstName(target.value);\n const handleSetLastName = ({ target }) => setLastName(target.value);\n const handleSetEmail = ({ target }) => setEmail(target.value);\n const handleSetAddress1 = ({ target }) => setAddress1(target.value);\n const handleSetAddress2 = ({ target }) => setAddress2(target.value);\n const handleSetCity = ({ target }) => setCity(target.value);\n const handleSetCountry = ({ target }) => {\n setCountry(target.value);\n setState('');\n };\n const handleSetState = ({ target }) => setState(target.value);\n const handleSetZip = ({ target }) => setZip(target.value);\n const handleSetPhone = ({ target }) => setPhone(target.value);\n\n const handleChangeCard = ({ valid }) => {\n if (valid) {\n setIsValidForm(true);\n } else {\n setIsValidForm(false);\n }\n };\n\n const handlePlanSelect = (target) => {\n setPlan(target);\n };\n\n const handleCurrencySelect = (target) => {\n setCurrency(target);\n };\n\n const handleSubmit = (e) => {\n e.preventDefault();\n const orgId = sessionstorageValue.orgId;\n\n if (phone && !isValidPhoneNumber(phone)) {\n return alert(t(\"youHaveEnteredAnInvalidPhone\"));\n }\n\n if (email && !isValidEmail(email)) {\n return alert(t(\"youHaveEnteredAnInvalidEmail\"));\n }\n\n recurly.token(formRef.current, (err, token) => {\n if (err) {\n alert(err.message);\n return console.error(err);\n }\n (async () => {\n try {\n let resp = null;\n const plan_label = hasSubscription == true ? 0 : plan.label;\n if (isData) {\n resp = await billing.updateAccount({\n orgId,\n tokenId: token.id,\n email,\n currency,\n plan_label,\n username\n });\n } else {\n console.log(\"Create account\");\n resp = await billing.createAccount({\n orgId,\n tokenId: token.id,\n email,\n currency,\n plan_label,\n username\n });\n }\n\n const { error, billing_account, org_billing } = resp.data;\n\n if (error !== 'OK' && resp.status !== 200) {\n throw new Error(error);\n }\n\n setOrgBilling(org_billing);\n setBillingData(billing_account);\n setVisibleEditBilling(false);\n } catch (error) {\n console.error(error);\n alert(error);\n }\n })();\n });\n };\n\n return (\n <>\n
\n \n \n {t(\"accountName\")}\n \n \n \n {t(\"firstName\")}\n \n \n \n {t(\"lastName\")}\n \n \n \n {t(\"email\")}\n \n \n \n {t(\"addressLine1\")}\n \n \n \n {t(\"addressLine2\")}\n \n \n \n {t(\"city\")}\n \n \n \n {t(\"country\")}\n \n {!!countries.length &&\n countries.map(({ countryName, countryShortCode, translationKey }) => (\n \n {t(translationKey)}\n \n ))}\n \n \n \n {t(\"stateProvinceRegion\")}\n \n \n \n {t(\"zipCode\")}\n \n \n 0) && !isValidPhoneNumber(phone)}\n required\n className={classes.formControl}>\n {t(\"phone\")}\n \n \n \n \n \n {!hasSubscription &&\n {\n for (var i = 0; i < BillingCurrency.length; i++) {\n if (e.target.value === BillingCurrency[i]) {\n handleCurrencySelect(BillingCurrency[i]);\n break;\n }\n }\n }}>\n {BillingCurrency.map(billingCurrency => \n {billingCurrency}\n )}\n }\n {!hasSubscription &&\n {\n for (var i = 0; i < BillingPlans.length; i++) {\n if (e.target.value === BillingPlans[i].label) {\n handlePlanSelect(BillingPlans[i]);\n break;\n }\n }\n }}>\n {BillingPlans.map(billingPlan => \n {t(billingPlan.label)}\n )}\n }\n {hasSubscription && {t(\"pulseLevelSetSubAndCurrencyNote\")}}\n \n \n \n {t(\"save\")}\n \n \n {t(\"cancel\")}\n \n \n \n \n );\n};","export const base64ToArrayBuffer = (base64) => {\n const binary_string = window.atob(base64);\n const len = binary_string.length;\n const bytes = new Uint8Array(len);\n\n for (let i = 0; i < len; i++) {\n bytes[i] = binary_string.charCodeAt(i);\n }\n\n return bytes.buffer;\n}","import React, { useEffect, useState } from 'react';\nimport { RecurlyProvider, Elements } from '@recurly/react-recurly';\nimport { useParams } from 'react-router-dom';\nimport {\n Grid,\n Typography,\n Input,\n FormControl,\n InputLabel,\n Button,\n IconButton,\n} from '@material-ui/core';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { makeStyles } from '@material-ui/core/styles';\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\nimport useSessionstorage from '@rooks/use-sessionstorage';\nimport { saveAs } from 'file-saver';\nimport { useScript } from '../../../hooks/useScript';\nimport config from '../../../auth-config';\nimport { EditButton, WidgetTemplate, TableTemplate } from './';\nimport { billingConfig } from './billingConfig';\nimport { BillingForm } from './BillingForm';\nimport { isValidEmail } from '../../../helpers/isValidEmail';\nimport { billing } from '../../../services/billing';\nimport { base64ToArrayBuffer } from '../../../helpers/base64ToArrayBuffer';\nimport { BillingCurrency, BillingPlans, countries } from '../../../data';\nimport ModalPrompt from \"../../OrgManage/Components/ModalPrompt\";\nimport { useTranslation } from 'react-i18next';\n\nconst { recurlyData } = config;\nconst { futureChargesTable, invoicesTable } = billingConfig;\n\nconst useStyles = makeStyles((theme) => ({\n capitalLetter: {\n textTransform: 'capitalize',\n margin: theme.spacing(1),\n paddingLeft: theme.spacing(1),\n },\n tableTitle: {\n position: 'relative',\n paddingLeft: theme.spacing(2),\n paddingBottom: theme.spacing(1),\n fontSize: '1rem',\n fontWeight: 600,\n },\n table: {\n marginBottom: theme.spacing(3),\n '&:last-child': {\n marginBottom: 0,\n },\n },\n formControl: {\n position: 'relative',\n minWidth: 120,\n width: '80%',\n marginBottom: theme.spacing(3),\n '& .MuiInputLabel-asterisk': {\n display: 'none',\n },\n },\n newEmailBtn: {\n position: 'absolute',\n right: '0',\n top: '50%',\n width: '20%',\n transform: 'translate(105%,-33%)',\n },\n deleteEmailBtn: {\n position: 'absolute',\n right: '0',\n top: '50%',\n transform: 'translate(150%,-55%)',\n },\n emailList: {\n position: 'relative',\n minWidth: 120,\n width: '80%',\n fontSize: '1rem',\n marginBottom: theme.spacing(2),\n },\n preLoader: {\n display: 'block',\n margin: `${theme.spacing(3)}px auto`,\n },\n}));\n\nconst Billing = ({ orgInfo }) => {\n const { t } = useTranslation();\n const scriptStatus = useScript(recurlyData.url);\n const [isVisibleEditBilling, setVisibleEditBilling] = useState(false);\n const [newEmail, setNewEmail] = useState('');\n const [billingData, setBillingData] = useState({\n billing_info: {\n city: '',\n country: '',\n exp_month: '',\n exp_year: '',\n first_name: '',\n last_name: '',\n first_six: '',\n last_four: '',\n street1: '',\n street2: '',\n region: '',\n phone: '',\n postal_code: '',\n },\n email: '',\n subscriptions: [],\n invoices: [],\n cc_emails: [],\n });\n const [orgBilling, setOrgBilling] = useState({\n billing_curr: BillingCurrency[0],\n billing_plan: BillingPlans[0].plan_code\n });\n const { value: sessionstorageValue } = useSessionstorage('orgInfo', {});\n const classes = useStyles();\n const { orgName } = useParams();\n const [isLoading, setIsLoading] = useState(true);\n const [openDeleteConfirm, setOpenDeleteConfirm] = useState(false);\n\n const handleSetBilling = (input_billing) => {\n var i = 0;\n var l_billingInfo = input_billing;\n\n for (i = 0; i < l_billingInfo.invoices.length; i++) {\n l_billingInfo.invoices[i].total_display = l_billingInfo.invoices[i].total.toFixed(2).toString() + ' ' + l_billingInfo.invoices[i].currency;\n }\n for (i = 0; i < l_billingInfo.subscriptions.length; i++) {\n l_billingInfo.subscriptions[i].estimated_total_display = l_billingInfo.subscriptions[i].estimated_total.toFixed(2).toString() + \" \" + l_billingInfo.subscriptions[i].currency;\n }\n\n setBillingData(l_billingInfo);\n };\n\n useEffect(() => {\n (async () => {\n try {\n const { status, data } = await billing.getBillingData(\n sessionstorageValue.orgId\n );\n\n const { error, billing_account, org_billing } = data;\n\n if (status === 404) {\n setVisibleEditBilling(true);\n return setIsLoading(false);\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n handleSetBilling(billing_account);\n setOrgBilling(org_billing);\n setIsLoading(false);\n } catch (error) {\n console.error(error);\n }\n })();\n }, []);\n\n const handleEditClick = () => setVisibleEditBilling(true);\n\n const handleHideClick = () => setVisibleEditBilling(false);\n\n const handleSetNewEmail = ({ target }) => setNewEmail(target.value);\n\n const handleSubmitNewEmail = async (e) => {\n try {\n e.preventDefault();\n if (newEmail && !isValidEmail(newEmail)) {\n return alert(t(\"youHaveEnteredAnInvalidEmail\"));\n }\n\n const {\n status,\n data,\n } = await billing.updateEmails(sessionstorageValue.orgId, [\n ...billingData.cc_emails,\n newEmail,\n ]);\n\n const { error, billing_account } = data;\n\n if (error !== 'OK' && (status !== 200 || status !== 404)) {\n throw new Error(error);\n alert(error);\n }\n\n handleSetBilling(billing_account);\n setIsLoading(false);\n setNewEmail('');\n } catch (error) {\n console.error(error);\n }\n };\n\n const handleDeleteEmail = async ({ currentTarget }) => {\n try {\n const email = currentTarget.getAttribute('data-email');\n\n const { status, data } = await billing.updateEmails(\n sessionstorageValue.orgId,\n billingData.cc_emails.filter((el) => el !== email)\n );\n\n const { error, billing_account } = data;\n\n if (error !== 'OK' && (status !== 200 || status !== 404)) {\n throw new Error(error);\n }\n\n handleSetBilling(billing_account);\n setIsLoading(false);\n } catch (error) {\n console.error(error);\n alert(error);\n }\n };\n\n const handleDeleteAccount = () => {\n setOpenDeleteConfirm(true);\n };\n const handleCloseDeleteConfirm = () => {\n setOpenDeleteConfirm(false);\n };\n\n const deleteAccount = async () => {\n try {\n const { status, data } = await billing.deleteAccount(sessionstorageValue.orgId);\n const { error } = data;\n if (error !== 'OK' && (status !== 200 || status !== 404)) {\n throw new Error(error);\n }\n setBillingData({\n billing_info: {\n city: '',\n country: '',\n exp_month: '',\n exp_year: '',\n first_name: '',\n last_name: '',\n first_six: '',\n last_four: '',\n street1: '',\n street2: '',\n region: '',\n phone: '',\n postal_code: '',\n },\n email: '',\n subscriptions: [],\n invoices: [],\n cc_emails: [],\n });\n alert(t(\"contactGracoCustomerService\"));\n } catch (error) {\n console.error(error);\n alert(error);\n }\n\n };\n\n const handleDownloadInvoice = async ({ currentTarget }) => {\n try {\n const invoiceId = currentTarget.getAttribute('data-id');\n\n const { status, data } = await billing.downloadInvoice(\n sessionstorageValue.orgId,\n invoiceId\n );\n\n if (status !== 200) {\n throw new Error(t(\"errorWithDownloading\"));\n }\n\n const pdfFile = new Blob([base64ToArrayBuffer(data)], {\n type: 'application/pdf',\n });\n\n saveAs(pdfFile, t(\"invoice\") + '_' + invoiceId + '.pdf');\n } catch (error) {\n console.error(error);\n alert(error);\n }\n };\n\n const {\n subscriptions,\n invoices,\n cc_emails,\n billing_info,\n email,\n } = billingData;\n\n const {\n city,\n country,\n exp_month,\n exp_year,\n first_name,\n last_name,\n first_six,\n last_four,\n street1,\n street2,\n region,\n phone,\n postal_code,\n } = billing_info;\n const { isOrgEditor } = sessionstorageValue;\n \n function findRegionTranslationKey(country_in, region_in){\n var regionTranlsationKey = undefined;\n const country_item = countries.find(({countryShortCode})=> countryShortCode === country_in );\n var i = 0;\n try{\n for (i=0; i\n {openDeleteConfirm && }\n \n {orgName}\n \n {isLoading && }\n {!isLoading && (\n \n \n \n \n \n \n {!isVisibleEditBilling ? (\n <>\n \n {t(\"billingInformation\")}\n {isOrgEditor && (\n \n )}\n \n }>\n

\n {t(\"creditCard\")}: {first_six?.slice(0, 4)}{' '}\n {first_six?.slice(4, 6)}.. ....{' '}\n {last_four}\n

\n

{t(\"expiration\")}: {exp_month + '/' + exp_year}

\n

{t(\"name\") + \": \"}{first_name + ' ' + last_name}

\n

{t(\"preferredCurrency\")}: {orgBilling.billing_curr}

\n

{t(\"subscriptions\")}: {t(orgBilling.billing_plan)}

\n \n \n

{t(\"email\") + \": \"}{email}

\n

{t(\"addressLine1\") + \": \"}{street1}

\n

{t(\"addressLine2\") + \": \"}{street2}

\n

{t(\"city\") + \": \"}{city}

\n

{t(\"country\") + \": \"}{country}

\n

{t(\"stateProvinceRegion\") + \": \"}{t(findRegionTranslationKey(country, region))}

\n

{t(\"zipCode\") + \": \"}{postal_code}

\n

{t(\"phone\") + \": \"}{phone}

\n
\n \n
\n {isOrgEditor && (\n \n \n {t(\"email\")}\n \n \n \n {\"+ \" + t(\"add\")}\n \n \n )}\n \n
e.preventDefault()}>\n {!!cc_emails.length &&\n cc_emails.map((email) => (\n \n \n {email}\n \n {isOrgEditor && (\n \n \n \n )}\n \n ))}\n \n
\n {billingData.email !== \"\" && billingData.subscriptions.length == 0 && }\n \n ) : (\n <>\n {scriptStatus && (\n <>\n \n {t(\"billingInformation\")}\n \n \n \n 0 ? true : false}\n username={sessionstorageValue.orgName + \":\" + sessionstorageValue.orgId}\n />\n \n \n \n )}\n\n \n )}\n
\n
\n )}\n \n );\n};\n\nexport default Billing;","import {useState, useEffect} from 'react';\n\nexport const useScript = (url) => {\n const [scriptStatus, setStatus] = useState(false);\n const statusListener = () => setStatus(true);\n\n useEffect(() => {\n const script = document.createElement('script');\n\n script.src = url;\n script.async = true;\n script.addEventListener('load', statusListener, false);\n document.body.appendChild(script);\n\n return () => {\n script.removeEventListener('load', statusListener, false);\n document.body.removeChild(script);\n };\n }, [url]);\n\n return scriptStatus;\n};\n","import React, { Fragment } from 'react';\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport { useHistory } from 'react-router'\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 250,\n maxWidth: 500,\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n noLabel: {\n marginTop: theme.spacing(3),\n },\n Button: {\n marginRight: theme.spacing(1),\n }\n}));\n\nconst BranchNavigationButton = ({ text, orgInfo, branchesList }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n let history = useHistory();\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleRedirect = (id, moduleName) => {\n try {\n setAnchorEl(null);\n var orgName = orgInfo.orgName;\n\n for (var i = 0; i < branchesList.length; i++) {\n if (moduleName === branchesList[i]) {\n history.push('/orgs/' + orgName + '/branches/' + moduleName);\n break;\n }\n }\n } catch (e) {\n }\n };\n\n var menuItems = {};\n\n try {\n // Branch menu items\n for (var i = 0; i < branchesList.length; i++) {\n menuItems[i] = branchesList[i];\n }\n } catch (e) {\n // console.log(e);\n }\n\n return (\n \n \n \n {Object.entries(menuItems).map(([key, value]) =>\n handleRedirect(key, value)}>\n {value}\n \n )}\n \n \n );\n};\n\nexport default BranchNavigationButton;","import { Link as RouterLink } from 'react-router-dom';\nimport {\n Breadcrumbs,\n Box,\n Grid,\n IconButton,\n Link,\n Toolbar,\n Tooltip,\n Typography,\n Tab,\n Tabs,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { useEffect, useState } from 'react';\nimport { Auth } from 'aws-amplify';\nimport ManageDevices from './Components/Devices';\nimport Billing from './Components/Billing';\nimport { host, enableBilling } from \"../../data\";\nimport BranchesNavigationButton from \"../Components/BranchNavigationButton\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n },\n content_nav: {\n padding: theme.spacing(1),\n },\n grow: {\n flexGrow: 1,\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n table: {\n width: 1000\n },\n breadcrumbFontSize: {\n [theme.breakpoints.down('xs')]: {\n fontSize: '1rem'\n }\n },\n arrowBack: {\n [theme.breakpoints.down('xs')]: {\n padding: '5px',\n marginRight: '7px'\n }\n },\n tabsWrap: {\n padding: '0 8px'\n }\n}));\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n}\n\nexport default function OrgBilling({ orgInfo }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const [devices, setDevices] = useState([]);\n const [value, setValue] = useState(0);\n const [branches, setBranches] = useState([]);\n const [seconds, setSeconds] = useState(0);\n const [updateDeviceStatus, setUpdateDeviceStatus] = useState(false);\n\n useEffect(() => {\n fetchBranchData();\n }, [orgInfo]);\n\n function fetchBranchData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches', requestOptions)\n .then(results => results.json())\n .then(data => {\n // If no branch exists, send the user to the branch creation page.\n setBranches(\n data.data.branchesList\n );\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n function handleSetDevices(data_in) {\n var lDevices = JSON.parse(JSON.stringify(data_in));\n var i;\n var deviceStatusInProcess = false;\n function compare ( a, b) {\n //console.log(a.ServerTime);\n //console.log(b.ServerTime);\n if (!a.ServerTime){\n return 1;\n }\n if (!b.ServerTime){\n return -1;\n }\n if ( a.ServerTime < b.ServerTime){\n return 1;\n }\n if ( a.ServerTime > b.ServerTime){\n return -1;\n }\n return 0\n }\n\n for (i = 0; i < lDevices.length; i++) {\n lDevices[i]['id'] = lDevices[i]['uid'];\n if (lDevices[i].status === 3) {\n deviceStatusInProcess = true;\n setSeconds(60);\n }\n if (lDevices[i].ServerTime) { \n lDevices[i].ServerTime_UTC = new Date(lDevices[i].ServerTime);\n }\n }\n lDevices.sort(compare);\n setDevices(lDevices);\n setUpdateDeviceStatus(deviceStatusInProcess);\n }\n\n function fetchDevices() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/devices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n handleSetDevices(data.deviceList);\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n\n useEffect(() => {\n if (seconds > 0) {\n setTimeout(() => setSeconds(seconds - 1), 1000);\n } else {\n if (updateDeviceStatus) {\n fetchDevices();\n }\n }\n });\n\n useEffect(() => {\n fetchDevices();\n }, [orgInfo]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n {t(\"settings\")}\n \n \n {t(\"deviceBilling\")}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n {enableBilling ? :\n Under construction.}\n \n \n \n )\n}\n","import { useEffect, useState, useRef, Fragment } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogTitle,\n DialogContent,\n FormControl,\n Grid,\n IconButton,\n Link,\n ListItemText,\n Toolbar,\n Typography,\n Select,\n MenuItem,\n TextField,\n useMediaQuery,\n} from '@material-ui/core';\nimport { DataGrid } from '@material-ui/data-grid';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { Edit } from '@material-ui/icons/';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host, units_settings } from \"../../../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n dropdown: {\n display: 'flex',\n marginLeft: 'auto',\n marginRight: theme.spacing(3),\n },\n fluidtable: {\n width: '100%',\n height: '50vh',\n zIndex: 0,\n border: 0,\n WebkitFontSmoothing: 'auto',\n letterSpacing: 'normal',\n '& .MuiDataGrid-columnsContainer': {\n backgroundColor: theme.palette.type === 'light' ? theme.palette.primary.light : theme.palette.primary.dark,\n color: theme.palette.primary.contrastText\n },\n '& .MuiDataGrid-iconSeparator': {\n },\n },\n table: {\n width: '100%',\n height: '72vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n}));\n\nconst FluidManagement = ({ orgInfo, devices, setDevices, fluids, setFluids }) => {\n const { t } = useTranslation();\n const matches = useMediaQuery('(max-width:600px)');\n const classes = useStyles();\n const baseurl = '/orgs/' + orgInfo.orgName;\n const [openAddFluid, setOpenAddFluid] = useState(false);\n const [deleteFluidTarget, setDeleteFluidTarget] = useState({ 'id': 0, 'name': '' });\n const [openDeleteFluid, setOpenDeleteFluid] = useState(false);\n const [editFluidTarget, setEditFluidTarget] = useState({ 'id': 0, 'name': '' });\n const [editFluidName, setEditFluidName] = useState(\"\");\n const [openFluidEdit, setOpenFluidEdit] = useState(false);\n const rnewFluidName = useRef(\"\");\n const [displayUnits, setDisplayUnits] = useState('US');\n const [fluidCol, setFluidCol] = useState([]);\n const [deviceCol, setDeviceCol] = useState([]);\n\n const fluidColumns = [\n {\n headerName: t(\"fluidName\"),\n field: 'name',\n width: 120,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"monitoredTanks\"),\n field: 'tankCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"capactiy\"),\n field: 'volume_sum_disp',\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_sum - param2.row.volume_sum,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"ullage\"),\n field: 'ullage_sum_disp',\n sortComparator: (v1, v2, param1, param2) => param1.row.ullage_sum - param2.row.ullage_sum,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t('edit'),\n renderCell: renderFluidEdit,\n width: 80,\n sortable: false,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t('delete'),\n renderCell: renderDeleteFluid,\n width: 80,\n sortable: false,\n disableClickEventBubbling: true\n },\n ];\n\n const deviceColumns = [\n {\n headerName: t(\"device\"),\n field: 'uid',\n width: 160,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"branch\"),\n field: 'branchName',\n renderCell: renderBranchLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"site\"),\n field: 'siteName',\n renderCell: renderSiteLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tank\"),\n field: 'tankName',\n renderCell: renderLink,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n flex: 1,\n disableClickEventBubbling: true\n },\n ];\n\n useEffect(() => {\n setFluidCol(fluidColumns);\n setDeviceCol(deviceColumns);\n }, []);\n\n const mapFunctionSetWidth = (width) => (el, index) => {\n const { flex, ...rest } = el;\n if (index !== 0) {\n return { ...rest, width }\n }\n return el;\n };\n\n useEffect(() => {\n if (matches) {\n setFluidCol(prevState => prevState.map(mapFunctionSetWidth(140)));\n setDeviceCol(prevState => prevState.map(mapFunctionSetWidth(130)));\n }\n }, [matches]);\n\n useEffect(() => {\n var cookies = new Cookies();\n var tDisplayUnits = cookies.get('DisplayUnits');\n\n if (undefined !== tDisplayUnits) {\n setDisplayUnits(tDisplayUnits);\n }\n }, [orgInfo]);\n\n useEffect(() => {\n var maxFluidNameLength = 13;\n if (fluids !== undefined) {\n for (var i = 0; i < fluids.length; i++) {\n try {\n if (fluids[i].name.length > maxFluidNameLength) {\n maxFluidNameLength = fluids[i].name.length;\n }\n } catch (error) {\n }\n }\n }\n setFluidCol(prevState => prevState.map((el, index) => {\n if (index === 0) {\n return { ...el, width: maxFluidNameLength * 9 + 9 }\n }\n return el;\n }));\n }, [fluids])\n\n function renderLink(params) {\n if (params.row.tankName === undefined) {\n return;\n }\n\n return (\n \n {params.value}\n \n );\n }\n\n function renderSiteLink(params) {\n if (params.row.siteName === undefined) {\n return;\n }\n\n return (\n \n {params.value}\n \n );\n };\n\n function renderBranchLink(params) {\n if (params.row.branchName === undefined) {\n return;\n }\n\n return (\n \n {params.value}\n \n );\n };\n\n const handleOpenDeleteFluid = (target) => {\n setDeleteFluidTarget(target);\n setOpenDeleteFluid(true);\n };\n\n const handleCloseDeleteFluid = () => {\n setOpenDeleteFluid(false);\n };\n\n function renderDeleteFluid(params) {\n var bdisable = params.row.tankCount > 0 ? true : false;\n return (\n handleOpenDeleteFluid(params.row)}>\n \n \n );\n };\n\n const handleFluidDelete = () => {\n var delete_id = deleteFluidTarget.id;\n handleCloseDeleteFluid(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify(\n {\n \"id\": delete_id\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n console.log(body);\n fetch(host + '/orgs/' + orgInfo.orgId + '/fluid', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error === \"OK\") {\n setFluids(data.fluidsList);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n const handleOpenEditFluid = (target) => {\n setOpenFluidEdit(true);\n setEditFluidName(target.name);\n setEditFluidTarget(target);\n };\n\n const handleCloseFluidEdit = () => {\n setOpenFluidEdit(false);\n setEditFluidName(\"\");\n };\n\n function renderFluidEdit(params) {\n return (\n handleOpenEditFluid(params.row)}>\n \n \n );\n };\n\n const handleFluidEdit = () => {\n var newName = editFluidName;\n setOpenFluidEdit(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify(\n {\n \"id\": editFluidTarget.id,\n \"Name\": newName,\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/fluid', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setFluids(data.fluidsList);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/devices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n setDevices(data.deviceList);\n setFluids(data.fluidsList);\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n const handleOpenAddFluid = () => {\n setOpenAddFluid(true);\n setEditFluidTarget(\"\");\n };\n\n const handleCloseAddFluid = () => {\n setOpenAddFluid(false);\n };\n\n const handleAddFluid = () => {\n var newName = editFluidName;\n setOpenAddFluid(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify(\n {\n \"Name\": newName,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/fluid', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error === \"OK\") {\n setFluids(data.fluidsList);\n } else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n function UpdateVolumeUnits() {\n var fluidsList = fluids;\n const vol_string = displayUnits.includes(\"US\") ? \"gal\" : \"L\";\n if (fluids !== undefined) {\n for (var i = 0; i < fluidsList.length; i++) {\n if (displayUnits.includes(\"Metric\")) {\n if (fluidsList[i].VolumeUnit == 'gallons') {\n fluidsList[i].volume_sum = Math.round((fluids[i].volume_sum) * 3.78541);\n fluidsList[i].ullage_sum = Math.round((fluids[i].ullage_sum) * 3.78541);\n fluidsList[i].VolumeUnit = 'liters'\n }\n } else {\n if (fluidsList[i].VolumeUnit == 'liters') {\n fluidsList[i].volume_sum = Math.round((fluids[i].volume_sum) / 3.78541);\n fluidsList[i].ullage_sum = Math.round((fluids[i].ullage_sum) / 3.78541);\n fluidsList[i].VolumeUnit = 'gallons'\n }\n }\n fluidsList[i].volume_sum_disp = \"{vol} {unit}\".replace(\"{vol}\", fluidsList[i].volume_sum.toFixed(0)).replace(\"{unit}\",vol_string);\n fluidsList[i].ullage_sum_disp = \"{vol} {unit}\".replace(\"{vol}\", fluidsList[i].ullage_sum.toFixed(0)).replace(\"{unit}\",vol_string);\n }\n\n setFluids(fluidsList);\n }\n };\n\n useEffect(() => {\n UpdateVolumeUnits();\n }, [fluids, displayUnits]);\n\n const handleSetDisplayUnits = (newSetting) => {\n var cookies = new Cookies();\n cookies.set('DisplayUnits', newSetting, { path: \"/\", maxAge: 1000000 });\n setDisplayUnits(newSetting);\n };\n\n return (\n \n \n \n \n {t(\"fluidTable\")}\n \n\n \n \n \n \n\n \n
\n \n
\n
\n\n \n \n \n {t(\"deviceTable\")}\n \n \n \n\n \n
\n \n
\n
\n\n \n {t(\"editFluid\") + ' '}{editFluidTarget.name}\n \n
\n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) { setEditFluidName(e.target.value) }\n }}\n inputRef={rnewFluidName} />\n \n
\n
\n\n \n \n \n \n
\n\n \n {t(\"deleteFluid\") + ' '}{deleteFluidTarget.name}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n \n\n \n {t('newFluid')}\n \n
\n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) { setEditFluidName(e.target.value) }\n }}\n inputRef={rnewFluidName} />\n \n
\n
\n\n \n \n \n \n
\n
\n );\n};\n\nexport default FluidManagement;","import { Link as RouterLink } from 'react-router-dom';\nimport {\n Breadcrumbs,\n Grid,\n IconButton,\n Link,\n Toolbar,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport React, { useEffect, useState } from 'react';\nimport { Auth } from 'aws-amplify';\nimport FluidManagement from './Components/FluidManagement';\nimport { host } from \"../../data\";\nimport BranchesNavigationButton from \"../Components/BranchNavigationButton\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n table: {\n width: 1000\n },\n}));\n\nexport default function OrgFluids({ orgInfo }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const [devices, setDevices] = useState([]);\n const [fluids, setFluids] = useState([]);\n const [branches, setBranches] = useState([]);\n\n useEffect(() => {\n fetchBranchData();\n }, [orgInfo]);\n\n function fetchBranchData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches', requestOptions)\n .then(results => results.json())\n .then(data => {\n // If a branch does not exist, send the user to the branch creation page.\n setBranches(\n data.data.branchesList\n );\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n function handleSetDevices(data_in) {\n var lDevices = data_in;\n var i;\n for (i = 0; i < lDevices.length; i++) {\n lDevices[i]['id'] = lDevices[i]['uid'];\n }\n setDevices(lDevices);\n }\n\n useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n fetch(host + '/orgs/' + orgInfo.orgId + '/devices/', requestOptions)\n .then(results => results.json())\n .then(data => {\n handleSetDevices(data.deviceList);\n setFluids(data.fluidsList);\n }).catch((error) => {\n console.log(error)\n })\n });\n }, [orgInfo]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {t(\"settings\")}\n \n \n {t(\"fluids\")}\n \n \n
\n \n \n \n \n \n \n \n )\n}","import React, { useEffect, useState, useRef } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport {\n Breadcrumbs,\n Button,\n Dialog,\n DialogActions,\n DialogTitle,\n DialogContent,\n DialogContentText,\n Grid,\n IconButton,\n Link,\n ListItemText,\n MenuItem,\n Select,\n TextField,\n Toolbar,\n Tooltip,\n Typography,\n useMediaQuery\n} from '@material-ui/core';\nimport { DataGrid } from '@material-ui/data-grid';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack, PersonAdd } from '@material-ui/icons';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport { Auth } from 'aws-amplify';\nimport { host, units_settings } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n dropdown: {\n display: 'flex',\n marginLeft: 'auto',\n },\n fluidtable: {\n height: '60vh',\n },\n table: {\n width: '100%',\n height: '40vh',\n },\n grow: {\n flexGrow: 1,\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n link: {\n color: theme.palette.info.dark,\n },\n api: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n overflowX: \"auto\",\n float: \"right\",\n },\n}));\n\nexport default function OrgDetails({ orgInfo }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const matches = useMediaQuery('(max-width:600px)');\n const [displayUnits, setDisplayUnits] = useState('US');\n const [branches, setBranches] = useState([]);\n const [fluids, setFluids] = useState([]);\n const [dataReady, setDataReady] = useState(false);\n const [inviteOpen, setInviteOpen] = useState(false);\n const [apiKey, setApiKey] = useState(\"\");\n const [isApiKeyActive, setIsApiKeyActive] = useState(true);\n const recipient = useRef(\"\");\n const [branchCol, setBranchCol] = useState([]);\n\n const baseurl = '/orgs/' + orgInfo.orgName;\n\n const fluidColumns = [\n {\n headerName: t(\"fluidName\"),\n field: 'name',\n width: 110,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"monitoredTanks\"),\n field: 'tankCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"inventory\"),\n field: 'volume_sum_disp',\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_sum - param2.row.volume_sum,\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"ullage\"),\n field: 'ullage_sum_disp',\n sortComparator: (v1, v2, param1, param2) => param1.row.ullage_sum - param2.row.ullage_sum,\n flex: 1,\n disableClickEventBubbling: true\n },\n ];\n\n const [fluidCol, setFluidCol] = useState(fluidColumns);\n\n const branchColumns = [\n {\n headerName: t(\"branch\"),\n field: 'branchName',\n renderCell: renderBranchLink,\n width: 104,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"sites\"),\n field: 'siteCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tanks\"),\n field: 'tankCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"criticalLevel\"),\n field: 'level_critical_alarmCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"levelAlarms\"),\n field: 'level_alarmCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"commAlarms\"),\n field: 'comm_alarmCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lowBattery\"),\n field: 'battery_alarmCount',\n flex: 1,\n disableClickEventBubbling: true\n },\n ];\n\n useEffect(() => {\n setBranchCol(branchColumns);\n }, []);\n\n const mapFunctionSetWidth = (width) => (el, index) => {\n const { flex, ...rest } = el;\n if (index !== 0) {\n return { ...rest, width }\n }\n return el;\n };\n\n useEffect(() => {\n if (matches) {\n setFluidCol(prevState => prevState.map(mapFunctionSetWidth(140)));\n setBranchCol(prevState => prevState.map(mapFunctionSetWidth(130)));\n }\n }, [matches]);\n\n function fetchOrgDetails() {\n let cookies = new Cookies();\n let tDisplayUnits = cookies.get(\"DisplayUnits\");\n\n if (undefined !== tDisplayUnits) {\n setDisplayUnits(tDisplayUnits);\n }\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n let requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n console.log('fetching org details...');\n fetch(host + '/orgs/' + orgInfo.orgId + '/details/', requestOptions)\n .then(results => results.json())\n .then(data => {\n setApiKey(data.apiKey);\n setIsApiKeyActive(data.isApiKeyActive);\n\n var maxBranchNameLength = 13;\n var maxFluidNameLength = 13;\n\n for (var i = 0; i < data.branchesList.length; ++i) {\n try {\n if (data.branchesList[i].branchName.length > maxBranchNameLength) {\n maxBranchNameLength = data.branchesList[i].branchName.length;\n }\n } catch (error) {\n }\n }\n\n for (var i = 0; i < data.fluidsList.length; ++i) {\n try {\n if (data.fluidsList[i].name.length > maxFluidNameLength) {\n maxFluidNameLength = data.fluidsList[i].name.length;\n }\n } catch (error) {\n }\n }\n\n setBranchCol(prevState => prevState.map((el, index) => {\n if (index === 0) {\n return { ...el, width: maxBranchNameLength * 9 + 9 }\n }\n return el;\n }));\n setFluidCol(prevState => prevState.map((el, index) => {\n if (index === 0) {\n return { ...el, width: maxFluidNameLength * 9 + 9 }\n }\n return el;\n }));\n setBranches(data.branchesList);\n setFluids(data.fluidsList);\n }).catch((error) => {\n console.log(error);\n })\n setDataReady(true);\n });\n }\n\n useEffect(() => {\n fetchOrgDetails();\n }, [orgInfo]);\n\n function renderBranchLink(params) {\n if (params.row.branchName === undefined) {\n return;\n }\n\n return (\n \n {params.value}\n \n );\n }\n\n function UpdateVolumeUnits() {\n var fluidsList = fluids;\n const vol_string = displayUnits.includes(\"US\") ? \"gal\" : \"L\";\n if (fluids !== undefined) {\n for (var i = 0; i < fluidsList.length; i++) {\n if (displayUnits.includes(\"Metric\")) {\n if (fluidsList[i].VolumeUnit === 'gallons') {\n fluidsList[i].volume_sum = Math.round((fluids[i].volume_sum) * 3.78541);\n fluidsList[i].ullage_sum = Math.round((fluids[i].ullage_sum) * 3.78541);\n fluidsList[i].VolumeUnit = 'liters'\n }\n }\n else {\n if (fluidsList[i].VolumeUnit === 'liters') {\n fluidsList[i].volume_sum = Math.round((fluids[i].volume_sum) / 3.78541);\n fluidsList[i].ullage_sum = Math.round((fluids[i].ullage_sum) / 3.78541);\n fluidsList[i].VolumeUnit = 'gallons'\n }\n }\n fluidsList[i].volume_sum_disp = \"{vol} {unit}\".replace(\"{vol}\", fluidsList[i].volume_sum.toFixed(0)).replace(\"{unit}\",vol_string);\n fluidsList[i].ullage_sum_disp = \"{vol} {unit}\".replace(\"{vol}\", fluidsList[i].ullage_sum.toFixed(0)).replace(\"{unit}\",vol_string);\n }\n setFluids(fluidsList);\n }\n }\n\n useEffect(() => {\n UpdateVolumeUnits();\n }, [fluids, displayUnits]);\n\n const handleSetDisplayUnits = (newSetting) => {\n var cookies = new Cookies();\n cookies.set('DisplayUnits', newSetting, { path: \"/\", maxAge: 1000000 });\n setDisplayUnits(newSetting);\n };\n\n const handleInviteOpen = () => {\n setInviteOpen(true);\n };\n\n const handleInviteClose = () => {\n setInviteOpen(false);\n };\n\n function isValidEnteredEmail(value) {\n if (isValidEmail(value))\n return true;\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return false;\n }\n\n // Functions to handle invitations\n const handleInvite = async (permissions) => {\n var recip = recipient.current.value.trim().replace(/,{1,}$/, '');\n recip = recip.trim();\n var recipientArr = recip.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; ++index) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n // Get current authenticated user session\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n setInviteOpen(false);\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": orgInfo.orgId,\n \"Role\": permissions,\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/invite', requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert(t(\"invitationHasBeenSent\"));\n sent = true;\n }\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n const deleteAPIKey = async () => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/api-key', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n setApiKey(\"\")\n setIsApiKeyActive(false);\n })\n .catch((error) => {\n console.log(error);\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n const createAPIKey = async () => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/api-key', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n setApiKey(data.body.api_key)\n setIsApiKeyActive(true);\n })\n .catch((error) => {\n console.log(error);\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n const deactivateAPIKey = async () => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n 'Active': false\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/api-key', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n setIsApiKeyActive(false);\n })\n .catch((error) => {\n console.log(error);\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n const activateAPIKey = async () => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n 'Active': true\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/api-key', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n setIsApiKeyActive(true);\n })\n .catch((error) => {\n console.log(error);\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n if (!dataReady) {\n return (
{t(\"loadingData\")}
)\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n {orgInfo.orgName}\n \n \n {t(\"dashboard\")}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {apiKey}\n\n {apiKey == \"\" ?\n \n :\n \n \n {!isApiKeyActive ?\n \n :\n \n }\n \n }\n
\n
\n \n
\n
\n \n
\n
\n\n
\n \n \n \n \n \n \n \n
\n console.log('dsasfdafdsa')}\n />\n
\n
\n \n Invite\n \n \n {t(\"toInviteAUser\")}\n \n \n \n \n \n \n \n \n \n \n )\n}","import React, { useState, useRef } from 'react';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from \"@material-ui/core/Button\";\nimport {\n IconButton,\n Dialog,\n DialogActions,\n DialogTitle,\n DialogContent,\n DialogContentText,\n Menu,\n MenuItem,\n Toolbar,\n TextField,\n Typography,\n Tooltip\n} from \"@material-ui/core\";\nimport { ACCESS } from \"../../../data\";\nimport { PersonAdd } from '@material-ui/icons';\nimport ModalPrompt from \"./ModalPrompt\";\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../../../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n height: '38px',\n marginBottom: theme.spacing(2),\n },\n selectedLabel: {\n width: '100',\n fontSize: 20,\n color: theme.palette.primary.light,\n },\n selectedName: {\n width: '100',\n fontSize: 20,\n marginLeft: theme.spacing(2),\n\n },\n deleteButton: {\n marginLeft: theme.spacing(2),\n },\n Button: {\n margin: theme.spacing(1),\n },\n grow: {\n flexGrow: 1,\n }\n}));\n\nconst ItemDelete = ({ access, selected = {}, action, inviteUser, allowItemDelete, moveDestinations, handleMove }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [openDialog, setOpenDialog] = useState(false);\n const handleClose = () => setOpenDialog(false);\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const deleteObj = () => {\n setOpenDialog(true);\n };\n const handleAction = () => {\n if (selected.type === 'BRANCH' || selected.type === 'SITE' || selected.type === 'ORG') {\n action(selected);\n }\n setOpenDialog(false);\n };\n\n // Create state for the invites\n const [inviteOpen, setInviteOpen] = useState(false);\n const recipient = useRef(\"\");\n\n const handleInviteOpen = () => {\n setInviteOpen(true);\n };\n\n const handleInviteClose = () => {\n setInviteOpen(false);\n };\n\n // Functions to handle invitations\n const handleInvite = async (permissions) => {\n const l_recipient = recipient.current.value;\n inviteUser(selected, l_recipient, permissions);\n setInviteOpen(false);\n };\n\n //console.log(selected);\n const closeMoveMenu = () => {\n setAnchorEl(null);\n };\n const handleMoveMenu = (target) => {\n console.log(target);\n setAnchorEl(null);\n handleMove(target.id, selected);\n };\n\n return (\n
\n {(access === ACCESS.OWNER) &&\n \n \n {selected.type === 'ORG' ? t(\"organizationName\")+\": \" \n : selected.type === 'BRANCH' ? t('branchName')+\": \" \n : selected.type === 'SITE' ? t(\"siteName\") + ': ' \n : t(\"tankName\") + ': '}\n \n \n {selected.name}\n \n {(selected.type === 'BRANCH' || selected.type === 'SITE' || selected.type === 'ORG') && allowItemDelete && \n \n \n \n }\n\n {(selected.type === 'TANK') && }\n \n {moveDestinations.map((destination) => (\n handleMoveMenu(destination)}>\n {destination.name}\n \n ))}\n \n\n
\n {(selected.type === 'BRANCH' || selected.type === 'SITE' || selected.type === 'ORG') && \n \n \n \n }\n \n }\n {openDialog && }\n \n {t(\"invite\")}\n \n \n {t(\"toInviteAUser\")}\n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default ItemDelete;\n","import React, { Fragment, useState } from 'react';\nimport { SvgIcon } from '@material-ui/core';\nimport { TreeItem, TreeView } from '@material-ui/lab';\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ModalPrompt from './ModalPrompt';\nimport { ACCESS } from '../../../data';\nimport { useTranslation } from 'react-i18next';\n\nconst MinusSquare = props => (\n \n {/* tslint:disable-next-line: max-line-length */}\n \n \n);\n\nconst PlusSquare = props => (\n \n {/* tslint:disable-next-line: max-line-length */}\n \n \n);\n\nconst useStyles = makeStyles({\n root: {\n minHeight: 110,\n flexGrow: 1,\n maxWidth: 400,\n minWidth: 200,\n marginRight: 20\n },\n treeitem: {\n display: 'flex',\n justifyContent: 'space-between'\n }\n});\n\nexport default function OrganizationTree({ list, selectItem, action, access }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const [openDialog, setOpenDialog] = useState(false);\n const [delTankId, setDelTankId] = useState(null);\n const handleClose = () => setOpenDialog(false);\n const handleDeleteTank = () => {\n setOpenDialog(false);\n action(delTankId);\n };\n const deleteTank = (id) => {\n setOpenDialog(true);\n setDelTankId(id);\n };\n\n function RenderTree({ nodes }) {\n return (\n \n {Array.isArray(nodes)\n ? nodes.map((node) =>\n selectItem({ ...node })}\n className={node.type === 'TANK' ? classes.treeitem : ''}\n icon={node.type === 'TANK' && access === ACCESS.OWNER && }\n onIconClick={() => { node.type === 'TANK' && deleteTank(node.id) }}>\n {Array.isArray(node.children)\n ? \n : null}\n )\n : null}\n )\n };\n\n return (\n \n }\n defaultExpandIcon={}>\n \n \n {openDialog && }\n \n );\n};","import React, { useState } from 'react';\nimport { FormControl, Select, MenuItem, Tooltip } from \"@material-ui/core\";\nimport { useTranslation } from 'react-i18next';\n\nconst RolesList = ({ id, access, disabled, setUserRole }) => {\n const { t } = useTranslation();\n const [role, setRole] = useState(access);\n const handleUserAccessChange = (e) => {\n const newRole = e.target.value;\n if (newRole !== \"member\") {\n setRole(e.target.value);\n setUserRole(id, newRole);\n }\n else {\n alert(t(\"warningCannotSetAsMember\"));\n }\n };\n\n return (\n
\n \n \n \n {t(\"member\")}\n {t(\"editor\")}\n {t(\"viewer\")}\n \n \n \n
\n );\n};\n\nexport default RolesList;\n","import React, { Fragment, useEffect, useState } from \"react\";\nimport TableContainer from \"@material-ui/core/TableContainer\";\nimport Table from \"@material-ui/core/Table\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport { Tooltip } from \"@material-ui/core/\";\nimport Paper from \"@material-ui/core/Paper\";\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport IconButton from \"@material-ui/core/IconButton\";\nimport withStyles from \"@material-ui/core/styles/withStyles\";\nimport RolesList from \"./RolesList\";\nimport { Typography } from \"@material-ui/core\";\nimport ModalPrompt from \"./ModalPrompt\";\nimport { ACCESS } from \"../../../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst StyledTableCell = withStyles((theme) => ({\n head: {\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.common.white,\n },\n body: {\n fontSize: 14,\n },\n}))(TableCell);\n\nconst StyledTableRow = withStyles((theme) => ({\n root: {\n '&:nth-of-type(odd)': {\n backgroundColor: theme.palette.action.hover,\n },\n },\n}))(TableRow);\n\nconst useStyles = makeStyles({\n root: {\n width: '100%'\n },\n modal: {\n width: '400px'\n }\n});\n\nconst UserTable = ({ users, access, removeUser, setUserRole, currentUser }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const [openDialog, setOpenDialog] = useState(false);\n const [delUserId, setDelUserId] = useState(null);\n const [userList, setUserList] = useState([]);\n\n useEffect(() => {\n setUserList(users);\n }, [users]);\n const handleClose = () => setOpenDialog(false);\n const handleDeleteUser = () => {\n setOpenDialog(false);\n removeUser(delUserId);\n setUserList(userList.filter(user => user.id !== delUserId));\n };\n function handleOpen(id) {\n setOpenDialog(true);\n setDelUserId(id);\n }\n\n return (\n \n {userList && userList.length ? \n \n \n \n {t(\"fullName\")}\n {t(\"userEmail\")}\n {t(\"access\")}\n {t(\"delete\")}\n \n \n \n {userList.map((row) => (\n \n \n {row.name}\n \n \n {row.email}\n \n \n \n \n \n \n handleOpen(row.id)}>\n \n \n \n ))}\n \n
\n
: {t(\"selectBranchOrSite\")}}\n {openDialog && }\n
\n );\n};\n\nexport default UserTable;\n","import React, { useState } from 'react';\nimport {\n Link as RouterLink,\n useHistory,\n} from 'react-router-dom';\nimport {\n Breadcrumbs,\n Divider,\n Grid,\n IconButton,\n Link,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport ItemDelete from './Components/ItemDelete';\nimport OrganizationTree from './Components/OrganizationTree';\nimport UserTable from './Components/UserTable';\nimport { Auth } from 'aws-amplify';\nimport { ACCESS, host } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport BranchesNavigationButton from '../Components/BranchNavigationButton';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n grow: {\n flexGrow: 1,\n },\n dividerSpacing: { marginBottom: theme.spacing(2) },\n}));\n\nexport default function OrgManage({ orgInfo, fetchOrgInformation }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const history = useHistory();\n const [selected, setSelected] = useState({});\n const [orgTree, setOrgTree] = useState([]);\n const [branches, setBranches] = useState([]);\n const [allowItemDelete, setAllowItemDelete] = useState(false);\n const [currentUser, setCurrentUser] = useState(\"\");\n const [moveDestinations, setMoveDestinations] = useState([]);\n \n React.useEffect(() => {\n fetchBranchData();\n }, [orgInfo]);\n\n React.useEffect(() => {\n var allowDelete = false;\n var lMoveDestinations = [];\n var parentId = 0;\n //console.log(orgTree);\n if (selected.type !== undefined) {\n if (selected.type === \"ORG\") {\n allowDelete = (orgTree.length == 1 ? true : false);\n }\n else if (selected.type === \"BRANCH\") {\n for (var i = 1; i < orgTree.length; i++) {\n if (orgTree[i].id === selected.id) {\n allowDelete = (orgTree[i].children.length == 0 ? true : false);\n break;\n }\n }\n }\n else if (selected.type === \"SITE\") {\n for (var i = 1; i < orgTree.length; i++) {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n if (orgTree[i].children[k].id === selected.id) {\n allowDelete = (orgTree[i].children[k].children.length == 0 ? true : false);\n parentId = orgTree[i].id;\n }\n }\n if(orgTree[i].id !== parentId){\n lMoveDestinations.push({id: orgTree[i].id, name: orgTree[i].name});\n }\n }\n }\n else if (selected.type === \"TANK\") {\n for (var i = 1; i < orgTree.length; i++) {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n for (var j = 0; j < orgTree[i].children[k].children.length; j++){\n if (orgTree[i].children[k].children[j].id === selected.id) {\n parentId = orgTree[i].children[k].id;\n }\n }\n if(orgTree[i].children[k].id !== parentId){\n lMoveDestinations.push({id: orgTree[i].children[k].id, name: orgTree[i].name + \" / \" + orgTree[i].children[k].name});\n }\n }\n }\n }\n }\n //console.log(lMoveDestinations);\n setMoveDestinations(lMoveDestinations);\n setAllowItemDelete(allowDelete);\n }, [selected])\n\n function fetchBranchData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n setCurrentUser(data.username);\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches', requestOptions)\n .then(results => results.json())\n .then(data => {\n // If no branch exists, send the user to the branch creation page.\n setBranches(\n data.data.branchesList\n );\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n\n React.useEffect(() => {\n if (selected.id !== undefined) {\n if (selected.id === 'root') {\n setSelected(orgTree[0]);\n }\n else {\n for (var i = 1; i < orgTree.length; i++) {\n if (selected.type === \"SITE\") {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n if (selected.id === orgTree[i].children[k].id) {\n setSelected(orgTree[i].children[k]);\n break;\n }\n }\n }\n else {\n if (selected.id === orgTree[i].id) {\n setSelected(orgTree[i]);\n break;\n }\n }\n }\n }\n }\n else if (orgTree[0] !== undefined) {\n setSelected(orgTree[0]);\n }\n }, [orgTree]);\n\n React.useEffect(() => {\n fetchOrgTree();\n }, []);\n\n function fetchOrgTree() {\n var i, j;\n var tempArray;\n var newArray = [];\n Auth.currentAuthenticatedUser()\n .then(data => {\n const sessionToken = data.signInUserSession.idToken.jwtToken;\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/manage', requestOptions)\n .then(results => results.json())\n .then(data => {\n tempArray = data;\n if(tempArray[0].users){\n tempArray[0].users.sort((a,b) => (a.name > b.name) ? 1 : -1);\n }\n newArray.push(tempArray[0]); //Org goes first\n tempArray.splice(0,1);\n tempArray.sort((a,b) => (a.name > b.name) ? 1 : -1);\n for (i=0; i < tempArray.length; i++ ){\n if (tempArray[i].children){\n tempArray[i].children.sort((a, b) => (a.name > b.name) ? 1 : -1);\n }\n if (tempArray[i].users){\n tempArray[i].users.sort((a,b) => (a.name > b.name) ? 1 : -1);\n }\n for (j=0; j < tempArray[i].children.length; j++){\n tempArray[i].children[j].users.sort((a,b) => (a.name > b.name) ? 1 : -1);\n if (tempArray[i].children[j].children){\n //tempArray[i].chilrden[j].children.sort((a,b) => (a.name > b.name) ? 1 : -1);\n }\n }\n newArray.push(tempArray[i]);\n }\n console.log(tempArray);\n //console.log(newArray);\n //setOrgTree(data);\n setOrgTree(newArray);\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n function removeUser(permission_id) {\n console.log(\"Delete Role\");\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"Id\": permission_id,\n }\n );\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n fetch(host + '/orgs/' + orgInfo.orgId + '/role/', requestOptions)\n .then(results => results.json())\n .then(data => {\n //console.log(data);\n if (data.error !== \"OK\") {\n alert(data.error);\n }\n fetchOrgTree();\n }).catch((error) => {\n console.log(error);\n });\n }).catch((error) => {\n console.log(error);\n });\n }\n\n function isValidEnteredEmail(value) {\n if (isValidEmail(value))\n return (true);\n\n alert(\"You have entered an invalid email address!\");\n return (false);\n };\n\n async function inviteUser(selected, recipient, permissions) {\n var selectedId = selected.id === 'root' ? orgInfo.orgId : selected.id;\n var type = selected.type;\n\n recipient = recipient.trim();\n recipient = recipient.trim().replace(/,{1,}$/, '');\n var recipientArr = recipient.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; index++) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n // Get current authenticated user session\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": selectedId,\n \"Role\": permissions, //Editor, Viewer, or Member\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n let url = host;\n var l_branchId = 0;\n\n if (selected.type === \"ORG\") {\n url = host + '/orgs/' + selectedId + '/invite';\n }\n else if (selected.type === \"BRANCH\") {\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + selectedId + '/invite';\n }\n else if (selected.type === \"SITE\") {\n for (var i = 1; i < orgTree.length; i++) {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n if (orgTree[i].children[k].id === selectedId) {\n l_branchId = orgTree[i].id;\n break;\n }\n }\n if (l_branchId > 0) {\n break;\n }\n }\n\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + l_branchId + '/sites/' + selectedId + '/invite';\n }\n\n fetch(url, requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert('Invitation has been sent!');\n sent = true;\n }\n fetchOrgTree();\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n }\n\n function setUserRole(user_id, newRole) {\n //console.log(user_id);\n //console.log(newRole);\n //console.log(selected);\n var permission_id = 0;\n if (newRole !== undefined) {\n for (var i = 0; i < selected.users.length; i++) {\n if (selected.users[i].id === user_id) {\n if (selected.users[i].access !== newRole) {\n //console.log(\"Change Role\");\n //console.log(selected.users[i]);\n permission_id = selected.users[i].id;\n }\n break;\n }\n }\n }\n\n if (permission_id > 0) {\n console.log(\"Change Role\");\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"Id\": permission_id,\n \"Role\": newRole,\n }\n );\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/role/', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error !== \"OK\") {\n alert(data.error);\n }\n fetchOrgTree();\n }).catch((error) => {\n console.log(error);\n });\n }).catch((error) => {\n console.log(error);\n });\n }\n }\n\n const deleteModule = async deleted => {\n //setOrgTree(removeFromTree(orgTree, deleted.id, deleted.type));\n setSelected({});\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n\n let branchId = 1;\n\n switch (deleted.type) {\n case 'ORG':\n fetch(host + '/orgs/' + orgInfo.orgId, requestOptions)\n .then(response => response.json())\n .then(data => {\n console.log(data);\n if (data.error === \"OK\") {\n setOrgTree(removeFromTree(orgTree, deleted.id, deleted.type));\n }\n else {\n if (data.error.includes(\"billing\")) {\n alert(t(\"orgDeleteHasBilling\"));\n }\n else {\n alert(data.error);\n }\n }\n });\n break;\n case 'BRANCH':\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + deleted.id, requestOptions)\n .then(response => {\n // console.log(response);\n setOrgTree(removeFromTree(orgTree, deleted.id, deleted.type));\n });\n break;\n case 'SITE':\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchId + '/sites/' + deleted.id, requestOptions)\n .then(response => {\n // console.log(response);\n setOrgTree(removeFromTree(orgTree, deleted.id, deleted.type));\n });\n break;\n };\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n const deleteTank = async deleted => {\n setOrgTree(removeFromTree(orgTree, deleted, 'TANK'));\n\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n\n let branchId = 1;\n let siteId = 1;\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchId + '/sites/' + siteId + '/tanks/' + deleted, requestOptions)\n .then(response => {\n //console.log(response);\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n\n const removeFromTree = (tree, childIdToRemove, type) => {\n console.log(type);\n if (type === 'ORG') {\n //let url = '/';\n //console.log(orgInfo);\n const orgTarget = \"default\";\n fetchOrgInformation(orgTarget);\n //history.push(url);\n return [];\n } else if (type === 'BRANCH') {\n tree.splice(tree.findIndex(item => item.id === childIdToRemove), 1);\n } else if (type === 'SITE') {\n for (var i = 0; i < tree.length; i++) {\n let item = tree[i];\n if (item.type !== 'ORG') {\n for (var ii = 0; ii < item.children.length; ii++) {\n let child = item.children[ii];\n if (child.id === childIdToRemove) {\n item.children.splice(item.children.findIndex(entry => entry.id === childIdToRemove), 1);\n }\n }\n }\n }\n } else {\n // Remove tank from orgTree\n for (var i = 0; i < tree.length; i++) {\n let item = tree[i];\n\n if (item.type !== 'ORG') {\n for (var ii = 0; ii < item.children.length; ii++) {\n let child = item.children[ii];\n\n for (var iii = 0; iii < child.children.length; iii++) {\n let tank = child.children[iii];\n\n if (tank.id === childIdToRemove) {\n child.children.splice(child.children.findIndex(entry => entry.id === childIdToRemove), 1);\n }\n }\n }\n }\n }\n }\n\n return tree;\n };\n\n function handleMove(parent_id, item) {\n const lSelected_id = item.id;\n const lSelected_type = item.type;\n console.log(parent_id);\n console.log(item); // Selected\n \n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"newParentId\": parent_id,\n }\n );\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n let url = host;\n let l_branchId = 0;\n let l_siteId = 0;\n\n if (lSelected_type === \"ORG\") {\n url = host + '/orgs/' + lSelected_id + '/move';\n }\n else if (lSelected_type === \"BRANCH\") {\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + lSelected_id + '/move';\n }\n else if (lSelected_type === \"SITE\") {\n for (var i = 1; i < orgTree.length; i++) {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n if (orgTree[i].children[k].id === lSelected_id) {\n l_branchId = orgTree[i].id;\n break;\n }\n }\n if (l_branchId > 0) {\n break;\n }\n }\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + l_branchId + '/sites/' + lSelected_id + '/move';\n }\n else if (lSelected_type === \"TANK\") {\n for (var i = 1; i < orgTree.length; i++) {\n for (var k = 0; k < orgTree[i].children.length; k++) {\n for (var j=0; j< orgTree[i].children[k].children.length; j++){\n if (orgTree[i].children[k].children[j].id === lSelected_id) {\n l_branchId = orgTree[i].id;\n l_siteId = orgTree[i].children[k].id;\n break;\n }\n }\n if (l_siteId > 0){\n break;\n }\n }\n if (l_siteId > 0) {\n break;\n }\n }\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + l_branchId + '/sites/' + l_siteId + '/tanks/' + lSelected_id +'/move';\n }\n console.log(url);\n console.log(body);\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error !== \"OK\") {\n if (data.error.includes(\"Access Denied, no permissions to modify\"))\n {\n alert(t(\"accessDenied_move\"));\n }\n else if (data.error.includes(\"Tank name already exists\")){\n alert(t(\"nameDuplicate_move\"));\n }\n else if (data.error.includes(\"New parent not in Organization\")){\n alert(t(\"invalidDestination_move\"));\n }\n else{\n alert(data.error);\n }\n }\n fetchOrgTree();\n }).catch((error) => {\n console.log(error);\n });\n }).catch((error) => {\n console.log(error);\n });\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n {t(\"settings\")}\n \n \n {t(\"manageOrg\")}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {\n \n }\n \n \n \n \n );\n};","import { Link as RouterLink, useHistory } from 'react-router-dom';\nimport {\n Box,\n Divider,\n Grid,\n Link,\n IconButton,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n link: {\n marginLeft: theme.spacing(10),\n color: theme.palette.info.dark,\n },\n line: {\n marginTop: theme.spacing(2),\n },\n content: {\n padding: theme.spacing(2),\n }\n}));\n\nexport default function OrgNav({ orgInfo }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const history = useHistory();\n\n if (orgInfo.orgId === \"\") {\n return (\n \n \n \n \n {t(\"youAreNotCurrentlyConnected\")}\n \n \n \n \n \n {t(\"createOrganization\")}\n \n \n \n )\n }\n return (\n \n \n \n \n history.push(\"/\")}>\n \n \n \n \n Account Settings\n \n \n \n \n \n \n Details\n \n \n \n \n {t(\"manageOrg\")}\n \n \n \n \n {t(\"deviceBilling\")}\n \n \n \n \n {t(\"fluids\")}\n \n \n \n )\n}\n","import React, { useState } from 'react';\nimport IconButton from \"@material-ui/core/IconButton\";\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport TextField from \"@material-ui/core/TextField\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport GetAppIcon from '@material-ui/icons/GetApp';\nimport PublishIcon from '@material-ui/icons/Publish';\nimport {\n Paper,\n Table,\n TableHead,\n TableBody,\n TableCell,\n TableRow,\n Tooltip,\n Typography,\n} from '@material-ui/core'\nimport { CSVLink } from \"react-csv\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n '& .MuiTextField-root': {\n margin: theme.spacing(1),\n width: 200,\n marginTop: theme.spacing(3),\n overflowX: \"auto\"\n },\n },\n 'one-line-fields': {\n display: 'flex',\n alignItems: 'center'\n },\n rootpaper: {\n width: 600,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n table: {\n width: 600\n },\n}));\n\nconst StrappingTable = ({ tankName, table, change = () => { }, remove = () => { }, csvHeaders, replaceTable, csvFileName, csvReportData, viewMode = false }) => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [uploadResult, setUploadResult] = useState();\n const csvLink = React.useRef();\n\n const [fluidHeight, setFluidHeight] = useState('');\n const [fluidVolume, setFluidVolume] = useState('');\n const handleLevelVolumeChange = () => {\n if (!fluidHeight || !fluidVolume) {\n return;\n }\n change([fluidHeight, fluidVolume]);\n setFluidHeight('');\n setFluidVolume('');\n };\n const deleteRow = (index) => {\n table.splice(index, 1);\n remove(table);\n };\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for branch data...\");\n csvLink.current.link.click();\n };\n\n const onFileUpload = (event) => {\n // Create an object of formData \n let file = event.target.files[0];\n\n if (window.FileReader) {\n var reader = new FileReader();\n reader.onload = function (r) {\n setUploadResult(r.target.result);\n var result = r.target.result;\n\n result = result.replace(/['\"\\r]+/g, '');\n result = result.split(\"\\n\");\n var header = result[0].split(\",\");\n if (header[0] === csvHeaders[0].label && header[1] === csvHeaders[1].label) {\n if (result.length > 101) {\n alert(t(\"fileExceedsLimit\"));\n }\n else {\n var row = [];\n var rowObj = {};\n var newTable = [];\n\n for (var i = 1; i < result.length; i++) {\n row = result[i].split(\",\");\n if(!isNaN(parseInt(row[0])) && !isNaN(parseInt(row[1])))\n {\n rowObj[csvHeaders[0].key] = parseInt(row[0]);\n rowObj[csvHeaders[1].key] = parseInt(row[1]);\n console.log(rowObj);\n newTable.push(JSON.parse(JSON.stringify(rowObj)));\n }\n }\n // Ensure the first entry is 0,0 point\n if ((newTable !== undefined || newTable.length !== 0)) {\n if (newTable[0].height !== 0 || newTable[0].volume !== 0) {\n newTable.unshift({ height: 0, volume: 0 });\n }\n }\n replaceTable(newTable);\n }\n }\n else {\n alert(t(\"fileFormatIsIncorrect\"));\n console.log(header);\n }\n }\n\n reader.readAsText(file);\n }\n else {\n alert(t(\"sorryYourBrowserDoesntSupport\"));\n }\n };\n\n return (\n
\n\n \n\n
\n {viewMode && {t(\"strappingTable\")}}\n {!viewMode && setFluidHeight(e.target.value)} />}\n\n {!viewMode && setFluidVolume(e.target.value)}\n />}\n\n {!viewMode && \n \n \n \n }\n \n downloadCSVReport()}>\n \n \n \n\n onFileUpload(e)} />\n\n \n
\n\n {(table.length > 0) && \n \n \n \n {t(\"height\")}\n {t(\"volume\")}\n {!viewMode && }\n \n \n \n {table.map((item, index) => {\n return (\n \n {item.height}\n {item.volume}\n {!viewMode && \n deleteRow(index)}>\n \n \n }\n \n );\n })}\n \n
\n
}\n
\n );\n};\n\nexport default StrappingTable;\n","export default __webpack_public_path__ + \"static/media/HorizontalTank_ti40042.35823649.png\";","export default __webpack_public_path__ + \"static/media/ObroundTank_ti40043.ad4192bd.png\";","export default __webpack_public_path__ + \"static/media/VerticalTank_ti40781.fb442b51.png\";","export function calculateMaxCapacity (dUnits,vUnits,Height, Width, Diameter, Length, Shape)\n{\n var capacity;\n var lHeight, lWidth, lDiameter, lLength;\n const num_pi = 3.14159265359\n \n if (Shape === \"horizontal\"){\n if (dUnits === \"inches\"){\n //Convert to cm\n lLength = parseFloat(Length) * 2.54;\n lDiameter = parseFloat(Diameter) * 2.54;\n }\n else if (dUnits ===\"feet\"){\n //Convert to cm\n lLength = parseFloat(Length) * 2.54 * 12.0;\n lDiameter = parseFloat(Diameter) * 2.54 * 12.0;\n }\n else{\n lLength = parseFloat(Length);\n lDiameter = parseFloat(Diameter);\n }\n capacity = num_pi * ( (lDiameter/2.0) **2) * lLength / 1000;\n }\n else if (Shape === \"obround\"){\n if (dUnits === \"inches\"){\n //Convert to cm\n lLength = parseFloat(Length) * 2.54;\n lWidth = parseFloat(Width) * 2.54;\n lHeight = parseFloat(Height) * 2.54;\n }\n else if (dUnits ===\"feet\"){\n //Convert to cm\n lLength = parseFloat(Length) * 2.54 * 12.0;\n lWidth = parseFloat(Width) * 2.54 * 12.0;\n lHeight = parseFloat(Height) * 2.54 * 12.0;\n }\n else{\n lLength = parseFloat(Length);\n lWidth = parseFloat(Width);\n lHeight = parseFloat(Height);\n }\n capacity = (num_pi * ( (lWidth/2.0) **2) + (lHeight-lWidth)*lWidth)*lLength / 1000; //L\n }\n else{\n capacity = 0.0;\n }\n if (vUnits === \"gallons\"){\n //convert to gallons from L\n capacity = capacity * 0.264172;\n }\n return capacity.toFixed(1)\n}","import React, { Fragment, useState, useRef } from 'react';\nimport {\n Grid,\n FormControl,\n MenuItem,\n TextField,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles'\nimport StrappingTable from '../../../TlmPage/TlmTank/Components/StrappingTable';\nimport HorizontalTankImg from '../../../TlmPage/TlmTank/Components/Assets/HorizontalTank_ti40042.png'\nimport ObroundTankImg from '../../../TlmPage/TlmTank/Components/Assets/ObroundTank_ti40043.png';\nimport VerticalTankImg from '../../../TlmPage/TlmTank/Components/Assets/VerticalTank_ti40781.png';\nimport { calculateMaxCapacity } from '../../../helpers/calculateMaxCapacity';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n grow: {\n flexGrow: 1,\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 300,\n\n marginBottom: 10\n },\n formControlTags: {\n margin: theme.spacing(1),\n minWidth: 600,\n\n marginBottom: 10\n },\n infoControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n marginBottom: 0\n },\n cols: {\n paddingRight: 15\n },\n clickButtons: {\n marginLeft: theme.spacing(2),\n },\n inputButton: {\n display: 'flex',\n flexWrap: 'nowrap',\n alignItems: 'center',\n marginTop: 10\n },\n tankInfo: {\n justify: \"flex-start\",\n alignItems: \"center\",\n },\n tankInfoForm: {\n minWidth: 400,\n },\n TankImg: {\n height: '300px',\n },\n}));\n\nconst TankTemplateForm = ({ template = {}, setTemplateData = () => { }, setCalculatedMaxCapacity = () => { }, viewMode = false }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const tankShape = [\n { key: 'vertical', label: t(\"verticalCylinderRect\") },\n { key: 'horizontal', label: t(\"horizontalCynlinder\") },\n { key: 'obround', label: t(\"obround\") },\n { key: 'table', label: t(\"strappingTable\") },\n { key: 'pulseHUB', label: t(\"existingPulseProTank\") }\n ];\n const dimensionunits = [{ key: 'inches', label: t(\"inches\") },\n { key: 'feet', label: t(\"feet\") },\n { key: 'centimeters', label: t(\"centimeters\") }];\n const volumeunits = [{ key: 'liters', label: t(\"liters\") },\n { key: 'gallons', label: t(\"gallons\") }];\n const [dimensionUnit, setDimensionUnits] = useState(template.DimensionUnit || 'inches');\n const [volumeUnit, setVolumeUnits] = useState(template.VolumeUnit || 'gallons');\n const [selectedTankShape, setTankShape] = useState(template.TankShape || 'vertical');\n const [levelVolumeTable, setLevelVolumeTable] = useState(template.VolumeTable || []);\n const [templateName, setTemplateName] = useState(template.name);\n const rtemplateName = useRef(\"\");\n const [tankHeight, setTankHeight] = useState(template.TankHeight || '');\n const rtankHeight = useRef(\"\");\n const [tankDiameter, setTankDiameter] = useState(template.TankDiameter || '');\n const rtankDiameter = useRef(\"\");\n const [tankLength, setTankLength] = useState(template.TankLength || '');\n const rtankLength = useRef(\"\");\n const [tankWidth, setTankWidth] = useState(template.TankWidth || '');\n const rtankWidth = useRef(\"\");\n const [tankCapacity, setTankCapacity] = useState(template.TankCapacity || '');\n const rtankCapacity = useRef(\"\");\n const [fillCapacity, setFillCapacity] = useState(template.FillCapacity || '');\n const rfillCapacity = useRef(\"\");\n const [showTankImage, setShowTankImage] = useState('false');\n const [tankImage, setTankImage] = useState();\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [csvReportData, setCSVReportData] = useState([]);\n const csvHeaders = [\n { label: t(\"fluidHeight\"), key: 'height' },\n { label: t(\"volume\"), key: 'volume' },\n ];\n\n var calculatedMaxCapacity = calculateMaxCapacity(dimensionUnit, volumeUnit, tankHeight, tankWidth, tankDiameter, tankLength, selectedTankShape);\n\n React.useEffect(() => {\n //Update new Template\n var tTable = levelVolumeTable;\n\n if (tTable & (tTable !== undefined || tTable.length !== 0)) {\n if (tTable[0].height !== 0 || tTable[0].volume !== 0) {\n tTable.unshift({ height: 0, volume: 0 });\n }\n }\n\n var lTemplateData = {\n \"Name\": templateName,\n \"Type\": \"Tank\",\n \"Params\": [\n {\n \"DimensionUnit\": dimensionUnit,\n \"TankDiameter\": tankDiameter,\n \"TankLength\": tankLength,\n \"TankShape\": selectedTankShape,\n \"TankHeight\": tankHeight,\n \"TankWidth\": tankWidth,\n \"VolumeUnit\": volumeUnit,\n \"TankCapacity\": tankCapacity,\n \"FillCapacity\": fillCapacity,\n }\n ],\n \"StrappingTable\": tTable,\n };\n setTemplateData(lTemplateData);\n setCalculatedMaxCapacity(calculatedMaxCapacity);\n }, [templateName, dimensionUnit, volumeUnit, selectedTankShape, levelVolumeTable, tankHeight, tankLength, tankWidth, tankDiameter, fillCapacity, tankCapacity]);\n \n React.useEffect(() => {\n switch (selectedTankShape) {\n case \"vertical\":\n setTankImage(VerticalTankImg);\n setShowTankImage(true);\n break;\n case \"horizontal\":\n setTankImage(HorizontalTankImg);\n setShowTankImage(true);\n break;\n case \"obround\":\n setTankImage(ObroundTankImg);\n setShowTankImage(true);\n break;\n default:\n setShowTankImage(false);\n setTankImage(undefined);\n }\n }, [selectedTankShape]);\n\n const handleTableChange = (pair) => {\n if (levelVolumeTable.length < 100) {\n var data = levelVolumeTable;\n data.push({ height: parseInt(pair[0]), volume: parseInt(pair[1]) });\n data = data.sort((a, b) => a.height > b.height ? 1 : b.height > a.height ? -1 : 0);\n\n setLevelVolumeTable(data);\n }\n else {\n alert(t(\"strappingTableMustNotExceed\"));\n }\n };\n function replaceTable(newTable) {\n var data = newTable;\n data = data.sort((a, b) => a.height > b.height ? 1 : b.height > a.height ? -1 : 0);\n\n setLevelVolumeTable(data);\n };\n const handleTableRowDelete = (table) => {\n setLevelVolumeTable(() => {\n return [\n ...table\n ]\n });\n };\n\n React.useEffect(() => {\n createCSVData(levelVolumeTable);\n }, [levelVolumeTable]);\n\n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n\n setCSVFileName(fileNamePrefix + '_StrappingTable_' + dformat + '.csv');\n };\n\n function createCSVData(data_in) {\n var i;\n var k;\n var csvData = [];\n var tempRow = [];\n\n createCSVFileName(templateName);\n\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n\n csvData.push(tempRow);\n\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n } else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n\n csvData.push(tempRow);\n }\n }\n\n setCSVReportData(csvData);\n };\n\n return (\n \n \n \n \n \n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setTemplateName(e.target.value);\n }\n }}\n />\n \n \n\n \n \n setTankShape(e.target.value)}>\n {tankShape.map(shape => \n {shape.label}\n )}\n \n \n \n\n \n {\n setDimensionUnits(e.target.value)}>\n {dimensionunits.map(item => ({item.label}))}\n \n }\n \n\n {(selectedTankShape === 'vertical' || selectedTankShape === 'obround') && \n \n setTankHeight(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal') && \n \n setTankDiameter(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal' || selectedTankShape === 'obround') && \n \n setTankLength(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {selectedTankShape === 'obround' && \n \n setTankWidth(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {\n \n setVolumeUnits(e.target.value)}>\n {volumeunits.map(item => ({item.label}))}\n \n \n }\n\n {selectedTankShape === 'vertical' && \n \n setTankCapacity(e.target.value)}\n helperText={volumeUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal' || selectedTankShape === 'obround') && \n \n

{t(\"maximumCapacity\") + ': '}{calculatedMaxCapacity} {volumeUnit === 'gallons' ? t(\"gal\") : t(\"l\")}

\n
\n
\n }\n\n {(selectedTankShape !== 'pulseHUB') && \n \n setFillCapacity(e.target.value)}\n helperText={volumeUnit === 'gallons' ? t(\"gallons_caps\") : t(\"liters_caps\")} />\n \n \n }\n
\n
\n \n {showTankImage && tankImage !== undefined && tankIamge}\n {showTankImage && selectedTankShape === \"vertical\" && {t(\"verticalCylinderOrRectangular\")}}\n {showTankImage && {t(\"fillCapacityDefines\")}}\n \n \n \n
\n\n {(selectedTankShape === 'table') && \n \n \n }\n
\n );\n};\n\nexport default TankTemplateForm;","import { useEffect, useState, Fragment } from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogTitle,\n DialogContent,\n Grid,\n IconButton,\n Toolbar,\n Typography,\n useMediaQuery,\n} from '@material-ui/core';\nimport { DataGrid } from '@material-ui/data-grid';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { Edit } from '@material-ui/icons/';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { host } from \"../../../data\";\nimport TankTemplateForm from './TankTemplateForm';\nimport { Auth } from 'aws-amplify';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n dialogForm: {\n fullWidth: 'true',\n maxWidth: 'lg'\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n dropdown: {\n display: 'flex',\n marginLeft: 'auto',\n },\n templatetable: {\n width: '100%',\n height: '50vh',\n zIndex: 0,\n border: 0,\n },\n table: {\n width: '100%',\n height: '72vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n}));\n\nconst TankTemplatesManagement = ({ orgInfo, templates, setTemplates }) => {\n const { t } = useTranslation();\n const classes = useStyles();\n const matches = useMediaQuery('(max-width:600px)');\n const [openAddTemplate, setOpenAddTemplate] = useState(false);\n const [deleteTemplateTarget, setDeleteTemplateTarget] = useState({});\n const [openDeleteTemplate, setOpenDeleteTemplate] = useState(false);\n const [editTemplateTarget, setEditTemplateTarget] = useState({});\n const [editTemplateTargetId, setEditTemplateTargetId] = useState(0);\n const [openTemplateEdit, setOpenTemplateEdit] = useState(false);\n const [newTemplate, setNewTemplate] = useState({});\n const [calculatedMaxCapacity, setCalculatedMaxCapacity] = useState();\n const [templateCol, setTemplateCol] = useState([]);\n const templateColumns = [\n {\n headerName: t('templateName'),\n field: 'name',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t('edit'),\n field: 'Edit',\n renderCell: renderTemplateEdit,\n flex: 1,\n sortable: false,\n disableClickEventBubbling: true\n },\n {\n headerName: t('delete'),\n field: 'Delete',\n renderCell: renderDeleteTemplate,\n flex: 1,\n sortable: false,\n disableClickEventBubbling: true\n },\n ];\n\n useEffect(() => {\n setTemplateCol(templateColumns);\n }, []);\n\n useEffect(() => {\n if (matches) {\n setTemplateCol(prevState => prevState.map((el, index) => {\n const { flex, ...rest } = el;\n if (index === 0) {\n return { ...rest, width: 140 }\n }\n return { ...rest, width: 120 };\n }));\n }\n }, [matches]);\n\n function validateData(input) {\n console.log(input);\n var ret = 1;\n var tankName = input.Name;\n var selectedTankShape = input.Params[0].TankShape;\n var tankHeight = input.Params[0].TankHeight;\n var tankCapacity = input.Params[0].TankCapacity;\n var fillCapacity = input.Params[0].FillCapacity;\n var tankDiameter = input.Params[0].TankDiameter;\n var tankLength = input.Params[0].TankLength;\n var tankWidth = input.Params[0].TankWidth;\n var levelVolumeTable = input.StrappingTable;\n\n if (!tankName) {\n alert(t(\"templateNameIncomplete\"));\n ret = 0;\n }\n\n if (\"vertical\" === selectedTankShape) {\n if (!tankHeight) {\n alert(t(\"tankHeightInvalid\"));\n ret = 0;\n } else if (parseFloat(tankHeight) < 1) {\n alert(t(\"tankHeightMustBeGreaterThan0\"))\n ret = 0;\n }\n\n if (!tankCapacity) {\n alert(t(\"tankCapacityInvalid\"));\n ret = 0;\n }\n\n if (parseFloat(fillCapacity) > parseFloat(tankCapacity)) {\n alert(t(\"fillCapcityExceeds\"));\n ret = 0;\n }\n\n if (parseFloat(fillCapacity) < 1) {\n alert(t(\"fillCapacityMustBeGreaterThan0\"));\n ret = 0;\n }\n }\n\n if (\"horizontal\" === selectedTankShape) {\n if (!tankDiameter) {\n alert(t(\"tankDiameterInvalid\"));\n ret = 0;\n } else if (parseFloat(tankDiameter) < 1) {\n alert(t(\"tankDiameterMustBeGreater\"));\n ret = 0;\n }\n\n if (!tankLength) {\n alert(t(\"tankLengthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankLength) < 1) {\n alert(t(\"tankLengthMustBeGreater\"));\n ret = 0;\n }\n\n if (parseFloat(fillCapacity) > calculatedMaxCapacity) {\n alert(t(\"fillCapcityExceeds\"));\n ret = 0;\n }\n\n if (parseFloat(fillCapacity) < 1) {\n alert(t(\"fillCapacityMustBeGreater\"));\n ret = 0;\n }\n }\n\n if (\"obround\" === selectedTankShape) {\n if (!tankHeight) {\n alert(t(\"tankHeightInvalid\"));\n ret = 0;\n } else if (parseFloat(tankHeight) < 1) {\n alert(t(\"tankHeightMustBeGreaterThan0\"));\n ret = 0;\n }\n\n if (!tankLength) {\n alert(t(\"tankLengthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankLength) < 1) {\n alert(t(\"tankLengthMustBeGreaterThan0\"));\n ret = 0;\n }\n\n if (!tankWidth) {\n alert(t(\"tankWidthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankWidth) < 1) {\n alert(t(\"tankWidthMustBeGreater\"));\n ret = 0;\n }\n\n if (parseFloat(fillCapacity) > calculatedMaxCapacity) {\n alert(t('fillCapcityExceeds'));\n ret = 0;\n }\n if (parseFloat(fillCapacity) < 1) {\n alert(t(\"tankWidthMustBeGreater\"));\n ret = 0;\n }\n }\n\n if (\"table\" === selectedTankShape) {\n if (levelVolumeTable.length === 0) {\n ret = 0;\n console.log(levelVolumeTable);\n alert(t(\"enterStrappingTable\"));\n } else {\n if (parseInt(fillCapacity) > levelVolumeTable[levelVolumeTable.length - 1].volume) {\n alert(t(\"fillCapacityExceedsTankCapacity\"));\n console.log(\"Fill Capacity exceeds tank Capacity (highest volume in table)\");\n }\n\n for (var i = 0; i < levelVolumeTable.length - 1; i++) {\n if (levelVolumeTable[i].volume > levelVolumeTable[i + 1].volume) {\n ret = 0;\n alert(t(\"tableVolumeValuesMustIncrease\"))\n break;\n }\n\n if (levelVolumeTable[i].volume < 0) {\n //First entry must be zero. So zero is valid.\n ret = 0;\n alert(t(\"tableVolumeValuesMustNotBeNegative\"));\n }\n }\n }\n }\n return ret;\n };\n\n const handleOpenDeleteTemplate = (target) => {\n setDeleteTemplateTarget(target);\n setOpenDeleteTemplate(true);\n };\n\n const handleCloseDeleteTemplate = () => {\n setOpenDeleteTemplate(false);\n };\n\n function renderDeleteTemplate(params) {\n var bdisable = false;\n return (\n handleOpenDeleteTemplate(params.row)}>\n \n \n );\n };\n\n const handleTemplateDelete = () => {\n var delete_id = deleteTemplateTarget.id;\n handleCloseDeleteTemplate(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify(\n {\n \"id\": delete_id\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates/' + delete_id, requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error === \"OK\") {\n setTemplates(data.templatesList);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n const handleOpenEditTemplate = (target) => {\n setOpenTemplateEdit(true);\n setEditTemplateTarget(target);\n setEditTemplateTargetId(target.id);\n };\n\n const handleCloseTemplateEdit = () => {\n setOpenTemplateEdit(false);\n };\n\n function renderTemplateEdit(params) {\n return (\n handleOpenEditTemplate(params.row)}>\n \n \n );\n };\n\n const handleTemplateEdit = () => {\n var lnewTemplate = editTemplateTarget;\n\n if (validateData(lnewTemplate)) {\n setOpenTemplateEdit(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n lnewTemplate\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates/' + editTemplateTargetId, requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n if (data.error === \"OK\") {\n setTemplates(data.templatesList);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n };\n\n const handleOpenAddTemplate = () => {\n setOpenAddTemplate(true);\n setNewTemplate({});\n };\n\n const handleCloseAddTemplate = () => {\n setOpenAddTemplate(false);\n };\n\n const handleAddTemplate = () => {\n var lnewTemplate = newTemplate;\n if (validateData(lnewTemplate)) {\n setOpenAddTemplate(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify(\n lnewTemplate,\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setTemplates(data.templatesList);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n };\n\n return (\n \n \n \n \n {t(\"templates\")}\n \n
\n \n \n \n \n
\n \n
\n
\n\n \n {t(\"editTemplate\") + ' '}{editTemplateTarget.name}\n \n \n \n \n \n \n \n \n \n {t('deleteTemaplte') + ' '}{deleteTemplateTarget.name}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n \n \n {t(\"newTemplate\")}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TankTemplatesManagement;","import { Link as RouterLink } from 'react-router-dom';\nimport {\n Breadcrumbs,\n Grid,\n IconButton,\n Link,\n Toolbar,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { useEffect, useState, Fragment } from 'react';\nimport { Auth } from 'aws-amplify';\nimport TankTemplatesManagement from './Components/TankTemplatesManagement';\nimport { host } from \"../../data\";\nimport BranchesNavigationButton from \"../Components/BranchNavigationButton\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n table: {\n width: 1000\n },\n}));\n\nexport default function OrgTemplates({ orgInfo }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const [templates, setTemplates] = useState([]);\n const [branches, setBranches] = useState([]);\n\n useEffect(() => {\n fetchBranchData();\n }, [orgInfo]);\n\n function fetchBranchData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches', requestOptions)\n .then(results => results.json())\n .then(data => {\n // If no branch exists, send the user to the branch creation page.\n setBranches(\n data.data.branchesList\n );\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n\n function handleSetTemplates(data_in) {\n var lTemplates = data_in;\n setTemplates(lTemplates);\n }\n\n useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates/', requestOptions)\n .then(results => results.json())\n .then(data => {\n handleSetTemplates(data.templatesList);\n }).catch((error) => {\n console.log(error)\n })\n });\n }, [orgInfo]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n {t(\"settings\")}\n \n \n {t(\"templates\")}\n \n \n
\n \n \n \n \n \n \n \n \n \n )\n}","import { Link as RouterLink } from 'react-router-dom';\nimport {\n Divider,\n Grid,\n IconButton,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n }\n}));\n\nexport default function OrgNoAccess() {\n const { t } = useTranslation();\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n \n \n Account Settings\n \n \n \n \n \n \n 403 Forbidden\n \n \n \n \n You do not have access to this resource.\n If you require access, contact your administrator\n and request Org Editor permissions.\n \n \n \n )\n}\n","import React, { useRef, useState } from \"react\";\nimport { Link as RouterLink, useHistory } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport {\n Box,\n Button,\n Divider,\n FormGroup,\n Grid,\n IconButton,\n TextField,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport { host } from \"../../data\";\nimport Geocode from \"react-geocode\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { countries } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\n\nGeocode.setApiKey(\"AIzaSyDZxhyTnVftkwNDwT2dR8ygpsztsBBwrxs\"); // https://www.npmjs.com/package/react-geocode\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n textInput: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n clickButtons: {\n marginLeft: theme.spacing(0),\n }\n}));\n\nexport default function BranchCreate({ orgInfo, firstBranch }) {\n const { t } = useTranslation();\n const classes = useStyles();\n const history = useHistory();\n const branch_name = useRef(\"\");\n const [branchName, setBranchName] = useState(\"\");\n const branch_address_line_1 = useRef(\"\");\n const branch_contact = useRef(\"\");\n const branch_phone = useRef(\"\");\n const branch_email = useRef(\"\");\n const branch_city = useRef(\"\");\n const [country, setCountry] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n\n function isValidEnteredEmail(value) {\n if (value === \"\")\n return (true);\n\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n };\n\n function isValidPhoneNumber(value) {\n if (value === \"\")\n return (true);\n\n if ((/^\\d{7,}$/).test(value.replace(/[\\s()+\\-\\.]|ext/gi, ''))) {\n return (true);\n }\n\n alert(t(\"youHaveEnteredAnInvalidPhone\"));\n return (false);\n };\n\n const handleChangeCountry = (event) => {\n setCountry(event.target.value);\n };\n\n const handleChangeRegion = (event) => {\n setRegion(event.target.value);\n };\n\n function validateForm() {\n var ret = 1;\n if (branch_name.current.value === \"\") {\n alert(t(\"nameInvalid\"));\n ret = 0;\n }\n\n return ret;\n };\n\n const handleClick = async () => {\n if (isValidEnteredEmail(branch_email.current.value) && isValidPhoneNumber(branch_phone.current.value) && validateForm()) {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n try {\n // Get latitude & longitude from address\n var address = branch_address_line_1.current.value + ' ' + branch_city.current.value + ' ' + region + ' ' + country;\n if (branch_address_line_1.current.value !== \"\") {\n Geocode.fromAddress(address).then(\n (response) => {\n const { lat, lng } = response.results[0].geometry.location;\n\n var body = JSON.stringify(\n {\n \"Name\": branch_name.current.value,\n \"Address\": branch_address_line_1.current.value,\n \"Phone\": branch_phone.current.value,\n \"ContactName\": branch_contact.current.value,\n \"Email\": branch_email.current.value,\n \"Latitude\": lat,\n \"Longitude\": lng,\n \"Country\": country,\n \"City\": branch_city.current.value,\n \"State\": region,\n \"ParentId\": orgInfo.orgId,\n \"User\": user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n if (data.status === 200) {\n let url = '/orgs/' + orgInfo.orgName + '/branches/' + branch_name.current.value;\n history.push(url);\n }\n else {\n alert(data.body);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n },\n (error) => {\n console.log(error);\n }\n );\n } else {\n var body = JSON.stringify(\n {\n \"Name\": branch_name.current.value,\n \"Address\": \"\",\n \"Phone\": branch_phone.current.value,\n \"ContactName\": branch_contact.current.value,\n \"Email\": branch_email.current.value,\n \"Latitude\": 0,\n \"Longitude\": 0,\n \"Country\": country,\n \"City\": branch_city.current.value,\n \"State\": region,\n \"ParentId\": orgInfo.orgId,\n \"User\": user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n if (data.status === 200) {\n let url = '/orgs/' + orgInfo.orgName + '/branches/' + branch_name.current.value;\n history.push(url);\n }\n else {\n alert(data.body);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n }\n catch (err) {\n console.log(err);\n } finally {\n }\n });\n } catch (e) {\n console.log(e);\n }\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n {t(\"back\")}\n \n \n \n \n {firstBranch\n ? \n \n \n {t(\"beforeYouBegin\")}\n \n \n \n : null}\n \n
\n \n {t(\"createBranch\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setBranchName(e.target.value);\n }\n }}\n className={classes.textInput} />\n \n {t(\"location\")}\n \n \n \n \n {t(\"country\")}\n \n {countries.map((country) => (\n \n {t(country.translationKey)}\n \n ))}\n \n \n \n {t(\"stateProvinceRegion\")}\n \n {country\n ? countries\n .find(({ countryName }) => countryName === country)\n .regions.map((region) => (\n \n {t(region.translationKey)}\n \n )) : []}\n \n \n \n \n {t(\"branchContact\")}\n \n \n \n \n \n \n
\n
\n \n \n \n \n \n );\n}\n","import { Fragment } from 'react';\nimport { Switch, Route } from 'react-router-dom';\n\n// Graco dependencies\nimport OrgBilling from './OrgBilling/OrgBilling.jsx';\nimport OrgFluids from './OrgFluids/OrgFluids.jsx';\nimport OrgDetails from './OrgDetails/OrgDetails.jsx';\nimport OrgManage from './OrgManage/OrgManage.jsx';\nimport OrgNav from './OrgNav/OrgNav.jsx';\nimport OrgCreate from './OrgCreate/OrgCreate.jsx';\nimport OrgTemplates from './OrgTemplates/OrgTemplates';\nimport OrgNoAccess from './OrgNoAccess/OrgNoAccess.jsx';\nimport BranchCreate from './BranchCreate/BranchCreate.jsx';\nimport { useLocation } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\n// Page routing for org management specific pages\nconst PageRouter = (props) => {\n let data = useLocation();\n return (\n \n {data.state\n ?\n \n :\n \n }\n\n \n \n \n \n \n \n\n \n \n );\n}\n\n// Org page component checks for editor privileges and routes to the appropriate page\nexport default function OrgPage({ orgInfo, fetchOrgInformation }) {\n return (\n \n {orgInfo.isOrgEditor ? : }\n \n )\n}\n","import { useEffect, useState, Fragment } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Grid,\n IconButton,\n Link,\n Paper,\n TableContainer,\n Table,\n TableRow,\n Typography,\n TableHead,\n TableBody,\n TableCell,\n} from '@material-ui/core';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n dropdown: {\n display: 'flex',\n marginLeft: 'auto',\n },\n orgpaper: {\n width: 500,\n margin: theme.spacing(1),\n overflowX: \"auto\"\n },\n orgtable: {\n width: 500,\n height: '40vh',\n zIndex: 0,\n },\n reportpaper: {\n width: 800,\n margin: theme.spacing(1),\n overflowX: \"auto\"\n },\n reporttable: {\n width: 800,\n height: '40vh',\n zIndex: 0,\n },\n table: {\n width: '100%',\n height: '72vh',\n zIndex: 0,\n },\n link: {\n color: theme.palette.info.dark,\n },\n}));\n\n\nconst UserReportScheduleContent = ({ fetchOrgInformation }) => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [deleteOrgTarget, setDeleteOrgTarget] = useState(\"\");\n const [openDeleteOrg, setOpenDeleteOrg] = useState(false);\n const [deleteReportTarget, setDeleteReportTarget] = useState({});\n const [openDeleteReport, setOpenDeleteReport] = useState(false);\n const [orgList, setOrgList] = useState([]);\n const [scheduledReportList, setScheduledReportList] = useState([]);\n\n const orgListColumns = [\n {\n headerName: t(\"orgName\"),\n field: 'name',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"access1\"),\n field: 'isEditor',\n renderCell: renderAccess,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t(\"leaveQuestion\"),\n renderCell: renderDeleteOrg,\n sortable: false,\n disableClickEventBubbling: true\n },\n ];\n\n function renderOrgLink(params) {\n //to={baseurl.concat('/branches/').concat(params.row.branchName).concat('/sites/').concat(params.row.branchName).concat('/tanks/').concat(params.row.tankName)}>\n if (params.value === undefined) {\n return;\n }\n return (\n \n {params.value}\n \n );\n };\n\n function renderAccess(params) {\n return (\n {params.value ? t(\"editor\") : t(\"viewer\")} \n );\n };\n\n function handleReportLink(params) {\n let url = \"/\";\n url = params.module_type === \"Branch\" ? \"/orgs/\" + params.orgName + \"/branches/\" + params.branchName :\n \"/orgs/\" + params.orgName + \"/branches/\" + params.branchName + \"/sites/\" + params.siteName;\n fetchOrgInformation(params.orgName, true, url);\n };\n\n function renderReportLocation(params) {\n return (\n \n );\n };\n\n useEffect(() => {\n fetchPageData();\n }, []);\n\n function fetchPageData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n fetch(host + '/user/', requestOptions)\n .then(results => results.json())\n .then(data => {\n setScheduledReportList(data.scheduleReportList);\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n const handleOpenDeleteOrg = (target) => {\n setDeleteOrgTarget(target);\n setOpenDeleteOrg(true);\n };\n\n const handleCloseDeleteOrg = () => {\n setOpenDeleteOrg(false);\n };\n\n function renderDeleteOrg(params) {\n return (\n handleOpenDeleteOrg(params.row)}>\n \n \n );\n };\n\n const handleOpenDeleteReport = (target) => {\n setDeleteReportTarget(target);\n setOpenDeleteReport(true);\n };\n const handleCloseDeleteReport = () => {\n setOpenDeleteReport(false);\n };\n function renderDeleteReport(report) {\n return (\n handleOpenDeleteReport(report)}>\n \n \n );\n };\n const handleReportDelete = () => {\n var delete_id = deleteReportTarget.id;\n\n handleCloseDeleteReport(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"id\": delete_id\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n let url = \"/user/reports/\";\n\n fetch(host + url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n var lscheduledReportList = scheduledReportList;\n for (var i = 0; i < lscheduledReportList.length; i++) {\n if (lscheduledReportList[i].id === delete_id) { break; }\n }\n lscheduledReportList.splice(i, 1);\n\n setScheduledReportList(lscheduledReportList);\n setDeleteReportTarget({});\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n function createScheduleReportLine(report) {\n var infoText = \"\";\n var changeDay = 0;\n const reportFrequency = report.monthly ? t(\"monthly\") + \" \" : t(\"weekly\") + \" \";\n const reportType = report.module_type;\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var reportTime = (parseInt(report.recurr_time) - clientTimeZoneOffset);\n\n if (reportTime > 23) {\n reportTime = reportTime - 24;\n changeDay = 1;\n }\n\n if (reportTime < 0) {\n reportTime = reportTime + 24;\n changeDay = -1;\n }\n\n reportTime = reportTime.toString() + ':00';\n\n var reportDaysList = [];\n if (report.sunday) { changeDay === 1 ? reportDaysList.push(t(\"monday\")) : changeDay === -1 ? reportDaysList.push(t(\"saturday\")) : reportDaysList.push(t(\"sunday\")) };\n if (report.monday) { changeDay === 1 ? reportDaysList.push(t(\"tuesday\")) : changeDay === -1 ? reportDaysList.push(t(\"sunday\")) : reportDaysList.push(t(\"monday\")) };\n if (report.tuesday) { changeDay === 1 ? reportDaysList.push(t(\"wednesday\")) : changeDay === -1 ? reportDaysList.push(t(\"monday\")) : reportDaysList.push(t(\"tuesday\")) };\n if (report.wednesday) { changeDay === 1 ? reportDaysList.push(t(\"thursday\")) : changeDay === -1 ? reportDaysList.push(t(\"tuesday\")) : reportDaysList.push(t(\"wednesday\")) };\n if (report.thursday) { changeDay === 1 ? reportDaysList.push(t(\"friday\")) : changeDay === -1 ? reportDaysList.push(t(\"wednesday\")) : reportDaysList.push(t(\"thursday\")) };\n if (report.friday) { changeDay === 1 ? reportDaysList.push(t(\"saturday\")) : changeDay === -1 ? reportDaysList.push(t(\"thursday\")) : reportDaysList.push(t(\"friday\")) };\n if (report.saturday) { changeDay === 1 ? reportDaysList.push(t(\"sunday\")) : changeDay === -1 ? reportDaysList.push(t(\"friday\")) : reportDaysList.push(t(\"saturday\")) };\n \n var reportDays = reportDaysList.join(\", \");\n \n if (report.monthly) {\n if (report.monthly_day == \"FirstOfMonth\" || report.monthly_day == \"SecondOfMonth\" || report.monthly_day == \"LastOfMonth\") {\n reportDays = t(\"theFirstOfTheMonth\");\n } else {\n reportDays = t(\"the\") + \" \" + t(report.monthly_week.toLowerCase()) + \" \" + t(report.monthly_day.toLowerCase());\n }\n }\n\n infoText = reportFrequency + t(reportType.toLowerCase()).toLowerCase() + \" \" + t(\"reportScheduledFor\") + \" \" + reportTime + \" \" + t(\"on\") + \" \";\n\n return (\n \n \n {infoText}\n \n \n {reportDays}\n \n \n );\n\n };\n\n return (\n \n {scheduledReportList.length > 0 && \n {t(\"scheduledReports\")}\n \n \n \n \n {scheduledReportList.map((report) => (\n \n \n {renderReportLocation(report)}\n \n \n {createScheduleReportLine(report)}\n \n {renderDeleteReport(report)}\n \n ))}\n \n
\n
\n \n {t(\"deleteReport\")}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n \n
}\n {scheduledReportList.length == 0 && \n \n \n {t(\"welcomeYouCurrentlyHaveNo\")}\n \n \n \n \n {t(\"toConfigureAScheduledReport\")} {}.\n \n \n }\n
\n );\n};\n\nexport default UserReportScheduleContent;","import { useEffect, useState, Fragment } from 'react';\nimport {\n Button,\n Checkbox,\n Dialog,\n DialogActions,\n DialogTitle,\n DialogContent,\n Grid,\n IconButton,\n MenuItem,\n Select,\n TextField,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport { DataGrid } from '@material-ui/data-grid';\nimport RemoveCircleIcon from '@material-ui/icons/RemoveCircle';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n formControlLabel: {\n marginLeft: theme.spacing(2),\n },\n rootpaper: {\n width: 1000,\n marginTop: theme.spacing(3),\n marginBottom: theme.spacing(3),\n overflowX: \"auto\"\n },\n orgpaper: {\n width: 500,\n margin: theme.spacing(1),\n overflowX: \"auto\"\n },\n orgtable: {\n width: 750,\n height: '40vh',\n zIndex: 0,\n },\n reportpaper: {\n width: 800,\n margin: theme.spacing(1),\n overflowX: \"auto\"\n },\n reporttable: {\n width: 800,\n height: '40vh',\n zIndex: 0,\n },\n table: {\n width: '100%',\n height: '72vh',\n zIndex: 0,\n },\n link: {\n color: theme.palette.info.dark,\n },\n dropdown: {\n display: 'flex',\n marginRight: 'auto',\n },\n}));\n\n\nconst UserOrganizationContent = () => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [deleteOrgTarget, setDeleteOrgTarget] = useState(\"\");\n const [openDeleteOrg, setOpenDeleteOrg] = useState(false);\n const [deleteReportTarget, setDeleteReportTarget] = useState({});\n const [openDeleteReport, setOpenDeleteReport] = useState(false);\n const [orgList, setOrgList] = useState([]);\n const [scheduledReportList, setScheduledReportList] = useState([]);\n \n const orgListColumns = [\n {\n headerName: t('orgName'),\n field: 'name',\n flex: 1,\n disableClickEventBubbling: true\n },\n {\n headerName: t('access'),\n field: 'isEditor',\n renderCell: renderAccess,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t('leaveQuestion'),\n renderCell: renderDeleteOrg,\n sortable: false,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t('default'),\n renderCell: renderDefaultCheck,\n sortable: false,\n disableClickEventBubbling: true\n },\n {\n headerName: '',\n field: t('defaultBranch'),\n renderCell: renderDefaultBranch,\n sortable: false,\n width: 200,\n disableClickEventBubbling: true\n },\n ];\n\n function renderAccess(params) {\n return (\n {params.value ? t('editor') : t('viewer') } \n );\n };\n\n useEffect(() => {\n fetchPageData();\n }, []);\n\n function fetchPageData() {\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n fetch(host + '/user/', requestOptions)\n .then(results => results.json())\n .then(data => {\n setOrgList(data.orgList);\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n\n const handleOpenDeleteOrg = (target) => {\n setDeleteOrgTarget(target);\n setOpenDeleteOrg(true);\n };\n const handleCloseDeleteOrg = () => {\n setOpenDeleteOrg(false);\n };\n function renderDeleteOrg(params) {\n return (\n handleOpenDeleteOrg(params.row)}>\n \n \n );\n };\n \n function renderDefaultCheck(params) {\n var defCheck = false;\n if (params.row.isDefault){\n defCheck = true;\n }\n return (\n handleCheck(params.row)}\n name=\"defIndicator\"\n color=\"primary\"\n />\n );\n };\n const handleCheck = (target) => {\n //console.log(target);\n if (target.isDefault !== 1){\n //Make call to update default org\n const orgId = target.id;\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: \"{}\"\n };\n fetch(host + '/orgs/' + orgId + '/default/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if(data.error === \"OK\"){\n fetchPageData();\n }\n else{\n console.log(data);\n alert(t(\"communicationError\"));\n }\n }).catch((error) => {\n console.log(error)\n })\n }); \n }\n }\n\n const handleBranchDefaultChange = (branch_id, org_id) => {\n const branchId = branch_id;\n const orgId = org_id;\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: \"{}\"\n };\n fetch(host + '/orgs/' + orgId + '/branches/' + branchId + '/default/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if(data.error === \"OK\"){\n fetchPageData();\n }\n else{\n console.log(data);\n alert(t(\"communicationError\"));\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n function renderDefaultBranch(params) {\n const org_id = params.row.id;\n var orgBranches = params.row.branches;\n var defaultBranch = {id: 0, name: t(\"no\") + \" \" + t(\"branches_caps\").toLowerCase()}\n if (orgBranches.length){\n defaultBranch = orgBranches[0];\n }\n else{\n orgBranches =[defaultBranch];\n }\n for (var i=0; i\n \n \n );\n };\n\n const handleOrgDelete = () => {\n var delete_id = deleteOrgTarget.id;\n handleCloseDeleteOrg(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"id\": delete_id\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + delete_id + '/user', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setOrgList(data.orgList);\n setDeleteOrgTarget({});\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n const handleOpenDeleteReport = (target) => {\n setDeleteReportTarget(target);\n setOpenDeleteReport(true);\n };\n const handleCloseDeleteReport = () => {\n setOpenDeleteReport(false);\n };\n\n const handleReportDelete = () => {\n var delete_id = deleteReportTarget.id;\n\n handleCloseDeleteReport(false);\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n\n var body = JSON.stringify(\n {\n \"id\": delete_id\n }\n );\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n let url = \"\";\n\n if (deleteReportTarget.type === \"Branch\") {\n url = \"/orgs/\" + deleteReportTarget.orgId + \"/branches/\" + deleteReportTarget.branchId + \"/reports\";\n }\n else {\n url = \"/orgs/\" + deleteReportTarget.orgId + \"/branches/\" + deleteReportTarget.branchId + \"/sites/\" + deleteReportTarget.siteId + \"/reports\";\n }\n\n fetch(host + url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n var lscheduledReportList = scheduledReportList;\n for (var i = 0; i < lscheduledReportList.length; i++) {\n if (lscheduledReportList[i].id === delete_id) { break; }\n }\n lscheduledReportList.splice(i, 1);\n\n setScheduledReportList(lscheduledReportList);\n setDeleteReportTarget({});\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n return (\n \n {orgList.length > 0 && \n \n {t(\"organizations\")}\n \n \n \n }\n\n \n {t(\"leaveOrganization\")} {deleteOrgTarget.name}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n \n \n {t(\"deleteReport\")}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n \n \n );\n};\n\nexport default UserOrganizationContent;","/* eslint-disable react-hooks/exhaustive-deps */\nimport { useHistory } from 'react-router-dom';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n Input,\n InputAdornment,\n InputLabel,\n Select,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n FormControl,\n IconButton,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport Box from '@material-ui/core/Box';\nimport { host } from \"../data\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n ArrowBack,\n Edit\n} from '@material-ui/icons';\nimport { Visibility, VisibilityOff } from '@material-ui/icons';\nimport UserReportScheduleContent from \"./UserReportScheduleContent.js\";\nimport UserOrganizationContent from \"./UserOrganizationContent.js\";\nimport PropTypes from 'prop-types';\nimport FormGroup from '@material-ui/core/FormGroup';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport HelpIcon from '@material-ui/icons/Help';\nimport { useTranslation } from 'react-i18next';\nimport 'react-phone-number-input/style.css'\nimport PhoneInput, {isPossiblePhoneNumber} from 'react-phone-number-input'\nimport ru from 'react-phone-number-input/locale/ru.json'\nimport en from 'react-phone-number-input/locale/en.json'\nimport es from 'react-phone-number-input/locale/es.json'\nimport fr from 'react-phone-number-input/locale/fr.json'\n\n\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10)\n },\n content: {\n padding: theme.spacing(2)\n },\n settings: {\n marginLeft: theme.spacing(3),\n marginTop: theme.spacing(1),\n width: 800,\n marginBottom: '10px',\n },\n settingsUnedit: {\n marginLeft: theme.spacing(3),\n marginTop: theme.spacing(1),\n width: 700,\n height: '35px',\n marginBottom: '10px',\n },\n passwordSettings: {\n marginLeft: theme.spacing(3),\n marginTop: '10px',\n marginBottom: '10px',\n width: 700,\n height: '37px'\n },\n button: {\n margin: theme.spacing(1),\n width: '25ch',\n },\n saveButton: {\n margin: theme.spacing(1),\n width: '25ch',\n },\n submitButton: {\n marginTop: '10px',\n marginBottom: '10px',\n width: '25ch',\n },\n formControl: {\n display: 'inline-block',\n float: 'left',\n marginTop: '5px',\n marginBottom: '20px',\n },\n recurrMenuText: {\n display: 'inline-block',\n marginLeft: '10px',\n marginRight: '10px'\n },\n recurrMenuText_1: {\n display: 'inline-block',\n marginRight: '10px'\n },\n headerText: {\n marginBottom: '20px'\n },\n passwordButton: {\n width: '30ch'\n },\n passwordButtonEdit: {\n marginLeft: theme.spacing(4),\n width: '30ch'\n },\n emailTextField: {\n marginLeft: '15px',\n textTransform: 'lowercase'\n },\n emailTextFieldEdit: {\n marginLeft: '0',\n textTransform: 'lowercase'\n },\n textField: {\n width: '25ch'\n },\n languageSelect: {\n marginTop: '10px',\n width: '25ch'\n }\n}));\n\n\nexport default function ProfilePage(props) {\n const { t, i18n } = useTranslation();\n const tab1 = useRef(null);\n const tab2 = useRef(null);\n const tab3 = useRef(null);\n const tab4 = useRef(null);\n const [value, setValue] = React.useState(0);\n const classes = useStyles();\n const history = useHistory();\n const [editActive, setEditActive] = React.useState(false);\n const [userInfoFetched, setUserInfoFetched] = React.useState(false);\n const [userInfo, setUserInfo] = React.useState(undefined);\n const [changePWord, setChangePWord] = React.useState(false);\n const [ref1Focus, setRef1Focus] = React.useState(false);\n const [ref2Focus, setRef2Focus] = React.useState(false);\n const [ref3Focus, setRef3Focus] = React.useState(false);\n const [ref4Focus, setRef4Focus] = React.useState(false);\n const [ref5Focus, setRef5Focus] = React.useState(false);\n const [criticalHelpOpen, setCriticalHelpOpen] = useState(false);\n const [dailyStatusReportOpen, setDailyStatusReportHelpOpen] = useState(false);\n const [values, setValues] = React.useState({\n given_name: '',\n family_name: '',\n phone_number: '',\n old_password: '',\n new_password: '',\n showPassword: false,\n });\n const [valuesOld, setValuesOld] = React.useState({\n given_name: '',\n family_name: '',\n phone_number: '',\n old_password: '',\n new_password: '',\n showPassword: false,\n });\n const [formError, setFormError] = React.useState('none');\n const [state, setState] = React.useState({\n daily_status_report_email: false,\n daily_status_report_text: false,\n critical_level_notification_email: false,\n critical_level_notification_text: false,\n });\n const [statePrev, setStatePrev] = React.useState(state);\n const [recurrTime, setRecurrTime] = React.useState(\"8:00\");\n const [recurringInput, setRecurringInput] = React.useState(\"Monday\");\n const [userLanguage, setUserLanguage] = React.useState(\"English\");\n const [userLanguagePrev, setUserLanguagePrev] = React.useState(\"English\");\n const [lngAbbrv, setLngAbbrv] = React.useState(\"en\");\n const [lngAbbrvPrev, setLngAbbrvPrev] = React.useState(\"en\");\n const [position, setPosition] = React.useState(0);\n const [countryLabels, setCountryLabels] = React.useState(en);\n \n const handleRecurrTimeSelect = (event) => {\n setRecurrTime(event.target.value);\n\n setState({\n daily_status_report_email: state.daily_status_report_email,\n daily_status_report_text: state.daily_status_report_text,\n critical_level_notification_email: state.critical_level_notification_email,\n critical_level_notification_text: state.critical_level_notification_text,\n notification_recurr_time: event.target.value\n });\n\n };\n\n const handleCriticalHelpOpen = () => {\n setCriticalHelpOpen(true);\n };\n\n const handleCriticalHelpClose = () => {\n setCriticalHelpOpen(false);\n };\n\n const handleDailyStatusReportHelpOpen = () => {\n setDailyStatusReportHelpOpen(true);\n };\n\n const handleDailyStatusReportHelpClose = () => {\n setDailyStatusReportHelpOpen(false);\n };\n\n const handleChange = (prop) => (event) => {\n setPosition(event.target.value.slice(0, event.target.selectionStart).length);\n setValues({ ...values, [prop]: event.target.value });\n };\n const handleChangePhone = (prop) => (event) => {\n setValues({ ...values, [prop]: event});\n };\n\n const handleChange1 = (event, newValue) => {\n setValue(newValue);\n };\n\n const handleClickShowPassword = () => {\n setValues({ ...values, showPassword: !values.showPassword });\n };\n\n const handleMouseDownPassword = (event) => {\n event.preventDefault();\n };\n\n const handleClickChangePWord = () => {\n if (changePWord) { setChangePWord(false) }\n else { setChangePWord(true) };\n };\n\n const handleClickEdit = () => {\n if (editActive) {\n setEditActive(false)\n } else {\n setEditActive(true)\n };\n\n setChangePWord(false);\n setValues(valuesOld);\n saveUserLanguageSetting(lngAbbrvPrev);\n props.changeLanguage(lngAbbrvPrev);\n };\n\n const handleClickSubmitChangePWord = async () => {\n if (values.old_password === ''\n || values.new_password === '') {\n setFormError(t(\"youCannotChangeYourPassword\"));\n return;\n }\n try {\n let user = await Auth.currentAuthenticatedUser();\n await Auth.changePassword(user, values.old_password, values.new_password);\n setChangePWord(false);\n setFormError(t(\"passwordUpdated\"));\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n const handleClickSubmit = async () => {\n if (values.given_name === '') {\n setFormError(t(\"mustIncludeAFirstName\"));\n return;\n }\n\n if (values.family_name === '') {\n setFormError(t(\"mustIncludeALastName\"));\n return;\n }\n const t_phone_number = values.phone_number.replace(/\\s/g, '').replace(/[- ( )]/g,'');\n console.log(t_phone_number);\n if (t_phone_number ? (isPossiblePhoneNumber(t_phone_number) ? false : true) : false) {\n setFormError(t(\"invalidPhoneNumber\"));\n return;\n } else {\n setFormError('none');\n }\n\n try {\n let user = await Auth.currentAuthenticatedUser();\n await Auth.updateUserAttributes(user, {\n given_name: values.given_name,\n family_name: values.family_name,\n phone_number: (t_phone_number),\n });\n\n setLngAbbrvPrev(lngAbbrv);\n setUserLanguagePrev(userLanguage);\n setValuesOld(values);\n history.go(0);\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n async function saveUserLanguageSetting(lng) {\n try {\n setLngAbbrv(lng);\n\n switch (lng) {\n case 'en':\n setUserLanguage('English');\n break;\n case 'es':\n setUserLanguage('Español');\n break;\n case 'fr':\n setUserLanguage('Français');\n break;\n }\n\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n \"language\": lng,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/user/settings', requestOptions)\n .then(async response => {\n // console.log(response);\n })\n .catch((error) => {\n console.log(error);\n });\n });\n } catch (error) {\n console.log(error);\n }\n };\n\n async function fetchUserInfo() {\n try {\n let user = await Auth.currentUserInfo();\n setUserInfo(user.attributes);\n } catch (error) {\n setFormError(error.message);\n }\n };\n\n React.useEffect(() => {\n fetchUserInfo();\n }, []);\n React.useEffect(() => {\n setCountryLabels(userLanguage === 'Russian' ? ru : (userLanguage === \"Español\" ? es : (userLanguage === 'Français' ? fr : en)));\n }, [userLanguage]);\n \n React.useEffect(() => {\n if (userInfo !== undefined) {\n setValues({\n given_name: userInfo.given_name,\n family_name: userInfo.family_name,\n phone_number: (userInfo.phone_number === undefined ? '' : userInfo.phone_number),\n old_password: '',\n new_password: '',\n showPassword: false,\n });\n setValuesOld({\n given_name: userInfo.given_name,\n family_name: userInfo.family_name,\n phone_number: (userInfo.phone_number === undefined ? '' : userInfo.phone_number),\n old_password: '',\n new_password: '',\n showPassword: false,\n });\n setUserInfoFetched(true)\n }\n }, [userInfo]);\n\n function TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n };\n\n TabPanel.propTypes = {\n children: PropTypes.node,\n index: PropTypes.any.isRequired,\n value: PropTypes.any.isRequired,\n };\n\n function a11yProps(index) {\n return {\n id: `scrollable-auto-tab-${index}`,\n 'aria-controls': `scrollable-auto-tabpanel-${index}`,\n };\n };\n\n const handleNotificationCancel = (event) => {\n setState(statePrev);\n setRecurringInput(statePrev.notification_recurr_weekday);\n setRecurrTime(statePrev.notification_recurr_time);\n };\n\n const handleClickNotificationSubmit = async (event) => {\n setStatePrev(state);\n\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n // Adjust client's time to UTC\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var adjustedReportTime = parseInt(recurrTime) + clientTimeZoneOffset;\n\n if (adjustedReportTime < 0) {\n adjustedReportTime = adjustedReportTime + 24;\n }\n\n if (adjustedReportTime > 23) {\n adjustedReportTime = adjustedReportTime - 24;\n }\n\n var now = new Date();\n var then = new Date();\n now.setHours(parseInt(recurrTime), 0, 0, 0);\n then.setHours(parseInt(recurrTime), 0, 0, 0);\n var n = now.getTimezoneOffset() / 60;\n then.setHours(then.getHours() + n);\n var timeOffset = 0;\n\n const sessionToken = session.getIdToken().jwtToken;\n var body = JSON.stringify(\n {\n \"daily_status_report_email\": state.daily_status_report_email,\n \"daily_status_report_text\": state.daily_status_report_text,\n \"critical_level_notification_email\": state.critical_level_notification_email,\n \"critical_level_notification_text\": state.critical_level_notification_text,\n \"notification_recurr_time\": adjustedReportTime,\n \"notification_time_utc_shift\": timeOffset,\n \"TimeZoneAdjust\": clientTimeZoneOffset,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/user', requestOptions)\n .then(results => results.json())\n .then(data => {\n alert(t(\"notificationSettingsSuccessfullyUpdated\"));\n }).catch((error) => {\n console.log(error);\n });\n });\n };\n\n useEffect(() => {\n fetchPageData();\n\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n\n });\n } catch (e) {\n console.log(e);\n }\n })\n }, []);\n\n function fetchPageData() {\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n };\n\n fetch(host + '/user', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.notificationsSettings != {}) {\n // Adjust UCT to client's timezone\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var recurrTimeAdjusted = (parseInt(data.notificationsSettings['notification_recurr_time']) - clientTimeZoneOffset);\n if (recurrTimeAdjusted > 23) {\n recurrTimeAdjusted = recurrTimeAdjusted - 24;\n }\n\n if (recurrTimeAdjusted < 0) {\n recurrTimeAdjusted = recurrTimeAdjusted + 24;\n }\n\n recurrTimeAdjusted = recurrTimeAdjusted.toString() + ':00';\n\n setState({\n daily_status_report_email: !!parseInt(data.notificationsSettings['daily_status_report_email']),\n daily_status_report_text: !!parseInt(data.notificationsSettings['daily_status_report_text']),\n critical_level_notification_email: !!parseInt(data.notificationsSettings['critical_level_notification_email']),\n critical_level_notification_text: !!parseInt(data.notificationsSettings['critical_level_notification_text']),\n notification_recurr_time: recurrTimeAdjusted,\n });\n\n setStatePrev({\n daily_status_report_email: !!parseInt(data.notificationsSettings['daily_status_report_email']),\n daily_status_report_text: !!parseInt(data.notificationsSettings['daily_status_report_text']),\n critical_level_notification_email: !!parseInt(data.notificationsSettings['critical_level_notification_email']),\n critical_level_notification_text: !!parseInt(data.notificationsSettings['critical_level_notification_text']),\n notification_recurr_time: recurrTimeAdjusted,\n });\n\n setRecurrTime(recurrTimeAdjusted);\n }\n }).catch((error) => {\n console.log(error)\n });\n\n console.log(\"Fetching user language setting...\");\n\n fetch(host + '/user/settings', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n }\n }).then(response => response.json())\n .then(data => {\n if (data['lang'].lang !== undefined) {\n setLngAbbrv(data['lang'].lang);\n setLngAbbrvPrev(data['lang'].lang);\n\n switch (data['lang'].lang) {\n case 'en':\n setUserLanguage('English');\n setUserLanguagePrev('English');\n break;\n case 'es':\n setUserLanguage('Español');\n setUserLanguagePrev('Español');\n break;\n case 'fr':\n setUserLanguage('Français');\n setUserLanguagePrev('Français');\n break;\n }\n }\n console.log(\"User language setting fetched.\");\n });\n });\n } catch (e) {\n console.log(e);\n }\n });\n\n };\n\n const handleNotificationChange = (event) => {\n switch (event.target.name) {\n case 'daily_status_report_email':\n setState({\n daily_status_report_email: event.target.checked,\n daily_status_report_text: state.daily_status_report_text,\n critical_level_notification_email: state.critical_level_notification_email,\n critical_level_notification_text: state.critical_level_notification_text,\n notification_recurr_time: state.notification_recurr_time,\n });\n break;\n case 'daily_status_report_text':\n setState({\n daily_status_report_email: state.daily_status_report_email,\n daily_status_report_text: event.target.checked,\n critical_level_notification_email: state.critical_level_notification_email,\n critical_level_notification_text: state.critical_level_notification_text,\n notification_recurr_time: state.notification_recurr_time,\n });\n break;\n case 'critical_level_notification_text':\n setState({\n daily_status_report_email: state.daily_status_report_email,\n daily_status_report_text: state.daily_status_report_text,\n critical_level_notification_email: state.critical_level_notification_email,\n critical_level_notification_text: event.target.checked,\n notification_recurr_time: state.notification_recurr_time,\n });\n break;\n case 'critical_level_notification_email':\n setState({\n daily_status_report_email: state.daily_status_report_email,\n daily_status_report_text: state.daily_status_report_text,\n critical_level_notification_email: event.target.checked,\n critical_level_notification_text: state.critical_level_notification_text,\n notification_recurr_time: state.notification_recurr_time,\n });\n break;\n };\n };\n\n const setCaretPosition = (elemId, caretPos) => {\n var elem = document.getElementById(elemId);\n\n if (elem != null) {\n if (elem.createTextRange) {\n var range = elem.createTextRange();\n range.move('character', caretPos);\n range.select();\n }\n else {\n if (elem.selectionStart) {\n elem.focus();\n elem.setSelectionRange(caretPos, caretPos);\n }\n else\n elem.focus();\n }\n }\n };\n\n const handleChangeLanguage = (e) => {\n setLngAbbrv(e.target.value);\n\n switch (e.target.value) {\n case 'en':\n setUserLanguage('English');\n break;\n case 'es':\n setUserLanguage('Español');\n break;\n case 'fr':\n setUserLanguage('Français');\n break;\n }\n\n saveUserLanguageSetting(e.target.value);\n props.changeLanguage(e.target.value);\n };\n\n useEffect(() => {\n setCaretPosition('old-password-entry', position);\n }, [values.old_password]);\n\n useEffect(() => {\n setCaretPosition('new-password-entry', position);\n }, [values.new_password]);\n\n useEffect(() => {\n setCaretPosition('given-name-entry', position);\n }, [values.given_name]);\n\n useEffect(() => {\n setCaretPosition('family-name-entry', position);\n }, [values.family_name]);\n\n useEffect(() => {\n setCaretPosition('phone-number-entry', position);\n }, [values.phone_number]);\n\n return (\n \n\n \n \n \n history.goBack()}>\n \n \n \n \n {t(\"userSettings\")}\n \n \n \n\n \n {/* */}\n \n\n \n \n \n \n \n \n\n \n {t(\"userProfile\")}\n {editActive\n ? null\n : \n \n \n \n \n }\n \n\n {userInfoFetched\n ? \n {formError !== 'none'\n ? {formError}\n : null}\n \n \n {t(\"email\")}\n \n \n {userInfo.email}\n \n \n \n\n \n \n {t(\"password\")}\n \n \n \n \n \n \n\n {changePWord\n ?\n \n \n \n \n \n \n {t(\"currentPassword_ast\")}\n \n \n \n {values.showPassword ? : }\n \n } />\n \n \n \n \n \n \n \n \n \n {t(\"newPassword_ast\")}\n \n \n \n {values.showPassword ? : }\n \n } />\n \n \n \n \n \n \n \n \n \n \n \n \n :\n null\n }\n\n \n \n {t(\"firstName\")}\n \n {editActive\n ? \n \n \n {t(\"firstName_ast\")}\n \n \n \n \n : \n {/* */}\n {userInfo.given_name}\n {/* */}\n }\n \n \n\n \n \n {t(\"lastName\")}\n \n {editActive\n ? \n \n \n {t(\"lastName_ast\")}\n \n \n \n \n : \n {userInfo.family_name}\n }\n \n \n\n \n \n {t(\"phoneNumber\")}\n \n {editActive\n ? \n {false && \n \n }\n {true && \n \n {t(\"phoneNumber\")}\n \n \n }\n \n : \n {userInfo.phone_number}\n }\n \n \n\n \n \n {t(\"appLanguage\")}\n \n {editActive\n ? \n \n \n : \n {userLanguage}\n \n }\n \n \n\n {editActive\n ? \n \n\n \n \n {t(\"save\")}\n \n \n \n \n \n \n : null}\n \n\n \n : {t(\"fetchingUserInfo\")}\n }\n \n\n \n \n \n\n \n \n \n\n \n {t(\"notifications\")}\n\n \n
\n {criticalHelpOpen && \n {t(\"criticalLevelNotification\")}\n \n \n {t(\"pulseLevelWillSendYouNotifications\")}\n \n \n {t(\"criticalNotificationsAreSent\")}\n \n \n \n \n \n }\n\n {dailyStatusReportOpen && \n {t(\"dailyStatusReport\")}\n \n \n {t(\"pulseLevelWillSendYouASummary\")}\n \n \n {t(\"statusReportsAreSentOnce\")}\n \n \n \n \n \n }\n\n \n \n {/* Unused grid space */}\n \n \n {t(\"email\")}\n \n \n {t(\"textMessage\")}\n \n \n \n \n {t(\"criticalLevel\")}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t(\"statusReport\")}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

{t(\"sendStatusReportEverydayAt\")}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n {t('textNotificationConsent')}\n
\n \n \n \n {t(\"save\")}\n \n \n \n \n
\n
\n
\n
\n );\n}\n","import {\n Button,\n Grid,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n indented: {\n marginLeft: theme.spacing(10),\n },\n content: {\n padding: theme.spacing(2),\n },\n table: {\n minWidth: 650,\n border: \"none\",\n boxShadow: \"none\"\n },\n DemoButton: {\n },\n}));\n\nexport default function DemoInvite({ fetchOrgInformation }) {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const handleJoinDemo = () => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken,\n },\n };\n\n fetch(host + '/demoinvite/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.Error === \"OK\") {\n alert(t(\"youHaveBeenAdded\"));\n fetchOrgInformation(t(\"gracoDemo\"), true);\n }\n else if (data.Error.includes(\"User already has access\")) {\n alert(t(\"youAlreadyHaveAccess\"));\n fetchOrgInformation(t(\"gracoDemo\"), true);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n return (\n \n \n {t(\"clickButtonBelowToInvite\")}\n \n \n \n \n \n );\n}\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nexport const Theme = createMuiTheme({\n props: {\n MuiDataGrid: {\n disableColumnMenu: true,\n //autoHeight: true,\n }\n },\n overrides: {\n MuiInput: {\n input: {\n '&::-ms-reveal': {\n display: 'none'\n },\n },\n },\n MuiDataGrid: {\n root:{\n '& .MuiDataGrid-columnsContainer': {\n backgroundColor: '#555555',\n color: '#FFFFFF'\n },\n '& .MuiDataGrid-iconSeparator': {\n //display: 'none',\n },\n '& .MuiDataGrid-sortIcon':{\n color: '#fff'\n }\n },\n },\n },\n palette: {\n background: {\n default: \"#ffffff\",\n dark: \"#fafafa\",\n light: \"#ffffff\"\n },\n primary: {\n light: '#555555',\n main: '#2c2c2c',\n dark: '#000000',\n contrastText: '#fff',\n },\n secondary: {\n light: '#67daff',\n main: '#03A9F4',\n dark: '#007ac1',\n contrastText: '#fff',\n },\n error: {\n main: '#e4002b', // color for critically low\n dark: '#a6093d', // color for comm errors\n none: '#555555', // no status\n },\n warning: {\n main: '#e87722', // color for low level\n },\n //info: {\n //},\n success: {\n main: '#319b42', // color for OK\n },\n },\n });\n\nexport default Theme;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport GoogleMapReact from 'google-map-react';\nimport {\n IconButton,\n Tooltip\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Place } from '@material-ui/icons';\n\n// Setup the cs\n// critical -> less critical\n// comm - red\n// batt - red\n// critical level - red\n// high level - yellow\n// low level - yellow\n// OK - green\nconst useStyles = makeStyles((theme) => ({\n ok: {\n color: theme.palette.success.main,\n zIndex: 1\n },\n low: {\n color: theme.palette.warning.main,\n zIndex: 2\n },\n high: {\n color: theme.palette.warning.main,\n zIndex: 3\n },\n crit: {\n color: theme.palette.error.main,\n zIndex: 4\n },\n batt: {\n color: theme.palette.error.dark,\n zIndex: 5\n },\n comm: {\n color: theme.palette.error.dark,\n zIndex: 6\n },\n error: {\n color: theme.palette.error.dark,\n zIndex: 8\n },\n none: {\n color: theme.palette.error.none,\n zIndex: 7\n },\n marker: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)'\n }\n}));\n\n// Grid markers\nconst Marker = ({ org, branch, site, status }) => {\n const classes = useStyles();\n var status_disp = \"OK\";\n if ((typeof status) !== \"string\") {\n status_disp = \"None\";\n }\n else if (status.includes(\"Comm\")) {\n status_disp = \"Comm\";\n }\n else if (status.includes(\"Batt\")) {\n status_disp = \"Batt\";\n }\n else if (status.includes(\"Crit\")) {\n status_disp = \"Crit\";\n }\n else if (status.includes(\"High\")) {\n status_disp = \"High\";\n }\n else if (status.includes(\"Low\")) {\n status_disp = \"Low\";\n }\n return (\n \n \n \n \n \n );\n}\n\n// Set options for the Google map\nconst getMapOptions = (maps) => {\n return {\n mapTypeControl: false,\n streetViewControl: false,\n };\n};\n\nexport const GoogleMap = ({center, pins, org, branch}) => {\n const setGoogleMapRef = (map, maps) => {\n if (pins.length === 1) {\n map.setCenter({lat: pins[0].latitude, lng: pins[0].longitude});\n return;\n }\n const bounds = new maps.LatLngBounds();\n const formattedPins = pins.map(({latitude, longitude}) => ({lat: latitude, lng: longitude}))\n for (let i = 0; i < formattedPins.length; i++) {\n bounds.extend(formattedPins[i]);\n }\n\n map.setCenter(bounds.getCenter());\n map.fitBounds(bounds);\n };\n\n return (\n setGoogleMapRef(map, maps)}\n >\n {pins?.map((pin, index) =>\n \n )}\n \n );\n};\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n ClickAwayListener,\n Breadcrumbs,\n Divider,\n Grow,\n Grid,\n IconButton,\n Hidden,\n Link,\n ListItemIcon,\n MenuItem, MenuList,\n Paper,\n Popper,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport {\n ArrowDropDown,\n ArrowLeft,\n ArrowBack,\n Edit\n} from '@material-ui/icons';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n title: {\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'block',\n },\n },\n title_small: {\n display: 'none',\n [theme.breakpoints.up('xs')]: {\n display: 'block',\n maxWidth: 240\n },\n },\n}));\n\n// Tlm Breadcrumb component for showing the breadcrumb navigation\nexport default function TlmBreadcrumbs({ orgInfo, branchInfo, site, tank }) {\n const { t, i18n } = useTranslation();\n let baseUrl = '/orgs/' + orgInfo.orgName + '/branches/';\n const classes = useStyles();\n const [branchesOpen, setBranchesOpen] = React.useState(false);\n const [branchesAnchor, setBranchesAnchor] = React.useState(null);\n\n const handleBranchesOpen = (event) => {\n setBranchesAnchor(event.currentTarget);\n setBranchesOpen(true);\n };\n\n const handleBranchesClose = () => {\n setBranchesOpen(false);\n };\n\n return (\n \n {branchInfo === undefined\n ? \n \n \n : \n {site !== null && \n \n \n \n }\n \n {({ TransitionProps, placement }) => (\n \n \n \n \n {branchInfo.isBranchEditor && }\n {branchInfo.branchList.map((name, index) =>\n \n {name}\n )}\n {branchInfo.isBranchEditor && }\n {branchInfo.isBranchEditor && \n \n \n \n {branchInfo.branchName}\n }\n {orgInfo.isOrgEditor && \n {t(\"createNewBranch\")}\n }\n \n \n \n \n )}\n \n }\n \n {branchInfo.branchName !== null\n ? site !== null\n ? \n {false && \n {branchInfo.branchName}\n }\n \n \n \n \n {branchInfo.branchName}\n \n \n \n \n \n \n \n \n \n {branchInfo.branchName}\n \n \n \n \n \n \n : \n \n \n \n \n {branchInfo.branchName}\n \n \n \n \n \n \n \n \n \n {branchInfo.branchName}\n \n \n \n \n \n \n : site !== null\n ? \n {t(\"sites\")}\n \n : \n {t(\"sites\")}\n }\n {site !== null\n ? tank !== null\n ? \n {site}\n \n : \n {site}\n \n : null}\n {site !== null && tank !== null\n ? \n {tank}\n \n : null}\n \n \n );\n}\n","import React, { Fragment, useState, useEffect } from \"react\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport Input from \"@material-ui/core/Input\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Checkbox from \"@material-ui/core/Checkbox\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport ListItemText from \"@material-ui/core/ListItemText\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Slider from \"@material-ui/core/Slider\";\nimport Typography from \"@material-ui/core/Typography\";\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport DialogActions from \"@material-ui/core/DialogActions\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport { FilterList } from '@material-ui/icons';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 250,\n maxWidth: 500,\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n\n },\n noLabel: {\n marginTop: theme.spacing(3),\n },\n}));\n\nconst ITEM_HEIGHT = 48;\nconst ITEM_PADDING_TOP = 8;\nconst MenuProps = {\n PaperProps: {\n style: {\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n width: 450,\n },\n },\n};\n\nconst BranchFilter = ({ fluids, statuses, tags, setFilters, DTE_range, filtersInfo }) => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n const handleClickOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n const [fluidName, setFluidName] = useState([]);\n const [statusName, setStatusName] = useState([]);\n const [tagName, setTagName] = useState([]);\n const [ullage, setUllage] = useState([0, 100]);\n const [DTE, setDTE] = useState(\"noFilter\");\n const [showSensorWarning, setShowSensorWarning] = useState(0);\n const handleFluidChange = (event) => setFluidName(event.target.value);\n const handleStatusChange = (event) => setStatusName(event.target.value);\n const handleDteChange = (event) => setDTE(event.target.value);\n const handleTagChange = (event) => setTagName(event.target.value);\n const handleUllageRangeChange = (event, newValue) => setUllage(newValue);\n\n\n useEffect(() => {\n if (filtersInfo.showSensorWarning){\n setShowSensorWarning(filtersInfo.showSensorWarning);\n } else {\n setShowSensorWarning(0);\n }\n }, [filtersInfo]);\n\n const handleApply = () => {\n setOpen(false);\n setFilters({ 'fluidName': fluidName, 'statusName': statusName, 'tagName': tagName, 'ullageRange': ullage, 'DTE': DTE, 'showSensorWarning': showSensorWarning }, true);\n };\n\n const handleReset = () => {\n setOpen(false);\n setFluidName([]);\n setStatusName([]);\n setTagName([]);\n setUllage([0, 100]);\n setDTE(\"noFilter\");\n setShowSensorWarning(0);\n setFilters({ 'fluidName': [], 'statusName': [], 'tagName': [], 'ullageRange': [0, 100], 'DTE': \"noFilter\", \"showSensorWarning\": 0 }, true);\n };\n \n return (\n \n {true && \n \n \n \n }\n\n {false && }\n\n \n {t(\"filter\")}\n \n
\n
\n
\n \n {t(\"fluid\")}\n }\n renderValue={(selected) => selected.join(', ')}\n MenuProps={MenuProps}\n >\n {fluids.map((fluid) => (\n \n -1} />\n \n \n ))}\n \n \n
\n
\n \n {t(\"status\")}\n }\n renderValue={(selected) => selected.join(', ')}\n MenuProps={MenuProps}\n >\n {statuses.map((status) => (\n \n -1} />\n \n \n ))}\n \n \n
\n
\n \n {t(\"daysUntilEmpty\")}\n }\n MenuProps={MenuProps}\n >\n {DTE_range.map((DTE_val) => (\n \n \n \n ))}\n \n \n
\n
\n \n \n {t(\"ullagePercent\")}\n \n \n \n
\n
\n \n {t(\"Tag\")}\n }\n renderValue={(selected) => selected.join(', ')}\n MenuProps={MenuProps}\n >\n {tags.map((tag) => (\n \n -1} />\n \n \n ))}\n \n \n
\n
\n {setShowSensorWarning(event.target.checked ? 1 : 0)}}\n name=\"show_sensor_warning\"\n color=\"primary\"\n />\n }\n />\n
\n
\n
\n
\n \n \n \n \n \n \n
\n );\n};\n\nexport default BranchFilter;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useTranslation } from 'react-i18next';\n\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport {\n Checkbox,\n ClickAwayListener,\n FormControlLabel, FormGroup,\n Grow,\n IconButton,\n InputLabel,\n List,\n ListItem,\n ListItemIcon,\n ListItemSecondaryAction,\n ListItemText,\n Paper,\n Popper,\n Toolbar,\n Chip,\n Menu,\n MenuItem,\n Select,\n Tooltip,\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n FormLabel,\n FormControl,\n Typography\n} from '@material-ui/core';\nimport {\n ViewColumn\n} from '@material-ui/icons';\nimport DragHandleIcon from \"@material-ui/icons/DragHandle\";\nimport { Container } from \"react-smooth-dnd\";\n//import { Draggable } from \"react-smooth-dnd\";\nimport { DragDropContext, Droppable } from \"react-beautiful-dnd\";\nimport { Draggable } from \"react-beautiful-dnd\";\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n iconButtons: {\n marginRight: theme.spacing(0),\n },\n filterContainer: {\n display: 'flex',\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.primary.contrastText,\n padding: theme.spacing(0),\n },\n checkBox: {\n root: {\n color: theme.palette.primary.contrastText,\n '&$checked': {\n color: theme.palette.primary.contrastText,\n },\n },\n },\n}));\n\n\nconst ThemeCheckbox = withStyles((theme) => ({\n root: {\n color: theme.palette.primary.contrastText,\n '&$checked': {\n color: theme.palette.primary.contrastText,\n },\n },\n //checked: {},\n}))((props) => );\n\nexport default function ColumnSelector({columnOrder, checked, setChecked, setOrder, disableColumns, hideColumnSelector}){\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const [isColumnsOpen, setIsColumnsOpen] = useState(false);\n const [columnsAnchor, setColumnsAnchor] = useState(null);\n const [localChecked, setLocalChecked] = useState(checked);\n const [localOrder, setLocalOrder] = useState(columnOrder);\n\n const onDragEnd = (result) => {\n if (!result.destination) {\n return;\n }\n \n var newOrder = localOrder.slice();\n const [removed] = newOrder.splice(result.source.index, 1);\n newOrder.splice(result.destination.index, 0, removed);\n setLocalOrder(newOrder);\n }\n const handleToggle = (value) => () => {\n let newChecked = Object.assign({}, localChecked);\n if (newChecked[value] === true) {\n newChecked[value] = false;\n } else {\n newChecked[value] = true;\n }\n if (disableColumns.indexOf(value) > -1){\n newChecked[value] = true;\n }\n setLocalChecked(newChecked);\n };\n const handleColumnsOpen = (event) => {\n setColumnsAnchor(event.currentTarget);\n setIsColumnsOpen(true);\n setLocalOrder(columnOrder);\n setLocalChecked(checked);\n };\n const handleColumnsClose = () => {\n setOrder(localOrder);\n setChecked(localChecked);\n setIsColumnsOpen(false);\n };\n\n const grid = 0;\n\n const getItemStyle = (isDragging, draggableStyle) => ({\n // some basic styles to make the items look a bit nicer\n //userSelect: \"none\",\n //padding: grid,\n //margin: `0 0 ${grid*0}px 0`,\n\n // change background colour if dragging\n //background: isDragging ? \"lightgreen\" : \"grey\",\n\n // styles we need to apply on draggables\n ...draggableStyle,\n left: \"auto !important\",\n top: \"auto !important\",\n });\n\n const getListStyle = isDraggingOver => ({\n //background: isDraggingOver ? \"lightblue\" : \"lightgrey\",\n //padding: grid,\n //width: 250\n });\n\n return (\n <>\n {(hideColumnSelector === undefined || hideColumnSelector === false) && \n \n \n \n }\n \n {({ TransitionProps, placement }) => (\n \n \n \n
\n \n \n {(provided, snapshot) => (\n \n {localOrder.map(({key, label}, index) => {\n return(\n \n {(provided, snapshot) => (\n \n -1}\n checked={localChecked[key]}\n tabIndex={-1}\n disableRipple\n onClick={handleToggle(key)}\n />\n {t(label)}\n \n
\n )}\n \n )})}\n {provided.placeholder}\n
\n )}\n \n \n
\n \n \n )}\n \n \n );\n};","import React, { useRef, useEffect } from \"react\";\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport {\n Checkbox,\n ClickAwayListener,\n FormControlLabel, FormGroup,\n Grow,\n Hidden,\n IconButton,\n InputLabel,\n ListItemText,\n Paper,\n Popper,\n Toolbar,\n Chip,\n Menu,\n MenuItem,\n Select,\n Tooltip,\n Button,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n FormLabel,\n FormControl,\n TextField,\n Typography\n} from '@material-ui/core';\nimport {\n FilterList,\n ViewColumn,\n Search\n} from '@material-ui/icons';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport BranchFilter from './BranchFilter.js';\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport { units_settings } from \"../../data\";\nimport { useTranslation } from 'react-i18next';\nimport ColumnSelector from './ColumnSelector';\n\n// Set the css styles\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n tableTools: {\n display: 'flex',\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n\n },\n chipItem: {\n marginRight: theme.spacing(2),\n display: 'flex',\n flexWrap: 'wrap',\n '& > *': {\n margin: theme.spacing(0.5),\n },\n },\n filterContainer: {\n display: 'flex',\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.primary.contrastText,\n padding: theme.spacing(1),\n },\n formControl: {\n display: 'inline-block',\n float: 'left',\n marginTop: '10px',\n marginRight: '5px',\n\n },\n formSubControl: {\n display: 'inline-block',\n float: 'left',\n marginTop: '40px',\n marginRight: '5px',\n },\n recurrMenuText: {\n display: 'inline-block',\n marginLeft: '10px',\n marginRight: '10px',\n },\n recurrMenuButton: {\n marginLeft: '25px',\n },\n}));\n\n// Custom, theme checkbox component\nconst ThemeCheckbox = withStyles((theme) => ({\n root: {\n color: theme.palette.primary.contrastText,\n '&$checked': {\n color: theme.palette.primary.contrastText,\n },\n },\n checked: {},\n}))((props) => );\n\n// TLM filter bar component\nexport default function TlmFilterBar(props) {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const [reportsMenu, setReportsMenu] = React.useState(null);\n const [isFiltersOpen, setIsFiltersOpen] = React.useState(false);\n const [filtersAnchor, setFiltersAnchor] = React.useState(null);\n const DTE_range = [\"noFilter\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\", \"24\", \"25\", \"26\", \"27\", \"28\", \"29\", \"30\"];\n const [openScheduleReports, setOpenScheduleReports] = React.useState(false);\n const [recurrTime, setRecurrTime] = React.useState(\"8:00\");\n const [recurrMonthlyWeek, setRecurrMonthlyWeek] = React.useState(t(\"first\"));\n const [recurrMonthlyFreq, setRecurrMonthlyFreq] = React.useState(1);\n const [recurrMonthlyDay, setRecurrMonthlyDay] = React.useState(t(\"monday\"));\n const [recurringInput, setRecurringInput] = React.useState(t(\"never\"));\n const [recurMenuState, setRecurMenuState] = React.useState({ show: false, weekly: false });\n const recurringInputRef = useRef(null);\n const [recurrUnits, setRecurringUnits] = React.useState(\"imperial\");\n const [shift, setUTCShift] = React.useState(0);\n const [state, setState] = React.useState({\n monday: true,\n tuesday: false,\n wednesday: false,\n thursday: false,\n friday: false,\n saturday: false,\n sunday: false,\n });\n const disableScheduleReport = props.disableScheduleReport === undefined ? false : props.disableScheduleReport;\n const [openSearchDialogue, setOpenSearchDialogue] = React.useState(false);\n const [searchTerm, setSearchTerm] = React.useState(\"\");\n const rsearchTerm = React.useRef(\"\");\n\n const handleOpenSearch = () => {\n setOpenSearchDialogue(true);\n };\n const handleCloseSearch = () => {\n setOpenSearchDialogue(false);\n };\n const handleSearchTerm = () => {\n if(props.handleSearchTerm){\n props.handleSearchTerm(searchTerm);\n }\n setOpenSearchDialogue(false);\n };\n const handleClearSearchTerm = () => {\n setSearchTerm(\"\");\n if(props.handleSearchTerm){\n props.handleSearchTerm(\"\");\n }\n };\n\n const handleFiltersOpen = (event) => {\n setFiltersAnchor(event.currentTarget);\n setIsFiltersOpen(true);\n };\n\n const handleFiltersClose = () => {\n setIsFiltersOpen(false);\n };\n\n const handleDownloadCSV = () => {\n setReportsMenu(null);\n props.onCSVDownloadRequest();\n };\n\n const handleDownloadPDF = () => {\n setReportsMenu(null);\n props.onPDFDownloadRequest();\n };\n\n const handleScheduleReports = async () => {\n setOpenScheduleReports(true);\n };\n\n const handleRecurringReportsSaveEvent = () => {\n if ((recurMenuState.weekly) && !state.monday && !state.tuesday && !state.wednesday && !state.thursday && !state.friday && !state.saturday && !state.sunday) {\n alert(t(\"pleaseSelectAtLeastOne\"));\n return;\n }\n\n props.onRecurringReportRequest(recurMenuState.show, recurMenuState.weekly, recurrTime, state, recurrMonthlyDay, recurrMonthlyWeek, recurrUnits, recurringInput);\n\n setOpenScheduleReports(false);\n setReportsMenu(null);\n };\n\n const handleClose = () => {\n setReportsMenu(null);\n setOpenScheduleReports(false);\n };\n \n function handleDelete(item) {\n var lfluid = props.filtersInfo.fluidName;\n var ltag = props.filtersInfo.tagName;\n var lstatus = props.filtersInfo.statusName;\n var lullage = props.filtersInfo.ullageRange;\n var lDTE = props.filtersInfo.DTE;\n var index = lfluid.indexOf(item);\n var lshowSensorWarning = props.filtersInfo.showSensorWarning;\n\n if (item === \"ullage\") {\n lullage = [0, 100];\n }\n\n if (item === \"DTE\") {\n lDTE = \"noFilter\";\n }\n console.log(item);\n if (item === \"showSensorWarning\"){\n lshowSensorWarning = 0;\n }\n\n if (index > -1) {\n lfluid.splice(index, 1);\n }\n\n index = ltag.indexOf(item);\n if (index > -1) {\n ltag.splice(index, 1);\n }\n\n index = lstatus.indexOf(item);\n if (index > -1) {\n lstatus.splice(index, 1);\n }\n\n props.setFilters({ 'fluidName': lfluid, 'statusName': lstatus, 'tagName': ltag, 'ullageRange': lullage, 'DTE': lDTE, 'showSensorWarning': lshowSensorWarning }, true);\n };\n\n const handleChange = name => event => {\n switch (name) {\n case 'monday':\n setState({ monday: event.target.checked, tuesday: state.tuesday, wednesday: state.wednesday, thursday: state.thursday, friday: state.friday, saturday: state.saturday, sunday: state.sunday });\n break;\n case 'tuesday':\n setState({ monday: state.monday, tuesday: event.target.checked, wednesday: state.wednesday, thursday: state.thursday, friday: state.friday, saturday: state.saturday, sunday: state.sunday });\n break;\n case 'wednesday':\n setState({ monday: state.monday, tuesday: state.tuesday, wednesday: event.target.checked, thursday: state.thursday, friday: state.friday, saturday: state.saturday, sunday: state.sunday });\n break;\n case 'thursday':\n setState({ monday: state.monday, tuesday: state.tuesday, wednesday: state.wednesday, thursday: event.target.checked, friday: state.friday, saturday: state.saturday, sunday: state.sunday });\n break;\n case 'friday':\n setState({ monday: state.monday, tuesday: state.tuesday, wednesday: state.wednesday, thursday: state.thursday, friday: event.target.checked, saturday: state.saturday, sunday: state.sunday });\n break;\n case 'saturday':\n setState({ monday: state.monday, tuesday: state.tuesday, wednesday: state.wednesday, thursday: state.thursday, friday: state.friday, saturday: event.target.checked, sunday: state.sunday });\n break;\n case 'sunday':\n setState({ monday: state.monday, tuesday: state.tuesday, wednesday: state.wednesday, thursday: state.thursday, friday: state.friday, saturday: state.saturday, sunday: event.target.checked });\n break;\n }\n };\n\n const handleMainRecurrChange = (event) => {\n switch (event.target.value) {\n case \"Weekly\":\n setRecurringInput(\"Weekly\");\n setRecurMenuState({ show: true, weekly: true });\n break;\n case \"Monthly\":\n setRecurringInput(\"Monthly\");\n setRecurMenuState({ show: true, weekly: false });\n break;\n case \"Never\":\n setRecurringInput(\"Never\");\n setRecurMenuState({ show: false, weekly: false });\n break;\n case \"FirstOfMonth\":\n setRecurringInput(\"FirstOfMonth\");\n setRecurMenuState({ show: true, weekly: false });\n break;\n };\n };\n\n const handleRecurrTimeSelect = (event) => {\n setRecurrTime(event.target.value);\n };\n\n const handleRecurrMonthlyDay = (event) => {\n setRecurrMonthlyDay(event.target.value);\n };\n\n const handleRecurrMonthlyWeek = (event) => {\n setRecurrMonthlyWeek(event.target.value);\n };\n\n const toggleReportsMenu = async (e) => {\n setReportsMenu(e.currentTarget);\n props.onGetUserRecurringReportRequest();\n };\n\n const handleRecurringReportsDeleteEvent = (event) => {\n setRecurringInput(t(\"never\"));\n setRecurMenuState({ show: false, weekly: false });\n props.deleteRecurrentReportRequest();\n setOpenScheduleReports(false);\n setReportsMenu(null);\n };\n\n const handleRecurrUnitsSelect = (event) => {\n setRecurringUnits(event.target.value);\n };\n\n useEffect(() => {\n try {\n if (null !== props.reportingMenuItems) {\n let monthly = Boolean(Number(props.reportingMenuItems[\"monthly\"]));\n let weekly = Boolean(Number(props.reportingMenuItems[\"weekly\"]));\n let recurrTime = props.reportingMenuItems[\"recurr_time\"];\n\n // Adjust UCT to client's timezone\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n recurrTime = (parseInt(recurrTime) - clientTimeZoneOffset);\n if (recurrTime > 23) {\n recurrTime = recurrTime - 24;\n }\n if (recurrTime < 0) {\n recurrTime = recurrTime + 24;\n }\n\n recurrTime = recurrTime.toString() + ':00';\n\n if (monthly) {\n let utcShift = props.reportingMenuItems[\"utc_shift\"];\n setUTCShift(utcShift);\n\n let frequency = props.reportingMenuItems[\"frequency\"];\n let monthlyDay = props.reportingMenuItems[\"monthly_day\"];\n let monthlyWeek = props.reportingMenuItems[\"monthly_week\"];\n let units = props.reportingMenuItems[\"units\"];\n if (monthlyDay == 'FirstOfMonth' || monthlyDay == 'SecondOfMonth' || monthlyDay == 'LastOfMonth') {\n setRecurringInput(\"FirstOfMonth\");\n } else {\n if (utcShift > 0) {\n switch (monthlyDay) {\n case 'Sunday':\n monthlyDay = t(\"saturday\");\n break;\n case 'Monday':\n monthlyDay = t(\"sunday\");\n break;\n case 'Tuesday':\n monthlyDay = t(\"monday\");\n break;\n case 'Wednesday':\n monthlyDay = t(\"tuesday\");\n break;\n case 'Thursday':\n monthlyDay = t(\"wednesday\");\n break;\n case 'Friday':\n monthlyDay = t(\"thursday\");\n break;\n case 'Saturday':\n monthlyDay = t(\"friday\");\n break;\n }\n } else if (utcShift < 0) {\n switch (monthlyDay) {\n case 'Sunday':\n monthlyDay = t(\"monday\");\n break;\n case 'Monday':\n monthlyDay = t(\"tuesday\");\n break;\n case 'Tuesday':\n monthlyDay = t(\"wednesday\");\n break;\n case 'Wednesday':\n monthlyDay = t(\"thursday\");\n break;\n case 'Thursday':\n monthlyDay = t(\"friday\");\n break;\n case 'Friday':\n monthlyDay = t(\"saturday\");\n break;\n case 'Saturday':\n monthlyDay = t(\"sunday\");\n break;\n }\n }\n\n setRecurringInput(\"Monthly\");\n }\n\n setRecurringUnits(units);\n setRecurrMonthlyFreq(frequency);\n setRecurrMonthlyDay(monthlyDay);\n setRecurrMonthlyWeek(monthlyWeek);\n setRecurrTime(recurrTime);\n setRecurMenuState({ show: true, weekly: false });\n } else if (weekly) {\n let utcShift = props.reportingMenuItems[\"utc_shift\"];\n setUTCShift(utcShift);\n\n let mondayBool = Boolean(Number(props.reportingMenuItems[\"monday\"]));\n let tuesdayBool = Boolean(Number(props.reportingMenuItems[\"tuesday\"]));\n let wednesdayBool = Boolean(Number(props.reportingMenuItems[\"wednesday\"]));\n let thursdayBool = Boolean(Number(props.reportingMenuItems[\"thursday\"]));\n let fridayBool = Boolean(Number(props.reportingMenuItems[\"friday\"]));\n let saturdayBool = Boolean(Number(props.reportingMenuItems[\"saturday\"]));\n let sundayBool = Boolean(Number(props.reportingMenuItems[\"sunday\"]));\n let units = props.reportingMenuItems[\"units\"];\n var currState = { monday: mondayBool, tuesday: tuesdayBool, wednesday: wednesdayBool, thursday: thursdayBool, friday: fridayBool, saturday: saturdayBool, sunday: sundayBool };\n\n var stateCopy = {};\n stateCopy.sunday = utcShift === 1 ? currState.monday : utcShift === -1 ? currState.saturday : currState.sunday;\n stateCopy.monday = utcShift === 1 ? currState.tuesday : utcShift === -1 ? currState.sunday : currState.monday;\n stateCopy.tuesday = utcShift === 1 ? currState.wednesday : utcShift === -1 ? currState.monday : currState.tuesday;\n stateCopy.wednesday = utcShift === 1 ? currState.thursday : utcShift === -1 ? currState.tuesday : currState.wednesday;\n stateCopy.thursday = utcShift === 1 ? currState.friday : utcShift === -1 ? currState.wednesday : currState.thursday;\n stateCopy.friday = utcShift === 1 ? currState.saturday : utcShift === -1 ? currState.thursday : currState.friday;\n stateCopy.saturday = utcShift === 1 ? currState.sunday : utcShift === -1 ? currState.friday : currState.saturday;\n\n setRecurringUnits(units);\n setRecurrTime(recurrTime);\n setState(stateCopy);\n setRecurringInput(t(\"weekly\"));\n setRecurMenuState({ show: true, weekly: true });\n } else {\n setUTCShift(0);\n setRecurringInput(t(\"never\"));\n setRecurrTime(\"8:00\");\n setRecurrMonthlyWeek(t(\"first\"));\n setRecurrMonthlyDay(t(\"monday\"));\n setRecurringUnits(\"imperial\");\n setRecurMenuState({ show: false, weekly: false });\n setState({ monday: true, tuesday: false, wednesday: false, thursday: false, friday: false, saturday: false, sunday: false });\n }\n }\n } catch (e) {\n\n }\n }, [props.reportingMenuItems]);\n\n return (\n <>\n \n \n
\n
\n props.setDisplayUnits(event.target.value)}\n >\n {units_settings.map((Uval) => (\n \n \n \n ))}\n \n
\n \n \n \n
\n {props.filtersInfo.fluidName.map((fluid) => (\n handleDelete(fluid)} color=\"primary\" />\n ))}\n {props.filtersInfo.tagName.map((tagName) => (\n handleDelete(tagName)} color=\"primary\" />\n ))}\n {props.filtersInfo.statusName.map((statusName) => (\n handleDelete(statusName)} color=\"primary\" />\n ))}\n {(props.filtersInfo.ullageRange.length > 0) && (true === (props.filtersInfo.ullageRange[0] !== 0 || props.filtersInfo.ullageRange[1] !== 100)) &&\n handleDelete(\"ullage\")} color=\"primary\" />}\n {(props.filtersInfo.DTE) && (props.filtersInfo.DTE !== \"noFilter\") &&\n handleDelete(\"DTE\")} color=\"primary\" />}\n {(props.filtersInfo.showSensorWarning === 1) &&\n handleDelete(\"showSensorWarning\")} color=\"primary\" />}\n {(props.currentSearchTerm) &&\n handleClearSearchTerm()} color=\"primary\" />}\n
\n
\n
\n \n props.setDisplayUnits(event.target.value)}\n >\n {units_settings.map((Uval) => (\n \n \n \n ))}\n \n \n {props.showRefresh && \n \n \n \n }\n \n \n \n \n \n \n {openSearchDialogue && \n {t(\"search\")}\n \n \n {\n setSearchTerm(e.target.value);\n }\n }\n />\n \n \n \n \n \n \n }\n \n\n {false && \n \n \n \n }\n\n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n \n \n \n )}\n \n\n \n toggleReportsMenu(e)} >\n \n \n \n setReportsMenu(null)}\n disableAutoFocusItem>\n handleDownloadCSV()}>\n {t(\"exportAsCsv\")}\n \n handleDownloadPDF()}>\n {t(\"exportAsPdf\")}\n \n {disableScheduleReport == false && handleScheduleReports()}>\n {t(\"schedule\")}\n }\n \n \n {t(\"scheduledReports\")}\n \n {t(\"tankLevelReport\")}\n \n {t(\"recurring\")}\n\n \n\n {recurMenuState.show &&\n \n

{t(\"at\")}

\n \n

{t(\"units\")}

\n \n
\n }\n
\n\n {recurMenuState.show && (recurringInput == 'Weekly' || recurringInput == 'Monthly') &&\n
\n \n {!recurMenuState.weekly ?\n
\n

\n \n \n

{t(\"everyMonth\")}

\n
\n :
\n {t(\"recurEveryWeekOn\")}\n \n }\n label={t(\"sunday\")} />\n }\n label={t(\"monday\")} />\n }\n label={t(\"tuesday\")} />\n }\n label={t(\"wednesday\")} />\n }\n label={t(\"thursday\")} />\n }\n label={t(\"friday\")} />\n }\n label={t(\"saturday\")} />\n \n
\n }\n
\n
\n }\n
\n \n \n {recurMenuState.show && }\n \n \n
\n\n \n \n
\n \n \n );\n}","import React, { Fragment } from 'react';\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { Divider } from \"@material-ui/core\";\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport Button from '@material-ui/core/Button';\nimport Menu from '@material-ui/core/Menu';\nimport { useHistory } from 'react-router'\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 250,\n maxWidth: 500,\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n chip: {\n margin: 2,\n },\n noLabel: {\n marginTop: theme.spacing(3),\n },\n Button: {\n marginRight: theme.spacing(1),\n }\n}));\n\nconst NavigationButton = ({ text, siteInfo, orgInfo, tankInfo, branchName, isModuleEditor, currentSiteName = \"\" }) => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n let history = useHistory();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleRedirect = (id, moduleName) => {\n try {\n setAnchorEl(null);\n var orgName = orgInfo.orgName;\n if (id === \"createNew\") {\n if (tankInfo === undefined) {\n history.push('/orgs/' + orgName + '/branches/' + branchName + '/new/');\n }\n else {\n history.push('/orgs/' + orgName + '/branches/' + branchName + '/sites/' + currentSiteName + '/new/');\n }\n }\n else if (tankInfo === undefined || tankInfo.length === 0) {\n // Site navigation\n // TODO: Improve, this doesn't need to for-loop everytime\n for (var i = 0; i < siteInfo.siteData.length; i++) {\n //var branchName = siteInfo.siteData[i].BranchName;\n var siteName = siteInfo.siteData[i].SiteName;\n var siteId = siteInfo.siteData.Site_id;\n if (moduleName === siteName) {\n history.push('/orgs/' + orgName + '/branches/' + branchName + '/sites/' + moduleName);\n break;\n }\n }\n } else {\n // Tank navigation\n\n for (var i = 0; i < siteInfo.siteData.length; i++) {\n //var branchName = siteInfo.siteData[i].BranchName; //CI: Branch name is static for this button.\n var siteName = siteInfo.siteData[i].SiteName;\n var tankName = siteInfo.siteData[i].name;\n if (moduleName === tankName) {\n history.push('/orgs/' + orgName + '/branches/' + branchName + '/sites/' + siteName + '/tanks/' + moduleName);\n break;\n }\n }\n }\n } catch (e) {\n }\n };\n\n var menuItems = {};\n\n try {\n if (tankInfo === undefined || tankInfo.length === 0 && text !== 'TANKS') {\n // Site menu items\n for (var i = 0; i < siteInfo.sitesList.length; i++) {\n menuItems[i] = siteInfo.sitesList[i];\n }\n } else {\n // Tank menu items\n for (var i = 0; i < tankInfo.tanksList.length; i++) {\n menuItems[i] = tankInfo.tanksList[i];\n }\n }\n } catch (e) {\n console.log(e);\n }\n\n return (\n \n \n \n {Object.entries(menuItems).map(([key, value]) =>\n handleRedirect(key, value)}>\n {value}\n \n )}\n {isModuleEditor && }\n {(isModuleEditor) && handleRedirect(\"createNew\", \"value\")}>\n {(tankInfo === undefined || tankInfo.length === 0) ? \"+ \" + t(\"createNewSite\") : \"+ \" + t(\"createNewTank\")}\n }\n \n \n );\n};\n\nexport default NavigationButton;","export function roundToDecimals(num, places) {\n const factor = Math.pow(10, places);\n return Math.round(num * factor) / factor;\n}","import {Auth} from 'aws-amplify';\nimport {host} from '../data.js'\n\nconst LOCATION_ERROR_MESSAGE =\n 'Error in user settings data service! Provide data to the service!';\n\nlet urlConfig = {\n api: '/user/settingsdata',\n //proxyPort: 5000\n}\n\nexport const userSettingsData = {\n getUserSettingsData: async () => {\n try {\n \n const url = host + urlConfig.api;\n const user = await Auth.currentAuthenticatedUser();\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n });\n\n const data = await response.json();\n \n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n updateUserSettingsData: async (settingsData) => {\n try {\n if (!settingsData) {\n return console.error(LOCATION_ERROR_MESSAGE);\n }\n \n const url = host + urlConfig.api;\n const user = await Auth.currentAuthenticatedUser();\n \n const response = await fetch(url, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: user?.signInUserSession?.idToken?.jwtToken,\n },\n body: JSON.stringify(settingsData),\n });\n\n const data = await response.json();\n return {status: response.status, data};\n } catch (error) {\n console.error(LOCATION_ERROR_MESSAGE, error);\n }\n },\n formatSettings: (settings_name, data) => {\n var out = {}\n out[settings_name] = data;\n return out;\n }\n};\n","import React, { useEffect, useState, useRef } from 'react';\nimport {\n Link as RouterLink\n} from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport Cookies from 'universal-cookie';\nimport {\n Button,\n Chip,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Divider,\n Hidden,\n Grid,\n IconButton,\n Link,\n TextField,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { DataGrid } from '@material-ui/data-grid';\nimport {\n Map,\n PersonAdd,\n Place\n} from '@material-ui/icons';\nimport NavigationIcon from '@material-ui/icons/Navigation';\nimport { CSVLink } from \"react-csv\";\nimport jsPDF from \"jspdf\";\nimport 'jspdf-autotable';\nimport { GoogleMap } from '../Components/GoogleMap.jsx';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport TlmFilterBar from '../Components/TlmFilterBar.jsx';\nimport { host, status_severity, srcFilter, FieldSelectLabel, COOKIE_NAMES, useCookiesForData } from \"../../data\";\nimport NavigationButton from '../Components/NavigationButton.js';\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { roundToDecimals } from '../../helpers/roundToDecimals.js';\nimport { useTranslation } from 'react-i18next';\nimport { userSettingsData } from '../../services/userSettingsData';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n grow_2x: {\n flexGrow: 55,\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n topMap: {\n width: '100%',\n height: '33vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n table: {\n width: '100%',\n height: 'calc(100vh - 64px - 32px - 65px - 64px)',\n [theme.breakpoints.down('sm')]: {\n height: 'calc(40vh - 64px - 32px)'\n }\n },\n table_noMap: {\n width: '100%',\n height: 'calc(100vh - 64px - 32px - 65px - 64px)',\n [theme.breakpoints.down('sm')]: {\n height: 'calc(100vh - 64px - 32px - 65px - 64px - 64px - 32px)'\n }\n },\n ok: {\n minWidth: '64px',\n backgroundColor: theme.palette.success.main,\n color: theme.palette.primary.contrastText,\n },\n low: {\n minWidth: '64px',\n backgroundColor: theme.palette.warning.main,\n color: theme.palette.primary.contrastText,\n },\n crit: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.main,\n color: theme.palette.primary.contrastText,\n },\n error: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.dark,\n color: theme.palette.primary.contrastText,\n },\n statusNone: {\n minWidth: '64px',\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.primary.contrastText,\n },\n HeaderIcon: {\n marginLeft: '5px'\n },\n container: {\n display: 'flex',\n justifyContent: 'space-around',\n padding: theme.spacing(2),\n [theme.breakpoints.down('xs')]: {\n flexWrap: 'wrap',\n }\n },\n wrap: {\n display: 'flex',\n [theme.breakpoints.down('xs')]: {\n width: '100%',\n }\n }\n}));\n\n// Branch page component. Display the branch view.\nexport default function BranchPage({ orgInfo, branchInfo, siteInfo }) {\n const { t, i18n } = useTranslation();\n const recipient = useRef(\"\");\n const classes = useStyles();\n const [displayUnits, setDisplayUnits] = useState();\n const [csvReportData, setCSVReportData] = useState([])\n const [pdfReportData, setPDFReportData] = useState([]);\n const [pdfReportDataHeaders, setPDFReportDataHeaders] = useState([]);\n const [pdfReportConfigHeaders, setPDFReportConfigHeaders] = useState([]);\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [pdfFileName, setPDFFileName] = useState('reports');\n const csvLink = useRef();\n const csvHeaders = [\n { label: t(\"site\"), key: 'SiteName' },\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"lastReading\"), key: 'ReadingTime_CSV' },\n { label: t(\"city\"), key: 'City' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"inventoryPercent\"), key: 'volume_pct' },\n { label: t(\"dte\"), key: 'DTE' },\n { label: t(\"adu\"), key: 'ADU_disp' },\n { label: t(\"capacity\"), key: 'FillCapacity_disp' },\n { label: t(\"fluidHeight\"), key: 'fluid_height_disp' },\n { label: t(\"nextReading\"), key: 'NextReading_CSV' },\n { label: t(\"rssi\"), key: 'rssi' },\n { label: t(\"batt\"), key: 'batt' },\n { label: t(\"lastFill\"), key: 'FillTime_CSV' },\n { label: t(\"lastFillV\"), key: \"FillVolume_disp\"},\n { label: t(\"efficiency\"), key: 'Efficiency' },\n { label: t(\"serialNumber\"), key: 'UID'},\n { label: t(\"family\"), key: 'Family'},\n { label: t(\"latitude\"), key: 'latitude' },\n { label: t(\"longitude\"), key: 'longitude' },\n ];\n const pdfHeaders = [\n { label: t(\"site\"), key: 'SiteName' },\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"lastReading\"), key: 'ReadingTime_PDF' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"dte\"), key: 'DTE' },\n ];\n\n // Default columns for the Branches table.\n const [siteNameColWidth, setSiteNameColWidth] = React.useState(128);\n const [tankColWidth, setTankColWidth] = React.useState(104);\n const [fluidColWidth, setfluidColWidth] = React.useState(96);\n const [cityColWidth, setCityColWidth] = React.useState(168);\n const [sitePinWidth, setSitePinWidth] = React.useState(64);\n const defaultColumnOrder =[\n 'coordinates',\n 'SiteName', \n 'name', \n 'Status', \n 'fluidName', \n 'ullage_disp_str',\n 'ReadingTime_UTC',\n 'City',\n 'volume_disp_str',\n 'volume_pct',\n 'DTE_disp',\n 'ADU_disp_str',\n 'Efficiency',\n 'FillCapacity_disp_str',\n 'fluid_height_disp_str',\n 'rssi',\n 'batt',\n 'FillTime',\n 'FillVolume_disp_str',\n 'NextReading',\n ];\n const [columnOrder, setColumnOrder] = useState([]);\n const [checked2, setChecked2] = useState({\n 'coordinates':true, \n 'SiteName':true, \n 'name':true, \n 'Status':true, \n 'fluidName':true, \n 'ullage_disp_str':true,\n 'ReadingTime_UTC':true,\n 'City':false,\n 'volume_disp_str':false,\n 'volume_pct':false,\n 'DTE_disp':false,\n 'ADU_disp_str':false,\n 'Efficiency':false,\n 'FillCapacity_disp_str':false,\n 'fluid_height_disp_str':false,\n 'rssi':false,\n 'batt':false,\n 'FillTime':false,\n 'FillVolume_disp_str':false,\n 'NextReading':false,\n });\n const columnsAlwaysOn = ['name', 'Status', 'coordinates'];\n const columnsBranch = [\n {\n headerName: t(\"pin\"),\n field: 'coordinates',\n width: sitePinWidth,\n renderCell: renderPin,\n headerClassName: classes.tableHeader,\n sortable: false,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"site\"),\n field: 'SiteName',\n width: siteNameColWidth,\n renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tank\"),\n field: 'name',\n width: tankColWidth,\n renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'Status',\n width: 104,\n renderCell: renderStatus,\n headerClassName: classes.tableHeader,\n sortComparator: (v1, v2, param1, param2) => param1.row.status_severity - param2.row.status_severity,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n width: fluidColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"ullage\"),\n field: 'ullage_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ullage_disp - param2.row.ullage_disp,\n width: 112,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastReading\"),\n field: 'ReadingTime_UTC',\n width: 190,\n type: 'dateTime',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"city\"),\n field: 'City',\n width: cityColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"Inv\"),\n description: t(\"inventory\"),\n field: 'volume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_disp - param2.row.volume_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"InvPercent\"),\n description: t(\"inventory\"),\n field: 'volume_pct',\n sortComparator: (v1,v2, param1, param2) => param1.row.volume_pct_int - param2.row.volume_pct_int,\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"dte\"),\n description: t(\"DaysToEmpty\"),\n field: 'DTE_disp',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"adu\"),\n description: t(\"averageDailyUsage\"),\n field: 'ADU_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ADU_disp - param2.row.ADU_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fe\"),\n description: t(\"fillEfficiency\"),\n field: 'Efficiency',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"cap\"),\n description: t(\"Capacity\"),\n field: 'FillCapacity_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillCapacity_disp - param2.row.FillCapacity_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluidHt\"),\n field: 'fluid_height_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.fluid_height_disp - param2.row.fluid_height_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"rssi\"),\n description: t(\"rfSignalStrength\"),\n field: 'rssi',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"batt\"),\n description: t(\"battery\"),\n field: 'batt',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastFill\"),\n field: 'FillTime',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fv\"),\n description: t(\"lastFillVolume\"),\n field: 'FillVolume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillVolume_sort - param2.row.FillVolume_sort,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"nextReading\"),\n field: 'NextReading',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n ];\n const handleSetChecked2 = (newChecked) => {\n if (useCookiesForData) {\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName), JSON.stringify(newChecked), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName), JSON.stringify(newChecked));\n }\n setChecked2(newChecked);\n };\n const handleSetColumnOrder = (newOrder) => {\n if (useCookiesForData) {\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\", orgInfo.orgName), JSON.stringify(newOrder), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\", orgInfo.orgName),JSON.stringify(newOrder));\n }\n setColumnOrder(newOrder);\n };\n \n // Create state for the invites\n const [inviteOpen, setInviteOpen] = React.useState(false);\n // Create state for the Google Map.\n const [mapOpen, setMapOpen] = React.useState(true);\n const [mapPins, setMapPins] = React.useState([]);\n const [mapCenter, setMapCenter] = React.useState(getCenter());\n // Create state for the data table.\n const [dataReady, setDataReady] = React.useState(0);\n const [tankInfo, setSiteInfo] = React.useState({});\n const [fluids, setFluids] = React.useState([]);\n const [tableCols, setTableCols] = React.useState([]);\n const [tableRows, setTableRows] = React.useState([]);\n const [reportsMenuItems, setReportsMenuItems] = React.useState({});\n const [filtersInfo, setFiltersInfo] = React.useState({ 'fluidName': [], 'statusName': [], 'tagName': [], 'ullageRange': [], 'DTE': \"noFilter\", 'showSensorWarning': 0 });\n const [currentSearchTerm, setCurrentSearchTerm] = React.useState(\"\");\n\n function isValidEnteredEmail(value) {\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n }\n\n function calculateStatusSeverity(status, showSensorWarning) {\n var severity = 1;\n if ((typeof status) !== \"string\") {\n severity = status_severity.unknown;\n }\n else if (status.includes(\"Comm\")) {\n severity = status_severity.Comm;\n }\n else if (status.includes(\"Batt\")) {\n severity = status_severity.Batt;\n }\n else if (status.includes(\"Crit\")) {\n severity = status_severity.Crit;\n }\n else if (status.includes(\"SensErr\")){\n severity = status_severity.SensE;\n }\n else if (status.includes(\"High\")) {\n severity = status_severity.High;\n }\n else if (status.includes(\"Low\")) {\n severity = status_severity.Low;\n }\n else if (status.includes(\"SensW\") && showSensorWarning) {\n severity = status_severity.SensW;\n }\n else if (status.includes(\"None\")) {\n severity = status_severity.unknown;\n }\n return severity;\n }\n\n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n\n setCSVFileName(fileNamePrefix + '_' + t('snapshot') + '_' + dformat + '.csv');\n setPDFFileName(fileNamePrefix + '_' + t('snapshot') + '_' + dformat);\n };\n\n function createCSVData(data_in) {\n //console.log(data_in);\n var i;\n var k;\n var csvData = [[t(\"organizationName\"), orgInfo.orgName]];\n csvData.push([t(\"branchName\"), branchInfo.branchName]);\n\n let d = new Date;\n csvData.push([t(\"dateCreated\"), convertDatetoCSVFormat(d)]);\n\n if (displayUnits.includes(\"Metric\")) {\n csvData.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"centimeters\")]);\n } else {\n csvData.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"inches\")]);\n }\n\n csvData.push(['']);\n var tempRow = [];\n\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n\n csvData.push(tempRow);\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n if (csvHeaders[i].key === \"UID\"){\n tempRow.push(\"\\'{uid}\".replace(\"{uid}\", data_in[k][csvHeaders[i].key]));\n } else{\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n }\n csvData.push(tempRow);\n }\n }\n //console.log(csvData);\n setCSVReportData(csvData);\n };\n\n function convertUTCDateToLocalDate(date) {\n var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n\n var offset = date.getTimezoneOffset() / 60;\n var hours = date.getHours();\n\n newDate.setHours(hours - offset);\n\n var month = '' + (newDate.getMonth() + 1),\n day = '' + newDate.getDate(),\n year = newDate.getFullYear(),\n hour = newDate.getHours(),\n minute = newDate.getMinutes(),\n second = newDate.getSeconds();\n\n if (month.length < 2)\n month = '0' + month;\n\n if (day.length < 2)\n day = '0' + day;\n\n if (minute < 10)\n minute = '0' + minute;\n\n if (hour < 10)\n hour = '0' + hour;\n\n var prettiestStr = month + '/' + day + '/' + year + ' ' + hour + ':' + minute;\n return prettiestStr;\n };\n\n function createPDFData(data_in) {\n var headerArr = [];\n var headerConfigArr = [];\n var bodyArr = [];\n var i;\n var k;\n let d = new Date;\n\n headerConfigArr.push([t(\"organizationName\"), orgInfo.orgName]);\n headerConfigArr.push([t(\"branchName\"), branchInfo.branchName]);\n headerConfigArr.push([t(\"dateCreated\"), d]);\n\n if (displayUnits.includes(\"Metric\")) {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"centimeters\")])\n } else {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"inches\")]);\n }\n\n setPDFReportConfigHeaders(headerConfigArr);\n\n if (data_in.length > 0) {\n for (i = 0; i < pdfHeaders.length; i++) {\n headerArr.push(pdfHeaders[i].label);\n }\n\n for (k = 0; k < data_in.length; k++) {\n var entryArray = [];\n for (i = 0; i < pdfHeaders.length; i++) {\n if (data_in[k][pdfHeaders[i].key] === null || data_in[k][pdfHeaders[i].key] === undefined) {\n entryArray.push(\"\");\n }\n else {\n entryArray.push(data_in[k][pdfHeaders[i].key]);\n }\n }\n bodyArr.push(entryArray);\n }\n }\n\n setPDFReportDataHeaders([headerArr]);\n setPDFReportData(bodyArr);\n };\n\n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n let ret = inputTimeStamp;\n //CGI: Don't convert the time if it is not a number.\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ').replace(/-/g, '/');\n ret = convertUTCDateToLocalDate(new Date(ret));\n }\n\n return ret;\n }\n\n function createTableData(data, showSensorWarning=0) {\n var data_in = data;\n const vol_string = displayUnits.includes(\"US\") ? \"gal\" : \"L\";\n const dim_string = displayUnits.includes(\"US\") ? \"in\" : \"cm\";\n \n if (displayUnits.includes(\"Metric\")) {\n for (var i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54 * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n }\n\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage * 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume * 3.78541);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity * 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU * 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume * 3.78541);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2);\n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n else {\n for (var i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height / 2.54);\n }\n }\n\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage / 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume / 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU / 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity / 3.78541);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume) / 3.78541;\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n\n return data_in;\n };\n\n React.useEffect(() => {\n if (tankInfo.json_data !== undefined) {\n FilterData([], false);\n }\n\n const tCol = tableCols;\n setTableCols(tCol);\n }, [displayUnits, tankInfo, currentSearchTerm]);\n\n React.useEffect(() => {\n var t_tableCols = tableCols;\n for (var i = 0; i < tableCols.length; i++) {\n if (t_tableCols[i].field === \"SiteName\") {\n t_tableCols[i].width = siteNameColWidth;\n }\n if (t_tableCols[i].field === 'fluidName') {\n t_tableCols[i].width = fluidColWidth;\n }\n if (t_tableCols[i].field === 'name') {\n t_tableCols[i].width = tankColWidth;\n }\n if (t_tableCols[i].field === 'City') {\n t_tableCols[i].width = cityColWidth;\n }\n if (t_tableCols[i].field === 'coordinates') {\n t_tableCols[i].width = sitePinWidth;\n }\n }\n setTableCols(t_tableCols);\n }, [siteNameColWidth, fluidColWidth, tankColWidth, cityColWidth, sitePinWidth])\n\n // Setup the data table. Triggers when the site info changes.\n function fetchSiteData(){\n var cookies = new Cookies();\n var tFilter = cookies.get('branchFilter' + branchInfo.branchId);\n\n if (undefined !== tFilter) {\n setFiltersInfo(tFilter);\n }\n\n var tDisplayUnits = cookies.get('DisplayUnits');\n if (undefined !== tDisplayUnits) {\n setDisplayUnits(tDisplayUnits);\n }\n else {\n setDisplayUnits(\"US\");\n }\n if (useCookiesForData){\n var tChecked2 = cookies.get(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName));\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n }\n\n var tMapOpen = cookies.get('mapOpen');\n if (undefined !== tMapOpen) {\n setMapOpen(tMapOpen === 'false' ? false : true);\n }\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Fetching branch, site readings...\")\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Branch, site readings fetched.\")\n\n var Data = data.data;\n Data.json_data = data.data.json_data.sort((a, b) => (parseFloat(a.ullage_pct) > parseFloat(b.ullage_pct)) ? -1 : ((parseFloat(b.ullage_pct) > parseFloat(a.ullage_pct)) ? 1 : 0));\n\n var f = [];\n var maxSiteNameLength = 16;\n var maxTankNameLength = 13;\n var maxFluidNameLength = 12;\n var maxCityNameLength = 16;\n var tankNavigation = 0;\n\n for (var i = 0; i < Data.json_data.length; i++) {\n try {\n if (Data.json_data[i].SiteName.length > maxSiteNameLength) {\n maxSiteNameLength = Data.json_data[i].SiteName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].fluidName.length > maxFluidNameLength) {\n maxFluidNameLength = Data.json_data[i].fluidName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].name.length > maxTankNameLength) {\n maxTankNameLength = Data.json_data[i].name.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].City.length > maxCityNameLength) {\n maxCityNameLength = Data.json_data[i].City.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].gps_enable) {\n tankNavigation += 1;\n }\n } catch (error) { }\n try {\n Data.json_data[i].volume_pct_int = parseInt(Data.json_data[i].volume_pct);\n } catch (error) {\n Data.json_data[i].volume_pct_int = undefined;\n }\n Data.json_data[i].id = [orgInfo.orgName, branchInfo.branchName, Data.json_data[i].SiteName, Data.json_data[i].name].join(\",\");\n if (Data.json_data[i].ReadingTime === null) {\n delete Data.json_data[i].ReadingTime_UTC;\n }\n\n Data.json_data[i].ReadingTime_UTC = new Date(Data.json_data[i].ReadingTime_UTC);\n Data.json_data[i].ReadingTime_CSV = convertDatetoCSVFormat((Data.json_data[i].ReadingTime_UTC));\n Data.json_data[i].ReadingTime_PDF = Data.json_data[i].ReadingTime_UTC.toLocaleString();\n Data.json_data[i].NextReading_CSV = \"\";\n\n if (Data.json_data[i].NextReading) {\n Data.json_data[i].NextReading = new Date(Data.json_data[i].NextReading);\n Data.json_data[i].NextReading_CSV = convertDatetoCSVFormat((Data.json_data[i].NextReading));\n }\n\n Data.json_data[i].FillTime_CSV = \"\"\n if (Data.json_data[i].FillTime) {\n Data.json_data[i].FillTime = new Date(Data.json_data[i].FillTime);\n Data.json_data[i].FillTime_CSV = convertDatetoCSVFormat(Data.json_data[i].FillTime);\n }\n\n Data.json_data[i].ullage = parseFloat(Data.json_data[i].ullage);\n Data.json_data[i].volume = parseFloat(Data.json_data[i].volume);\n Data.json_data[i].FillCapacity = parseFloat(Data.json_data[i].FillCapacity);\n Data.json_data[i].FillVolume = parseFloat(Data.json_data[i].FillVolume);\n Data.json_data[i].ADU = parseFloat(Data.json_data[i].ADU);\n Data.json_data[i].fluid_height = parseFloat(Data.json_data[i].fluid_height);\n if (Data.json_data[i].DTE !== undefined && Data.json_data[i].DTE !== null) {\n Data.json_data[i].DTE_disp = parseFloat(Data.json_data[i].DTE);\n }\n\n if ((typeof Data.json_data[i].Status) !== \"string\") {\n Data.json_data[i].Status = \"None\";\n }\n \n Data.json_data[i].status_severity = calculateStatusSeverity(Data.json_data[i].Status, 0);\n }\n //console.log(Data.json_data);\n\n for (var i = 0; i < Data.fluidsList.length; i++) {\n f.push({ 'id': i, 'name': Data.fluidsList[i] })\n }\n setSiteNameColWidth(maxSiteNameLength * 10 + 8);\n setfluidColWidth(maxFluidNameLength * 9 + 8);\n setTankColWidth(maxTankNameLength * 9 + 8);\n setCityColWidth(maxCityNameLength * 9 + 8);\n if (tankNavigation) {\n setSitePinWidth(80);\n }\n else {\n setSitePinWidth(64);\n }\n setFluids(f);\n setSiteInfo(Data);\n setDataReady(1);\n createCSVFileName(branchInfo.branchName);\n }).catch((error) => {\n console.log(error);\n });\n })\n };\n\n async function fetchUserSettingsData(){\n try {\n let tempOrder = [];\n var i;\n var tempUpdates = {};\n \n const { status, data } = await userSettingsData.getUserSettingsData();\n\n const error = data.error;\n const settingsData = data.data;\n \n if (status === 404) {\n console.log(\"fetchUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n var cookies = new Cookies();\n //Code to check for cookies and use existing cookies (update)\n if (settingsData[COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName)]) {\n setColumnOrder(JSON.parse(settingsData[COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName)]));\n }\n else if (cookies.get(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName))) {\n //Use and remove cookie\n console.log(\"Cookies Detected for Column Order\");\n var tColumnOrder = cookies.get(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName));\n\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsBranch.length; i++){\n if (columnsBranch[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n }\n tempUpdates[COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName)] = JSON.stringify(tColumnOrder);\n }\n else {\n //Defaults\n console.log(\"Load Default Column Order\");\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsBranch.length; i++){\n if (columnsBranch[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n\n //Checked Columns\n if (settingsData[COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName)]){\n setChecked2(JSON.parse(settingsData[COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName)]))\n }\n else if(cookies.get(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName))){\n console.log(\"Cookies Detected for columns checked\");\n var tChecked2 = cookies.get(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName));\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n tempUpdates[COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName)] = JSON.stringify(tChecked2);\n }\n else {\n //Default\n }\n \n if(Object.keys(tempUpdates).length){\n const { status, data } = await userSettingsData.updateUserSettingsData(tempUpdates);\n if (status === 200) {\n console.log(\"Removing old cookies\");\n cookies.remove(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName));\n cookies.remove(COOKIE_NAMES.branchColumnsChecked.replace(\"{orgName}\", orgInfo.orgName));\n }\n else {\n console.log(\"Failed to update back-end with cookie data\")\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n async function updateUserSettingsData(settingsName, settingsDataIn){\n const lsettingsName = settingsName;\n const lsettingsDataIn = settingsDataIn;\n try {\n var updateData;\n \n updateData = userSettingsData.formatSettings(lsettingsName, lsettingsDataIn);\n const { status, data } = await userSettingsData.updateUserSettingsData(updateData);\n const { error } = data;\n const settingsData = data.data;\n\n if (status === 404) {\n console.log(\"updateUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n \n } catch (error) {\n console.error(error);\n }\n }\n\n React.useEffect(() => {\n if (!useCookiesForData){\n fetchUserSettingsData();\n }\n fetchSiteData();\n }, [siteInfo]);\n\n // Update the map. Triggers when the table is refreshed.\n useEffect(() => {\n setMapCenter({ lat: getCenter().lat, lng: getCenter().lng });\n setMapPins(makePins());\n }, [tableRows]);\n\n // Update the table column display. Triggers when the column list changes.\n useEffect(() => {\n let newColumns = [];\n var i, k;\n if (columnOrder.length){\n columnOrder.forEach(function (item, index) {\n for (i=0; i < columnsBranch.length; i++){\n if (columnsBranch[i].field === item.key){\n if (checked2[item.key]){\n newColumns.push(columnsBranch[i]);\n }\n break;\n }\n }\n });\n setTableCols(newColumns);\n }\n }, [checked2, columnOrder]);\n\n useEffect(() => {\n let tempOrder = []\n var cookies = new Cookies();\n var i;\n \n if (columnOrder.length == 0 && useCookiesForData){\n var tColumnOrder = cookies.get(COOKIE_NAMES.branchColumnsOrder.replace(\"{orgName}\",orgInfo.orgName));\n tColumnOrder = undefined;\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n console.log(\"Set default Column Order\");\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsBranch.length; i++){\n if (columnsBranch[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n }\n }, []);\n\n // Functions to handle UI\n const handleInviteOpen = () => {\n setInviteOpen(true);\n };\n\n const handleInviteClose = () => {\n setInviteOpen(false);\n };\n\n const handleMapToggle = () => {\n var cookies = new Cookies();\n cookies.set('mapOpen', !mapOpen, { path: \"/\", maxAge: 1000000 });\n setMapOpen(!mapOpen);\n };\n\n function updateDisplayUnits(input_units) {\n var cookies = new Cookies();\n cookies.set('DisplayUnits', input_units, { path: \"/\", maxAge: 1000000 });\n setDisplayUnits(input_units);\n }\n\n // Render functions to help properly render the table.\n function renderPin(params) {\n //console.log(params.row);\n //console.log(params.row.tankGps);\n var tank_latitude = 0;\n var tank_longitude = 0;\n var isValid = false;\n var gps_enable = parseInt(params.row.gps_enable);\n if (isNaN(gps_enable)){\n gps_enable = 0;\n }\n if (params.row.tankGps) {\n tank_latitude = params.row.tankGps.latitude;\n tank_longitude = params.row.tankGps.longitude;\n if (tank_latitude !== undefined || tank_longitude !== undefined){\n isValid = true;\n }\n }\n //let url = \"https://google.com/maps/place/\" + tank_latitude + \",\" + tank_longitude;\n let url = \"https://maps.google.com/?q=\" + tank_latitude + \",\" + tank_longitude;\n //console.log(url);\n return (\n \n setMapCenter({ lat: params.row.latitude, lng: params.row.longitude })}>\n \n \n {(gps_enable > 0) && \n window.open(url)}>\n \n \n }\n \n\n );\n }\n\n function renderLink(params) {\n const orgName = (params.row.id.split(\",\"))[0];\n const branchName = (params.row.id.split(\",\"))[1];\n return (\n \n {params.value}\n \n );\n }\n\n function renderStatus(params) {\n var status = params.value;\n var status_key = \"ok\"\n var status_disp = t(\"ok\");\n\n if ((typeof status) !== \"string\") {\n status_disp = \"\";\n status_key = \"\";\n }\n else if (status.includes(\"Comm\")) {\n status_disp = t(\"comm\");\n status_key = \"comm\";\n }\n else if (status.includes(\"SensErr\")){\n status_disp = t(\"senserr\");\n status_key = \"sensorError\";\n }\n else if (status.includes(\"Crit\")) {\n status_disp = t(\"crit\");\n status_key = \"crit\";\n }\n else if (status.includes(\"Batt\")) {\n status_disp = t(\"batt\");\n status_key = \"batt\";\n }\n else if (status.includes(\"High\")) {\n status_disp = t(\"high\");\n status_key = \"high\";\n }\n else if (status.includes(\"Low\")) {\n status_disp = t(\"low\");\n status_key = \"low\";\n }\n else if (status.includes(\"SensW\") && params.row.showSensorWarning){\n status_disp = t(\"sensw\");\n status_key = \"sensorWarning\"\n }\n else if (status.includes(\"None\")) {\n status_disp = t(\"none\");\n status_key = \"none\"\n }\n var param_display = \"\";\n if (status !== undefined) {\n var param_display_list = status.toLowerCase().split(\",\");\n for (var i = 0; i < param_display_list.length; i++) {\n param_display_list[i] = t(param_display_list[i]);\n }\n param_display = param_display_list.join(\",\");\n }\n return (\n \n \n \n );\n }\n \n function FilterData(filterData, update = false) {\n var addItem = false;\n var newData = [];\n var tstatus = [];\n var ullage_pct = 0;\n var filters = {};\n var data_DTE = 0;\n\n if (update) {\n var cookies = new Cookies();\n setFiltersInfo(filterData);\n cookies.set(\"branchFilter\" + branchInfo.branchId, JSON.stringify(filterData), {path: \"/\", maxAge: 1000000 });\n filters = filterData;\n }\n else {\n filters = filtersInfo;\n }\n\n for (var i = 0; i < tankInfo.json_data.length; i++) {\n addItem = true;\n if (filters.fluidName.length && addItem) {\n for (var j = 0; j < filters.fluidName.length; j++) {\n if (-1 == filters.fluidName[j].indexOf(tankInfo.json_data[i].fluidName)) {\n addItem = false;\n }\n else {\n addItem = true;\n break;\n }\n }\n }\n if (filters.tagName.length && addItem) {\n addItem = false;\n if ('Tags' in tankInfo.json_data[i]) {\n for (var j = 0; j < tankInfo.json_data[i].Tags.length; j++) {\n for (var k = 0; k < filters.tagName.length; k++) {\n if (-1 !== filters.tagName[k].indexOf(tankInfo.json_data[i].Tags[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n }\n if (filters.statusName.length && addItem) {\n tstatus = tankInfo.json_data[i].Status.split(\",\");\n addItem = false;\n for (var j = 0; j < tstatus.length; j++) {\n for (var k = 0; k < filters.statusName.length; k++) {\n if (-1 !== filters.statusName[k].indexOf(tstatus[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n if (filters.DTE && (filters.DTE !== \"noFilter\") && addItem) {\n data_DTE = (tankInfo.json_data[i].DTE);\n if (data_DTE >= parseFloat(filters.DTE) || null === data_DTE || undefined === data_DTE) {\n addItem = false;\n }\n }\n if ((filters.ullageRange[0] > 0 || filters.ullageRange[1] < 100) && addItem) {\n ullage_pct = parseFloat(tankInfo.json_data[i].ullage_pct);\n if (ullage_pct < filters.ullageRange[0] || ullage_pct > filters.ullageRange[1]) {\n addItem = false;\n }\n }\n if (currentSearchTerm){\n if(tankInfo.json_data[i].name){\n let tankName = tankInfo.json_data[i].name.toUpperCase();\n let lSearchTerm = currentSearchTerm.toUpperCase();\n if(!tankName.includes(lSearchTerm)){\n addItem = false;\n }\n }\n else{\n addItem = false;\n }\n }\n if (addItem) {\n newData.push(tankInfo.json_data[i]);\n }\n else {\n console.log(tankInfo.json_data[i]);\n }\n }\n createCSVFileName(branchInfo.branchName);\n newData = createTableData(newData, filters.showSensorWarning);\n setTableRows(newData);\n createCSVData(newData);\n createPDFData(newData);\n }\n \n function makePins() {\n var pins = [];\n var recorded = [];\n var row;\n var pinIndex;\n\n if (tableRows === undefined)\n return pins;\n\n for (row = 0; row < tableRows.length; row += 1) {\n var site = tableRows[row]['SiteName'];\n var status = tableRows[row].Status;\n\n if (!recorded.includes(site)) {\n recorded.push(site);\n pins.push(tableRows[row]);\n }\n else if (status !== 'OK' || status !== undefined) {\n pinIndex = pins.findIndex((el) => { return el['SiteName'] === site; });\n\n if (status === 'Comm')\n pins.splice(pinIndex, 1, tableRows[row]);\n else if (status === 'Crit' && pins[pinIndex]['Status'] !== 'Comm')\n pins.splice(pinIndex, 1, tableRows[row]);\n else if (pins[pinIndex]['Status'] === 'OK')\n pins.splice(pinIndex, 1, tableRows[row]);\n }\n }\n return pins;\n }\n\n function getCenter() {\n try {\n var row;\n var latMin = tableRows[0]['latitude'];\n var latMax = tableRows[0]['latitude'];\n var lngMin = tableRows[0]['longitude'];\n var lngMax = tableRows[0]['longitude'];\n\n for (row = 1; row < tableRows.length; row += 1) {\n if (tableRows[row]['latitude'] < latMin)\n latMin = tableRows[row]['latitude'];\n else if (tableRows[row]['latitude'] > latMax)\n latMax = tableRows[row]['latitude'];\n if (tableRows[row]['longitude'] < lngMin)\n lngMin = tableRows[row]['longitude'];\n else if (tableRows[row]['longitude'] > lngMax)\n lngMax = tableRows[row]['longitude'];\n }\n\n return {\n lat: (latMax + latMin) / 2,\n lng: (lngMax + lngMin) / 2\n };\n } catch (e) {\n return {\n // Default is Graco!\n lat: 44.9778,\n lng: -93.2650\n };\n }\n }\n\n // Functions to handle invitations\n const handleInviteAsViewer = async () => {\n var recip = recipient.current.value.trim().replace(/,{1,}$/, '');\n recip = recip.trim();\n var recipientArr = recip.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; ++index) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n // Get current authenticated user session\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n setInviteOpen(false);\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": branchInfo.branchId,\n \"Role\": \"Viewer\",\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/invite', requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert(t(\"invitationHasBeenSent\"));\n sent = true;\n }\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n const handleInviteAsEditor = async () => {\n var recip = recipient.current.value.trim().replace(/,{1,}$/, '');\n recip = recip.trim();\n var recipientArr = recip.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; ++index) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n // Get current authenticated user session\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n setInviteOpen(false);\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": branchInfo.branchId,\n \"Role\": \"Editor\",\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/invite', requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert(t(\"invitationHasBeenSent\"));\n sent = true;\n }\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for branch data...\");\n csvLink.current.link.click();\n };\n\n const downloadPDFReport = (event) => {\n console.log(\"Downloading PDF for branch data...\");\n\n const pdf = new jsPDF('l', 'pt', 'a4');\n\n var img = new Image();\n img.src = 'data:image/png;base64,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';\n pdf.addImage(img, 'png', 40, 0, 240, 50);\n\n pdf.autoTable({ html: '#report-data-table' });\n pdf.autoTable({\n body: pdfReportConfigHeaders,\n startY: 50,\n });\n\n pdf.autoTable({ html: '#report-table' });\n pdf.autoTable({\n head: pdfReportDataHeaders,\n body: pdfReportData,\n });\n\n pdf.save(pdfFileName);\n };\n\n // POST data to API to schedule a report\n const scheduleRecurringReport = async (showing, weekly, recurrTime, state, recurrMonthlyDay, recurrMonthlyWeek, recurrUnits, recurringInput) => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n // console.log(recurringInput);\n const sessionToken = session.getIdToken().jwtToken;\n\n // Adjust client's time to UTC\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var adjustedReportTime = parseInt(recurrTime) + clientTimeZoneOffset;\n\n if (adjustedReportTime < 0) {\n adjustedReportTime = adjustedReportTime + 24;\n }\n if (adjustedReportTime > 23) {\n adjustedReportTime = adjustedReportTime - 24;\n }\n\n var now = new Date();\n var then = new Date();\n\n now.setHours(parseInt(recurrTime), 0, 0, 0);\n then.setHours(parseInt(recurrTime), 0, 0, 0);\n var n = now.getTimezoneOffset() / 60;\n then.setHours(then.getHours() + n);\n var timeOffset = 0;\n\n if (now.getDate() < then.getDate()) {\n // console.log(\"UTC time conversion results in days to be shifted forward one ...\");\n timeOffset = 1;\n\n if (recurringInput == \"FirstOfMonth\") {\n recurringInput = \"SecondOfMonth\"\n }\n\n if (weekly) {\n var tuesdayUpdated = false;\n var wednesdayUpdated = false;\n var thursdaydayUpdated = false;\n var fridaydayUpdated = false;\n var saturdayUpdated = false;\n var sundayUpdated = false;\n\n var stateCopy = JSON.parse(JSON.stringify(state));\n\n if (stateCopy['monday']) {\n state['monday'] = false;\n state['tuesday'] = true;\n tuesdayUpdated = true;\n }\n if (stateCopy['tuesday']) {\n if (!tuesdayUpdated)\n state['tuesday'] = false;\n state['wednesday'] = true;\n wednesdayUpdated = true;\n }\n if (stateCopy['wednesday']) {\n if (!wednesdayUpdated)\n state['wednesday'] = false;\n state['thursday'] = true;\n thursdaydayUpdated = true;\n }\n if (stateCopy['thursday']) {\n if (!thursdaydayUpdated)\n state['thursday'] = false;\n state['friday'] = true;\n fridaydayUpdated = true;\n }\n if (stateCopy['friday']) {\n if (!fridaydayUpdated)\n state['friday'] = false;\n state['saturday'] = true;\n saturdayUpdated = true;\n }\n if (stateCopy['saturday']) {\n if (!saturdayUpdated)\n state['saturday'] = false;\n state['sunday'] = true;\n sundayUpdated = true;\n }\n if (stateCopy['sunday']) {\n if (!sundayUpdated)\n state['sunday'] = false;\n state['monday'] = true;\n }\n } else if (!weekly && showing) {\n switch (recurrMonthlyDay) {\n case 'Sunday':\n recurrMonthlyDay = 'Monday';\n break;\n case 'Monday':\n recurrMonthlyDay = 'Tuesday';\n break;\n case 'Tuesday':\n recurrMonthlyDay = 'Wednesday';\n break;\n case 'Wednesday':\n recurrMonthlyDay = 'Thursday';\n break;\n case 'Thursday':\n recurrMonthlyDay = 'Friday';\n break;\n case 'Friday':\n recurrMonthlyDay = 'Saturday';\n break;\n case 'Saturday':\n recurrMonthlyDay = 'Sunday';\n break;\n default:\n }\n }\n } else if (now.getDate() > then.getDate()) {\n // console.log(\"UTC time conversion results in days to be shifted back one ...\");\n timeOffset = -1;\n\n if (recurringInput == \"FirstOfMonth\") {\n recurringInput = \"LastOfMonth\"\n }\n\n if (weekly) {\n var tuesdayUpdated = false;\n var wednesdayUpdated = false;\n var thursdaydayUpdated = false;\n var fridaydayUpdated = false;\n var saturdayUpdated = false;\n var mondayUpdated = false;\n\n var stateCopy = JSON.parse(JSON.stringify(state));\n\n if (stateCopy['sunday']) {\n state['sunday'] = false;\n state['saturday'] = true;\n saturdayUpdated = true;\n }\n\n if (stateCopy['saturday']) {\n if (!saturdayUpdated)\n state['saturday'] = false;\n state['friday'] = true;\n fridaydayUpdated = true;\n }\n\n if (stateCopy['friday']) {\n if (!fridaydayUpdated)\n state['friday'] = false;\n state['thursday'] = true;\n thursdaydayUpdated = true;\n }\n\n if (stateCopy['thursday']) {\n if (!thursdaydayUpdated)\n state['thursday'] = false;\n state['wednesday'] = true;\n wednesdayUpdated = true;\n }\n\n if (stateCopy['wednesday']) {\n if (!wednesdayUpdated)\n state['wednesday'] = false;\n state['tuesday'] = true;\n tuesdayUpdated = true;\n }\n\n if (stateCopy['tuesday']) {\n if (!tuesdayUpdated)\n state['tuesday'] = false;\n state['monday'] = true;\n mondayUpdated = false;\n }\n\n if (stateCopy['monday']) {\n if (!mondayUpdated)\n state['monday'] = false;\n state['sunday'] = true;\n }\n } else if (!weekly && showing) {\n switch (recurrMonthlyDay) {\n case 'Sunday':\n recurrMonthlyDay = 'Saturday';\n break;\n case 'Monday':\n recurrMonthlyDay = 'Sunday';\n break;\n case 'Tuesday':\n recurrMonthlyDay = 'Monday';\n break;\n case 'Wednesday':\n recurrMonthlyDay = 'Tuesday';\n break;\n case 'Thursday':\n recurrMonthlyDay = 'Wednesday';\n break;\n case 'Friday':\n recurrMonthlyDay = 'Thursday';\n break;\n case 'Saturday':\n recurrMonthlyDay = 'Friday';\n break;\n default:\n }\n }\n } else {\n // No day shifting required ...\n }\n // console.log(recurringInput);\n var body = JSON.stringify(\n {\n \"RecurStatus\": recurringInput,\n \"Weekly\": weekly,\n \"Monthly\": !weekly && showing,\n \"OrgName\": orgInfo.orgName,\n \"RecurrTime\": adjustedReportTime,\n \"RecurrDays\": state,\n \"MonthlyDay\": recurrMonthlyDay,\n \"MonthlyWeek\": recurrMonthlyWeek,\n \"Units\": recurrUnits,\n \"Shift\": timeOffset,\n \"TimeZoneAdjust\": clientTimeZoneOffset,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/reports', requestOptions)\n .then(response => response.json())\n .then(data => {\n // console.log(data);\n });\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n // GET data from API to schedule a report\n const getUserRecurringReportRequest = async (event) => {\n let user = await Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Fetching branch, user reports schedule...\")\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/reports', requestOptions)\n .then(results => results.json())\n .then(data => {\n setReportsMenuItems(data.body);\n }).catch((error) => {\n // console.log(error);\n });\n });\n };\n\n // DELETE scheduled report\n const deleteRecurrSchedule = async (event) => {\n let user = await Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Deleting branch, user reports schedule...\")\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/reports', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(data);\n }).catch((error) => {\n console.log(error);\n });\n });\n };\n //console.log(tableRows);\n\n if (!dataReady) {\n return ( \n {t(\"loadingSiteData\")}\n
\n \n );\n }\n\n const getGoogleMap = (isOnTop) =>\n ;\n\n return (\n \n \n \n \n
\n \n \n \n \n \n
\n
\n\n
\n {branchInfo.isBranchEditor ?\n <>\n \n \n \n {t(\"invite\")}\n \n \n\n :\n
\n }\n \n \n \n {mapOpen ? t('hideMap') : t(\"showMap\")}\n \n \n\n
\n \n \n \n \n \n \n \n {branchInfo.isBranchEditor &&\n <>\n \n \n \n {t(\"invite\")}\n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n \n \n \n \n \n \n \n {t(\"invite\")}\n \n \n {t(\"toInviteAUserPleaseEnter\")}\n \n \n \n \n \n \n \n \n \n {mapOpen &&\n \n \n
\n {getGoogleMap(true)}\n
\n
\n
\n }\n {setCurrentSearchTerm(value);}}\n displayUnits={displayUnits}\n setDisplayUnits={updateDisplayUnits}\n onCSVDownloadRequest={downloadCSVReport}\n onPDFDownloadRequest={downloadPDFReport}\n onRecurringReportRequest={scheduleRecurringReport}\n onGetUserRecurringReportRequest={getUserRecurringReportRequest}\n deleteRecurrentReportRequest={deleteRecurrSchedule}\n reportingMenuItems={reportsMenuItems}\n disableScheduleReport={!branchInfo.isBranchViewer} />\n {mapOpen ?\n
\n \n
\n :
\n \n
\n }\n \n {mapOpen &&\n \n \n {getGoogleMap(false)}\n \n \n }\n \n );\n}","import React, { useRef, useState } from \"react\";\nimport { Link as RouterLink } from \"react-router-dom\";\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n Checkbox,\n Divider,\n FormGroup,\n FormControlLabel,\n Grid,\n TextField,\n Toolbar,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport { host } from \"../../data\";\nimport Geocode from \"react-geocode\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { countries } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\n\nGeocode.setApiKey(\"AIzaSyDZxhyTnVftkwNDwT2dR8ygpsztsBBwrxs\"); // https://www.npmjs.com/package/react-geocode\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n textInput: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 120\n },\n clickButtons: {\n marginLeft: theme.spacing(0),\n }\n}));\n\nexport default function BranchSettingsPage({ orgInfo, branchInfo, resetBranchData }) {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [branchName, setBranchName] = useState({ name: '' });\n const branch_name = useRef(\"\");\n const [branchAddress, setBranchAddress] = useState({ address: '' });\n const branch_address_line_1 = useRef(\"\");\n const [branchPhone, setBranchPhone] = useState({ phone: '' });\n const branch_phone = useRef(\"\");\n const [branchContactName, setBranchContactName] = useState({ name: '' });\n const branch_contact_name = useRef(\"\");\n const [branchContactEmail, setBranchContactEmail] = useState({ email: '' });\n const branch_email = useRef(\"\");\n const [branchCity, setBranchCity] = useState({ city: '' });\n const branch_city = useRef(\"\");\n const [country, setCountry] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const [defCheck, setDefCheck] = useState(false);\n\n function isValidEnteredEmail(value) {\n if (value === \"\")\n return (true);\n\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n };\n\n function isValidPhoneNumber(value) {\n if (value === \"\")\n return (true);\n\n if ((/^\\d{7,}$/).test(value.replace(/[\\s()+\\-\\.]|ext/gi, ''))) {\n return (true);\n }\n\n alert(t(\"youHaveEnteredAnInvalidPhone\"));\n return (false);\n }\n\n const handleCheck = (event) => {\n setDefCheck(event.target.checked);\n };\n\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n console.log(\"Fetching org information...\");\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n }\n }).then(response => response.json())\n .then(data => {\n setBranchName({ name: data.name });\n setBranchAddress({ address: data.address })\n setBranchPhone({ phone: data.contact_phone });\n setBranchContactName({ name: data.contact_name });\n setBranchContactEmail({ email: data.contact_email });\n setBranchCity({ city: data.city });\n setCountry(data.country);\n setRegion(data.state);\n if (data.default_branch) {\n setDefCheck(true);\n }\n else {\n setDefCheck(false);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n })\n }, []);\n\n const handleChangeCountry = (event) => {\n setCountry(event.target.value);\n };\n\n const handleChangeRegion = (event) => {\n setRegion(event.target.value);\n };\n\n function validateForm() {\n var ret = 1;\n\n if (branch_name.current.value === \"\") {\n alert(t(\"nameInvalid\"));\n ret = 0;\n }\n\n return ret;\n }\n\n const handleClick = async () => {\n if (isValidEnteredEmail(branch_email.current.value) && isValidPhoneNumber(branch_phone.current.value) && validateForm()) {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n try {\n // Get latitude & longitude from address\n const targetBranch = branch_name.current.value;\n var address = branch_address_line_1.current.value + ' ' + branch_city.current.value + ' ' + region + ' ' + country;\n if (branch_address_line_1.current.value !== \"\") {\n Geocode.fromAddress(address).then(\n (response) => {\n const { lat, lng } = response.results[0].geometry.location;\n\n var isDef = 0;\n if (defCheck) {\n isDef = 1;\n }\n var body = JSON.stringify(\n {\n \"Name\": branch_name.current.value,\n \"Address\": branch_address_line_1.current.value,\n \"Phone\": branch_phone.current.value,\n \"ContactName\": branch_contact_name.current.value,\n \"Email\": branch_email.current.value,\n \"Latitude\": lat,\n \"Longitude\": lng,\n \"Country\": country,\n \"City\": branch_city.current.value,\n \"State\": region,\n \"ParentId\": orgInfo.orgId,\n \"isDefault\": isDef\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId, requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n if (data.status === 200) {\n resetBranchData(targetBranch);\n }\n else {\n console.log(data);\n alert(data.body);\n }\n })\n .catch(error => {\n console.log(error);\n });\n },\n (error) => {\n console.log(error);\n }\n );\n }\n else {\n var body = JSON.stringify(\n {\n \"Name\": branch_name.current.value,\n \"Address\": \"\",\n \"Phone\": branch_phone.current.value,\n \"ContactName\": branch_contact_name.current.value,\n \"Email\": branch_email.current.value,\n \"Latitude\": 0,\n \"Longitude\": 0,\n \"Country\": country,\n \"City\": branch_city.current.value,\n \"State\": region,\n \"ParentId\": orgInfo.orgId,\n \"User\": user.attributes.email //user.signInUserSession.accessToken.jwtToken\n }\n );\n\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId, requestOptions)\n .then(async response => {\n // TODO: BranchCreate - Handle a branch create failure below.\n return { body: await response.json(), status: response.status }\n })\n .then(data => {\n if (data.status === 200) {\n resetBranchData(targetBranch);\n }\n else {\n console.log(data);\n alert(data.body);\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n }\n catch (err) {\n console.log(err);\n } finally {\n }\n });\n } catch (e) {\n console.log(e);\n }\n }\n };\n\n return (\n \n \n \n {branchInfo === null\n ? \n : }\n \n \n \n \n
\n \n {t(\"branchDetails\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setBranchName({ name: e.target.value });\n }\n }}\n value={branchName.name}\n inputRef={branch_name}\n label={t(\"branchName\")}\n variant='filled'\n className={classes.textInput} />\n \n {t(\"location\")}\n \n setBranchAddress({ address: e.target.value })}\n value={branchAddress.address}\n inputRef={branch_address_line_1}\n label={t(\"addressLine\")}\n variant='filled'\n className={classes.textInput} />\n setBranchCity({ city: e.target.value })}\n value={branchCity.city}\n inputRef={branch_city}\n label={t(\"city\")}\n variant='filled'\n className={classes.textInput} />\n \n {t(\"country\")}\n \n {countries.map((country) => (\n \n {t(country.translationKey)}\n \n ))}\n \n \n \n {t(\"stateProvinceRegion\")}\n \n {country\n ? countries\n .find(({ countryName }) => countryName === country)\n .regions.map((region) => (\n \n {t(region.translationKey)}\n \n )) : []}\n \n \n\n \n \n {t(\"branchContact\")}\n \n \n setBranchContactName({ name: e.target.value })}\n value={branchContactName.name}\n inputRef={branch_contact_name}\n label={t(\"name\")}\n variant='filled'\n className={classes.textInput} />\n setBranchPhone({ phone: e.target.value })}\n value={branchPhone.phone}\n inputRef={branch_phone}\n label={t(\"phoneNumber\")}\n variant='filled'\n className={classes.textInput} />\n setBranchContactEmail({ email: e.target.value })}\n value={branchContactEmail.email}\n inputRef={branch_email}\n label={t(\"email\")}\n variant='filled'\n className={classes.textInput} />\n \n }\n label={t(\"defaultBranch\")}\n />\n \n
\n
\n\n \n \n \n \n
\n )\n}\n","export default __webpack_public_path__ + \"static/media/barrel-empty-large.695a1abb.png\";","export default function useFormatDate(date, locale = 'en-US', hour12 = true) {\n try {\n return Intl.DateTimeFormat(locale, {\n year: 'numeric', month: 'numeric', day: 'numeric',\n hour: 'numeric', minute: 'numeric', second: 'numeric',\n hour12: hour12\n }).format(Date.parse(date));\n } catch (error) {\n // console.error(error);\n }\n}\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {makeStyles} from '@material-ui/core/styles';\nimport EditIcon from '@material-ui/icons/Edit';\nimport InfoIcon from '@material-ui/icons/Info';\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\nimport {Card, CardContent, Typography, CardActions, CardHeader, IconButton, Tooltip} from \"@material-ui/core\";\nimport TankImage from \"./assets/img/barrel-empty-large.png\";\nimport {TANK_STATUSES} from \"../../data\";\nimport useFormatDate from \"../hooks/useFormatDate\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles({\n 'tank-card': {\n display: 'flex',\n flexDirection: 'column',\n color: 'rgba(0, 0, 0, 0.87)',\n backgroundColor: 'white',\n borderRadius: '2px'\n },\n cardHeaderRoot: {\n paddingBottom: 0\n },\n cardHeader: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n cardActionsRoot: {\n paddingTop: 0\n },\n title: {\n fontSize: 14,\n },\n pos: {\n marginBottom: 12,\n },\n 'tank-gauge': {\n width: '100px',\n height: '140px',\n position: 'relative',\n margin: '5px auto',\n },\n 'empty-barrel': {\n position: 'absolute',\n height: '100%',\n width: '100%',\n backgroundImage: `url(${TankImage})`,\n background: 'no-repeat center',\n backgroundSize: '100px 140px',\n zIndex: 4,\n },\n fluid: {\n position: 'absolute',\n width: '92px',\n height: '127px',\n margin: '5px 4px 8px',\n zIndex: 1\n },\n 'tank-volume': {\n position: 'relative',\n transform: 'translateY(95%)',\n textAlign: 'center',\n zIndex: 4\n },\n level: {\n position: 'absolute',\n width: '100%',\n maxHeight: '100%',\n borderRadius: '2px',\n bottom: 0,\n transition: 'height 2s ease-out'\n },\n bottom: {\n position: 'absolute',\n width: '100%',\n height: '12px',\n borderRadius: '240px / 30px',\n bottom: '-4px',\n zIndex: 1\n },\n footer: {\n justifyContent: 'center'\n }\n});\n\nconst TankCard = ({tank, displayUnits, baseUrl, isEditor}) => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const formattedDate = useFormatDate(tank.ReadingTime_UTC);\n let bgColors = {\n OK: '#319B42',\n LOW_LEVEL: '#E87722',\n CRITICALLY_LOW_LEVEL: '#E4002B',\n ERROR: '#A6093D',\n };\n const tankCapacity = tank.volume_disp;\n const fullnessPercentage = tank.volume_pct\n let currentColor;\n var tankStatus = \"OK\";\n if ((typeof tank.Status) !== \"string\") {\n tankStatus = \"\";\n }\n else if (tank.Status.includes(\"Comm\")) {\n tankStatus = \"Comm\";\n }\n else if (tank.Status.includes(\"SensErr\")){\n tankStatus = \"SensErr\";\n }\n else if (tank.Status.includes(\"Crit\")) {\n tankStatus = \"Critical\";\n }\n else if (tank.Status.includes(\"Batt\")) {\n tankStatus = \"Batt\";\n }\n else if (tank.Status.includes(\"High\")) {\n tankStatus = \"High\";\n }\n else if (tank.Status.includes(\"Low\")) {\n tankStatus = \"Low\";\n }\n else if (tank.Status.includes(\"SensW\")){\n tankStatus = \"SensW\";\n }\n else if (tank.Status.includes(\"None\")) {\n tankStatus = \"None\";\n }\n \n switch (tankStatus) {\n case TANK_STATUSES.LOW:\n currentColor = bgColors.LOW_LEVEL;\n break;\n case TANK_STATUSES.SENSOR_ERROR:\n currentColor = bgColors.ERROR;\n break;\n case TANK_STATUSES.SENSOR_WARNING:\n currentColor = bgColors.LOW_LEVEL;\n break;\n case TANK_STATUSES.CRITICALLY_LOW:\n currentColor = bgColors.CRITICALLY_LOW_LEVEL;\n break;\n case TANK_STATUSES.COMMUNICATION_ERROR:\n currentColor = bgColors.ERROR;\n break;\n case TANK_STATUSES.OK:\n currentColor = bgColors.OK;\n break;\n default:\n currentColor = bgColors.ERROR;\n }\n\n let levelHeight;\n\n if (fullnessPercentage > 100) {\n levelHeight = '100%';\n } else if (fullnessPercentage < 0) {\n levelHeight = '0%';\n } else {\n levelHeight = fullnessPercentage + '%';\n }\n const formatStatus = (statusIn) => {\n var statusOut = \"\";\n var statusTemp = statusIn.toLowerCase().split(\",\");\n for (var i=0; i\n \n {tank.name}\n \n }\n subheader={\n \n {tank.fluidName}\n \n }\n />\n \n {isEditor && \n \n \n \n }\n \n \n \n \n \n \n \n
\n
\n
\n
\n {tank.status !== TANK_STATUSES.COMMUNICATION_ERROR\n ? \n
{tankCapacity}
\n
\n : \n }\n \n
{displayUnits.includes(t(\"metric\")) ? t(\"liters\") : t(\"gallons\")}
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n {fullnessPercentage}% - {tankCapacity} {displayUnits.includes(t(\"metric\")) ? t(\"liters\") : t(\"gallons\")}\n \n \n {formattedDate}\n \n \n {tank.Status === t(\"ok\") ? \"\" : formatStatus(tank.Status)}\n \n
\n
\n )\n};\n\nexport default TankCard;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState, useRef, Fragment } from 'react';\nimport { Link as RouterLink, useParams } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport Cookies from 'universal-cookie';\nimport { DataGrid } from '@material-ui/data-grid';\nimport {\n Box,\n Button,\n Chip,\n CircularProgress,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n Divider,\n Grid,\n Hidden,\n Link,\n IconButton,\n Tab,\n Tabs,\n TextField,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n Edit,\n PersonAdd,\n} from '@material-ui/icons';\nimport { CSVLink } from \"react-csv\";\nimport jsPDF from \"jspdf\";\nimport TankCard from '../Components/TankCard.js';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport TlmFilterBar from '../Components/TlmFilterBar.jsx';\nimport { host, status_severity, COOKIE_NAMES, FieldSelectLabel, useCookiesForData } from \"../../data\";\nimport NavigationButton from '../Components/NavigationButton.js';\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { roundToDecimals } from '../../helpers/roundToDecimals.js';\nimport { useTranslation } from 'react-i18next';\nimport { userSettingsData } from '../../services/userSettingsData';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n grow_x2: {\n flexGrow: 55,\n },\n content: {\n padding: theme.spacing(2),\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n table: {\n width: '100%',\n height: '70vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n ok: {\n minWidth: '64px',\n backgroundColor: theme.palette.success.main,\n color: theme.palette.primary.contrastText,\n },\n low: {\n minWidth: '64px',\n backgroundColor: theme.palette.warning.main,\n color: theme.palette.primary.contrastText,\n },\n crit: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.main,\n color: theme.palette.primary.contrastText,\n },\n error: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.dark,\n color: theme.palette.primary.contrastText,\n },\n statusNone: {\n minWidth: '64px',\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.primary.contrastText,\n },\n HeaderIcon: {\n marginLeft: '5px'\n }\n}));\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n}\n\n// Site page component. Display the site view.\nexport default function SitePage({ orgInfo, branchInfo, siteInfo }) {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n // Get params so we can read the url path parameters\n const params = useParams();\n const [displayUnits, setDisplayUnits] = useState();\n const [csvReportData, setCSVReportData] = useState([]);\n const [pdfReportData, setPDFReportData] = useState([]);\n const [pdfReportDataHeaders, setPDFReportDataHeaders] = useState([]);\n const [pdfReportConfigHeaders, setPDFReportConfigHeaders] = useState([]);\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [pdfFileName, setPDFFileName] = useState('reports');\n const csvLink = useRef();\n const baseUrl = '/orgs/' + orgInfo.orgName + '/branches/' + branchInfo.branchName;\n const site = params.siteName;\n const isEditor = siteInfo.sitesNavDict[site][1];\n const siteId = siteInfo.sitesNavDict[site][0];\n const [reportsMenuItems, setReportsMenuItems] = React.useState({});\n\n const csvHeaders = [\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"lastReading\"), key: 'ReadingTime_CSV' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"inventoryPercent\"), key: 'volume_pct' },\n { label: t(\"dte\"), key: 'DTE' },\n { label: t(\"adu\"), key: 'ADU_disp' },\n { label: t(\"capacity\"), key: 'FillCapacity_disp' },\n { label: t(\"fluidHeight\"), key: 'fluid_height_disp' },\n { label: t(\"nextReading\"), key: 'NextReading_CSV' },\n { label: t(\"rssi\"), key: 'rssi' },\n { label: t(\"batt\"), key: 'batt' },\n { label: t(\"lastFill\"), key: 'FillTime_CSV' },\n { label: t(\"lastFillV\"), key: \"FillVolume_disp\"},\n { label: t(\"efficiency\"), key: 'Efficiency' },\n { label: t(\"serialNumber\"), key: 'UID'},\n { label: t(\"family\"), key: 'Family'},\n { label: t(\"latitude\"), key: 'latitude' },\n { label: t(\"longitude\"), key: 'longitude' },\n ];\n\n const pdfHeaders = [\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"lastReading\"), key: 'ReadingTime_PDF' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"dte\"), key: 'DTE' },\n ];\n\n const [tankColWidth, setTankColWidth] = React.useState(104);\n const [fluidColWidth, setfluidColWidth] = React.useState(96);\n const defaultColumnOrder =[\n 'name', \n 'Status', \n 'fluidName', \n 'ullage_disp_str',\n 'ReadingTime_UTC',\n 'City',\n 'volume_disp_str',\n 'volume_pct',\n 'DTE_disp',\n 'ADU_disp_str',\n 'Efficiency',\n 'FillCapacity_disp_str',\n 'fluid_height_disp_str',\n 'rssi',\n 'batt',\n 'FillTime',\n 'FillVolume_disp_str',\n 'NextReading',\n ];\n const [columnOrder, setColumnOrder] = useState([]);\n const [checked2, setChecked2] = useState({\n 'coordinates':true, \n 'SiteName':true, \n 'name':true, \n 'Status':true, \n 'fluidName':true, \n 'ullage_disp_str':true,\n 'ReadingTime_UTC':true,\n 'City':false,\n 'volume_disp_str':false,\n 'volume_pct':false,\n 'DTE_disp':false,\n 'ADU_disp_str':false,\n 'Efficiency':false,\n 'FillCapacity_disp_str':false,\n 'fluid_height_disp_str':false,\n 'rssi':false,\n 'batt':false,\n 'FillTime':false,\n 'FillVolume_disp_str':false,\n 'NextReading':false,\n });\n const columnsAlwaysOn = ['name', 'Status', 'coordinates'];\n const columnsSite = [\n {\n headerName: t(\"tank\"),\n field: 'name',\n renderCell: renderLink,\n width: tankColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'Status',\n renderCell: renderStatus,\n sortComparator: (v1, v2, param1, param2) => param1.row.status_severity - param2.row.status_severity,\n width: 104,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n width: fluidColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"ullage\"),\n field: 'ullage_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ullage_disp - param2.row.ullage_disp,\n width: 112,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastReading\"),\n field: 'ReadingTime_UTC',\n width: 190,\n type: 'dateTime',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"Inv\"),\n description: t(\"inventory\"),\n field: 'volume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_disp - param2.row.volume_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"InvPercent\"),\n description: t(\"inventory\"),\n field: 'volume_pct',\n sortComparator: (v1,v2, param1, param2) => param1.row.volume_pct_int - param2.row.volume_pct_int,\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"dte\"),\n description: t(\"DaysToEmpty\"),\n field: 'DTE_disp',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"adu\"),\n description: t(\"averageDailyUsage\"),\n field: 'ADU_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ADU_disp - param2.row.ADU_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fe\"),\n description: t(\"fillEfficiency\"),\n field: 'Efficiency',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fv\"),\n description: t(\"lastFillVolume\"),\n field: 'FillVolume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillVolume_sort - param2.row.FillVolume_sort,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"cap\"),\n description: t(\"Capacity\"),\n field: 'FillCapacity_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillCapacity_disp - param2.row.FillCapacity_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluidHt\"),\n field: 'fluid_height_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.fluid_height_disp - param2.row.fluid_height_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"rssi\"),\n description: t(\"rfSignalStrength\"),\n field: 'rssi',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"batt\"),\n description: t(\"battery\"),\n field: 'batt',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastFill\"),\n field: 'FillTime',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"nextReading\"),\n field: 'NextReading',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n ];\n const handleSetChecked2 = (newChecked) => {\n if (useCookiesForData) {\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName), JSON.stringify(newChecked), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName), JSON.stringify(newChecked));\n }\n setChecked2(newChecked);\n };\n const handleSetColumnOrder = (newOrder) => {\n const lnewOrder = JSON.stringify(newOrder);\n const lsetting = COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName);\n if (useCookiesForData){\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName), JSON.stringify(newOrder), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(lsetting, lnewOrder);\n }\n setColumnOrder(newOrder);\n };\n\n const recipient = useRef(\"\");\n\n // Setup state for the card display.\n const [isCardView, setCardView] = React.useState(0);\n const [tankInfo, setTankInfo] = React.useState({});\n const [fluids, setFluids] = React.useState([]);\n\n // Setup state for the table display.\n const [tableCols, setTableCols] = React.useState([]);\n const [tableRows, setTableRows] = React.useState([]);\n const [dataReady, setDataReady] = React.useState(0);\n const [filtersInfo, setFiltersInfo] = React.useState({ 'fluidName': [], 'statusName': [], 'tagName': [], 'ullageRange': [], 'DTE': \"\", 'showSensorWarning': 0 });\n const [currentSearchTerm, setCurrentSearchTerm] = React.useState(\"\");\n\n function isValidEnteredEmail(value) {\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n };\n\n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n setCSVFileName(fileNamePrefix + '_Snapshot_' + dformat + '.csv');\n setPDFFileName(fileNamePrefix + '_Snapshot_' + dformat);\n };\n\n function createCSVData(data_in) {\n console.log(data_in);\n var i;\n var k;\n var csvData = [[t(\"organizationName\"), orgInfo.orgName]];\n csvData.push([t(\"branchName\"), branchInfo.branchName]);\n csvData.push([t(\"siteName\"), site]);\n\n let d = new Date;\n csvData.push([t(\"dateCreated\"), convertDatetoCSVFormat(d)]);\n\n if (displayUnits.includes(\"Metric\")) {\n csvData.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"centimeters\")]);\n }\n else {\n csvData.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"inches\")]);\n }\n\n csvData.push(['']);\n var tempRow = [];\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n csvData.push(tempRow);\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n if (csvHeaders[i].key === \"UID\"){\n tempRow.push(\"\\'{uid}\".replace(\"{uid}\", data_in[k][csvHeaders[i].key]));\n } else{\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n }\n csvData.push(tempRow);\n }\n }\n //console.log(csvData);\n setCSVReportData(csvData);\n };\n\n function createPDFData(data_in) {\n var headerArr = [];\n var headerConfigArr = [];\n var bodyArr = [];\n var i;\n var k;\n let d = new Date;\n\n headerConfigArr.push([t(\"organizationName\"), orgInfo.orgName]);\n headerConfigArr.push([t(\"branchName\"), branchInfo.branchName]);\n headerConfigArr.push([t(\"siteName\"), site]);\n headerConfigArr.push([t(\"dateCreated\"), d]);\n\n if (displayUnits.includes(\"Metric\")) {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"centimeters\")]);\n } else {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"inches\")]);\n }\n\n setPDFReportConfigHeaders(headerConfigArr);\n\n if (data_in.length > 0) {\n for (i = 0; i < pdfHeaders.length; i++) {\n headerArr.push(pdfHeaders[i].label);\n }\n\n for (k = 0; k < data_in.length; k++) {\n var entryArray = [];\n for (i = 0; i < pdfHeaders.length; i++) {\n if (data_in[k][pdfHeaders[i].key] === null || data_in[k][pdfHeaders[i].key] === undefined) {\n entryArray.push(\"\");\n }\n else {\n entryArray.push(data_in[k][pdfHeaders[i].key]);\n }\n }\n bodyArr.push(entryArray);\n }\n }\n\n setPDFReportDataHeaders([headerArr]);\n setPDFReportData(bodyArr);\n };\n\n function convertUTCDateToLocalDate(date) {\n var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n\n var offset = date.getTimezoneOffset() / 60;\n var hours = date.getHours();\n\n newDate.setHours(hours - offset);\n var month = '' + (newDate.getMonth() + 1),\n day = '' + newDate.getDate(),\n year = newDate.getFullYear(),\n hour = newDate.getHours(),\n minute = newDate.getMinutes(),\n second = newDate.getSeconds();\n\n if (month.length < 2)\n month = '0' + month;\n\n if (day.length < 2)\n day = '0' + day;\n\n if (minute < 10)\n minute = '0' + minute;\n\n if (hour < 10)\n hour = '0' + hour;\n\n var prettiestStr = month + '/' + day + '/' + year + ' ' + hour + ':' + minute;\n return prettiestStr;\n };\n\n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n //return inputTimeStamp / (1000 * 60 * 60 * 24) + 25569;\n var ret = inputTimeStamp;\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ');\n ret = ret.replaceAll('-', '/');\n ret = convertUTCDateToLocalDate(new Date(ret));\n }\n return ret;\n };\n\n function calculateStatusSeverity(status, showSensorWarning=0) {\n var severity = 1;\n if ((typeof status) !== \"string\") {\n severity = status_severity.unknown;\n }\n else if (status.includes(\"Comm\")) {\n severity = status_severity.Comm;\n }\n else if (status.includes(\"Batt\")) {\n severity = status_severity.Batt;\n }\n else if (status.includes(\"Crit\")) {\n severity = status_severity.Crit;\n }\n else if (status.includes(\"SensErr\")){\n severity = status_severity.SensE;\n }\n else if (status.includes(\"High\")) {\n severity = status_severity.High;\n }\n else if (status.includes(\"Low\")) {\n severity = status_severity.Low;\n }\n else if (status.includes(\"SensW\") && showSensorWarning) {\n severity = status_severity.SensW;\n }\n else if (status.includes(\"None\")) {\n severity = status_severity.unknown;\n }\n return severity;\n }\n\n function createTableData(data, showSensorWarning=0) {\n var data_in = data;\n const vol_string = displayUnits.includes(\"US\") ? \"gal\" : \"L\";\n const dim_string = displayUnits.includes(\"US\") ? \"in\" : \"cm\";\n\n if (displayUnits.includes(\"Metric\")) {\n for (var i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54 * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n }\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage * 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume * 3.78541);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity * 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU * 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume * 3.78541);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2);\n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n else {\n for (var i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height / 2.54);\n }\n }\n\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage / 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume / 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU / 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity / 3.78541);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume) / 3.78541;\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n\n return data_in;\n };\n\n \n // Setup the data table. Triggers when site changes.\n function fetchTankData() {\n var cookies = new Cookies();\n var tFilter = cookies.get('branchFilter' + branchInfo.branchId);\n if (undefined !== tFilter) {\n setFiltersInfo(tFilter);\n }\n var tDisplayUnits = cookies.get(COOKIE_NAMES.displayUnits);\n if (undefined !== tDisplayUnits) {\n setDisplayUnits(tDisplayUnits);\n }\n else {\n setDisplayUnits(\"US\");\n }\n if (useCookiesForData){\n var tChecked2 = cookies.get(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName));\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n }\n var tisCardView = cookies.get('SiteisCardView');\n if (undefined !== tisCardView) {\n if (tisCardView === \"true\") {\n setCardView(1);\n }\n else if (tisCardView === 1) {\n setCardView(1);\n }\n else {\n setCardView(0);\n }\n }\n Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Fetching site tanks...\");\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Site readings fetched.\");\n var Data = data.data;\n Data.json_data = data.data.json_data.sort((a, b) => (parseFloat(a.ullage_pct) > parseFloat(b.ullage_pct)) ? -1 : ((parseFloat(b.ullage_pct) > parseFloat(a.ullage_pct)) ? 1 : 0));\n\n\n var maxTankNameLength = 13;\n var maxFluidNameLength = 12;\n var f = []\n for (var i = 0; i < Data.json_data.length; i++) {\n try {\n if (Data.json_data[i].fluidName.length > maxFluidNameLength) {\n maxFluidNameLength = Data.json_data[i].fluidName.length;\n }\n } catch (error) {\n\n }\n try {\n if (Data.json_data[i].name.length > maxTankNameLength) {\n maxTankNameLength = Data.json_data[i].name.length;\n }\n } catch (error) {\n\n }\n try {\n Data.json_data[i].volume_pct_int = parseInt(Data.json_data[i].volume_pct);\n } catch (error) {\n Data.json_data[i].volume_pct_int = undefined;\n }\n Data.json_data[i].id = [orgInfo.orgName, branchInfo.branchName, site, Data.json_data[i].name].join(\",\");\n if (Data.json_data[i].ReadingTime === null) {\n delete Data.json_data[i].ReadingTime_UTC;\n }\n Data.json_data[i].ReadingTime_UTC = new Date(Data.json_data[i].ReadingTime_UTC);\n Data.json_data[i].ReadingTime_CSV = convertDatetoCSVFormat((Data.json_data[i].ReadingTime_UTC));\n Data.json_data[i].ReadingTime_PDF = Data.json_data[i].ReadingTime_UTC.toLocaleString();\n Data.json_data[i].NextReading_CSV = \"\"\n if (Data.json_data[i].NextReading) {\n Data.json_data[i].NextReading = new Date(Data.json_data[i].NextReading);\n Data.json_data[i].NextReading_CSV = convertDatetoCSVFormat((Data.json_data[i].NextReading));\n }\n Data.json_data[i].FillTime_CSV = \"\"\n if (Data.json_data[i].FillTime) {\n Data.json_data[i].FillTime = new Date(Data.json_data[i].FillTime);\n Data.json_data[i].FillTime_CSV = convertDatetoCSVFormat(Data.json_data[i].FillTime);\n }\n Data.json_data[i].ullage = parseFloat(Data.json_data[i].ullage);\n Data.json_data[i].volume = parseFloat(Data.json_data[i].volume);\n Data.json_data[i].FillCapacity = parseFloat(Data.json_data[i].FillCapacity);\n Data.json_data[i].FillVolume = parseFloat(Data.json_data[i].FillVolume);\n Data.json_data[i].ADU = parseFloat(Data.json_data[i].ADU);\n Data.json_data[i].fluid_height = parseFloat(Data.json_data[i].fluid_height);\n if (Data.json_data[i].DTE !== undefined && Data.json_data[i].DTE !== null) {\n Data.json_data[i].DTE_disp = parseFloat(Data.json_data[i].DTE);\n }\n if ((typeof Data.json_data[i].Status) !== \"string\") {\n Data.json_data[i].Status = \"None\";\n }\n Data.json_data[i].status_severity = calculateStatusSeverity(Data.json_data[i].Status);\n\n }\n for (var i = 0; i < Data.fluidsList.length; i++) {\n f.push({ 'id': i, 'name': Data.fluidsList[i] })\n }\n\n setFluids(f);\n setTankInfo(Data);\n setfluidColWidth(maxFluidNameLength * 9 + 8);\n setTankColWidth(maxTankNameLength * 9 + 8);\n setDataReady(1);\n\n createCSVFileName(site);\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n async function fetchUserSettingsData(){\n try {\n let tempOrder = [];\n var i;\n var tempUpdates = {};\n \n const { status, data } = await userSettingsData.getUserSettingsData();\n\n const error = data.error;\n const settingsData = data.data;\n \n if (status === 404) {\n console.log(\"fetchUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n var cookies = new Cookies();\n //Code to check for cookies and use existing cookies (update)\n if (settingsData[COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName)]) {\n setColumnOrder(JSON.parse(settingsData[COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName)]));\n }\n else if (cookies.get(COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName))) {\n //Use and remove cookie\n console.log(\"Cookies Detected for Column Order\");\n var tColumnOrder = cookies.get(COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName));\n\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsSite.length; i++){\n if (columnsSite[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n }\n tempUpdates[COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName)] = JSON.stringify(tColumnOrder);\n }\n else {\n //Defaults\n console.log(\"Load Default Column Order\");\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsSite.length; i++){\n if (columnsSite[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n\n //Checked Columns\n if (settingsData[COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName)]){\n setChecked2(JSON.parse(settingsData[COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName)]))\n }\n else if(cookies.get(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName))){\n console.log(\"Cookies Detected for columns checked\");\n var tChecked2 = cookies.get(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName));\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n tempUpdates[COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName)] = JSON.stringify(tChecked2);\n }\n else {\n //Default\n }\n \n if(Object.keys(tempUpdates).length){\n const { status, data } = await userSettingsData.updateUserSettingsData(tempUpdates);\n if (status === 200) {\n console.log(\"Removing old cookies\");\n cookies.remove(COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName));\n cookies.remove(COOKIE_NAMES.siteColumnsChecked.replace(\"{orgName}\", orgInfo.orgName).replace(\"{branchName}\", branchInfo.branchName));\n }\n else {\n console.log(\"Failed to update back-end with cookie data\")\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n async function updateUserSettingsData(settingsName, settingsDataIn){\n const lsettingsName = settingsName;\n const lsettingsDataIn = settingsDataIn;\n try {\n var updateData;\n \n updateData = userSettingsData.formatSettings(lsettingsName, lsettingsDataIn);\n const { status, data } = await userSettingsData.updateUserSettingsData(updateData);\n const { error } = data;\n const settingsData = data.data;\n\n if (status === 404) {\n console.log(\"updateUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n \n } catch (error) {\n console.error(error);\n }\n }\n\n useEffect(() => {\n if (!useCookiesForData){\n fetchUserSettingsData();\n }\n fetchTankData();\n }, [site]);\n\n React.useEffect(() => {\n if (tankInfo.json_data !== undefined) {\n FilterData([], false);\n }\n }, [displayUnits, tankInfo, currentSearchTerm])\n\n React.useEffect(() => {\n var t_tableCols = tableCols;\n for (var i = 0; i < t_tableCols.length; i++) {\n\n if (t_tableCols[i].field === 'fluidName') {\n t_tableCols[i].width = fluidColWidth;\n }\n if (t_tableCols[i].field === 'name') {\n t_tableCols[i].width = tankColWidth;\n }\n }\n setTableCols(t_tableCols);\n }, [fluidColWidth, tankColWidth])\n\n // Update the table columns. Triggered when checkboxlist changes,\n useEffect(() => {\n let newColumns = [];\n var i, k;\n if (columnOrder.length){\n columnOrder.forEach(function (item, index) {\n for (i=0; i < columnsSite.length; i++){\n if (columnsSite[i].field === item.key){\n if (checked2[item.key]){\n newColumns.push(columnsSite[i]);\n }\n break;\n }\n }\n });\n setTableCols(newColumns);\n }\n }, [checked2, columnOrder]);\n\n useEffect(() => {\n let tempOrder = []\n var cookies = new Cookies();\n var i;\n \n if (columnOrder.length == 0 && useCookiesForData){\n var tColumnOrder = cookies.get(COOKIE_NAMES.siteColumnsOrder.replace(\"{orgName}\",orgInfo.orgName).replace(\"{branchName}\",branchInfo.branchName));\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsSite.length; i++){\n if (columnsSite[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n }\n }, []);\n\n // Render function to help display table data\n function renderLink(params) {\n return (\n \n {params.value}\n \n );\n };\n\n function renderStatus(params) {\n var status = params.value;\n var status_key = \"ok\"\n var status_disp = t(\"ok\");\n\n if ((typeof status) !== \"string\") {\n status_disp = \"\";\n status_key = \"\";\n }\n else if (status.includes(\"Comm\")) {\n status_disp = t(\"comm\");\n status_key = \"comm\";\n }\n else if (status.includes(\"SensErr\")){\n status_disp = t(\"senserr\");\n status_key = \"sensorError\";\n }\n else if (status.includes(\"Crit\")) {\n status_disp = t(\"crit\");\n status_key = \"crit\";\n }\n else if (status.includes(\"Batt\")) {\n status_disp = t(\"batt\");\n status_key = \"batt\";\n }\n else if (status.includes(\"High\")) {\n status_disp = t(\"high\");\n status_key = \"high\";\n }\n else if (status.includes(\"Low\")) {\n status_disp = t(\"low\");\n status_key = \"low\";\n }\n else if (status.includes(\"SensW\") && params.row.showSensorWarning){\n status_disp = t(\"sensw\");\n status_key = \"sensorWarning\"\n }\n else if (status.includes(\"None\")) {\n status_disp = t(\"none\");\n status_key = \"none\"\n }\n var param_display = \"\";\n if (status !== undefined) {\n var param_display_list = status.toLowerCase().split(\",\");\n for (var i = 0; i < param_display_list.length; i++) {\n param_display_list[i] = t(param_display_list[i]);\n }\n param_display = param_display_list.join(\",\");\n }\n return (\n \n \n \n );\n }\n\n // Add the nav links to the data\n function rowData() {\n var data;\n var row;\n for (row = 0; row < data.length; row += 1) {\n data[row]['id'] = row + 1;\n data[row]['last_read'] = '11-16-2020T06:30:20';\n }\n return data;\n };\n\n \n function FilterData(filterData, update = false) {\n var addItem = false;\n var newData = [];\n var tstatus = [];\n var ullage_pct = 0;\n var filters = {};\n var data_DTE = 0;\n if (update) {\n var cookies = new Cookies();\n setFiltersInfo(filterData);\n cookies.set(\"branchFilter\" + branchInfo.branchId, JSON.stringify(filterData), {path: \"/\", maxAge: 1000000 });\n filters = filterData;\n }\n else {\n filters = filtersInfo;\n }\n console.log(filters);\n for (var i = 0; i < tankInfo.json_data.length; i++) {\n addItem = true;\n if (filters.fluidName.length && addItem) {\n for (var j = 0; j < filters.fluidName.length; j++) {\n if (-1 == filters.fluidName[j].indexOf(tankInfo.json_data[i].fluidName)) {\n addItem = false;\n }\n else {\n addItem = true;\n break;\n }\n }\n }\n\n if (filters.tagName.length && addItem) {\n addItem = false;\n if ('Tags' in tankInfo.json_data[i]) {\n for (var j = 0; j < tankInfo.json_data[i].Tags.length; j++) {\n for (var k = 0; k < filters.tagName.length; k++) {\n if (-1 !== filters.tagName[k].indexOf(tankInfo.json_data[i].Tags[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n }\n\n if (filters.statusName.length && addItem) {\n tstatus = tankInfo.json_data[i].Status.split(\",\");\n addItem = false;\n for (var j = 0; j < tstatus.length; j++) {\n for (var k = 0; k < filters.statusName.length; k++) {\n if (-1 !== filters.statusName[k].indexOf(tstatus[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n\n if (filters.DTE && (filters.DTE !== \"noFilter\") && addItem) {\n data_DTE = (tankInfo.json_data[i].DTE);\n if (data_DTE >= parseFloat(filters.DTE) || null === data_DTE || undefined === data_DTE) {\n addItem = false;\n }\n }\n\n if ((filters.ullageRange[0] > 0 || filters.ullageRange[1] < 100) && addItem) {\n ullage_pct = parseFloat(tankInfo.json_data[i].ullage_pct);\n if (ullage_pct < filters.ullageRange[0] || ullage_pct > filters.ullageRange[1]) {\n addItem = false;\n }\n }\n\n if (currentSearchTerm){\n if(tankInfo.json_data[i].name){\n let tankName = tankInfo.json_data[i].name.toUpperCase();\n let lSearchTerm = currentSearchTerm.toUpperCase();\n if(!tankName.includes(lSearchTerm)){\n addItem = false;\n }\n }\n else{\n addItem = false;\n }\n }\n\n if (addItem) {\n newData.push(tankInfo.json_data[i]);\n }\n else {\n console.log(tankInfo.json_data[i]);\n }\n }\n newData = createTableData(newData, filters.showSensorWarning);\n setTableRows(newData);\n createCSVFileName(site);\n createCSVData(newData);\n createPDFData(newData);\n };\n\n const [openInvite, setInviteOpen] = React.useState(false);\n\n const handleInviteOpen = () => {\n setInviteOpen(true);\n };\n\n const handleInviteClose = () => {\n setInviteOpen(false);\n };\n\n function updateDisplayUnits(input_units) {\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.displayUnits, input_units, { path: \"/\", maxAge: 1000000 });\n setDisplayUnits(input_units);\n };\n\n const handleInviteAsViewer = async () => {\n var recip = recipient.current.value.trim().replace(/,{1,}$/, '');\n recip = recip.trim();\n var recipientArr = recip.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; ++index) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n setInviteOpen(false);\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": siteId,\n \"Role\": \"Viewer\",\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/invite', requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert(t(\"invitationHasBeenSent\"));\n sent = true;\n }\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n const handleInviteAsEditor = async () => {\n var recip = recipient.current.value.trim().replace(/,{1,}$/, '');\n recip = recip.trim();\n var recipientArr = recip.split(',');\n var sent = false;\n\n for (var index = 0; index < recipientArr.length; ++index) {\n var userToInvite = recipientArr[index];\n\n if (isValidEnteredEmail(userToInvite)) {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n setInviteOpen(false);\n\n var body = JSON.stringify(\n {\n \"Recipient\": userToInvite,\n \"Id\": siteId,\n \"Role\": \"Editor\",\n 'User': user.attributes.email\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/invite', requestOptions)\n .then(async response => {\n const data = await response.json();\n if (response.status == 200) {\n if (!sent) {\n alert(t(\"invitationHasBeenSent\"));\n sent = true;\n }\n }\n else {\n alert(data);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n }\n }\n };\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for site data...\");\n csvLink.current.link.click();\n };\n\n const downloadPDFReport = (event) => {\n console.log(\"Downloading PDF for site data...\");\n\n const pdf = new jsPDF('l', 'pt', 'a4');\n\n var img = new Image();\n img.src = 'data:image/png;base64,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';\n pdf.addImage(img, 'png', 40, 0, 240, 50);\n\n pdf.autoTable({ html: '#report-data-table' });\n pdf.autoTable({\n body: pdfReportConfigHeaders,\n startY: 50,\n });\n\n pdf.autoTable({ html: '#report-table' });\n pdf.autoTable({\n head: pdfReportDataHeaders,\n body: pdfReportData,\n });\n\n pdf.save(pdfFileName);\n };\n\n // POST data to API to schedule a report\n const scheduleRecurringReport = async (showing, weekly, recurrTime, state, recurrMonthlyDay, recurrMonthlyWeek, recurrUnits, recurringInput) => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n\n // Adjust client's time to UTC\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var adjustedReportTime = parseInt(recurrTime) + clientTimeZoneOffset;\n\n if (adjustedReportTime < 0) {\n adjustedReportTime = adjustedReportTime + 24;\n }\n if (adjustedReportTime > 23) {\n adjustedReportTime = adjustedReportTime - 24;\n }\n\n var now = new Date();\n var then = new Date();\n\n now.setHours(parseInt(recurrTime), 0, 0, 0);\n then.setHours(parseInt(recurrTime), 0, 0, 0);\n var n = now.getTimezoneOffset() / 60;\n then.setHours(then.getHours() + n);\n var timeOffset = 0;\n\n if (now.getDate() < then.getDate()) {\n // console.log(\"UTC time conversion results in days to be shifted forward one ...\");\n timeOffset = 1;\n\n if (recurringInput == \"FirstOfMonth\") {\n recurringInput = \"SecondOfMonth\"\n }\n \n if (weekly) {\n var tuesdayUpdated = false;\n var wednesdayUpdated = false;\n var thursdaydayUpdated = false;\n var fridaydayUpdated = false;\n var saturdayUpdated = false;\n var sundayUpdated = false;\n\n var stateCopy = JSON.parse(JSON.stringify(state));\n\n if (stateCopy['monday']) {\n state['monday'] = false;\n state['tuesday'] = true;\n tuesdayUpdated = true;\n }\n if (stateCopy['tuesday']) {\n if (!tuesdayUpdated)\n state['tuesday'] = false;\n state['wednesday'] = true;\n wednesdayUpdated = true;\n }\n if (stateCopy['wednesday']) {\n if (!wednesdayUpdated)\n state['wednesday'] = false;\n state['thursday'] = true;\n thursdaydayUpdated = true;\n }\n if (stateCopy['thursday']) {\n if (!thursdaydayUpdated)\n state['thursday'] = false;\n state['friday'] = true;\n fridaydayUpdated = true;\n }\n if (stateCopy['friday']) {\n if (!fridaydayUpdated)\n state['friday'] = false;\n state['saturday'] = true;\n saturdayUpdated = true;\n }\n if (stateCopy['saturday']) {\n if (!saturdayUpdated)\n state['saturday'] = false;\n state['sunday'] = true;\n sundayUpdated = true;\n }\n if (stateCopy['sunday']) {\n if (!sundayUpdated)\n state['sunday'] = false;\n state['monday'] = true;\n }\n } else if (!weekly && showing) {\n switch (recurrMonthlyDay) {\n case 'Sunday':\n recurrMonthlyDay = 'Monday';\n break;\n case 'Monday':\n recurrMonthlyDay = 'Tuesday';\n break;\n case 'Tuesday':\n recurrMonthlyDay = 'Wednesday';\n break;\n case 'Wednesday':\n recurrMonthlyDay = 'Thursday';\n break;\n case 'Thursday':\n recurrMonthlyDay = 'Friday';\n break;\n case 'Friday':\n recurrMonthlyDay = 'Saturday';\n break;\n case 'Saturday':\n recurrMonthlyDay = 'Sunday';\n break;\n }\n }\n } else if (now.getDate() > then.getDate()) {\n // console.log(\"UTC time conversion results in days to be shifted back one ...\");\n timeOffset = -1;\n\n if (recurringInput == \"FirstOfMonth\") {\n recurringInput = \"LastOfMonth\"\n }\n\n if (weekly) {\n var tuesdayUpdated = false;\n var wednesdayUpdated = false;\n var thursdaydayUpdated = false;\n var fridaydayUpdated = false;\n var saturdayUpdated = false;\n var mondayUpdated = false;\n\n var stateCopy = JSON.parse(JSON.stringify(state));\n\n if (stateCopy['sunday']) {\n state['sunday'] = false;\n state['saturday'] = true;\n saturdayUpdated = true;\n }\n\n if (stateCopy['saturday']) {\n if (!saturdayUpdated)\n state['saturday'] = false;\n state['friday'] = true;\n fridaydayUpdated = true;\n }\n\n if (stateCopy['friday']) {\n if (!fridaydayUpdated)\n state['friday'] = false;\n state['thursday'] = true;\n thursdaydayUpdated = true;\n }\n\n if (stateCopy['thursday']) {\n if (!thursdaydayUpdated)\n state['thursday'] = false;\n state['wednesday'] = true;\n wednesdayUpdated = true;\n }\n\n if (stateCopy['wednesday']) {\n if (!wednesdayUpdated)\n state['wednesday'] = false;\n state['tuesday'] = true;\n tuesdayUpdated = true;\n }\n\n if (stateCopy['tuesday']) {\n if (!tuesdayUpdated)\n state['tuesday'] = false;\n state['monday'] = true;\n mondayUpdated = false;\n }\n\n if (stateCopy['monday']) {\n if (!mondayUpdated)\n state['monday'] = false;\n state['sunday'] = true;\n }\n } else if (!weekly && showing) {\n switch (recurrMonthlyDay) {\n case 'Sunday':\n recurrMonthlyDay = 'Saturday';\n break;\n case 'Monday':\n recurrMonthlyDay = 'Sunday';\n break;\n case 'Tuesday':\n recurrMonthlyDay = 'Monday';\n break;\n case 'Wednesday':\n recurrMonthlyDay = 'Tuesday';\n break;\n case 'Thursday':\n recurrMonthlyDay = 'Wednesday';\n break;\n case 'Friday':\n recurrMonthlyDay = 'Thursday';\n break;\n case 'Saturday':\n recurrMonthlyDay = 'Friday';\n break;\n }\n }\n } else {\n // No day shifting required ...\n }\n\n var body = JSON.stringify(\n {\n \"RecurStatus\": recurringInput,\n \"Weekly\": weekly,\n \"Monthly\": !weekly && showing,\n \"OrgName\": orgInfo.orgName,\n \"RecurrTime\": adjustedReportTime,\n \"RecurrDays\": state,\n \"MonthlyDay\": recurrMonthlyDay,\n \"MonthlyWeek\": recurrMonthlyWeek,\n \"Units\": recurrUnits,\n \"Shift\": timeOffset,\n \"TimeZoneAdjust\": clientTimeZoneOffset,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/reports', requestOptions)\n .then(response => {\n });\n });\n } catch (e) {\n console.log(e);\n };\n };\n \n // GET data from API to schedule a report\n const getUserRecurringReportRequest = async (event) => {\n let user = await Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Fetching site, user reports schedule...\")\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/reports', requestOptions)\n .then(results => results.json())\n .then(data => {\n setReportsMenuItems(data.body);\n }).catch((error) => {\n });\n });\n };\n\n // DELETE scheduled report \n const deleteRecurrSchedule = async (event) => {\n let user = await Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Deleting site, user reports schedule...\")\n\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/reports', requestOptions)\n .then(results => results.json())\n .then(data => {\n }).catch((error) => {\n console.log(error);\n });\n });\n };\n\n const handleTabChange = (event, newValue) => {\n var cookies = new Cookies();\n var setting = \"false\";\n\n if (isCardView == 0) {\n setting = \"true\";\n }\n\n setCardView(newValue);\n cookies.set('SiteisCardView', setting, { path: \"/\", maxAge: 1000000 });\n };\n\n if (!dataReady) {\n return ( \n {t(\"loadingTankData\")}\n
\n \n );\n }\n\n return (\n \n \n \n \n \n \n \n \n {isEditor\n ? \n \n \n \n \n \n\n \n :
}\n \n \n \n \n
\n {isEditor\n ? \n \n \n \n {t(\"invite\")}\n \n \n \n :
}\n \n \n \n \n \n {isEditor && \n \n \n \n \n \n }\n \n \n \n \n\n \n {t(\"invite\")}\n \n \n {t(\"toInviteAUser\")}\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n
\n \n {setCurrentSearchTerm(value);}}\n displayUnits={displayUnits}\n setDisplayUnits={updateDisplayUnits}\n hideColumnSelector={isCardView == 1 ? true : false}\n onCSVDownloadRequest={downloadCSVReport}\n onPDFDownloadRequest={downloadPDFReport}\n onRecurringReportRequest={scheduleRecurringReport}\n onGetUserRecurringReportRequest={getUserRecurringReportRequest}\n deleteRecurrentReportRequest={deleteRecurrSchedule}\n reportingMenuItems={reportsMenuItems} />\n \n \n \n
\n \n
\n
\n \n \n {tableRows.map((t, id) =>\n \n \n )}\n \n \n \n \n \n \n \n \n )\n}\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Link as RouterLink, useHistory, useParams } from \"react-router-dom\";\nimport { Auth } from 'aws-amplify';\nimport {\n Button,\n Divider,\n DialogTitle,\n DialogContent,\n DialogActions,\n Dialog,\n FormGroup,\n Grid,\n IconButton,\n TextField,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport LinearProgress from '@material-ui/core/LinearProgress';\nimport HelpIcon from '@material-ui/icons/Help';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport { host } from \"../../data\";\nimport Geocode from \"react-geocode\";\nimport FormControl from \"@material-ui/core/FormControl\";\nimport InputLabel from \"@material-ui/core/InputLabel\";\nimport Select from \"@material-ui/core/Select\";\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport { countries } from \"../../data\";\nimport { isValidEmail } from '../../helpers/isValidEmail';\nimport { useTranslation } from 'react-i18next';\nimport { ConsoleLogger } from \"@aws-amplify/core\";\n\nGeocode.setApiKey(\"AIzaSyDZxhyTnVftkwNDwT2dR8ygpsztsBBwrxs\"); // https://www.npmjs.com/package/react-geocode\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n textInput: {\n margin: theme.spacing(1),\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 360\n },\n formControlShort: {\n margin: theme.spacing(1),\n minWidth: 180\n },\n preLoader: {\n display: 'block',\n margin: `${theme.spacing(3)}px auto`,\n },\n}));\n\nexport default function SiteSettingsPage({ orgInfo, branchInfo, siteInfo, resetSiteData }) {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const history = useHistory();\n // Get params so we can read the url path parameters\n const params = useParams();\n const site = params.siteName === undefined ? null : params.siteName;\n const siteId = params.siteName === undefined ? null : siteInfo.sitesNavDict[site][0];\n\n const [processingSave, setProcessingSave] = useState(false);\n // TODO: SiteSettingPage - Handle case where it's an edit instead of new.\n //const site_name = useRef(\"\");\n const site_name = useRef(\"\");\n const [siteName, setSiteName] = useState(\"\")\n const site_address_line_1 = useRef(\"\");\n const [siteAddress, setSiteAddress] = useState(\"\");\n const site_phone = useRef(\"\");\n const [sitePhone, setSitePhone] = useState(\"\");\n const site_contact_name = useRef(\"\");\n const [siteContactName, setSiteContactName] = useState(\"\");\n const site_email = useRef(\"\");\n const [siteEmail, setSiteEmail] = useState(\"\");\n const site_city = useRef(\"\");\n const [siteCity, setSiteCity] = useState(\"\");\n\n const [country, setCountry] = useState(\"\");\n const [region, setRegion] = useState(\"\");\n const site_tag = useRef(\"\");\n const [siteTag, setSiteTag] = useState(\"\");\n\n const [orgTags, setOrgTags] = useState([]);\n const [selectAddTag, setSelectAddTag] = useState(\"\");\n\n const [selectADU_AVG, setSelectADU_AVG] = useState(1);\n const avgSettings = [{key:1, label: \"1 \" + t(\"month_single\")}, \n {key:2, label: \"2 \"+t(\"months_plural\")}, \n {key:3, label: \"3 \"+t(\"months_plural\")},\n {key:105, label: \"5 \"+t(\"days_plural\")},\n {key:107, label: \"7 \"+t(\"days_plural\")},\n ];\n \n const [dataReady, setDataReady] = useState(false);\n\n const [averageHelpOpen, setAverageHelpOpen] = useState(false);\n const handleAverageHelpOpen = () => {\n setAverageHelpOpen(true);\n };\n const handleAverageHelpClose = () => {\n setAverageHelpOpen(false);\n };\n console.log(selectADU_AVG);\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n const sessionToken = data.signInUserSession.idToken.jwtToken;\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/availabledevices', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error == \"OK\") {\n setOrgTags(data.orgTags);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error);\n });\n });\n }, [site]);\n\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n if (null !== site) {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId, requestOptions)\n .then(results => results.json())\n .then(data => {\n setSiteName(data.name);\n setSiteCity(data.city);\n setSiteAddress(data.address);\n\n if (data.phone) {\n setSitePhone(data.phone);\n }\n\n setSiteContactName(data.contact_name)\n setSiteEmail(data.contact_email)\n setCountry(data.country);\n setRegion(data.state);\n\n if (data.tags) {\n setSiteTag(data.tags);\n }\n setSelectADU_AVG(data.adu_avg);\n\n setDataReady(true);\n }).catch((error) => {\n console.log(error)\n })\n }\n else { //New Tank\n setDataReady(true);\n }\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n fetch(host + '/orgs/' + orgInfo.orgId + '/availabledevices', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error = \"OK\") {\n setOrgTags(data.orgTags);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n });\n\n });\n }, [site]);\n\n function isValidEnteredEmail(value) {\n if (value === \"\")\n return (true);\n\n if (isValidEmail(value))\n return (true);\n\n alert(t(\"youHaveEnteredAnInvalidEmail\"));\n return (false);\n };\n\n function isValidPhoneNumber(value) {\n if (value === \"\")\n return (true);\n\n if ((/^\\d{7,}$/).test(value.replace(/[\\s()+\\-\\.]|ext/gi, ''))) {\n return (true);\n }\n alert(t(\"youHaveEnteredAnInvalidPhone\"));\n return (false);\n }\n\n const handleChangeCountry = (event) => {\n setCountry(event.target.value);\n };\n\n const handleChangeRegion = (event) => {\n setRegion(event.target.value);\n };\n\n const handleAddTag = (tag) => {\n var tempTags = siteTag;\n if (tag !== null) {\n if (tempTags !== null && tempTags !== \"\") {\n tempTags = tempTags + \",\" + tag;\n }\n else {\n tempTags = tag;\n }\n\n setSiteTag(tempTags);\n }\n setSelectAddTag(tag);\n }\n\n function validateForm() {\n var ret = 1;\n\n if (site_name.current.value === \"\") {\n alert(t(\"nameInvalid\"));\n ret = 0;\n }\n\n if (site_address_line_1.current.value === \"\") {\n alert(t(\"addressInvalid\"));\n ret = 0;\n }\n\n if (region === \"\") {\n alert(t('stateRegionInvalid'));\n ret = 0;\n }\n\n if (country === \"\") {\n alert(t(\"countryInvalid\"));\n ret = 0;\n }\n\n if (site_city.current.value === \"\") {\n alert(t(\"cityInvalid\"));\n ret = 0;\n }\n\n return ret;\n }\n\n const handleClick = async () => {\n setProcessingSave(true);\n handleClick2()\n }\n const handleClick2 = async () => {\n if (isValidEnteredEmail(site_email.current.value) && isValidPhoneNumber(site_phone.current.value) && validateForm()) {\n console.log(\"Save Site Data\");\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n try {\n var address = site_address_line_1.current.value + ' ' + site_city.current.value + ' ' + region + ' ' + country;\n if (site_address_line_1.current.value !== \"\") {\n Geocode.fromAddress(address).then(\n (response) => {\n const { lat, lng } = response.results[0].geometry.location;\n const temp_site_name = site_name.current.value;\n var tTags = site_tag.current.value;\n var TagsList = tTags.split(\",\");\n for (var i = 0; i < TagsList.length; i++) {\n TagsList[i] = TagsList[i].trim();\n }\n tTags = TagsList.join();\n setSiteTag(tTags);\n var body = JSON.stringify(\n {\n \"Name\": site_name.current.value,\n \"Address\": site_address_line_1.current.value,\n \"Phone\": site_phone.current.value,\n \"ContactName\": site_contact_name.current.value,\n \"Email\": site_email.current.value,\n \"Country\": country,\n \"City\": site_city.current.value,\n \"State\": region,\n \"Latitude\": lat,\n \"Longitude\": lng,\n \"ParentId\": branchInfo.branchId,\n 'User': user.attributes.email,\n \"Tags\": tTags,\n \"adu_avg\": selectADU_AVG\n }\n );\n\n if (siteId) {\n //UpdateSite\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId, requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status };\n })\n .then(data => {\n if (data.status === 200) {\n resetSiteData(temp_site_name);\n //setProcessingSave(false); // For Test\n }\n else {\n setProcessingSave(false);\n console.log(data);\n alert(data.body);\n }\n });\n }\n else {\n //New Site\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status };\n })\n .then(data => {\n if (data.status === 200) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName) };\n resetSiteData();\n history.push(url);\n }\n else {\n setProcessingSave(false);\n console.log(data);\n alert(data.body);\n }\n });\n }\n },\n (error) => {\n console.log(error);\n }\n );\n } else {\n const temp_site_name = site_name.current.value;\n var tTags = site_tag.current.value;\n var TagsList = tTags.split(\",\");\n\n for (var i = 0; i < TagsList.length; i++) {\n TagsList[i] = TagsList[i].trim();\n }\n\n tTags = TagsList.join();\n setSiteTag(tTags);\n\n var body = JSON.stringify(\n {\n \"Name\": site_name.current.value,\n \"Address\": \"\",\n \"Phone\": site_phone.current.value,\n \"ContactName\": site_contact_name.current.value,\n \"Email\": site_email.current.value,\n \"Country\": country,\n \"City\": site_city.current.value,\n \"State\": region,\n \"Latitude\": 0,\n \"Longitude\": 0,\n \"ParentId\": branchInfo.branchId,\n 'User': user.attributes.email,\n \"Tags\": tTags\n }\n );\n\n if (siteId) {\n //UpdateSite\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId, requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status };\n })\n .then(data => {\n if (data.status === 200) {\n resetSiteData(temp_site_name);\n //setProcessingSave(false); // For Test\n }\n else {\n setProcessingSave(false);\n alert(data.body);\n }\n });\n }\n else {\n //New Site\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites', requestOptions)\n .then(async response => {\n return { body: await response.json(), status: response.status };\n })\n .then(data => {\n if (data.status === 200) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName) };\n resetSiteData();\n history.push(url);\n }\n else {\n setProcessingSave(false);\n alert(data.body);\n }\n });\n }\n }\n } catch (err) {\n console.log(err);\n setProcessingSave(false);\n } finally {\n \n }\n });\n } catch (e) {\n console.log(e);\n setProcessingSave(false);\n }\n }\n else{\n setProcessingSave(false);\n }\n };\n const handleCancelClick = () => {\n if (siteId) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName).concat('/sites/').concat(site) };\n history.push(url);\n }\n else {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName) };\n history.push(url);\n }\n };\n \n return (\n !dataReady ? \n {t(\"loadingSiteData\")}\n \n :\n \n \n \n \n {site === null\n ? \n : }\n \n \n \n {processingSave && \n \n }\n \n
\n \n {t(\"siteDetails\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setSiteName(e.target.value);\n }\n }}\n label={t(\"siteName\")}\n variant='filled'\n className={classes.textInput} />\n setSiteAddress(e.target.value)}\n label={t(\"address\")}\n variant='filled'\n className={classes.textInput} />\n setSiteCity(e.target.value)}\n label={t(\"city\")}\n variant='filled'\n className={classes.textInput} />\n \n {t(\"country\")}\n \n {countries.map((country) => (\n \n {t(country.translationKey)}\n \n ))}\n \n \n \n {t(\"stateProvinceRegion\")}\n \n {country\n ? countries\n .find(({ countryName }) => countryName === country)\n .regions.map((region) => (\n \n {t(region.translationKey)}\n \n )) : []}\n \n \n \n {t(\"averagingWindow\")}\n \n {\n setSelectADU_AVG(e.target.value);\n }}>\n {avgSettings.map(avgListItem => \n {avgListItem.label}\n )}\n \n \n \n \n \n \n \n \n \n \n {\n const regex = /^([, a-zA-Z0-9\\-]){0,200}$/i;\n if (regex.test(e.target.value)) {\n setSiteTag(e.target.value);\n }\n }}\n label={t(\"tags\")}\n helperText={t(\"commaSeperated\")} />\n \n \n {\n for (var i = 0; i < orgTags.length; i++) {\n if (e.target.value === orgTags[i]) {\n handleAddTag(orgTags[i]);\n break;\n }\n }\n }}>\n {orgTags.map(orgTagsListItem => \n {orgTagsListItem}\n )}\n \n \n \n\n \n \n {t(\"siteContact_optional\")}\n \n \n setSiteContactName(e.target.value)}\n label={t(\"name\")}\n variant='filled'\n className={classes.textInput} />\n setSitePhone(e.target.value)}\n label={t(\"phoneNumber\")}\n variant='filled'\n className={classes.textInput} />\n setSiteEmail(e.target.value)}\n label={t(\"email\")}\n variant='filled'\n className={classes.textInput} />\n \n
\n
\n \n \n \n \n {averageHelpOpen && \n {t(\"dataAverageDefinition\")}\n \n \n {t(\"dataAverageExplanation\")}\n \n \n \n \n \n }\n
\n \n )\n}\n","import React, {\n Fragment,\n PureComponent,\n useState,\n useRef\n} from 'react';\nimport {\n Link as RouterLink\n} from 'react-router-dom';\nimport {\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n AreaChart,\n Label,\n ResponsiveContainer,\n ReferenceLine\n} from 'recharts';\nimport makeStyles from \"@material-ui/core/styles/makeStyles\";\nimport useFormatDate from \"../hooks/useFormatDate\";\nimport {\n Typography,\n Grid,\n Button,\n Checkbox,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n FormControl,\n FormControlLabel,\n InputLabel,\n Select,\n MenuItem,\n IconButton,\n Chip,\n Menu\n} from '@material-ui/core';\nimport { FilterList } from \"@material-ui/icons\"\nimport InfoIcon from '@material-ui/icons/Info';\nimport jsPDF from \"jspdf\";\nimport BatteryUnknown from '@material-ui/icons/BatteryUnknown'\nimport AssessmentIcon from '@material-ui/icons/Assessment';\nimport NavigationIcon from '@material-ui/icons/Navigation';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport { CSVLink } from \"react-csv\";\nimport DateFnsUtils from '@date-io/date-fns';\nimport {\n MuiPickersUtilsProvider,\n KeyboardDatePicker,\n} from '@material-ui/pickers';\nimport Cookies from 'universal-cookie';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../../data\";\nimport * as html2canvas from 'html2canvas';\nimport { Tooltip as Tip } from '@material-ui/core';\nimport TankTemplateForm from '../../OrgPage/OrgTemplates/Components/TankTemplateForm';\nimport { useTranslation } from 'react-i18next';\nimport DailyUsage from '../TlmTank/Components/DailyUsage'\nimport { Site } from 'recurly';\n\nclass CustomizedAxisTick extends PureComponent {\n render() {\n const {\n x, y, payload,\n } = this.props;\n var locale = 'en-us'\n return (\n \n {Intl.DateTimeFormat(locale, { year: 'numeric', month: 'numeric', day: 'numeric' }).format(Date.parse(payload.value))}\n \n );\n }\n}\n\nconst useStyles = makeStyles((theme) => ({\n filters: {\n display: 'flex',\n justifyContent: 'flex-end',\n width: '92%',\n },\n chips: {\n '& > *': {\n margin: theme.spacing(0.5),\n marginTop: theme.spacing(1),\n },\n },\n filterCheckbox: {\n marginRight: theme.spacing(1),\n marginTop: '2px'\n },\n control: {\n width: '200px',\n marginRight: '20px'\n },\n grow: {\n flexGrow: 1,\n },\n tableTools: {\n display: 'flex',\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n formControl: {\n marginTop: '10px'\n },\n filterDateRange: {\n marginTop: '15px'\n },\n warningText: {\n color: theme.palette.error.main,\n fontWeight: 'bold'\n }\n}));\n\nconst TankView = ({ tank, siteName, orgInfo, branchInfo, site, siteId, tankId, defTimePeriod, isEditor }) => {\n const { t, i18n } = useTranslation();\n const [latestReadingTime, setLastReadingTime] = useState();\n const classes = useStyles();\n const csvLink = useRef();\n const [timePeriod, setTimePeriod] = useState(defTimePeriod);\n const [showDateRangeFilter, setShowDateRangeFilter] = useState(false);\n const [openFilter, setOpenFilter] = useState(false);\n const [filterApply, setFilterApply] = useState(true);\n const [chartData, setChartData] = useState([]);\n const [tankData, setTankData] = useState([]);\n const [showRawData, setShowRawData] = useState(true);\n const [refLineFillLevel, setRefLineFillLevel] = useState(\"\");\n const [refLineLowLevel, setRefLineLowLevel] = useState(\"\");\n const [refLineCritLevel, setRefLineCritLevel] = useState(\"\");\n const [csvReportData, setCSVReportData] = useState([]);\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [reportsMenu, setReportsMenu] = React.useState(null);\n const [fromDatePickerValue, setFromDatePickerValue] = useState(null);\n const [toDatePickerValue, setToDatePickerValue] = useState(null);\n const [pdfReportData, setPDFReportData] = useState([]);\n const [pdfReportDataHeaders, setPDFReportDataHeaders] = useState([]);\n const [pdfReportConfigHeaders, setPDFReportConfigHeaders] = useState([]);\n const [pdfFileName, setPDFFileName] = useState('reports');\n const [openTankSettingsView, setOpenTankSettingsView] = useState(false);\n const [dailyUsageData, setDailyUsageData] = useState([]);\n const [openReplaceBatteriesDialogue, setOpenReplaceBatteriesDialogue] = useState(false);\n const dataTypeList = [\n { type: \"volume\", label: t(\"inventory\"), yLabel: t(\"volumeUnit_nospace\"), yRange:[0, 'auto'], id: 0 },\n { type: \"volume_pct\", label: t(\"inventoryPercent\"), yLabel: t(\"percentSign\"), yRange:[0, 'auto'], id: 1},\n { type: \"ullage\", label: t(\"ullage\"), yLabel: t(\"volumeUnit_nospace\"), yRange:[0, 'auto'], id: 2 },\n { type: \"batt_chart\", label: t(\"batter\"), yLabel: t(\"percentSign\"), yRange:[0, 100], id: 3 },\n { type: \"batt\", label: t(\"batter_raw\"), yLabel: t(\"percentSign\"), yRange:[0, 100], id: 4 },\n { type: \"rssi\", label: t(\"rfSignalStrength\"), yLabel: \" \", yRange:[0, 100], id: 5 },\n { type: \"SRC\", label: t(\"sensorReadingCode\"), yLabel: \" \", yRange:[0, 10], id: 6 },\n { type: \"SRSSI\", label: t(\"sensorSignalStrength\"), yLabel: \" \", yRange:[0, 10], id: 7 }\n ];\n const [dataType, setDataType] = useState(dataTypeList[0]);\n const [dataType2, setDataType2] = useState(dataTypeList[6]);\n const [dataTypeTemp, setDataTypeTemp] = useState(dataTypeList[0]);\n const csvHeaders = [\n { label: t(\"readingTime\"), key: 'ReadingTime_CSV' },\n { label: t(\"serial\"), key: 'Serial' },\n { label: t(\"family\"), key: 'Family' },\n { label: t(\"fluidHeight\"), key: 'fluid_height' },\n { label: t(\"ullage\"), key: 'ullage' },\n { label: t(\"inventory\"), key: 'volume' },\n { label: t(\"inventoryPercent\"), key: 'volume_pct' },\n { label: t(\"src\"), key: 'SRC' },\n { label: t(\"srssi\"), key: 'SRSSI' },\n { label: t(\"rssi\"), key: 'rssi' },\n { label: t(\"temperature\"), key: 'Temperature' },\n { label: t(\"batter\"), key: 'batt' },\n ];\n\n const pdfHeaders = [\n { label: t(\"readingTime\"), key: 'ReadingTime_PDF' },\n { label: t(\"serial\"), key: 'Serial' },\n { label: t(\"family\"), key: 'Family' },\n { label: t(\"fluidHeight\"), key: 'fluid_height' },\n { label: t(\"ullage\"), key: 'ullage' },\n { label: t(\"inventory\"), key: 'volume' },\n { label: t(\"inventoryPercent\"), key: 'volume_pct' },\n { label: t(\"src\"), key: 'SRC' },\n { label: t(\"srssi\"), key: 'SRSSI' },\n { label: t(\"rssi\"), key: 'rssi' },\n { label: t(\"temperature\"), key: 'Temperature' },\n { label: t(\"batter\"), key: 'batt' },\n ];\n\n \n\n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n //return inputTimeStamp / (1000 * 60 * 60 * 24) + 25569;\n let ret = inputTimeStamp;\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ').replace(/-/g, '/');\n ret = convertUTCDateToLocalDate(new Date(ret));\n }\n // ret; //\n return ret;\n }\n\n function convertUTCDateToLocalDate(date) {\n //var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n var newDate = date;\n var offset = date.getTimezoneOffset() / 60;\n var hours = date.getHours();\n\n newDate.setHours(hours - offset);\n\n var month = '' + (newDate.getMonth() + 1),\n day = '' + newDate.getDate(),\n year = newDate.getFullYear(),\n hour = newDate.getHours(),\n minute = newDate.getMinutes(),\n second = newDate.getSeconds();\n\n if (month.length < 2)\n month = '0' + month;\n\n if (day.length < 2)\n day = '0' + day;\n\n if (minute < 10)\n minute = '0' + minute;\n\n if (hour < 10)\n hour = '0' + hour;\n\n var prettiestStr = month + '/' + day + '/' + year + ' ' + hour + ':' + minute;\n return prettiestStr;\n // return newDate;\n };\n\n const yyyymmdd = (d) => {\n var date = new Date(d);\n date.toISOString().slice(0, 10).replace(/-/g, \"\");\n return date.toISOString().slice(0, 10).replace(/-/g, \"\");\n };\n\n const applyFilter = () => {\n if (timePeriod == 'Custom') {\n if (fromDatePickerValue == null || fromDatePickerValue == '' || toDatePickerValue == null || toDatePickerValue == '') {\n alert(t(\"notAValidDateRangePleaseTryAgain\"));\n return;\n }\n\n var d1 = Date.parse(fromDatePickerValue);\n var d2 = Date.parse(toDatePickerValue);\n\n if (d1 > d2) {\n alert(t(\"notAValidDateRangePleaseTryAgain\"));\n return;\n\n } else {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n console.log(\"Fetching tank info...\");\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/history?type=' + timePeriod + '&range=' + yyyymmdd(d1) + '-' + yyyymmdd(d2), requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Tank info fetched.\")\n var Data = data;\n setTankData(Data.TankData);\n createCSVData(data.TankData);\n createPDFData(data.TankData);\n });\n });\n\n setFilterApply(true);\n setOpenFilter(false);\n setDataType(dataTypeTemp);\n }\n } else {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n console.log(\"Fetching tank info...\");\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/history?type=' + timePeriod, requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Tank info fetched with filter applied.\")\n\n var Data = data;\n setTankData(Data.TankData);\n createCSVData(data.TankData);\n createPDFData(data.TankData);\n });\n });\n\n setFilterApply(true);\n setOpenFilter(false);\n setDataType(dataTypeTemp);\n }\n };\n //console.log(chartData);\n\n function filterData(data_in) {\n let l_data = [];\n let bat_filt = 10;\n \n for (let i = 0; i < data_in.length; i++){\n if (showRawData){\n l_data.push(data_in[i])\n l_data[l_data.length-1].ReadingTime_Chart = (new Date(l_data[l_data.length-1].ReadingTime_UTC)).toLocaleString();\n if(l_data.length-1 == 0){\n l_data[l_data.length-1].batt_chart = l_data[l_data.length-1].batt;\n }\n else{\n l_data[l_data.length-1].batt_chart = ((parseFloat(l_data[l_data.length-1-1].batt_chart*(bat_filt-1)) + parseFloat(l_data[l_data.length-1].batt))/bat_filt).toFixed(1);\n }\n }\n else{\n if(parseInt(data_in[i].SRC) > 8){\n l_data.push(data_in[i]);\n l_data[l_data.length-1].ReadingTime_Chart = (new Date(l_data[l_data.length-1].ReadingTime_UTC)).toLocaleString();\n if(l_data.length-1 == 0){\n l_data[l_data.length-1].batt_chart = l_data[l_data.length-1].batt;\n }\n else{\n l_data[l_data.length-1].batt_chart = ((parseFloat(l_data[l_data.length-1-1].batt_chart*(bat_filt-1)) + parseFloat(l_data[l_data.length-1].batt))/bat_filt).toFixed(1);\n }\n }\n }\n }\n console.log(l_data);\n setChartData(l_data);\n }\n\n const handleOpenLocation = async () => {\n const label = t('tank');\n const latitude = tank.LatestGps.latitude.toString();\n const longitude = tank.LatestGps.longitude.toString();\n //let url = \"https://google.com/maps/place/\" + latitude + \",\" + longitude;\n let url = \"https://maps.google.com/?q=\" + latitude + \",\" + longitude;\n console.log(url)\n try {\n window.open(url);\n } catch (error) {\n console.log(error);\n }\n };\n\n const handleClose = () => {\n setOpenFilter(false);\n };\n\n const showFilter = () => {\n setOpenFilter(true);\n };\n\n React.useEffect(() => {\n if (tank.LatestMeasurement) {\n setLastReadingTime(new Date(tank.LatestMeasurement.ReadingTime_UTC));\n }\n var l_chartData = tank.TankData;\n \n setTankData(l_chartData);\n l_chartData = CalculateDailyUsageData(l_chartData);\n }, [tank]);\n\n React.useEffect(() => {\n filterData(tankData);\n }, [tankData, showRawData])\n //console.log(chartData);\n\n React.useEffect(() => {\n createCSVFileName(tank.TankInfo.name);\n createCSVData(tank.TankData);\n createPDFData(tank.TankData);\n\n if (dataType.type === 'volume') {\n if (tank.TankInfo.TankShape === \"pulseHUB\") {\n if (tank.TankData.length > 0) {\n var maxTankVolume = tank.TankData[tank.TankData.length - 1].capacity;\n setRefLineFillLevel((parseFloat(tank.TankInfo.FillAlarmValue) / 100) * maxTankVolume);\n setRefLineLowLevel((parseFloat(tank.TankInfo.LowLevelAlarmValue) / 100) * maxTankVolume);\n setRefLineCritLevel((parseFloat(tank.TankInfo.CriticallyLowLevelAlarmValue) / 100) * maxTankVolume);\n }\n }\n else {\n setRefLineFillLevel(tank.TankInfo.FillAlarmValue);\n setRefLineLowLevel(tank.TankInfo.LowLevelAlarmValue);\n setRefLineCritLevel(tank.TankInfo.CriticallyLowLevelAlarmValue);\n }\n }\n else if (dataType.type == 'volume_pct') {\n if (tank.TankInfo.TankShape === \"pulseHUB\") {\n setRefLineFillLevel(parseFloat(tank.TankInfo.FillAlarmValue));\n setRefLineLowLevel(parseFloat(tank.TankInfo.LowLevelAlarmValue));\n setRefLineCritLevel(parseFloat(tank.TankInfo.CriticallyLowLevelAlarmValue));\n }\n else {\n setRefLineFillLevel((100 * parseFloat(tank.TankInfo.FillAlarmValue) / parseFloat(tank.TankInfo.TankCapacity)));\n setRefLineLowLevel((100 * parseFloat(tank.TankInfo.LowLevelAlarmValue) / parseFloat(tank.TankInfo.TankCapacity)));\n setRefLineCritLevel((100 * parseFloat(tank.TankInfo.CriticallyLowLevelAlarmValue) / parseFloat(tank.TankInfo.TankCapacity)));\n }\n }\n else {\n setRefLineFillLevel(\"HIDE\");\n setRefLineLowLevel(\"HIDE\");\n setRefLineCritLevel(\"HIDE\");\n }\n }, [dataType]);\n\n function CalculateDailyUsageData(TankDataIn) {\n var i;\n var dailyUsage=[];\n var l_tankData = TankDataIn;\n const vol_string = tank.TankInfo.VolumeUnit ? (tank.TankInfo.VolumeUnit.includes(\"gal\") ? \"gal\" : \"L\") : \"gal\";\n for (i=0; i self.findIndex(t => t.ReadingDate === l_tankData.ReadingDate) === index);\n for (i=1; i 0) {\n for (k = 0; k < data.length; k++) {\n data[k].ReadingTime_UTC2_CSV = (new Date(data[k].ReadingTime_UTC));\n data[k].ReadingTime_CSV = convertDatetoCSVFormat(data[k].ReadingTime_UTC2_CSV);\n\n tempRow = [];\n for (i = 0; i < csvHeaders.length; i++) {\n if (data[k][csvHeaders[i].key] === null || data[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n csvData.push(tempRow);\n }\n }\n setCSVReportData(csvData);\n };\n\n function createPDFData(data_in) {\n var headerArr = [];\n var headerConfigArr = [];\n var bodyArr = [];\n var i;\n var k;\n let d = (new Date(Date.now()));\n\n headerConfigArr.push([t(\"organizationName\"), orgInfo.orgName]);\n headerConfigArr.push([t(\"branchName\"), branchInfo.branchName]);\n headerConfigArr.push([t(\"siteName\"), site]);\n headerConfigArr.push([t(\"tankName\"), tank.TankInfo.name]);\n headerConfigArr.push([t(\"dateCreated\"), d]);\n headerConfigArr.push([t(\"volumeUnits\"), tank.TankInfo.VolumeUnit]);\n headerConfigArr.push([t(\"distanceUnits\"), tank.TankInfo.DimensionUnit]);\n\n if (tank.TankInfo.isCriticallyLowLevelAlarm == \"true\") {\n headerConfigArr.push([t(\"criticalLevelAlarm\"), tank.TankInfo.CriticallyLowLevelAlarmValue]);\n }\n\n if (tank.TankInfo.isFillLevelAlarm == \"true\") {\n headerConfigArr.push([t(\"highLevelAlarm\"), tank.TankInfo.FillAlarmValue]);\n }\n\n if (tank.TankInfo.isLowLevelAlarm == \"true\") {\n headerConfigArr.push([t(\"lowLevelAlarm\"), tank.TankInfo.LowLevelAlarmValue]);\n }\n\n setPDFReportConfigHeaders(headerConfigArr);\n var data = data_in;\n\n if (data.length > 0) {\n for (i = 0; i < pdfHeaders.length; i++) {\n headerArr.push(pdfHeaders[i].label);\n }\n\n for (k = 0; k < data.length; k++) {\n data[k].ReadingTime_UTC2_PDF = (new Date(data[k].ReadingTime_UTC));\n data[k].ReadingTime_PDF = convertDatetoCSVFormat(data[k].ReadingTime_UTC2_PDF);\n var entryArray = [];\n\n for (i = 0; i < pdfHeaders.length; i++) {\n if (data[k][pdfHeaders[i].key] === null || data[k][pdfHeaders[i].key] === undefined) {\n entryArray.push(\"\");\n }\n else {\n entryArray.push(data_in[k][pdfHeaders[i].key]);\n }\n }\n bodyArr.push(entryArray);\n }\n }\n\n setPDFReportDataHeaders([headerArr]);\n setPDFReportData(bodyArr);\n };\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for tank data...\");\n csvLink.current.link.click();\n };\n\n const downloadPDFReport = (event) => {\n console.log(\"Downloading PDF for tank data...\");\n\n\n html2canvas(document.querySelector(\"#chart-tank-view\"), {\n allowTaint: true,\n useCORS: true\n }).then(canvas => {\n\n const pdf = new jsPDF('l', 'pt', 'a4');\n\n let width = pdf.internal.pageSize.getWidth();\n let height = pdf.internal.pageSize.getHeight();\n\n let widthRatio = width / canvas.width;\n let heightRatio = height / canvas.height;\n\n let ratio = widthRatio > heightRatio ? heightRatio : widthRatio;\n\n var img = new Image();\n img.src = 'data:image/png;base64,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';\n pdf.addImage(img, 'png', 40, 0, 240, 50);\n\n pdf.autoTable({ html: '#report-data-table' });\n pdf.autoTable({\n body: pdfReportConfigHeaders,\n startY: 50,\n });\n\n var imgData = canvas.toDataURL('image/jpeg');\n pdf.addImage(imgData, 'JPEG', 10, pdf.autoTable.previous.finalY, canvas.width * ratio, canvas.height * ratio);\n\n pdf.autoTable({ html: '#report-table' });\n pdf.autoTable({\n startY: pdf.autoTable.previous.finalY + 500,\n head: pdfReportDataHeaders,\n body: pdfReportData,\n });\n\n\n\n pdf.save(pdfFileName);\n });\n };\n\n const handleFilterChange = (event) => {\n setTimePeriod(event.target.value);\n\n if (event.target.value == 'Custom') {\n setShowDateRangeFilter(true);\n } else {\n var cookies = new Cookies();\n cookies.set('tankFilter', event.target.value, { path: \"/\", maxAge: 1000000 });\n setShowDateRangeFilter(false);\n }\n };\n\n const handleTypeChange = (type) => {\n setDataTypeTemp(type);\n };\n\n function renderReportingTime() {\n var time1 = tank.TankInfo.MeasurementTime_1;\n var time2 = tank.TankInfo.MeasurementTime_2;\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n\n if (time1 === undefined) {\n time1 = \"\";\n time2 = \"NONE\"; //do not translate\n }\n else {\n if (time1 && time1 !== \"NONE\") {\n time1 = (parseInt(time1) - clientTimeZoneOffset);\n if (time1 > 23) {\n time1 = time1 - 24;\n }\n if (time1 < 0) {\n time1 = time1 + 24;\n }\n time1 = time1.toString()\n }\n\n if (time2 && time2 !== \"NONE\") {\n time2 = (parseInt(time2) - clientTimeZoneOffset);\n if (time2 > 23) {\n time2 = time2 - 24;\n }\n if (time2 < 0) {\n time2 = time2 + 24;\n }\n time2 = time2.toString()\n }\n\n if (time1 !== 'NONE' && time1 !== \"\") {\n if (time1.length < 2) {\n time1 = \"0\" + time1;\n }\n time1 = time1 + \":00\";\n }\n\n if (time2 !== 'NONE' && time2 !== \"\") {\n if (time2.length < 2) {\n time2 = \"0\" + time2;\n }\n time2 = time2 + \":00\";\n }\n }\n\n return (\n \n {t(\"reportingTimes\")}: {time1}{time2 !== \"NONE\" ? \", \" + time2 : \"\"}\n \n )\n };\n\n const handleOpenTankSettingsView = () => {\n setOpenTankSettingsView(true);\n };\n\n const handleCloseTankSettingsView = () => {\n setOpenTankSettingsView(false);\n };\n //console.log(tank);\n\n const handleOpenReplaceBatteries = () => {\n setOpenReplaceBatteriesDialogue(true);\n }\n const handleCloseReplaceBatteries = () => {\n setOpenReplaceBatteriesDialogue(false);\n }\n const updateDeviceReplaceBatteries = () => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'devices': [{'uid':tank.TankInfo.serial, 'action': \"reset_battery\"}] });\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n var url = host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/resetbattery';\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n handleCloseReplaceBatteries();\n console.log(\"Battery Counter Reset\");\n } else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n }\n else {\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n alert(t(\"unableToResetBatteries\")+\"\\n\"+error);\n })\n });\n \n }\n\n return (\n \n \n \n {t(\"tankView\")}\n \n \n \n \n \n \n {(tank.GpsReadings.length > 0) && \n \n \n \n }\n \n \n \n \n {t(\"tankName_colon\")} {tank.TankInfo.name}\n \n \n {t(\"site_colon\")} {siteName}\n \n \n {t(\"fluid_colon\")} {tank.TankInfo.fluidName}\n \n \n {t(\"lastReading_colon\")} {useFormatDate(latestReadingTime)}\n \n \n {t(\"status_colon\")} {tank.LatestMeasurement ? tank.LatestMeasurement.Status : \"\"}\n \n \n \n \n {t(\"tlmSn_colon\")} {tank.TankInfo.serial}\n \n \n {t(\"family\")+\":\"} {t(tank.LatestMeasurement.Family)}\n \n {renderReportingTime()}\n \n {t(\"tankType_colon\")} {tank.TankInfo.TankType === undefined ? \"\" : tank.TankInfo.TankType}\n \n {tank.TankInfo.Tags !== undefined && tank.TankInfo.Tags.length > 0 && \n {t(\"tags_colon\")} {tank.TankInfo.Tags}\n }\n \n \n \n {t(\"offset_colon\")} {tank.TankInfo.Offset === undefined ? \"\" : tank.TankInfo.Offset}\n \n {(\"true\" == tank.TankInfo.isCriticallyLowLevelAlarm) && \n {t(\"criticalLevel_colon\")} {tank.TankInfo.CriticallyLowLevelAlarmValue}\n }\n {(\"true\" == tank.TankInfo.isFillLevelAlarm) && \n {t(\"highLevel_colon\")} {tank.TankInfo.FillAlarmValue}\n }\n {(\"true\" == tank.TankInfo.isLowLevelAlarm) && \n {t(\"lowLevel_colon\")} {tank.TankInfo.LowLevelAlarmValue}\n }\n \n \n\n
\n
\n {setShowRawData(event.target.checked ? true : false)}}\n name=\"show_raw_data\"\n color=\"primary\"\n />\n }\n />\n
\n
\n {<>\n \n \n }\n
\n\n \n \n {(tank.LatestMeasurement.Family === \"WiFi\" && isEditor) && \n \n \n \n }\n \n \n \n \n \n\n {false &&\n \n \n \n \n \n }\n\n {true &&\n \n \n \n \n \n }\n\n {true &&\n \n setReportsMenu(e.currentTarget)} >\n \n \n \n }\n\n {false &&\n \n setReportsMenu(e.currentTarget)} >\n \n \n \n }\n\n setReportsMenu(null)}\n disableAutoFocusItem>\n downloadCSVReport()}>\n {t(\"exportAsCsv\")}\n \n downloadPDFReport()}>\n {t(\"exportAsPdf\")}\n \n \n
\n \n {tank.TankInfo.serial !== \"\" ?
\n \n \n\n \n\n {'true' == tank.TankInfo.isLowLevelAlarm && }\n {'true' == tank.TankInfo.isCriticallyLowLevelAlarm && }\n {'true' == tank.TankInfo.isFillLevelAlarm && }\n\n }>\n \n\n \n\n \n\n \n \n\n \n
\n \n {t(\"dataType\")}\n\n {\n for (var i = 3; i < dataTypeList.length; i++) {\n if (e.target.value === dataTypeList[i].label) {\n setDataType2(dataTypeList[i]);\n break;\n }\n }\n }}\n >\n {dataTypeList.map((option) => (\n option.id >=3 ? \n {option.label}\n : null\n ))}\n \n \n
\n \n \n\n \n\n \n {false && \n\n \n\n \n\n \n \n\n \n \n {false && }\n
: {t(\"noTankData\")}}\n\n \n {t(\"filter\")}\n \n \n {t(\"dataType\")}\n\n {\n for (var i = 0; i < dataTypeList.length; i++) {\n if (e.target.value === dataTypeList[i].label) {\n handleTypeChange(dataTypeList[i]);\n break;\n }\n }\n }}\n >\n {dataTypeList.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n {t(\"timePeriod\")}\n \n {t(\"last7Days\")}\n {t(\"last30Days\")}\n {t(\"last90Days\")}\n {t(\"lastMonth\")}\n {t(\"lastYear\")}\n {t(\"custom\")}\n \n \n\n {showDateRangeFilter ?\n
\n \n \n \n \n
\n :\n null\n }\n\n
\n \n \n \n \n
\n\n \n {t(\"tankSettings\")} {tank.TankInfo.name}\n \n \n \n \n \n \n \n \n \n {t(\"replacedBatteries\")} {tank.TankInfo.name}\n \n {t(\"replaceBatteriesInfo\")}\n {t(\"replaceBatteriesInfoWarning\")}\n \n \n \n \n \n \n \n \n\n
\n );\n};\n\nexport default TankView;\n","import React, {\n Fragment,\n PureComponent,\n useState,\n useRef\n } from 'react';\n import {\n Link as RouterLink\n } from 'react-router-dom';\n import {\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n AreaChart,\n Label,\n ResponsiveContainer,\n } from 'recharts';\n import makeStyles from \"@material-ui/core/styles/makeStyles\";\n import useFormatDate from \"../../hooks/useFormatDate\";\n import {\n Box,\n Typography,\n Grid,\n MenuItem,\n IconButton,\n Menu,\n Tab,\n Tabs,\n } from '@material-ui/core';\n import jsPDF from \"jspdf\";\n import AssessmentIcon from '@material-ui/icons/Assessment';\n import { CSVLink } from \"react-csv\";\n import Cookies from 'universal-cookie';\n import { Auth } from 'aws-amplify';\n import { host } from \"../../../data\";\n import * as html2canvas from 'html2canvas';\n import { Tooltip as Tip } from '@material-ui/core';\n import { useTranslation } from 'react-i18next';\n import { DataGrid } from '@material-ui/data-grid';\n \n class CustomizedAxisTick extends PureComponent {\n render() {\n const {\n x, y, payload,\n } = this.props;\n var locale = 'en-us'\n return (\n \n {Intl.DateTimeFormat(locale, { year: 'numeric', month: 'numeric', day: 'numeric' }).format(Date.parse(payload.value))}\n \n );\n }\n }\n \n const useStyles = makeStyles((theme) => ({\n filters: {\n display: 'flex',\n justifyContent: 'flex-end',\n width: '92%',\n },\n chips: {\n '& > *': {\n margin: theme.spacing(0.5),\n marginTop: theme.spacing(1),\n },\n },\n control: {\n width: '200px',\n marginRight: '20px'\n },\n grow: {\n flexGrow: 1,\n },\n tableTools: {\n display: 'flex',\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n formControl: {\n marginTop: '10px'\n },\n filterDateRange: {\n marginTop: '15px'\n },\n }));\n \n const DailyUsage = ({ dailyUsageData, tank, siteName, orgInfo, branchInfo, site}) => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const csvLink = useRef();\n const [csvReportData, setCSVReportData] = useState([]);\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [reportsMenu, setReportsMenu] = React.useState(null);\n const [pdfReportData, setPDFReportData] = useState([]);\n const [pdfReportDataHeaders, setPDFReportDataHeaders] = useState([]);\n const [pdfReportConfigHeaders, setPDFReportConfigHeaders] = useState([]);\n const [pdfFileName, setPDFFileName] = useState('reports');\n const [rowData, setRowData] = useState([]);\n const [usageTab, setUsageTab] = useState(0);\n \n const usageColumns = [\n { field: 'ReadingDate', \n headerName: t('readingTime'), \n width: 200 },\n { field: 'volume_disp', \n headerName: t('inventory'),\n sortComparator: (v1, v2, param1, param2) => param1.row.volume - param2.row.volume, \n width: 200 },\n { field: 'deltaV_disp', \n headerName: t('deltaVolume'), \n sortComparator: (v1, v2, param1, param2) => param1.row.deltaV - param2.row.deltaV, \n width: 200 },\n ];\n \n const csvHeaders = [\n { label: t(\"readingTime\"), key: 'ReadingDate' },\n //{ label: t(\"serial\"), key: 'Serial' },\n //{ label: t(\"family\"), key: 'Family' },\n { label: t(\"inventory\"), key: 'volume' },\n { label: t(\"deltaVolume\"), key: 'deltaV' },\n ];\n \n const pdfHeaders = [\n { label: t(\"readingTime\"), key: 'ReadingDate' },\n //{ label: t(\"serial\"), key: 'Serial' },\n //{ label: t(\"family\"), key: 'Family' },\n //{ label: t(\"fluidHeight\"), key: 'fluid_height' },\n //{ label: t(\"ullage\"), key: 'ullage' },\n { label: t(\"inventory\"), key: 'volume' },\n { label: t(\"deltaVolume\"), key: 'deltaV' },\n ];\n \n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n //return inputTimeStamp / (1000 * 60 * 60 * 24) + 25569;\n let ret = inputTimeStamp;\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ').replace(/-/g, '/');\n ret = convertUTCDateToLocalDate(new Date(ret));\n }\n // ret; //\n return ret;\n }\n \n function convertUTCDateToLocalDate(date) {\n //var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n var newDate = date;\n var offset = date.getTimezoneOffset() / 60;\n var hours = date.getHours();\n \n newDate.setHours(hours - offset);\n \n var month = '' + (newDate.getMonth() + 1),\n day = '' + newDate.getDate(),\n year = newDate.getFullYear(),\n hour = newDate.getHours(),\n minute = newDate.getMinutes(),\n second = newDate.getSeconds();\n \n if (month.length < 2)\n month = '0' + month;\n \n if (day.length < 2)\n day = '0' + day;\n \n if (minute < 10)\n minute = '0' + minute;\n \n if (hour < 10)\n hour = '0' + hour;\n \n var prettiestStr = month + '/' + day + '/' + year + ' ' + hour + ':' + minute;\n return prettiestStr;\n // return newDate;\n };\n \n const yyyymmdd = (d) => {\n var date = new Date(d);\n date.toISOString().slice(0, 10).replace(/-/g, \"\");\n return date.toISOString().slice(0, 10).replace(/-/g, \"\");\n };\n \n React.useEffect(() => {\n //console.log(dailyUsageData);\n var cookies = new Cookies();\n setRowData(dailyUsageData);\n createPDFData(dailyUsageData);\n createCSVData(dailyUsageData);\n createCSVFileName(tank.TankInfo.name);\n \n var tisVisual = cookies.get('DataUsageView');\n if (undefined !== tisVisual) {\n if (tisVisual === \"true\") {\n setUsageTab(1);\n }\n else if (tisVisual === 1) {\n setUsageTab(1);\n }\n else {\n setUsageTab(0);\n }\n }\n }, [dailyUsageData]);\n //console.log(dailyUsageData);\n \n \n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n setCSVFileName(fileNamePrefix + '_Usage_' + dformat + '.csv');\n setPDFFileName(fileNamePrefix + '_Usage_' + dformat);\n };\n \n function createCSVData(data_in) {\n var i;\n var k;\n var csvData = [[t(\"organizationName\"), orgInfo.orgName]];\n csvData.push([t(\"branchName\"), branchInfo.branchName]);\n csvData.push([t(\"siteName\"), site]);\n csvData.push([t(\"tankName\"), tank.TankInfo.name]);\n csvData.push([t(\"serial\"), tank.TankInfo.serial]);\n if(data_in.length){\n csvData.push([t(\"family\"),t(data_in[0].Family)]);\n }\n csvData.push([t(\"dateCreated\"), convertDatetoCSVFormat(new Date())]);\n csvData.push([t(\"volumeUnits\"), t(tank.TankInfo.VolumeUnit)]);\n csvData.push(['']);\n \n var tempRow = [];\n \n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n \n csvData.push(tempRow);\n var data = data_in;\n \n if (data.length > 0) {\n for (k = data.length-1; k > 0; k--) {\n data[k].ReadingTime_UTC2_CSV = (new Date(data[k].ReadingTime_UTC));\n data[k].ReadingTime_CSV = convertDatetoCSVFormat(data[k].ReadingTime_UTC2_CSV);\n \n tempRow = [];\n for (i = 0; i < csvHeaders.length; i++) {\n if (data[k][csvHeaders[i].key] === null || data[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n csvData.push(tempRow);\n }\n }\n setCSVReportData(csvData);\n };\n \n function createPDFData(data_in) {\n var headerArr = [];\n var headerConfigArr = [];\n var bodyArr = [];\n var i;\n var k;\n let d = (new Date(Date.now()));\n \n headerConfigArr.push([t(\"organizationName\"), orgInfo.orgName]);\n headerConfigArr.push([t(\"branchName\"), branchInfo.branchName]);\n headerConfigArr.push([t(\"siteName\"), site]);\n headerConfigArr.push([t(\"tankName\"), tank.TankInfo.name]);\n headerConfigArr.push([t(\"serial\"), tank.TankInfo.serial]);\n if (data_in.length){\n headerConfigArr.push([t(\"family\"), data_in[0].Family])\n }\n headerConfigArr.push([t(\"dateCreated\"), d]);\n headerConfigArr.push([t(\"volumeUnits\"), tank.TankInfo.VolumeUnit]);\n //headerConfigArr.push([t(\"distanceUnits\"), tank.TankInfo.DimensionUnit]);\n \n setPDFReportConfigHeaders(headerConfigArr);\n var data = data_in;\n \n if (data.length > 0) {\n for (i = 0; i < pdfHeaders.length; i++) {\n headerArr.push(pdfHeaders[i].label);\n }\n \n for (k = data.length-1; k < 0; k--) {\n data[k].ReadingTime_UTC2_PDF = (new Date(data[k].ReadingTime_UTC));\n data[k].ReadingTime_PDF = convertDatetoCSVFormat(data[k].ReadingTime_UTC2_PDF);\n var entryArray = [];\n \n for (i = 0; i < pdfHeaders.length; i++) {\n if (data[k][pdfHeaders[i].key] === null || data[k][pdfHeaders[i].key] === undefined) {\n entryArray.push(\"\");\n }\n else {\n entryArray.push(data_in[k][pdfHeaders[i].key]);\n }\n }\n bodyArr.push(entryArray);\n }\n }\n \n setPDFReportDataHeaders([headerArr]);\n setPDFReportData(bodyArr);\n };\n \n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for tank data...\");\n csvLink.current.link.click();\n };\n \n const downloadPDFReport = (event) => {\n console.log(\"Downloading PDF for tank data...\");\n\n\n const pdf = new jsPDF('l', 'pt', 'a4');\n\n var img = new Image();\n img.src = 'data:image/png;base64,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';\n pdf.addImage(img, 'png', 40, 0, 240, 50);\n\n pdf.autoTable({ html: '#report-data-table' });\n pdf.autoTable({\n body: pdfReportConfigHeaders,\n startY: 50,\n });\n\n pdf.autoTable({ html: '#report-table' });\n pdf.autoTable({\n head: pdfReportDataHeaders,\n body: pdfReportData,\n });\n\n pdf.save(pdfFileName);\n };\n \n function renderReportingTime() {\n var time1 = tank.TankInfo.MeasurementTime_1;\n var time2 = tank.TankInfo.MeasurementTime_2;\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n \n if (time1 === undefined) {\n time1 = \"\";\n time2 = \"NONE\"; //do not translate\n }\n else {\n if (time1 && time1 !== \"NONE\") {\n time1 = (parseInt(time1) - clientTimeZoneOffset);\n if (time1 > 23) {\n time1 = time1 - 24;\n }\n if (time1 < 0) {\n time1 = time1 + 24;\n }\n time1 = time1.toString()\n }\n \n if (time2 && time2 !== \"NONE\") {\n time2 = (parseInt(time2) - clientTimeZoneOffset);\n if (time2 > 23) {\n time2 = time2 - 24;\n }\n if (time2 < 0) {\n time2 = time2 + 24;\n }\n time2 = time2.toString()\n }\n \n if (time1 !== 'NONE' && time1 !== \"\") {\n if (time1.length < 2) {\n time1 = \"0\" + time1;\n }\n time1 = time1 + \":00\";\n }\n \n if (time2 !== 'NONE' && time2 !== \"\") {\n if (time2.length < 2) {\n time2 = \"0\" + time2;\n }\n time2 = time2 + \":00\";\n }\n }\n \n return (\n \n {t(\"reportingTimes\")}: {time1}{time2 !== \"NONE\" ? \", \" + time2 : \"\"}\n \n )\n };\n \n const handleTabChange = (event, newValue) => {\n var cookies = new Cookies();\n var setting = \"false\";\n\n if (usageTab == 0) {\n setting = \"true\";\n }\n\n setUsageTab(newValue);\n cookies.set('DataUsageView', setting, { path: \"/\", maxAge: 1000000 });\n };\n\n function TabPanel(props) {\n const { children, value, index, ...other } = props;\n \n return (\n
\n );\n }\n //console.log(tank);\n \n return (\n \n \n \n {t(\"dailyUsage\")}\n \n \n \n
\n \n \n \n \n
\n \n setReportsMenu(e.currentTarget)} >\n \n \n \n \n \n \n setReportsMenu(null)}\n disableAutoFocusItem>\n downloadCSVReport()}>\n {t(\"exportAsCsv\")}\n \n {false && downloadPDFReport()}>\n {t(\"exportAsPdf\")}\n }\n \n
\n \n \n
\n \n
\n
\n \n
\n \n \n \n \n \n }>\n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n );\n };\n \n export default DailyUsage;\n ","import React, { useState } from 'react';\nimport { Link as RouterLink, useParams } from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport {\n Divider,\n Grid,\n IconButton,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Edit } from '@material-ui/icons';\nimport Cookies from 'universal-cookie';\nimport TankView from '../Components/TankView.js';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport { host } from \"../../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n text: {\n marginLeft: theme.spacing(10),\n },\n}));\n\nexport default function TankPage({ orgInfo, branchInfo, sitesNavDict }) {\n const { t } = useTranslation();\n const classes = useStyles();\n // Get params so we can read the url path parameters\n const params = useParams();\n let Data = {};\n // Get the site and tank names and site ID.\n const site = params.siteName;\n const siteId = sitesNavDict[site][0];\n const isEditor = sitesNavDict[site][1];\n const tank = params.tankName;\n //const tankId = 0;\n const [tankId, setTankId] = useState(0);\n // Todo: TankPage - Get the tankId to pass to the TabSettings component.\n const [tankData, setTankData] = React.useState({ latestReading: '11-12-2020', GpsReadings: []});\n const [tankDataReady, setTankDataReady] = React.useState(0);\n const [defTimePeriod, setDefTimePeriod] = React.useState('90');\n\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n if (null !== tank) {\n var body = JSON.stringify({ 'name': tank });\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/lookup', requestOptions)\n .then(results => results.json())\n .then(data => {\n setTankId(data.tankId);\n }).catch((error) => {\n });\n }\n });\n }, [tank]);\n\n const yyyymmdd = (d) => {\n var date = new Date(d);\n date.toISOString().slice(0, 10).replace(/-/g, \"\");\n return date.toISOString().slice(0, 10).replace(/-/g, \"\");\n };\n\n React.useEffect(() => {\n var cookies = new Cookies();\n var tFilter = cookies.get('tankFilter');\n var timePeriod = '90';\n var d1 = 1609480800000;\n var d2 = 1640844000000;\n\n if (undefined !== tFilter) {\n timePeriod = tFilter;\n setDefTimePeriod(timePeriod);\n }\n if (orgInfo.orgName === \"Graco Demo\"){\n timePeriod = \"Custom\";\n }\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n if (tankId) {\n console.log(\"Fetching tank info...\")\n let url = host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/history?type=' + timePeriod;\n if (orgInfo.orgName === \"Graco Demo\"){\n url = host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/history?type=' + timePeriod + '&range=' + yyyymmdd(d1) + '-' + yyyymmdd(d2);\n }\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Tank info fetched.\")\n Data = data.TankData;\n // data format: {\"TankData\": Tank History, \"LatestMeasurement\": Latest Measurement, \"TankInfo\": Tank Definition}\n setTankData(data);\n setTankDataReady(1);\n }).catch((error) => {\n });\n }\n });\n }, [tankId]);\n\n return (\n \n \n \n \n {isEditor\n ? \n \n \n \n \n : null}\n
\n \n \n \n\n {tankDataReady ? \n {(true || (tankData.TankInfo !== undefined)) && }\n {(tankData.TankInfo === undefined) && {t(\"noTankInformationAvailable\")}}\n \n : \n {t(\"loadingTankData\")}\n }\n \n )\n}","import React, { Fragment, useState, useRef } from 'react';\nimport {\n Button,\n Checkbox,\n Grid,\n Dialog, DialogActions, DialogContent, DialogTitle,\n FormControl,\n FormControlLabel,\n IconButton,\n MenuItem,\n Snackbar,\n TextField,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport AddIcon from '@material-ui/icons/Add';\nimport { makeStyles } from '@material-ui/core/styles'\nimport StrappingTable from './StrappingTable';\nimport { Auth } from 'aws-amplify';\nimport { useHistory } from \"react-router-dom\";\nimport { host } from \"../../../data\";\nimport HorizontalTankImg from './Assets/HorizontalTank_ti40042.png';\nimport ObroundTankImg from './Assets/ObroundTank_ti40043.png';\nimport VerticalTankImg from './Assets/VerticalTank_ti40781.png';\nimport { calculateMaxCapacity } from '../../../helpers/calculateMaxCapacity';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n grow: {\n flexGrow: 1,\n },\n formControl: {\n margin: theme.spacing(1),\n minWidth: 300,\n\n marginBottom: 10\n },\n formControlTags: {\n margin: theme.spacing(1),\n minWidth: 600,\n\n marginBottom: 10\n },\n infoControl: {\n margin: theme.spacing(1),\n minWidth: 120,\n marginBottom: 0\n },\n cols: {\n paddingRight: 15\n },\n clickButtons: {\n marginLeft: theme.spacing(2),\n },\n btnActions: {\n },\n inputButton: {\n display: 'flex',\n flexWrap: 'nowrap',\n },\n fluidList: {\n minWidth: 300,\n margin: theme.spacing(1),\n marginBottom: 10\n },\n tankInfo: {\n justify: \"flex-start\",\n alignItems: \"center\",\n },\n tankInfoForm: {\n minWidth: 400,\n },\n TankImg: {\n height: '300px',\n },\n snackBar: {\n backgroundColor: theme.palette.secondary.main,\n textColor: theme.palette.primary.contrastText,\n }\n}));\n\nconst TankSettings = ({ orgInfo, branchInfo, site, siteId, handleExit, dimensionunits, volumeunits, tankId, orgTags,\n tank = {}, fluids, 'tank-shape': tankShape, setPageDataReady, setTabsDataReady, setTankData, addfluid = () => { } }) => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n let history = useHistory();\n const [open, setOpen] = useState(false);\n const [dimensionUnit, setDimensionUnits] = useState(tank.DimensionUnit || 'inches');\n const [volumeUnit, setVolumeUnits] = useState(tank.VolumeUnit || 'gallons');\n const [selectedTankShape, setTankShape] = useState(tank.TankShape || 'vertical');\n const [levelVolumeTable, setLevelVolumeTable] = useState(tank.VolumeTable || []);\n const [fluidName, setFluidName] = useState(tank.fluidName || '');\n const [tankName, setTankName] = useState(tank.name);\n const rtankName = useRef(\"\");\n const [newFluidName, setNewFluidName] = useState('');\n const rnewFluidName = useRef(\"\");\n const [tankHeight, setTankHeight] = useState(tank.TankHeight || '');\n const rtankHeight = useRef(\"\");\n const [tankDiameter, setTankDiameter] = useState(tank.TankDiameter || '');\n const rtankDiameter = useRef(\"\");\n const [tankLength, setTankLength] = useState(tank.TankLength || '');\n const rtankLength = useRef(\"\");\n const [tankWidth, setTankWidth] = useState(tank.TankWidth || '');\n const rtankWidth = useRef(\"\");\n const [tankCapacity, setTankCapacity] = useState(tank.TankCapacity || '');\n const rtankCapacity = useRef(\"\");\n const [fillCapacity, setFillCapacity] = useState(tank.FillCapacity || '');\n const rfillCapacity = useRef(\"\");\n const [tankTag, setTankTag] = useState(tank.Tags || '');\n const rtankTag = useRef(\"\");\n const [selectAddTag, setSelectAddTag] = useState(\"\");\n const [selectAddTemplate, setSelectAddTemplate] = useState(\"\");\n const [orgTemplates, setOrgTemplates] = useState([]);\n const [newTemplateCheck, setNewTemplateCheck] = useState(false);\n const [tankTemplateName, setTankTemplateName] = useState(\"\");\n const rtankTemplateName = useRef(\"\");\n const [showTankImage, setShowTankImage] = useState('false');\n const [tankImage, setTankImage] = useState();\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [csvReportData, setCSVReportData] = useState([]);\n const csvHeaders = [\n { label: t(\"fluidHeight\"), key: 'height' },\n { label: t(\"volume\"), key: 'volume' },\n ];\n const [notification, setNotification] = useState({\n open: false,\n message: \"\"\n });\n\n var calculatedMaxCapacity = calculateMaxCapacity(dimensionUnit, volumeUnit, tankHeight, tankWidth, tankDiameter, tankLength, selectedTankShape);\n\n const handleNotificationClose = () => setNotification({ open: false, message: \"\" });\n\n const handleClickOpen = () => setOpen(true);\n\n const handleClose = () => setOpen(false);\n\n const handleAddFluid = () => {\n addfluid({ id: fluids.length + 1, name: rnewFluidName.current.value });\n setFluidName(rnewFluidName.current.value);\n setOpen(false);\n setNewFluidName(\"\");\n };\n\n React.useEffect(() => {\n switch (selectedTankShape) {\n case \"vertical\":\n setTankImage(VerticalTankImg);\n setShowTankImage(true);\n break;\n case \"horizontal\":\n setTankImage(HorizontalTankImg);\n setShowTankImage(true);\n break;\n case \"obround\":\n setTankImage(ObroundTankImg);\n setShowTankImage(true);\n break;\n default:\n setShowTankImage(false);\n setTankImage(undefined);\n }\n }, [selectedTankShape]);\n\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates/', requestOptions)\n .then(results => results.json())\n .then(data => {\n setOrgTemplates(data.templatesList);\n }).catch((error) => {\n console.log(error)\n })\n });\n }, [orgInfo]);\n\n const handleAddTag = (tag) => {\n var tempTags = tankTag;\n if (tag !== null) {\n if (tempTags !== null && tempTags !== \"\") {\n tempTags = tempTags + \",\" + tag;\n }\n else {\n tempTags = tag;\n }\n setTankTag(tempTags);\n }\n setSelectAddTag(tag);\n };\n\n React.useEffect(() => {\n if (selectedTankShape === 'pulseHUB') {\n setNewTemplateCheck(false);\n }\n }, [selectedTankShape])\n\n const handleNewTemplateCheck = (event) => {\n setNewTemplateCheck(event.target.checked);\n };\n\n const handleAddTemplate = (template) => {\n setTankShape(template.TankShape);\n setTankHeight(template.TankHeight);\n setTankLength(template.TankLength);\n setTankWidth(template.TankWidth);\n setTankDiameter(template.TankDiameter);\n setDimensionUnits(template.DimensionUnit);\n setVolumeUnits(template.VolumeUnit);\n setFillCapacity(template.FillCapacity);\n setTankCapacity(template.TankCapacity);\n setLevelVolumeTable(template.VolumeTable);\n setSelectAddTemplate(template.name);\n };\n\n function createTemplate(sessionToken, fillCap, tTable) {\n var body = JSON.stringify(\n {\n \"Name\": tankTemplateName,\n \"Type\": \"Tank\",\n \"Params\": [\n {\n \"DimensionUnit\": dimensionUnit,\n \"TankDiameter\": tankDiameter,\n \"TankLength\": tankLength,\n \"TankShape\": selectedTankShape,\n \"TankHeight\": tankHeight,\n \"TankWidth\": tankWidth,\n \"VolumeUnit\": volumeUnit,\n \"TankCapacity\": tankCapacity,\n \"FillCapacity\": fillCap,\n }\n ],\n \"StrappingTable\": tTable,\n }\n );\n\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/templates/', requestOptions)\n .then(async response => response.json())\n .then(data => {\n if (data.error === \"OK\") {\n setOrgTemplates(data.templatesList);\n }\n else {\n }\n })\n .catch(error => {\n console.log(error)\n })\n };\n\n const handleTableChange = (pair) => {\n if (levelVolumeTable.length < 100) {\n var data = levelVolumeTable;\n data.push({ height: parseInt(pair[0]), volume: parseInt(pair[1]) });\n data = data.sort((a, b) => a.height > b.height ? 1 : b.height > a.height ? -1 : 0);\n setLevelVolumeTable(data);\n }\n else {\n alert(t(\"strappingTableMustNotExceed\"));\n }\n };\n\n function replaceTable(newTable) {\n var data = newTable;\n data = data.filter(element => element.height !== null);\n\n for (var i = 0; i < data.length; i++) {\n if (data[i].height == null || data[i].volume == null) {\n data = data.splice(i);\n }\n }\n\n data = data.sort((a, b) => a.height > b.height ? 1 : b.height > a.height ? -1 : 0);\n setLevelVolumeTable(data);\n };\n\n const handleTableRowDelete = (table) => {\n setLevelVolumeTable(() => {\n return [\n ...table\n ]\n });\n };\n\n function validateData() {\n var ret = 1;\n\n if (!tankTemplateName && newTemplateCheck) {\n alert(t(\"templateNameIncomplete\"));\n ret = 0;\n } else if (newTemplateCheck) {\n for (var i = 0; i < orgTemplates.length; i++) {\n if (orgTemplates[i].name === tankTemplateName) {\n alert(t(\"duplicateTemplateName\"));\n ret = 0;\n break;\n }\n }\n }\n\n if (!rtankName.current.value) {\n alert(t(\"tankNameIncomplete\"));\n ret = 0;\n }\n\n if (fluidName === \"\") {\n alert(t(\"fluidNameInvalid\"));\n ret = 0;\n }\n\n if (\"vertical\" === selectedTankShape) {\n if (!tankHeight) {\n alert(t(\"tankHeightInvalid\"));\n ret = 0;\n } else if (parseFloat(tankHeight) < 1) {\n alert(t(\"tankHeightMustBeGreaterThan0\"))\n ret = 0;\n }\n\n if (!tankCapacity) {\n alert(t(\"tankCapacityInvalid\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) > tankCapacity) {\n alert(t(\"fillCapcityExceeds\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) < 1) {\n alert(t(\"fillCapacityMustBeGreater\"));\n ret = 0;\n }\n }\n\n if (\"horizontal\" === selectedTankShape) {\n if (!tankDiameter) {\n alert(t(\"tankDiameterInvalid\"));\n ret = 0;\n } else if (parseFloat(tankDiameter) < 1) {\n alert(t(\"tankDiameterMustBeGreater\"));\n ret = 0;\n }\n\n if (!tankLength) {\n alert(t(\"tankLengthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankLength) < 1) {\n alert(t(\"tankLengthMustBeGreater\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) > calculatedMaxCapacity) {\n alert(t(\"fillCapcityExceeds\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) < 1) {\n alert(t(\"fillCapacityMustBeGreater\"));\n ret = 0;\n }\n }\n\n if (\"obround\" === selectedTankShape) {\n if (!tankHeight) {\n alert(t(\"tankHeightInvalid\"));\n ret = 0;\n } else if (parseFloat(tankHeight) < 1) {\n alert(t(\"tankHeightMustBeGreaterThan0\"));\n ret = 0;\n }\n\n if (!tankLength) {\n alert(t(\"tankLengthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankLength) < 1) {\n alert(t(\"tankLengthMustBeGreaterThan0\"));\n ret = 0;\n }\n\n if (!tankWidth) {\n alert(t(\"tankWidthInvalid\"));\n ret = 0;\n } else if (parseFloat(tankWidth) < 1) {\n alert(t(\"tankWidthMustBeGreaterThan0\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) > calculatedMaxCapacity) {\n alert(t(\"fillCapacityExceends\"));\n ret = 0;\n }\n\n if (parseFloat(rfillCapacity.current.value) < 1) {\n alert(t(\"fillCapacityMustBeGreaterThan\"));\n ret = 0;\n }\n }\n\n if (\"table\" === selectedTankShape) {\n if (levelVolumeTable.length === 0) {\n ret = 0;\n alert(t(\"enterStrappingTable\"));\n } else {\n if (parseInt(rfillCapacity.current.value) > levelVolumeTable[levelVolumeTable.length - 1].volume) {\n alert(t(\"fillCapacityExceedsTankCapacity\"));\n }\n\n for (var i = 0; i < levelVolumeTable.length - 1; i++) {\n if (levelVolumeTable[i].volume > levelVolumeTable[i + 1].volume) {\n ret = 0;\n alert(t(\"tableVolumeValuesMustIncrease\"))\n break;\n }\n if (levelVolumeTable[i].volume < 0) {\n //First entry must be zero. So zero is valid.\n ret = 0;\n alert(t(\"tableValuesMustNotBeNegative\"));\n }\n if (levelVolumeTable[i].volume == null || levelVolumeTable[i].height == null) {\n ret = 0;\n alert(t(\"tableVolumeValueContains\"));\n }\n }\n }\n }\n\n return ret;\n };\n\n const handleClick = async (bExit) => {\n try {\n // Get current authenticated user session\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(\"Session error\");\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var t_Name = rtankName.current.value;\n var fillCap;\n\n if (\"pulseHUB\" === selectedTankShape) {\n fillCap = String(100);\n }\n else if (!rfillCapacity.current.value) {\n if ('vertical' === selectedTankShape) {\n fillCap = tankCapacity;\n setFillCapacity(tankCapacity);\n }\n else if ('table' === selectedTankShape) {\n fillCap = String(Math.floor(levelVolumeTable[levelVolumeTable.length - 1].volume));\n setFillCapacity(fillCap);\n }\n else {\n fillCap = String(Math.floor(calculatedMaxCapacity));\n setFillCapacity(String(Math.floor(calculatedMaxCapacity)));\n }\n }\n else {\n fillCap = rfillCapacity.current.value;\n }\n\n var tTable = levelVolumeTable;\n\n if (tTable & (tTable !== undefined || tTable.length !== 0)) {\n if (tTable[0].height !== 0 || tTable[0].volume !== 0) {\n tTable.unshift({ height: 0, volume: 0 });\n }\n }\n\n var tTags = rtankTag.current.value;\n var TagsList = tTags.split(\",\");\n\n for (var i = 0; i < TagsList.length; i++) {\n TagsList[i] = TagsList[i].trim();\n }\n\n tTags = TagsList.join();\n setTankTag(tTags);\n\n var body = JSON.stringify(\n {\n \"Name\": t_Name,\n \"Fluid\": fluidName,\n \"Params\": [\n {\n \"DimensionUnit\": dimensionUnit,\n \"TankDiameter\": tankDiameter,\n \"TankLength\": tankLength,\n \"TankShape\": selectedTankShape,\n \"TankHeight\": tankHeight,\n \"TankWidth\": tankWidth,\n \"VolumeUnit\": volumeUnit,\n \"TankCapacity\": tankCapacity,\n \"FillCapacity\": fillCap,\n \"Tags\": tTags\n }\n ],\n \"StrappingTable\": tTable,\n \"ParentId\": siteId,\n 'User': user.attributes.email\n }\n );\n\n var dataSetValid = validateData();\n\n if (null === tankId && dataSetValid) {\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks', requestOptions)\n .then(async response => response.json())\n .then(data => {\n if (data.error === \"OK\") {\n if (newTemplateCheck) {\n createTemplate(sessionToken, fillCap, tTable);\n }\n\n setTabsDataReady(0);\n setPageDataReady(0);\n\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName).concat('/sites/').concat(site).concat('/tanks/').concat(t_Name).concat('/edit') };\n history.push(url);\n }\n else {\n setNotification({ open: true, message: data.status });\n }\n })\n .catch(error => {\n console.log(error)\n })\n }\n else if (dataSetValid) {\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId, requestOptions)\n .then(async response => response.json())\n .then(data => {\n if (data.error === \"OK\") {\n if (newTemplateCheck) {\n createTemplate(sessionToken, fillCap, tTable);\n }\n\n if (bExit) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName).concat('/sites/').concat(site) };\n history.push(url);\n } else {\n if (t_Name !== tank.name) {\n setTabsDataReady(0);\n setPageDataReady(0);\n\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName).concat('/sites/').concat(site).concat('/tanks/').concat(t_Name).concat('/edit') };\n history.push(url);\n }\n else {\n setNotification({ open: true, message: \"Tank Updated\" });\n setTankData(data.tankData);\n }\n }\n }\n else {\n alert(data.error);\n }\n })\n .catch(error => {\n console.error('Error:', error)\n })\n }\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n React.useEffect(() => {\n createCSVData(levelVolumeTable);\n }, [levelVolumeTable]);\n\n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n\n setCSVFileName(fileNamePrefix + '_StrappingTable_' + dformat + '.csv');\n };\n\n function createCSVData(data_in) {\n var i;\n var k;\n var csvData = [];\n var tempRow = [];\n\n createCSVFileName(tankName);\n\n\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n\n csvData.push(tempRow);\n\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n csvData.push(tempRow);\n }\n }\n\n setCSVReportData(csvData);\n };\n\n return (\n \n \n\n \n \n \n \n \n {\n const regex = /^([\\_ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setTankName(e.target.value);\n }\n }}\n />\n \n\n {(orgTemplates.length > 0) && (tankId === null) && \n {\n for (var i = 0; i < orgTemplates.length; i++) {\n if (e.target.value === orgTemplates[i].name) {\n handleAddTemplate(orgTemplates[i]);\n break;\n }\n }\n }}>\n\n {orgTemplates.map(orgTemplatesListItem => \n {orgTemplatesListItem.name}\n )}\n \n }\n\n
\n
\n\n \n \n {fluids.length > 0 ? \n setFluidName(e.target.value)}>\n {fluids.map((option) => (\n \n {option.name}\n \n ))}\n \n :\n \n \n \n }\n \n \n \n \n \n \n \n \n \n\n \n \n setTankShape(e.target.value)}>\n {tankShape.map(shape => \n {shape.label}\n )}\n \n \n \n\n \n {\n setDimensionUnits(e.target.value)}>\n {dimensionunits.map(item => ({item.label}))}\n \n }\n \n\n {(selectedTankShape === 'vertical' || selectedTankShape === 'obround') && \n \n setTankHeight(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal') && \n \n setTankDiameter(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal' || selectedTankShape === 'obround') && \n \n setTankLength(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {selectedTankShape === 'obround' && \n \n setTankWidth(e.target.value)}\n helperText={dimensionUnit} />\n \n \n }\n\n {\n \n setVolumeUnits(e.target.value)}>\n {volumeunits.map(item => ({item.label}))}\n \n \n }\n\n {selectedTankShape === 'vertical' && \n \n setTankCapacity(e.target.value)}\n helperText={volumeUnit} />\n \n \n }\n\n {(selectedTankShape === 'horizontal' || selectedTankShape === 'obround') && \n \n

{t(\"maximumCapacity\")}: {calculatedMaxCapacity} {volumeUnit === 'gallons' ? \"gal\" : \"L\"}

\n
\n
\n }\n\n {(selectedTankShape !== 'pulseHUB') && \n \n setFillCapacity(e.target.value)}\n helperText={volumeUnit === 'gallons' ? t(\"gallons_caps\") : t(\"liters_caps\")} />\n \n \n }\n
\n
\n\n \n {showTankImage && tankImage !== undefined && tankImage}\n {showTankImage && selectedTankShape === \"vertical\" && {t(\"verticalCylinderOrRectangular\")}}\n {showTankImage && {t(\"fillCapacityDefines\")}}\n \n \n \n
\n\n {\n \n {\n const regex = /^([, a-zA-Z0-9\\-]){0,200}$/i;\n if (regex.test(e.target.value)) {\n setTankTag(e.target.value);\n }\n }}\n helperText={t(\"commaSeperated\")} />\n \n\n \n {\n for (var i = 0; i < orgTags.length; i++) {\n if (e.target.value === orgTags[i]) {\n handleAddTag(orgTags[i]);\n break;\n }\n }\n }}>\n\n {orgTags.map(orgTagsListItem => \n {orgTagsListItem}\n )}\n \n \n\n
\n
}\n\n {selectedTankShape !== \"pulseHUB\" && \n \n }\n label={t(\"createNewTemplate\")}\n />\n\n {newTemplateCheck && \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) {\n setTankTemplateName(e.target.value);\n }\n }}\n helperText={''} />\n }\n }\n\n {(selectedTankShape === 'table') && \n \n \n }\n\n
\n \n {tankId !== null && }\n \n
\n\n {/*Add fluid dialog*/}\n \n {t(\"addAFluid\")}\n \n
\n \n {\n const regex = /^([ a-zA-Z0-9\\-]){0,40}$/i;\n if (regex.test(e.target.value)) { setNewFluidName(e.target.value) }\n }}\n inputRef={rnewFluidName} />\n \n
\n
\n\n \n \n \n \n
\n
\n );\n};\n\nexport default TankSettings;","import {useState} from \"react\";\n\nexport default function useInput(initialValue) {\n const [value, setValue] = useState(initialValue);\n const onChange = event => {\n setValue(event.target.value);\n };\n return {\n value, onChange\n }\n}\n","import React, { useState, useRef } from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n TextField,\n FormControl,\n Typography,\n} from \"@material-ui/core\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../../../data\";\nimport WiFiActivationCodeImg from '../../../OrgPage/OrgBilling/Components/Assets/WiFi_ActivationCode_ti40040.png';\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 300,\n marginBottom: 20\n },\n clickButtons: {\n marginRight: theme.spacing(2),\n },\n grow: {\n flexGrow: 1,\n },\n HubInfoImg: {\n maxHeight: '200px',\n marginRight: theme.spacing(2),\n },\n}));\n\nconst AddDevice = ({ orgInfo, branchInfo, siteId, updateDevices, hasBillingInfo }) => {\n const classes = useStyles();\n const { t, i18n } = useTranslation();\n const [deviceFamily, setDeviceFamily] = useState();\n const [deviceUID, setDeviceUID] = useState();\n const [targetUID, setTargetUID] = useState();\n const rdeviceUID = useRef();\n const [activationCode, setActivationCode] = useState();\n const ractivationCode = useRef();\n const [addDeviceDialogue, setAddDeviceDialogue] = useState(false);\n const [openEnterSerial, setOpenEnterSerial] = useState(false);\n\n const fetchAvailableDevices = () => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n const sessionToken = data.signInUserSession.idToken.jwtToken;\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n fetch(host + '/orgs/' + orgInfo.orgId + '/availabledevices', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error = \"OK\") {\n updateDevices(data);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n });\n })\n };\n\n const handleOpenAddDevice = () => {\n if (deviceUID) {\n var tDeviceUID = deviceUID.replace(/\\b0+/g, \"\");\n }\n else {\n var tDeviceUID = \"\";\n }\n\n if (tDeviceUID !== \"\") {\n handleCloseEnterSerial();\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'UID': tDeviceUID });\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body,\n };\n\n fetch(host + '/device', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n\n if (data.isAvailable === 1) {\n setDeviceFamily(data.family);\n setAddDeviceDialogue(true);\n if (data.family === \"WiFi\") {\n setTargetUID(Number(data.UID).toString());\n } else {\n setTargetUID(data.UID.toUpperCase());\n }\n }\n else {\n alert(t(\"deviceIsAlreadyAssigned\"));\n }\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n }\n else {\n setOpenEnterSerial(true);\n }\n };\n\n const handleCloseAddDevice = () => {\n setAddDeviceDialogue(false);\n };\n const handleOpenEnterSerial = () => {\n setOpenEnterSerial(true);\n };\n const handleCloseEnterSerial = () => {\n setOpenEnterSerial(false);\n setDeviceUID(\"\");\n };\n\n const handleAddDevice = () => {\n var code = activationCode;\n if (deviceFamily === \"PulseHUB\") {\n code = \"\";\n }\n\n if (deviceFamily === \"cellular\" || deviceFamily === 'pressure') {\n code = \"\";\n }\n var l_hasBillingInfo = hasBillingInfo ? 1 : 0;\n\n setAddDeviceDialogue(false);\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({\n 'devices': [{ 'uid': targetUID, 'code': code, 'action': \"add\" }],\n 'hasBillingInfo': l_hasBillingInfo, 'sync': 0\n });\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n console.log(body);\n\n let url = host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/device/';\n\n fetch(url, requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n setDeviceUID(\"\");\n setActivationCode(\"\");\n fetchAvailableDevices();\n }\n else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n console.log(data.errorList);\n alert(data.errorList[0].error);\n }\n else {\n console.log(data.error);\n alert(data.error)\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n });\n };\n\n return (\n <>\n {orgInfo.isOrgEditor === true && \n {t(\"addDevice\")}\n }\n {openEnterSerial && \n {t(\"enterSerialNumber\")}\n \n \n {\n const regex = /^([ a-zA-Z0-9]){0,30}$/i;\n if (regex.test(e.target.value)) {\n setDeviceUID(e.target.value.toUpperCase());\n }\n }\n }\n helperText={t(\"tankLevelMonitor\")} />\n \n \n \n \n \n \n }\n {addDeviceDialogue && \n {t(\"addDevice\")}\n \n \n {deviceFamily === \"WiFi\" && \n \n {t(\"add\")} {deviceFamily + \" device \"} {targetUID}?\n \n {Wi-Fi Activation Code}\n \n {t(\"activationCodeCanBeFound\")}\n \n \n setActivationCode(e.target.value.toUpperCase())} />\n \n }\n {(deviceFamily === \"cellular\" || deviceFamily === \"pressure\") && hasBillingInfo ? \n \n {t(\"add\")} {deviceFamily + \" device \"} {targetUID}?\n \n
\n \n {t(\"noteThisDeviceWillNotTake\")}\n \n \n : \n {(deviceFamily === \"cellular\" || deviceFamily === \"pressure\") && \n {t(\"priorToAddingThisDeviceBilling\")}\n }\n }\n {deviceFamily === \"PulseHUB\" && \n \n {t(\"addPulseProTlm\")}{\" \" + targetUID}?\n \n }\n \n \n \n \n \n \n
}\n \n );\n}\n\nexport default AddDevice;","import React, { useState, useRef } from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Grid,\n TextField,\n FormControl,\n FormLabel,\n FormControlLabel,\n IconButton,\n MenuItem,\n RadioGroup,\n Radio,\n Snackbar,\n Toolbar,\n Tooltip,\n Typography,\n} from \"@material-ui/core\";\nimport HelpIcon from '@material-ui/icons/Help';\nimport ClearIcon from '@material-ui/icons/Clear';\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport useInput from \"../../hooks/input\";\nimport { Auth } from 'aws-amplify';\nimport { useHistory } from \"react-router-dom\";\nimport { Link as RouterLink } from 'react-router-dom';\nimport { host, enableBilling } from \"../../../data\";\nimport { billing } from \"../../../services/billing\";\nimport AddDevice from \"./AddDevice\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n formControl: {\n margin: theme.spacing(1),\n minWidth: 300,\n marginBottom: 20\n },\n formControlDensity: {\n margin: theme.spacing(1),\n minWidth: 100,\n marginBottom: 20\n },\n formControlNumber: {\n margin: theme.spacing(1),\n minWidth: 240,\n marginBottom: 20\n },\n formControlDensitySelect: {\n margin: theme.spacing(1),\n minWidth: 300,\n marginBottom: 20\n },\n btnActions: {\n },\n clickButtons: {\n marginRight: theme.spacing(2),\n },\n deviceWarning: {\n margin: theme.spacing(0),\n minWidth: 400,\n marginBottom: 20\n },\n cols: {\n paddingRight: 15\n },\n grow: {\n flexGrow: 1,\n },\n}));\n\nconst TLMSettings = ({ orgInfo, branchInfo, site, siteId, tankId, handleExit, tankName, tlm = {}, devices, pulseDevices, setTankData, updateDevices }) => {\n const classes = useStyles();\n let history = useHistory();\n const { t, i18n } = useTranslation();\n const measurementTimes = [{ label: \"00:00\", value: 0 }, { label: \"01:00\", value: 1 }, { label: \"02:00\", value: 2 },\n { label: \"03:00\", value: 3 }, { label: \"04:00\", value: 4 }, { label: \"05:00\", value: 5 }, { label: \"06:00\", value: 6 },\n { label: \"07:00\", value: 7 }, { label: \"08:00\", value: 8 }, { label: \"09:00\", value: 9 }, { label: \"10:00\", value: 10 },\n { label: \"11:00\", value: 11 }, { label: \"12:00\", value: 12 }, { label: \"13:00\", value: 13 }, { label: \"14:00\", value: 14 },\n { label: \"15:00\", value: 15 }, { label: \"16:00\", value: 16 }, { label: \"17:00\", value: 17 }, { label: \"18:00\", value: 18 },\n { label: \"19:00\", value: 19 }, { label: \"20:00\", value: 20 }, { label: \"21:00\", value: 21 }, { label: \"22:00\", value: 22 },\n { label: \"23:00\", value: 23 }];\n const measurementTimes2 = [{ label: t(\"none_caps\"), value: t(\"none_caps\") }, { label: \"00:00\", value: 0 }, { label: \"01:00\", value: 1 }, { label: \"02:00\", value: 2 },\n { label: \"03:00\", value: 3 }, { label: \"04:00\", value: 4 }, { label: \"05:00\", value: 5 }, { label: \"06:00\", value: 6 },\n { label: \"07:00\", value: 7 }, { label: \"08:00\", value: 8 }, { label: \"09:00\", value: 9 }, { label: \"10:00\", value: 10 },\n { label: \"11:00\", value: 11 }, { label: \"12:00\", value: 12 }, { label: \"13:00\", value: 13 }, { label: \"14:00\", value: 14 },\n { label: \"15:00\", value: 15 }, { label: \"16:00\", value: 16 }, { label: \"17:00\", value: 17 }, { label: \"18:00\", value: 18 },\n { label: \"19:00\", value: 19 }, { label: \"20:00\", value: 20 }, { label: \"21:00\", value: 21 }, { label: \"22:00\", value: 22 },\n { label: \"23:00\", value: 23 }];\n const marks = [{ value: 0, label: '0%' }, { value: 100, label: '100%' }];\n const tankTypes = [\"Regular\", \"Waste\"];\n const tlmSerialNumber = useInput(tlm.serial || '');\n const rtlmSerialNumber = useRef(\"\");\n const [measurementTime, setMeasurementTime] = useState(tlm.MeasurementTime_1 || '7');\n const [secondMeasurementTime, setSecondMeasurementTime] = useState(tlm.MeasurementTime_2 || t(\"none_caps\"));\n const [dimensionUnit, setDimensionUnit] = useState(tlm.DimensionUnit || 'inches');\n const [tankType, setTankType] = useState(tlm.TankType || \"Regular\");\n const [tlmMeasurementOffset, setTlmMeasurementOffset] = useState(tlm.Offset || '0');\n const rtlmMeasurementOffset = useRef(\"\");\n const isFillLevelAlarm = useInput(tlm.isFillLevelAlarm || \"false\");\n const fillAlarmValue = useInput(tlm.FillAlarmValue);\n const rfillAlarmValue = useRef(\"\");\n const [fluidDensity, setFluidDensity] = useState(tlm.Density || \"\");\n const rdensity = useRef(\"\");\n //kg/m^3, nominal temperature\n const [offsetHelpOpen, setOffsetHelpOpen] = useState(false);\n const fluidDensityList = [{ name: t(\"sae5W30\"), density: 859 },\n { name: t(\"sae5W20\"), density: 850 },\n { name: t(\"sae10W30\"), density: 875 },\n { name: t(\"sae10W40\"), density: 872 },\n { name: t(\"sae0W20\"), density: 848 },\n { name: t(\"diesel\"), density: 850 },\n { name: t(\"gasoline\"), density: 730 },\n { name: t(\"def\"), density: 1084 },\n { name: t(\"atf\"), density: 833 },\n { name: t(\"water\"), density: 998 },\n { name: t(\"windshieldFluid\"), density: 850 },\n { name: t(\"antifreeze\"), density: 1113 },\n { name: t(\"kerosene\"), density: 804 },\n { name: t(\"custom\"), density: null },\n ];\n const [selectFluidDensity, setSelectFluidDensity] = useState(tlm.DensityFluidType || fluidDensityList[fluidDensityList.length - 1].name);\n const [selectedDevice, setSelectedDevice] = useState({ id: 0, uid: tlm.serial, type: tlm.type });\n const isLowLevelAlarm = useInput(tlm.isLowLevelAlarm || 'false');\n const lowLevelAlarmValue = useInput(tlm.LowLevelAlarmValue);\n const rlowLevelAlarmValue = useRef(\"\");\n const isCriticallyLowLevelAlarm = useInput(tlm.isCriticallyLowLevelAlarm || 'false');\n const criticallyLowLevelAlarmValue = useInput(tlm.CriticallyLowLevelAlarmValue);\n const rcriticallyLowLevelAlarmValue = useRef(\"\");\n const [notification, setNotification] = useState({\n open: false,\n message: \"\"\n });\n const gpsSettings = [{value: 0, label: t(\"disabled\")}, {value: 1, label: t(\"everyMeasurement\")}, {value: 2, label: t(\"weekly\")}];\n const waveguideSettings = [{value: 0, label: t('no')}, {value: 1, label: t(\"yes\")}];\n const [hasBillingInfo, setHasBillingInfo] = useState(false);\n\n const [gpsDialogueOpen, setGpsDialogueOpen] = useState(false);\n const [gpsEnableSelect, setGpsEnableSelect] = useState(tlm.gps_enable ? gpsSettings[tlm.gps_enable] : gpsSettings[0]);\n const [t_gpsEnableSelect, setTempGpsEnableSelect] = useState(gpsSettings[0]);\n\n const [waveguideEnableSelect, setWaveguideEnableSelect] = useState(tlm.waveguide_enable ? waveguideSettings[tlm.waveguide_enable] : waveguideSettings[0]);\n\n const [removeMonitorDialogue, setRemoveMonitorDialogue] = useState(false);\n\n const openRemoveTlm = () => {\n setRemoveMonitorDialogue(true);\n }\n const handleRemoveMonitorDialogueClose = () => {\n setRemoveMonitorDialogue(false);\n }\n \n const handleRemoveMonitor = () => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n var body = JSON.stringify({ 'uid': selectedDevice.uid });\n var requestOptions = {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId + '/tlm/', requestOptions)\n .then(results => results.json())\n .then(data => {\n if (data.error === \"OK\") {\n //data.deviceList; data.tankData\n setNotification({ open: true, message: t(\"monitorRemoved\")});\n setTankData(data.tankData);\n updateDevices(data);\n setSelectedDevice({ id: 0, uid: \"\", type: \"\" });\n }\n else {\n if (data.error === \"error\" && data.errorList.length > 0) {\n alert(data.errorList[0].error);\n } else {\n alert(data.error);\n }\n }\n }).catch((error) => {\n console.log(error)\n })\n setRemoveMonitorDialogue(false);\n });\n }\n \n const handleWaveguideEnableList = (targetValue) => {\n setWaveguideEnableSelect(waveguideSettings[targetValue]);\n };\n console.log(tlm);\n const handleGpsEnableList = (targetValue) => {\n //console.log(targetValue);\n setTempGpsEnableSelect(gpsSettings[targetValue]);\n if (targetValue === 0) {\n setGpsEnableSelect(gpsSettings[targetValue]);\n }\n else {\n setGpsDialogueOpen(true);\n }\n };\n\n const handleGpsDialogueClose = () => {\n setGpsDialogueOpen(false);\n setTempGpsEnableSelect(gpsSettings[0]);\n }\n\n const handleSetGpsCheck = () => {\n setGpsEnableSelect(t_gpsEnableSelect);\n setGpsDialogueOpen(false);\n }\n\n React.useEffect(() => {\n if (selectedDevice.type !== 'pressure' && selectedDevice.type !== \"cellular\") {\n setGpsEnableSelect(gpsSettings[0]);\n setWaveguideEnableSelect(waveguideSettings[0]);\n }\n }, [selectedDevice])\n\n React.useEffect(() => {\n (async () => {\n try {\n const { status, data } = await billing.getBillingData(\n orgInfo.orgId\n );\n\n const { error, billing_account, org_billing } = data;\n\n if (status === 404) {\n console.log(status);\n }\n\n if (error !== 'OK' && status !== 200) {\n throw new Error(error);\n }\n if (billing_account.billing_info.id) {\n setHasBillingInfo(true);\n }\n else {\n setHasBillingInfo(false);\n }\n } catch (error) {\n console.error(error);\n }\n })();\n }, [orgInfo]);\n\n const handleNotificationClose = () => setNotification({ open: false, message: \"\" });\n\n function validateData() {\n var ret = 1;\n\n if (!selectedDevice.uid) {\n console.log(\"TLM Serial Number Invalid\");\n alert(t(\"tlmSerialNumberInvalid\"));\n ret = 0;\n }\n\n const regex = /^([a-zA-Z0-9]){0,32}$/i;\n if (!regex.test(selectedDevice.uid)) {\n alert(t(\"illegalTlmSerialNumber\"))\n ret = 0;\n }\n\n if (isFillLevelAlarm.value === 'true') {\n if (!fillAlarmValue.value) {\n console.log(\"High Alarm Value Invalid\");\n alert(t(\"highAlarmValue\"));\n ret = 0;\n\n } else if (parseFloat(fillAlarmValue.value) < 1) {\n ret = 0;\n console.log(\"High Level Alarm must be greater than 0\");\n alert(t(\"highLevelAlarm\"));\n }\n\n if (tlm.TankShape === \"pulseHUB\" && (parseFloat(fillAlarmValue.value) > 100)) {\n console.log(\"Pulse HUB High level Alarm must not exceed 100%\");\n alert(t(\"pulseHubHighLevel\"));\n }\n }\n\n if (isLowLevelAlarm.value === 'true') {\n if (!lowLevelAlarmValue.value) {\n console.log(\"Low Level Alarm Value Invalid\");\n alert(t(\"lowLevelAlarmInvalid\"));\n ret = 0;\n\n } else if (parseFloat(lowLevelAlarmValue.value) < 1) {\n ret = 0;\n console.log(\"Low Level Alarm must be greater than 0\");\n alert(t(\"lowLevelAlarmMustBeGreater\"));\n }\n\n if (tlm.TankShape === \"pulseHUB\" && (parseFloat(lowLevelAlarmValue.value) > 100)) {\n console.log(\"Pulse HUB Low level Alarm must not exceed 100%\");\n alert(t(\"pulseHubLowLevelAlarm\"));\n }\n }\n if (isCriticallyLowLevelAlarm.value === 'true') {\n if (!criticallyLowLevelAlarmValue.value) {\n console.log(\"Critical Level Alarm Value Invalid\");\n alert(t(\"criticalLevelAlarmInvalid\"));\n ret = 0;\n\n } else if (parseFloat(criticallyLowLevelAlarmValue.value) < 1) {\n ret = 0;\n console.log(\"Critical Level Alarm must be greater than 0\");\n alert(t(\"criticalLevelAlarmMustBeGreater\"));\n }\n\n if (tlm.TankShape === \"pulseHUB\" && (parseFloat(criticallyLowLevelAlarmValue.value) > 100)) {\n console.log(\"Pulse HUB Critical level Alarm must not exceed 100%\");\n alert(t(\"pulseHubCriticalLevelAlarm\"));\n }\n }\n return ret;\n };\n\n const handleClick = async (bExit) => {\n try {\n let user = await Auth.currentAuthenticatedUser();\n user.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n const sessionToken = session.getIdToken().jwtToken;\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var adjustedMeasurementTime1 = measurementTime;\n\n if (measurementTime !== t(\"none_caps\")) {\n adjustedMeasurementTime1 = parseInt(measurementTime) + clientTimeZoneOffset;\n\n if (adjustedMeasurementTime1 < 0) {\n adjustedMeasurementTime1 = adjustedMeasurementTime1 + 24;\n }\n\n if (adjustedMeasurementTime1 > 23) {\n adjustedMeasurementTime1 = adjustedMeasurementTime1 - 24;\n }\n\n adjustedMeasurementTime1 = adjustedMeasurementTime1.toString()\n }\n\n var adjustedMeasurementTime2 = secondMeasurementTime;\n if (secondMeasurementTime !== t(\"none_caps\")) {\n adjustedMeasurementTime2 = parseInt(secondMeasurementTime) + clientTimeZoneOffset;\n\n if (adjustedMeasurementTime2 < 0) {\n adjustedMeasurementTime2 = adjustedMeasurementTime2 + 24;\n }\n\n if (adjustedMeasurementTime2 > 23) {\n adjustedMeasurementTime2 = adjustedMeasurementTime2 - 24;\n }\n adjustedMeasurementTime2 = adjustedMeasurementTime2.toString();\n }\n\n var tlm_offset;\n\n if (!tlmMeasurementOffset) {\n tlm_offset = \"0\";\n setTlmMeasurementOffset(tlm_offset);\n } else {\n tlm_offset = tlmMeasurementOffset;\n }\n \n var l_gps_enable = gpsEnableSelect.value;\n //var l_gps_enable = 0;\n //if (gpsEnableCheck){\n // l_gps_enable = 1;\n //}\n let l_waveguide_enable = waveguideEnableSelect.value;\n var body = JSON.stringify(\n {\n \"tank_id\": tankId,\n \"serial\": selectedDevice.uid,\n \"Params\": [\n {\n \"MeasurementTime_1\": adjustedMeasurementTime1,\n \"MeasurementTime_2\": adjustedMeasurementTime2,\n \"Density\": fluidDensity,\n \"DensityFluidType\": selectFluidDensity.name,\n \"isFillLevelAlarm\": isFillLevelAlarm.value,\n \"TankType\": tankType,\n \"FillAlarmValue\": fillAlarmValue.value,\n \"isLowLevelAlarm\": isLowLevelAlarm.value,\n \"LowLevelAlarmValue\": lowLevelAlarmValue.value,\n \"isCriticallyLowLevelAlarm\": isCriticallyLowLevelAlarm.value,\n \"CriticallyLowLevelAlarmValue\": criticallyLowLevelAlarmValue.value,\n \"Offset\": tlm_offset,\n \"gps_enable\": l_gps_enable,\n \"waveguide_enable\": l_waveguide_enable\n }\n ],\n \"ParentId\": siteId,\n 'User': user.attributes.email\n }\n );\n\n var dataValid = validateData();\n if (dataValid) {\n var requestOptions = {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n },\n body: body\n };\n\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/' + tankId, requestOptions)\n .then(async response => response.json())\n .then(data => {\n if (data.error === \"OK\") {\n console.log(\"Tank updated\");\n if (bExit) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branchInfo.branchName).concat('/sites/').concat(site) };\n history.push(url);\n } else {\n setNotification({ open: true, message: t(\"tankUpdated\")});\n setTankData(data.tankData);\n }\n } else {\n alert(data.error);\n // console.log(data);\n }\n }).catch(error => console.error('Error:', error))\n }\n });\n } catch (e) {\n console.log(e);\n }\n };\n\n const handleDensitySelect = (data_in) => {\n if (data_in.density !== null) {\n setFluidDensity(data_in.density);\n }\n setSelectFluidDensity(data_in.name);\n };\n\n const handleFluidDensityChange = (data_in) => {\n if (data_in >= 0 && data_in < 10000) {\n setFluidDensity(data_in);\n setSelectFluidDensity(fluidDensityList[fluidDensityList.length - 1].name);\n }\n };\n\n const handleOffsetHelpOpen = () => {\n setOffsetHelpOpen(true);\n };\n const handleOffsetHelpClose = () => {\n setOffsetHelpOpen(false);\n };\n\n return (\n <>\n \n \n {!enableBilling && orgInfo.isOrgEditor === true && \n {t(\"addDevices_caps\")}\n }\n {enableBilling && orgInfo.isOrgEditor === true && }\n {orgInfo.isOrgEditor === false && \n {t(\"contactOrganization\")}\n }\n \n \n {false && \n \n }\n {tlm.TankShape !== \"pulseHUB\" && \n \n {devices.length > 0 ? \n {\n for (var i = 0; i < devices.length; i++) {\n if (e.target.value === devices[i].uid) {\n setSelectedDevice(devices[i]);\n break;\n }\n }\n }}>\n {devices.map(device => \n {device.uid}\n )}\n \n : }\n \n {selectedDevice.uid && \n \n }\n }\n {tlm.TankShape === \"pulseHUB\" && \n \n {pulseDevices.length > 0 ? {\n for (var i = 0; i < pulseDevices.length; i++) {\n if (e.target.value === pulseDevices[i].uid) {\n setSelectedDevice(pulseDevices[i]);\n break;\n }\n }\n }}>\n {pulseDevices.map(device => \n {device.uid}\n )}\n \n : }\n \n {selectedDevice.uid && \n \n }\n }\n \n\n {(selectedDevice.type === \"pressure\") && \n \n {\n for (var i = 0; i < fluidDensityList.length; i++) {\n if (e.target.value === fluidDensityList[i].name) {\n handleDensitySelect(fluidDensityList[i]);\n break;\n }\n }\n }}>\n {fluidDensityList.map(density => \n {density.name}\n )}\n \n \n \n handleFluidDensityChange(e.target.value)}\n inputRef={rdensity}\n helperText={\"kg/m³\"}\n />\n \n \n }\n\n \n {tlm.TankShape !== \"pulseHUB\" && \n setMeasurementTime(e.target.value)}\n >\n {measurementTimes.map(time => \n {time.label}\n )}\n \n }\n \n \n {true && tlm.TankShape !== \"pulseHUB\" && \n setSecondMeasurementTime(e.target.value)}\n >\n {measurementTimes2.map(time => \n {time.label}\n )}\n \n }\n \n {tlm.TankShape !== \"pulseHUB\" && \n \n \n setTlmMeasurementOffset(e.target.value)}\n />\n {dimensionUnit}\n \n \n \n \n \n \n \n }\n \n \n setTankType(e.target.value)}\n >\n {tankTypes.map(type => \n {t(type.toLowerCase())}\n )}\n \n \n \n \n {tlm.TankShape !== \"pulseHUB\" && \n

{t(\"maximumCapacity\")}: {tlm.FillCapacity} {tlm.VolumeUnit === 'gallons' ? t(\"gal\") : t(\"l\")}

\n
}\n
\n \n \n {t(\"highLevelAlarm_caps\")}\n \n } label={t(\"yes\")} />\n } label={t(\"no\")} />\n \n \n {isFillLevelAlarm.value === 'true' && \n \n }\n \n \n \n {t(\"lowLevelAlarm_caps\")}\n \n } label={t(\"yes\")} />\n } label={t(\"no\")} />\n \n \n {isLowLevelAlarm.value === 'true' && \n \n }\n \n \n \n {tankType === \"Regular\" ? t(\"critcallyLowLevelAlarm_caps\") : t(\"criticallyHighLevelAlarm_caps\")}\n \n } label={t(\"yes\")} />\n } label={t(\"no\")} />\n \n \n {isCriticallyLowLevelAlarm.value === 'true' && \n \n }\n \n {(selectedDevice.type === \"pressure\" || selectedDevice.type === \"cellular\") && \n \n handleGpsEnableList(e.target.value)}\n >\n {gpsSettings.map(setting => \n {setting.label}\n )}\n \n \n }\n {(selectedDevice.type === \"cellular\") && \n \n handleWaveguideEnableList(e.target.value)}\n >\n {waveguideSettings.map(setting => \n {setting.label}\n )}\n \n \n }\n\n
\n \n \n \n
\n\n {offsetHelpOpen && \n {t(\"tankLevelMonitorOffset\")}\n \n \n {t(\"theTankLevelMonitorOffsetIsUsed\")}\n \n \n {t(\"theTankOffsetCanAlsoBeUsed\")}\n \n \n {t(\"noteOffsetForPressure\")}\n \n \n \n \n \n }\n {gpsDialogueOpen && \n {t(\"gpsEnableCheckboxText\")}\n \n \n {t(\"tankFinderExplanation1\")}\n \n \n {t(\"tankFinderExplanation2\")}\n \n \n {t(\"tankFinderExplanation3\")}\n \n \n \n \n \n \n }\n {removeMonitorDialogue && \n {t(\"removeMonitor\")}\n \n {t(\"areYouSure\")}\n \n \n \n \n \n }\n \n );\n};\n\nexport default TLMSettings;\n","import React from 'react';\nimport { SvgIcon } from '@material-ui/core';\n\nconst AddTankIcon = (props) => {\n return(\n \n \n \n )\n}\n\nexport default AddTankIcon;\n","import React, { useState, Fragment } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n Box,\n Button,\n IconButton,\n Tab,\n Tabs,\n Tooltip,\n Toolbar\n} from \"@material-ui/core\";\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ArrowBack } from '@material-ui/icons';\nimport TankSettings from './TankSettings';\nimport TlmSettings from './TlmSettings';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../../../data\";\nimport AddTankIcon from \"../../Components/AddTankIcon.js\"\nimport { useHistory } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n}))\n\nfunction TabPanel(props) {\n const { children, value, index, ...other } = props;\n\n return (\n
\n );\n}\n\nconst TabsSettings = (props) => {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const [value, setValue] = useState(0);\n const [fluids, setFluids] = useState([{ id: 0, name: '' }]);\n const [tankData, setTankData] = useState({});\n const [dataReady, setDataReady] = useState(0);\n const [devices, setDevices] = useState([]);\n const [pulseDevices, setPulseDevices] = useState([]);\n const [orgTags, setOrgTags] = useState([]);\n let history = useHistory();\n\n const updateDevices = (data) => {\n var i = 0;\n var lPulseDevices = [];\n var lDevices = [];\n for (i = 0; i < data.deviceList.length; i++) {\n if (data.deviceList[i].type === \"PulseHUB\") {\n lPulseDevices.push(data.deviceList[i]);\n }\n else {\n lDevices.push(data.deviceList[i]);\n }\n }\n\n setDevices(lDevices);\n setPulseDevices(lPulseDevices);\n };\n\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n const sessionToken = data.signInUserSession.idToken.jwtToken;\n const tankId = props.tankId;\n\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': sessionToken\n }\n };\n\n if (null === tankId) {\n fetch(host + '/orgs/' + props.orgInfo.orgId + '/availabledevices', requestOptions)\n .then(results => results.json())\n .then(data => {\n var Data = [];\n var i;\n\n if (data.error = \"OK\") {\n for (i = 0; i < data.fluidsList.length; i++) {\n Data[i] = { id: i, name: data.fluidsList[i].name };\n }\n\n var lPulseDevices = [];\n var lDevices = [];\n\n for (i = 0; i < data.deviceList.length; i++) {\n if (data.deviceList[i].type === \"PulseHUB\") {\n lPulseDevices.push(data.deviceList[i]);\n }\n else {\n lDevices.push(data.deviceList[i]);\n }\n }\n\n setFluids(Data);\n setDevices(lDevices);\n setPulseDevices(lPulseDevices);\n setOrgTags(data.orgTags);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n });\n setDataReady(1);\n }\n\n if (null !== tankId) {\n fetch(host + '/orgs/' + props.orgInfo.orgId + '/branches/' + props.branchInfo.branchId + '/sites/' + props.siteId + '/tanks/' + tankId + '/availabledevices', requestOptions)\n .then(results => results.json())\n .then(data => {\n var Data = [];\n var lPulseDevices = [];\n var lDevices = [];\n var i;\n\n if (data.error = \"OK\") {\n for (i = 0; i < data.fluidsList.length; i++) {\n Data[i] = { id: i, name: data.fluidsList[i].name };\n }\n\n for (i = 0; i < data.deviceList.length; i++) {\n if (data.deviceList[i].type === \"PulseHUB\") {\n lPulseDevices.push(data.deviceList[i]);\n }\n else {\n lDevices.push(data.deviceList[i]);\n }\n }\n\n setFluids(Data);\n setDevices(lDevices);\n setPulseDevices(lPulseDevices);\n setOrgTags(data.orgTags);\n }\n else {\n alert(data.error);\n }\n }).catch((error) => {\n });\n\n console.log(\"fetch tank info\")\n\n fetch(host + '/orgs/' + props.orgInfo.orgId + '/branches/' + props.branchInfo.branchId + '/sites/' + props.siteId + '/tanks/' + tankId, requestOptions)\n .then(results => results.json())\n .then(data => {\n var clientTimeZoneOffset = new Date().getTimezoneOffset() / 60;\n var Data = data;\n\n if (Data.MeasurementTime_1 && Data.MeasurementTime_1 !== \"NONE\") {\n Data.MeasurementTime_1 = (parseInt(Data.MeasurementTime_1) - clientTimeZoneOffset);\n if (Data.MeasurementTime_1 > 23) {\n Data.MeasurementTime_1 = Data.MeasurementTime_1 - 24;\n }\n if (Data.MeasurementTime_1 < 0) {\n Data.MeasurementTime_1 = Data.MeasurementTime_1 + 24;\n }\n Data.MeasurementTime_1 = Data.MeasurementTime_1.toString()\n }\n if (Data.MeasurementTime_2 && Data.MeasurementTime_2 !== \"NONE\") {\n Data.MeasurementTime_2 = (parseInt(Data.MeasurementTime_2) - clientTimeZoneOffset);\n if (Data.MeasurementTime_2 > 23) {\n Data.MeasurementTime_2 = Data.MeasurementTime_2 - 24;\n }\n if (Data.MeasurementTime_2 < 0) {\n Data.MeasurementTime_2 = Data.MeasurementTime_2 + 24;\n }\n Data.MeasurementTime_2 = Data.MeasurementTime_2.toString()\n }\n if (!Data.serial) {\n setValue(1);\n }\n\n setTankData(Data);\n setDataReady(1);\n }).catch((error) => {\n console.log(error)\n });\n }\n });\n }, [props.tankId]);\n\n const handleChange = (event, newValue) => {\n setValue(newValue);\n };\n\n const dimensionUnits = [{ key: 'inches', label: t(\"inches\") },\n { key: 'feet', label: t(\"feet\") },\n { key: 'centimeters', label: t(\"centimeters\") }];\n const volumeUnits = [{ key: 'liters', label: t(\"liters\") }, { key: 'gallons', label: t(\"gallons\") }];\n const tankShape = [\n { key: 'vertical', label: t(\"verticalCylinderRect\") },\n { key: 'horizontal', label: t(\"horizontalCynlinder\") },\n { key: 'obround', label: t(\"obround\") },\n { key: 'table', label: t(\"strappingTable\") },\n { key: 'pulseHUB', label: t(\"existingPulseProTank\") }\n ];\n\n const handleNewTankClick = () => {\n props.setPageDataReady(0);\n setDataReady(0);\n props.setTankId(null);\n }\n\n const addFluid = async (fluid) => {\n setFluids(() => {\n return [\n ...fluids, fluid\n ]\n });\n };\n\n const handleExit = () => {\n let url = { pathname: ('/orgs/').concat(props.orgInfo.orgName).concat('/branches/').concat(props.branchInfo.branchName).concat('/sites/').concat(props.site) };\n\n if (null !== props.tankId) {\n url = { pathname: ('/orgs/').concat(props.orgInfo.orgName).concat('/branches/').concat(props.branchInfo.branchName).concat('/sites/').concat(props.site).concat('/tanks/').concat(props.tankName) };\n }\n\n history.push(url);\n };\n\n if (!dataReady) {\n return (
);\n }\n\n return (\n \n {(null !== props.tankId) && \n \n \n \n \n \n\n \n\n
\n \n \n \n \n \n }\n\n \n \n {(null !== props.tankId) && }\n \n\n \n {\n addFluid(fluid)\n }} />\n \n\n \n \n \n \n );\n};\n\nexport default TabsSettings;\n","import React, { useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n Divider,\n Grid,\n Toolbar\n} from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport TabSettings from './Components/TabsSettings.js';\nimport TlmBreadcrumbs from '../Components/TlmBreadcrumbs.jsx';\nimport { Auth } from 'aws-amplify';\nimport { host } from \"../../data\";\nimport { useTranslation } from 'react-i18next';\n\nconst useStyles = makeStyles((theme) => ({\n content: {\n padding: theme.spacing(2),\n },\n text: {\n marginLeft: theme.spacing(10),\n },\n}));\n\nexport default function TankSettingsPage({ orgInfo, branchInfo, sitesNavDict }) {\n const { t } = useTranslation();\n const classes = useStyles();\n // Get params so we can read the url path parameters\n const params = useParams();\n // Get the site and tank names and site ID.\n const site = params.siteName;\n const siteId = sitesNavDict[site][0];\n const tank = params.tankName === undefined ? null : params.tankName;\n const [tankId, setTankId] = useState(null);\n const [dataReady, setDataReady] = useState(0);\n const baseUrl = '/orgs/' + orgInfo.orgName + '/branches/' + branchInfo.branchName + '/sites/' + site;\n\n // FETCH Tanks to obtain navDict\n // Create state for the list of sites\n React.useEffect(() => {\n Auth.currentAuthenticatedUser()\n .then(data => {\n if (null !== tank) {\n var body = JSON.stringify({ 'name': tank });\n var requestOptions = {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n },\n body: body\n };\n console.log(\"fetch tank id...\");\n fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/sites/' + siteId + '/tanks/lookup', requestOptions)\n .then(results => results.json())\n .then(data => {\n setTankId(data.tankId);\n setDataReady(1)\n }).catch((error) => {\n console.log(error)\n });\n }\n else { \n //New Tank\n setDataReady(1)\n }\n });\n }, [tank]);\n\n if (!dataReady) {\n return (
);\n }\n\n return (\n \n \n \n {tank === null\n ? \n : }\n \n \n \n \n \n \n \n )\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from 'react';\nimport {\n Route,\n Switch,\n useHistory,\n useParams\n} from 'react-router-dom';\nimport { Auth } from 'aws-amplify';\nimport { Grid, Typography } from '@material-ui/core';\n// Graco dependencies\nimport BranchPage from './TlmBranch/BranchPage.jsx';\nimport BranchSettingsPage from './TlmBranch/BranchSettingsPage.jsx';\nimport SitePage from './TlmSite/SitePage.jsx';\nimport SiteSettingsPage from './TlmSite/SiteSettingsPage.jsx';\nimport TankPage from './TlmTank/TankPage.jsx';\nimport TankSettingsPage from './TlmTank/TankSettingsPage.jsx';\nimport { host } from \"../data\";\nimport { useTranslation } from 'react-i18next';\n\n// Routes incoming urls to the appropriate view page with necessary state based on url\nconst PageRouter = ({ orgInfo, branchInfo, siteInfo, resetSiteData, resetBranchData }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\n// Main TlmPage component. Loads high level state and routes the page.\nexport default function TlmPage({ orgInfo }) {\n const { t } = useTranslation();\n // Get history for redirecting pages\n const history = useHistory();\n // Get params so we can read the url path parameters\n const params = useParams();\n // Create state for the current branch and available branches\n const [branches, setBranch] = React.useState({\n branchName: '',\n isBranchEditor: true,\n isBranchViewer: true,\n branchId: null,\n branchList: [],\n branchNavDict: {}\n });\n const [branchesFetched, setBranchesFetched] = React.useState(false);\n // Create state for the list of sites\n const [sites, setSites] = React.useState({\n sitesList: [],\n siteData: [],\n sitesNavDict: {}\n });\n const [sitesFetched, setSitesFetched] = React.useState(false);\n\n // Gets and sets the branch data. Triggers when org state or path changes.\n React.useEffect(() => {\n fetchBranchData();\n }, [orgInfo]);\n\n function fetchBranchData(targetBranch) {\n // console.log(targetBranch);\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n console.log(\"Fetching branches...\");\n\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Branches fetched.\");\n // If no branch exists, send the user to the branch creation page.\n if (data.default.branchName.trim() === \"\") {\n console.log(\"No branches found.\");\n let url = '/orgs/'.concat(orgInfo.orgName).concat('/branches');\n history.push(url);\n }\n else {\n setBranchesFetched(true);\n if (targetBranch !== undefined && data.data.branchesNavDict[targetBranch] !== undefined) {\n setBranch({\n branchName: targetBranch,\n isBranchEditor: data.data.branchesNavDict[targetBranch][1],\n isBranchViewer: data.data.branchesNavDict[targetBranch][2],\n branchId: data.data.branchesNavDict[targetBranch][0],\n branchList: data.data.branchesList,\n branchNavDict: data.data.branchesNavDict\n });\n let url = '/orgs/' + orgInfo.orgName + '/branches/' + targetBranch;\n console.log(url);\n history.push(url);\n }\n else if (params.branchName !== undefined &&\n params.branchName !== data.default.branchName &&\n data.data.branchesNavDict[params.branchName] !== undefined) {\n\n setBranch({\n branchName: params.branchName,\n isBranchEditor: data.data.branchesNavDict[params.branchName][1],\n isBranchViewer: data.data.branchesNavDict[params.branchName][2],\n branchId: data.data.branchesNavDict[params.branchName][0],\n branchList: data.data.branchesList,\n branchNavDict: data.data.branchesNavDict\n });\n }\n else {\n setBranch({\n branchName: data.default.branchName,\n isBranchEditor: data.default.isBranchEditor,\n isBranchViewer: data.default.isBranchViewer,\n branchId: data.default.branchId,\n branchList: data.data.branchesList,\n branchNavDict: data.data.branchesNavDict\n });\n }\n }\n }).catch((error) => {\n console.log(error);\n });\n });\n }\n\n // Get the site info. Triggers when the branch info updates.\n React.useEffect(() => {\n // Only run AFTER the branches have been fetched.\n fetchSiteData();\n }, [branches]);\n\n function fetchSiteData(targetSite) {\n // Only run AFTER the branches have been fetched.\n if (branchesFetched) {\n setSitesFetched(false);\n Auth.currentAuthenticatedUser()\n .then(data => {\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n console.log(\"Fetching sites...\")\n fetch(host + '/orgs/' + orgInfo.orgId\n + '/branches/' + branches.branchId\n + '/sites', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"Sites fetched.\");\n setSites({\n sitesList: data.data.sitesList,\n siteData: data.data.json_data,\n sitesNavDict: data.data.sitesNavDict\n });\n if (targetSite !== undefined && data.data.sitesNavDict[targetSite] !== undefined) {\n let url = { pathname: ('/orgs/').concat(orgInfo.orgName).concat('/branches/').concat(branches.branchName).concat('/sites/').concat(targetSite) };\n history.push(url);\n }\n setSitesFetched(true);\n }).catch((error) => {\n console.log(error);\n });\n })\n }\n }\n // When the url changes, this confirms we're on the correct branch.\n React.useEffect(() => {\n if (params.branchName !== undefined &&\n params.branchName !== branches.branchName &&\n branches.branchNavDict[params.branchName] !== undefined) {\n setBranch({\n branchName: params.branchName,\n isBranchEditor: branches.branchNavDict[params.branchName][1],\n isBranchViewer: branches.branchNavDict[params.branchName][2],\n branchId: branches.branchNavDict[params.branchName][0],\n branchList: branches.branchList,\n branchNavDict: branches.branchNavDict\n });\n }\n }, [params]);\n\n return (\n <>\n {branchesFetched\n ? sitesFetched\n ? \n : \n \n {t(\"loadingSiteData\")}\n \n \n : \n \n {t(\"loadingBranchData\")}\n \n }\n \n )\n}\n","import React, {\n useState,\n useEffect,\n Fragment,\n} from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n Typography,\n} from '@material-ui/core';\nimport { Auth } from 'aws-amplify';\nimport { useHistory } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\nconst SessionTimeout = ({ signedIn, maxTimeoutMinutes, warningTimeoutMinutes }) => {\n let history = useHistory();\n const [events, setEvents] = useState(['click', 'load', 'scroll']);\n const [warningMinutes, setWarningMinutes] = useState(maxTimeoutMinutes - warningTimeoutMinutes);\n let minutes;\n const [isOpen, setOpen] = useState(false);\n const { t, i18n } = useTranslation();\n let idleInterval = 1000 * 60 * 1; //1 minute\n let idleEvent;\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const logOut = () => {\n setOpen(false);\n window.location.assign('/');\n Auth.signOut();\n history.push('/');\n };\n\n function checkTimer() {\n if (signedIn) {\n var elapsedMinutes = minutes + 1;\n minutes = elapsedMinutes;\n\n if (elapsedMinutes >= maxTimeoutMinutes) {\n logOut();\n } else if (elapsedMinutes >= (maxTimeoutMinutes - warningTimeoutMinutes)) {\n setWarningMinutes(maxTimeoutMinutes - elapsedMinutes);\n setOpen(true);\n }\n\n if (elapsedMinutes < maxTimeoutMinutes) {\n idleEvent = setTimeout(() => checkTimer(), idleInterval);\n }\n } else {\n minutes = 0;\n setOpen(false);\n setWarningMinutes(maxTimeoutMinutes - warningTimeoutMinutes);\n }\n };\n\n const sessionTimeout = () => {\n if (!!idleEvent) {\n clearTimeout(idleEvent);\n minutes = 0;\n setWarningMinutes(maxTimeoutMinutes - warningTimeoutMinutes);\n }\n\n if (signedIn) {\n idleEvent = setTimeout(() => checkTimer(), idleInterval);\n }\n };\n\n useEffect(() => {\n if (signedIn) {\n events.forEach((event) => {\n window.addEventListener(event, sessionTimeout);\n });\n } else {\n setOpen(false);\n }\n }, [signedIn]);\n\n if (!isOpen) {\n return null;\n }\n\n // change fragment to modal and handleclose func to close\n return \n \n \n \n {t(\"youWillBeAutomatically\")} {warningMinutes} {t(\"minutes\")}\n \n \n \n \n \n \n ;\n};\n\nexport default SessionTimeout;","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, {\n useEffect,\n useState,\n useRef\n} from 'react';\nimport {\n useHistory,\n Link as RouterLink\n} from 'react-router-dom';\nimport Cookies from 'universal-cookie';\nimport { Auth } from 'aws-amplify';\nimport {\n Chip,\n Divider,\n Grid,\n IconButton,\n Link,\n Toolbar,\n Tooltip,\n Typography\n} from '@material-ui/core';\nimport { ArrowBack } from '@material-ui/icons';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { DataGrid } from '@material-ui/data-grid';\nimport { CSVLink } from \"react-csv\";\nimport jsPDF from \"jspdf\";\nimport 'jspdf-autotable';\nimport TlmFilterBar from '../Components/TlmFilterBar.jsx';\nimport { host, status_severity, FieldSelectLabel, COOKIE_NAMES, useCookiesForData } from \"../../data\";\nimport { useTranslation } from 'react-i18next';\nimport { userSettingsData } from '../../services/userSettingsData';\nimport { roundToDecimals } from '../../helpers/roundToDecimals.js';\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n },\n content: {\n padding: theme.spacing(2),\n },\n iconButtons: {\n marginRight: theme.spacing(1),\n },\n topMap: {\n width: '100%',\n height: '33vh',\n },\n table: {\n width: '100%',\n height: '70vh',\n },\n link: {\n color: theme.palette.info.dark,\n },\n ok: {\n minWidth: '64px',\n backgroundColor: theme.palette.success.main,\n color: theme.palette.primary.contrastText,\n },\n low: {\n minWidth: '64px',\n backgroundColor: theme.palette.warning.main,\n color: theme.palette.primary.contrastText,\n },\n crit: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.main,\n color: theme.palette.primary.contrastText,\n },\n error: {\n minWidth: '64px',\n backgroundColor: theme.palette.error.dark,\n color: theme.palette.primary.contrastText,\n },\n statusNone: {\n minWidth: '64px',\n backgroundColor: theme.palette.primary.light,\n color: theme.palette.primary.contrastText,\n },\n}));\n\n// Branch page component. Display the branch view.\nexport default function MyTanksPage({ fetchOrgInformation }) {\n const { t, i18n } = useTranslation();\n const classes = useStyles();\n const history = useHistory();\n const [displayUnits, setDisplayUnits] = useState();\n const [csvReportData, setCSVReportData] = useState([])\n const [pdfReportData, setPDFReportData] = useState([]);\n const [pdfReportDataHeaders, setPDFReportDataHeaders] = useState([]);\n const [pdfReportConfigHeaders, setPDFReportConfigHeaders] = useState([]);\n const [csvFileName, setCSVFileName] = useState('reports.csv');\n const [pdfFileName, setPDFFileName] = useState('reports');\n const csvLink = useRef();\n const csvHeaders = [\n { label: t(\"org\"), key: 'OrgName' },\n { label: t(\"branch\"), key: 'BranchName' },\n { label: t(\"site\"), key: 'SiteName' },\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"lastReading\"), key: 'ReadingTime_CSV' },\n { label: t(\"city\"), key: 'City' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"inventoryPercent\"), key: 'volume_pct' },\n { label: t(\"capacity\"), key: 'FillCapacity_disp' },\n { label: t(\"fluidHeight\"), key: 'fluid_height_disp' },\n { label: t(\"nextReading\"), key: 'NextReading_CSV' },\n { label: t(\"dte\"), key: 'DTE' },\n { label: t(\"adu\"), key: 'ADU_disp' },\n { label: t(\"rssi\"), key: 'rssi' },\n { label: t(\"batt\"), key: 'batt' },\n { label: t(\"lastFill\"), key: 'FillTime_CSV' },\n { label: t(\"lastFillV\"), key: \"FillVolume_disp\"},\n { label: t(\"efficiency\"), key: 'Efficiency' },\n ];\n const pdfHeaders = [\n { label: t(\"org\"), key: 'OrgName' },\n { label: t(\"branch\"), key: 'BranchName' },\n { label: t(\"site\"), key: 'SiteName' },\n { label: t(\"tank\"), key: 'name' },\n { label: t(\"status\"), key: 'Status' },\n { label: t(\"fluid\"), key: 'fluidName' },\n { label: t(\"lastReading\"), key: 'ReadingTime_PDF' },\n { label: t(\"ullage\"), key: 'ullage_disp' },\n { label: t(\"inventory\"), key: 'volume_disp' },\n { label: t(\"dte\"), key: 'DTE' },\n ];\n // Default columns for the Branches table.\n const [orgNameColWidth, setOrgNameColWidth] = React.useState(200);\n const [branchNameColWidth, setBranchNameColWidth] = React.useState(200);\n const [siteNameColWidth, setSiteNameColWidth] = React.useState(128);\n const [tankColWidth, setTankColWidth] = React.useState(104);\n const [fluidColWidth, setfluidColWidth] = React.useState(96);\n const [cityColWidth, setCityColWidth] = React.useState(168);\n \n const defaultColumnOrder =[\n 'OrgName',\n 'BranchName', \n 'SiteName', \n 'name', \n 'Status', \n 'fluidName', \n 'ullage_disp_str',\n 'ReadingTime_UTC',\n 'City',\n 'volume_disp_str',\n 'volume_pct',\n 'DTE_disp',\n 'ADU_disp_str',\n 'Efficiency',\n 'FillCapacity_disp_str',\n 'fluid_height_disp_str',\n 'rssi',\n 'batt',\n 'FillTime',\n 'FillVolume_disp_str',\n 'NextReading',\n ];\n const [columnOrder, setColumnOrder] = useState([]);\n const [checked2, setChecked2] = useState({\n 'OrgName':false, \n 'BranchName':true, \n 'SiteName':true, \n 'name':true, \n 'Status':true, \n 'fluidName':true, \n 'ullage_disp_str':true,\n 'ReadingTime_UTC':false,\n 'City':false,\n 'volume_disp_str':true,\n 'volume_pct':false,\n 'DTE_disp':false,\n 'ADU_disp_str':false,\n 'Efficiency':false,\n 'FillCapacity_disp_str':false,\n 'fluid_height_disp_str':false,\n 'rssi':false,\n 'batt':false,\n 'FillTime':false,\n 'FillVolume_disp_str':false,\n 'NextReading':false,\n });\n const columnsAlwaysOn = ['name', 'Status'];\n const columnsMyTank = [\n {\n headerName: t(\"org\"),\n field: 'OrgName',\n width: orgNameColWidth,\n //renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"branch\"),\n field: 'BranchName',\n width: branchNameColWidth,\n renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"site\"),\n field: 'SiteName',\n width: siteNameColWidth,\n renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"tank\"),\n field: 'name',\n width: tankColWidth,\n renderCell: renderLink,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"status\"),\n field: 'Status',\n width: 104,\n renderCell: renderStatus,\n headerClassName: classes.tableHeader,\n sortComparator: (v1, v2, param1, param2) => param1.row.status_severity - param2.row.status_severity,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluid\"),\n field: 'fluidName',\n width: fluidColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"ullage\"),\n field: 'ullage_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ullage_disp - param2.row.ullage_disp,\n width: 112,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastRead\"),\n field: 'ReadingTime_UTC',\n width: 190,\n type: 'dateTime',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"city\"),\n field: 'City',\n width: cityColWidth,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"Inv\"),\n description: t(\"inventory\"),\n field: 'volume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_disp - param2.row.volume_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"InvPercent\"),\n description: t(\"inventory\"),\n sortComparator: (v1, v2, param1, param2) => param1.row.volume_pct_int - param2.row.volume_pct_int,\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n field: 'volume_pct',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"dte\"),\n description: t(\"DaysToEmpty\"),\n field: 'DTE_disp',\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"adu\"),\n description: t(\"averageDailyUsage\"),\n field: 'ADU_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.ADU_disp - param2.row.ADU_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fe\"),\n field: 'Efficiency',\n description: t(\"fillEfficiency\"),\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"cap\"),\n description: t(\"capacity\"),\n field: 'FillCapacity_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillCapacity_disp - param2.row.FillCapacity_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fluidHt\"),\n field: 'fluid_height_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.fluid_height_disp - param2.row.fluid_height_disp,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"rssi\"),\n description: t(\"rfSignalStrength\"),\n field: 'rssi',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"batt\"),\n description: t(\"battery\"),\n field: 'batt',\n valueFormatter: (params) => {\n const valueFormatted = params.value === null ? \"\" : params.value;\n const unit = (params.value === undefined || params.value === null) ? \"\" : \"%\"\n return `${valueFormatted}${unit}`;\n },\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"lastFill\"),\n field: 'FillTime',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"fv\"),\n description: t(\"lastFillVolume\"),\n field: 'FillVolume_disp_str',\n sortComparator: (v1, v2, param1, param2) => param1.row.FillVolume_sort - param2.row.FillVolume_sort,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n {\n headerName: t(\"nextReading\"),\n field: 'NextReading',\n type: 'dateTime',\n width: 190,\n headerClassName: classes.tableHeader,\n disableClickEventBubbling: true\n },\n ];\n const handleSetChecked2 = (newChecked) => {\n if (useCookiesForData){\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.myTanksColumnsChecked, JSON.stringify(newChecked), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(COOKIE_NAMES.myTanksColumnsChecked, JSON.stringify(newChecked));\n }\n setChecked2(newChecked);\n };\n const handleSetColumnOrder = (newOrder) => {\n if (useCookiesForData){\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.myTanksColumnsOrder, JSON.stringify(newOrder), { maxAge: 1000000 });\n }\n else {\n updateUserSettingsData(COOKIE_NAMES.myTanksColumnsOrder, JSON.stringify(newOrder));\n }\n setColumnOrder(newOrder);\n };\n\n React.useEffect(() => {\n var t_tableCols = tableCols;\n for (var i = 0; i < tableCols.length; i++) {\n if (t_tableCols[i].field === \"OrgName\") {\n t_tableCols[i].width = orgNameColWidth;\n } \n if (t_tableCols[i].field === \"BranchName\") {\n t_tableCols[i].width = branchNameColWidth;\n } \n if (t_tableCols[i].field === \"SiteName\") {\n t_tableCols[i].width = siteNameColWidth;\n }\n if (t_tableCols[i].field === 'fluidName') {\n t_tableCols[i].width = fluidColWidth;\n }\n if (t_tableCols[i].field === 'name') {\n t_tableCols[i].width = tankColWidth;\n }\n if (t_tableCols[i].field === 'City') {\n t_tableCols[i].width = cityColWidth;\n }\n }\n setTableCols(t_tableCols);\n }, [orgNameColWidth, branchNameColWidth, siteNameColWidth, fluidColWidth, tankColWidth, cityColWidth])\n\n \n // Create state for the data table.\n const [dataReady, setDataReady] = React.useState(0);\n const [tankInfo, setTankInfo] = React.useState({});\n const [fluids, setFluids] = React.useState([]);\n const [tableCols, setTableCols] = React.useState([]);\n const [tableRows, setTableRows] = React.useState([]);\n const [reportsMenuItems, setReportsMenuItems] = React.useState({});\n const [filtersInfo, setFiltersInfo] = React.useState({ 'fluidName': [], 'statusName': [], 'tagName': [], 'ullageRange': [], 'DTE': \"noFilter\", 'showSensorWarning': 0});\n const [currentSearchTerm, setCurrentSearchTerm] = React.useState(\"\");\n\n function createCSVFileName(fileNamePrefix) {\n let d = new Date;\n let dformat = `${(\"0\" + d.getDate()).slice(-2)}${(\"0\" + (d.getMonth() + 1)).slice(-2)}${d.getFullYear()}_${d.getHours()}-${d.getMinutes()}-${d.getSeconds()}`;\n\n setCSVFileName(fileNamePrefix + '_' + t(\"snapshot\") + '_' + dformat + '.csv');\n setPDFFileName(fileNamePrefix + '_' + t(\"snapshot\") + '_' + dformat);\n };\n\n function createCSVData(data_in) {\n var i;\n var k;\n var csvData = [[t(\"myTanks\"), \"\"]];\n let d = new Date;\n\n csvData.push([t(\"dateCreated\"), convertDatetoCSVFormat(d)]);\n if (displayUnits.includes(\"Metric\")) {\n csvData.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"centimeters\")])\n } else {\n csvData.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n csvData.push([t(\"dimensionsUnits\"), t(\"inches\")])\n }\n\n csvData.push(['']);\n var tempRow = [];\n for (i = 0; i < csvHeaders.length; i++) {\n tempRow.push(csvHeaders[i].label);\n }\n\n csvData.push(tempRow);\n if (data_in.length > 0) {\n for (k = 0; k < data_in.length; k++) {\n tempRow = []\n for (i = 0; i < csvHeaders.length; i++) {\n if (data_in[k][csvHeaders[i].key] === null || data_in[k][csvHeaders[i].key] === undefined) {\n tempRow.push(\"\");\n }\n else {\n tempRow.push(data_in[k][csvHeaders[i].key]);\n }\n }\n\n csvData.push(tempRow);\n }\n }\n\n setCSVReportData(csvData);\n };\n\n function createPDFData(data_in) {\n var headerArr = [];\n var headerConfigArr = [];\n var bodyArr = [];\n var i;\n var k;\n let d = new Date;\n\n headerConfigArr.push([t(\"myTanks\"), \"\"]);\n headerConfigArr.push([t(\"dateCreated\"), d]);\n\n if (displayUnits.includes(\"Metric\")) {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"liters_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"centimeters\")])\n } else {\n headerConfigArr.push([t(\"volumeUnits\"), t(\"gallons_caps\")]);\n headerConfigArr.push([t(\"dimensionsUnits\"), t(\"inches\")])\n }\n\n setPDFReportConfigHeaders(headerConfigArr);\n\n if (data_in.length > 0) {\n for (i = 0; i < pdfHeaders.length; i++) {\n headerArr.push(pdfHeaders[i].label);\n }\n\n for (k = 0; k < data_in.length; k++) {\n var entryArray = [];\n for (i = 0; i < pdfHeaders.length; i++) {\n if (data_in[k][pdfHeaders[i].key] === null || data_in[k][pdfHeaders[i].key] === undefined) {\n entryArray.push(\"\");\n }\n else {\n entryArray.push(data_in[k][pdfHeaders[i].key]);\n }\n }\n bodyArr.push(entryArray);\n }\n }\n\n setPDFReportDataHeaders([headerArr]);\n setPDFReportData(bodyArr);\n };\n\n function convertDatetoCSVFormat(inputTimeStamp) {\n //Excel based on 1990. Java based on 1970.\n //return inputTimeStamp / (1000 * 60 * 60 * 24) + 25569;\n //console.log(inputTimeStamp);\n let ret = inputTimeStamp;\n if (!isNaN(inputTimeStamp.getTime())) {\n ret = inputTimeStamp.toISOString().slice(0, 19).replace('T', ' ').replace(/-/g, '/');\n ret = convertUTCDateToLocalDate(new Date(ret));\n }\n //console.log(ret);\n return ret;\n };\n\n function convertUTCDateToLocalDate(date) {\n var newDate = new Date(date.getTime() + date.getTimezoneOffset() * 60 * 1000);\n\n var offset = date.getTimezoneOffset() / 60;\n var hours = date.getHours();\n\n newDate.setHours(hours - offset);\n var month = '' + (newDate.getMonth() + 1),\n day = '' + newDate.getDate(),\n year = newDate.getFullYear(),\n hour = newDate.getHours(),\n minute = newDate.getMinutes(),\n second = newDate.getSeconds();\n\n if (month.length < 2)\n month = '0' + month;\n\n if (day.length < 2)\n day = '0' + day;\n\n if (minute < 10)\n minute = '0' + minute;\n\n if (hour < 10)\n hour = '0' + hour;\n\n var prettiestStr = month + '/' + day + '/' + year + ' ' + hour + ':' + minute;\n return prettiestStr;\n };\n\n function calculateStatusSeverity(status, showSensorWarning) {\n var severity = 1;\n if ((typeof status) !== \"string\") {\n severity = status_severity.unknown;\n }\n else if (status.includes(\"Comm\")) {\n severity = status_severity.Comm;\n }\n else if (status.includes(\"Batt\")) {\n severity = status_severity.Batt;\n }\n else if (status.includes(\"Crit\")) {\n severity = status_severity.Crit;\n }\n else if (status.includes(\"SensErr\")){\n severity = status_severity.SensE;\n }\n else if (status.includes(\"High\")) {\n severity = status_severity.High;\n }\n else if (status.includes(\"Low\")) {\n severity = status_severity.Low;\n }\n else if (status.includes(\"SensW\") && showSensorWarning) {\n severity = status_severity.SensW;\n }\n else if (status.includes(\"None\")) {\n severity = status_severity.unknown;\n }\n return severity;\n }\n\n function createTableData(data, showSensorWarning=0) {\n var data_in = data;\n var i;\n const vol_string = displayUnits.includes(\"US\") ? \"gal\" : \"L\";\n const dim_string = displayUnits.includes(\"US\") ? \"in\" : \"cm\";\n\n if (displayUnits.includes(\"Metric\")) {\n\n for (i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 2.54 * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n }\n\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage * 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume * 3.78541);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity * 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU * 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume * 3.78541);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2); \n }\n if (!isNaN(data_in[i].FillVolume)){\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n else {\n for (i = 0; i < data_in.length; i++) {\n data_in[i].status_severity = calculateStatusSeverity(data_in[i].Status, showSensorWarning);\n data_in[i].showSensorWarning = showSensorWarning;\n if (!isNaN(data_in[i].fluid_height)) {\n if (data_in[i].DimensionUnit === 'inches') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height);\n }\n else if (data_in[i].DimensionUnit === 'feet') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height * 12.0);\n }\n else if (data_in[i].DimensionUnit === 'centimeters') {\n data_in[i].fluid_height_disp = Math.round(data_in[i].fluid_height / 2.54);\n }\n }\n\n if (data_in[i].VolumeUnit === 'gallons') {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume);\n }\n }\n else if (data_in[i].VolumeUnit === \"liters\") {\n if (!isNaN(data_in[i].ullage)) {\n data_in[i].ullage_disp = Math.round(data_in[i].ullage / 3.78541);\n }\n if (!isNaN(data_in[i].volume)) {\n data_in[i].volume_disp = Math.round(data_in[i].volume / 3.78541);\n }\n if (!isNaN(data_in[i].ADU)) {\n data_in[i].ADU_disp = roundToDecimals(data_in[i].ADU / 3.78541, 2);\n }\n if (!isNaN(data_in[i].FillCapacity)) {\n data_in[i].FillCapacity_disp = Math.round(data_in[i].FillCapacity / 3.78541);\n }\n if (!isNaN(data_in[i].FillVolume)) {\n data_in[i].FillVolume_disp = Math.round(data_in[i].FillVolume) / 3.78541;\n }\n }\n\n if (!isNaN(data_in[i].ullage_disp)) {\n data_in[i].ullage_disp_str = data_in[i].ullage_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].volume_disp)) {\n data_in[i].volume_disp_str = data_in[i].volume_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].FillCapacity_disp)) {\n data_in[i].FillCapacity_disp_str = data_in[i].FillCapacity_disp.toFixed(0).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].ADU_disp)) {\n data_in[i].ADU_disp_str = data_in[i].ADU_disp.toFixed(2).toString() + ' ' + vol_string;\n }\n if (!isNaN(data_in[i].fluid_height_disp)) {\n data_in[i].fluid_height_disp_str = data_in[i].fluid_height_disp.toFixed(0).toString() + ' ' + dim_string;\n }\n if (!isNaN(data_in[i].FillVolume_disp)) {\n data_in[i].FillVolume_disp_str = data_in[i].FillVolume_disp.toFixed(0).toString() + ' ' + vol_string;\n data_in[i].FillVolume_sort = data_in[i].FillVolume_disp;\n }\n else {\n data_in[i].FillVolume_sort = -1;\n }\n }\n }\n\n return data_in;\n };\n\n React.useEffect(() => {\n if (tankInfo.json_data !== undefined) {\n FilterData([], false);\n }\n }, [displayUnits, tankInfo, currentSearchTerm]);\n\n // Setup the data table. Triggers when the site info changes.\n function fetchMyTanksData(){\n var cookies = new Cookies();\n var tFilter = cookies.get(COOKIE_NAMES.branchFilterMyTanks);\n if (undefined !== tFilter) {\n setFiltersInfo(tFilter);\n }\n var tDisplayUnits = cookies.get(COOKIE_NAMES.displayUnits);\n if (undefined !== tDisplayUnits) {\n setDisplayUnits(tDisplayUnits);\n }\n else {\n setDisplayUnits(\"US\");\n }\n if (useCookiesForData){\n var tChecked2 = cookies.get(COOKIE_NAMES.myTanksColumnsChecked);\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n }\n\n Auth.currentAuthenticatedUser()\n .then(data => {\n console.log(\"Fetching branch, site readings...\")\n let user = data.attributes.email;\n var requestOptions = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': data.signInUserSession.idToken.jwtToken\n }\n };\n\n fetch(host + '/mytanks', requestOptions)\n .then(results => results.json())\n .then(data => {\n console.log(\"MyTanks readings fetched.\");\n \n var Data = data.data;\n Data.json_data = data.data.json_data.sort((a, b) => (parseFloat(a.ullage_pct) > parseFloat(b.ullage_pct)) ? -1 : ((parseFloat(b.ullage_pct) > parseFloat(a.ullage_pct)) ? 1 : 0));\n\n var maxOrgNameLength = 16;\n var maxBranchNameLength = 16;\n var maxSiteNameLength = 16;\n var maxTankNameLength = 13;\n var maxFluidNameLength = 12;\n var maxCityNameLength = 16;\n\n var f = [];\n for (var i = 0; i < Data.json_data.length; i++) {\n try {\n if (Data.json_data[i].OrgName.length > maxOrgNameLength) {\n maxOrgNameLength = Data.json_data[i].OrgName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].BranchName.length > maxBranchNameLength) {\n maxBranchNameLength = Data.json_data[i].BranchName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].SiteName.length > maxSiteNameLength) {\n maxSiteNameLength = Data.json_data[i].SiteName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].fluidName.length > maxFluidNameLength) {\n maxFluidNameLength = Data.json_data[i].fluidName.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].name.length > maxTankNameLength) {\n maxTankNameLength = Data.json_data[i].name.length;\n }\n } catch (error) { }\n try {\n if (Data.json_data[i].City.length > maxCityNameLength) {\n maxCityNameLength = Data.json_data[i].City.length;\n }\n } catch (error) { }\n\n try {\n Data.json_data[i].volume_pct_int = parseInt(Data.json_data[i].volume_pct);\n } catch (error) {\n Data.json_data[i].volume_pct_int = undefined;\n }\n Data.json_data[i].id = [Data.json_data[i].OrgName, Data.json_data[i].BranchName, Data.json_data[i].SiteName, Data.json_data[i].name].join(\",\");\n if (Data.json_data[i].ReadingTime === null) {\n delete Data.json_data[i].ReadingTime_UTC;\n }\n Data.json_data[i].ReadingTime_UTC = new Date(Data.json_data[i].ReadingTime_UTC);\n Data.json_data[i].ReadingTime_CSV = convertDatetoCSVFormat((Data.json_data[i].ReadingTime_UTC));\n Data.json_data[i].ReadingTime_PDF = Data.json_data[i].ReadingTime_UTC.toLocaleString();\n Data.json_data[i].NextReading_CSV = \"\";\n\n if (Data.json_data[i].NextReading) {\n Data.json_data[i].NextReading = new Date(Data.json_data[i].NextReading);\n Data.json_data[i].NextReading_CSV = convertDatetoCSVFormat((Data.json_data[i].NextReading));\n }\n\n Data.json_data[i].FillTime_CSV = \"\"\n if (Data.json_data[i].FillTime) {\n Data.json_data[i].FillTime = new Date(Data.json_data[i].FillTime);\n Data.json_data[i].FillTime_CSV = convertDatetoCSVFormat(Data.json_data[i].FillTime);\n }\n\n Data.json_data[i].ullage = parseFloat(Data.json_data[i].ullage);\n Data.json_data[i].volume = parseFloat(Data.json_data[i].volume);\n Data.json_data[i].FillCapacity = parseFloat(Data.json_data[i].FillCapacity);\n Data.json_data[i].FillVolume = parseFloat(Data.json_data[i].FillVolume);\n Data.json_data[i].ADU = parseFloat(Data.json_data[i].ADU);\n Data.json_data[i].fluid_height = parseFloat(Data.json_data[i].fluid_height);\n if (Data.json_data[i].DTE !== undefined && Data.json_data[i].DTE !== null) {\n Data.json_data[i].DTE_disp = parseFloat(Data.json_data[i].DTE);\n }\n if ((typeof Data.json_data[i].Status) !== \"string\") {\n Data.json_data[i].Status = \"None\";\n }\n Data.json_data[i].status_severity = calculateStatusSeverity(Data.json_data[i].Status, 0);\n }\n\n for (var i = 0; i < Data.fluidsList.length; i++) {\n f.push({ 'id': i, 'name': Data.fluidsList[i] })\n }\n\n setOrgNameColWidth(maxOrgNameLength*9);\n setBranchNameColWidth(maxBranchNameLength*9 + 8);\n setSiteNameColWidth(maxSiteNameLength*9 + 8);\n setfluidColWidth(maxFluidNameLength*9 + 8);\n setTankColWidth(maxTankNameLength*9 + 8);\n setCityColWidth(maxCityNameLength*9 + 8);\n setFluids(f);\n setTankInfo(Data);\n setDataReady(1);\n createCSVFileName(\"MyTanks\");\n }).catch((error) => {\n console.log(error);\n });\n })\n }\n\n async function fetchUserSettingsData(){\n try {\n let tempOrder = [];\n var i;\n var tempUpdates = {};\n \n const { status, data } = await userSettingsData.getUserSettingsData();\n\n const error = data.error;\n const settingsData = data.data;\n \n if (status === 404) {\n console.log(\"fetchUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n var cookies = new Cookies();\n //Code to check for cookies and use existing cookies (update)\n if (settingsData[COOKIE_NAMES.myTanksColumnsOrder]) {\n setColumnOrder(JSON.parse(settingsData[COOKIE_NAMES.myTanksColumnsOrder]));\n }\n else if (cookies.get(COOKIE_NAMES.myTanksColumnsOrder)) {\n //Use and remove cookie\n console.log(\"Cookies Detected for Column Order\");\n var tColumnOrder = cookies.get(COOKIE_NAMES.myTanksColumnsOrder);\n\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsMyTank.length; i++){\n if (columnsMyTank[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n }\n tempUpdates[COOKIE_NAMES.myTanksColumnsOrder] = JSON.stringify(tColumnOrder);\n }\n else {\n //Defaults\n console.log(\"Load Default Column Order\");\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsMyTank.length; i++){\n if (columnsMyTank[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n\n //Checked Columns\n if (settingsData[COOKIE_NAMES.myTanksColumnsChecked]){\n setChecked2(JSON.parse(settingsData[COOKIE_NAMES.myTanksColumnsChecked]))\n }\n else if(cookies.get(COOKIE_NAMES.myTanksColumnsChecked)){\n console.log(\"Cookies Detected for columns checked\");\n var tChecked2 = cookies.get(COOKIE_NAMES.myTanksColumnsChecked);\n if (undefined !== tChecked2){\n setChecked2(tChecked2);\n }\n tempUpdates[COOKIE_NAMES.myTanksColumnsChecked] = JSON.stringify(tChecked2);\n }\n else {\n //Default\n }\n \n if(Object.keys(tempUpdates).length){\n const { status, data } = await userSettingsData.updateUserSettingsData(tempUpdates);\n if (status === 200) {\n console.log(\"Removing old cookies\");\n cookies.remove(COOKIE_NAMES.myTanksColumnsOrder);\n cookies.remove(COOKIE_NAMES.myTanksColumnsChecked);\n }\n else {\n console.log(\"Failed to update back-end with cookie data\")\n }\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n async function updateUserSettingsData(settingsName, settingsDataIn){\n const lsettingsName = settingsName;\n const lsettingsDataIn = settingsDataIn;\n try {\n var updateData;\n \n updateData = userSettingsData.formatSettings(lsettingsName, lsettingsDataIn);\n const { status, data } = await userSettingsData.updateUserSettingsData(updateData);\n const { error } = data;\n const settingsData = data.data;\n\n if (status === 404) {\n console.log(\"updateUserSettingsData 404\");\n }\n\n if (error !== 'OK' && status !== 200) {\n alert(t(\"sorryUnableToRetrieve\"));\n throw new Error(error);\n }\n\n //console.log(settingsData);\n \n } catch (error) {\n console.error(error);\n }\n }\n\n React.useEffect(() => {\n if (!useCookiesForData){\n fetchUserSettingsData();\n }\n fetchMyTanksData();\n }, []);\n\n // Update the table column display. Triggers when the column list changes.\n useEffect(() => {\n let newColumns = [];\n var i, k;\n if (columnOrder.length){\n columnOrder.forEach(function (item, index) {\n for (i=0; i < columnsMyTank.length; i++){\n if (columnsMyTank[i].field === item.key){\n if (checked2[item.key]){\n newColumns.push(columnsMyTank[i]);\n }\n break;\n }\n }\n });\n setTableCols(newColumns);\n }\n }, [checked2, columnOrder]);\n\n useEffect(() => {\n let tempOrder = []\n var cookies = new Cookies();\n var i;\n \n if (columnOrder.length == 0 && useCookiesForData){\n var tColumnOrder = cookies.get(COOKIE_NAMES.myTanksColumnsOrder);\n if (undefined !== tColumnOrder){\n setColumnOrder(tColumnOrder);\n }\n else {\n defaultColumnOrder.forEach(function(value, index) {\n for(i=0; i < columnsMyTank.length; i++){\n if (columnsMyTank[i].field === value){\n tempOrder.push({key:value, label: FieldSelectLabel[value]});\n break;\n }\n }\n });\n setColumnOrder(tempOrder);\n }\n }\n }, []);\n\n \n\n function updateDisplayUnits(input_units) {\n var cookies = new Cookies();\n cookies.set(COOKIE_NAMES.displayUnits, input_units, { path: \"/\", maxAge: 1000000 });\n setDisplayUnits(input_units);\n }\n // Render functions to help properly render the table.\n const handleClickLink = (params) => {\n const orgName = (params.row.id.split(\",\"))[0];\n const branchName = (params.row.id.split(\",\"))[1];\n fetchOrgInformation(orgName, false);\n let url = params.field === 'OrgName' ? '/orgs/' + orgName : (params.field === 'BranchName' ? '/orgs/' + orgName + '/branches/' + branchName : (params.field === 'SiteName'\n ? '/orgs/' + orgName + '/branches/' + branchName + '/sites/' + params.value\n : '/orgs/' + orgName + '/branches/' + branchName + '/sites/' + params.getValue('SiteName') + '/tanks/' + params.value));\n history.push(url);\n };\n\n function renderLink(params) {\n return (\n handleClickLink(params)}>\n {params.value}\n \n );\n };\n\n function renderStatus(params) {\n var status = params.value;\n var status_key = \"ok\"\n var status_disp = t(\"ok\");\n\n if ((typeof status) !== \"string\") {\n status_disp = \"\";\n status_key = \"\";\n }\n else if (status.includes(\"Comm\")) {\n status_disp = t(\"comm\");\n status_key = \"comm\";\n }\n else if (status.includes(\"SensErr\")){\n status_disp = t(\"senserr\");\n status_key = \"sensorError\";\n }\n else if (status.includes(\"Crit\")) {\n status_disp = t(\"crit\");\n status_key = \"crit\";\n }\n else if (status.includes(\"Batt\")) {\n status_disp = t(\"batt\");\n status_key = \"batt\";\n }\n else if (status.includes(\"High\")) {\n status_disp = t(\"high\");\n status_key = \"high\";\n }\n else if (status.includes(\"Low\")) {\n status_disp = t(\"low\");\n status_key = \"low\";\n }\n else if (status.includes(\"SensW\") && params.row.showSensorWarning){\n status_disp = t(\"sensw\");\n status_key = \"sensorWarning\"\n }\n else if (status.includes(\"None\")) {\n status_disp = t(\"none\");\n status_key = \"none\"\n }\n var param_display = \"\";\n if (status !== undefined) {\n var param_display_list = status.toLowerCase().split(\",\");\n for (var i = 0; i < param_display_list.length; i++) {\n param_display_list[i] = t(param_display_list[i]);\n }\n param_display = param_display_list.join(\",\");\n }\n return (\n \n \n \n );\n }\n\n function FilterData(filterData, update = false) {\n var addItem = false;\n var newData = [];\n var tstatus = [];\n var ullage_pct = 0;\n var filters = {};\n var data_DTE = 0;\n if (update) {\n var cookies = new Cookies();\n setFiltersInfo(filterData);\n cookies.set(COOKIE_NAMES.branchFilterMyTanks, JSON.stringify(filterData), {path: \"/\", maxAge: 1000000 });\n filters = filterData;\n }\n else {\n filters = filtersInfo;\n }\n\n for (var i = 0; i < tankInfo.json_data.length; i++) {\n addItem = true;\n if (filters.fluidName.length && addItem) {\n for (var j = 0; j < filters.fluidName.length; j++) {\n if (-1 == filters.fluidName[j].indexOf(tankInfo.json_data[i].fluidName)) {\n addItem = false;\n }\n else {\n addItem = true;\n break;\n }\n }\n }\n if (filters.tagName.length && addItem) {\n addItem = false;\n if ('Tags' in tankInfo.json_data[i]) {\n for (var j = 0; j < tankInfo.json_data[i].Tags.length; j++) {\n for (var k = 0; k < filters.tagName.length; k++) {\n if (-1 !== filters.tagName[k].indexOf(tankInfo.json_data[i].Tags[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n }\n if (filters.statusName.length && addItem) {\n tstatus = tankInfo.json_data[i].Status.split(\",\");\n addItem = false;\n for (var j = 0; j < tstatus.length; j++) {\n for (var k = 0; k < filters.statusName.length; k++) {\n if (-1 !== filters.statusName[k].indexOf(tstatus[j])) {\n addItem = true;\n break;\n }\n }\n if (addItem) { break; }\n }\n }\n if (filters.DTE && (filters.DTE !== \"noFilter\") && addItem) {\n data_DTE = (tankInfo.json_data[i].DTE);\n //console.log(data_DTE);\n if (data_DTE >= parseFloat(filters.DTE) || null === data_DTE || undefined === data_DTE) {\n addItem = false;\n }\n }\n if ((filters.ullageRange[0] > 0 || filters.ullageRange[1] < 100) && (filters.ullageRange.length !== 0) && addItem) {\n ullage_pct = parseFloat(tankInfo.json_data[i].ullage_pct);\n if (ullage_pct < filters.ullageRange[0] || ullage_pct > filters.ullageRange[1]) {\n addItem = false;\n }\n }\n if (currentSearchTerm){\n if(tankInfo.json_data[i].name){\n let tankName = tankInfo.json_data[i].name.toUpperCase();\n let lSearchTerm = currentSearchTerm.toUpperCase();\n if(!tankName.includes(lSearchTerm)){\n addItem = false;\n }\n }\n else{\n addItem = false;\n }\n }\n if (addItem) {\n newData.push(tankInfo.json_data[i]);\n }\n else {\n console.log(tankInfo.json_data[i]);\n }\n }\n \n createCSVFileName(\"MyTanks\");\n newData = createTableData(newData, filters.showSensorWarning);\n setTableRows(newData);\n createCSVData(newData);\n createPDFData(newData);\n };\n\n const downloadCSVReport = (event) => {\n console.log(\"Downloading CSV for branch data...\");\n csvLink.current.link.click();\n };\n\n const downloadPDFReport = (event) => {\n console.log(\"Downloading PDF for branch data...\");\n\n const pdf = new jsPDF('l', 'pt', 'a4');\n\n pdf.autoTable({ html: '#report-data-table' });\n pdf.autoTable({\n body: pdfReportConfigHeaders,\n });\n\n pdf.autoTable({ html: '#report-table' });\n pdf.autoTable({\n head: pdfReportDataHeaders,\n body: pdfReportData,\n });\n\n pdf.save(pdfFileName);\n };\n\n // TODO: POST data to API to schedule a report\n const scheduleRecurringReport = async (event) => {\n // try {\n // let user = Auth.currentAuthenticatedUser();\n // user.getSession((err, session) => {\n // if (err) {\n // console.log(err);\n // return;\n // }\n\n // const sessionToken = session.getIdToken().jwtToken;\n\n // var body = JSON.stringify(\n // {\n // \"Name\": 'test',\n // }\n // );\n\n // var requestOptions = {\n // method: 'POST',\n // headers: {\n // 'Content-Type': 'application/json',\n // 'Authorization': sessionToken\n // },\n // body: body\n // };\n\n // let orgId = 1;\n // let branchId = 2;\n\n // fetch(host + '/orgs/' + orgId + '/branches/' + branchId + '/reports', requestOptions)\n // .then(response => {\n // console.log(response);\n // });\n // });\n // } catch (e) {\n // console.log(e);\n // };\n };\n\n // TODO: GET data to API to schedule a report\n const getUserRecurringReportRequest = (event) => {\n // Auth.currentAuthenticatedUser()\n // .then(data => {\n // console.log(\"Fetching branch, user reports schedule...\")\n\n // var requestOptions = {\n // method: 'GET',\n // headers: {\n // 'Content-Type': 'application/json',\n // 'Authorization': data.signInUserSession.idToken.jwtToken\n // }\n // };\n\n // let orgId = 1;\n // let branchId = 2;\n\n // fetch(host + '/orgs/' + orgId + '/branches/' + branchId + '/reports', requestOptions)\n // .then(results => results.json())\n // .then(data => {\n // console.log(data);\n // }).catch((error) => {\n // console.log(error);\n // });\n // })\n };\n\n const deleteRecurrSchedule = async (event) => {\n // let user = await Auth.currentAuthenticatedUser()\n // .then(data => {\n // console.log(\"Deleting branch, user reports schedule...\")\n\n // var requestOptions = {\n // method: 'DELETE',\n // headers: {\n // 'Content-Type': 'application/json',\n // 'Authorization': data.signInUserSession.idToken.jwtToken\n // }\n // };\n\n // fetch(host + '/orgs/' + orgInfo.orgId + '/branches/' + branchInfo.branchId + '/reports', requestOptions)\n // .then(results => results.json())\n // .then(data => {\n // console.log(data);\n // }).catch((error) => {\n // console.log(error);\n // });\n // });\n };\n\n if (!dataReady) {\n return (
\n {t(\"loadingData\")}\n
)\n }\n\n return (\n \n\n \n\n \n \n \n \n \n \n \n \n \n {t(\"myTanks\")}\n \n \n \n \n {setCurrentSearchTerm(value);}}\n displayUnits={displayUnits}\n setDisplayUnits={updateDisplayUnits}\n onCSVDownloadRequest={downloadCSVReport}\n onPDFDownloadRequest={downloadPDFReport}\n disableScheduleReport={true}\n onRecurringReportRequest={scheduleRecurringReport}\n onGetUserRecurringReportRequest={getUserRecurringReportRequest}\n deleteRecurrentReportRequest={deleteRecurrSchedule}\n reportingMenuItems={reportsMenuItems} />\n \n \n
\n \n
\n
\n
\n
\n
\n );\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React from 'react';\nimport {\n Switch,\n Route,\n useHistory,\n useLocation,\n useParams\n} from 'react-router-dom'\nimport Amplify, { Auth } from 'aws-amplify';\nimport { CssBaseline, Typography } from '@material-ui/core';\nimport { makeStyles, ThemeProvider } from '@material-ui/core/styles';\nimport useSessionstorage from '@rooks/use-sessionstorage';\n// Graco dependencies\nimport authConfig from './auth-config.js';\nimport GAuth from './GAuth/GAuth.jsx'\nimport Header from './Header/Header.jsx';\nimport HelpPage from './HelpPage/HelpPage.jsx';\nimport OrgCreate from './OrgPage/OrgCreate/OrgCreate.jsx';\nimport OrgPage from './OrgPage/OrgPage.jsx';\nimport OrgDetails from './OrgPage/OrgDetails/OrgDetails.jsx';\nimport ProfilePage from './ProfilePage/ProfilePage.jsx';\nimport DemoInvite from './DemoInvite/DemoInvite.jsx';\nimport Theme from './Theme.js';\nimport TlmPage from './TlmPage/TlmPage.jsx';\nimport SessionTimeout from './SessionTimeout/SessionTimeout.js';\nimport UpdateNotification from './UpdateNotification/UpdateNotification.js';\nimport { host } from \"./data\";\nimport MyTanksPage from './TlmPage/MyTanks/MyTanksPage.jsx';\nimport logoPulse from './Header/assets/Pulse_Level_Logo_black_v2.png';\nimport i18n from './i18n';\nimport { useTranslation } from 'react-i18next';\nimport Cookies from 'universal-cookie';\n\nconst logo = logoPulse;\n\n// Set AWS Cognito user pool credentials\nAmplify.configure({\n Auth: {\n region: authConfig.region,\n userPoolId: authConfig.userPoolId,\n userPoolWebClientId: authConfig.userPoolWebClientId\n }\n});\n\nconst useStyles = makeStyles((theme) => ({\n root: { height: '100vh', display: 'block' },\n content: { minHeight: 'calc(100vh - 64px)' },\n grow: { flexgrow: 1, },\n}));\n\n// Page router directs the app to the correct page and defines path parameters.\nconst PageRouter = ({ orgInfo, fetchOrgInformation, changeLanguage }) => {\n let data = useLocation();\n\n return (\n \n {data.state\n ? \n : \n }\n \n \n \n \n \n \n \n \n \n );\n}\n\n// The main App. Loaded by index.js, the whole app trees from here.\nexport default function App() {\n const { t } = useTranslation();\n const history = useHistory();\n const params = useParams();\n const classes = useStyles();\n const cookies = new Cookies();\n const { set: setSessionstorageValue } = useSessionstorage(\"orgInfo\", {});\n // Create state for the current org and org list.\n const [signedIn, setSignedIn] = React.useState(false);\n const [organization, setOrganization] = React.useState({\n orgName: '',\n isOrgEditor: true,\n orgId: ''\n });\n const [organizationsList, setOrganizationsList] = React.useState([]);\n const [organizationNavDict, setOrganizationNavDict] = React.useState({});\n const [orgsFetched, setOrgsfetched] = React.useState(false);\n const authTimeoutMinutes = 30; //auto sign out timeout\n const authWarningMinutes = 5; //Minutes remaining that popup occurs.\n\n const [showUpdateInfo, setShowUpdateInfo] = React.useState(false);\n\n const changeLanguage = (lng) => {\n console.log('Changing application language: ' + lng);\n i18n.changeLanguage(lng);\n }\n\n // Handle app events\n const handleAuthStateChange = (state) => {\n if (state === 'signedIn') { setSignedIn(true); }\n else { setSignedIn(false) };\n };\n\n // Handle organization change event. Passed to the nav menu in Header.\n const handleOrganizationChange = (event) => {\n setOrganization({\n orgName: event,\n isOrgEditor: organizationNavDict[event][1],\n orgId: organizationNavDict[event][0]\n });\n let url = '/';\n history.push(url);\n };\n\n // Get the org info. Runs once when the component mounts.\n function fetchOrgInformation(targetOrg, navigate, navUrl) {\n setOrgsfetched(false);\n\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n console.log(\"Fetching orgs...\")\n\n fetch(host + '/orgs?user=' + response.attributes.email, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n }\n }).then(response => response.json())\n .then(data => {\n // If there is no default org, redirect user to the new org screen.\n if (data.default.orgName.trim() === \"\" && data.data.organizationList.length === 0) {\n console.log(\"No orgs found.\");\n let url = '/orgs/';\n history.push(url, { firstOrg: true });\n }\n else {\n setOrganizationsList(data.data.organizationList);\n setOrganizationNavDict(data.data.organizationNavDict);\n\n if (targetOrg === \"default\") {\n setOrganization({\n orgName: data.default.orgName,\n isOrgEditor: data.default.isOrgEditor,\n orgId: data.default.orgId\n });\n let url = \"/\";\n history.push(url);\n }\n else if (targetOrg !== undefined && data.data.organizationNavDict[targetOrg] !== undefined) {\n setOrganization({\n orgName: targetOrg,\n isOrgEditor: data.data.organizationNavDict[targetOrg][1],\n orgId: data.data.organizationNavDict[targetOrg][0]\n });\n\n if (navigate === true || navigate === undefined) {\n let url = \"/\";\n if (navUrl !== undefined) {\n url = navUrl;\n }\n history.push(url);\n }\n }\n else if (params.orgName !== undefined &&\n params.orgName !== data.default.orgName &&\n data.data.organizationNavDict[params.orgName] !== undefined) {\n // Todo: Redirect to a \"page does not exist or no access page\" on an improper orgName in the url.\n setOrganization({\n orgName: params.orgName,\n isOrgEditor: data.data.organizationNavDict[params.orgName][1],\n orgId: data.data.organizationNavDict[params.orgName][0]\n });\n }\n else {\n if (data.default.orgId === \"\") {\n var lOrgName = data.data.organizationList[0];\n setOrganization({\n orgName: lOrgName,\n isOrgEditor: data.data.organizationNavDict[lOrgName][1],\n orgId: data.data.organizationNavDict[lOrgName][0]\n });\n }\n else {\n setOrganization({\n orgName: data.default.orgName,\n isOrgEditor: data.default.isOrgEditor,\n orgId: data.default.orgId\n });\n }\n };\n }\n\n setOrgsfetched(true);\n console.log(\"Orgs fetched.\")\n });\n });\n } catch (e) {\n console.log(e);\n }\n })\n };\n\n function fetchUserLanguageSetting() {\n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n console.log(\"Fetching user language setting...\");\n\n fetch(host + '/user/settings', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n }\n }).then(response => response.json())\n .then(data => {\n if (data['lang'].lang !== undefined) {\n changeLanguage(data['lang'].lang)\n console.log(\"User language setting fetched.\");\n //console.log(data);\n } else {\n console.log(cookies.get('login-lang'));\n if (cookies.get('login-lang') !== undefined) {\n changeLanguage(cookies.get('login-lang'));\n }\n clearShowUpdate(true);\n }\n if (data['lang'].show_update) {\n setShowUpdateInfo(true);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n })\n };\n\n function clearShowUpdate(show=false) {\n try {\n console.log(\"Clear Update Info Pop-up.\");\n \n Auth.currentAuthenticatedUser()\n .then(response => {\n try {\n response.getSession((err, session) => {\n if (err) {\n console.log(err);\n return;\n }\n\n fetch(host + '/user/settings/clearshowupdate', {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': session.getIdToken().jwtToken\n },\n body: JSON.stringify({\n lang: cookies.get('login-lang') !== undefined ? cookies.get('login-lang') : 'en'\n })\n }).then(response => response.json())\n .then(data => {\n if (data['error'] !== \"OK\"){\n console.log(data);\n }\n else{\n setShowUpdateInfo(show);\n }\n });\n });\n } catch (e) {\n console.log(e);\n }\n })\n } catch (e) {\n console.log(e);\n }\n };\n\n React.useEffect(() => {\n if (signedIn) {\n fetchUserLanguageSetting();\n fetchOrgInformation();\n }\n }, [signedIn]);\n\n React.useEffect(() => {\n setSessionstorageValue(organization);\n }, [organization])\n\n //DISABLE MOUSE WHEEL FROM EFFECTING NUMBER TYPE\n document.addEventListener(\"wheel\", function (event) {\n if (document.activeElement.type === \"number\") {\n document.activeElement.blur();\n }\n });\n\n // Setup the header and space for the page content through page router.\n return (\n \n \n {signedIn ?\n <>\n
handleOrganizationChange(event)} changeLanguage={changeLanguage} />\n
\n {orgsFetched ?\n :\n {t(\"loadingOrgData\")}...\n }\n {orgsFetched && }\n
\n \n :
\n \n
\n }\n
\n \n
\n \n );\n}","export default \"data:image/png;base64,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\"","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter, Switch, Route } from 'react-router-dom';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n';\nimport App from './App.jsx';\n\n// Page router is required to pass the orgName value to App as a param\nconst PageRouter = () => {\n return (\n \n \n \n \n );\n}\n\n// Start of the app. Browser router allows navigation by url.\nconst rootElement = document.getElementById('root');\nReactDOM.render(\n \n \n \n \n ,\n rootElement\n);\n\n// Service worker can be registered to allow faster loading and offline content\nserviceWorker.unregister();\n"],"sourceRoot":""}