{"version":3,"sources":["constants/localStorageKeys.js","redux/settings/actions.js","redux/dashboard/actions.js","redux/reservations/actions.js","redux/actions.js","constants/defaultValues.js","helpers/ThemeColors.js","security/roles.js","constants/api.js","constants/services.js","context/AuthContext.js","helpers/Utils.js","context/AppContext.js","redux/menu/actions.js","serviceWorker.js","redux/settings/reducer.js","redux/menu/reducer.js","redux/dashboard/reducer.js","redux/reservations/reducer.js","redux/reducers.js","redux/sagas.js","redux/store.js","AppRenderer.js","index.js","assets/css/sass/themes lazy /^/.//theme/-.*/.scss$/ groupOptions: {} namespace object"],"names":["SESSION_TOKEN","SESSION_ACCOUNT","USER_DATA","SEARCH_FILTERS","TOURS_COMPLETED","changeLocale","locale","localStorage","setItem","type","CHANGE_LOCALE","payload","changeActiveTab","activeTab","ADMIN_CHANGE_DASHBOARD_TAB","changeReservationsActiveTab","RESERVATION_CHANGE_TAB","MENU_SET_CLASSNAMES","MENU_CONTAINER_ADD_CLASSNAME","MENU_CLICK_MOBILE_MENU","MENU_CHANGE_DEFAULT_CLASSES","MENU_CHANGE_HAS_SUB_ITEM_STATUS","MENU_ENABLE_SMART_HOME","MENU_ENABLE_DASHBOARD","LOAD_MENU","MENU_LOADED","MENU_ERROR","defaultMenuType","subHiddenBreakpoint","menuHiddenBreakpoint","defaultLocale","localeOptions","id","name","direction","searchPath","themeColorStorageKey","isMultiColorActive","defaultColor","isDarkSwitchActive","defaultDirection","themeRadiusStorageKey","defaultRadius","colors","ThemeColors","rootStyle","getComputedStyle","document","body","themeColor1","getPropertyValue","trim","themeColor2","themeColor3","themeColor4","themeColor5","themeColor6","themeColor1_10","themeColor2_10","themeColor3_10","themeColor4_10","themeColor5_10","themeColor6_10","primaryColor","secondaryColor","foregroundColor","separatorColor","toolTipColor","mutedColor","orange","pink","MASTER","COMPANY","STAFF","DRIVER","RESELLER","FLEET_MANAGEMENT","CHARGING_SESSION_STATES","CHARGING_SESSION_SOURCES","BUSINESS_TYPES","AccessLevel","ADMIN","VIEWER","NONE","ACCESS_LEVELS","AccountType","PORTFOLIO","BASE_URL","process","REACT_APP_API_BASE","API_URL","REACT_APP_API_WS_BASE","API_URL_V2","API_URL_V2_OPEN","API_MEDIA_URL","GOOGLE_MAPS_API_KEY","HELP_CENTER_URL","REACT_APP_HELP_CENTER_URL","OPEN_TICKET_URL","REACT_APP_OPEN_TICKET_URL","AuthContext","React","createContext","emptyUser","firstName","lastName","emailAddress","photoUrl","AuthProvider","props","_state$currentAccount","_state$currentAccount2","_state$currentAccount3","_state$currentAccount4","_state$currentAccount5","_state$currentAccount6","_state$currentAccount7","_state$currentAccount8","_state$currentAccount9","_state$currentAccount10","state","setState","useState","token","getItem","user","JSON","parse","currentAccount","useEffect","stringify","console","log","_","isEmpty","logout","isAdmin","acl","accountType","isMaster","isMulti","account","businessType","deleteAppData","removeItem","createElement","Provider","Object","assign","value","login","async","data","accounts","authFetch","input","init","deleteHeader","headers","fetch","then","response","ok","status","window","location","reload","Error","catch","e","authFetchPure","residentAuthFetch","setUserProfile","profile","setUserAccount","safeParse","text","replace","getDirection","localValue","isRtl","getSubdomain","host","split","removeImgPrefix","string","getBase64","file","onOk","onError","img","reader","FileReader","readAsDataURL","onload","result","startsWith","onerror","error","setDirection","timeout","Promise","res","setTimeout","ms","twoDigits","number","toString","length","getLocalSetup","subdomain","setup","concat","isExpired","expirationYear","expirationMonth","exp","moment","add","isValidURL","RegExp","test","toCurrencyFormat","Intl","NumberFormat","style","currency","minimumFractionDigits","format","formatNumber","maximumFractionDigits","formatNumber2Decimals","formatBytes","bytes","decimals","arguments","undefined","k","dm","sizes","i","Math","floor","parseFloat","pow","toFixed","enumChargingSessionStateToLabel","enumChargerStateToLabel","connectivity","enumChargerModeToLabel","mode","enumPaymentStateToLabel","enumPaymentStateToClass","enumPropertyTypeToLabel","propertyType","enumPropertyStateToLabel","enumPropertyTaskTypeStateToLabel","enumPropertyTaskStateToLabel","enumChargingSessionSourceToLabel","enumChargingSessionSourceToSubLabel","enumChargingSessionSourceToDescLabel","chargingSessionSourceColor","enumAclToLabel","enumAccountTypeToLabel","accountTypeToColor","userDisplayName","_user$account","_user$account2","_user$account3","companyName","fullName","enumReservationEvToLabel","reservation","evChargingStatus","enumReservationEvToInfoLabel","enumReservationEvToDotClass","packagesCount","enumPackageTypeToLabel","chargingSessionStateColor","chargingSpotReservationStateColor","chargerStateColor","packagesStateColor","filterIsEmpty","filter","containsElements","keys","element","getSessionDuration","session","startTime","endTime","duration","humanize","ss","s","m","h","diff","enumPolicyToText","policy","discount","downloadFile","blob","url","URL","createObjectURL","Blob","link","href","setAttribute","appendChild","click","parentNode","removeChild","enumOemIdToText","oem","code","getLabelFromMeter","meter","label","withUnit","messages","unit","getUnitFromMeter","getColorFromMeter","getBkgColorFromMeter","meters","getDescFromMeter","selectedMeter","getChartForChargingSession","meterValues","meterType","startKwh","labels","prevKwh","forEach","mv","index","push","timestamp","toLocaleString","datasets","borderColor","borderWidth","pointBackgroundColor","pointBorderColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","pointHoverRadius","fill","min","backgroundColor","getChargerDeviceId","qrString","words","isEvReservation","transfersStateColor","secondsToHourMin","sec","hours","minutes","printChargerVersion","version","includes","v","enumLsgStateToLabel","loadSharingGroupStatusStr","chargers","statuses","inUse","c","plugged","available","outOfService","join","enumLoadSharingGroupSharingAlgorithmToLabel","lsg","loadSharingAlgorithm","key","AppContext","AppDataProvider","hideFooter","setHideFooter","doTour","setDoTour","getToursCompleted","saveNewTourCompleted","tour","tours","saveSearchFilter","page","filters","getSearchFilter","defaultFilter","enableSmartHome","enableDashboard","changeSelectedMenuHasSubItems","changeDefaultClassnames","strCurrentClasses","addContainerClassname","classname","newClasses","indexOf","clickOnMobileMenu","currentClasses","x","nextClasses","containerClassnames","menuClickCount","setContainerClassnames","clickIndex","selectedMenuHasSubItems","loadMenu","Boolean","hostname","match","INIT_STATE","loading","items","reducers","combineReducers","menu","action","settings","dashboard","reservations","fetchMenu","uuid","json","put","err","actionWatcher","takeLatest","rootSaga","getState","all","sagaMiddleware","createSagaMiddleware","middlewares","App","lazy","ReactDOM","render","store","initialState","createStore","compose","applyMiddleware","run","sagas","configureStore","Suspense","fallback","className","getElementById","navigator","serviceWorker","ready","registration","unregister","color","radius","classList","remove","folder","appleTouchIcon","head","getElementsByTagName","rel","appleSplashScreenIPhone5","media","appleSplashScreenIPhone6","appleSplashScreenIPhonePlus","appleSplashScreenIPhoneX","appleSplashScreenIPhoneXr","appleSplashScreenIPhoneXsMax","appleSplashScreenIPad","appleSplashScreenIPadPro1","appleSplashScreenIPadPro3","appleSplashScreenIPadPro2","setIcons","require","map","webpackAsyncContext","req","__webpack_require__","o","resolve","ids","t","module","exports"],"mappings":"iHAAA,0KAAO,MAAMA,EAAgB,QAChBC,EAAkB,UAClBC,EAAY,OAEZC,EAAiB,UACjBC,EAAkB,mB,iyBCHxB,MAAMC,EAAgBC,IAC3BC,aAAaC,QAAQ,kBAAmBF,GACjC,CACLG,KAAMC,EACNC,QAASL,ICJAM,EAAmBC,IACvB,CACLJ,KAAMK,EACNH,QAASE,ICHAE,EAA+BF,IACnC,CACLJ,KAAMO,EACNL,QAASE,ICHAH,EAAgB,gBAGhBO,EAAsB,sBACtBC,EAA+B,+BAC/BC,EAAyB,yBACzBC,EAA8B,8BAC9BC,EACX,kCACWC,EAAyB,yBACzBC,EAAwB,wBACxBC,EAAY,YACZC,EAAc,cACdC,EAAa,aAGbZ,EAA6B,6BAE7BE,EAAyB,0B,6BCpBtC,4dAIO,MAAMW,EAAkB,eAElBC,EAAsB,KACtBC,EAAuB,IACvBC,EAAgB,KAChBC,EAAgB,CAC3B,CAAEC,GAAI,KAAMC,KAAM,UAAWC,UAAW,OACxC,CAAEF,GAAI,KAAMC,KAAM,aAAWC,UAAW,OACxC,CAAEF,GAAI,KAAMC,KAAM,eAAaC,UAAW,OAC1C,CAAEF,GAAI,KAAMC,KAAM,eAAaC,UAAW,QAG/BC,EAAa,IAEbC,EAAuB,yBACvBC,GAAqB,EACrBC,EAAe,oBACfC,GAAqB,EACrBC,EAAmB,MACnBC,EAAwB,iBACxBC,EAAgB,UAEhBC,EAAS,CACpB,WACA,WACA,cACA,YACA,YACA,gBACA,eACA,UACA,gBACA,c,6BCpCF,kCAAO,MAAMC,EAAcA,KACzB,MAAMC,EAAYC,iBAAiBC,SAASC,MAC5C,MAAO,CACLC,YAAaJ,EAAUK,iBAAiB,mBAAmBC,OAC3DC,YAAaP,EAAUK,iBAAiB,mBAAmBC,OAC3DE,YAAaR,EAAUK,iBAAiB,mBAAmBC,OAC3DG,YAAaT,EAAUK,iBAAiB,mBAAmBC,OAC3DI,YAAaV,EAAUK,iBAAiB,mBAAmBC,OAC3DK,YAAaX,EAAUK,iBAAiB,mBAAmBC,OAC3DM,eAAgBZ,EAAUK,iBAAiB,sBAAsBC,OACjEO,eAAgBb,EAAUK,iBAAiB,sBAAsBC,OACjEQ,eAAgBd,EAAUK,iBAAiB,sBAAsBC,OACjES,eAAgBf,EAAUK,iBAAiB,sBAAsBC,OACjEU,eAAgBhB,EAAUK,iBAAiB,sBAAsBC,OACjEW,eAAgBjB,EAAUK,iBAAiB,sBAAsBC,OACjEY,aAAclB,EAAUK,iBAAiB,mBAAmBC,OAC5Da,eAAgBnB,EAAUK,iBAAiB,qBAAqBC,OAChEc,gBAAiBpB,EAAUK,iBAAiB,sBAAsBC,OAClEe,eAAgBrB,EAAUK,iBAAiB,qBAAqBC,OAChEgB,aAActB,EAAUK,iBAAiB,2BAA2BC,OACpEiB,WAAYvB,EAAUK,iBAAiB,iBAAiBC,OACxDkB,OAAQxB,EAAUK,iBAAiB,wBAAwBC,OAC3DmB,KAAMzB,EAAUK,iBAAiB,sBAAsBC,U,8BCtB3D,4MAAO,MAAMoB,EAAS,SACTC,EAAU,UACVC,EAAQ,QACRC,EAAS,SACTC,EAAW,WACXC,EAAmB,oB,+BCDhC,4MAAO,MAAMC,EAA0B,CAAC,UAAW,aAAa,WAAY,oBAAoB,YAAa,SAChGC,EAA2B,CAAC,gBAAiB,YAAa,eAAgB,eAAgB,OAAQ,cAAe,QAAS,sBAAuB,oBAEjJC,EAAiB,CAAC,kBAAkB,eAAe,gBAAgB,YAAY,gBAAgB,aAAa,oBAK5GC,EAAc,CACvBC,MAJU,QAKVC,OAJW,SAKXC,KAJS,QAMAC,EAAgB,CARf,QACC,SACF,QAYAC,EAAc,CACvBX,OALW,SAMXF,QALY,UAMZc,UALc,YAMdf,OALW,W,6BCpBf,gRACO,MAQMgB,EAAWC,4TAAYC,oBAAsB,4BAE7CC,GADcF,4TAAYG,sBAChBJ,EAAW,WACrBK,EAAaL,EAAW,aACxBM,EAAkBN,EAAW,kBAG7BO,EAAgB,kDAEhBC,EAAsBP,0CACtBQ,EAAkBR,4TAAYS,2BAA6B,gCAC3DC,EAAkBV,4TAAYW,2BAA6B,0D,mCCtBxE,wHAKA,MAAMC,EAAcC,IAAMC,gBAEpBC,EAAY,CAChBC,UAAW,GACXC,SAAU,GACVC,aAAc,GACdC,SAAU,MAINC,EAAiBC,IAAY,IAADC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAChC,MAAOC,EAAOC,GAAYC,mBAAS,CACjCC,MAAOpH,aAAaqH,QAAQ5H,KAC5B6H,KAAyC,MAAnCtH,aAAaqH,QAAQ1H,KAAqB4H,KAAKC,MAAMxH,aAAaqH,QAAQ1H,MAAcqG,EAC9FyB,eAAyD,MAAzCzH,aAAaqH,QAAQ3H,KAA2B6H,KAAKC,MAAMxH,aAAaqH,QAAQ3H,MAAoB,KAatHgI,oBAAU,KACR1H,aAAaC,QAAQN,IAAW4H,KAAKI,UAAUV,EAAMK,QACpD,CAACL,EAAMK,OAEVI,oBAAU,KACRE,QAAQC,IAAI,kBAAmBZ,EAAMQ,gBACjCK,IAAEC,QAAQd,EAAMQ,iBAClBG,QAAQC,IAAI,eACZG,KAEAhI,aAAaC,QAAQP,IAAiB6H,KAAKI,UAAUV,EAAMQ,kBAE5D,CAACR,EAAMQ,iBAGV,MAAMQ,GAA8B,QAApB1B,EAAAU,EAAMQ,sBAAc,IAAAlB,OAAA,EAApBA,EAAsB2B,OAAQzD,IAAYC,QAA6B,QAApB8B,EAAAS,EAAMQ,sBAAc,IAAAjB,OAAA,EAApBA,EAAsB2B,cAAerD,IAAYd,OAC9GoE,GAA+B,QAApB3B,EAAAQ,EAAMQ,sBAAc,IAAAhB,OAAA,EAApBA,EAAsByB,OAAQzD,IAAYC,QAA6B,QAApBgC,EAAAO,EAAMQ,sBAAc,IAAAf,OAAA,EAApBA,EAAsByB,eAAgBrD,IAAYd,OAChHqE,GAA8B,QAApB1B,EAAAM,EAAMQ,sBAAc,IAAAd,OAAA,EAApBA,EAAsBwB,eAAgBrD,IAAYd,SAA8B,QAApB4C,EAAAK,EAAMQ,sBAAc,IAAAb,OAAA,EAApBA,EAAsBuB,eAAgBrD,IAAYC,UAExHmD,EAA0B,QAAvBrB,EAAGI,EAAMQ,sBAAc,IAAAZ,OAAA,EAApBA,EAAsBqB,IAC5BI,EAA8B,QAAvBxB,EAAGG,EAAMQ,sBAAc,IAAAX,OAAA,EAApBA,EAAsBrF,GAChC0G,EAAkC,QAAvBpB,EAAGE,EAAMQ,sBAAc,IAAAV,OAAA,EAApBA,EAAsBoB,YACpCI,EAAmC,QAAvBvB,EAAGC,EAAMQ,sBAAc,IAAAT,OAAA,EAApBA,EAAsBuB,aAiJrCC,EAAgBA,KACpBxI,aAAayI,WAAW7I,KACxBI,aAAayI,WAAW,wBACxBzI,aAAayI,WAAW,2BAGpBT,EAASA,KACbhI,aAAayI,WAAW/I,KACxBM,aAAayI,WAAWhJ,KACxBO,aAAayI,WAAW9I,KACxBK,aAAayI,WAAW5I,KAGxB2I,IAGAxI,aAAayI,WAAW,OACxBzI,aAAayI,WAAW,cACxBzI,aAAayI,WAAW,gBACxBzI,aAAayI,WAAW,iBACxBzI,aAAayI,WAAW,wBACxBzI,aAAayI,WAAW,0BAExBb,QAAQC,IAAI,oBAOd,OACE/B,IAAA4C,cAAC7C,EAAY8C,SAAQC,OAAAC,OAAA,CACnBC,MAAO,IACF7B,EACH8B,MAhGQC,UACZ,IAAI1B,EAAO,IAAK2B,EAAK3B,MACjBG,EAAqB,OAAJH,QAAI,IAAJA,OAAI,EAAJA,EAAM4B,SAAS,GAEpChC,EAAS,CACPE,MAAO6B,EAAK7B,MACZK,eAAgBA,EAChBH,KAAMA,EAGNY,IAAKT,EAAeS,IACpBI,QAASb,EAAehG,GACxB0G,YAAaV,EAAeU,YAC5BI,aAAcd,EAAec,eAG/BvI,aAAaC,QAAQR,IAAewJ,EAAK7B,OACzCpH,aAAaC,QAAQN,IAAW4H,KAAKI,UAAUsB,EAAK3B,OACpDtH,aAAaC,QAAQP,IAAiB6H,KAAKI,UAAUF,IAOrDG,QAAQC,IAAI,iBAAkB7H,eAwE1BgI,SACAmB,UApKYH,MAAOI,EAAoBC,EAAoBC,MAC/DD,EAAOA,GAAQ,IACVE,QAAU,IACVF,EAAKE,QACR,sBAAuBtC,EAAMG,OAE3BiC,EAAK5G,OACP4G,EAAKE,QAAU,IACVF,EAAKE,QACR,eAAgB,qBAIhBD,UACKD,EAAKE,QAAQ,gBAEfC,MAAMJ,EAAOC,GAAMI,KAAMC,IAC9B,GAAIA,EAASC,GACX,OAAOD,EAEP,GAAuB,KAAnBA,EAASE,OAGX,OAFA5B,SACA6B,OAAOC,SAASC,SAKlB,KAAM,IADM,IAAIC,MAAM,wBACJN,cAEnBO,MAAOC,IACR,GAAKA,EAAER,SAKL,MAAMQ,EAFN,KAAM,IAFM,IAAIF,MAAM,wBAEJN,SADH,CAAEE,OAAQ,eAqIzBO,cApLgBA,CAACf,EAAOC,MAC5BA,EAAOA,GAAQ,IACVE,QAAU,IACVF,EAAKE,QACR,sBAAuBtC,EAAMG,OAE3BiC,EAAK5G,OACP4G,EAAKE,QAAU,IACVF,EAAKE,QACR,eAAgB,qBAGbC,MAAMJ,EAAOC,IAyKhBe,kBA9HoBpB,MAAOI,EAAoBC,MACnDA,EAAOA,GAAQ,IACVE,QAAU,IACVF,EAAKE,QACR,iCAAkCtC,EAAMG,OAEtCiC,EAAK5G,OACP4G,EAAKE,QAAU,IACVF,EAAKE,QACR,eAAgB,qBAGbC,MAAMJ,EAAOC,GAAMI,KAAMC,IAC9B,GAAIA,EAASC,GACX,OAAOD,EAMP,MAJuB,KAAnBA,EAASE,QACX5B,IAGI,IADM,IAAIgC,MAAM,wBACJN,eA2GlBW,eAlDkBC,IACtBpD,EAAS,IACJD,EACHK,KAAM,IACDL,EAAMK,QACNgD,MA8CHC,eAzEkBjC,IACtBpB,EAAS,IACJD,EACHQ,eAAgBa,IAQlBtI,aAAaC,QAAQP,IAAiB6H,KAAKI,UAAUW,IACrDE,KA8DIP,UACAG,WACAC,UACAH,MACAK,eACAJ,cACAG,YACKhC,M,gCCvPb,mgEASO,MAAMkE,EAAaC,IACxB,GAAKA,EAEL,OAAOjD,IAAMiD,EAAKC,QAAQ,UAAW,OAoC1BC,EAAeA,KAC1B,IAAIhJ,EAAYM,IAChB,GAAIjC,aAAaqH,QAAQ,aAAc,CACrC,MAAMuD,EAAa5K,aAAaqH,QAAQ,aACrB,QAAfuD,GAAuC,QAAfA,IAC1BjJ,EAAYiJ,GAGhB,MAAO,CACLjJ,YACAkJ,MAAqB,QAAdlJ,IAIEmJ,EAAeA,IACbjB,OAAOC,SAASiB,KAAKC,MAAM,KAAK,GAC1BA,MAAM,KACZ,GA8BFC,EAAmBC,GACvBA,EAAOF,MAAM,WAAW,GAGpBG,EAAYA,CAACC,EAAMC,EAAMC,KACpC,GAAKF,EAAL,CACA,IAAIG,EAAM,KACNC,EAAS,IAAIC,WACjBD,EAAOE,cAAcN,GACrBI,EAAOG,OAAS,YACdJ,EAAMC,EAAOI,QACLC,WAAW,cACjBR,EAAKE,GAELD,EAAQ,wBAGZE,EAAOM,QAAU,SAAUC,GACzBT,EAAQ,2BAICU,EAAgBpB,IAC3B,IAAIjJ,EAAY,MACG,QAAfiJ,GAAuC,QAAfA,IAC1BjJ,EAAYiJ,GAEd5K,aAAaC,QAAQ,YAAa0B,IASvBsK,EAAUjD,SACd,IAAIkD,QAAQC,GAAOC,WAAWD,EAAKE,IAG/BC,EAAaC,IACRA,EAAOC,WACTC,OAAS,IACrBF,EAAS,IAAMA,GAEVA,GAGIG,EAAgBA,KAC3B,MAAMC,EAAY7B,IACZ8B,EAAQ5M,aAAaqH,QAAQ,SAADwF,OAAUF,IAC5C,OAAOpF,KAAKC,MAAMoF,IAIPE,EAAYA,CAACC,EAAgBC,KACxC,IAAIC,EAAMC,IAAOH,EAAiB,IAAMC,EAAiB,UAEzD,OADYE,OACID,EAAIE,IAAI,EAAG,WAmBhBC,EAAclC,KACX,IAAImC,OAAO,mCAAoC,KAC5CC,KAAKpC,GAGXqC,EAAoBzE,GACb,IAAI0E,KAAKC,aAAa,QAAS,CAC/CC,MAAO,WACPC,SAAU,MACVC,sBAAuB,IAERC,OAAO/E,GAGbgF,EAAgBhF,GACT,IAAI0E,KAAKC,aAAa,QAAS,CAC/CM,sBAAuB,IAERF,OAAO/E,GAGbkF,EAAyBlF,GAClB,IAAI0E,KAAKC,aAAa,QAAS,CAC/CM,sBAAuB,IAERF,OAAO/E,GAIbmF,EAAc,SAACC,GAAyB,IAAlBC,EAAQC,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAC5C,GAAc,IAAVF,EAAa,MAAO,UAExB,MAAMI,EAAI,KACJC,EAAKJ,EAAW,EAAI,EAAIA,EACxBK,EAAQ,CAAC,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAE5DC,EAAIC,KAAKC,MAAMD,KAAK7G,IAAIqG,GAASQ,KAAK7G,IAAIyG,IAEhD,OAAOM,YAAYV,EAAQQ,KAAKG,IAAIP,EAAGG,IAAIK,QAAQP,IAAO,IAAMC,EAAMC,IAI3DM,EAAmC9H,IAC9C,OAAQA,GACN,IAAK,UACH,MAAO,kCACT,IAAK,aACH,MAAO,qCACT,IAAK,WACH,MAAO,mCACT,IAAK,eACH,MAAO,uCACT,IAAK,oBACH,MAAO,4CACT,IAAK,YACH,MAAO,oCACT,IAAK,QACH,MAAO,gCACT,QACE,MAAO,2BAIA+H,EAA0BA,CAAC/H,EAAOgI,KAE7C,GAAoB,WAAhBA,EACF,MAAgB,kBAAThI,EAA4B,sCAAwC,+BAG7E,OAAQA,GACN,IAAK,YACH,MAAO,iCACT,IAAK,SACH,MAAO,8BACT,IAAK,iBACH,MAAO,sCACT,IAAK,kBACH,MAAO,uCACT,QACE,MAAO,2BAIAiI,EAA0BC,IAErC,OAAQA,GACN,IAAK,WACH,MAAO,wBACT,IAAK,YACH,MAAO,yBACT,IAAK,OACH,MAAO,oBACT,IAAK,iBACH,MAAO,8BACT,IAAK,gBACH,MAAO,6BACT,QACE,MAAO,oBAIAC,EAA2BnI,IACtC,OAAQA,GACN,IAAK,UACH,MAAO,8BACT,IAAK,aACH,MAAO,iCACT,IAAK,kBACH,MAAO,sCACT,IAAK,WACH,MAAO,+BACT,IAAK,WACH,MAAO,+BACT,IAAK,YACH,MAAO,gCACT,IAAK,SACH,MAAO,6BACT,IAAK,mBACH,MAAO,uCACT,IAAK,kBACD,MAAO,sCACX,QACE,MAAO,2BAIAoI,EAA2BpI,IACtC,OAAQA,GACN,IAAK,UAEL,IAAK,aAEL,IAAK,kBAEL,IAAK,WACH,MAAO,YACT,IAAK,WACH,MAAO,SACT,IAAK,YACH,MAAO,UACT,IAAK,SACH,MAAO,SACT,IAAK,mBAEL,QACE,MAAO,cAIAqI,EAA2BC,IACtC,OAAQA,GACN,IAAK,wBACH,MAAO,qCACT,IAAK,SACH,MAAO,+BACT,IAAK,QACH,MAAO,8BACT,IAAK,UACH,MAAO,gCACT,IAAK,QACH,MAAO,8BACT,IAAK,YACH,MAAO,kCACT,IAAK,OACH,MAAO,6BACT,QACE,MAAO,sCAgBAC,EAA4BvI,IACvC,OAAQA,GACN,IAAK,WACH,MAAO,kCACT,IAAK,SACH,MAAO,gCACT,IAAK,QACH,MAAO,+BACT,QACE,MAAO,2BAIAwI,EAAoCxI,IAC/C,OAAQA,GACN,IAAK,eACH,MAAO,0CACT,IAAK,SACH,MAAO,oCACT,IAAK,cACH,MAAO,yCACT,QACE,MAAO,2BAIAyI,EAAgCzI,IAC3C,OAAQA,GACN,IAAK,MACH,MAAO,iCACT,IAAK,WACH,MAAO,sCACT,IAAK,UACH,MAAO,qCACT,IAAK,WACH,MAAO,sCACT,IAAK,SACH,MAAO,oCACT,IAAK,WACH,MAAO,sCACT,IAAK,YACH,MAAO,uCACT,IAAK,WACH,MAAO,sCACT,IAAK,OACH,MAAO,kCACT,IAAK,WACH,MAAO,sCACT,QACE,MAAO,2BAuBA0I,EAAoCzP,IAC/C,OAAQA,GACN,IAAK,YACL,IAAK,SACH,MAAO,gCACT,IAAK,gBACH,MAAO,mCACT,IAAK,cACH,MAAO,uCACT,IAAK,OACH,MAAO,gCACT,IAAK,eACL,IAAK,UACH,MAAO,wCACT,IAAK,eACH,MAAO,wCACT,IAAK,sBACH,MAAO,+CACT,IAAK,mBACH,MAAO,4CACT,IAAK,QACH,MAAO,iCACT,QACE,MAAO,2BAIA0P,EAAuC1P,IAClD,OAAQA,GACN,IAAK,YACH,MAAO,oCACT,IAAK,gBACH,MAAO,uCACT,IAAK,eACH,MAAO,4CACT,IAAK,sBACH,MAAO,mDACT,IAAK,mBACH,MAAO,gDACT,QACE,OAAO,OAIA2P,EAAwC3P,IACnD,OAAQA,GACN,IAAK,YACL,IAAK,SACH,MAAO,2CACT,IAAK,gBACH,MAAO,+CACT,IAAK,cACH,MAAO,2BACT,IAAK,OACH,MAAO,yBACT,IAAK,eACL,IAAK,UACH,MAAO,4BACT,IAAK,eACH,MAAO,qCACT,IAAK,sBACH,MAAO,mCACT,IAAK,mBACH,MAAO,gCACT,IAAK,QACH,MAAO,iCACT,QACE,MAAO,2BAMA4P,EAA8B5P,IACzC,OAAQA,GACN,IAAK,OACL,IAAK,eACH,MAAO,UACT,QACE,MAAO,cAMA6P,EAAkB7P,IAE7B,IAAKA,EACH,MAAO,oBAET,OAAQA,GACN,IAAK,WACL,IAAK,SACH,MAAO,qBACT,IAAK,YACH,MAAO,sBACT,IAAK,QACH,MAAO,kBACT,QACE,MAAO,sBAIA8P,EAA0B9P,IACrC,OAAQA,GACN,KAAK+D,IACH,MAAO,6BACT,KAAKC,IACH,MAAO,2BACT,KAAKF,IACH,MAAO,4BACT,KAAKI,IACH,MAAO,8BACT,KAAKD,IACH,MAAO,4BACT,IAAK,YACD,MAAO,+BACX,QACE,OAAOjE,IAIA+P,EAAsB/P,IACjC,OAAQA,GACN,KAAK8D,IACH,MAAO,SACT,KAAKC,IACH,MAAO,UACT,KAAKC,IACL,KAAKY,IAAYC,UACf,MAAO,UACT,QACE,MAAO,cAKAmL,EAAmB5I,IAAU,IAAD6I,EAAAC,EACoFC,EAA3H,OAAS,OAAJ/I,QAAI,IAAJA,GAAa,QAAT6I,EAAJ7I,EAAMgB,eAAO,IAAA6H,OAAT,EAAJA,EAAehI,cAAelE,MAAe,OAAJqD,QAAI,IAAJA,OAAI,EAAJA,EAAMpH,OAAQ+D,OAAiB,OAAJqD,QAAI,IAAJA,GAAa,QAAT8I,EAAJ9I,EAAMgB,eAAO,IAAA8H,OAAT,EAAJA,EAAeE,gBAAmB,OAAJhJ,QAAI,IAAJA,OAAI,EAAJA,EAAMgJ,aAItGhJ,EAAKiJ,SAAWjJ,EAAKiJ,SAAYjJ,EAAKrB,UAAY,IAAMqB,EAAKpB,UAHvD,OAAJoB,QAAI,IAAJA,GAAa,QAAT+I,EAAJ/I,EAAMgB,eAAO,IAAA+H,OAAT,EAAJA,EAAeC,eAAmB,OAAJhJ,QAAI,IAAJA,OAAI,EAAJA,EAAMgJ,cAMlCE,EAA2B,SAACC,GAAmC,IAAtBvQ,EAAIkO,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAG,UAEvDe,EAAOsB,EAAYC,iBAKvB,GAJwB,KAApBD,EAAYvQ,OACdiP,EAAO,SAGG,SAARjP,EACF,OAAQiP,GACN,IAAK,QACH,MAAO,mCACT,IAAK,OACH,MAAO,kCACT,IAAK,OACH,MAAO,kCACT,IAAK,WACH,MAAO,sCACT,IAAK,UACH,MAAO,qCACT,IAAK,cACH,MAAO,kCACT,IAAK,gBACH,MAAO,oCACT,IAAK,kBACH,MAAO,sCACT,IAAK,OACL,QACE,MAAO,kCAIb,OAAQA,GACN,IAAK,SACH,MAAO,8BACT,IAAK,OACH,MAAO,4BACT,IAAK,OACH,MAAO,4BACT,IAAK,WACH,MAAO,gCACT,IAAK,UACH,MAAO,+BACT,IAAK,cACH,MAAO,4BACT,IAAK,gBACH,MAAO,8BACT,IAAK,kBACH,MAAO,gCACT,IAAK,OACL,QACE,MAAO,8BAIAwB,EAAgCF,IAC3C,OAAQA,EAAYC,kBAClB,IAAK,OACH,MAAO,iCACT,IAAK,WACH,MAAO,qCACT,IAAK,UACH,MAAO,oCACT,IAAK,cACH,MAAO,iCACT,IAAK,gBACH,MAAO,mCACT,IAAK,kBACH,MAAO,qCACT,IAAK,OACL,QACE,MAAO,mCAIAE,EAA+BH,IAE1C,GAAwB,KAApBA,EAAYvQ,KACd,MAAO,YAGT,GAAIuQ,EAAYI,cAAgB,EAC9B,MAAO,YAGT,OAAQJ,EAAYC,kBAClB,IAAK,OACL,IAAK,UACL,IAAK,kBACH,MAAO,YACT,IAAK,OACH,MAAO,UACT,QACE,MAAO,eAIAI,EAA0B5Q,IACrC,OAAQA,GACN,IAAK,YACH,MAAO,0BACT,IAAK,WACH,MAAO,yBACT,IAAK,iBACH,MAAO,iCAOA6Q,EAA6B9J,IACxC,OAAQA,GACN,IAAK,YACL,IAAK,WACH,MAAO,UACT,IAAK,aACL,IAAK,UACH,MAAO,YACT,IAAK,oBACH,MAAO,SACT,IAAK,eACL,IAAK,QACH,MAAO,UACT,QACE,MAAO,KAIA+J,EAAqC/J,IAChD,OAAQA,GACN,IAAK,UACH,MAAO,YACT,IAAK,YACH,MAAO,UACT,IAAK,QACH,MAAO,SACT,IAAK,WACL,IAAK,UACH,MAAO,UACT,QACE,MAAO,cAIAgK,EAAoBA,CAAChK,EAAOgI,KACvC,GAAoB,WAAhBA,EACF,MAAO,SAET,OAAQhI,GACN,IAAK,YACH,MAAO,UACT,IAAK,SACH,MAAO,YACT,IAAK,iBACH,MAAO,SACT,IAAK,kBACH,MAAO,UACT,QACE,MAAO,KAIAiK,EAAsBjK,IACjC,OAAQA,GACN,IAAK,YACH,MAAO,UACT,IAAK,UACH,MAAO,YACT,IAAK,WACH,MAAO,SACT,QACE,MAAO,KAeAkK,EAAiBC,IAC5B,GAAItJ,IAAEC,QAAQqJ,GACZ,OAAO,EAET,IAAIC,GAAmB,EACvB,MAAMC,EAAO1I,OAAO0I,KAAKF,GACzB,IAAK,IAAI3C,EAAI,EAAGA,EAAI6C,EAAK7E,OAAQgC,IAAK,CACpC,MACM8C,EAAUH,EADJE,EAAK7C,IAEjB,GAAyB,qBAAZ8C,GAAsC,MAAXA,GAA8B,IAAXA,EAAgB,CACzEF,GAAmB,EACnB,OAGJ,OAAQA,GAeGG,GAAsBC,GAE7BA,EAAQC,WAAaD,EAAQE,QACxBzE,IAAO0E,SAASH,EAAQE,QAAUF,EAAQC,UAAW,WAAWG,SAAS,CAAEC,GAAI,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,KAGxGR,EAAQC,UACHxE,IAAO0E,SAAS1E,MAASgF,KAAyB,IAApBT,EAAQC,YAAmBG,SAAS,CAAEC,GAAI,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,KAG9F,IAIIE,GAAoBC,GAC3BA,EAAOC,SACFD,EAAOC,SAAW,QAGvBD,EAAOlS,KACFkS,EAAOlS,KAET,OAGIoS,GAAetJ,MAAOuJ,EAAM7Q,KACvC,MAAM8Q,EAAM3I,OAAO4I,IAAIC,gBAAgB,IAAIC,KAAK,CAACJ,KAC3CK,EAAOpQ,SAASkG,cAAc,KACpCkK,EAAKC,KAAOL,EACZI,EAAKE,aAAa,WAAYpR,GAE9Bc,SAASC,KAAKsQ,YAAYH,GAE1BA,EAAKI,QAELJ,EAAKK,WAAWC,YAAYN,IAIjBO,GAAmBC,IAC9B,OAAQA,EAAIC,MACV,IAAK,OACH,MAAO,mBACT,QACE,MAAO,SAAWD,EAAI1R,OAGf4R,GAAoB,SAACC,GAA0C,IACtEC,EADmCC,IAAQrF,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,KAAAA,UAAA,GAASsF,EAAQtF,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EAE5DsF,EAAOC,GAAiBL,GAC5B,OAAQA,GACN,IAAK,SACHC,EAAQ,iBACR,MACF,IAAK,cACHA,EAAQ,sBACR,MACF,IAAK,QACHA,EAAQ,gBACR,MACF,IAAK,UACHA,EAAQ,kBACR,MACF,IAAK,UACHA,EAAQ,kBACR,MACF,IAAK,cACHA,EAAQ,uBACR,MACF,IAAK,YACHA,EAAQ,oBAGZ,OAAOC,EAAWC,EAASF,GAAS,KAAOG,EAAO,IAAMD,EAASF,IAGtDI,GAAoBL,IAC/B,OAAQA,GACN,IAAK,SACH,MAAO,MACT,IAAK,cACH,MAAO,QACT,IAAK,QACH,MAAO,KACT,IAAK,UACH,MAAO,IACT,IAAK,UACH,MAAO,IACT,IAAK,cACH,MAAO,IACT,IAAK,YACH,MAAO,KAEX,MAAO,IAIIM,GAAqBN,IAChC,OAAQA,GACN,IAAK,SACL,QACE,OAAOlR,cAAcK,YACvB,IAAK,cACH,OAAOL,cAAcW,YACvB,IAAK,QACH,OAAOX,cAAcY,YACvB,IAAK,UACH,OAAOZ,cAAcK,YACvB,IAAK,UACH,OAAOL,cAAcW,YACvB,IAAK,cACH,OAAOX,cAAcY,YACvB,IAAK,YACH,OAAOZ,cAAcK,cAIdoR,GAAwBP,IACnC,OAAQA,GACN,IAAK,SACL,QACE,OAAOlR,cAAca,eACvB,IAAK,cACH,OAAOb,cAAciB,eACvB,IAAK,QACH,OAAOjB,cAAckB,eACvB,IAAK,UACH,OAAOlB,cAAca,eACvB,IAAK,UACH,OAAOb,cAAciB,eACvB,IAAK,cACH,OAAOjB,cAAckB,eACvB,IAAK,YACH,OAAOlB,cAAca,iBAId6Q,GAAS,CACpB,SACA,cACA,QACA,UACA,UACA,cACA,aAGWC,GAAmBA,CAACC,EAAeP,KAC9C,OAAQO,GACN,IAAK,SACL,QACE,OAAOP,EAAS,wBAClB,IAAK,cACH,OAAOA,EAAS,6BAClB,IAAK,QACH,OAAOA,EAAS,uBAClB,IAAK,UACH,OAAOA,EAAS,yBAClB,IAAK,UACH,OAAOA,EAAS,yBAClB,IAAK,cACH,OAAOA,EAAS,8BAClB,IAAK,YACH,OAAOA,EAAS,6BAKTQ,GAA6B,SAACC,EAAazC,EAAW0C,GAA2C,IAAhCC,EAAQjG,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAG,EAAGsF,EAAQtF,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EAAE5M,EAAE2M,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EAClGiG,EAAS,GACTrL,EAAO,GACPsL,EAAUF,EAkBd,OAhBIF,GAAeA,EAAY1H,OAAS,GACtC0H,EAAYK,QAAQ,CAACC,EAAIC,KACF,MAAjBD,EAAGL,IAAqC,MAAfK,EAAU,QAGrCH,EAAOK,KAAKzH,IAAO0E,SAAS6C,EAAGG,UAAYlD,EAAW,WAAWG,SAAS,CAAEC,GAAI,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,MACnF,UAAbmC,GACFnL,EAAK0L,MAAMF,EAAGL,GAAaG,GAASM,eAAe,QAAS,CAAE9G,sBAAuB,KACrFwG,EAAUE,EAAGL,IAEbnL,EAAK0L,KAAKF,EAAGL,OAMd,CACLE,OAAQA,EACRQ,SAAU,CACR,CACEtB,MAAOF,GAAkBc,GAAW,EAAMV,EAAUjS,GACpDwH,KAAMA,EACN8L,YAAalB,GAAkBO,GAC/BY,YAAa,EACbC,qBAAsB5S,cAAcqB,gBACpCwR,iBAAkBrB,GAAkBO,GACpCe,0BAA2BtB,GAAkBO,GAC7CgB,sBAAuB/S,cAAcqB,gBACrC2R,YAAa,EAEbC,iBAAkB,EAClBC,MAAM,EACNC,IAAK,EACLC,gBAAiB3B,GAAqBM,OAMjCsB,GAAsBC,IACjC,IAAKA,EAAU,OACf,MAAMC,EAAQD,EAAS3K,MAAM,cAC7B,OAAI4K,EAAMnJ,OAAS,EACVmJ,EAAM,QADf,GAcWC,GAAmBpF,GAEM,QAAhCA,EAAYC,kBAA8D,WAAhCD,EAAYC,mBAGlC,KAApBD,EAAYvQ,OAGZuQ,EAAYI,cAAgB,QAAhC,IAKWiF,GAAuB7O,IAClC,OAAQA,GACN,IAAK,UACL,IAAK,UACH,MAAO,YACT,IAAK,SACH,MAAO,SACT,IAAK,YACH,MAAO,UACT,IAAK,WACL,IAAK,WACH,MAAO,UACT,QACE,MAAO,cAKA8O,GAAoBC,IAC/B,IAAIC,EAAQvH,KAAKC,MAAMqH,EAAM,MAC7B,MAAME,EAAUxH,KAAKC,OAAOqH,EAAc,KAARC,GAAgB,IAClD,IAAI/V,EAAQ+V,EAAQ,IAAe,IAATA,EAAe,KAAO,KAEhD,OADAA,EAAiB,GAATA,EAAa,GAAMA,GAAS,GAAKA,EAAQA,EAAQ,GACnD,GAANpJ,OAAUoJ,EAAQ,GAAK,IAAMA,EAAQA,EAAK,KAAApJ,OAAIqJ,EAAU,GAAK,IAAMA,EAAUA,EAAO,KAAArJ,OAAI3M,IAI7EiW,GAAuBC,IAElC,IAAKA,EACH,MAAO,GAGT,GAAIA,EAAQC,SAAS,KAAM,CACzB,IAAIC,EAAIF,EAAQpL,MAAM,KAAK,GAC3B,GAAIsL,EAAED,SAAS,SACb,OAAOC,EAAEtL,MAAM,SAAS,GAE1B,GAAIsL,EAAED,SAAS,SACb,OAAOC,EAAEtL,MAAM,SAAS,GAG5B,OAAOoL,GAGIG,GAAuBtP,IAClC,OAAQA,GACN,IAAK,YACH,MAAO,iCACT,IAAK,SACH,MAAO,8BACT,IAAK,iBACH,MAAO,sCACT,IAAK,kBACH,MAAO,uCACT,QACE,MAAO,2BAIAuP,GAA4BA,CAACC,EAAU/C,KAClD,MAAMgD,EAAW,GACXC,EAAQF,EAASrF,OAAOwF,GAAiB,WAAZA,EAAE3P,OAC/B4P,EAAUJ,EAASrF,OAAOwF,GAAiB,oBAAZA,EAAE3P,OACjC6P,EAAYL,EAASrF,OAAOwF,GAAiB,cAAZA,EAAE3P,OACnC8P,EAAeN,EAASrF,OAAOwF,GAAiB,mBAAZA,EAAE3P,OAa5C,OAZI0P,EAAMlK,QACRiK,EAAS/B,KAAK,GAAD9H,OAAI8J,EAAMlK,OAAM,KAAAI,OAAI6G,EAAS6C,GAAoB,aAE5DM,EAAQpK,QACViK,EAAS/B,KAAK,GAAD9H,OAAIgK,EAAQpK,OAAM,KAAAI,OAAI6G,EAAS6C,GAAoB,sBAE9DO,EAAUrK,QACZiK,EAAS/B,KAAK,GAAD9H,OAAIiK,EAAUrK,OAAM,KAAAI,OAAI6G,EAAS6C,GAAoB,gBAEhEQ,EAAatK,QACfiK,EAAS/B,KAAK,GAAD9H,OAAIkK,EAAatK,OAAM,KAAAI,OAAI6G,EAAS6C,GAAoB,qBAEhEG,EAASM,KAAK,OAGVC,GAA+CC,IAC1D,OAAQA,GACN,IAAK,gBACH,MAAO,0BACP,IAAK,wBACL,MAAO,oCAMAC,GAAuB,CAClC,CAAE3D,MAAO,gBAAiB1K,MAAO,gBAAiBsO,IAAK,K,6BCjmCzD,+FASA,MAAMC,EAAavR,IAAMC,gBAEnBuR,EAAmBhR,IAEvB,MAAOiR,EAAYC,GAAiBrQ,oBAAS,IACtCsQ,EAAQC,GAAavQ,oBAAS,GAwCrC,OACErB,IAAA4C,cAAC2O,EAAW1O,SAAQC,OAAAC,OAAA,CAClBC,MAAO,CAAE4O,YAAWD,SAAQE,kBAxBNA,IACwB,MAAzC3X,aAAaqH,QAAQxH,KAA2B0H,KAAKC,MAAMxH,aAAaqH,QAAQxH,MAAoB,GAuB1D+X,qBAvCrBC,IAE5B,GAA6C,MAAzC7X,aAAaqH,QAAQxH,KAA0B,CACjD,IAAIiY,EAAQvQ,KAAKC,MAAMxH,aAAaqH,QAAQxH,MAE5C,GAAIiY,EAAMzB,SAASwB,GAAO,OAC1BC,EAAMnD,KAAKkD,GACX7X,aAAaC,QAAQJ,IAAiB0H,KAAKI,UAAUmQ,QAChD,CAEL,IAAIA,EAAQ,CAACD,GACb7X,aAAaC,QAAQJ,IAAiB0H,KAAKI,UAAUmQ,MA6BrDC,iBApBqBA,CAACC,EAAM5G,KAC9B,GAA4C,MAAxCpR,aAAaqH,QAAQzH,KAAyB,CAChD,IAAIqY,EAAU1Q,KAAKC,MAAMxH,aAAaqH,QAAQzH,MAC9CqY,EAAQD,GAAQ5G,EAChBpR,aAAaC,QAAQL,IAAgB2H,KAAKI,UAAUsQ,QAC/C,CACL,IAAIA,EAAU,GACdA,EAAQD,GAAQ5G,EAChBpR,aAAaC,QAAQL,IAAgB2H,KAAKI,UAAUsQ,MAYlCC,gBARE,SAACF,GAA8B,IAAxBG,EAAa/J,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAG,GACzC6J,EAAUjY,aAAaqH,QAAQzH,KACnC,OAAOqY,GAAW1Q,KAAKC,MAAMyQ,GAASD,IAA0BG,GAM3BX,gBAAeD,eAAkBjR,M,gCCzD1E,iSAeO,MAAM8R,EAAmBhY,IACvB,CACLF,KAAMa,IACNX,YAISiY,EAAmBjY,IACvB,CACLF,KAAMc,IACNZ,YAKSkY,EAAiClY,IACrC,CACLF,KAAMY,IACNV,YAISmY,EAA2BC,IAC/B,CACLtY,KAAMW,IACNT,QAASoY,IAIAC,EAAwBA,CAACC,EAAWF,KAC/C,MAAMG,GACHH,EAAkBI,QAAQF,IAAc,EAAC,GAAA7L,OACnC2L,EAAiB,KAAA3L,OAAI6L,GACxBF,EACN,MAAO,CACLtY,KAAMS,IACNP,QAASuY,IAIAE,EAAqBL,IAChC,MAAMM,EAAiBN,EACnBA,EACGxN,MAAM,KACNoG,OAAQ2H,GAAY,KAANA,GAAkB,uBAANA,GAC7B,GACJ,IAAIC,EAAc,GAQlB,OANEA,EADEF,EAAezC,SAAS,uBACZyC,EACX1H,OAAQ2H,GAAY,wBAANA,GACd/B,KAAK,KAEG,GAAAnK,OAAMiM,EAAe9B,KAAK,KAAI,wBAEpC,CACL9W,KAAMU,IACNR,QAAS,CAAE6Y,oBAAqBD,EAAaE,eAAgB,KAIpDC,EAAyBA,CACpCC,EACAZ,EACAa,KAEA,MAAMP,EAAiBN,EACnBA,EAAkBxN,MAAM,KAAKoG,OAAQ2H,GAAY,KAANA,GAC3C,GACJ,IAAIC,EAAc,GA4ElB,OA3EKK,KAEDP,EAAezC,SAAS,iBACvB+C,EAAa,IAAM,GAAKA,EAAa,IAAM,IAE5CA,EAAa,GAEXN,EAAezC,SAAS,oBAAsB+C,EAAa,IAAM,IACnEA,EAAa,IAGbN,EAAezC,SAAS,gBACvB+C,EAAa,IAAM,GAAKA,EAAa,IAAM,IAE5CA,EAAa,IAIbA,EAAa,IAAM,GAEnBN,EAAezC,SAAS,iBACxByC,EAAezC,SAAS,mBAExB2C,EAAc,+BACLF,EAAezC,SAAS,gBACjC2C,EAAc,eACLF,EAAezC,SAAS,mBACjC2C,EAAc,kBACLF,EAAezC,SAAS,iBACjC2C,EAAc,eAEhBI,EAAa,GACJA,EAAa,IAAM,EAE1BN,EAAezC,SAAS,iBACxByC,EAAezC,SAAS,mBAExB2C,EAAc,sDACLF,EAAezC,SAAS,gBACjC2C,EAAc,0BACLF,EAAezC,SAAS,mBACjC2C,EAAc,yCACLF,EAAezC,SAAS,iBACjC2C,EAAc,mCAEPI,EAAa,IAAM,EAE1BN,EAAezC,SAAS,iBACxByC,EAAezC,SAAS,mBAExB2C,EAAc,0CACLF,EAAezC,SAAS,gBACjC2C,EAAc,sCACLF,EAAezC,SAAS,mBACjC2C,EAAc,6BACLF,EAAezC,SAAS,iBACjC2C,EAAc,sDAEPI,EAAa,IAAM,IAE1BN,EAAezC,SAAS,iBACxByC,EAAezC,SAAS,mBAExB2C,EAAc,kDACLF,EAAezC,SAAS,gBACjC2C,EAAc,0BACLF,EAAezC,SAAS,mBACjC2C,EAAc,qCACLF,EAAezC,SAAS,iBACjC2C,EAAc,oCAGdF,EAAezC,SAAS,iBAC1B2C,GAAe,gBAEV,CACL9Y,KAAMQ,IACNN,QAAS,CAAE6Y,oBAAqBD,EAAaE,eAAgBE,KAIpDE,EAAYlZ,IAChB,CACLF,KAAMe,O,oFC3JUsY,QACW,cAA7B1P,OAAOC,SAAS0P,UAEe,UAA7B3P,OAAOC,SAAS0P,UAEhB3P,OAAOC,SAAS0P,SAASC,MACvB,2D,kCCdN,MAAMC,EAAa,CACjB3Z,OACEC,aAAaqH,QAAQ,oBACrB7F,IAAc4P,OACX2H,GAAMA,EAAEtX,KAAOzB,aAAaqH,QAAQ,oBACrCoF,OAAS,EACPzM,aAAaqH,QAAQ,mBACrB9F,KCMR,MAAMmY,EAAa,CACjBC,SAAS,EACTC,MAAO,KACP7N,OAAO,EACPkN,oBAAqB7X,IACrBC,wBACAC,yBACA4X,eAAgB,EAChBG,wBAA6C,iBAApBjY,KCvB3B,MAAMsY,EAAa,CACjBpZ,UAAW,gBCDb,MAAMoZ,EAAa,CACjBpZ,UAAW,YCUEuZ,MAPEC,YAAgB,CAC/BC,KHqBa,WAAiC,IAAhC9S,EAAKmH,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAGsL,EAAYM,EAAM5L,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EAC5BpH,EAAM2S,MAClB,OAAQI,EAAO9Z,MAEb,KAAKY,IACH,MAAO,IAAKmG,EAAOoS,wBAAyBW,EAAO5Z,SAErD,KAAKM,IA0BL,KAAKE,IACH,MAAO,IACFqG,EACHgS,oBAAqBe,EAAO5Z,QAAQ6Y,oBACpCC,eAAgBc,EAAO5Z,QAAQ8Y,gBAGnC,KAAKvY,IAGL,KAAKE,IACH,MAAO,IAAKoG,EAAOgS,oBAAqBe,EAAO5Z,SACjD,KAAKa,IACH,MAAO,IAAKgG,EAAO0S,SAAS,GAC9B,KAAKzY,IACH,MAAO,IAAK+F,EAAO0S,SAAS,EAAO5N,OAAO,EAAO6N,MAAOI,EAAOD,MAGjE,KAAK5Y,IACH,MAAO,IAAK8F,EAAO0S,SAAS,EAAO5N,OAAO,GAC5C,QACE,MAAO,IAAK9E,KG1EhBgT,SJMa,WAAiC,IAAhChT,EAAKmH,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAGsL,EAAYM,EAAM5L,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EACxC,OAAQ2L,EAAO9Z,MACb,KAAKC,IACH,MAAO,IAAK8G,EAAOlH,OAAQia,EAAO5Z,SAEpC,QACE,MAAO,IAAK6G,KIXhBiT,UFHa,WAAiC,IAAhCjT,EAAKmH,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAGsL,EAAYM,EAAM5L,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EACxC,OAAQ2L,EAAO9Z,MACb,KAAKK,IACH,MAAO,IAAK0G,EAAO3G,UAAW0Z,EAAO5Z,SAEvC,QACE,MAAO,IAAK6G,KEFhBkT,aDJa,WAAiC,IAAhClT,EAAKmH,UAAA3B,OAAA,QAAA4B,IAAAD,UAAA,GAAAA,UAAA,GAAGsL,EAAYM,EAAM5L,UAAA3B,OAAA,EAAA2B,UAAA,QAAAC,EACxC,OAAQ2L,EAAO9Z,MACb,KAAKO,IACH,MAAO,IAAKwG,EAAO3G,UAAW0Z,EAAO5Z,SAEvC,QACE,MAAO,IAAK6G,O,+BEJlB,SAAUmT,IAGR,MAAMhT,EAAQpH,aAAaqH,QAAQ5H,KAC7B4a,EAAM9S,KAAKC,MAAMxH,aAAaqH,QAAQ3H,MAAkB2a,KAE9D,IACE,MAAMN,QAAavQ,MAAM,GAADqD,OAAIxH,IAAU,cAAAwH,OAAawN,EAAI,SAAS,CAAE9Q,QAAS,CAAE,sBAAuBnC,KACjGqC,KAAKC,GAAYA,EAAS4Q,cACvBC,YAAI,CAAEra,KAAMgB,IAAa6Y,KAAMA,IACrC,MAAOS,SACDD,YAAI,CAAEra,KAAMiB,OAKtB,SAAUsZ,UACFC,YAAWzZ,IAAWmZ,GAGf,SAAUO,EAASC,SAC1BC,YAAI,CAACJ,MCxBb,MAAMK,EAAiBC,cAEjBC,EAAc,CAACF,G,YCCrB,MAAMG,EAAMnV,IAAMoV,KAAK,IAAM,wDAE7BC,IAASC,OACPtV,IAAA4C,cAACC,IAAQ,CAAC0S,MDFL,SAAwBC,GAC7B,MAAMD,EAAQE,YACZ1B,EACAyB,EACAE,YAAQC,eAAmBT,KAY7B,OATAF,EAAeY,IAAIC,GASZN,ECdUO,IAChB9V,IAAA4C,cAACrC,IAAY,KACVP,IAAA4C,cAAC4O,IAAe,KACdxR,IAAA4C,cAACmT,WAAQ,CAACC,SAAUhW,IAAA4C,cAAA,OAAKqT,UAAU,aAC/BjW,IAAA4C,cAACuS,EAAG,UAKdzY,SAASwZ,eAAe,SR6GpB,kBAAmBC,WACrBA,UAAUC,cAAcC,MAAM1S,KAAK2S,IACjCA,EAAaC,gB,qESnInB,oEAmBA,MAAMC,GACHxa,KAAsBE,MACvBhC,aAAaqH,QAAQxF,KACjB7B,aAAaqH,QAAQxF,KACrBE,IAEN/B,aAAaC,QAAQ4B,IAAsBya,GAE3C,MAAMC,EAASza,KAAsB9B,aAAaqH,QAAQnF,KACxClC,aAAaqH,QAAQnF,KACrBC,IAEH,SAAXoa,EACF/Z,SAASC,KAAK+Z,UAAUC,OAAO,WAE/Bja,SAASC,KAAK+Z,UAAUrP,IAAI,WAE9BnN,aAAaC,QAAQiC,IAAuBqa,GA6E7BvT,WAEb,MAAM2D,EAAY7B,cA7EF6B,KAEhB,MAAM+P,EAAS,eAAe/P,EAC9BnK,SAASwZ,eAAe,WAAWnJ,KAAO6J,EAAS,eACnD,MAAMC,EAAiBna,SAASkG,cAAc,QACxCkU,EAAOpa,SAASqa,qBAAqB,QAAQ,GAEnDF,EAAe9J,KAAQ6J,EAAS,YAChCC,EAAeG,IAAM,mBACrBF,EAAK7J,YAAY4J,GAGf,MAAMI,EAA2Bva,SAASkG,cAAc,QACxDqU,EAAyBlK,KAAO6J,EAAQ,sBACxCK,EAAyBC,MAAQ,uFACjCD,EAAyBD,IAAM,4BAC/BF,EAAK7J,YAAYgK,GAEjB,MAAME,EAA2Bza,SAASkG,cAAc,QACxDuU,EAAyBpK,KAAO6J,EAAQ,sBACxCO,EAAyBD,MAAQ,uFACjCC,EAAyBH,IAAM,4BAC/BF,EAAK7J,YAAYkK,GAEjB,MAAMC,EAA8B1a,SAASkG,cAAc,QAC3DwU,EAA4BrK,KAAO6J,EAAQ,yBAC3CQ,EAA4BF,MAAQ,wFACpCE,EAA4BJ,IAAM,4BAClCF,EAAK7J,YAAYmK,GAEjB,MAAMC,EAA2B3a,SAASkG,cAAc,QACxDyU,EAAyBtK,KAAO6J,EAAQ,sBACxCS,EAAyBH,MAAQ,uFACjCG,EAAyBL,IAAM,4BAC/BF,EAAK7J,YAAYoK,GAEjB,MAAMC,EAA4B5a,SAASkG,cAAc,QACzD0U,EAA0BvK,KAAO6J,EAAQ,uBACzCU,EAA0BJ,MAAQ,uFAClCI,EAA0BN,IAAM,4BAChCF,EAAK7J,YAAYqK,GAEjB,MAAMC,EAA+B7a,SAASkG,cAAc,QAC5D2U,EAA6BxK,KAAO6J,EAAQ,0BAC5CW,EAA6BL,MAAQ,uFACrCK,EAA6BP,IAAM,4BACnCF,EAAK7J,YAAYsK,GAEjB,MAAMC,EAAwB9a,SAASkG,cAAc,QACrD4U,EAAsBzK,KAAO6J,EAAQ,mBACrCY,EAAsBN,MAAQ,wFAC9BM,EAAsBR,IAAM,4BAC5BF,EAAK7J,YAAYuK,GAEjB,MAAMC,EAA4B/a,SAASkG,cAAc,QACzD6U,EAA0B1K,KAAO6J,EAAQ,uBACzCa,EAA0BP,MAAQ,wFAClCO,EAA0BT,IAAM,4BAChCF,EAAK7J,YAAYwK,GAEjB,MAAMC,EAA4Bhb,SAASkG,cAAc,QACzD8U,EAA0B3K,KAAO6J,EAAQ,uBACzCc,EAA0BR,MAAQ,wFAClCQ,EAA0BV,IAAM,4BAChCF,EAAK7J,YAAYyK,GAEjB,MAAMC,EAA4Bjb,SAASkG,cAAc,QACzD+U,EAA0B5K,KAAO6J,EAAQ,uBACzCe,EAA0BT,MAAQ,yFAClCS,EAA0BX,IAAM,4BAChCF,EAAK7J,YAAY0K,IAQnBC,CAAS/Q,GAET,MAAO,WAADE,OAAmCF,EAAS,UAASlD,KAAK,KAC9DkU,EAAQ,MAET1T,MAAM,KACL,kCAAqDR,KAAK,KACxDkU,EAAQ,SAKdvC,I,oEChIA,IAAIwC,EAAM,CACT,sBAAuB,CACtB,GACA,IAED,iCAAkC,CACjC,GACA,KAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAO5R,QAAQ+R,UAAUxU,MAAK,WAC7B,IAAIS,EAAI,IAAIF,MAAM,uBAAyB8T,EAAM,KAEjD,MADA5T,EAAEmJ,KAAO,mBACHnJ,KAIR,IAAIgU,EAAMN,EAAIE,GAAMrc,EAAKyc,EAAI,GAC7B,OAAOH,EAAoB7T,EAAEgU,EAAI,IAAIzU,MAAK,WACzC,OAAOsU,EAAoBI,EAAE1c,EAAI,MAGnCoc,EAAoBvM,KAAO,WAC1B,OAAO1I,OAAO0I,KAAKsM,IAEpBC,EAAoBpc,GAAK,GACzB2c,EAAOC,QAAUR,I","file":"static/js/main.f2c2001a.chunk.js","sourcesContent":["export const SESSION_TOKEN = 'token';\nexport const SESSION_ACCOUNT = 'account';\nexport const USER_DATA = 'user';\n\nexport const SEARCH_FILTERS = 'filters';\nexport const TOURS_COMPLETED = 'tours_completed';\nexport const CURRENT_LANGUAGE = 'current_language';\n\nexport const SYNC_PROPERTIES_TASK = 'syncPropertiesTaskId';\nexport const SYNC_RESERVATIONS_TASK = 'syncReservationsTaskId';\n\n\n","import { CHANGE_LOCALE } from '../actions';\r\n\r\nexport const changeLocale = (locale) => {\r\n localStorage.setItem('currentLanguage', locale);\r\n return {\r\n type: CHANGE_LOCALE,\r\n payload: locale,\r\n };\r\n};\r\n","import { ADMIN_CHANGE_DASHBOARD_TAB } from '../actions';\r\n\r\nexport const changeActiveTab = (activeTab) => {\r\n return {\r\n type: ADMIN_CHANGE_DASHBOARD_TAB,\r\n payload: activeTab,\r\n };\r\n};\r\n","import { RESERVATION_CHANGE_TAB } from '../actions';\r\n\r\nexport const changeReservationsActiveTab = (activeTab) => {\r\n return {\r\n type: RESERVATION_CHANGE_TAB,\r\n payload: activeTab,\r\n };\r\n};\r\n","/* eslint-disable import/no-cycle */\r\n/* SETTINGS */\r\nexport const CHANGE_LOCALE = 'CHANGE_LOCALE';\r\n\r\n/* MENU */\r\nexport const MENU_SET_CLASSNAMES = 'MENU_SET_CLASSNAMES';\r\nexport const MENU_CONTAINER_ADD_CLASSNAME = 'MENU_CONTAINER_ADD_CLASSNAME';\r\nexport const MENU_CLICK_MOBILE_MENU = 'MENU_CLICK_MOBILE_MENU';\r\nexport const MENU_CHANGE_DEFAULT_CLASSES = 'MENU_CHANGE_DEFAULT_CLASSES';\r\nexport const MENU_CHANGE_HAS_SUB_ITEM_STATUS =\r\n 'MENU_CHANGE_HAS_SUB_ITEM_STATUS';\r\nexport const MENU_ENABLE_SMART_HOME = 'MENU_ENABLE_SMART_HOME';\r\nexport const MENU_ENABLE_DASHBOARD = 'MENU_ENABLE_DASHBOARD';\r\nexport const LOAD_MENU = \"LOAD_MENU\";\r\nexport const MENU_LOADED = \"MENU_LOADED\";\r\nexport const MENU_ERROR = \"MENU_ERROR\";\r\nexport * from './menu/actions';\r\nexport * from './settings/actions';\r\nexport const ADMIN_CHANGE_DASHBOARD_TAB = \"ADMIN_CHANGE_DASHBOARD_TAB\";\r\nexport * from './dashboard/actions';\r\nexport const RESERVATION_CHANGE_TAB = \"RESERVATION_CHANGE_TAB\";\r\nexport * from './reservations/actions';\r\n","/* \r\nMenu Types:\r\n\"menu-default\", \"menu-sub-hidden\", \"menu-hidden\"\r\n*/\r\nexport const defaultMenuType = 'menu-default';\r\n\r\nexport const subHiddenBreakpoint = 1440;\r\nexport const menuHiddenBreakpoint = 768;\r\nexport const defaultLocale = 'en';\r\nexport const localeOptions = [\r\n { id: 'en', name: 'English', direction: 'ltr' },\r\n { id: 'es', name: 'Español', direction: 'ltr' },\r\n { id: 'pt', name: 'Português', direction: 'ltr' },\r\n { id: 'fr', name: 'Française', direction: 'ltr' }\r\n];\r\n\r\nexport const searchPath = '#';\r\n\r\nexport const themeColorStorageKey = '__theme_selected_color';\r\nexport const isMultiColorActive = false;\r\nexport const defaultColor = 'light.blueolympic';\r\nexport const isDarkSwitchActive = false;\r\nexport const defaultDirection = 'ltr';\r\nexport const themeRadiusStorageKey = '__theme_radius';\r\nexport const defaultRadius = 'rounded'; //or flat\r\nexport const isDemo = true;\r\nexport const colors = [\r\n 'bluenavy',\r\n 'blueyale',\r\n 'blueolympic',\r\n 'greenmoss',\r\n 'greenlime',\r\n 'purplemonster',\r\n 'orangecarrot',\r\n 'redruby',\r\n 'yellowgranola',\r\n 'greysteel',\r\n];\r\n\r\nexport const SEARCH_FILTERS = 'filters';\r\n\r\n","export const ThemeColors = () => {\r\n const rootStyle = getComputedStyle(document.body);\r\n return {\r\n themeColor1: rootStyle.getPropertyValue('--theme-color-1').trim(),\r\n themeColor2: rootStyle.getPropertyValue('--theme-color-2').trim(),\r\n themeColor3: rootStyle.getPropertyValue('--theme-color-3').trim(),\r\n themeColor4: rootStyle.getPropertyValue('--theme-color-4').trim(),\r\n themeColor5: rootStyle.getPropertyValue('--theme-color-5').trim(),\r\n themeColor6: rootStyle.getPropertyValue('--theme-color-6').trim(),\r\n themeColor1_10: rootStyle.getPropertyValue('--theme-color-1-10').trim(),\r\n themeColor2_10: rootStyle.getPropertyValue('--theme-color-2-10').trim(),\r\n themeColor3_10: rootStyle.getPropertyValue('--theme-color-3-10').trim(),\r\n themeColor4_10: rootStyle.getPropertyValue('--theme-color-4-10').trim(),\r\n themeColor5_10: rootStyle.getPropertyValue('--theme-color-5-10').trim(),\r\n themeColor6_10: rootStyle.getPropertyValue('--theme-color-6-10').trim(),\r\n primaryColor: rootStyle.getPropertyValue('--primary-color').trim(),\r\n secondaryColor: rootStyle.getPropertyValue('--secondary-color').trim(),\r\n foregroundColor: rootStyle.getPropertyValue('--foreground-color').trim(),\r\n separatorColor: rootStyle.getPropertyValue('--separator-color').trim(),\r\n toolTipColor: rootStyle.getPropertyValue('--theme-color-blue-navy').trim(),\r\n mutedColor: rootStyle.getPropertyValue('--muted-color').trim(),\r\n orange: rootStyle.getPropertyValue('--chart-orange-color').trim(),\r\n pink: rootStyle.getPropertyValue('--chart-pink-color').trim(),\r\n };\r\n};\r\n","export const MASTER = 'MASTER';\nexport const COMPANY = 'COMPANY';\nexport const STAFF = 'STAFF';\nexport const DRIVER = 'DRIVER';\nexport const RESELLER = 'RESELLER';\nexport const FLEET_MANAGEMENT = 'FLEET_MANAGEMENT';\n","\n\n\n\nexport const CHARGING_SESSION_STATES = ['INITIAL', 'AUTHORIZED','CHARGING', 'CHARGING_FINISHED','COMPLETED', 'ERROR'];\nexport const CHARGING_SESSION_SOURCES = ['PAYG_NON_AUTH', 'PAYG_AUTH', 'GRANTED_PAYG', 'GRANTED_FREE', 'FREE', 'RESERVATION', 'OWNER', 'RESERVATION_PACKAGE', 'PROPERTY_PACKAGE' ];\n\nexport const BUSINESS_TYPES = ['VACATION_RENTAL','MULTI_FAMILY','SINGLE_FAMILY','WORKPLACE','RENT_BY_OWNER','COMMERCIAL','FLEET_MANAGEMENT'];\n\nconst ADMIN = 'ADMIN';\nconst VIEWER = 'VIEWER';\nconst NONE = 'NONE';\nexport const AccessLevel = {\n ADMIN,\n VIEWER,\n NONE\n };\nexport const ACCESS_LEVELS = [ADMIN, VIEWER, NONE];\n\nconst DRIVER = 'DRIVER';\nconst COMPANY = 'COMPANY';\nconst PORTFOLIO = 'PORTFOLIO';\nconst MASTER = 'MASTER';\nexport const AccountType = {\n DRIVER,\n COMPANY,\n PORTFOLIO,\n MASTER\n };\n export const ACCOUNT_TYPES = [DRIVER,COMPANY,PORTFOLIO,MASTER];\n\n","\n\n//Stripe\nexport const STRIPE_PK = \"pk_test_51IHdOdIRK0JICPR4F8WDBLPilaOXikMOCXO1UKRbGhp6OeeLOIzbq7lreUiuEkf3wOYnBJOhkP9PodAxMom92FZe00En49xPr2\";\n//export const STRIPE_PK = \"pk_live_51H2bODI7Mx4gzQe3wyhQsjNuptdtOZyvfeQA1cybQkI9HyKCsA9Ms33RTou6b7DZXPOISYJoU8CTVXtQYqIj9OdG00AI3cIMaC\";\n\n//Checkpoint DVS\nexport const CHECKPOINT_DVS_URL = \"https://dvs.checkpointid.com/api\";\nexport const CHECKPOINT_PK = \"pk_897068ef-a11b-42d9-8a03-a90bb53f41bc\"; \n\n//BH Backend\nexport const BASE_URL = process.env.REACT_APP_API_BASE || \"https://api.ok2charge.com\";\nexport const BASE_WS_URL = process.env.REACT_APP_API_WS_BASE || \"wss://api.ok2charge.com\";\nexport const API_URL = BASE_URL + \"/api/v1\"; \nexport const API_URL_V2 = BASE_URL + \"/v2/cpanel\"; \nexport const API_URL_V2_OPEN = BASE_URL + \"/v2/open/cpanel\"; \n\nexport const API_WS_URL = BASE_WS_URL + \"/wsapi/v1\"; \nexport const API_MEDIA_URL = \"https://behome247-mf.s3-us-west-2.amazonaws.com\";\nexport const GOOGLE_CLIENT_ID = process.env.REACT_APP_GOOGLE_CLIENT_ID;\nexport const GOOGLE_MAPS_API_KEY = process.env.REACT_APP_GOOGLE_MAPS_API_KEY;\nexport const HELP_CENTER_URL = process.env.REACT_APP_HELP_CENTER_URL || \"https://support.ok2charge.com\";\nexport const OPEN_TICKET_URL = process.env.REACT_APP_OPEN_TICKET_URL || \"https://share.hsforms.com/1bc4xOnPQSnudkbdp81Ox9Qcpkp2\";\n\nconst DRIVER_LICENSE = 1;\nconst PASSPORT = 2;\nconst PASSPORT_CARD = 3;\nconst GREEN_CARD = 6;\nconst INTERNATIONAL = 7;\n\nexport const DocumentType = {\n DRIVER_LICENSE,\n PASSPORT,\n PASSPORT_CARD,\n GREEN_CARD,\n INTERNATIONAL\n};\n\nconst OK = 0;\nconst FAKE = 1;\nconst DATA_ERROR = 2;\nconst SERVER_ERROR = 3;\n\nexport const DocumentStatus = {\n\tOK,\n\tFAKE,\n\tDATA_ERROR,\n\tSERVER_ERROR\n};\n","import React, { useState, useEffect } from \"react\";\nimport { SEARCH_FILTERS, SESSION_TOKEN, USER_DATA, SESSION_ACCOUNT, TOURS_COMPLETED } from \"../constants/localStorageKeys\";\nimport _ from \"lodash\";\nimport { AccessLevel, AccountType } from \"../constants/api\";\n\nconst AuthContext = React.createContext();\n\nconst emptyUser = {\n firstName: \"\",\n lastName: \"\",\n emailAddress: \"\",\n photoUrl: null\n}\n\n\nconst AuthProvider = ( props ) => {\n const [state, setState] = useState({\n token: localStorage.getItem(SESSION_TOKEN),\n user: localStorage.getItem(USER_DATA) != null ? JSON.parse(localStorage.getItem(USER_DATA)) : emptyUser,\n currentAccount: localStorage.getItem(SESSION_ACCOUNT) != null ? JSON.parse(localStorage.getItem(SESSION_ACCOUNT)) : {},\n\n //will be deprecated, are now in currentAccount\n //acl: localStorage.getItem(\"acl\"),\n //account: localStorage.getItem(\"account_id\"),\n //accountType: localStorage.getItem(\"account_type\"),\n //businessType: localStorage.getItem(\"business_type\")\n\n });\n\n\n\n //save user info in local storage\n useEffect(() => {\n localStorage.setItem(USER_DATA, JSON.stringify(state.user));\n }, [state.user]);\n\n useEffect(() => {\n console.log(\"current account\", state.currentAccount);\n if (_.isEmpty(state.currentAccount)) { //for users logged in with api v1, we'll force a login\n console.log(\"will logout\");\n logout();\n } else {\n localStorage.setItem(SESSION_ACCOUNT, JSON.stringify(state.currentAccount));\n }\n }, [state.currentAccount]);\n\n\n const isAdmin = state.currentAccount?.acl === AccessLevel.ADMIN || state.currentAccount?.accountType == AccountType.MASTER;\n const isMaster = state.currentAccount?.acl === AccessLevel.ADMIN && state.currentAccount?.accountType === AccountType.MASTER;\n const isMulti = state.currentAccount?.accountType === AccountType.MASTER || state.currentAccount?.accountType === AccountType.PORTFOLIO;\n \n const acl = state.currentAccount?.acl;\n const account = state.currentAccount?.id;\n const accountType = state.currentAccount?.accountType;\n const businessType = state.currentAccount?.businessType;\n\n const authFetchPure = (input, init?) => {\n init = init || {};\n init.headers = {\n ...init.headers,\n \"X-BH-OK2-AUTH-TOKEN\": state.token,\n };\n if (init.body) {\n init.headers = {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n }\n }\n return fetch(input, init);\n }\n\n const authFetch = async (input: RequestInfo, init?: RequestInit, deleteHeader): Promise => {\n init = init || {};\n init.headers = {\n ...init.headers,\n \"X-BH-OK2-AUTH-TOKEN\": state.token,\n };\n if (init.body) {\n init.headers = {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n }\n }\n\n if (deleteHeader) {\n delete init.headers['Content-Type'];\n }\n return fetch(input, init).then((response) => {\n if (response.ok) {\n return response;\n } else {\n if (response.status == 401) {\n logout();\n window.location.reload();\n return;\n }\n\n let error = new Error('Something went wrong');\n throw { ...error, response };\n }\n }).catch((e) => {\n if (!e.response) {\n let error = new Error('Something went wrong');\n let response = { status: \"Timeout\" };\n throw { ...error, response };\n } else {\n throw e;\n }\n })\n };\n\n const residentAuthFetch = async (input: RequestInfo, init?: RequestInit): Promise => {\n init = init || {};\n init.headers = {\n ...init.headers,\n \"X-BH-IPASS-RESIDENT-AUTH-TOKEN\": state.token,\n };\n if (init.body) {\n init.headers = {\n ...init.headers,\n \"Content-Type\": \"application/json\",\n }\n }\n return fetch(input, init).then((response) => {\n if (response.ok) {\n return response;\n } else {\n if (response.status == 401) {\n logout();\n }\n let error = new Error('Something went wrong');\n throw { ...error, response };\n }\n });\n };\n\n\n const login = async (data) => {\n var user = { ...data.user }\n var currentAccount = user?.accounts[0];\n\n setState({\n token: data.token,\n currentAccount: currentAccount,\n user: user,\n\n //will be deprecated, are now in currentAccount\n acl: currentAccount.acl,\n account: currentAccount.id,\n accountType: currentAccount.accountType,\n businessType: currentAccount.businessType\n });\n\n localStorage.setItem(SESSION_TOKEN, data.token); //for auth\n localStorage.setItem(USER_DATA, JSON.stringify(data.user));\n localStorage.setItem(SESSION_ACCOUNT, JSON.stringify(currentAccount));\n\n //will be deprecated, are now in currentAccount\n //localStorage.setItem(\"account_id\", currentAccount.id); //for requests\n //localStorage.setItem(\"account_type\", currentAccount.accountType); //for keep track of account type when changing the account (PM sub users)\n //localStorage.setItem(\"business_type\", currentAccount.businessType);\n\n console.log(\"User logged in\", localStorage);\n };\n\n // when user selects the dropdown option at the top\n const setUserAccount = (account) => {\n setState({\n ...state,\n currentAccount: account,\n //will be deprecated, are now in currentAccount\n //account: account.id,\n //accountType: account.accountType,\n //businessType: account.businessType,\n //acl: account.acl,\n });\n\n localStorage.setItem(SESSION_ACCOUNT, JSON.stringify(account));\n deleteAppData();\n\n //will be deprecated, are now in currentAccount\n //localStorage.setItem(\"acl\", account.acl); //for keep track of account type when changing the account (PM sub users)\n //localStorage.setItem(\"account_id\", account.id); //for requests\n //localStorage.setItem(\"account_type\", account.accountType); //for keep track of account type when changing the account (PM sub users)\n //localStorage.setItem(\"business_type\", account.businessType);\n\n }\n\n const setUserProfile = (profile) => {\n setState({\n ...state,\n user: {\n ...state.user,\n ...profile\n }\n });\n }\n\n\n const deleteAppData = () => {\n localStorage.removeItem(SEARCH_FILTERS);\n localStorage.removeItem(\"syncPropertiesTaskId\");\n localStorage.removeItem(\"syncReservationsTaskId\");\n }\n\n const logout = () => {\n localStorage.removeItem(SESSION_ACCOUNT);\n localStorage.removeItem(SESSION_TOKEN);\n localStorage.removeItem(USER_DATA);\n localStorage.removeItem(TOURS_COMPLETED);\n\n //app data\n deleteAppData();\n\n //will be deprecated, are now in currentAccount\n localStorage.removeItem(\"acl\");\n localStorage.removeItem(\"account_id\");\n localStorage.removeItem(\"account_type\");\n localStorage.removeItem(\"business_type\");\n localStorage.removeItem(\"syncPropertiesTaskId\");\n localStorage.removeItem(\"syncReservationsTaskId\");\n\n console.log(\"User logged out\");\n };\n\n const register = (data) => {\n setState({ ...state, ...data });\n };\n\n return (\n \n \n );\n}\n\nexport { AuthProvider, AuthContext };","import { defaultDirection } from '../constants/defaultValues';\r\nimport { BASE_URL, API_MEDIA_URL } from '../constants/services'\r\nimport moment from 'moment';\r\nimport parse from \"html-react-parser\";\r\nimport _ from \"lodash\";\r\nimport { ThemeColors } from './ThemeColors';\r\nimport { COMPANY, STAFF, DRIVER, RESELLER, MASTER } from \"../security/roles\";\r\nimport { AccountType } from \"../constants/api\";\r\n\r\nexport const safeParse = (text) => {\r\n if (!text)\r\n return;\r\n return parse(text.replace(/"/g, '\"'));\r\n};\r\n\r\nexport const mapOrder = (array, order, key) => {\r\n array.sort(function (a, b) {\r\n const A = a[key];\r\n const B = b[key];\r\n if (order.indexOf(`${A}`) > order.indexOf(`${B}`)) {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n return array;\r\n};\r\n\r\nexport const getDateWithFormat = () => {\r\n const today = new Date();\r\n let dd = today.getDate();\r\n let mm = today.getMonth() + 1; // January is 0!\r\n\r\n const yyyy = today.getFullYear();\r\n if (dd < 10) {\r\n dd = `0${dd}`;\r\n }\r\n if (mm < 10) {\r\n mm = `0${mm}`;\r\n }\r\n return `${dd}.${mm}.${yyyy}`;\r\n};\r\n\r\n\r\nexport const getCurrentTime = () => {\r\n const now = new Date();\r\n return `${now.getHours()}:${now.getMinutes()}`;\r\n};\r\n\r\nexport const getDirection = () => {\r\n let direction = defaultDirection;\r\n if (localStorage.getItem('direction')) {\r\n const localValue = localStorage.getItem('direction');\r\n if (localValue === 'rtl' || localValue === 'ltr') {\r\n direction = localValue;\r\n }\r\n }\r\n return {\r\n direction,\r\n isRtl: direction === 'rtl',\r\n };\r\n};\r\n\r\nexport const getSubdomain = () => {\r\n const full = window.location.host.split(\":\")[0]; // subdomain.domain.com\r\n const parts = full.split(\".\");\r\n return parts[0];\r\n}\r\n\r\nexport const getSetup = async () => {\r\n const subdomain = getSubdomain();\r\n\r\n if (localStorage.getItem(`setup-${subdomain}`)) {\r\n const localSetup = localStorage.getItem(`setup-${subdomain}`);\r\n return localSetup;\r\n } else {\r\n try {\r\n const response = await fetch(BASE_URL + '/api/v1/setup?domain=' + subdomain);\r\n const setup = response.json();\r\n if (setup.domain) {\r\n localStorage.setItem(`setup-${subdomain}`, setup);\r\n }\r\n return setup;\r\n } catch (e) {\r\n // console.log(e)\r\n }\r\n }\r\n};\r\n\r\n\r\nexport const getUserGuideUrl = () => {\r\n const subdomain = getSubdomain();\r\n return API_MEDIA_URL + \"/manuals/\" + subdomain + \"/\" + subdomain + \".pdf\";\r\n};\r\n\r\n\r\nexport const removeImgPrefix = (string) => {\r\n return string.split(\"base64,\")[1];\r\n};\r\n\r\nexport const getBase64 = (file, onOk, onError) => {\r\n if (!file) return;\r\n var img = null;\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function () {\r\n img = reader.result;\r\n if (img.startsWith(\"data:image\")) {\r\n onOk(img);\r\n } else {\r\n onError('Invalid file format');\r\n }\r\n };\r\n reader.onerror = function (error) {\r\n onError('Error uploading file');\r\n };\r\n}\r\n\r\nexport const setDirection = (localValue) => {\r\n let direction = 'ltr';\r\n if (localValue === 'rtl' || localValue === 'ltr') {\r\n direction = localValue;\r\n }\r\n localStorage.setItem('direction', direction);\r\n};\r\n\r\nexport const toLocalDate = (utcDate) => {\r\n const localDate = new Date(utcDate);\r\n const offset = localDate.getTimezoneOffset();\r\n return moment(localDate.getTime() + (offset * 60 * 1000));\r\n}\r\n\r\nexport const timeout = async (ms) => {\r\n return new Promise(res => setTimeout(res, ms));\r\n}\r\n\r\nexport const twoDigits = (number) => {\r\n let numberStr = number.toString();\r\n if (numberStr.length < 2) {\r\n number = '0' + number;\r\n }\r\n return number;\r\n}\r\n\r\nexport const getLocalSetup = () => {\r\n const subdomain = getSubdomain();\r\n const setup = localStorage.getItem(`setup-${subdomain}`);\r\n return JSON.parse(setup);\r\n}\r\n\r\n\r\nexport const isExpired = (expirationYear, expirationMonth) => {\r\n var exp = moment(expirationYear + \"/\" + expirationMonth, \"YYYY/M\");\r\n var today = moment();\r\n return today >= exp.add(1, 'months');\r\n}\r\n\r\nexport const hasValidCreditCard = (user) => {\r\n var result = false;\r\n if (user && user.paymentMethods && user.paymentMethods.length > 0) {\r\n let i = 0;\r\n while (i < user.paymentMethods.length && !result) {\r\n let pm = user.paymentMethods[i];\r\n console.log(\"PM\", pm);\r\n if (!isExpired(pm.expirationYear, pm.expirationMonth)) {\r\n result = true;\r\n }\r\n i++;\r\n }\r\n return result;\r\n }\r\n}\r\n\r\nexport const isValidURL = (string) => {\r\n var pattern = new RegExp(\"^(https?|ftp)://[^s/$.?#].[^s]*$\", \"i\");\r\n return !!pattern.test(string);\r\n};\r\n\r\nexport const toCurrencyFormat = (value) => {\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD',\r\n minimumFractionDigits: 2\r\n })\r\n return formatter.format(value);\r\n}\r\n\r\nexport const formatNumber = (value) => {\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 0\r\n })\r\n return formatter.format(value);\r\n}\r\n\r\nexport const formatNumber2Decimals = (value) => {\r\n const formatter = new Intl.NumberFormat('en-US', {\r\n maximumFractionDigits: 2\r\n })\r\n return formatter.format(value);\r\n}\r\n\r\n// https://stackoverflow.com/a/18650828/14300761\r\nexport const formatBytes = (bytes, decimals = 2) => {\r\n if (bytes === 0) return '0 Bytes';\r\n\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];\r\n}\r\n\r\n// returns the id text label used in the IntlMessages\r\nexport const enumChargingSessionStateToLabel = (state) => {\r\n switch (state) {\r\n case 'INITIAL':\r\n return 'transaction.pages.initial-state';\r\n case 'AUTHORIZED':\r\n return 'transaction.pages.authorized-state';\r\n case 'CHARGING':\r\n return 'transaction.pages.charging-state';\r\n case 'NOT_CHARGING':\r\n return 'transaction.pages.not-charging-state';\r\n case 'CHARGING_FINISHED':\r\n return 'transaction.pages.charging-finished-state';\r\n case 'COMPLETED':\r\n return 'transaction.pages.completed-state';\r\n case 'ERROR':\r\n return 'transaction.pages.error-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumChargerStateToLabel = (state, connectivity) => {\r\n\r\n if (connectivity == \"OFFLINE\") {\r\n return state == 'OUT_OF_SERVICE' ? 'chargers.pages.out-of-service-state' : 'chargers.pages.offline-state';\r\n }\r\n\r\n switch (state) {\r\n case 'AVAILABLE':\r\n return 'chargers.pages.available-state';\r\n case 'IN_USE':\r\n return 'chargers.pages.in-use-state';\r\n case 'OUT_OF_SERVICE':\r\n return 'chargers.pages.out-of-service-state';\r\n case 'PLUGGED_IN_IDLE':\r\n return 'chargers.pages.plugged-in-idle-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumChargerModeToLabel = (mode) => {\r\n\r\n switch (mode) {\r\n case 'STANDARD':\r\n return 'charger.mode-standard';\r\n case 'PROTECTED':\r\n return 'charger.mode-protected';\r\n case 'FREE':\r\n return 'charger.mode-free';\r\n case 'PROTECTED_PAYG':\r\n return 'charger.mode-protected-payg';\r\n case 'STANDARD_PAYG':\r\n return 'charger.mode-standard-payg';\r\n default:\r\n return 'charger.no-mode';\r\n }\r\n}\r\n\r\nexport const enumPaymentStateToLabel = (state) => {\r\n switch (state) {\r\n case 'CREATED':\r\n return 'payment.pages.created-state';\r\n case 'PROCESSING':\r\n return 'payment.pages.processing-state';\r\n case 'REQUIRES_ACTION':\r\n return 'payment.pages.requires-action-state';\r\n case 'CANCELED':\r\n return 'payment.pages.canceled-state';\r\n case 'REFUNDED':\r\n return 'payment.pages.refunded-state';\r\n case 'SUCCEEDED':\r\n return 'payment.pages.succeeded-state';\r\n case 'FAILED':\r\n return 'payment.pages.failed-state';\r\n case 'REQUIRES_CAPTURE':\r\n return 'payment.pages.requires-capture-state';\r\n case 'REQUIRES_REFUND':\r\n return 'payment.pages.requires-refund-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumPaymentStateToClass = (state) => {\r\n switch (state) {\r\n case 'CREATED':\r\n return 'secondary';\r\n case 'PROCESSING':\r\n return 'secondary';\r\n case 'REQUIRES_ACTION':\r\n return 'secondary';\r\n case 'CANCELED':\r\n return 'secondary';\r\n case 'REFUNDED':\r\n return 'danger';\r\n case 'SUCCEEDED':\r\n return 'primary';\r\n case 'FAILED':\r\n return 'danger';\r\n case 'REQUIRES_CAPTURE':\r\n return 'secondary';\r\n default:\r\n return 'secondary';\r\n }\r\n}\r\n\r\nexport const enumPropertyTypeToLabel = (propertyType) => {\r\n switch (propertyType) {\r\n case 'MULTIFAMILY_COMMUNITY':\r\n return 'properties.pages.type-mf-commnuity';\r\n case 'RESORT':\r\n return 'properties.pages.type-resort';\r\n case 'HOTEL':\r\n return 'properties.pages.type-hotel';\r\n case 'COMPLEX':\r\n return 'properties.pages.type-complex';\r\n case 'CONDO':\r\n return 'properties.pages.type-condo';\r\n case 'APARTMENT':\r\n return 'properties.pages.type-apartment';\r\n case 'ROOM':\r\n return 'properties.pages.type-room';\r\n default:\r\n return 'properties.pages.type-single-home';\r\n }\r\n}\r\n\r\nexport const isCommunity = (propertyType) => {\r\n switch (propertyType) {\r\n case 'MULTIFAMILY_COMMUNITY':\r\n case 'RESORT':\r\n case 'HOTEL':\r\n case 'COMPLEX':\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport const enumPropertyStateToLabel = (state) => {\r\n switch (state) {\r\n case 'OCCUPIED':\r\n return 'properties.pages.occupied-state';\r\n case 'VACANT':\r\n return 'properties.pages.vacant-state';\r\n case 'READY':\r\n return 'properties.pages.ready-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumPropertyTaskTypeStateToLabel = (state) => {\r\n switch (state) {\r\n case 'INSTALLATION':\r\n return 'property-tasks.pages.installation-state';\r\n case 'REPAIR':\r\n return 'property-tasks.pages.repair-state';\r\n case 'MAINTENANCE':\r\n return 'property-tasks.pages.maintenance-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumPropertyTaskStateToLabel = (state) => {\r\n switch (state) {\r\n case 'NEW':\r\n return 'property-tasks.pages.new-state';\r\n case 'ASSIGNED':\r\n return 'property-tasks.pages.assigned-state';\r\n case 'STARTED':\r\n return 'property-tasks.pages.started-state';\r\n case 'FINISHED':\r\n return 'property-tasks.pages.finished-state';\r\n case 'CLOSED':\r\n return 'property-tasks.pages.closed-state';\r\n case 'REOPENED':\r\n return 'property-tasks.pages.reopened-state';\r\n case 'CANCELLED':\r\n return 'property-tasks.pages.cancelled-state';\r\n case 'ACCEPTED':\r\n return 'property-tasks.pages.accepted-state';\r\n case 'HOLD':\r\n return 'property-tasks.pages.hold-state';\r\n case 'REJECTED':\r\n return 'property-tasks.pages.rejected-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumTransactionBillingTypeToLabel = (type) => {\r\n switch (type) {\r\n case 'BY_DISTANCE':\r\n return 'transaction.pages.bill-type-distance';\r\n case 'BY_ENERGY':\r\n return 'transaction.pages.bill-type-energy';\r\n case 'BY_MONEY':\r\n return 'transaction.pages.bill-type-money';\r\n case 'BY_TIME':\r\n return 'transaction.pages.bill-type-time';\r\n case 'NONE':\r\n return 'transaction.pages.bill-type-none';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\n\r\n\r\nexport const enumChargingSessionSourceToLabel = (type) => {\r\n switch (type) {\r\n case 'PAYG_AUTH':\r\n case 'DRIVER':\r\n return 'transaction.pages.source-payg';\r\n case 'PAYG_NON_AUTH':\r\n return 'transaction.pages.source-payg-na';\r\n case 'RESERVATION':\r\n return 'transaction.pages.source-reservation';\r\n case 'FREE':\r\n return 'transaction.pages.source-free';\r\n case 'GRANTED_FREE':\r\n case 'GRANTED':\r\n return 'transaction.pages.source-granted-free';\r\n case 'GRANTED_PAYG':\r\n return 'transaction.pages.source-granted-payg';\r\n case 'RESERVATION_PACKAGE':\r\n return 'transaction.pages.source-reservation-package';\r\n case 'PROPERTY_PACKAGE':\r\n return 'transaction.pages.source-property-package';\r\n case 'OWNER':\r\n return 'transaction.pages.source-owner';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const enumChargingSessionSourceToSubLabel = (type) => {\r\n switch (type) {\r\n case 'PAYG_AUTH':\r\n return 'transaction.pages.source-payg.sub';\r\n case 'PAYG_NON_AUTH':\r\n return 'transaction.pages.source-payg-na.sub';\r\n case 'GRANTED_PAYG':\r\n return 'transaction.pages.source-granted-payg.sub';\r\n case 'RESERVATION_PACKAGE':\r\n return 'transaction.pages.source-reservation-package.sub';\r\n case 'PROPERTY_PACKAGE':\r\n return 'transaction.pages.source-property-package.sub';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nexport const enumChargingSessionSourceToDescLabel = (type) => {\r\n switch (type) {\r\n case 'PAYG_AUTH':\r\n case 'DRIVER':\r\n return 'transactions.pay-as-you-go-authenticated';\r\n case 'PAYG_NON_AUTH':\r\n return 'transactions.pay-as-you-go-non-authenticated';\r\n case 'RESERVATION':\r\n return 'transactions.reservation';\r\n case 'FREE':\r\n return 'transactions.free-mode';\r\n case 'GRANTED_FREE':\r\n case 'GRANTED':\r\n return 'transactions.granted-free';\r\n case 'GRANTED_PAYG':\r\n return 'transactions.granted-pay-as-you-go';\r\n case 'RESERVATION_PACKAGE':\r\n return 'transactions.reservation-package';\r\n case 'PROPERTY_PACKAGE':\r\n return 'transactions.property-package';\r\n case 'OWNER':\r\n return 'transactions.owner-reservation';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\n\r\n\r\nexport const chargingSessionSourceColor = (type) => {\r\n switch (type) {\r\n case 'FREE':\r\n case 'GRANTED_FREE':\r\n return 'primary';\r\n default:\r\n return 'secondary';\r\n }\r\n}\r\n\r\n\r\n\r\nexport const enumAclToLabel = (type) => {\r\n\r\n if (!type)\r\n return 'users.acl-default';\r\n \r\n switch (type) {\r\n case 'OPERATOR':\r\n case 'VIEWER':\r\n return 'users.acl-operator';\r\n case 'INSTALLER':\r\n return 'users.acl-installer';\r\n case 'ADMIN':\r\n return 'users.acl-admin';\r\n default:\r\n return 'users.acl-default';\r\n }\r\n}\r\n\r\nexport const enumAccountTypeToLabel = (type) => {\r\n switch (type) {\r\n case COMPANY:\r\n return 'users.account-type-company';\r\n case STAFF:\r\n return 'users.account-type-staff';\r\n case MASTER:\r\n return 'users.account-type-master';\r\n case RESELLER:\r\n return 'users.account-type-reseller';\r\n case DRIVER:\r\n return 'users.account-type-driver';\r\n case \"PORTFOLIO\":\r\n return 'users.account-type-portfolio';\r\n default:\r\n return type;\r\n }\r\n}\r\n\r\nexport const accountTypeToColor = (type) => {\r\n switch (type) {\r\n case MASTER:\r\n return 'danger';\r\n case COMPANY:\r\n return 'primary';\r\n case STAFF:\r\n case AccountType.PORTFOLIO:\r\n return 'warning';\r\n default:\r\n return 'secondary';\r\n }\r\n}\r\n\r\n\r\nexport const userDisplayName = (user) => {\r\n if ((user?.account?.accountType == COMPANY || user?.type == COMPANY) && (user?.account?.companyName || user?.companyName)) {\r\n return user?.account?.companyName || user?.companyName;\r\n }\r\n \r\n return user.fullName ? user.fullName : (user.firstName + \" \" + user.lastName); \r\n}\r\n\r\nexport const enumReservationEvToLabel = (reservation, type = \"default\") => {\r\n\r\n let mode = reservation.evChargingStatus;\r\n if (reservation.type == 'O') {\r\n mode = 'OWNER';\r\n }\r\n\r\n if (type == \"short\") {\r\n switch (mode) {\r\n case 'OWNER':\r\n return 'reservations.ev-paid.short.owner';\r\n case 'FREE':\r\n return 'reservations.ev-paid.short.free';\r\n case 'PAID':\r\n return 'reservations.ev-paid.short.paid';\r\n case 'RESERVED':\r\n return 'reservations.ev-paid.short.reserved';\r\n case 'ENABLED':\r\n return 'reservations.ev-paid.short.enabled';\r\n case 'INVITE_SENT':\r\n return 'reservations.ev-paid.short.sent';\r\n case 'INVITE_OPENED':\r\n return 'reservations.ev-paid.short.opened';\r\n case 'INVITE_ACCEPTED':\r\n return 'reservations.ev-paid.short.accepted';\r\n case 'NONE':\r\n default:\r\n return 'reservations.ev-paid.short.none';\r\n }\r\n }\r\n\r\n switch (mode) {\r\n case 'DRIVER':\r\n return 'reservations.ev-paid.driver';\r\n case 'FREE':\r\n return 'reservations.ev-paid.free';\r\n case 'PAID':\r\n return 'reservations.ev-paid.paid';\r\n case 'RESERVED':\r\n return 'reservations.ev-paid.reserved';\r\n case 'ENABLED':\r\n return 'reservations.ev-paid.enabled';\r\n case 'INVITE_SENT':\r\n return 'reservations.ev-paid.sent';\r\n case 'INVITE_OPENED':\r\n return 'reservations.ev-paid.opened';\r\n case 'INVITE_ACCEPTED':\r\n return 'reservations.ev-paid.accepted';\r\n case 'NONE':\r\n default:\r\n return 'reservations.ev-paid.none';\r\n }\r\n}\r\n\r\nexport const enumReservationEvToInfoLabel = (reservation) => {\r\n switch (reservation.evChargingStatus) {\r\n case 'PAID':\r\n return 'reservations.ev-paid.paid-info';\r\n case 'RESERVED':\r\n return 'reservations.ev-paid.reserved-info';\r\n case 'ENABLED':\r\n return 'reservations.ev-paid.enabled-info';\r\n case 'INVITE_SENT':\r\n return 'reservations.ev-paid.sent-info';\r\n case 'INVITE_OPENED':\r\n return 'reservations.ev-paid.opened-info';\r\n case 'INVITE_ACCEPTED':\r\n return 'reservations.ev-paid.accepted-info';\r\n case 'NONE':\r\n default:\r\n return 'reservations.ev-paid.none-info';\r\n }\r\n}\r\n\r\nexport const enumReservationEvToDotClass = (reservation) => {\r\n\r\n if (reservation.type == 'O') {\r\n return 'green-dot';\r\n }\r\n\r\n if (reservation.packagesCount > 0) {\r\n return 'green-dot';\r\n }\r\n\r\n switch (reservation.evChargingStatus) {\r\n case 'PAID':\r\n case 'ENABLED':\r\n case 'INVITE_ACCEPTED':\r\n return 'green-dot';\r\n case 'NONE':\r\n return 'red-dot';\r\n default:\r\n return 'yellow-dot';\r\n }\r\n}\r\n\r\nexport const enumPackageTypeToLabel = (type) => {\r\n switch (type) {\r\n case 'FULL_STAY':\r\n return 'packages.type.full-stay';\r\n case 'SPOT_DAY':\r\n return 'packages.type.spot-day';\r\n case 'EXTENSION_STAY':\r\n return 'packages.type.extension-stay';\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport const chargingSessionStateColor = (state) => {\r\n switch (state) {\r\n case 'COMPLETED':\r\n case 'CHARGING':\r\n return 'primary';\r\n case 'AUTHORIZED':\r\n case 'INITIAL':\r\n return 'secondary';\r\n case 'CHARGING_FINISHED':\r\n return 'danger';\r\n case 'NOT_CHARGING':\r\n case 'ERROR':\r\n return 'warning';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport const chargingSpotReservationStateColor = (state) => {\r\n switch (state) {\r\n case 'CREATED':\r\n return 'secondary';\r\n case 'CONFIRMED':\r\n return 'primary';\r\n case 'ERROR':\r\n return 'danger';\r\n case 'CANCELED':\r\n case 'NO_SHOW':\r\n return 'warning';\r\n default:\r\n return 'secondary';\r\n }\r\n}\r\n\r\nexport const chargerStateColor = (state, connectivity) => {\r\n if (connectivity == \"OFFLINE\")\r\n return 'danger';\r\n\r\n switch (state) {\r\n case 'AVAILABLE':\r\n return 'primary';\r\n case 'IN_USE':\r\n return 'secondary';\r\n case 'OUT_OF_SERVICE':\r\n return 'danger';\r\n case 'PLUGGED_IN_IDLE':\r\n return 'warning';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport const packagesStateColor = (state) => {\r\n switch (state) {\r\n case 'CONFIRMED':\r\n return 'primary';\r\n case 'CREATED':\r\n return 'secondary';\r\n case 'CANCELED':\r\n return 'danger';\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport const userReservationTypeColor = (type) => {\r\n switch (type) {\r\n case 'O':\r\n return 'warning';\r\n default:\r\n return 'primary';\r\n }\r\n}\r\n\r\n\r\n// since filters could have\r\nexport const filterIsEmpty = (filter) => {\r\n if (_.isEmpty(filter)) {\r\n return true;\r\n }\r\n let containsElements = false;\r\n const keys = Object.keys(filter);\r\n for (let i = 0; i < keys.length; i++) {\r\n const att = keys[i];\r\n const element = filter[att];\r\n if (!(typeof element === 'undefined' || element == null || element == '')) {\r\n containsElements = true;\r\n break;\r\n }\r\n }\r\n return !containsElements;\r\n\r\n}\r\n\r\nexport const getSessionMoment = (session) => {\r\n\r\n const date = session.startTime ? session.startTime : session.createdOn;\r\n return moment(date * 1000);\r\n\r\n}\r\n\r\nexport const getSessionEnergy = (session) => {\r\n return session.state == \"COMPLETED\" ? session.kwhConsumption : session.kwhProgress;\r\n}\r\n\r\nexport const getSessionDuration = (session) => {\r\n\r\n if (session.startTime && session.endTime) {\r\n return moment.duration(session.endTime - session.startTime, 'seconds').humanize({ ss: 1, s: 60, m: 60, h: 48 });\r\n }\r\n\r\n if (session.startTime) {\r\n return moment.duration(moment().diff(session.startTime * 1000)).humanize({ ss: 1, s: 60, m: 60, h: 48 });\r\n }\r\n\r\n return \"0\";\r\n\r\n}\r\n\r\nexport const enumPolicyToText = (policy) => {\r\n if (policy.discount) {\r\n return policy.discount + \"% OFF\";\r\n }\r\n\r\n if (policy.type)\r\n return policy.type;\r\n\r\n return \"FREE\";\r\n}\r\n\r\nexport const downloadFile = async (blob, name) => {\r\n const url = window.URL.createObjectURL(new Blob([blob]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', name);\r\n // 3. Append to html page\r\n document.body.appendChild(link);\r\n // 4. Force download\r\n link.click();\r\n // 5. Clean up and remove the link\r\n link.parentNode.removeChild(link);\r\n}\r\n\r\n\r\nexport const enumOemIdToText = (oem) => {\r\n switch (oem.code) {\r\n case 'GSTY':\r\n return 'Guesty JWT token';\r\n default:\r\n return 'Id in ' + oem.name;\r\n }\r\n}\r\nexport const getLabelFromMeter = (meter, withUnit = true, messages, id) => {\r\n let label;\r\n let unit = getUnitFromMeter(meter);\r\n switch (meter) {\r\n case \"energy\":\r\n label = \"charger.energy\";\r\n break;\r\n case \"temperature\":\r\n label = \"charger.temperature\";\r\n break;\r\n case \"power\":\r\n label = \"charger.power\";\r\n break;\r\n case \"voltage\":\r\n label = \"charger.voltage\";\r\n break;\r\n case \"current\":\r\n label = \"charger.current\";\r\n break;\r\n case \"powerFactor\":\r\n label = \"charger.power-factor\";\r\n break;\r\n case \"frequency\":\r\n label = \"charger.frequency\";\r\n break;\r\n }\r\n return withUnit ? messages[label] + \" (\" + unit + \")\" : messages[label];\r\n};\r\n\r\nexport const getUnitFromMeter = (meter) => {\r\n switch (meter) {\r\n case \"energy\":\r\n return \"kWh\";\r\n case \"temperature\":\r\n return \"\\u00B0F\";\r\n case \"power\":\r\n return \"kW\";\r\n case \"voltage\":\r\n return \"V\";\r\n case \"current\":\r\n return \"A\";\r\n case \"powerFactor\":\r\n return \"%\";\r\n case \"frequency\":\r\n return \"Hz\";\r\n }\r\n return \"\";\r\n};\r\n\r\n\r\nexport const getColorFromMeter = (meter) => {\r\n switch (meter) {\r\n case \"energy\":\r\n default:\r\n return ThemeColors().themeColor1;\r\n case \"temperature\":\r\n return ThemeColors().themeColor5;\r\n case \"power\":\r\n return ThemeColors().themeColor6;\r\n case \"voltage\":\r\n return ThemeColors().themeColor1;\r\n case \"current\":\r\n return ThemeColors().themeColor5;\r\n case \"powerFactor\":\r\n return ThemeColors().themeColor6;\r\n case \"frequency\":\r\n return ThemeColors().themeColor1;\r\n }\r\n};\r\n\r\nexport const getBkgColorFromMeter = (meter) => {\r\n switch (meter) {\r\n case \"energy\":\r\n default:\r\n return ThemeColors().themeColor1_10;\r\n case \"temperature\":\r\n return ThemeColors().themeColor5_10;\r\n case \"power\":\r\n return ThemeColors().themeColor6_10;\r\n case \"voltage\":\r\n return ThemeColors().themeColor1_10;\r\n case \"current\":\r\n return ThemeColors().themeColor5_10;\r\n case \"powerFactor\":\r\n return ThemeColors().themeColor6_10;\r\n case \"frequency\":\r\n return ThemeColors().themeColor1_10;\r\n }\r\n};\r\n\r\nexport const meters = [\r\n \"energy\",\r\n \"temperature\",\r\n \"power\",\r\n \"voltage\",\r\n \"current\",\r\n \"powerFactor\",\r\n \"frequency\",\r\n];\r\n\r\nexport const getDescFromMeter = (selectedMeter, messages) => {\r\n switch (selectedMeter) {\r\n case \"energy\":\r\n default:\r\n return messages[\"charger.meter.energy\"];\r\n case \"temperature\":\r\n return messages[\"charger.meter.temperature\"];\r\n case \"power\":\r\n return messages[\"charger.meter.power\"];\r\n case \"voltage\":\r\n return messages[\"charger.meter.voltage\"];\r\n case \"current\":\r\n return messages[\"charger.meter.current\"];\r\n case \"powerFactor\":\r\n return messages[\"charger.meter.power-factor\"];\r\n case \"frequency\":\r\n return messages[\"charger.meter.frequency\"];\r\n }\r\n};\r\n\r\n\r\nexport const getChartForChargingSession = (meterValues, startTime, meterType, startKwh = 0, messages, id) => {\r\n let labels = [];\r\n let data = [];\r\n let prevKwh = startKwh;\r\n\r\n if (meterValues && meterValues.length > 0) {\r\n meterValues.forEach((mv, index) => {\r\n if (mv[meterType] != null && mv[\"power\"] != null) {\r\n //labels.push(moment(mv.timestamp * 1000).format(\"h:mm a\"));\r\n //labels.push(Math.round((mv.timestamp-startTime)/60)+\" min\");\r\n labels.push(moment.duration(mv.timestamp - startTime, 'seconds').humanize({ ss: 1, s: 60, m: 60, h: 48 }));\r\n if (meterType == \"energy\") {\r\n data.push((mv[meterType] - prevKwh).toLocaleString(\"en-US\", { maximumFractionDigits: 2 }));\r\n prevKwh = mv[meterType];\r\n } else {\r\n data.push(mv[meterType]);\r\n }\r\n }\r\n });\r\n }\r\n\r\n return {\r\n labels: labels,\r\n datasets: [\r\n {\r\n label: getLabelFromMeter(meterType, true, messages, id),\r\n data: data,\r\n borderColor: getColorFromMeter(meterType),\r\n borderWidth: 2,\r\n pointBackgroundColor: ThemeColors().foregroundColor,\r\n pointBorderColor: getColorFromMeter(meterType),\r\n pointHoverBackgroundColor: getColorFromMeter(meterType),\r\n pointHoverBorderColor: ThemeColors().foregroundColor,\r\n pointRadius: 0,\r\n //pointBorderWidth: 2,\r\n pointHoverRadius: 4,\r\n fill: true,\r\n min: 0,\r\n backgroundColor: getBkgColorFromMeter(meterType),\r\n },\r\n ],\r\n };\r\n};\r\n\r\nexport const getChargerDeviceId = (qrString) => {\r\n if (!qrString) return;\r\n const words = qrString.split('/chargers/');\r\n if (words.length > 1) {\r\n return words[1];\r\n }\r\n}\r\n\r\nexport const getChargerHashId = (qrString) => {\r\n if (!qrString) return;\r\n const words = qrString.split('/sc/'); //TODO: to be defined\r\n if (words.length > 1) {\r\n return words[1];\r\n }\r\n}\r\n\r\n\r\nexport const isEvReservation = (reservation) => {\r\n\r\n if (reservation.evChargingStatus == \"PAID\" || reservation.evChargingStatus == \"ENABLED\")\r\n return true;\r\n\r\n if (reservation.type == 'O')\r\n return true;\r\n\r\n if (reservation.packagesCount > 0)\r\n return true;\r\n\r\n}\r\n\r\nexport const transfersStateColor = (state) => {\r\n switch (state) {\r\n case 'CREATED':\r\n case 'PENDING':\r\n return 'secondary';\r\n case 'FAILED':\r\n return 'danger';\r\n case 'COMPLETED':\r\n return 'primary';\r\n case 'REVERSED':\r\n case 'CANCELED':\r\n return 'warning';\r\n default:\r\n return 'secondary';\r\n }\r\n}\r\n\r\n\r\nexport const secondsToHourMin = (sec) => {\r\n let hours = Math.floor(sec / 3600);\r\n const minutes = Math.floor((sec - hours * 3600) / 60);\r\n let type = (hours < 12 || hours == 24) ? 'AM' : 'PM'\r\n hours = hours == 0 ? 12 : (hours <= 12 ? hours : hours - 12);\r\n return `${hours < 10 ? \"0\" + hours : hours}:${minutes < 10 ? \"0\" + minutes : minutes} ${type}`;\r\n} \r\n\r\n\r\nexport const printChargerVersion = (version) => {\r\n\r\n if (!version) {\r\n return \"\";\r\n }\r\n\r\n if (version.includes(\",\")) {\r\n let v = version.split(\",\")[0];\r\n if (v.includes(\"OCPP_\")) {\r\n return v.split(\"OCPP_\")[1];\r\n }\r\n if (v.includes(\"OCPP-\")) {\r\n return v.split(\"OCPP-\")[1];\r\n }\r\n }\r\n return version;\r\n}\r\n\r\nexport const enumLsgStateToLabel = (state) => {\r\n switch (state) {\r\n case 'AVAILABLE':\r\n return 'chargers.pages.available-state';\r\n case 'IN_USE':\r\n return 'chargers.pages.in-use-state';\r\n case 'OUT_OF_SERVICE':\r\n return 'chargers.pages.out-of-service-state';\r\n case 'PLUGGED_IN_IDLE':\r\n return 'chargers.pages.plugged-in-idle-state';\r\n default:\r\n return 'general.no-state-found';\r\n }\r\n}\r\n\r\nexport const loadSharingGroupStatusStr = (chargers, messages) => {\r\n const statuses = []\r\n const inUse = chargers.filter(c => c.state === \"IN_USE\")\r\n const plugged = chargers.filter(c => c.state === \"PLUGGED_IN_IDLE\")\r\n const available = chargers.filter(c => c.state === \"AVAILABLE\")\r\n const outOfService = chargers.filter(c => c.state === \"OUT_OF_SERVICE\")\r\n if (inUse.length) {\r\n statuses.push(`${inUse.length} ${messages[enumLsgStateToLabel('IN_USE')]}`)\r\n }\r\n if (plugged.length) {\r\n statuses.push(`${plugged.length} ${messages[enumLsgStateToLabel('PLUGGED_IN_IDLE')]}`)\r\n }\r\n if (available.length) {\r\n statuses.push(`${available.length} ${messages[enumLsgStateToLabel('AVAILABLE')]}`)\r\n }\r\n if (outOfService.length) {\r\n statuses.push(`${outOfService.length} ${messages[enumLsgStateToLabel('OUT_OF_SERVICE')]}`)\r\n }\r\n return statuses.join(', ')\r\n}\r\n\r\nexport const enumLoadSharingGroupSharingAlgorithmToLabel = (lsg) => {\r\n switch (lsg) {\r\n case 'EQUAL_SHARING':\r\n return 'lsg.pages.equal-sharing'\r\n case 'FIRST_IN_FIRST_CHARGE':\r\n return 'lsg.pages.first-in-first-charge'\r\n default:\r\n break;\r\n }\r\n}\r\n\r\nexport const loadSharingAlgorithm = [\r\n { label: 'Equal Sharing', value: 'EQUAL_SHARING', key: 0 },\r\n //{ label: 'First in first charge', value: 'FIRST_IN_FIRST_CHARGE', key: 1 },\r\n];\r\n","import React, { useState } from \"react\";\nimport { SEARCH_FILTERS, TOURS_COMPLETED } from \"../constants/localStorageKeys\";\n\n/**\n * App Context\n * \n * In this context we manage application information that becomes available after\n * the Authentication of the user is successful.\n */\nconst AppContext = React.createContext();\n\nconst AppDataProvider = (props) => {\n\n const [hideFooter, setHideFooter] = useState(false);\n const [doTour, setDoTour] = useState(false);\n\n //Help tours\n const saveNewTourCompleted = (tour) => {\n // if has tour parse to list and push new tour\n if (localStorage.getItem(TOURS_COMPLETED) != null) {\n let tours = JSON.parse(localStorage.getItem(TOURS_COMPLETED));\n // prevent if user clicks on help tour button to add it again\n if (tours.includes(tour)) return;\n tours.push(tour);\n localStorage.setItem(TOURS_COMPLETED, JSON.stringify(tours));\n } else {\n // if doesn't have any tour, create new array with one tour\n let tours = [tour];\n localStorage.setItem(TOURS_COMPLETED, JSON.stringify(tours));\n }\n }\n\n const getToursCompleted = () => {\n return localStorage.getItem(TOURS_COMPLETED) != null ? JSON.parse(localStorage.getItem(TOURS_COMPLETED)) : [];\n }\n\n //Filters\n const saveSearchFilter = (page, filter) => {\n if (localStorage.getItem(SEARCH_FILTERS) != null) {\n let filters = JSON.parse(localStorage.getItem(SEARCH_FILTERS));\n filters[page] = filter;\n localStorage.setItem(SEARCH_FILTERS, JSON.stringify(filters));\n } else {\n let filters = {};\n filters[page] = filter;\n localStorage.setItem(SEARCH_FILTERS, JSON.stringify(filters));\n }\n }\n\n const getSearchFilter = (page, defaultFilter = {}) => {\n let filters = localStorage.getItem(SEARCH_FILTERS);\n return filters ? (JSON.parse(filters)[page] || defaultFilter) : defaultFilter;\n }\n\n return (\n \n \n );\n}\n\nexport { AppDataProvider, AppContext }","/* eslint-disable import/no-cycle */\r\n/* eslint-disable no-param-reassign */\r\nimport { API_URL } from '../../constants/services';\r\nimport {\r\n MENU_SET_CLASSNAMES,\r\n MENU_CONTAINER_ADD_CLASSNAME,\r\n MENU_CLICK_MOBILE_MENU,\r\n MENU_CHANGE_DEFAULT_CLASSES,\r\n MENU_CHANGE_HAS_SUB_ITEM_STATUS,\r\n MENU_ENABLE_SMART_HOME,\r\n MENU_ENABLE_DASHBOARD,\r\n LOAD_MENU\r\n} from '../actions';\r\n\r\n\r\nexport const enableSmartHome = (payload) => {\r\n return {\r\n type: MENU_ENABLE_SMART_HOME,\r\n payload,\r\n };\r\n};\r\n\r\nexport const enableDashboard = (payload) => {\r\n return {\r\n type: MENU_ENABLE_DASHBOARD,\r\n payload,\r\n };\r\n};\r\n\r\n\r\nexport const changeSelectedMenuHasSubItems = (payload) => {\r\n return {\r\n type: MENU_CHANGE_HAS_SUB_ITEM_STATUS,\r\n payload,\r\n };\r\n};\r\n\r\nexport const changeDefaultClassnames = (strCurrentClasses) => {\r\n return {\r\n type: MENU_CHANGE_DEFAULT_CLASSES,\r\n payload: strCurrentClasses,\r\n };\r\n};\r\n\r\nexport const addContainerClassname = (classname, strCurrentClasses) => {\r\n const newClasses =\r\n !strCurrentClasses.indexOf(classname) > -1\r\n ? `${strCurrentClasses} ${classname}`\r\n : strCurrentClasses;\r\n return {\r\n type: MENU_CONTAINER_ADD_CLASSNAME,\r\n payload: newClasses,\r\n };\r\n};\r\n\r\nexport const clickOnMobileMenu = (strCurrentClasses) => {\r\n const currentClasses = strCurrentClasses\r\n ? strCurrentClasses\r\n .split(' ')\r\n .filter((x) => x !== '' && x !== 'sub-show-temporary')\r\n : '';\r\n let nextClasses = '';\r\n if (currentClasses.includes('main-show-temporary')) {\r\n nextClasses = currentClasses\r\n .filter((x) => x !== 'main-show-temporary')\r\n .join(' ');\r\n } else {\r\n nextClasses = `${currentClasses.join(' ')} main-show-temporary`;\r\n }\r\n return {\r\n type: MENU_CLICK_MOBILE_MENU,\r\n payload: { containerClassnames: nextClasses, menuClickCount: 0 },\r\n };\r\n};\r\n\r\nexport const setContainerClassnames = (\r\n clickIndex,\r\n strCurrentClasses,\r\n selectedMenuHasSubItems\r\n) => {\r\n const currentClasses = strCurrentClasses\r\n ? strCurrentClasses.split(' ').filter((x) => x !== '')\r\n : '';\r\n let nextClasses = '';\r\n if (!selectedMenuHasSubItems) {\r\n if (\r\n currentClasses.includes('menu-default') &&\r\n (clickIndex % 4 === 0 || clickIndex % 4 === 3)\r\n ) {\r\n clickIndex = 1;\r\n }\r\n if (currentClasses.includes('menu-sub-hidden') && clickIndex % 4 === 2) {\r\n clickIndex = 0;\r\n }\r\n if (\r\n currentClasses.includes('menu-hidden') &&\r\n (clickIndex % 4 === 2 || clickIndex % 4 === 3)\r\n ) {\r\n clickIndex = 0;\r\n }\r\n }\r\n\r\n if (clickIndex % 4 === 0) {\r\n if (\r\n currentClasses.includes('menu-default') &&\r\n currentClasses.includes('menu-sub-hidden')\r\n ) {\r\n nextClasses = 'menu-default menu-sub-hidden';\r\n } else if (currentClasses.includes('menu-default')) {\r\n nextClasses = 'menu-default';\r\n } else if (currentClasses.includes('menu-sub-hidden')) {\r\n nextClasses = 'menu-sub-hidden';\r\n } else if (currentClasses.includes('menu-hidden')) {\r\n nextClasses = 'menu-hidden';\r\n }\r\n clickIndex = 0;\r\n } else if (clickIndex % 4 === 1) {\r\n if (\r\n currentClasses.includes('menu-default') &&\r\n currentClasses.includes('menu-sub-hidden')\r\n ) {\r\n nextClasses = 'menu-default menu-sub-hidden main-hidden sub-hidden';\r\n } else if (currentClasses.includes('menu-default')) {\r\n nextClasses = 'menu-default sub-hidden';\r\n } else if (currentClasses.includes('menu-sub-hidden')) {\r\n nextClasses = 'menu-sub-hidden main-hidden sub-hidden';\r\n } else if (currentClasses.includes('menu-hidden')) {\r\n nextClasses = 'menu-hidden main-show-temporary';\r\n }\r\n } else if (clickIndex % 4 === 2) {\r\n if (\r\n currentClasses.includes('menu-default') &&\r\n currentClasses.includes('menu-sub-hidden')\r\n ) {\r\n nextClasses = 'menu-default menu-sub-hidden sub-hidden';\r\n } else if (currentClasses.includes('menu-default')) {\r\n nextClasses = 'menu-default main-hidden sub-hidden';\r\n } else if (currentClasses.includes('menu-sub-hidden')) {\r\n nextClasses = 'menu-sub-hidden sub-hidden';\r\n } else if (currentClasses.includes('menu-hidden')) {\r\n nextClasses = 'menu-hidden main-show-temporary sub-show-temporary';\r\n }\r\n } else if (clickIndex % 4 === 3) {\r\n if (\r\n currentClasses.includes('menu-default') &&\r\n currentClasses.includes('menu-sub-hidden')\r\n ) {\r\n nextClasses = 'menu-default menu-sub-hidden sub-show-temporary';\r\n } else if (currentClasses.includes('menu-default')) {\r\n nextClasses = 'menu-default sub-hidden';\r\n } else if (currentClasses.includes('menu-sub-hidden')) {\r\n nextClasses = 'menu-sub-hidden sub-show-temporary';\r\n } else if (currentClasses.includes('menu-hidden')) {\r\n nextClasses = 'menu-hidden main-show-temporary';\r\n }\r\n }\r\n if (currentClasses.includes('menu-mobile')) {\r\n nextClasses += ' menu-mobile';\r\n }\r\n return {\r\n type: MENU_SET_CLASSNAMES,\r\n payload: { containerClassnames: nextClasses, menuClickCount: clickIndex },\r\n };\r\n};\r\n\r\nexport const loadMenu = (payload) => {\r\n return {\r\n type: LOAD_MENU,\r\n };\r\n};\r\n\r\n\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import { defaultLocale, localeOptions } from '../../constants/defaultValues';\r\n\r\nimport { CHANGE_LOCALE } from '../actions';\r\n\r\nconst INIT_STATE = {\r\n locale:\r\n localStorage.getItem('currentLanguage') &&\r\n localeOptions.filter(\r\n (x) => x.id === localStorage.getItem('currentLanguage')\r\n ).length > 0\r\n ? localStorage.getItem('currentLanguage')\r\n : defaultLocale,\r\n};\r\n\r\nexport default (state = INIT_STATE, action) => {\r\n switch (action.type) {\r\n case CHANGE_LOCALE:\r\n return { ...state, locale: action.payload };\r\n\r\n default:\r\n return { ...state };\r\n }\r\n};\r\n","import {\r\n MENU_SET_CLASSNAMES,\r\n MENU_CONTAINER_ADD_CLASSNAME,\r\n MENU_CLICK_MOBILE_MENU,\r\n MENU_CHANGE_DEFAULT_CLASSES,\r\n MENU_CHANGE_HAS_SUB_ITEM_STATUS,\r\n LOAD_MENU,\r\n MENU_LOADED,\r\n MENU_ERROR\r\n} from \"../actions\";\r\n\r\nimport {\r\n defaultMenuType,\r\n subHiddenBreakpoint,\r\n menuHiddenBreakpoint,\r\n} from \"../../constants/defaultValues\";\r\n\r\nconst INIT_STATE = {\r\n loading: true,\r\n items: null,\r\n error: false,\r\n containerClassnames: defaultMenuType,\r\n subHiddenBreakpoint,\r\n menuHiddenBreakpoint,\r\n menuClickCount: 0,\r\n selectedMenuHasSubItems: defaultMenuType === \"menu-default\", // if you use menu-sub-hidden as default menu type, set value of this variable to false\r\n};\r\n\r\nexport default (state = INIT_STATE, action) => {\r\n let items = state.items;\r\n switch (action.type) {\r\n \r\n case MENU_CHANGE_HAS_SUB_ITEM_STATUS:\r\n return { ...state, selectedMenuHasSubItems: action.payload };\r\n\r\n case MENU_SET_CLASSNAMES:\r\n return {\r\n ...state,\r\n containerClassnames: action.payload.containerClassnames,\r\n menuClickCount: action.payload.menuClickCount,\r\n };\r\n \r\n {/*case MENU_ENABLE_DASHBOARD:\r\n \r\n if(items && items[0].id != 'dashboard') \r\n items = [...items];\r\n return {\r\n ...state,\r\n items\r\n };\r\n\r\n case MENU_ENABLE_SMART_HOME:\r\n \r\n if(items[1].id != 'secondmenu')\r\n items = [...items.slice(0, 1), ...items.slice(1)];\r\n return {\r\n ...state,\r\n items\r\n };\r\n */}\r\n\r\n case MENU_CLICK_MOBILE_MENU:\r\n return {\r\n ...state,\r\n containerClassnames: action.payload.containerClassnames,\r\n menuClickCount: action.payload.menuClickCount,\r\n };\r\n\r\n case MENU_CONTAINER_ADD_CLASSNAME:\r\n return { ...state, containerClassnames: action.payload };\r\n\r\n case MENU_CHANGE_DEFAULT_CLASSES:\r\n return { ...state, containerClassnames: action.payload };\r\n case LOAD_MENU:\r\n return { ...state, loading: true }\r\n case MENU_LOADED:\r\n return { ...state, loading: false, error: false, items: action.menu }\r\n // use the below to testing menu instead of calling the backend\r\n // return { ...state, loading: false, error: false, items: menuItems }\r\n case MENU_ERROR:\r\n return { ...state, loading: false, error: true }\r\n default:\r\n return { ...state };\r\n }\r\n};\r\n","import { ADMIN_CHANGE_DASHBOARD_TAB } from '../actions';\r\n\r\nconst INIT_STATE = {\r\n activeTab: \"transactions\"\r\n};\r\n\r\nexport default (state = INIT_STATE, action) => {\r\n switch (action.type) {\r\n case ADMIN_CHANGE_DASHBOARD_TAB:\r\n return { ...state, activeTab: action.payload };\r\n\r\n default:\r\n return { ...state };\r\n }\r\n};\r\n","import { RESERVATION_CHANGE_TAB } from '../actions';\r\n\r\nconst INIT_STATE = {\r\n activeTab: \"timeline\"\r\n};\r\n\r\nexport default (state = INIT_STATE, action) => {\r\n switch (action.type) {\r\n case RESERVATION_CHANGE_TAB:\r\n return { ...state, activeTab: action.payload };\r\n\r\n default:\r\n return { ...state };\r\n }\r\n};\r\n","import { combineReducers } from 'redux';\r\nimport settings from './settings/reducer';\r\nimport menu from './menu/reducer';\r\nimport dashboard from './dashboard/reducer';\r\nimport reservations from './reservations/reducer';\r\n\r\nconst reducers = combineReducers({\r\n menu,\r\n settings,\r\n dashboard,\r\n reservations\r\n});\r\n\r\nexport default reducers;\r\n","/* eslint-disable no-unused-vars */\r\nimport { put, takeLatest, all } from 'redux-saga/effects';\r\nimport { API_URL_V2 } from '../constants/services';\r\nimport { LOAD_MENU, MENU_LOADED, MENU_ERROR } from './actions';\r\n// import authSagas from './auth/saga';\r\nimport { AuthContext } from \"../context/AuthContext\";\r\nimport { SESSION_ACCOUNT, SESSION_TOKEN } from '../constants/localStorageKeys';\r\n\r\nfunction* fetchMenu() {\r\n \r\n //const accountId = localStorage.getItem(\"account_id\");\r\n const token = localStorage.getItem(SESSION_TOKEN);\r\n const uuid= JSON.parse(localStorage.getItem(SESSION_ACCOUNT)).uuid;\r\n\r\n try {\r\n const menu = yield fetch(`${API_URL_V2}/accounts/${uuid}/menu`, { headers: { \"X-BH-OK2-AUTH-TOKEN\": token } })\r\n .then(response => response.json());\r\n yield put({ type: MENU_LOADED, menu: menu });\r\n } catch (err) {\r\n yield put({ type: MENU_ERROR });\r\n }\r\n}\r\n\r\n// listen when LOAD_MENU has finished\r\nfunction* actionWatcher() {\r\n yield takeLatest(LOAD_MENU, fetchMenu)\r\n}\r\n\r\nexport default function* rootSaga(getState) {\r\n yield all([actionWatcher()]);\r\n}\r\n","import { createStore, applyMiddleware, compose } from 'redux';\r\nimport createSagaMiddleware from 'redux-saga';\r\nimport reducers from './reducers';\r\nimport sagas from './sagas';\r\n\r\nconst sagaMiddleware = createSagaMiddleware();\r\n\r\nconst middlewares = [sagaMiddleware];\r\n\r\nexport function configureStore(initialState) {\r\n const store = createStore(\r\n reducers,\r\n initialState,\r\n compose(applyMiddleware(...middlewares))\r\n );\r\n\r\n sagaMiddleware.run(sagas);\r\n\r\n if (module.hot) {\r\n module.hot.accept('./reducers', () => {\r\n const nextRootReducer = require('./reducers');\r\n store.replaceReducer(nextRootReducer);\r\n });\r\n }\r\n\r\n return store;\r\n}\r\n","import React, { Suspense } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from 'react-redux';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport { configureStore } from './redux/store';\r\nimport { AuthProvider } from './context/AuthContext'\r\nimport { AppDataProvider } from './context/AppContext';\r\n\r\nconst App = React.lazy(() => import(/* webpackChunkName: \"App\" */ './App'));\r\n\r\nReactDOM.render(\r\n \r\n \t\r\n \r\n }> \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n/*\r\n * If you want your app to work offline and load faster, you can change\r\n * unregister() to register() below. Note this comes with some pitfalls.\r\n * Learn more about service workers: https://bit.ly/CRA-PWA\r\n */\r\nserviceWorker.unregister();\r\n","/* eslint-disable global-require */\r\nimport './assets/css/vendor/bootstrap.min.css';\r\nimport './assets/css/vendor/bootstrap.rtl.only.min.css';\r\nimport 'react-circular-progressbar/dist/styles.css';\r\nimport 'react-perfect-scrollbar/dist/css/styles.css';\r\nimport 'react-big-calendar/lib/css/react-big-calendar.css';\r\nimport 'react-image-lightbox/style.css';\r\nimport 'video.js/dist/video-js.css';\r\nimport {\r\n isMultiColorActive,\r\n defaultColor,\r\n themeColorStorageKey,\r\n isDarkSwitchActive,\r\n themeRadiusStorageKey,\r\n defaultRadius\r\n} from './constants/defaultValues';\r\n\r\nimport { getSubdomain } from './helpers/Utils';\r\n\r\nconst color =\r\n (isMultiColorActive || isDarkSwitchActive) &&\r\n localStorage.getItem(themeColorStorageKey)\r\n ? localStorage.getItem(themeColorStorageKey)\r\n : defaultColor;\r\n\r\nlocalStorage.setItem(themeColorStorageKey, color);\r\n\r\nconst radius = isMultiColorActive && localStorage.getItem(themeRadiusStorageKey) \r\n ? localStorage.getItem(themeRadiusStorageKey) \r\n : defaultRadius;\r\n\r\nif (radius === 'flat') {\r\n document.body.classList.remove('rounded');\r\n} else {\r\n document.body.classList.add('rounded');\r\n} \r\nlocalStorage.setItem(themeRadiusStorageKey, radius); \r\n\r\nconst setIcons = (subdomain) => {\r\n\r\n const folder = \"/assets/img/\"+subdomain;\r\n document.getElementById(\"favicon\").href = folder + \"/favicon.ico\";\r\n const appleTouchIcon = document.createElement('link');\r\n const head = document.getElementsByTagName(\"head\")[0];\r\n\r\n appleTouchIcon.href = folder + \"/icon.png\";\r\n appleTouchIcon.rel = 'apple-touch-icon';\r\n head.appendChild(appleTouchIcon);\r\n\r\n \r\n const appleSplashScreenIPhone5 = document.createElement('link');\r\n appleSplashScreenIPhone5.href = folder +\"/iphone5_splash.png\";\r\n appleSplashScreenIPhone5.media = \"(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPhone5.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhone5);\r\n\r\n const appleSplashScreenIPhone6 = document.createElement('link');\r\n appleSplashScreenIPhone6.href = folder +\"/iphone6_splash.png\";\r\n appleSplashScreenIPhone6.media = \"(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPhone6.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhone6);\r\n\r\n const appleSplashScreenIPhonePlus = document.createElement('link');\r\n appleSplashScreenIPhonePlus.href = folder +\"/iphoneplus_splash.png\";\r\n appleSplashScreenIPhonePlus.media = \"(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)\";\r\n appleSplashScreenIPhonePlus.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhonePlus);\r\n\r\n const appleSplashScreenIPhoneX = document.createElement('link');\r\n appleSplashScreenIPhoneX.href = folder +\"/iphonex_splash.png\";\r\n appleSplashScreenIPhoneX.media = \"(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3)\";\r\n appleSplashScreenIPhoneX.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhoneX);\r\n\r\n const appleSplashScreenIPhoneXr = document.createElement('link');\r\n appleSplashScreenIPhoneXr.href = folder +\"/iphonexr_splash.png\";\r\n appleSplashScreenIPhoneXr.media = \"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPhoneXr.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhoneXr);\r\n\r\n const appleSplashScreenIPhoneXsMax = document.createElement('link');\r\n appleSplashScreenIPhoneXsMax.href = folder +\"/iphonexsmax_splash.png\";\r\n appleSplashScreenIPhoneXsMax.media = \"(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)\";\r\n appleSplashScreenIPhoneXsMax.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPhoneXsMax);\r\n\r\n const appleSplashScreenIPad = document.createElement('link');\r\n appleSplashScreenIPad.href = folder +\"/ipad_splash.png\";\r\n appleSplashScreenIPad.media = \"(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPad.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPad);\r\n\r\n const appleSplashScreenIPadPro1 = document.createElement('link');\r\n appleSplashScreenIPadPro1.href = folder +\"/ipadpro1_splash.png\";\r\n appleSplashScreenIPadPro1.media = \"(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPadPro1.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPadPro1);\r\n\r\n const appleSplashScreenIPadPro3 = document.createElement('link');\r\n appleSplashScreenIPadPro3.href = folder +\"/ipadpro3_splash.png\";\r\n appleSplashScreenIPadPro3.media = \"(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPadPro3.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPadPro3);\r\n\r\n const appleSplashScreenIPadPro2 = document.createElement('link');\r\n appleSplashScreenIPadPro2.href = folder +\"/ipadpro2_splash.png\";\r\n appleSplashScreenIPadPro2.media = \"(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)\";\r\n appleSplashScreenIPadPro2.rel = 'apple-touch-startup-image';\r\n head.appendChild(appleSplashScreenIPadPro2);\r\n \r\n \r\n}\r\n\r\nconst render = async () => {\r\n \r\n const subdomain = getSubdomain();\r\n setIcons(subdomain);\r\n\r\n import(`./assets/css/sass/themes/theme-${subdomain}.scss`).then(() => {\r\n require('./AppRenderer');\r\n })\r\n .catch(() => {\r\n import(`./assets/css/sass/themes/theme-cpanel.scss`).then(() => {\r\n require('./AppRenderer');\r\n })\r\n })\r\n};\r\n\r\nrender();\r\n","var map = {\n\t\"./theme-cpanel.scss\": [\n\t\t40,\n\t\t12\n\t],\n\t\"./theme-siemens-dashboard.scss\": [\n\t\t68,\n\t\t59\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 61;\nmodule.exports = webpackAsyncContext;"],"sourceRoot":""}