{"version":3,"file":"static/chunks/92139.ba276bc6dc23e43f.js","sources":["webpack://_N_E/./src/LegacyApp/client/modules/app/getSessionData.ts","webpack://_N_E/./src/LegacyApp/client/selectors/activePackageSelector.selector.js","webpack://_N_E/./src/modules/games/Game/methods/checkIsSingleValue.ts","webpack://_N_E/./src/modules/games/Game/methods/checkIsWinChanceDisabled.ts","webpack://_N_E/./src/modules/games/Game/methods/getSwitchedRollDirection.ts","webpack://_N_E/./src/modules/games/Game/methods/validateBetValue.ts","webpack://_N_E/./src/modules/games/Game/store/dice/dice.actions.ts","webpack://_N_E/./src/modules/games/Game/store/dice/diceInitialState.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/betValue.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/isResultVisible.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/result.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/slices/rule.slice.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/switchDirection.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/updateBetValue.thunk.ts","webpack://_N_E/./src/modules/games/Game/constants/gameFieldTypes.ts","webpack://_N_E/./src/modules/games/Game/store/gameValidation/thunks/disableGameValidationErrorThunk.ts","webpack://_N_E/./src/modules/games/Game/store/dice/thunks/updateRuleThunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/updatePayout.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/updateWinChance.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/sendAutoBetPlay.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/game/thunks/checkBetsInAnimation.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/autobetStopped.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/autobetPlay.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/gameAutobet.epic.js","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/applyAutobetStrategyThunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/handleAutobetPlayResponse.thunk.ts","webpack://_N_E/./src/modules/games/Game/store/gameAutobet/thunks/openAutobetSummary.thunk.ts","webpack://_N_E/./node_modules/reselect/es/defaultMemoize.js","webpack://_N_E/./node_modules/reselect/es/index.js"],"sourceRoot":"","sourcesContent":["import { GameType } from '@modules/games/Game/constants/availableGames';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { RootState } from '../../store/configure.store';\nimport { getTimestamp } from './timeService';\n\nexport const getSessionData = (\n\tgame: GameType,\n\tstate: RootState,\n\tnoStats?: boolean,\n) => {\n\tconst profit_chart = state.gameSession?.profitHistoryAuto[game].data.map(\n\t\t(el) => el.y,\n\t);\n\tprofit_chart.shift();\n\treturn {\n\t\tpublished_at: roundNumber(getTimestamp() / 1000, 0, 'floor'),\n\t\tgame: {\n\t\t\tname: game,\n\t\t},\n\t\tuser: {\n\t\t\tlogin: state.user.name,\n\t\t\tuuid: state.user.id,\n\t\t},\n\t\twagered: noStats ? undefined : state.gameSession?.wageredAuto[game],\n\t\tprofit: noStats ? undefined : state.gameSession?.stopProfit[game],\n\t\tprofit_chart,\n\t\tcurrency: state.gameAutobet?.currency[game] || state.user.activeCurrency,\n\t\tlost: noStats ? undefined : state.gameSession?.lostAuto[game],\n\t\twon: noStats ? undefined : state.gameSession?.wonAuto[game],\n\t};\n};\n","import { createSelector } from '@reduxjs/toolkit';\n\nexport const isPackageActive = (state, type) => {\n\tconst packageData = state.registry.packages[type] || {};\n\tconst packageDataModules = Object.keys(packageData);\n\tif (!packageDataModules.length) {\n\t\treturn false;\n\t}\n\treturn (\n\t\tpackageDataModules.filter((module) => packageData[module]).length ===\n\t\tpackageDataModules.length\n\t);\n};\n\nexport const packageStateSelector = (type) => (state) => {\n\treturn isPackageActive(state, type);\n};\n\nexport const activePackageSelector = (param) =>\n\tcreateSelector(packageStateSelector(param), (a) => a);\n","import { RollRule } from '../types/RollRule';\n\nexport const checkIsSingleValue = (rule: RollRule): boolean => {\n\tif (!rule) {\n\t\treturn true;\n\t}\n\treturn [RollRule.UNDER, RollRule.OVER, RollRule.DIRECT].indexOf(rule) > -1;\n};\n","import { RollRule } from '../types/RollRule';\nimport { GameType } from '../constants/availableGames';\nimport { checkIsSingleValue } from './checkIsSingleValue';\n\nexport const checkIsWinChanceDisabled = (rule: RollRule, game: GameType) => {\n\tif (game !== GameType.DICE) {\n\t\treturn false;\n\t}\n\treturn !checkIsSingleValue(rule) || rule === RollRule.DIRECT;\n};\n","import { RollRule } from '../types/RollRule';\n\nexport const getSwitchedRollDirection = (direction: RollRule) => {\n\tif (direction === RollRule.OVER) {\n\t\treturn RollRule.UNDER;\n\t}\n\treturn RollRule.OVER;\n};\n","import { RollRule } from '../types/RollRule';\nimport { getBetValueMaxMin } from './getBetValueMaxMin';\n\nexport const validateBetValues = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n): ReadonlyArray<number> => {\n\tconst validated = [...betValues];\n\tbetValues.forEach((betValue, index) => {\n\t\tvalidated[index] = validateBetValue(validated, rule, betValue, index);\n\t});\n\treturn validated;\n};\n\nexport const validateBetValue = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n\tvalue: number,\n\tindex: number,\n): number => {\n\tconst { min, max } = getBetValueMaxMin({ betValues, rule, index });\n\t// console.log('validateBetValue', rule, betValues, { value, index, min, max });\n\tif (!Array.isArray(betValues)) {\n\t\treturn min;\n\t}\n\tif (value > max) {\n\t\treturn max;\n\t}\n\tif (value < min) {\n\t\treturn min;\n\t}\n\treturn value;\n};\n","import { betValueSlice } from './slices/betValue.slice';\nimport { resultSlice } from './slices/result.slice';\nimport { ruleDefaultSlice, ruleSlice } from './slices/rule.slice';\nimport { isResultVisibleSlice } from './slices/isResultVisible.slice';\n\nexport const diceActions = {\n\t...betValueSlice.actions,\n\t...resultSlice.actions,\n\t...ruleDefaultSlice.actions,\n\t...ruleSlice.actions,\n\t...isResultVisibleSlice.actions,\n};\n","import { reducerInitialStateMethods } from '@common/methods/reducerInitialStateMethods';\n\nexport const diceInitialState = reducerInitialStateMethods('dice');\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { config } from '@legacyApp/client/config';\nimport { diceInitialState } from '../diceInitialState';\n\nconst defaultBetValue = config.games.dice.betValue;\n\nconst NAME = 'betValue';\n\nexport type ValueType = {\n\tsingleUnder: number; // source of truth for default rule \"under\"\n\tdouble: [number, number];\n\tquadruple: [number, number, number, number];\n};\n\nconst initialState: ValueType = diceInitialState.getInitialState(NAME) || {\n\tsingleUnder: defaultBetValue,\n\tdouble: [25, 75],\n\tquadruple: [15, 40, 60, 85],\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nconst singleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['singleUnder']>\n> = (state, action) => {\n\tstate.singleUnder = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst doubleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['double']>\n> = (state, action) => {\n\tstate.double = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst quadrupleValueUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType['quadruple']>\n> = (state, action) => {\n\tstate.quadruple = action.payload;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nconst betValueIndexUpdate: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<{\n\t\tindex: number;\n\t\tvalue: number;\n\t}>\n> = (state, action) => {\n\tstate[action.payload.index] = action.payload.value;\n\tdiceInitialState.setInitialState(NAME, state);\n\treturn state;\n};\n\nexport const betValueSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tsingleValueUpdate,\n\t\tdoubleValueUpdate,\n\t\tquadrupleValueUpdate,\n\t\tbetValueUpdate: setAction,\n\t\tbetValueIndexUpdate,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nexport type ValueType = number;\n\nconst NAME = 'isResultVisible';\n\nconst initialState = 0;\n\nconst resultShow: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state += 1);\n};\n\nconst resultHide: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state) => {\n\treturn (state -= 1);\n};\n\nexport const isResultVisibleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultShow,\n\t\tresultHide,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\n\nconst NAME = 'result';\n\nexport interface ResultType {\n\tresult: boolean | number;\n\tresultValue: boolean | number;\n}\n\nconst initialState: ResultType = {\n\tresult: false,\n\tresultValue: false,\n};\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tResultType,\n\tReduxToolkit.PayloadAction<ResultType>\n> = (state, action) => {\n\treturn action.payload;\n};\n\nexport const resultSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\tresultUpdate: setAction,\n\t},\n});\n","import ReduxToolkit, { createSlice } from '@reduxjs/toolkit';\nimport { RollRule } from '../../../types/RollRule';\nimport { diceInitialState } from '../diceInitialState';\n\nconst NAME = 'rule';\nconst NAME_DEFAULT = `${NAME}Default`;\n\nexport type ValueType = RollRule;\n\nconst initialState = diceInitialState.getInitialState(NAME) || RollRule.UNDER;\n\nconst initialDefaultState =\n\tdiceInitialState.getInitialState(NAME_DEFAULT) || RollRule.UNDER;\n\nconst setAction: ReduxToolkit.CaseReducer<\n\tValueType,\n\tReduxToolkit.PayloadAction<ValueType>\n> = (state, action) => {\n\tdiceInitialState.setInitialState(NAME, action.payload);\n\treturn action.payload;\n};\n\nexport const ruleSlice = createSlice({\n\tname: NAME,\n\tinitialState,\n\treducers: {\n\t\truleUpdate: setAction,\n\t},\n});\n\nexport const ruleDefaultSlice = createSlice({\n\tname: NAME_DEFAULT,\n\tinitialState: initialDefaultState,\n\treducers: {\n\t\tdefaultRuleUpdate: setAction,\n\t},\n});\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getSwitchedRollDirection } from '../../../methods/getSwitchedRollDirection';\nimport { updateRuleThunk } from './updateRuleThunk';\n\nexport const switchDirectionThunk = (): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst direction = getSwitchedRollDirection(getState().dice.rollDirection);\n\t\tdispatch(updateRuleThunk(direction));\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { RollRule } from '../../../types/RollRule';\nimport { checkIsSingleValue } from '../../../methods/checkIsSingleValue';\nimport { diceActions } from '../dice.actions';\nimport { checkIsDoubleValue } from '../../../methods/checkIsDoubleValue';\nimport { checkIsQuadrupleValue } from '../../../methods/checkIsQuadrupleValue';\nimport transactionService from '../../../../../transactions/transactionsService';\nimport { parseSingleBetValue } from '../../../methods/getWinChanceFromBetValues';\n\nexport const updateBetValueThunk = (\n\tbetValues: ReadonlyArray<number>,\n\trule: RollRule,\n): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (checkIsSingleValue(rule)) {\n\t\t\tconst parsedBetValue = betValues[0];\n\t\t\tconst betValueUnder = parseSingleBetValue(parsedBetValue, rule);\n\t\t\tif (state.dice.betValue.singleUnder !== betValueUnder) {\n\t\t\t\tdispatch(diceActions.singleValueUpdate(betValueUnder));\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(betValues) && betValues.length > 1) {\n\t\t\tif (checkIsDoubleValue(rule) && betValues.length === 2) {\n\t\t\t\tif (\n\t\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\t\tbetValues,\n\t\t\t\t\t\tstate.dice.betValue.double,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// @ts-expect-error invalid type def\n\t\t\t\t\tdispatch(diceActions.doubleValueUpdate(betValues));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (checkIsQuadrupleValue(rule) && betValues.length === 4) {\n\t\t\t\tif (\n\t\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\t\tbetValues,\n\t\t\t\t\t\tstate.dice.betValue.quadruple,\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\t// @ts-expect-error invalid type def\n\t\t\t\t\tdispatch(diceActions.quadrupleValueUpdate(betValues));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n};\n","export enum GameFieldType {\n\tBET_AMOUNT = 'betAmount',\n\tFORM = 'form',\n\tPAYOUT = 'payout',\n\tPROFIT = 'profit',\n\tWIN_CHANCE = 'winChance',\n}\n\nexport type GameFieldErrorType = `${GameFieldType}Error`;\n","import { AppThunk } from 'src/LegacyApp/types/store/ThunkAction';\nimport { getGameFromUrl } from 'src/LegacyApp/client/modules/app/gameService';\nimport { GameType } from 'src/modules/games/Game/constants/availableGames';\nimport { GameFieldType } from 'src/modules/games/Game/constants/gameFieldTypes';\nimport {\n\tgameUpdateAmountError,\n\tgameUpdateFormError,\n\tgameUpdatePayoutError,\n\tgameUpdateProfitError,\n\tgameUpdateWinChanceError,\n} from '../gameValidation.actions';\n\ntype DisableGameValidationErrorThunk = {\n\t(game: GameType, type?: GameFieldType): AppThunk;\n};\n\nconst typesToActions = {\n\t[GameFieldType.BET_AMOUNT]: gameUpdateAmountError,\n\t[GameFieldType.FORM]: gameUpdateFormError,\n\t[GameFieldType.PAYOUT]: gameUpdatePayoutError,\n\t[GameFieldType.PROFIT]: gameUpdateProfitError,\n\t[GameFieldType.WIN_CHANCE]: gameUpdateWinChanceError,\n};\n\nconst disableGameValidationErrorThunk: DisableGameValidationErrorThunk = (\n\tgame,\n\ttype,\n) => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (\n\t\t\t(type && !typesToActions[type]) ||\n\t\t\t(type && !state.gameValidation[`${type}Error`][GameType.DICE])\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!game) {\n\t\t\tgame = state.game?.activeGame || getGameFromUrl();\n\t\t}\n\n\t\tconst actionPayload = {\n\t\t\tvalue: true,\n\t\t\tgame,\n\t\t};\n\n\t\tif (type) {\n\t\t\tconst action = typesToActions[type];\n\n\t\t\tdispatch(action(actionPayload));\n\t\t} else {\n\t\t\tconst allActions = Object.values(typesToActions);\n\n\t\t\tallActions.forEach((action) => dispatch(action(actionPayload)));\n\t\t}\n\t};\n};\n\nexport default disableGameValidationErrorThunk;\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getPayout } from '@legacyApp/client/modules/app/gameService';\nimport disableGameValidationErrorThunk from 'src/modules/games/Game/store/gameValidation/thunks/disableGameValidationErrorThunk';\nimport { GameFieldType } from 'src/modules/games/Game/constants/gameFieldTypes';\nimport { diceActions } from '../dice.actions';\nimport {\n\tgetWinChanceFromMultipleBetValues,\n\tgetWinChangeFromSingleBetValue,\n\tparseSingleBetValue,\n} from '../../../methods/getWinChanceFromBetValues';\nimport { GameType } from '../../../constants/availableGames';\nimport { RollRule } from '../../../types/RollRule';\nimport { checkIsSingleValue } from '../../../methods/checkIsSingleValue';\nimport { checkIsDoubleValue } from '../../../methods/checkIsDoubleValue';\nimport { validateBetValues } from '../../../methods/validateBetValue';\nimport transactionService from '../../../../../transactions/transactionsService';\nimport { updatePayoutThunk } from '../../game/thunks/updatePayout.thunk';\nimport { updateWinChanceThunk } from '../../game/thunks/updateWinChance.thunk';\nimport { updateBetValueThunk } from './updateBetValue.thunk';\n\nexport const updateRuleThunk = (rule: RollRule): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tif (rule === state.dice.rollDirection) {\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch(diceActions.ruleUpdate(rule));\n\n\t\tconst isSingleValue = checkIsSingleValue(rule);\n\t\tconst isDoubleValue = checkIsDoubleValue(rule);\n\n\t\tlet winChanceValue: number;\n\n\t\tif (isSingleValue) {\n\t\t\tconst validated = validateBetValues(\n\t\t\t\t[getWinChangeFromSingleBetValue(state.dice.betValue.singleUnder, rule)],\n\t\t\t\trule,\n\t\t\t);\n\t\t\tif (\n\t\t\t\ttransactionService.isListDifferent(validated, [\n\t\t\t\t\tstate.dice.betValue.singleUnder,\n\t\t\t\t])\n\t\t\t) {\n\t\t\t\tdispatch(updateBetValueThunk(validated, rule));\n\t\t\t}\n\t\t\twinChanceValue = parseSingleBetValue(validated[0], rule);\n\t\t} else if (isDoubleValue) {\n\t\t\tconst validated = validateBetValues(state.dice.betValue.double, rule);\n\t\t\t// console.log('updateRuleThunk', validated, state.dice.betValue.double, { rule });\n\t\t\tif (\n\t\t\t\ttransactionService.isListDifferent(\n\t\t\t\t\tvalidated,\n\t\t\t\t\tstate.dice.betValue.double,\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tdispatch(updateBetValueThunk(validated, rule));\n\t\t\t}\n\t\t\twinChanceValue = getWinChanceFromMultipleBetValues(validated, rule);\n\t\t} else {\n\t\t\twinChanceValue = getWinChanceFromMultipleBetValues(\n\t\t\t\tstate.dice.betValue.quadruple,\n\t\t\t\trule,\n\t\t\t);\n\t\t}\n\n\t\tif (state.game.winChanceValue[GameType.DICE] !== winChanceValue) {\n\t\t\tdispatch(updateWinChanceThunk(winChanceValue, GameType.DICE));\n\t\t}\n\n\t\tconst payoutValue = getPayout(winChanceValue, GameType.DICE);\n\n\t\tif (state.game.winChanceValue[GameType.DICE] !== payoutValue) {\n\t\t\tdispatch(updatePayoutThunk(payoutValue, GameType.DICE));\n\t\t}\n\n\t\tdispatch(\n\t\t\tdisableGameValidationErrorThunk(GameType.DICE, GameFieldType.BET_AMOUNT),\n\t\t);\n\t};\n};\n","import { mathService } from '@legacyApp/client/modules/math/mathService';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { gameUpdatePayout } from '../game.actions';\nimport { GameType } from '../../../constants/availableGames';\n\nexport const updatePayoutThunk = (\n\tpayout: number | string,\n\tgame: GameType,\n\tisPayoutInput?: boolean,\n): AppThunk<number | string | boolean> => {\n\treturn (dispatch, getState) => {\n\t\tlet payoutValue = mathService.parseValue(payout);\n\t\tif (!isPayoutInput && !isTrueOrZero(payoutValue)) {\n\t\t\tpayoutValue = 1;\n\t\t}\n\t\t// console.log('updatePayout', {\n\t\t//   payout, roundedPayout: round(payout), payoutValue, state: getState().game.payoutValue, isPayoutInput,\n\t\t// });\n\t\tif (\n\t\t\t!mathService.isNumberDiff(getState().game.payoutValue[game], payoutValue)\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tdispatch(\n\t\t\tgameUpdatePayout({\n\t\t\t\tvalue: payoutValue,\n\t\t\t\tgame,\n\t\t\t}),\n\t\t);\n\t\treturn payoutValue;\n\t};\n};\n","import { getWinChanceDecimal } from '@legacyApp/client/modules/app/gameService';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { roundNumber } from '@common/methods/roundNumber/roundNumber';\nimport { gameUpdateWinChance } from '../game.actions';\nimport { GameType } from '../../../constants/availableGames';\n\nexport const updateWinChanceThunk = (\n\twinChance: number | string,\n\tgame: GameType,\n): AppThunk<number> => {\n\treturn (dispatch, getState) => {\n\t\tconst decimal = getWinChanceDecimal(game);\n\t\tconst winChance_ = roundNumber(winChance, decimal);\n\t\tif (\n\t\t\troundNumber(getState().game.winChanceValue[game], decimal) === winChance_\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tdispatch(\n\t\t\tgameUpdateWinChance({\n\t\t\t\tvalue: winChance_,\n\t\t\t\tgame,\n\t\t\t}),\n\t\t);\n\t\treturn winChance_;\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { fetchApi } from '@legacyApp/client/store/fetch/fetch.thunk';\nimport { apiConfig } from '@server/config/api.config';\nimport { checkIsWinChanceDisabled } from '../../../methods/checkIsWinChanceDisabled';\nimport { AutobetPlayProps } from '../gameAutobet.actions';\n\nexport const sendAutoBetPlayThunk = (\n\tpayload: AutobetPlayProps,\n): AppThunk<Promise<any>> => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\n\t\tconst gameLabel =\n\t\t\tpayload.rule && checkIsWinChanceDisabled(payload.rule, payload.game)\n\t\t\t\t? `range-${payload.game}`\n\t\t\t\t: payload.game;\n\n\t\treturn dispatch(\n\t\t\tfetchApi({\n\t\t\t\turl: {\n\t\t\t\t\tapiUrl: apiConfig.autobetUrl,\n\t\t\t\t\turi: `/v2/${gameLabel}/auto/play`,\n\t\t\t\t},\n\t\t\t\tparameters: {\n\t\t\t\t\tAuthorization: true,\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tuuid: state.gameAutobet.id[payload.game],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tmethod: 'POST',\n\t\t\t\tloaderId: 'autoBetPlay',\n\t\t\t\tdisableErrorHandler: true,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { GameType } from '../../../constants/availableGames';\n\nexport const checkBetsInAnimationThunk = (game: GameType) => {\n\treturn (dispatch, getState) => {\n\t\tconst { game: gameState } = getState();\n\t\treturn Object.keys(gameState.betsInAnimation[game]).length > 0;\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { autobetStopped } from '../gameAutobet.actions';\nimport { GameType } from '../../../constants/availableGames';\nimport { checkBetsInAnimationThunk } from '../../game/thunks/checkBetsInAnimation.thunk';\n\nexport const autobetStoppedThunk = (props: {\n\tgame: GameType;\n\tmessage: any;\n\tid?: string;\n\ttype?: string;\n}): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tif (game_config[props.game].resultAnimation) {\n\t\t\tconst animationEnabled = getState().options[OPTIONS.ANIMATION];\n\t\t\tif (animationEnabled) {\n\t\t\t\tif (!dispatch(checkBetsInAnimationThunk(props.game))) {\n\t\t\t\t\tdispatch(autobetStopped(props));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tdispatch(autobetStoppedThunk(props));\n\t\t\t\t}, 500);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tdispatch(autobetStopped(props));\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { getTimestamp } from '@legacyApp/client/modules/app/timeService';\nimport { setConfirm } from '@legacyApp/client/store/confirm/confirm.actions';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { betResponseAnimation } from '../../game/game.actions';\nimport {\n\tautobetPlay,\n\tAutobetPlayProps,\n\tautobetSetActive,\n\tautobetSetPauseData,\n\tautobetStop,\n\tautobetSummaryConnectionError,\n} from '../gameAutobet.actions';\nimport { sendAutoBetPlayThunk } from './sendAutoBetPlay.thunk';\nimport { handleAutobetPlayResponseThunk } from './handleAutobetPlayResponse.thunk';\nimport { autobetStoppedThunk } from './autobetStopped.thunk';\n\nexport const autobetPlayThunk = (payload: AutobetPlayProps): AppThunk => {\n\treturn async (dispatch, getState) => {\n\t\tif (\n\t\t\t!(\n\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\tgetState().gameAutobet.autoBetRolling[payload.game]\n\t\t\t) ||\n\t\t\t!getState().gameAutobet.id[payload.game]\n\t\t) {\n\t\t\t// autobet stopped on client\n\t\t\treturn dispatch(\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t\tmessage: payload.stopped,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (getState().gameAutobet.pause) {\n\t\t\treturn dispatch(\n\t\t\t\tautobetSetPauseData({\n\t\t\t\t\tvalue: payload,\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tconst lastBetTimestamp = getTimestamp();\n\t\t// console.timeEnd('autobetPlay-reaction');\n\t\t// console.timeEnd('autoBetPlay');\n\t\t// console.log('============');\n\t\t// console.time('autoBetPlay');\n\t\t// console.time('autobet-request');\n\t\t// console.time('autobet-request-1');\n\n\t\tif (getState().gameAutobet.manual && !payload.manualConfirmed) {\n\t\t\treturn dispatch(\n\t\t\t\tsetConfirm({\n\t\t\t\t\tcallbackAction: (dispatch) => {\n\t\t\t\t\t\tdispatch(\n\t\t\t\t\t\t\tautobetPlay({\n\t\t\t\t\t\t\t\t...payload,\n\t\t\t\t\t\t\t\tmanualConfirmed: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tcallbackCancelAction: (dispatch) => {\n\t\t\t\t\t\tdispatch([\n\t\t\t\t\t\t\tautobetSetActive({\n\t\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tautobetStop({\n\t\t\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tautobetPlay(payload),\n\t\t\t\t\t\t]);\n\t\t\t\t\t},\n\t\t\t\t\tquestion: `Play next bet - game: ${payload.game} / betAmount: ${\n\t\t\t\t\t\tgetState().game.betAmount[payload.game]\n\t\t\t\t\t} / payout: ${\n\t\t\t\t\t\tgetState().game.payoutValue[payload.game]\n\t\t\t\t\t} / winChance: ${\n\t\t\t\t\t\tgetState().game.winChanceValue[payload.game]\n\t\t\t\t\t} / profit: ${getState().game.profitValue[payload.game]}`,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst data = await dispatch(sendAutoBetPlayThunk(payload)).catch(() => {\n\t\t\treturn null;\n\t\t});\n\t\tif (data?.error) {\n\t\t\t// console.log('placeBet - error', {data});\n\t\t\treturn dispatch(\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame: payload.game,\n\t\t\t\t\tmessage: trans({ label: data.error }),\n\t\t\t\t\ttype: 'error',\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (!data?.bet) {\n\t\t\treturn dispatch(autobetSummaryConnectionError(payload));\n\t\t}\n\t\tif (\n\t\t\tgetState().app.visible &&\n\t\t\tdata.bet &&\n\t\t\tgame_config[payload.game].resultAnimation &&\n\t\t\tgetState().game.activeGame === payload.game &&\n\t\t\t!(\n\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\t!getState().options[OPTIONS.ANIMATION]\n\t\t\t)\n\t\t) {\n\t\t\t// !! This flow is used by Autobet with animation On and Autobet with animation Off\n\t\t\t//\n\t\t\t// BUGFIX: WOL-4510\n\t\t\t// Given Autobet with animation Off and unlimited bets\n\t\t\t// When user clicks STOP manually\n\t\t\t// Then 'autobetStoppedThunk' has to be called as it is not a mode with animation\n\t\t\tif (\n\t\t\t\t!(\n\t\t\t\t\tgetState().gameAutobet.active[payload.game] &&\n\t\t\t\t\tgetState().gameAutobet.autoBetRolling[payload.game]\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// Flow: Autobet with animation Off\n\t\t\t\treturn dispatch(\n\t\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\t\tgame: payload.game,\n\t\t\t\t\t\tmessage: payload.stopped,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Flow: Autobet with animation On\n\t\t\treturn dispatch(\n\t\t\t\tbetResponseAnimation({ payload, data, lastBetTimestamp }),\n\t\t\t);\n\t\t}\n\n\t\tdispatch(\n\t\t\thandleAutobetPlayResponseThunk({ payload, data, lastBetTimestamp }),\n\t\t);\n\t};\n};\n","import { combineEpics } from 'redux-observable';\nimport { delay } from 'rxjs/operators';\nimport { of } from 'rxjs';\nimport {\n\tgetPayout,\n\tgetProfit,\n\tgetWinChanceFromPayout,\n\tisEveryGame,\n\tvalidateBetAmount,\n} from '@legacyApp/client/modules/app/gameService';\nimport { mathService } from '@legacyApp/client/modules/math/mathService';\nimport {\n\tcloseModal,\n\tmodalHandlePrevious,\n\tmodalSetPreviousProps,\n} from '@modules/modals/store/modal.actions';\nimport { config } from '@legacyApp/client/config';\nimport {\n\tSET_CURRENCY,\n\tUSER_LOGGED,\n\tUSER_LOGOUT,\n} from '@legacyApp/client/store/user/user.constants';\nimport { showAlert } from '@legacyApp/client/store/alerts/alerts.actions';\nimport {\n\tgetActiveStrategy,\n\tgetStrategyLocalStorage,\n\tparseFetchedStrategy,\n\tupdateStrategyLocalStorage,\n} from '@legacyApp/client/modules/app/strategyService';\nimport { trans } from '@legacyApp/client/modules/translation/translate';\nimport { epic } from '@legacyApp/client/modules/app/epicService';\nimport { parseApiInfo } from '@legacyApp/client/modules/app/errorsService';\nimport {\n\tvalidatePayout,\n\tvalidateWinChance,\n} from '@legacyApp/client/modules/app/validateService';\nimport { APP_CLOSES } from '@legacyApp/client/store/app/app.constants';\nimport { sentryError } from '@legacyApp/client/modules/app/sentryService';\nimport { fetchApiAction } from '@legacyApp/client/store/fetch/fetch.thunk';\nimport {\n\tPackageType,\n\tREGISTRY_EPIC_REJECT,\n\tREGISTRY_GAME_PACKAGE,\n} from '@legacyApp/client/store/registry/registry.constants';\nimport { isPackageActive } from '@legacyApp/client/selectors/activePackageSelector.selector';\nimport { getLimits } from '@legacyApp/methods/currency/getLimits';\nimport { apiConfig } from '@server/config/api.config';\nimport { lsGet } from '@modules/localStorage/methods/lsGet';\nimport { isTrueOrZero } from '@common/methods/isTrueOrZero';\nimport { getSessionData } from '@legacyApp/client/modules/app/getSessionData';\nimport { game_config } from '@legacyApp/client/game_config';\nimport { OPTIONS } from '@legacyApp/client/store/options/options.constants';\nimport { setNewMyBets } from '@legacyApp/client/store/transactions/transactions.actions';\nimport { lsSet } from '@modules/localStorage/methods/lsSet';\nimport { lsClear } from '@modules/localStorage/methods/lsClear';\nimport { LocalStorageKeys } from '@modules/localStorage/types/localStorageKeys.type';\nimport { stringToJson } from '@common/methods/stringToJson';\nimport { jsonToString } from '@common/methods/jsonToString';\nimport { diceActions } from '../dice/dice.actions';\nimport { parseSingleBetValue } from '../../methods/getWinChanceFromBetValues';\nimport { getStrategyFromState } from '../../methods/getStrategyFromState';\nimport { diceInitialState } from '../dice/diceInitialState';\nimport { getGamesList } from '../../methods/getGamesList';\nimport { updatePayoutThunk } from '../game/thunks/updatePayout.thunk';\nimport { updateWinChanceThunk } from '../game/thunks/updateWinChance.thunk';\nimport { checkGameForm } from '../gameValidation/gameValidation.actions';\nimport { switchDirectionThunk } from '../dice/thunks/switchDirection.thunk';\nimport {\n\tbetThrottled,\n\tgameSetAmountDefault,\n\tgameSetWinChanceDefault,\n\tgameUpdateAmount,\n\tgameUpdateProfit,\n} from '../game/game.actions';\nimport {\n\tBET_THROTTLED,\n\tGAME_UPDATE_AMOUNT,\n\tGAME_UPDATE_PAYOUT,\n\tSET_GAME,\n} from '../game/game.constants';\nimport {\n\tAUTOBET,\n\tAUTOBET_CLEAR,\n\tAUTOBET_PAUSE,\n\tAUTOBET_PLAY,\n\tAUTOBET_RESET_TO_DEFAULT,\n\tAUTOBET_SET_CONFIG,\n\tAUTOBET_SET_CONFIG_EASY,\n\tAUTOBET_SET_DEFAULTS,\n\tAUTOBET_SET_EDIT_MODAL,\n\tAUTOBET_SET_ROLLS,\n\tAUTOBET_STOP,\n\tAUTOBET_STOPPED,\n\tAUTOBET_SUMMARY_CONNECTION_ERROR,\n\tAUTOBET_UPDATE_CONFIG_EASY,\n\tDELETE_AUTOBET_STRATEGY,\n\tEDIT_AUTOBET_STRATEGY,\n\tGET_AUTOBET_STRATEGIES,\n\tSAVE_AUTOBET_STRATEGY,\n\tSET_AUTOBET_STRATEGIES,\n} from './gameAutobet.constants';\nimport {\n\tautobetClear,\n\tautobetPlay,\n\tautobetResetToDefault,\n\tautoBetRolling,\n\tautobetSetActive,\n\tautobetSetConfig,\n\tautobetSetConfigEasy,\n\tautobetSetCurrency,\n\tautobetSetId,\n\tautobetSetMode,\n\tautobetSetPause,\n\tautobetSetPauseData,\n\tautobetSetRollsCounter,\n\tautobetStop,\n\tgetAutobetStrategies,\n\tsetActiveAutobetStrategy,\n\tsetAutobetStrategies,\n} from './gameAutobet.actions';\nimport { applyAutoBetStrategyThunk } from './thunks/applyAutobetStrategyThunk';\nimport { autobetPlayThunk } from './thunks/autobetPlay.thunk';\nimport { autobetStoppedThunk } from './thunks/autobetStopped.thunk';\nimport { openAutobetSummaryThunk } from './thunks/openAutobetSummary.thunk';\n\nconst playEpic = epic('playEpic', {\n\tactions: (ofType) => ofType(AUTOBET_PLAY),\n\tcallback: ({ action }) => {\n\t\treturn of(autobetPlayThunk(action.payload));\n\t},\n});\n\nconst betThrottledEpic = epic('betThrottledEpic', {\n\tactions: (ofType) => ofType(BET_THROTTLED),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.gameAutobet.autoBetThrottle[action.payload.game]) {\n\t\t\treturn of(autobetPlay(action.payload));\n\t\t}\n\t\tconst timeout =\n\t\t\taction.payload.lastBetTimestamp +\n\t\t\tstore$.value.gameAutobet.autoBetThrottle[action.payload.game] -\n\t\t\tnew Date().getTime();\n\t\tif (timeout <= 0) {\n\t\t\treturn of(autobetPlay(action.payload));\n\t\t}\n\t\treturn of(autobetPlay(action.payload)).pipe(delay(timeout));\n\t},\n});\n\nconst autobetEpic = epic('autobetEpic', {\n\tactions: (ofType) => ofType(AUTOBET),\n\tcallback: ({ action, store$ }) => {\n\t\tconst result = [];\n\t\tconst game = action.payload.game;\n\t\tif (action.payload.stopped) {\n\t\t\t// autobet stopped in API\n\t\t\treturn of([\n\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\tgame,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\taction.payload.stopped === true\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: action.payload.stopped,\n\t\t\t\t\tid: store$.value.gameAutobet.id[game],\n\t\t\t\t}),\n\t\t\t\tautobetSetId(game, false),\n\t\t\t]).pipe(delay(config.autobetStoppedFromApiDelay)); // delay allows betResult to resolve all statistics to save proper data in session modal\n\t\t}\n\t\tif (!action.payload.bet) {\n\t\t\t// response error\n\t\t\tresult.push(\n\t\t\t\tautoBetRolling({\n\t\t\t\t\tgame,\n\t\t\t\t\tvalue: false,\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn result;\n\t\t}\n\n\t\tif (\n\t\t\tgame === 'dice' &&\n\t\t\taction.payload.nextBet.rule &&\n\t\t\taction.payload.nextBet.rule !== store$.value.dice.rollDirection\n\t\t) {\n\t\t\t// switch direction\n\t\t\tresult.push(switchDirectionThunk());\n\t\t}\n\n\t\t// console.log('updateWinChanceAction', {\n\t\t//   new: action.payload.nextBet.win_chance,\n\t\t//   old: store$.value.game.winChanceValue[game],\n\t\t//   game,\n\t\t// });\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.win_chance,\n\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t)\n\t\t) {\n\t\t\t// switch direction\n\t\t\tif (!validateWinChance(action.payload.nextBet.win_chance, game).error) {\n\t\t\t\t// TODO: NEW GAME FLAG\n\t\t\t\tif (game === 'dice') {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\t// TODO: range_dice\n\t\t\t\t\t\tdiceActions.singleValueUpdate(\n\t\t\t\t\t\t\tparseSingleBetValue(\n\t\t\t\t\t\t\t\tparseFloat(action.payload.nextBet.win_chance),\n\t\t\t\t\t\t\t\t'under',\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\tupdateWinChanceThunk(action.payload.nextBet.win_chance, game),\n\t\t\t\t\tupdatePayoutThunk(\n\t\t\t\t\t\tgetPayout(action.payload.nextBet.win_chance, game),\n\t\t\t\t\t\tgame,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.multiplier,\n\t\t\t\tstore$.value.game.payoutValue[game],\n\t\t\t)\n\t\t) {\n\t\t\t// switch direction\n\t\t\tif (!validatePayout(action.payload.nextBet.multiplier, game).error) {\n\t\t\t\t// TODO: NEW GAME FLAG\n\t\t\t\tconst winChance = getWinChanceFromPayout(\n\t\t\t\t\taction.payload.nextBet.multiplier,\n\t\t\t\t\tgame,\n\t\t\t\t);\n\t\t\t\tif (game === 'dice') {\n\t\t\t\t\t// TODO: range_dice\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tdiceActions.singleValueUpdate(\n\t\t\t\t\t\t\tparseSingleBetValue(parseFloat(winChance), 'under'),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\tupdateWinChanceThunk(winChance, game),\n\t\t\t\t\tupdatePayoutThunk(action.payload.nextBet.multiplier, game),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tisTrueOrZero(action.payload.nextBet.counter) &&\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.counter,\n\t\t\t\tstore$.value.gameAutobet.rollsCounter[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tautobetSetRollsCounter({\n\t\t\t\t\tvalue: action.payload.nextBet.counter,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\t// console.log('gameUpdateAmount', {\n\t\t//   new: action.payload.nextBet.amount,\n\t\t//   old: store$.value.game.betAmount[game],\n\t\t//   game,\n\t\t//   bool: mathService.isNumberDiff(action.payload.nextBet.amount, store$.value.game.betAmount[game]),\n\t\t//   valid: validateBetAmount(action.payload.nextBet.amount, store$.value.balances, true, action.payload.bet.wallet, true),\n\t\t// });\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\taction.payload.nextBet.amount,\n\t\t\t\tstore$.value.game.betAmount[game],\n\t\t\t)\n\t\t) {\n\t\t\tconst maxProfit = getLimits({\n\t\t\t\tcurrency: action.payload.bet.currency,\n\t\t\t\tgame,\n\t\t\t})?.profit_maximum;\n\t\t\tconst isProfitExceeded =\n\t\t\t\tmaxProfit &&\n\t\t\t\tgetProfit(\n\t\t\t\t\tparseFloat(action.payload.nextBet.amount),\n\t\t\t\t\tgetPayout(\n\t\t\t\t\t\tparseFloat(action.payload.nextBet.win_chance) ||\n\t\t\t\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t\t\t\tgame,\n\t\t\t\t\t),\n\t\t\t\t) > maxProfit;\n\t\t\tconst validateResult = validateBetAmount({\n\t\t\t\tvalue: action.payload.nextBet.amount,\n\t\t\t\tbalances: store$.value.balance.balancesArray,\n\t\t\t\tisLogged: true,\n\t\t\t\tcurrency: action.payload.bet.currency,\n\t\t\t\tcheckBalance: true,\n\t\t\t\tgame,\n\t\t\t});\n\t\t\tif (!validateResult.error && !isProfitExceeded) {\n\t\t\t\tresult.push(\n\t\t\t\t\tgameUpdateAmount({\n\t\t\t\t\t\tgame,\n\t\t\t\t\t\tvalue: action.payload.nextBet.amount,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst data = {\n\t\t\tgame,\n\t\t\tcurrency: action.payload.currency,\n\t\t\trule: action.payload.rule,\n\t\t\tlastBetTimestamp: action.payload.lastBetTimestamp,\n\t\t};\n\n\t\t// console.log('autobet_check', {\n\t\t//   data,\n\t\t//   payload: action.payload,\n\t\t// });\n\n\t\tstore$.value.gameAutobet.autoBetThrottle[game]\n\t\t\t? result.push(betThrottled(data))\n\t\t\t: result.push(autobetPlay(data));\n\n\t\treturn of(result);\n\t},\n});\n\nconst autobetStoppedEpic = epic('autobetStoppedEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOPPED),\n\tcallback: ({ action, store$ }) => {\n\t\tconst myBets = lsGet(LocalStorageKeys.NEW_MY_BETS);\n\t\tconst result = [\n\t\t\tautobetClear({\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t];\n\t\tif (myBets?.length > 0) {\n\t\t\tresult.push(setNewMyBets(lsGet(LocalStorageKeys.NEW_MY_BETS)));\n\t\t\tlsClear(LocalStorageKeys.NEW_MY_BETS);\n\t\t}\n\t\tif (store$.value.options[OPTIONS.AUTOBET_SUMMARY]) {\n\t\t\tresult.push(\n\t\t\t\topenAutobetSummaryThunk({\n\t\t\t\t\tdata: {\n\t\t\t\t\t\t...getSessionData(action.payload.game, store$.value),\n\t\t\t\t\t\tstrategy: getStrategyFromState(\n\t\t\t\t\t\t\tstore$.value,\n\t\t\t\t\t\t\taction.payload.game,\n\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t),\n\t\t\t\t\t\tstop_reason: action.payload.message,\n\t\t\t\t\t},\n\t\t\t\t\tid:\n\t\t\t\t\t\taction.payload.id ||\n\t\t\t\t\t\tstore$.value.gameAutobet.id[action.payload.game],\n\t\t\t\t\tgame: action.payload.game,\n\t\t\t\t\ttype: action.payload.type,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst autobetClearEpic = epic('autobetClearEpic', {\n\tactions: (ofType) => ofType(AUTOBET_CLEAR),\n\tcallback: ({ action }) => {\n\t\treturn of([\n\t\t\tautobetSetActive({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t\tautobetSetRollsCounter({\n\t\t\t\tvalue: 0,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t\tautobetStop({\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t]);\n\t},\n});\n\nconst resetDefaultsEpic = epic('resetDefaultsEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOPPED),\n\tcallback: ({ action }) => {\n\t\treturn of(autobetResetToDefault(action.payload.game));\n\t},\n});\n\nconst getStrategiesEpic = epic('getStrategiesEpic', {\n\tactions: (ofType) => ofType(GET_AUTOBET_STRATEGIES),\n\tcallback: () => {\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategies',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t},\n\t\t\t\t\tloaderId: 'getAutobetStrategies',\n\t\t\t\t\tdisableErrorHandler: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (!data?.strategies) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tdata.strategies.map((el) => {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t...parseFetchedStrategy(stringToJson(el.body, {})),\n\t\t\t\t\t\t\t\t\tname: el.name,\n\t\t\t\t\t\t\t\t\tid: el.uuid,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst saveStrategyEpic = epic('saveStrategyEpic', {\n\tactions: (ofType) => ofType(SAVE_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!action.payload.name) {\n\t\t\treturn of(showAlert('error', 'Please, type strategy name'));\n\t\t}\n\t\tconst name = action.payload.name;\n\t\tconst body = action.payload;\n\t\tdelete body.name;\n\t\tconst duplicate = getActiveStrategy({\n\t\t\tstate: store$.value,\n\t\t\tstrategy: body,\n\t\t});\n\t\t// console.log({duplicate, name, body});\n\t\tif (duplicate) {\n\t\t\treturn of(\n\t\t\t\tshowAlert(\n\t\t\t\t\t'error',\n\t\t\t\t\ttrans({\n\t\t\t\t\t\tlabel: 'You have already saved this strategy as {{strategyName}}',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tstrategyName: duplicate.name,\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\tcloseModal(),\n\t\t\t\tautobetSetMode('strategies'),\n\t\t\t);\n\t\t}\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategy',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tbody,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tloaderId: 'saveAutobetStrategy',\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\t// data = {\n\t\t\t\t\t//   strategy: {\n\t\t\t\t\t//     ...action.payload,\n\t\t\t\t\t//     id: `32ok5n${new Date().getTime()}23o5n2o`,\n\t\t\t\t\t//   }\n\t\t\t\t\t// };\n\t\t\t\t\tif (!data || !data.strategy) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\tconst result = [\n\t\t\t\t\t\tsetAutobetStrategies([\n\t\t\t\t\t\t\t...store$.value.gameAutobet.strategies,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...parseFetchedStrategy(stringToJson(data.strategy.body, {})),\n\t\t\t\t\t\t\t\tname: data.strategy.name,\n\t\t\t\t\t\t\t\tid: data.strategy.uuid,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tcloseModal(),\n\t\t\t\t\t\tautobetSetMode('strategies'),\n\t\t\t\t\t];\n\t\t\t\t\tif (action.setActive) {\n\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\t\t\t\tvalue: data.strategy.uuid,\n\t\t\t\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst editStrategyEpic = epic('editStrategyEpic', {\n\tactions: (ofType) => ofType(EDIT_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.user.isLogged || !action.payload.name) {\n\t\t\treturn of();\n\t\t}\n\t\tconst { name, id, ...body } = action.payload;\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: '/user/strategy',\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tbody: jsonToString(body),\n\t\t\t\t\t\t\tuuid: id,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'PATCH',\n\t\t\t\t\tloaderId: 'editAutobetStrategy',\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (!data || !data.strategy) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\tconst result = [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tstore$.value.gameAutobet.strategies.map((el) => {\n\t\t\t\t\t\t\t\treturn el.id === data.strategy.uuid\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t...parseFetchedStrategy(\n\t\t\t\t\t\t\t\t\t\t\t\tstringToJson(data.strategy.body, {}),\n\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\tname: data.strategy.name,\n\t\t\t\t\t\t\t\t\t\t\tid: data.strategy.uuid,\n\t\t\t\t\t\t\t\t\t  }\n\t\t\t\t\t\t\t\t\t: el;\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcloseModal(),\n\t\t\t\t\t\tautobetSetMode('strategies'),\n\t\t\t\t\t];\n\t\t\t\t\tif (action.setActive) {\n\t\t\t\t\t\tresult.push(\n\t\t\t\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\t\t\t\tvalue: data.strategy.uuid,\n\t\t\t\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\treturn result;\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst deleteStrategyEpic = epic('deleteStrategyEpic', {\n\tactions: (ofType) => ofType(DELETE_AUTOBET_STRATEGY),\n\tcallback: ({ action, store$ }) => {\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: `/user/strategy/${action.payload}`,\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\tloaderId: `deleteAutobetStrategy_${action.payload}`,\n\t\t\t\t\tlockByModal: true,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\treturn [\n\t\t\t\t\t\tsetAutobetStrategies(\n\t\t\t\t\t\t\tstore$.value.gameAutobet.strategies\n\t\t\t\t\t\t\t\t.filter((el) => el.id !== action.payload)\n\t\t\t\t\t\t\t\t.map((el) => parseFetchedStrategy(el)),\n\t\t\t\t\t\t),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst checkIsStrategyToSaveEpic = epic('checkIsStrategyToSaveEpic', {\n\tactions: (ofType) =>\n\t\tofType(\n\t\t\tGAME_UPDATE_AMOUNT,\n\t\t\tSET_CURRENCY,\n\t\t\tGAME_UPDATE_PAYOUT,\n\t\t\tAUTOBET_SET_CONFIG,\n\t\t\tAUTOBET_SET_CONFIG_EASY,\n\t\t\tSET_AUTOBET_STRATEGIES,\n\t\t\tdiceActions.ruleUpdate().type,\n\t\t),\n\tcallback: ({ action, store$ }) => {\n\t\tif (\n\t\t\taction.type === AUTOBET_SET_CONFIG &&\n\t\t\t(action.betType === 'all' || action.dataType === 'all')\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tif (\n\t\t\tstore$.value.gameAutobet.autoBetRolling[store$.value.game.activeGame] ||\n\t\t\tstore$.value.gameAutobet.checkStrategyDisabled\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst currentStrategy = getActiveStrategy({\n\t\t\tstate: store$.value,\n\t\t});\n\t\t// console.log({\n\t\t//   type: action.type,\n\t\t//   currentStrategy,\n\t\t//   activeStrategy: store$.value.gameAutobet.activeStrategy\n\t\t// });\n\t\tif (\n\t\t\tcurrentStrategy &&\n\t\t\tcurrentStrategy.id !==\n\t\t\t\tstore$.value.gameAutobet.activeStrategy[store$.value.game.activeGame]\n\t\t) {\n\t\t\treturn of(\n\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\tvalue: currentStrategy.id,\n\t\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn of(\n\t\t\tsetActiveAutobetStrategy({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst betConnectionErrorEpic = epic('betConnectionErrorEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SUMMARY_CONNECTION_ERROR),\n\tcallback: ({ action, store$ }) => {\n\t\tif (!store$.value.gameAutobet.active[action.bet.game]) {\n\t\t\treturn of();\n\t\t}\n\t\tconst type = action.data && action.data.message ? 'info' : 'error';\n\t\tif (\n\t\t\t(store$.value.gameAutobet.active[action.bet.game] !== 'auto' &&\n\t\t\t\taction.bet.game) ||\n\t\t\t!store$.value.gameAutobet.id[action.bet.game]\n\t\t) {\n\t\t\tconst parsed = parseApiInfo(action.data);\n\t\t\tconst message =\n\t\t\t\taction.data?.text || !parsed\n\t\t\t\t\t? trans({\n\t\t\t\t\t\t\tlabel: 'Connection error, placing {{gameName}} bet failed',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tgameName: action.bet.game,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t  })\n\t\t\t\t\t: parsed;\n\t\t\tconst actions = [\n\t\t\t\tautobetClear({\n\t\t\t\t\tgame: action.bet.game,\n\t\t\t\t}),\n\t\t\t];\n\t\t\tif (message) {\n\t\t\t\tactions.push(showAlert(type, message));\n\t\t\t} else {\n\t\t\t\tsentryError(\n\t\t\t\t\tnew Error('AUTOBET_SUMMARY_CONNECTION_ERROR'),\n\t\t\t\t\t{ action },\n\t\t\t\t\tstore$.value,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\tstore$.value.gameAutobet.active[action.bet.game] &&\n\t\t\t\t!store$.value.modal?.id\n\t\t\t) {\n\t\t\t\tactions.push(\n\t\t\t\t\tautobetStoppedThunk({\n\t\t\t\t\t\tgame: action?.bet?.game || store$.value.game?.activeGame,\n\t\t\t\t\t\tmessage: trans({\n\t\t\t\t\t\t\tlabel: 'Connection error - unknown session',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ttype: 'error',\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn of(actions);\n\t\t}\n\t\t// sentryError(jsonToString(action.data.message) || 'Connection error, autobet session stopped', {\n\t\t//   action,\n\t\t//   message: action.data.message,\n\t\t//   sessions: store$.value.gameAutobet.id,\n\t\t//   strategy: getStrategyFromState(store$.value, action.bet.game, true),\n\t\t// });\n\t\treturn of(\n\t\t\topenAutobetSummaryThunk({\n\t\t\t\tdata: {\n\t\t\t\t\t...action.bet,\n\t\t\t\t\t...(action.bet.lastBetTimestamp\n\t\t\t\t\t\t? getSessionData(action.bet.game, store$.value)\n\t\t\t\t\t\t: {}),\n\t\t\t\t\tstop_reason: parseApiInfo(\n\t\t\t\t\t\taction.data?.message || 'Connection error, autobet session stopped',\n\t\t\t\t\t),\n\t\t\t\t\tstrategy: getStrategyFromState(store$.value, action.bet.game, true),\n\t\t\t\t},\n\t\t\t\tgame: action.bet.game,\n\t\t\t\tid: action.bet.lastBetTimestamp\n\t\t\t\t\t? store$.value.gameAutobet.id[action.bet.game]\n\t\t\t\t\t: undefined,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst pauseEpic = epic('pauseEpic', {\n\tactions: (ofType) => ofType(AUTOBET_PAUSE),\n\tcallback: ({ action, store$ }) => {\n\t\tif (\n\t\t\tisEveryGame(store$.value.gameAutobet.autoBetRolling, (value) => !value)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tif (\n\t\t\tisEveryGame(\n\t\t\t\tstore$.value.gameAutobet.active,\n\t\t\t\t(value) => !value || value === 'flash',\n\t\t\t)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst result = [];\n\t\tif (action.payload === !store$.value.gameAutobet.pause) {\n\t\t\tconst message = action.payload ? 'paused' : 'restarted';\n\t\t\tresult.push(\n\t\t\t\tautobetSetPause(action.payload),\n\t\t\t\tshowAlert('info', `Autobet ${message}`),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\t!action.payload &&\n\t\t\t!isEveryGame(store$.value.gameAutobet.pauseData, (value) => !value)\n\t\t) {\n\t\t\tObject.keys(store$.value.gameAutobet.pauseData).map((game) => {\n\t\t\t\tconst data = store$.value.gameAutobet.pauseData[game];\n\t\t\t\tif (data) {\n\t\t\t\t\tresult.push(autobetPlay(data));\n\t\t\t\t}\n\t\t\t});\n\t\t\tresult.push(autobetSetPauseData(false));\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst updateConfigEasyEpic = epic('updateConfigEasyEpic', {\n\tactions: (ofType) => ofType(AUTOBET_UPDATE_CONFIG_EASY),\n\tcallback: ({ action, store$ }) => {\n\t\tconst newConfig = [\n\t\t\t...store$.value.gameAutobet.configEasy[store$.value.game.activeGame],\n\t\t];\n\t\tnewConfig[action.payload.index] = action.payload.data;\n\t\treturn of(\n\t\t\tautobetSetConfigEasy({\n\t\t\t\tvalue: newConfig,\n\t\t\t\tgame: store$.value.game.activeGame,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst stopEpic = epic('stopEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOP),\n\tcallback: ({ store$, action }) => {\n\t\tif (\n\t\t\t!store$.value.gameAutobet.id[action.payload.game] &&\n\t\t\t!action.payload.id\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\treturn of(\n\t\t\tfetchApiAction(\n\t\t\t\t{\n\t\t\t\t\turl: {\n\t\t\t\t\t\tapiUrl: apiConfig.autobetUrl,\n\t\t\t\t\t\turi: `/v2/${action.payload.game}/auto/stop`,\n\t\t\t\t\t},\n\t\t\t\t\tparameters: {\n\t\t\t\t\t\tAuthorization: true,\n\t\t\t\t\t\tbody: {\n\t\t\t\t\t\t\tuuid:\n\t\t\t\t\t\t\t\taction.payload.id ||\n\t\t\t\t\t\t\t\tstore$.value.gameAutobet.id[action.payload.game],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t\tloaderId: 'autoBetStop',\n\t\t\t\t\tdisableErrorHandler: true,\n\t\t\t\t},\n\t\t\t\t(data) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tdata.status &&\n\t\t\t\t\t\tdata.status >= 400 &&\n\t\t\t\t\t\tdata.status < 500 &&\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t403, // Game in progress\n\t\t\t\t\t\t\t429, // Rate exceeded\n\t\t\t\t\t\t].indexOf(data.status) === -1\n\t\t\t\t\t) {\n\t\t\t\t\t\tsentryError(\n\t\t\t\t\t\t\tnew Error(`${data.status} - Unnecessary AUTOBET_STOP`),\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\t\tsessions: store$.value.gameAutobet.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tstore$.value,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst actions = [];\n\t\t\t\t\tif (data && data.status < 400) {\n\t\t\t\t\t\tactions.push(autobetSetId(action.payload.game, false));\n\t\t\t\t\t}\n\t\t\t\t\treturn [\n\t\t\t\t\t\t...actions,\n\t\t\t\t\t\t...(action.payload.actions && action.payload.actions.length\n\t\t\t\t\t\t\t? action.payload.actions\n\t\t\t\t\t\t\t: []),\n\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t},\n});\n\nconst stopRollingEpic = epic('stopRollingEpic', {\n\tactions: (ofType) => ofType(AUTOBET_STOP),\n\tcallback: ({ action }) => {\n\t\treturn of(\n\t\t\tautoBetRolling({\n\t\t\t\tvalue: false,\n\t\t\t\tgame: action.payload.game,\n\t\t\t}),\n\t\t);\n\t},\n});\n\nconst resetToDefaultEpic = epic('resetToDefaultEpic', {\n\tactions: (ofType) => ofType(AUTOBET_RESET_TO_DEFAULT),\n\tcallback: ({ action, store$ }) => {\n\t\tconst game = action.payload;\n\t\tconst payout =\n\t\t\tgame === 'limbo'\n\t\t\t\t? store$.value.limbo.defaultPayout\n\t\t\t\t: getPayout(store$.value.game.defaultWinChanceValue[game], game);\n\t\tconst result = [\n\t\t\tgameUpdateAmount({\n\t\t\t\tvalue: store$.value.game.defaultBetAmount[game],\n\t\t\t\tgame,\n\t\t\t}),\n\t\t\tupdateWinChanceThunk(store$.value.game.defaultWinChanceValue[game], game),\n\t\t\tupdatePayoutThunk(payout, game),\n\t\t\tgameUpdateProfit({\n\t\t\t\tvalue: getProfit(\n\t\t\t\t\tstore$.value.game.defaultBetAmount[game],\n\t\t\t\t\tstore$.value.game.payoutValue[game],\n\t\t\t\t),\n\t\t\t\tgame,\n\t\t\t}),\n\t\t];\n\t\t// TODO: NEW GAME FLAG\n\t\tif (game === 'dice') {\n\t\t\tconst betValue = lsGet(LocalStorageKeys.DICE_BET_VALUE_DEFAULT);\n\t\t\tlsClear(LocalStorageKeys.DICE_BET_VALUE_DEFAULT);\n\t\t\tif (betValue?.singleUnder) {\n\t\t\t\tresult.push(\n\t\t\t\t\tdiceActions.singleValueUpdate(betValue.singleUnder),\n\t\t\t\t\tdiceActions.doubleValueUpdate(betValue.double),\n\t\t\t\t\tdiceActions.quadrupleValueUpdate(betValue.quadruple),\n\t\t\t\t);\n\t\t\t}\n\t\t\tresult.push(\n\t\t\t\tdiceActions.ruleUpdate(store$.value.dice.rollDefaultDirection),\n\t\t\t);\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst setDefaultsEpic = epic('setDefaultsEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SET_DEFAULTS),\n\tcallback: ({ action, store$ }) => {\n\t\tconst game = action.payload;\n\t\tconst result = [];\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\tstore$.value.game.defaultBetAmount[game],\n\t\t\t\tstore$.value.game.betAmount[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tgameSetAmountDefault({\n\t\t\t\t\tvalue: store$.value.game.betAmount[game].toString(),\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tmathService.isNumberDiff(\n\t\t\t\tstore$.value.game.defaultWinChanceValue[game],\n\t\t\t\tstore$.value.game.winChanceValue[game],\n\t\t\t)\n\t\t) {\n\t\t\tresult.push(\n\t\t\t\tgameSetWinChanceDefault({\n\t\t\t\t\tvalue: store$.value.game.winChanceValue[game].toString(),\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\tif (\n\t\t\tstore$.value.gameAutobet.currency[game] !==\n\t\t\tstore$.value.user.activeCurrency\n\t\t) {\n\t\t\tresult.push(autobetSetCurrency(game, store$.value.user.activeCurrency));\n\t\t}\n\t\treturn of(result);\n\t},\n});\n\nconst editStrategyModalEpic = epic('editStrategyModalEpic', {\n\tactions: (ofType) => ofType(AUTOBET_SET_EDIT_MODAL),\n\tcallback: ({ action, store$ }) => {\n\t\treturn of(\n\t\t\tmodalSetPreviousProps({\n\t\t\t\t...store$.value.modal?.previous?.props,\n\t\t\t\tstrategy: {\n\t\t\t\t\t...store$.value.modal.previous?.props?.strategy,\n\t\t\t\t\t[action.payload.key]: action.payload.value,\n\t\t\t\t},\n\t\t\t}),\n\t\t\tmodalHandlePrevious(),\n\t\t);\n\t},\n});\n\nconst closesEpic = epic('closesEpic', {\n\tactions: (ofType) => ofType(APP_CLOSES, REGISTRY_EPIC_REJECT),\n\tcallback: ({ action, store$ }) => {\n\t\t// console.log('closesEpic', action);\n\t\tif (action.payload && action.payload !== 'gameAutobet') {\n\t\t\treturn of();\n\t\t}\n\t\tif (!store$.value.user.isLogged) {\n\t\t\treturn of();\n\t\t}\n\t\tlsSet(LocalStorageKeys.AUTO_SESSIONS, store$.value.gameAutobet.id);\n\t\treturn of();\n\t},\n});\n\nconst localStrategyEpic = epic('localStrategyEpic', {\n\tactions: (ofType) =>\n\t\tofType(\n\t\t\tSET_CURRENCY,\n\t\t\tGAME_UPDATE_AMOUNT,\n\t\t\tGAME_UPDATE_PAYOUT,\n\t\t\tAUTOBET_SET_CONFIG,\n\t\t\tAUTOBET_SET_CONFIG_EASY,\n\t\t\tAUTOBET_SET_ROLLS,\n\t\t),\n\tcallback: ({ store$ }) => {\n\t\tif (!store$.value.user.isLogged) {\n\t\t\treturn of();\n\t\t}\n\t\tupdateStrategyLocalStorage(store$.value);\n\t\treturn of();\n\t},\n});\n\nconst initStrategyEpic = epic('initStrategyEpic', {\n\tactions: (ofType) => ofType(REGISTRY_GAME_PACKAGE, USER_LOGGED),\n\tcallback: ({ store$ }) => {\n\t\tif (\n\t\t\t!store$.value.user.isLogged ||\n\t\t\t!isPackageActive(store$.value, PackageType.GAME)\n\t\t) {\n\t\t\treturn of();\n\t\t}\n\t\tconst result = [getAutobetStrategies()];\n\t\tgetGamesList().forEach((game) => {\n\t\t\tconst strategy = getStrategyLocalStorage(game);\n\t\t\tif (strategy && !game_config[game].noAutobet) {\n\t\t\t\tif (strategy.configExpert) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tautobetSetConfig({\n\t\t\t\t\t\t\tvalue: [...(strategy.configExpert || [])],\n\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (strategy.configEasy) {\n\t\t\t\t\tresult.push(\n\t\t\t\t\t\tautobetSetConfigEasy({\n\t\t\t\t\t\t\tvalue: [...(strategy.configEasy || [])],\n\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdelete strategy.configExpert;\n\t\t\t\tdelete strategy.configEasy;\n\t\t\t\tdelete strategy.config;\n\t\t\t\tresult.push(\n\t\t\t\t\tapplyAutoBetStrategyThunk({\n\t\t\t\t\t\t...strategy,\n\t\t\t\t\t\tgame,\n\t\t\t\t\t\tnoConfig: true,\n\t\t\t\t\t\tnoGameRelated: true,\n\t\t\t\t\t}),\n\t\t\t\t\tcheckGameForm(game, true),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\tObject.keys(store$.value.gameAutobet.id).forEach((key) => {\n\t\t\tif (store$.value.gameAutobet.id[key]) {\n\t\t\t\tresult.push(\n\t\t\t\t\tautobetStop({\n\t\t\t\t\t\tgame: key,\n\t\t\t\t\t\tid: store$.value.gameAutobet.id[key],\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t\treturn of(result);\n\t},\n});\n\nconst logoutEpic = epic('logoutEpic', {\n\tactions: (ofType) => ofType(USER_LOGOUT),\n\tcallback: () => {\n\t\tupdateStrategyLocalStorage();\n\t\tdiceInitialState.clearState();\n\t\treturn of();\n\t},\n});\n\nconst disableModeEpic = epic('disableModeEpic', {\n\tactions: (ofType) => ofType(SET_GAME),\n\tcallback: ({ store$, action }) => {\n\t\tif (action.payload) {\n\t\t\treturn of();\n\t\t}\n\t\treturn of(\n\t\t\tObject.keys(store$.value.gameAutobet.active)\n\t\t\t\t.filter(\n\t\t\t\t\t(key) =>\n\t\t\t\t\t\tstore$.value.gameAutobet.active[key] &&\n\t\t\t\t\t\t!store$.value.gameAutobet.autoBetRolling[key],\n\t\t\t\t)\n\t\t\t\t.map((key) =>\n\t\t\t\t\tautobetClear({\n\t\t\t\t\t\tgame: key,\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t);\n\t},\n});\n\nconst gameAutobetEpic = combineEpics(\n\tautobetEpic,\n\tpauseEpic,\n\tresetDefaultsEpic,\n\tgetStrategiesEpic,\n\tcheckIsStrategyToSaveEpic,\n\tsaveStrategyEpic,\n\tdeleteStrategyEpic,\n\tbetConnectionErrorEpic,\n\teditStrategyEpic,\n\tplayEpic,\n\tbetThrottledEpic,\n\tautobetStoppedEpic,\n\tupdateConfigEasyEpic,\n\tstopEpic,\n\tresetToDefaultEpic,\n\tsetDefaultsEpic,\n\teditStrategyModalEpic,\n\tstopRollingEpic,\n\tclosesEpic,\n\tinitStrategyEpic,\n\tlogoutEpic,\n\tautobetClearEpic,\n\tdisableModeEpic,\n\tlocalStrategyEpic,\n);\n\nexport default gameAutobetEpic;\n","import Redux from 'redux';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport {\n\tgetStrategyGame,\n\tupdateStrategyWithValidation,\n} from '@legacyApp/client/modules/app/strategyV3Service';\nimport { validatePayout } from '@legacyApp/client/modules/app/validateService';\nimport {\n\tgetMinBetAmount,\n\tgetProfit,\n\tgetWinChanceFromPayout,\n} from '@legacyApp/client/modules/app/gameService';\nimport { setCurrency } from '@legacyApp/client/store/user/user.actions';\nimport { mathService } from '@legacyApp/client/modules/math/mathService';\nimport { parseSingleBetValue } from '../../../methods/getWinChanceFromBetValues';\nimport { diceActions } from '../../dice/dice.actions';\nimport {\n\tautobetSetConfig,\n\tautobetSetConfigEasy,\n\tautobetSetMode,\n\tautobetSetRolls,\n\tdisableCheckAutobetStrategy,\n\tsetActiveAutobetStrategy,\n} from '../gameAutobet.actions';\nimport {\n\tgameUpdateAmount,\n\tgameUpdatePayout,\n\tgameUpdateProfit,\n\tgameUpdateWinChance,\n} from '../../game/game.actions';\nimport { GameStrategy } from '../../../types/GameStrategy';\nimport { RollRule } from '../../../types/RollRule';\nimport { GameType } from '../../../constants/availableGames';\nimport { mapBetValuesDTO } from '../../../methods/mapBetValuesDTO';\nimport { updateBetValueThunk } from '../../dice/thunks/updateBetValue.thunk';\nimport { plinkoActions } from '../../plinko/plinko.actions';\nimport { checkExpertConfig } from '../../../methods/checkExpertConfig';\n\ninterface ApplyGameStrategy extends GameStrategy {\n\tnoConfig?: boolean;\n\tnoGameRelated?: boolean;\n}\n\nexport const applyAutoBetStrategyThunk = (\n\tdata: string | ApplyGameStrategy,\n): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst state = getState();\n\t\tconst strategy: ApplyGameStrategy =\n\t\t\ttypeof data === 'string'\n\t\t\t\t? state.gameAutobet.strategies.find((el) => el.id === data)\n\t\t\t\t: data;\n\t\tconst game =\n\t\t\tstrategy && strategy.game\n\t\t\t\t? strategy.game\n\t\t\t\t: state.game.activeGame || getStrategyGame(strategy);\n\t\tconst result: Array<Redux.AnyAction | AppThunk> = [\n\t\t\tdisableCheckAutobetStrategy(true),\n\t\t];\n\n\t\tconst expert = checkExpertConfig(strategy.config);\n\t\tif (!strategy.noConfig) {\n\t\t\tresult.push(\n\t\t\t\t...[\n\t\t\t\t\texpert\n\t\t\t\t\t\t? autobetSetConfig({\n\t\t\t\t\t\t\t\tvalue: updateStrategyWithValidation(\n\t\t\t\t\t\t\t\t\tstrategy.config,\n\t\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t\t\t\tstrategy.rollDirection,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t  })\n\t\t\t\t\t\t: autobetSetConfigEasy({\n\t\t\t\t\t\t\t\tvalue: strategy.config,\n\t\t\t\t\t\t\t\tgame,\n\t\t\t\t\t\t  }),\n\t\t\t\t\tautobetSetMode(expert ? 'expert' : 'easy'),\n\t\t\t\t],\n\t\t\t);\n\t\t}\n\n\t\tconst payout = validatePayout(\n\t\t\tstrategy.payoutValue || state.game.payoutValue[game],\n\t\t\tgame,\n\t\t).amount;\n\t\tconst betAmount =\n\t\t\tstrategy.betAmount ||\n\t\t\tgetMinBetAmount({\n\t\t\t\tgame,\n\t\t\t\tcurrency: strategy.currency || state.user.activeCurrency,\n\t\t\t});\n\t\tconst winChance = getWinChanceFromPayout(payout, game);\n\t\tconst profit = getProfit(betAmount, payout);\n\t\tconst rule = strategy.rollDirection || RollRule.OVER;\n\n\t\tif (strategy.currency && state.user.activeCurrency !== strategy.currency) {\n\t\t\tresult.push(setCurrency(strategy.currency));\n\t\t}\n\n\t\tif (strategy.id && state.gameAutobet.activeStrategy[game] !== strategy.id) {\n\t\t\tresult.push(\n\t\t\t\tsetActiveAutobetStrategy({\n\t\t\t\t\tvalue: strategy.id,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.betAmount[game], betAmount)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateAmount({\n\t\t\t\t\tvalue: betAmount,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.payoutValue[game], payout)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdatePayout({\n\t\t\t\t\tvalue: payout,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.winChanceValue[game], winChance)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateWinChance({\n\t\t\t\t\tvalue: winChance,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\t// TODO: NEW GAME FLAG\n\t\tif (game === GameType.DICE && !strategy.noGameRelated) {\n\t\t\tif (strategy.betValues) {\n\t\t\t\tconst betValues = mapBetValuesDTO(strategy.betValues);\n\t\t\t\tresult.push(updateBetValueThunk(betValues, rule));\n\t\t\t} else {\n\t\t\t\tconst betValue = parseSingleBetValue(winChance, rule);\n\t\t\t\tif (state.dice.betValue.singleUnder !== betValue) {\n\t\t\t\t\tresult.push(updateBetValueThunk([betValue], rule));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (game === GameType.PLINKO && !strategy.noGameRelated) {\n\t\t\tif (strategy.risk) {\n\t\t\t\tresult.push(plinkoActions.riskUpdate(strategy.risk));\n\t\t\t}\n\t\t\tif (strategy.rows) {\n\t\t\t\tresult.push(plinkoActions.linesUpdate(strategy.rows));\n\t\t\t}\n\t\t}\n\n\t\tif (!strategy.noGameRelated && rule && state.dice.rollDirection !== rule) {\n\t\t\tresult.push(diceActions.ruleUpdate(rule));\n\t\t}\n\n\t\tif (mathService.isNumberDiff(state.game.profitValue[game], profit)) {\n\t\t\tresult.push(\n\t\t\t\tgameUpdateProfit({\n\t\t\t\t\tvalue: profit,\n\t\t\t\t\tgame,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tresult.push(\n\t\t\t...[\n\t\t\t\tautobetSetRolls(strategy.rolls || 0),\n\t\t\t\tdisableCheckAutobetStrategy(false),\n\t\t\t],\n\t\t);\n\n\t\tresult.forEach((action) => {\n\t\t\tdispatch(action);\n\t\t});\n\t};\n};\n","import { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { betResult } from '../../game/game.actions';\nimport { autobet } from '../gameAutobet.actions';\nimport { AutobetResponseProps } from '../@types/AutobetResponseProps';\n\nexport const handleAutobetPlayResponseThunk = (\n\tprops: AutobetResponseProps,\n): AppThunk => {\n\treturn (dispatch) => {\n\t\tconst { data, payload, lastBetTimestamp } = props;\n\t\tdispatch(\n\t\t\tbetResult({\n\t\t\t\tdata: {\n\t\t\t\t\tbet: data.bet,\n\t\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\t},\n\t\t\t\tlastBet: data.bet,\n\t\t\t\tauto: true,\n\t\t\t}),\n\t\t);\n\t\tdispatch(\n\t\t\tautobet({\n\t\t\t\t...payload,\n\t\t\t\tbet: data.bet,\n\t\t\t\tuserBalance: data.userBalance,\n\t\t\t\tnextBet: data.nextBet\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...data.nextBet,\n\t\t\t\t\t\t\tcounter: data.nextBet.rolls,\n\t\t\t\t\t  }\n\t\t\t\t\t: {},\n\t\t\t\tstopped: data.stopReason, // stopped with reason\n\t\t\t\tlastBetTimestamp,\n\t\t\t}),\n\t\t);\n\t};\n};\n","import { openModal } from '@modules/modals/store/modal.actions';\nimport { MODAL_ID } from '@common/constants/modal/ids.modal.constants';\nimport { AppThunk } from '@legacyApp/types/store/ThunkAction';\nimport { CurrencyType } from '@legacyApp/types/wallet/CurrencyType';\nimport { UserType } from '@legacyApp/types/user/UserType';\nimport { GameType } from '../../../constants/availableGames';\nimport { GameStrategy } from '../../../types/GameStrategy';\n\nexport const openAutobetSummaryThunk = ({\n\tgame,\n\ttype,\n\tdata,\n\tid,\n}: {\n\tgame: GameType;\n\ttype: string;\n\tid?: string;\n\tdata: {\n\t\tstop_reason: any;\n\t\tstrategy: GameStrategy;\n\t\tcurrency?: CurrencyType;\n\t\tgame?: {\n\t\t\tname: GameType;\n\t\t};\n\t\tlost?: number;\n\t\tprofit?: number;\n\t\tprofit_chart?: Array<number>;\n\t\tpublished_at?: number;\n\t\tuser?: UserType;\n\t\twagered?: number;\n\t\twon?: number;\n\t};\n}): AppThunk => {\n\treturn (dispatch, getState) => {\n\t\tconst { balances } = getState().balance;\n\t\tconst startAgain =\n\t\t\tNumber(balances[data.currency]) >= Number(data.strategy.betAmount);\n\t\tdispatch(\n\t\t\topenModal(MODAL_ID.SESSION, 'openAutobetSummaryThunk', {\n\t\t\t\tdata,\n\t\t\t\ttype,\n\t\t\t\tstartAgain,\n\t\t\t\tgame,\n\t\t\t\tid,\n\t\t\t}),\n\t\t);\n\t};\n};\n","// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nexport var defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\nexport function createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nexport function defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}","import { defaultMemoize, defaultEqualityCheck } from './defaultMemoize';\nexport { defaultMemoize, defaultEqualityCheck };\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\nexport var createSelector = /* #__PURE__ */createSelectorCreator(defaultMemoize);\n// Manual definition of state and output arguments\nexport var createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};"],"names":["getSessionData","game","state","noStats","profit_chart","gameSession","profitHistoryAuto","data","map","el","y","shift","published_at","roundNumber","getTimestamp","name","user","login","uuid","id","wagered","undefined","wageredAuto","profit","stopProfit","currency","gameAutobet","activeCurrency","lost","lostAuto","won","wonAuto","isPackageActive","type","packageData","registry","packages","packageDataModules","Object","keys","length","filter","module","activePackageSelector","param","createSelector","a","checkIsSingleValue","rule","RollRule","indexOf","checkIsWinChanceDisabled","GameType","getSwitchedRollDirection","direction","validateBetValues","betValues","validated","forEach","betValue","index","validateBetValue","value","getBetValueMaxMin","min","max","Array","isArray","diceActions","betValueSlice","resultSlice","ruleDefaultSlice","ruleSlice","isResultVisibleSlice","diceInitialState","reducerInitialStateMethods","defaultBetValue","config","NAME","initialState","singleUnder","double","quadruple","createSlice","reducers","singleValueUpdate","action","payload","doubleValueUpdate","quadrupleValueUpdate","betValueUpdate","betValueIndexUpdate","resultShow","resultHide","result","resultValue","resultUpdate","NAME_DEFAULT","initialDefaultState","setAction","ruleUpdate","defaultRuleUpdate","switchDirectionThunk","dispatch","getState","dice","rollDirection","updateRuleThunk","updateBetValueThunk","parsedBetValue","betValueUnder","parseSingleBetValue","checkIsDoubleValue","transactionService","checkIsQuadrupleValue","GameFieldType","typesToActions","BET_AMOUNT","gameUpdateAmountError","FORM","gameUpdateFormError","PAYOUT","gameUpdatePayoutError","PROFIT","gameUpdateProfitError","WIN_CHANCE","gameUpdateWinChanceError","gameValidation","activeGame","getGameFromUrl","actionPayload","values","winChanceValue","isSingleValue","isDoubleValue","getWinChangeFromSingleBetValue","getWinChanceFromMultipleBetValues","updateWinChanceThunk","payoutValue","getPayout","updatePayoutThunk","disableGameValidationErrorThunk","payout","isPayoutInput","mathService","isTrueOrZero","gameUpdatePayout","winChance","decimal","getWinChanceDecimal","winChance_","gameUpdateWinChance","sendAutoBetPlayThunk","gameLabel","fetchApi","url","apiUrl","apiConfig","uri","parameters","Authorization","body","method","loaderId","disableErrorHandler","checkBetsInAnimationThunk","gameState","betsInAnimation","autobetStoppedThunk","props","game_config","resultAnimation","options","OPTIONS","autobetStopped","setTimeout","playEpic","epic","actions","ofType","AUTOBET_PLAY","callback","of","active","autoBetRolling","message","stopped","pause","autobetSetPauseData","lastBetTimestamp","manual","manualConfirmed","setConfirm","callbackAction","autobetPlay","callbackCancelAction","autobetSetActive","autobetStop","question","betAmount","profitValue","error","trans","label","bet","autobetSummaryConnectionError","app","visible","betResponseAnimation","handleAutobetPlayResponseThunk","betThrottledEpic","BET_THROTTLED","store$","autoBetThrottle","timeout","Date","getTime","pipe","delay","autobetEpic","AUTOBET","autobetSetId","push","nextBet","win_chance","validateWinChance","parseFloat","multiplier","validatePayout","getWinChanceFromPayout","counter","rollsCounter","autobetSetRollsCounter","amount","maxProfit","getLimits","profit_maximum","isProfitExceeded","getProfit","validateBetAmount","balances","balance","balancesArray","isLogged","checkBalance","gameUpdateAmount","betThrottled","autobetStoppedEpic","AUTOBET_STOPPED","myBets","lsGet","LocalStorageKeys","autobetClear","setNewMyBets","lsClear","openAutobetSummaryThunk","strategy","getStrategyFromState","stop_reason","autobetClearEpic","AUTOBET_CLEAR","resetDefaultsEpic","autobetResetToDefault","getStrategiesEpic","GET_AUTOBET_STRATEGIES","fetchApiAction","strategies","setAutobetStrategies","parseFetchedStrategy","stringToJson","saveStrategyEpic","SAVE_AUTOBET_STRATEGY","showAlert","duplicate","getActiveStrategy","strategyName","closeModal","autobetSetMode","lockByModal","setActive","setActiveAutobetStrategy","editStrategyEpic","EDIT_AUTOBET_STRATEGY","jsonToString","deleteStrategyEpic","DELETE_AUTOBET_STRATEGY","checkIsStrategyToSaveEpic","GAME_UPDATE_AMOUNT","SET_CURRENCY","GAME_UPDATE_PAYOUT","AUTOBET_SET_CONFIG","AUTOBET_SET_CONFIG_EASY","SET_AUTOBET_STRATEGIES","betType","dataType","checkStrategyDisabled","currentStrategy","activeStrategy","betConnectionErrorEpic","AUTOBET_SUMMARY_CONNECTION_ERROR","parsed","parseApiInfo","text","gameName","sentryError","Error","modal","pauseEpic","AUTOBET_PAUSE","isEveryGame","autobetSetPause","pauseData","updateConfigEasyEpic","AUTOBET_UPDATE_CONFIG_EASY","newConfig","configEasy","autobetSetConfigEasy","stopEpic","AUTOBET_STOP","status","sessions","stopRollingEpic","resetToDefaultEpic","AUTOBET_RESET_TO_DEFAULT","limbo","defaultPayout","defaultWinChanceValue","defaultBetAmount","gameUpdateProfit","rollDefaultDirection","setDefaultsEpic","AUTOBET_SET_DEFAULTS","gameSetAmountDefault","toString","gameSetWinChanceDefault","autobetSetCurrency","editStrategyModalEpic","AUTOBET_SET_EDIT_MODAL","modalSetPreviousProps","previous","key","modalHandlePrevious","closesEpic","APP_CLOSES","REGISTRY_EPIC_REJECT","lsSet","localStrategyEpic","AUTOBET_SET_ROLLS","updateStrategyLocalStorage","initStrategyEpic","REGISTRY_GAME_PACKAGE","USER_LOGGED","PackageType","getAutobetStrategies","getGamesList","getStrategyLocalStorage","noAutobet","configExpert","autobetSetConfig","applyAutoBetStrategyThunk","noConfig","noGameRelated","checkGameForm","logoutEpic","USER_LOGOUT","disableModeEpic","SET_GAME","combineEpics","find","getStrategyGame","disableCheckAutobetStrategy","expert","checkExpertConfig","updateStrategyWithValidation","getMinBetAmount","setCurrency","mapBetValuesDTO","risk","plinkoActions","rows","autobetSetRolls","rolls","betResult","userBalance","lastBet","auto","autobet","stopReason","startAgain","Number","openModal","MODAL_ID","NOT_FOUND","defaultEqualityCheck","b","defaultMemoize","func","equalityCheckOrOptions","providedOptions","equalityCheck","_providedOptions$equa","_providedOptions$maxS","maxSize","resultEqualityCheck","comparator","prev","next","i","createCacheKeyComparator","cache","equals","entry","get","put","getEntries","clear","createSingletonCache","entries","cacheIndex","findIndex","splice","unshift","pop","createLruCache","memoized","arguments","apply","matchingEntry","clearCache","getDependencies","funcs","dependencies","every","dep","dependencyTypes","join","createSelectorCreator","memoize","_len","memoizeOptionsFromArgs","_key","_len2","_key2","_lastResult","_recomputations","directlyPassedOptions","memoizeOptions","resultFunc","_directlyPassedOption","_directlyPassedOption2","finalMemoizeOptions","memoizedResultFunc","concat","selector","params","assign","lastResult","recomputations","resetRecomputations"],"mappings":"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","debug_id":"42d6264f-c655-50e9-8297-af1f5237c6f5"}