{"version":3,"file":"js/bundle.js?ver=3.0.55.4","sources":["webpack:///webpack/bootstrap dbada6f6c3eb1457f973","webpack:///./~/core-js/modules/_export.js","webpack:///./~/react/react.js","webpack:///./~/prop-types/index.js","webpack:///./~/core-js/modules/_an-object.js","webpack:///./~/react-redux/es/index.js","webpack:///./~/fbjs/lib/invariant.js","webpack:///./~/core-js/modules/_global.js","webpack:///./~/crypto-js/core.js","webpack:///./~/core-js/modules/_fails.js","webpack:///./~/core-js/modules/_is-object.js","webpack:///./~/fbjs/lib/warning.js","webpack:///./~/react-dom/lib/reactProdInvariant.js","webpack:///./~/react-router/es/index.js","webpack:///./~/core-js/modules/_wks.js","webpack:///app/common/components/Loader/Loader.jsx","webpack:///./~/core-js/modules/_to-length.js","webpack:///./~/object-assign/index.js","webpack:///./~/underscore/modules/_setup.js","webpack:///app/common/actions/ErrorAction.js","webpack:///./~/core-js/modules/_descriptors.js","webpack:///./~/core-js/modules/_object-dp.js","webpack:///./~/core-js/modules/_to-object.js","webpack:///./~/react-dom/lib/ReactDOMComponentTree.js","webpack:///./~/crypto-js/cipher-core.js","webpack:///./app/version.json","webpack:///./~/underscore/modules/keys.js","webpack:///app/common/actions/CartAction.js","webpack:///./~/invariant/browser.js","webpack:///./~/underscore/modules/_tagTester.js","webpack:///app/common/actions/AuthAction.js","webpack:///./~/core-js/modules/_a-function.js","webpack:///./~/redux-persist/es/constants.js","webpack:///./~/fbjs/lib/ExecutionEnvironment.js","webpack:///./~/underscore/modules/_cb.js","webpack:///app/common/actions/UserAction.js","webpack:///./~/core-js/modules/_hide.js","webpack:///./~/core-js/modules/_redefine.js","webpack:///./~/core-js/modules/_string-html.js","webpack:///./~/underscore/modules/_isArrayLike.js","webpack:///./~/underscore/modules/restArguments.js","webpack:///./~/underscore/modules/underscore.js","webpack:///./~/axios/lib/utils.js","webpack:///app/common/actions/PatronsAction.js","webpack:///./~/core-js/modules/_has.js","webpack:///./~/core-js/modules/_object-gopd.js","webpack:///./~/core-js/modules/_object-gpo.js","webpack:///./~/core-js/modules/_to-iobject.js","webpack:///./~/underscore/modules/_getLength.js","webpack:///./~/underscore/modules/isFunction.js","webpack:///./~/axios/index.js","webpack:///app/common/components/ToolTip/ToolTip.jsx","webpack:///./~/core-js/modules/_cof.js","webpack:///./~/core-js/modules/_core.js","webpack:///./~/core-js/modules/_ctx.js","webpack:///./~/core-js/modules/_strict-method.js","webpack:///./~/core-js/modules/_to-integer.js","webpack:///./~/fbjs/lib/emptyFunction.js","webpack:///./~/react-dom/lib/ReactInstrumentation.js","webpack:///app/common/js/utils.js","webpack:///./~/core-js/modules/_array-methods.js","webpack:///./~/core-js/modules/_defined.js","webpack:///./~/core-js/modules/_object-sap.js","webpack:///./~/core-js/modules/_to-primitive.js","webpack:///./~/react-dom/lib/ReactUpdates.js","webpack:///app/common/actions/SubAction.js","webpack:///./~/core-js/modules/_metadata.js","webpack:///./~/core-js/modules/_typed-array.js","webpack:///./~/create-react-class/index.js","webpack:///./~/react-dom/lib/SyntheticEvent.js","webpack:///./~/react/lib/ReactCurrentOwner.js","webpack:///./~/axios-retry/lib/esm/index.js","webpack:///app/common/actions/TransAction.js","webpack:///app/common/constants/AuthConstants.js","webpack:///app/common/constants/UserConstants.js","webpack:///./~/core-js/modules/_add-to-unscopables.js","webpack:///./~/core-js/modules/_library.js","webpack:///./~/core-js/modules/_meta.js","webpack:///./~/history/lib/PathUtils.js","webpack:///./~/react-router/es/RouteUtils.js","webpack:///./~/underscore/modules/_has.js","webpack:///./~/warning/browser.js","webpack:///(webpack)/buildin/global.js","webpack:///app/common/actions/RememberAction.js","webpack:///app/common/components/LeftCol/LeftCol.jsx","webpack:///app/common/components/RightCol/RightCol.jsx","webpack:///./~/core-js/modules/_an-instance.js","webpack:///./~/core-js/modules/_for-of.js","webpack:///./~/core-js/modules/_object-create.js","webpack:///./~/core-js/modules/_object-gopn.js","webpack:///./~/core-js/modules/_object-keys.js","webpack:///./~/core-js/modules/_property-desc.js","webpack:///./~/core-js/modules/_redefine-all.js","webpack:///./~/core-js/modules/_set-species.js","webpack:///./~/core-js/modules/_to-absolute-index.js","webpack:///./~/core-js/modules/_uid.js","webpack:///./~/core-js/modules/_validate-collection.js","webpack:///./~/crypto-js/evpkdf.js","webpack:///./~/history/lib/LocationUtils.js","webpack:///./~/react-dom/lib/PooledClass.js","webpack:///./~/underscore/modules/each.js","webpack:///./~/underscore/modules/isArray.js","webpack:///./~/underscore/modules/isObject.js","webpack:///app/common/components/Modals/Modal/Modal.jsx","webpack:///./~/core-js/modules/_classof.js","webpack:///./~/core-js/modules/_iterators.js","webpack:///./~/core-js/modules/_set-to-string-tag.js","webpack:///./~/core-js/modules/_string-trim.js","webpack:///./~/crypto-js/enc-base64.js","webpack:///./~/crypto-js/md5.js","webpack:///./~/react-dom/lib/DOMLazyTree.js","webpack:///./~/react-dom/lib/DOMProperty.js","webpack:///./~/react-dom/lib/ReactReconciler.js","webpack:///./~/react-router/es/PatternUtils.js","webpack:///./~/react-router/es/routerWarning.js","webpack:///./~/react/lib/React.js","webpack:///./~/react/lib/ReactElement.js","webpack:///./~/underscore/modules/_flatten.js","webpack:///./~/underscore/modules/map.js","webpack:///./~/underscore/modules/values.js","webpack:///app/common/components/AddStudent/AddStudent.jsx","webpack:///app/common/js/Biometry.js","webpack:///./~/core-js/modules/_flags.js","webpack:///./~/core-js/modules/_iobject.js","webpack:///./~/core-js/modules/_object-pie.js","webpack:///./~/core-js/modules/_shared.js","webpack:///./~/core-js/modules/_species-constructor.js","webpack:///./~/history/lib/Actions.js","webpack:///./~/history/lib/DOMUtils.js","webpack:///./~/react-dom/lib/EventPluginHub.js","webpack:///./~/react-dom/lib/EventPropagators.js","webpack:///./~/react-dom/lib/ReactInstanceMap.js","webpack:///./~/react-dom/lib/SyntheticUIEvent.js","webpack:///./~/react-router/es/InternalPropTypes.js","webpack:///./~/react/lib/reactProdInvariant.js","webpack:///./~/underscore/modules/_optimizeCb.js","webpack:///./~/underscore/modules/_stringTagBug.js","webpack:///./~/underscore/modules/_toPath.js","webpack:///./~/underscore/modules/allKeys.js","webpack:///./~/underscore/modules/contains.js","webpack:///./~/underscore/modules/filter.js","webpack:///app/common/components/Receipt/Receipt.jsx","webpack:///app/common/constants/CartConstants.js","webpack:///./~/core-js/modules/_array-includes.js","webpack:///./~/core-js/modules/_collection.js","webpack:///./~/core-js/modules/_fix-re-wks.js","webpack:///./~/core-js/modules/_is-array.js","webpack:///./~/core-js/modules/_is-regexp.js","webpack:///./~/core-js/modules/_iter-detect.js","webpack:///./~/core-js/modules/_object-forced-pam.js","webpack:///./~/core-js/modules/_object-gops.js","webpack:///./~/core-js/modules/_regexp-exec-abstract.js","webpack:///./~/core-js/modules/_set-collection-from.js","webpack:///./~/core-js/modules/_set-collection-of.js","webpack:///./~/core-js/modules/_string-at.js","webpack:///./~/core-js/modules/_typed.js","webpack:///./~/core-js/modules/_user-agent.js","webpack:///./~/crypto-js/x64-core.js","webpack:///./app/common/components/AboutComponents/Contents/Contents.scss","webpack:///./app/parent/components/Subscriptions/Subscriptions.scss","webpack:///./~/history/lib/ExecutionEnvironment.js","webpack:///./~/react-dom/lib/ReactBrowserEventEmitter.js","webpack:///./~/react-dom/lib/SyntheticMouseEvent.js","webpack:///./~/react-dom/lib/Transaction.js","webpack:///./~/react-dom/lib/escapeTextContentForBrowser.js","webpack:///./~/react-dom/lib/setInnerHTML.js","webpack:///./~/react-is/index.js","webpack:///./~/underscore/modules/_group.js","webpack:///./~/underscore/modules/matcher.js","webpack:///./~/underscore/modules/partial.js","webpack:///./~/@babel/runtime/helpers/esm/extends.js","webpack:///./~/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./~/axios/lib/defaults.js","webpack:///app/common/components/ExistingPayment/ExistingPayment.jsx","webpack:///app/common/components/Modals/Error/Error.jsx","webpack:///app/common/components/PaymentInfo/PaymentInfo.jsx","webpack:///app/common/components/SinglePage/SinglePage.jsx","webpack:///app/common/constants/PatronsConstants.js","webpack:///app/common/js/Push.js","webpack:///app/common/js/Sub.js","webpack:///app/common/js/coppa.js","webpack:///app/parent/components/Sidebar/Sidebar.jsx","webpack:///./~/core-js/modules/_advance-string-index.js","webpack:///./~/core-js/modules/_array-fill.js","webpack:///./~/core-js/modules/_array-species-create.js","webpack:///./~/core-js/modules/_create-property.js","webpack:///./~/core-js/modules/_dom-create.js","webpack:///./~/core-js/modules/_enum-bug-keys.js","webpack:///./~/core-js/modules/_fails-is-regexp.js","webpack:///./~/core-js/modules/_html.js","webpack:///./~/core-js/modules/_inherit-if-required.js","webpack:///./~/core-js/modules/_is-array-iter.js","webpack:///./~/core-js/modules/_iter-create.js","webpack:///./~/core-js/modules/_iter-define.js","webpack:///./~/core-js/modules/_math-expm1.js","webpack:///./~/core-js/modules/_math-sign.js","webpack:///./~/core-js/modules/_microtask.js","webpack:///./~/core-js/modules/_new-promise-capability.js","webpack:///./~/core-js/modules/_regexp-exec.js","webpack:///./~/core-js/modules/_set-proto.js","webpack:///./~/core-js/modules/_shared-key.js","webpack:///./~/core-js/modules/_string-context.js","webpack:///./~/core-js/modules/_string-repeat.js","webpack:///./~/core-js/modules/_string-ws.js","webpack:///./~/core-js/modules/_task.js","webpack:///./~/core-js/modules/_typed-buffer.js","webpack:///./~/core-js/modules/_wks-define.js","webpack:///./~/core-js/modules/core.get-iterator-method.js","webpack:///./~/core-js/modules/es6.array.iterator.js","webpack:///./~/crypto-js/hmac.js","webpack:///./~/crypto-js/sha1.js","webpack:///./~/es5-ext/object/is-value.js","webpack:///./~/fbjs/lib/emptyObject.js","webpack:///./~/fbjs/lib/shallowEqual.js","webpack:///./~/focus-trap-react/dist/focus-trap-react.js","webpack:///./~/history/lib/BrowserProtocol.js","webpack:///./~/history/lib/createHistory.js","webpack:///./~/history/lib/runTransitionHook.js","webpack:///./~/history/lib/useBasename.js","webpack:///./~/history/lib/useQueries.js","webpack:///./app/common/constants/SecurityQuestions.json","webpack:///./app/common/constants/ValidationErrorIDs.json","webpack:///./~/lodash-es/isPlainObject.js","webpack:///./~/process/browser.js","webpack:///./~/react-autowhatever/dist/compareObjects.js","webpack:///./~/react-dom/lib/DOMChildrenOperations.js","webpack:///./~/react-dom/lib/DOMNamespaces.js","webpack:///./~/react-dom/lib/EventPluginRegistry.js","webpack:///./~/react-dom/lib/EventPluginUtils.js","webpack:///./~/react-dom/lib/KeyEscapeUtils.js","webpack:///./~/react-dom/lib/LinkedValueUtils.js","webpack:///./~/react-dom/lib/ReactComponentEnvironment.js","webpack:///./~/react-dom/lib/ReactErrorUtils.js","webpack:///./~/react-dom/lib/ReactUpdateQueue.js","webpack:///./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js","webpack:///./~/react-dom/lib/getEventCharCode.js","webpack:///./~/react-dom/lib/getEventModifierState.js","webpack:///./~/react-dom/lib/getEventTarget.js","webpack:///./~/react-dom/lib/isEventSupported.js","webpack:///./~/react-dom/lib/shouldUpdateReactComponent.js","webpack:///./~/react-dom/lib/validateDOMNesting.js","webpack:///./~/react-redux/es/utils/warning.js","webpack:///./~/react-router/es/AsyncUtils.js","webpack:///./~/react-router/es/ContextUtils.js","webpack:///./~/react-router/es/PropTypes.js","webpack:///./~/react-router/es/RouterContext.js","webpack:///./~/redux/es/index.js","webpack:///./~/underscore/modules/_createAssigner.js","webpack:///./~/underscore/modules/_deepGet.js","webpack:///./~/underscore/modules/_getByteLength.js","webpack:///./~/underscore/modules/_methodFingerprint.js","webpack:///./~/underscore/modules/extendOwn.js","webpack:///./~/underscore/modules/findIndex.js","webpack:///./~/underscore/modules/identity.js","webpack:///./~/underscore/modules/index-all.js","webpack:///./~/underscore/modules/index.js","webpack:///./~/underscore/modules/isArguments.js","webpack:///./~/underscore/modules/isDataView.js","webpack:///./~/underscore/modules/isString.js","webpack:///./~/underscore/modules/negate.js","webpack:///./~/underscore/modules/now.js","webpack:///./~/underscore/modules/pluck.js","webpack:///./~/underscore/modules/property.js","webpack:///./~/regenerator-runtime/runtime.js","webpack:///./~/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./~/axios/lib/adapters/xhr.js","webpack:///./~/axios/lib/cancel/Cancel.js","webpack:///./~/axios/lib/cancel/isCancel.js","webpack:///./~/axios/lib/core/createError.js","webpack:///./~/axios/lib/helpers/bind.js","webpack:///app/common/actions/AboutAction.js","webpack:///app/common/components/AboutComponents/AboutComponents.jsx","webpack:///app/common/components/AboutComponents/Contents/TermOfUseContents.jsx","webpack:///app/common/components/AccountInfo/AccountInfo.jsx","webpack:///app/common/components/Alert/Alert.jsx","webpack:///app/common/components/ForgotPassword/ForgotPassword.jsx","webpack:///app/common/components/ForgotUsername/ForgotUsername.jsx","webpack:///app/common/components/Header/Header.jsx","webpack:///app/common/components/Modals/Reauth/Reauth.jsx","webpack:///app/common/components/StudentInfo/StudentInfo.jsx","webpack:///app/common/components/SubSetting/SubSetting.jsx","webpack:///app/common/components/ToggleLoader/ToggleLoader.jsx","webpack:///app/common/components/Toggle/Toggle.jsx","webpack:///app/common/components/UserInfo/UserInfo.jsx","webpack:///app/common/constants/AboutConstants.js","webpack:///app/common/constants/ErrorConstants.js","webpack:///app/common/constants/RememberConstants.js","webpack:///app/common/constants/ReportConstants.js","webpack:///app/common/constants/SubConstants.js","webpack:///app/common/constants/TransConstants.js","webpack:///app/common/js/RegistrationValidation.js","webpack:///app/common/js/SubForm.js","webpack:///app/parent/components/Subscriptions/SubscriptionForm.jsx","webpack:///app/parent/store.js","webpack:///./~/core-js/modules/_a-number-value.js","webpack:///./~/core-js/modules/_array-copy-within.js","webpack:///./~/core-js/modules/_array-from-iterable.js","webpack:///./~/core-js/modules/_array-reduce.js","webpack:///./~/core-js/modules/_bind.js","webpack:///./~/core-js/modules/_collection-strong.js","webpack:///./~/core-js/modules/_collection-to-json.js","webpack:///./~/core-js/modules/_collection-weak.js","webpack:///./~/core-js/modules/_flatten-into-array.js","webpack:///./~/core-js/modules/_ie8-dom-define.js","webpack:///./~/core-js/modules/_invoke.js","webpack:///./~/core-js/modules/_is-integer.js","webpack:///./~/core-js/modules/_iter-call.js","webpack:///./~/core-js/modules/_iter-step.js","webpack:///./~/core-js/modules/_math-fround.js","webpack:///./~/core-js/modules/_math-log1p.js","webpack:///./~/core-js/modules/_math-scale.js","webpack:///./~/core-js/modules/_object-assign.js","webpack:///./~/core-js/modules/_object-dps.js","webpack:///./~/core-js/modules/_object-gopn-ext.js","webpack:///./~/core-js/modules/_object-keys-internal.js","webpack:///./~/core-js/modules/_object-to-array.js","webpack:///./~/core-js/modules/_own-keys.js","webpack:///./~/core-js/modules/_parse-float.js","webpack:///./~/core-js/modules/_parse-int.js","webpack:///./~/core-js/modules/_perform.js","webpack:///./~/core-js/modules/_promise-resolve.js","webpack:///./~/core-js/modules/_same-value.js","webpack:///./~/core-js/modules/_string-pad.js","webpack:///./~/core-js/modules/_to-index.js","webpack:///./~/core-js/modules/_wks-ext.js","webpack:///./~/core-js/modules/es6.map.js","webpack:///./~/core-js/modules/es6.regexp.exec.js","webpack:///./~/core-js/modules/es6.regexp.flags.js","webpack:///./~/core-js/modules/es6.set.js","webpack:///./~/core-js/modules/es6.weak-map.js","webpack:///./~/create-react-class/factory.js","webpack:///./~/crypto-js/sha256.js","webpack:///./~/crypto-js/sha512.js","webpack:///./~/fbjs/lib/EventListener.js","webpack:///./~/fbjs/lib/focusNode.js","webpack:///./~/fbjs/lib/getActiveElement.js","webpack:///./~/history/lib/DOMStateStorage.js","webpack:///./~/history/lib/createBrowserHistory.js","webpack:///./~/history/lib/createHashHistory.js","webpack:///./~/history/lib/createMemoryHistory.js","webpack:///./~/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./~/lodash-es/_Symbol.js","webpack:///./~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/react-autosuggest/dist/redux.js","webpack:///./~/react-dom/lib/CSSProperty.js","webpack:///./~/react-dom/lib/CallbackQueue.js","webpack:///./~/react-dom/lib/DOMPropertyOperations.js","webpack:///./~/react-dom/lib/ReactDOMComponentFlags.js","webpack:///./~/react-dom/lib/ReactDOMSelect.js","webpack:///./~/react-dom/lib/ReactEmptyComponent.js","webpack:///./~/react-dom/lib/ReactFeatureFlags.js","webpack:///./~/react-dom/lib/ReactHostComponent.js","webpack:///./~/react-dom/lib/ReactInputSelection.js","webpack:///./~/react-dom/lib/ReactMount.js","webpack:///./~/react-dom/lib/ReactNodeTypes.js","webpack:///./~/react-dom/lib/ViewportMetrics.js","webpack:///./~/react-dom/lib/accumulateInto.js","webpack:///./~/react-dom/lib/forEachAccumulated.js","webpack:///./~/react-dom/lib/getHostComponentFromComposite.js","webpack:///./~/react-dom/lib/getTextContentAccessor.js","webpack:///./~/react-dom/lib/instantiateReactComponent.js","webpack:///./~/react-dom/lib/isTextInputElement.js","webpack:///./~/react-dom/lib/setTextContent.js","webpack:///./~/react-dom/lib/traverseAllChildren.js","webpack:///./~/react-pullrefresh/index.js","webpack:///./~/react-redux/es/components/connectAdvanced.js","webpack:///./~/react-redux/es/connect/wrapMapToProps.js","webpack:///./~/react-redux/es/utils/PropTypes.js","webpack:///./~/react-redux/es/utils/verifyPlainObject.js","webpack:///./~/react-router/es/Link.js","webpack:///./~/react-router/es/PromiseUtils.js","webpack:///./~/react-router/es/Redirect.js","webpack:///./~/react-router/es/RouterUtils.js","webpack:///./~/react-router/es/createMemoryHistory.js","webpack:///./~/react-router/es/createRouterHistory.js","webpack:///./~/react-router/es/createTransitionManager.js","webpack:///./~/react-router/es/useRouterHistory.js","webpack:///./~/react/lib/ReactBaseClasses.js","webpack:///./~/react/lib/ReactComponentTreeHook.js","webpack:///./~/react/lib/ReactElementSymbol.js","webpack:///./~/react/lib/ReactNoopUpdateQueue.js","webpack:///./~/react/lib/canDefineProperty.js","webpack:///./~/redux-logger/lib/helpers.js","webpack:///./~/redux-persist/es/createPersistor.js","webpack:///./~/redux-persist/es/defaults/asyncLocalStorage.js","webpack:///./~/redux-persist/es/getStoredState.js","webpack:///./~/redux-persist/es/purgeStoredState.js","webpack:///./~/redux-persist/es/utils/setImmediate.js","webpack:///./~/redux/es/compose.js","webpack:///./~/redux/es/createStore.js","webpack:///./~/redux/es/utils/warning.js","webpack:///./~/type/value/is.js","webpack:///./~/underscore/modules/_baseCreate.js","webpack:///./~/underscore/modules/_baseIteratee.js","webpack:///./~/underscore/modules/_chainResult.js","webpack:///./~/underscore/modules/_collectNonEnumProps.js","webpack:///./~/underscore/modules/_createEscaper.js","webpack:///./~/underscore/modules/_createIndexFinder.js","webpack:///./~/underscore/modules/_createPredicateIndexFinder.js","webpack:///./~/underscore/modules/_createReduce.js","webpack:///./~/underscore/modules/_createSizePropertyCheck.js","webpack:///./~/underscore/modules/_escapeMap.js","webpack:///./~/underscore/modules/_executeBound.js","webpack:///./~/underscore/modules/_shallowProperty.js","webpack:///./~/underscore/modules/before.js","webpack:///./~/underscore/modules/bind.js","webpack:///./~/underscore/modules/clone.js","webpack:///./~/underscore/modules/constant.js","webpack:///./~/underscore/modules/defaults.js","webpack:///./~/underscore/modules/delay.js","webpack:///./~/underscore/modules/difference.js","webpack:///./~/underscore/modules/extend.js","webpack:///./~/underscore/modules/find.js","webpack:///./~/underscore/modules/findKey.js","webpack:///./~/underscore/modules/findLastIndex.js","webpack:///./~/underscore/modules/functions.js","webpack:///./~/underscore/modules/get.js","webpack:///./~/underscore/modules/indexOf.js","webpack:///./~/underscore/modules/initial.js","webpack:///./~/underscore/modules/invert.js","webpack:///./~/underscore/modules/isArrayBuffer.js","webpack:///./~/underscore/modules/isBoolean.js","webpack:///./~/underscore/modules/isMatch.js","webpack:///./~/underscore/modules/isNaN.js","webpack:///./~/underscore/modules/isNumber.js","webpack:///./~/underscore/modules/isSymbol.js","webpack:///./~/underscore/modules/isTypedArray.js","webpack:///./~/underscore/modules/isUndefined.js","webpack:///./~/underscore/modules/iteratee.js","webpack:///./~/underscore/modules/max.js","webpack:///./~/underscore/modules/noop.js","webpack:///./~/underscore/modules/pick.js","webpack:///./~/underscore/modules/random.js","webpack:///./~/underscore/modules/rest.js","webpack:///./~/underscore/modules/sample.js","webpack:///./~/underscore/modules/sortedIndex.js","webpack:///./~/underscore/modules/templateSettings.js","webpack:///./~/underscore/modules/toPath.js","webpack:///./~/underscore/modules/uniq.js","webpack:///./~/underscore/modules/unzip.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///app/parent/index.jsx","webpack:///./~/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./~/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./~/axios/lib/axios.js","webpack:///./~/axios/lib/cancel/CancelToken.js","webpack:///./~/axios/lib/core/Axios.js","webpack:///./~/axios/lib/core/InterceptorManager.js","webpack:///./~/axios/lib/core/dispatchRequest.js","webpack:///./~/axios/lib/core/enhanceError.js","webpack:///./~/axios/lib/core/settle.js","webpack:///./~/axios/lib/core/transformData.js","webpack:///./~/axios/lib/helpers/btoa.js","webpack:///./~/axios/lib/helpers/buildURL.js","webpack:///./~/axios/lib/helpers/combineURLs.js","webpack:///./~/axios/lib/helpers/cookies.js","webpack:///./~/axios/lib/helpers/isAbsoluteURL.js","webpack:///./~/axios/lib/helpers/isURLSameOrigin.js","webpack:///./~/axios/lib/helpers/normalizeHeaderName.js","webpack:///./~/axios/lib/helpers/parseHeaders.js","webpack:///./~/axios/lib/helpers/spread.js","webpack:///app/common/actions/ReportAction.js","webpack:///app/common/actions/TestAction.js","webpack:///app/common/components/AboutComponents/AboutUs.jsx","webpack:///app/common/components/AboutComponents/CancelAccount.jsx","webpack:///app/common/components/AboutComponents/ChangeNotes.jsx","webpack:///app/common/components/AboutComponents/Contents/AboutUsContents.jsx","webpack:///app/common/components/AboutComponents/Contents/CancelAccountContents.jsx","webpack:///app/common/components/AboutComponents/Contents/ChangeNotesContents.jsx","webpack:///app/common/components/AboutComponents/Contents/FAQContents.jsx","webpack:///app/common/components/AboutComponents/Contents/PrivacyPolicyContents.jsx","webpack:///app/common/components/AboutComponents/FAQ.jsx","webpack:///app/common/components/AboutComponents/PrivacyPolicy.jsx","webpack:///app/common/components/AboutComponents/TermsOfUse.jsx","webpack:///app/common/components/AppBanner/AppBanner.jsx","webpack:///app/common/components/Card/Card.jsx","webpack:///app/common/components/Cart/Cart.jsx","webpack:///app/common/components/ExistingAccount/ExistingAccount.jsx","webpack:///app/common/components/FeeCard/FeeCard.jsx","webpack:///app/common/components/FeeInfo/FeeInfo.jsx","webpack:///app/common/components/FocusRover/FocusRover.js","webpack:///app/common/components/MobileLogin/MobileLogin.jsx","webpack:///app/common/components/Modals/ACHValidation/ACHValidation.jsx","webpack:///app/common/components/Modals/AreYouSure/AreYouSure.jsx","webpack:///app/common/components/Modals/CartConfirmation/CartConfirmation.jsx","webpack:///app/common/components/Modals/CheckValidation/CheckValidation.jsx","webpack:///app/common/components/Modals/Confirmation/Confirmation.jsx","webpack:///app/common/components/Modals/CoppaValidation/CoppaValidation.jsx","webpack:///app/common/components/Modals/Deposit/Deposit.jsx","webpack:///app/common/components/Modals/District/District.jsx","webpack:///app/common/components/Modals/MasterOption/MasterOption.jsx","webpack:///app/common/components/Modals/PaymentMethodConfirmation/PaymentMethodConfirmation.jsx","webpack:///app/common/components/Modals/SchPause/SchPause.jsx","webpack:///app/common/components/Modals/SignOut/SignOut.jsx","webpack:///app/common/components/Modals/Warning/Warning.jsx","webpack:///app/common/components/NavLink/NavLink.jsx","webpack:///app/common/components/NewAccount/NewAccount.jsx","webpack:///app/common/components/NewPayment/NewPayment.jsx","webpack:///app/common/components/NotificationDebug/NotificationDebug.jsx","webpack:///app/common/constants/ErrorCodes.js","webpack:///app/common/constants/TestConstants.js","webpack:///app/common/js/ActionableError.js","webpack:///app/common/js/GeneralErrorHandler.js","webpack:///app/common/js/MobileAppData.js","webpack:///app/common/js/PushHandler.js","webpack:///app/common/js/ValidationErrorHandler.js","webpack:///app/common/reducers/AboutReducer.js","webpack:///app/common/reducers/AuthReducer.js","webpack:///app/common/reducers/CartReducer.js","webpack:///app/common/reducers/ErrorReducer.js","webpack:///app/common/reducers/PatronsReducer.js","webpack:///app/common/reducers/RememberReducer.js","webpack:///app/common/reducers/ReportReducer.js","webpack:///app/common/reducers/SubReducer.js","webpack:///app/common/reducers/TransReducer.js","webpack:///app/common/reducers/UserReducer.js","webpack:///app/common/routes/AboutUs/AboutUs.jsx","webpack:///app/common/routes/Accounts/Accounts.jsx","webpack:///app/common/routes/Forgot/Forgot.jsx","webpack:///app/common/routes/Privacy/Privacy.jsx","webpack:///app/common/routes/PublicAboutUs/PublicAboutUs.jsx","webpack:///app/common/routes/Receipts/Receipts.jsx","webpack:///app/common/routes/Register/Register.jsx","webpack:///app/common/routes/Reports/Reports.jsx","webpack:///app/common/routes/Root/Root.jsx","webpack:///app/common/routes/Settings/Settings.jsx","webpack:///app/common/routes/SignedOutSuccess/SignedOutSuccess.jsx","webpack:///app/common/routes/Support/Support.jsx","webpack:///app/common/routes/Terms/Terms.jsx","webpack:///app/parent/components/App/App.jsx","webpack:///app/parent/components/DesktopLogin/DesktopLogin.jsx","webpack:///app/parent/components/MenuAlert/MenuAlert.jsx","webpack:///app/parent/components/Subscriptions/ScheduleSentence.jsx","webpack:///app/parent/components/Subscriptions/SubscriptionAccountItem.jsx","webpack:///app/parent/components/Subscriptions/SubscriptionAccounts.jsx","webpack:///app/parent/components/Subscriptions/SubscriptionCard.jsx","webpack:///app/parent/components/Subscriptions/SubscriptionConfirmation.jsx","webpack:///app/parent/components/Subscriptions/SubscriptionScheduler.jsx","webpack:///app/parent/components/Subscriptions/Subscriptions.jsx","webpack:///app/parent/routes/Dashboard/Dashboard.jsx","webpack:///app/parent/routes/Fees/Fees.jsx","webpack:///app/parent/routes/Login/Login.jsx","webpack:///app/parent/routes/ScheduleDeposit/ScheduleDeposit.jsx","webpack:///./~/babel-polyfill/lib/index.js","webpack:///./~/babel-polyfill/~/regenerator-runtime/runtime.js","webpack:///./~/core-js/fn/regexp/escape.js","webpack:///./~/core-js/modules/_array-species-constructor.js","webpack:///./~/core-js/modules/_date-to-iso-string.js","webpack:///./~/core-js/modules/_date-to-primitive.js","webpack:///./~/core-js/modules/_enum-keys.js","webpack:///./~/core-js/modules/_function-to-string.js","webpack:///./~/core-js/modules/_replacer.js","webpack:///./~/core-js/modules/core.regexp.escape.js","webpack:///./~/core-js/modules/es6.array.copy-within.js","webpack:///./~/core-js/modules/es6.array.every.js","webpack:///./~/core-js/modules/es6.array.fill.js","webpack:///./~/core-js/modules/es6.array.filter.js","webpack:///./~/core-js/modules/es6.array.find-index.js","webpack:///./~/core-js/modules/es6.array.find.js","webpack:///./~/core-js/modules/es6.array.for-each.js","webpack:///./~/core-js/modules/es6.array.from.js","webpack:///./~/core-js/modules/es6.array.index-of.js","webpack:///./~/core-js/modules/es6.array.is-array.js","webpack:///./~/core-js/modules/es6.array.join.js","webpack:///./~/core-js/modules/es6.array.last-index-of.js","webpack:///./~/core-js/modules/es6.array.map.js","webpack:///./~/core-js/modules/es6.array.of.js","webpack:///./~/core-js/modules/es6.array.reduce-right.js","webpack:///./~/core-js/modules/es6.array.reduce.js","webpack:///./~/core-js/modules/es6.array.slice.js","webpack:///./~/core-js/modules/es6.array.some.js","webpack:///./~/core-js/modules/es6.array.sort.js","webpack:///./~/core-js/modules/es6.array.species.js","webpack:///./~/core-js/modules/es6.date.now.js","webpack:///./~/core-js/modules/es6.date.to-iso-string.js","webpack:///./~/core-js/modules/es6.date.to-json.js","webpack:///./~/core-js/modules/es6.date.to-primitive.js","webpack:///./~/core-js/modules/es6.date.to-string.js","webpack:///./~/core-js/modules/es6.function.bind.js","webpack:///./~/core-js/modules/es6.function.has-instance.js","webpack:///./~/core-js/modules/es6.function.name.js","webpack:///./~/core-js/modules/es6.math.acosh.js","webpack:///./~/core-js/modules/es6.math.asinh.js","webpack:///./~/core-js/modules/es6.math.atanh.js","webpack:///./~/core-js/modules/es6.math.cbrt.js","webpack:///./~/core-js/modules/es6.math.clz32.js","webpack:///./~/core-js/modules/es6.math.cosh.js","webpack:///./~/core-js/modules/es6.math.expm1.js","webpack:///./~/core-js/modules/es6.math.fround.js","webpack:///./~/core-js/modules/es6.math.hypot.js","webpack:///./~/core-js/modules/es6.math.imul.js","webpack:///./~/core-js/modules/es6.math.log10.js","webpack:///./~/core-js/modules/es6.math.log1p.js","webpack:///./~/core-js/modules/es6.math.log2.js","webpack:///./~/core-js/modules/es6.math.sign.js","webpack:///./~/core-js/modules/es6.math.sinh.js","webpack:///./~/core-js/modules/es6.math.tanh.js","webpack:///./~/core-js/modules/es6.math.trunc.js","webpack:///./~/core-js/modules/es6.number.constructor.js","webpack:///./~/core-js/modules/es6.number.epsilon.js","webpack:///./~/core-js/modules/es6.number.is-finite.js","webpack:///./~/core-js/modules/es6.number.is-integer.js","webpack:///./~/core-js/modules/es6.number.is-nan.js","webpack:///./~/core-js/modules/es6.number.is-safe-integer.js","webpack:///./~/core-js/modules/es6.number.max-safe-integer.js","webpack:///./~/core-js/modules/es6.number.min-safe-integer.js","webpack:///./~/core-js/modules/es6.number.parse-float.js","webpack:///./~/core-js/modules/es6.number.parse-int.js","webpack:///./~/core-js/modules/es6.number.to-fixed.js","webpack:///./~/core-js/modules/es6.number.to-precision.js","webpack:///./~/core-js/modules/es6.object.assign.js","webpack:///./~/core-js/modules/es6.object.create.js","webpack:///./~/core-js/modules/es6.object.define-properties.js","webpack:///./~/core-js/modules/es6.object.define-property.js","webpack:///./~/core-js/modules/es6.object.freeze.js","webpack:///./~/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///./~/core-js/modules/es6.object.get-own-property-names.js","webpack:///./~/core-js/modules/es6.object.get-prototype-of.js","webpack:///./~/core-js/modules/es6.object.is-extensible.js","webpack:///./~/core-js/modules/es6.object.is-frozen.js","webpack:///./~/core-js/modules/es6.object.is-sealed.js","webpack:///./~/core-js/modules/es6.object.is.js","webpack:///./~/core-js/modules/es6.object.keys.js","webpack:///./~/core-js/modules/es6.object.prevent-extensions.js","webpack:///./~/core-js/modules/es6.object.seal.js","webpack:///./~/core-js/modules/es6.object.set-prototype-of.js","webpack:///./~/core-js/modules/es6.object.to-string.js","webpack:///./~/core-js/modules/es6.parse-float.js","webpack:///./~/core-js/modules/es6.parse-int.js","webpack:///./~/core-js/modules/es6.promise.js","webpack:///./~/core-js/modules/es6.reflect.apply.js","webpack:///./~/core-js/modules/es6.reflect.construct.js","webpack:///./~/core-js/modules/es6.reflect.define-property.js","webpack:///./~/core-js/modules/es6.reflect.delete-property.js","webpack:///./~/core-js/modules/es6.reflect.enumerate.js","webpack:///./~/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///./~/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///./~/core-js/modules/es6.reflect.get.js","webpack:///./~/core-js/modules/es6.reflect.has.js","webpack:///./~/core-js/modules/es6.reflect.is-extensible.js","webpack:///./~/core-js/modules/es6.reflect.own-keys.js","webpack:///./~/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///./~/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///./~/core-js/modules/es6.reflect.set.js","webpack:///./~/core-js/modules/es6.regexp.constructor.js","webpack:///./~/core-js/modules/es6.regexp.match.js","webpack:///./~/core-js/modules/es6.regexp.replace.js","webpack:///./~/core-js/modules/es6.regexp.search.js","webpack:///./~/core-js/modules/es6.regexp.split.js","webpack:///./~/core-js/modules/es6.regexp.to-string.js","webpack:///./~/core-js/modules/es6.string.anchor.js","webpack:///./~/core-js/modules/es6.string.big.js","webpack:///./~/core-js/modules/es6.string.blink.js","webpack:///./~/core-js/modules/es6.string.bold.js","webpack:///./~/core-js/modules/es6.string.code-point-at.js","webpack:///./~/core-js/modules/es6.string.ends-with.js","webpack:///./~/core-js/modules/es6.string.fixed.js","webpack:///./~/core-js/modules/es6.string.fontcolor.js","webpack:///./~/core-js/modules/es6.string.fontsize.js","webpack:///./~/core-js/modules/es6.string.from-code-point.js","webpack:///./~/core-js/modules/es6.string.includes.js","webpack:///./~/core-js/modules/es6.string.italics.js","webpack:///./~/core-js/modules/es6.string.iterator.js","webpack:///./~/core-js/modules/es6.string.link.js","webpack:///./~/core-js/modules/es6.string.raw.js","webpack:///./~/core-js/modules/es6.string.repeat.js","webpack:///./~/core-js/modules/es6.string.small.js","webpack:///./~/core-js/modules/es6.string.starts-with.js","webpack:///./~/core-js/modules/es6.string.strike.js","webpack:///./~/core-js/modules/es6.string.sub.js","webpack:///./~/core-js/modules/es6.string.sup.js","webpack:///./~/core-js/modules/es6.string.trim.js","webpack:///./~/core-js/modules/es6.symbol.js","webpack:///./~/core-js/modules/es6.typed.array-buffer.js","webpack:///./~/core-js/modules/es6.typed.data-view.js","webpack:///./~/core-js/modules/es6.typed.float32-array.js","webpack:///./~/core-js/modules/es6.typed.float64-array.js","webpack:///./~/core-js/modules/es6.typed.int16-array.js","webpack:///./~/core-js/modules/es6.typed.int32-array.js","webpack:///./~/core-js/modules/es6.typed.int8-array.js","webpack:///./~/core-js/modules/es6.typed.uint16-array.js","webpack:///./~/core-js/modules/es6.typed.uint32-array.js","webpack:///./~/core-js/modules/es6.typed.uint8-array.js","webpack:///./~/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///./~/core-js/modules/es6.weak-set.js","webpack:///./~/core-js/modules/es7.array.flat-map.js","webpack:///./~/core-js/modules/es7.array.flatten.js","webpack:///./~/core-js/modules/es7.array.includes.js","webpack:///./~/core-js/modules/es7.asap.js","webpack:///./~/core-js/modules/es7.error.is-error.js","webpack:///./~/core-js/modules/es7.global.js","webpack:///./~/core-js/modules/es7.map.from.js","webpack:///./~/core-js/modules/es7.map.of.js","webpack:///./~/core-js/modules/es7.map.to-json.js","webpack:///./~/core-js/modules/es7.math.clamp.js","webpack:///./~/core-js/modules/es7.math.deg-per-rad.js","webpack:///./~/core-js/modules/es7.math.degrees.js","webpack:///./~/core-js/modules/es7.math.fscale.js","webpack:///./~/core-js/modules/es7.math.iaddh.js","webpack:///./~/core-js/modules/es7.math.imulh.js","webpack:///./~/core-js/modules/es7.math.isubh.js","webpack:///./~/core-js/modules/es7.math.rad-per-deg.js","webpack:///./~/core-js/modules/es7.math.radians.js","webpack:///./~/core-js/modules/es7.math.scale.js","webpack:///./~/core-js/modules/es7.math.signbit.js","webpack:///./~/core-js/modules/es7.math.umulh.js","webpack:///./~/core-js/modules/es7.object.define-getter.js","webpack:///./~/core-js/modules/es7.object.define-setter.js","webpack:///./~/core-js/modules/es7.object.entries.js","webpack:///./~/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///./~/core-js/modules/es7.object.lookup-getter.js","webpack:///./~/core-js/modules/es7.object.lookup-setter.js","webpack:///./~/core-js/modules/es7.object.values.js","webpack:///./~/core-js/modules/es7.observable.js","webpack:///./~/core-js/modules/es7.promise.finally.js","webpack:///./~/core-js/modules/es7.promise.try.js","webpack:///./~/core-js/modules/es7.reflect.define-metadata.js","webpack:///./~/core-js/modules/es7.reflect.delete-metadata.js","webpack:///./~/core-js/modules/es7.reflect.get-metadata-keys.js","webpack:///./~/core-js/modules/es7.reflect.get-metadata.js","webpack:///./~/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack:///./~/core-js/modules/es7.reflect.get-own-metadata.js","webpack:///./~/core-js/modules/es7.reflect.has-metadata.js","webpack:///./~/core-js/modules/es7.reflect.has-own-metadata.js","webpack:///./~/core-js/modules/es7.reflect.metadata.js","webpack:///./~/core-js/modules/es7.set.from.js","webpack:///./~/core-js/modules/es7.set.of.js","webpack:///./~/core-js/modules/es7.set.to-json.js","webpack:///./~/core-js/modules/es7.string.at.js","webpack:///./~/core-js/modules/es7.string.match-all.js","webpack:///./~/core-js/modules/es7.string.pad-end.js","webpack:///./~/core-js/modules/es7.string.pad-start.js","webpack:///./~/core-js/modules/es7.string.trim-left.js","webpack:///./~/core-js/modules/es7.string.trim-right.js","webpack:///./~/core-js/modules/es7.symbol.async-iterator.js","webpack:///./~/core-js/modules/es7.symbol.observable.js","webpack:///./~/core-js/modules/es7.system.global.js","webpack:///./~/core-js/modules/es7.weak-map.from.js","webpack:///./~/core-js/modules/es7.weak-map.of.js","webpack:///./~/core-js/modules/es7.weak-set.from.js","webpack:///./~/core-js/modules/es7.weak-set.of.js","webpack:///./~/core-js/modules/web.dom.iterable.js","webpack:///./~/core-js/modules/web.immediate.js","webpack:///./~/core-js/modules/web.timers.js","webpack:///./~/core-js/shim.js","webpack:///./~/crypto-js/aes.js","webpack:///./~/crypto-js/enc-utf16.js","webpack:///./~/crypto-js/format-hex.js","webpack:///./~/crypto-js/index.js","webpack:///./~/crypto-js/lib-typedarrays.js","webpack:///./~/crypto-js/mode-cfb.js","webpack:///./~/crypto-js/mode-ctr-gladman.js","webpack:///./~/crypto-js/mode-ctr.js","webpack:///./~/crypto-js/mode-ecb.js","webpack:///./~/crypto-js/mode-ofb.js","webpack:///./~/crypto-js/pad-ansix923.js","webpack:///./~/crypto-js/pad-iso10126.js","webpack:///./~/crypto-js/pad-iso97971.js","webpack:///./~/crypto-js/pad-nopadding.js","webpack:///./~/crypto-js/pad-zeropadding.js","webpack:///./~/crypto-js/pbkdf2.js","webpack:///./~/crypto-js/rabbit-legacy.js","webpack:///./~/crypto-js/rabbit.js","webpack:///./~/crypto-js/rc4.js","webpack:///./~/crypto-js/ripemd160.js","webpack:///./~/crypto-js/sha224.js","webpack:///./~/crypto-js/sha3.js","webpack:///./~/crypto-js/sha384.js","webpack:///./~/crypto-js/tripledes.js","webpack:///./~/d/index.js","webpack:///./~/deep-diff/index.js","webpack:///./~/es5-ext/function/noop.js","webpack:///./~/es5-ext/object/assign/index.js","webpack:///./~/es5-ext/object/assign/is-implemented.js","webpack:///./~/es5-ext/object/assign/shim.js","webpack:///./~/es5-ext/object/keys/index.js","webpack:///./~/es5-ext/object/keys/is-implemented.js","webpack:///./~/es5-ext/object/keys/shim.js","webpack:///./~/es5-ext/object/normalize-options.js","webpack:///./~/es5-ext/object/valid-callable.js","webpack:///./~/es5-ext/object/valid-value.js","webpack:///./~/es5-ext/string/#/contains/index.js","webpack:///./~/es5-ext/string/#/contains/is-implemented.js","webpack:///./~/es5-ext/string/#/contains/shim.js","webpack:///./~/event-emitter/index.js","webpack:///./app/common/components/AboutComponents/AboutComponents.scss","webpack:///./app/common/components/AccountInfo/AccountInfo.scss","webpack:///./app/common/components/AddStudent/AddStudent.scss","webpack:///./app/common/components/Alert/Alert.scss","webpack:///./app/common/components/AppBanner/AppBanner.scss","webpack:///./app/common/components/Card/Card.scss","webpack:///./app/common/components/Cart/Cart.scss","webpack:///./app/common/components/ExistingAccount/ExistingAccount.scss","webpack:///./app/common/components/ExistingPayment/ExistingPayment.scss","webpack:///./app/common/components/FeeCard/FeeCard.scss","webpack:///./app/common/components/FeeInfo/FeeInfo.scss","webpack:///./app/common/components/ForgotPassword/ForgotPassword.scss","webpack:///./app/common/components/ForgotUsername/ForgotUsername.scss","webpack:///./app/common/components/Header/Header.scss","webpack:///./app/common/components/LeftCol/LeftCol.scss","webpack:///./app/common/components/Loader/Loader.scss","webpack:///./app/common/components/MobileLogin/MobileLogin.scss","webpack:///./app/common/components/Modals/ACHValidation/ACHValidation.scss","webpack:///./app/common/components/Modals/AreYouSure/AreYouSure.scss","webpack:///./app/common/components/Modals/CheckValidation/CheckValidation.scss","webpack:///./app/common/components/Modals/Confirmation/Confirmation.scss","webpack:///./app/common/components/Modals/CoppaValidation/CoppaValidation.scss","webpack:///./app/common/components/Modals/Deposit/Deposit.scss","webpack:///./app/common/components/Modals/District/District.scss","webpack:///./app/common/components/Modals/Error/Error.scss","webpack:///./app/common/components/Modals/MasterOption/MasterOption.scss","webpack:///./app/common/components/Modals/Modal/Modal.scss","webpack:///./app/common/components/Modals/Reauth/Reauth.scss","webpack:///./app/common/components/Modals/SchPause/SchPause.scss","webpack:///./app/common/components/Modals/Warning/Warning.scss","webpack:///./app/common/components/NavLink/NavLink.scss","webpack:///./app/common/components/NewPayment/NewPayment.scss","webpack:///./app/common/components/PaymentInfo/PaymentInfo.scss","webpack:///./app/common/components/Receipt/Receipt.scss","webpack:///./app/common/components/RightCol/RightCol.scss","webpack:///./app/common/components/SinglePage/SinglePage.scss","webpack:///./app/common/components/StudentInfo/StudentInfo.scss","webpack:///./app/common/components/SubSetting/SubSetting.scss","webpack:///./app/common/components/ToggleLoader/ToggleLoader.scss","webpack:///./app/common/components/Toggle/Toggle.scss","webpack:///./app/common/components/ToolTip/ToolTip.scss","webpack:///./app/common/components/UserInfo/UserInfo.scss","webpack:///./app/common/routes/Accounts/Accounts.scss","webpack:///./app/common/routes/Forgot/Forgot.scss","webpack:///./app/common/routes/PublicAboutUs/PublicAboutUS.scss","webpack:///./app/common/routes/Receipts/Receipts.scss","webpack:///./app/common/routes/Register/Register.scss","webpack:///./app/common/routes/Reports/Reports.scss","webpack:///./app/common/routes/Settings/Settings.scss","webpack:///./app/common/routes/SignedOutSuccess/SignedOutSuccess.scss","webpack:///./app/common/routes/Support/Support.scss","webpack:///./app/common/routes/Terms/Terms.scss","webpack:///./app/common/scss/animations.scss","webpack:///./app/common/scss/index.scss","webpack:///./app/common/scss/text-scale.scss","webpack:///./app/common/scss/themes.scss","webpack:///./app/parent/components/App/App.scss","webpack:///./app/parent/components/DesktopLogin/DesktopLogin.scss","webpack:///./app/parent/components/MenuAlert/MenuAlert.scss","webpack:///./app/parent/components/Subscriptions/Subscriptions_alpha.scss","webpack:///./app/parent/routes/Dashboard/Dashboard.scss","webpack:///./app/parent/routes/Fees/Fees.scss","webpack:///./app/parent/routes/Login/Login.scss","webpack:///./app/parent/routes/ScheduleDeposit/ScheduleDeposit.scss","webpack:///./~/fbjs/lib/camelize.js","webpack:///./~/fbjs/lib/camelizeStyleName.js","webpack:///./~/fbjs/lib/containsNode.js","webpack:///./~/fbjs/lib/createArrayFromMixed.js","webpack:///./~/fbjs/lib/createNodesFromMarkup.js","webpack:///./~/fbjs/lib/getMarkupWrap.js","webpack:///./~/fbjs/lib/getUnboundedScrollPosition.js","webpack:///./~/fbjs/lib/hyphenate.js","webpack:///./~/fbjs/lib/hyphenateStyleName.js","webpack:///./~/fbjs/lib/isNode.js","webpack:///./~/fbjs/lib/isTextNode.js","webpack:///./~/fbjs/lib/memoizeStringOnly.js","webpack:///./~/focus-trap/index.js","webpack:///./~/history/lib/AsyncUtils.js","webpack:///./~/history/lib/HashProtocol.js","webpack:///./~/history/lib/RefreshProtocol.js","webpack:///./~/history/lib/index.js","webpack:///./~/history/lib/useBeforeUnload.js","webpack:///./~/is-plain-object/index.js","webpack:///./~/is-retry-allowed/index.js","webpack:///./~/isobject/index.js","webpack:///./app/common/components/Modals/CoppaValidation/months.json","webpack:///./app/common/constants/ActionableErrors.json","webpack:///./app/common/constants/ChangeNotes.json","webpack:///./app/common/constants/States.json","webpack:///./~/json-stringify-safe/stringify.js","webpack:///./~/lodash-es/_baseGetTag.js","webpack:///./~/lodash-es/_freeGlobal.js","webpack:///./~/lodash-es/_getPrototype.js","webpack:///./~/lodash-es/_getRawTag.js","webpack:///./~/lodash-es/_objectToString.js","webpack:///./~/lodash-es/_overArg.js","webpack:///./~/lodash-es/_root.js","webpack:///./~/lodash-es/isObjectLike.js","webpack:///./~/prop-types/checkPropTypes.js","webpack:///./~/prop-types/factory.js","webpack:///./~/prop-types/factoryWithThrowingShims.js","webpack:///./~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/prop-types/lib/has.js","webpack:///./~/query-string/index.js","webpack:///./~/react-animate-on-change/dist/index.js","webpack:///./~/react-autosuggest/dist/Autosuggest.js","webpack:///./~/react-autosuggest/dist/AutosuggestContainer.js","webpack:///./~/react-autosuggest/dist/index.js","webpack:///./~/react-autowhatever/dist/Autowhatever.js","webpack:///./~/react-autowhatever/dist/Item.js","webpack:///./~/react-autowhatever/dist/ItemsList.js","webpack:///./~/react-autowhatever/dist/SectionTitle.js","webpack:///./~/react-autowhatever/dist/index.js","webpack:///./~/react-dom/index.js","webpack:///./~/react-dom/lib/ARIADOMPropertyConfig.js","webpack:///./~/react-dom/lib/AutoFocusUtils.js","webpack:///./~/react-dom/lib/BeforeInputEventPlugin.js","webpack:///./~/react-dom/lib/CSSPropertyOperations.js","webpack:///./~/react-dom/lib/ChangeEventPlugin.js","webpack:///./~/react-dom/lib/Danger.js","webpack:///./~/react-dom/lib/DefaultEventPluginOrder.js","webpack:///./~/react-dom/lib/EnterLeaveEventPlugin.js","webpack:///./~/react-dom/lib/FallbackCompositionState.js","webpack:///./~/react-dom/lib/HTMLDOMPropertyConfig.js","webpack:///./~/react-dom/lib/ReactChildReconciler.js","webpack:///./~/react-dom/lib/ReactComponentBrowserEnvironment.js","webpack:///./~/react-dom/lib/ReactCompositeComponent.js","webpack:///./~/react-dom/lib/ReactDOM.js","webpack:///./~/react-dom/lib/ReactDOMComponent.js","webpack:///./~/react-dom/lib/ReactDOMContainerInfo.js","webpack:///./~/react-dom/lib/ReactDOMEmptyComponent.js","webpack:///./~/react-dom/lib/ReactDOMFeatureFlags.js","webpack:///./~/react-dom/lib/ReactDOMIDOperations.js","webpack:///./~/react-dom/lib/ReactDOMInput.js","webpack:///./~/react-dom/lib/ReactDOMOption.js","webpack:///./~/react-dom/lib/ReactDOMSelection.js","webpack:///./~/react-dom/lib/ReactDOMTextComponent.js","webpack:///./~/react-dom/lib/ReactDOMTextarea.js","webpack:///./~/react-dom/lib/ReactDOMTreeTraversal.js","webpack:///./~/react-dom/lib/ReactDefaultBatchingStrategy.js","webpack:///./~/react-dom/lib/ReactDefaultInjection.js","webpack:///./~/react-dom/lib/ReactElementSymbol.js","webpack:///./~/react-dom/lib/ReactEventEmitterMixin.js","webpack:///./~/react-dom/lib/ReactEventListener.js","webpack:///./~/react-dom/lib/ReactInjection.js","webpack:///./~/react-dom/lib/ReactMarkupChecksum.js","webpack:///./~/react-dom/lib/ReactMultiChild.js","webpack:///./~/react-dom/lib/ReactOwner.js","webpack:///./~/react-dom/lib/ReactPropTypesSecret.js","webpack:///./~/react-dom/lib/ReactReconcileTransaction.js","webpack:///./~/react-dom/lib/ReactRef.js","webpack:///./~/react-dom/lib/ReactServerRenderingTransaction.js","webpack:///./~/react-dom/lib/ReactServerUpdateQueue.js","webpack:///./~/react-dom/lib/ReactVersion.js","webpack:///./~/react-dom/lib/SVGDOMPropertyConfig.js","webpack:///./~/react-dom/lib/SelectEventPlugin.js","webpack:///./~/react-dom/lib/SimpleEventPlugin.js","webpack:///./~/react-dom/lib/SyntheticAnimationEvent.js","webpack:///./~/react-dom/lib/SyntheticClipboardEvent.js","webpack:///./~/react-dom/lib/SyntheticCompositionEvent.js","webpack:///./~/react-dom/lib/SyntheticDragEvent.js","webpack:///./~/react-dom/lib/SyntheticFocusEvent.js","webpack:///./~/react-dom/lib/SyntheticInputEvent.js","webpack:///./~/react-dom/lib/SyntheticKeyboardEvent.js","webpack:///./~/react-dom/lib/SyntheticTouchEvent.js","webpack:///./~/react-dom/lib/SyntheticTransitionEvent.js","webpack:///./~/react-dom/lib/SyntheticWheelEvent.js","webpack:///./~/react-dom/lib/adler32.js","webpack:///./~/react-dom/lib/dangerousStyleValue.js","webpack:///./~/react-dom/lib/findDOMNode.js","webpack:///./~/react-dom/lib/flattenChildren.js","webpack:///./~/react-dom/lib/getEventKey.js","webpack:///./~/react-dom/lib/getIteratorFn.js","webpack:///./~/react-dom/lib/getNodeForCharacterOffset.js","webpack:///./~/react-dom/lib/getVendorPrefixedEventName.js","webpack:///./~/react-dom/lib/quoteAttributeValueForBrowser.js","webpack:///./~/react-dom/lib/renderSubtreeIntoContainer.js","webpack:///./~/react-dom/~/prop-types/checkPropTypes.js","webpack:///./~/react-dom/~/prop-types/factory.js","webpack:///./~/react-dom/~/prop-types/factoryWithTypeCheckers.js","webpack:///./~/react-dom/~/prop-types/lib/ReactPropTypesSecret.js","webpack:///./~/react-ga4/dist/format.js","webpack:///./~/react-ga4/dist/ga4.js","webpack:///./~/react-ga4/dist/gtag.js","webpack:///./~/react-ga4/dist/index.js","webpack:///./~/react-is/cjs/react-is.production.min.js","webpack:///./~/react-pullrefresh/lib/component/index.js","webpack:///./~/react-pullrefresh/lib/index.js","webpack:///./~/react-pullrefresh/lib/spring.js","webpack:///./~/react-redux/es/components/Provider.js","webpack:///./~/react-redux/es/connect/connect.js","webpack:///./~/react-redux/es/connect/mapDispatchToProps.js","webpack:///./~/react-redux/es/connect/mapStateToProps.js","webpack:///./~/react-redux/es/connect/mergeProps.js","webpack:///./~/react-redux/es/connect/selectorFactory.js","webpack:///./~/react-redux/es/connect/verifySubselectors.js","webpack:///./~/react-redux/es/utils/Subscription.js","webpack:///./~/react-redux/es/utils/isPlainObject.js","webpack:///./~/react-redux/es/utils/shallowEqual.js","webpack:///./~/react-router/es/IndexLink.js","webpack:///./~/react-router/es/IndexRedirect.js","webpack:///./~/react-router/es/IndexRoute.js","webpack:///./~/react-router/es/Route.js","webpack:///./~/react-router/es/Router.js","webpack:///./~/react-router/es/TransitionUtils.js","webpack:///./~/react-router/es/applyRouterMiddleware.js","webpack:///./~/react-router/es/browserHistory.js","webpack:///./~/react-router/es/computeChangedRoutes.js","webpack:///./~/react-router/es/getComponents.js","webpack:///./~/react-router/es/getRouteParams.js","webpack:///./~/react-router/es/hashHistory.js","webpack:///./~/react-router/es/isActive.js","webpack:///./~/react-router/es/match.js","webpack:///./~/react-router/es/matchRoutes.js","webpack:///./~/react-router/es/withRouter.js","webpack:///./~/react-swipeable/lib/Swipeable.js","webpack:///./~/react-themeable/dist/index.js","webpack:///./~/react-themeable/~/object-assign/index.js","webpack:///./~/react/lib/KeyEscapeUtils.js","webpack:///./~/react/lib/PooledClass.js","webpack:///./~/react/lib/ReactChildren.js","webpack:///./~/react/lib/ReactDOMFactories.js","webpack:///./~/react/lib/ReactPropTypes.js","webpack:///./~/react/lib/ReactVersion.js","webpack:///./~/react/lib/createClass.js","webpack:///./~/react/lib/getIteratorFn.js","webpack:///./~/react/lib/getNextDebugID.js","webpack:///./~/react/lib/lowPriorityWarning.js","webpack:///./~/react/lib/onlyChild.js","webpack:///./~/react/lib/traverseAllChildren.js","webpack:///./~/redux-logger/lib/core.js","webpack:///./~/redux-logger/lib/defaults.js","webpack:///./~/redux-logger/lib/diff.js","webpack:///./~/redux-logger/lib/index.js","webpack:///./~/redux-persist/es/autoRehydrate.js","webpack:///./~/redux-persist/es/createTransform.js","webpack:///./~/redux-persist/es/index.js","webpack:///./~/redux-persist/es/persistStore.js","webpack:///./~/redux-persist/es/utils/isStatePlainEnough.js","webpack:///./~/redux-thunk/es/index.js","webpack:///./~/redux/es/applyMiddleware.js","webpack:///./~/redux/es/bindActionCreators.js","webpack:///./~/redux/es/combineReducers.js","webpack:///./~/section-iterator/dist/index.js","webpack:///./~/shallow-equal/arrays/index.js","webpack:///./~/strict-uri-encode/index.js","webpack:///./~/styled-components/dist/styled-components.es.js","webpack:///./~/styled-components/~/hoist-non-react-statics/index.js","webpack:///./~/stylis/stylis.js","webpack:///./~/symbol-observable/es/index.js","webpack:///./~/symbol-observable/es/ponyfill.js","webpack:///./~/tabbable/index.js","webpack:///./~/type/function/is.js","webpack:///./~/type/object/is.js","webpack:///./~/type/plain-function/is.js","webpack:///./~/type/prototype/is.js","webpack:///./~/underscore/modules/_hasObjectTag.js","webpack:///./~/underscore/modules/_isBufferLike.js","webpack:///./~/underscore/modules/_keyInObj.js","webpack:///./~/underscore/modules/_toBufferView.js","webpack:///./~/underscore/modules/_unescapeMap.js","webpack:///./~/underscore/modules/after.js","webpack:///./~/underscore/modules/bindAll.js","webpack:///./~/underscore/modules/chain.js","webpack:///./~/underscore/modules/chunk.js","webpack:///./~/underscore/modules/compact.js","webpack:///./~/underscore/modules/compose.js","webpack:///./~/underscore/modules/countBy.js","webpack:///./~/underscore/modules/create.js","webpack:///./~/underscore/modules/debounce.js","webpack:///./~/underscore/modules/defer.js","webpack:///./~/underscore/modules/escape.js","webpack:///./~/underscore/modules/every.js","webpack:///./~/underscore/modules/findWhere.js","webpack:///./~/underscore/modules/first.js","webpack:///./~/underscore/modules/flatten.js","webpack:///./~/underscore/modules/groupBy.js","webpack:///./~/underscore/modules/has.js","webpack:///./~/underscore/modules/index-default.js","webpack:///./~/underscore/modules/indexBy.js","webpack:///./~/underscore/modules/intersection.js","webpack:///./~/underscore/modules/invoke.js","webpack:///./~/underscore/modules/isDate.js","webpack:///./~/underscore/modules/isElement.js","webpack:///./~/underscore/modules/isEmpty.js","webpack:///./~/underscore/modules/isEqual.js","webpack:///./~/underscore/modules/isError.js","webpack:///./~/underscore/modules/isFinite.js","webpack:///./~/underscore/modules/isMap.js","webpack:///./~/underscore/modules/isNull.js","webpack:///./~/underscore/modules/isRegExp.js","webpack:///./~/underscore/modules/isSet.js","webpack:///./~/underscore/modules/isWeakMap.js","webpack:///./~/underscore/modules/isWeakSet.js","webpack:///./~/underscore/modules/last.js","webpack:///./~/underscore/modules/lastIndexOf.js","webpack:///./~/underscore/modules/mapObject.js","webpack:///./~/underscore/modules/memoize.js","webpack:///./~/underscore/modules/min.js","webpack:///./~/underscore/modules/mixin.js","webpack:///./~/underscore/modules/object.js","webpack:///./~/underscore/modules/omit.js","webpack:///./~/underscore/modules/once.js","webpack:///./~/underscore/modules/pairs.js","webpack:///./~/underscore/modules/partition.js","webpack:///./~/underscore/modules/propertyOf.js","webpack:///./~/underscore/modules/range.js","webpack:///./~/underscore/modules/reduce.js","webpack:///./~/underscore/modules/reduceRight.js","webpack:///./~/underscore/modules/reject.js","webpack:///./~/underscore/modules/result.js","webpack:///./~/underscore/modules/shuffle.js","webpack:///./~/underscore/modules/size.js","webpack:///./~/underscore/modules/some.js","webpack:///./~/underscore/modules/sortBy.js","webpack:///./~/underscore/modules/tap.js","webpack:///./~/underscore/modules/template.js","webpack:///./~/underscore/modules/throttle.js","webpack:///./~/underscore/modules/times.js","webpack:///./~/underscore/modules/toArray.js","webpack:///./~/underscore/modules/underscore-array-methods.js","webpack:///./~/underscore/modules/unescape.js","webpack:///./~/underscore/modules/union.js","webpack:///./~/underscore/modules/uniqueId.js","webpack:///./~/underscore/modules/where.js","webpack:///./~/underscore/modules/without.js","webpack:///./~/underscore/modules/wrap.js","webpack:///./~/underscore/modules/zip.js","webpack:///./~/uuid/lib/bytesToUuid.js","webpack:///./~/uuid/lib/rng-browser.js","webpack:///./~/uuid/v4.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1115);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap dbada6f6c3eb1457f973","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_export.js\n// module id = 0\n// module chunks = 0","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/react.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/prop-types/index.js\n// module id = 2\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_an-object.js\n// module id = 3\n// module chunks = 0","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/es/index.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 5\n// module chunks = 0","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_global.js\n// module id = 6\n// module chunks = 0",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/core.js\n// module id = 7\n// module chunks = 0","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_fails.js\n// module id = 8\n// module chunks = 0","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_is-object.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 10\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/reactProdInvariant.js\n// module id = 11\n// module chunks = 0","/* components */\nimport _Router from './Router';\nexport { _Router as Router };\nimport _Link from './Link';\nexport { _Link as Link };\nimport _IndexLink from './IndexLink';\nexport { _IndexLink as IndexLink };\nimport _withRouter from './withRouter';\nexport { _withRouter as withRouter };\n\n/* components (configuration) */\n\nimport _IndexRedirect from './IndexRedirect';\nexport { _IndexRedirect as IndexRedirect };\nimport _IndexRoute from './IndexRoute';\nexport { _IndexRoute as IndexRoute };\nimport _Redirect from './Redirect';\nexport { _Redirect as Redirect };\nimport _Route from './Route';\nexport { _Route as Route };\n\n/* utils */\n\nexport { createRoutes } from './RouteUtils';\nimport _RouterContext from './RouterContext';\nexport { _RouterContext as RouterContext };\n\nexport { locationShape, routerShape } from './PropTypes';\nimport _match from './match';\nexport { _match as match };\nimport _useRouterHistory from './useRouterHistory';\nexport { _useRouterHistory as useRouterHistory };\n\nexport { formatPattern } from './PatternUtils';\nimport _applyRouterMiddleware from './applyRouterMiddleware';\nexport { _applyRouterMiddleware as applyRouterMiddleware };\n\n/* histories */\n\nimport _browserHistory from './browserHistory';\nexport { _browserHistory as browserHistory };\nimport _hashHistory from './hashHistory';\nexport { _hashHistory as hashHistory };\nimport _createMemoryHistory from './createMemoryHistory';\nexport { _createMemoryHistory as createMemoryHistory };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/es/index.js\n// module id = 12\n// module chunks = 0","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_wks.js\n// module id = 13\n// module chunks = 0","import React from 'react';\r\n\r\nimport './Loader.scss';\r\n\r\nclass Loader extends React.Component {\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Loader;\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/components/Loader/Loader.jsx","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-length.js\n// module id = 15\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 16\n// module chunks = 0","// Current version.\nexport var VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_setup.js\n// module id = 17\n// module chunks = 0","import * as types from '../constants/ErrorConstants.js';\r\n\r\nexport function generalError(error, dispatch) {\r\n return {\r\n type: types.GENERAL_ERROR,\r\n payload: {\r\n error: error,\r\n dispatch: dispatch\r\n }\r\n };\r\n}\r\n\r\nexport function validationError(errors) {\r\n return {\r\n type: types.VALIDATION_ERROR,\r\n payload: errors\r\n };\r\n}\r\n\r\nexport function clearValidationErrors() {\r\n return {\r\n type: types.REMOVE_VAL_ERROR\r\n };\r\n}\r\n\r\nexport function clearSpecificValidation(type) {\r\n return {\r\n type: types.CLEAR_SPECIFIC_VAL,\r\n payload: type\r\n };\r\n}\r\n\r\nexport function clearGeneralError() {\r\n return {\r\n type: types.REMOVE_GEN_ERROR\r\n };\r\n}\r\n\r\nexport function clearAllErrors() {\r\n return {\r\n type: types.CLEAR_ERRORS\r\n };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/actions/ErrorAction.js","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_descriptors.js\n// module id = 19\n// module chunks = 0","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-dp.js\n// module id = 20\n// module chunks = 0","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-object.js\n// module id = 21\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Check if a given node should be cached.\n */\nfunction shouldPrecacheNode(node, nodeID) {\n return node.nodeType === 1 && node.getAttribute(ATTR_NAME) === String(nodeID) || node.nodeType === 8 && node.nodeValue === ' react-text: ' + nodeID + ' ' || node.nodeType === 8 && node.nodeValue === ' react-empty: ' + nodeID + ' ';\n}\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (shouldPrecacheNode(childNode, childID)) {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponentTree.js\n// module id = 22\n// module chunks = 0",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t var block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t var block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t var modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t var modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t var wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t var wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t var salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/cipher-core.js\n// module id = 23\n// module chunks = 0","module.exports = {\"version\":\"3.0.55.4\",\"buildDate\":\"10/16/2024\",\"env\":\"\"}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./app/version.json\n// module id = 24\n// module chunks = 0","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/keys.js\n// module id = 25\n// module chunks = 0","import axios from 'axios';\nimport axiosRetry from 'axios-retry';\nimport * as types from '../constants/CartConstants.js';\nimport {version} from '../../version.json';\n\naxiosRetry(axios, {retries: 3, retryCondition: error => {\n if (error.response.status === 500) return true;\n return false;\n}});\n\nconst currentTime = new Date();\n\nlet cartCall = axios.create({\n baseURL: APP_API + 'Deposit/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nexport function addToCart(item) {\n GA.event({\n category: 'Cart',\n action: 'Add',\n label: item.type,\n value: item.amount\n });\n return {\n type: types.ADD_CART,\n payload: item\n };\n}\n\nexport function removeFromCart(item) {\n GA.event({\n category: 'Cart',\n action: 'Remove',\n label: item.type,\n value: item.amount\n });\n return {\n type: types.REM_CART,\n payload: item\n };\n}\n\nexport function addMemo(memo) {\n return {\n type: types.ADD_MEMO,\n payload: memo\n };\n}\n\nexport function calculateFee(cartItems) {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.CALC_FEE});\n cartCall.post('/CalculateTotalUserFee', {\n depositDetails: _.map(cartItems, Utils.formatCartItem)\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(calculateFeeSuccess(response.data)); \n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(calculateFeeFailure());\n });\n };\n}\n\nfunction calculateFeeSuccess(fee) {\n return {\n type: types.CALC_FEE_SUCCESS,\n payload: fee\n };\n}\n\nfunction calculateFeeFailure() {\n return {\n type: types.CALC_FEE_FAILURE\n };\n}\n\nexport function validateFeeDeposit(item, appRouter, dispatch, memo) {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.VALIDATE_DEP_ITEM});\n cartCall.post('/ValidateDuplicatePatronDeposit', {\n checkingAccountID: item.checkingAccountID,\n subAccountID: item.subAccountID,\n patronDeposits: item.patronDeposits\n })\n .then(response => {\n if (response.status === 200) {\n let existingDeps = [];\n\n for(let data of response.data) {\n if(data.depositExists) {\n existingDeps.push(data);\n } else {\n let feeItem = _.findWhere(item.cartItems, {patronID: data.patronID});\n if(feeItem) dispatch(addToCart(feeItem));\n if(!_.isEmpty(memo.body)) dispatch(addMemo(memo));\n }\n }\n\n if(!_.isEmpty(existingDeps)) {\n let msgs = _.pluck(existingDeps, 'warningMessage');\n Utils.updateModal('warning', {\n modalTitle: 'Are You Sure?',\n msg: msgs,\n conTitle: 'Yes, Pay Again',\n cancelTitle: 'No, View Receipts',\n continueHandler: () => {\n for(let dep of existingDeps) {\n let feeItem = _.findWhere(item.cartItems, {patronID: dep.patronID});\n if(feeItem) dispatch(addToCart(feeItem));\n }\n\n if (!_.isEmpty(memo.body)) dispatch(addMemo(memo));\n\n Utils.updateModal('confirm', {\n msg: 'Successfully updated your cart!',\n timeout: 2000,\n styleClass: 'level1'\n });\n },\n cancelHandler: () => {\n appRouter.push('/receipts');\n $('.gen-modal').modal('hide');\n\n document.dispatchEvent(new CustomEvent('rove-focal-point', {\n detail: {\n focalPointID: 'dummy-app-body',\n checkpoint: {id: 'nav-link-viewreceipts'}\n }\n }));\n }\n });\n } else {\n Utils.updateModal('confirm', {\n msg: 'Successfully updated your cart!',\n timeout: 2000,\n styleClass: 'level1'\n });\n }\n dispatch(validatePatronDepositSuccess());\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(validatePatronDepositFailure());\n });\n };\n}\n\nexport function validatePatronDeposit(item, appRouter, dispatch, context) {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.VALIDATE_DEP_ITEM});\n cartCall.post('/ValidateDuplicatePatronDeposit', {\n checkingAccountID: item.checkingAccountID,\n subAccountID: item.subAccountID,\n patronDeposits: [{\n patronID: item.patronID,\n depositAmount: item.amount\n }]\n })\n .then(response => {\n if (response.status === 200) {\n for(let data of response.data) {\n if(data.depositExists) {\n Utils.updateModal('warning', {\n modalTitle: 'Are You Sure?',\n msg: [data.warningMessage],\n conTitle: 'Yes, Deposit Again',\n cancelTitle: 'No, View Receipts',\n continueHandler: () => {\n dispatch(addToCart(item));\n if(context === 'Go to Checkout') {\n Utils.updateModal('cart');\n } else {\n $('.gen-modal').modal('hide');\n }\n },\n cancelHandler: () => {\n appRouter.push('/receipts');\n $('.gen-modal').modal('hide');\n\n document.dispatchEvent(new CustomEvent('rove-focal-point', {\n detail: {\n focalPointID: 'dummy-app-body',\n checkpoint: {id: 'nav-link-viewreceipts'}\n }\n }));\n }\n });\n } else {\n dispatch(addToCart(item));\n if(context === 'Go to Checkout') {\n Utils.updateModal('cart');\n } else {\n $('.gen-modal').modal('hide');\n }\n }\n }\n dispatch(validatePatronDepositSuccess());\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(validatePatronDepositFailure());\n });\n };\n}\n\nfunction validatePatronDepositSuccess() {\n return {\n type: types.VALIDATE_DEP_ITEM_SUCCESS\n };\n}\n\nfunction validatePatronDepositFailure() {\n return {\n type: types.VALIDATE_DEP_ITEM_FAILURE\n };\n}\n\nexport function checkout(cartItems, memos, payMethod, appRouter) {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.CHECKOUT});\n let depositBody = {\n cartKey: Utils.getCartKey(),\n stripePaymentSourceID: null,\n stripeTokenID: null,\n depositDetails: _.map(cartItems, Utils.formatCartItem),\n depositMemos: _.map(memos, memo => {\n return {\n subAccountID: memo.id,\n body: memo.body\n };\n })\n };\n\n if (payMethod.startsWith('card_')) {\n // Stored card\n depositBody.stripePaymentSourceID = payMethod;\n } else if (payMethod.startsWith('tok_')) {\n // One time use card\n depositBody.stripeTokenID = payMethod;\n } else {\n // Whoops\n return dispatch(checkoutFailure());\n }\n\n cartCall.post('/AddDeposit', depositBody)\n .then(response => {\n if (response.status === 200) {\n dispatch(checkoutSuccess(response.data));\n dispatch(resetCart());\n dispatch(getReceipts());\n dispatch(getFeesPaid());\n Utils.vibrate(250);\n\n Utils.updateModal('confirm-tran', {\n msg: \"Your student's school will receive funds as soon as they synchronize. Your student's Cafeteria Account balance in My MealTime will reflect any new changes when the school confirms receipt of your payment later today.\",\n okTitle: 'View Receipt',\n cancelTitle: 'Dismiss',\n cancelable: true,\n clickHandler: () => {\n appRouter.push('/receipts');\n $('.gen-modal').modal('hide');\n\n document.dispatchEvent(new CustomEvent('rove-focal-point', {\n detail: {\n focalPointID: 'dummy-app-body',\n checkpoint: {id: 'nav-link-viewreceipts'}\n }\n }));\n }\n });\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(checkoutFailure());\n });\n };\n}\n\nexport function checkoutSuccess(message) {\n GA.event({\n category: 'Cart',\n action: 'Checkout'\n });\n if (\"vibrate\" in navigator) {\n navigator.vibrate = navigator.vibrate ||\n navigator.webkitVibrate ||\n navigator.mozVibrate ||\n navigator.msVibrate;\n\n if (navigator.vibrate) {\n navigator.vibrate(500);\n }\n }\n return {\n type: types.CHECKOUT_SUCCESS\n };\n}\n\nexport function checkoutFailure() {\n return {\n type: types.CHECKOUT_FAILURE\n };\n}\n\nexport function updatePayment(method) {\n return {\n type: types.UPDATE_PAYMENT,\n payload: method\n };\n}\n\nexport function getReceipts(resolve) {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.REC_FETCH});\n cartCall.post('/GetDepositsByUserToken')\n .then(response => {\n if (response.status === 200) {\n dispatch(getReceiptsSuccess(response.data));\n if (_.isFunction(resolve)) resolve();\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(getReceiptsFailure());\n });\n };\n}\n\nexport function getReceiptsSuccess(receipts) {\n return {\n type: types.REC_FETCH_SUCCESS,\n payload: receipts\n };\n}\n\nexport function getReceiptsFailure() {\n return {\n type: types.REC_FETCH_FAILURE\n };\n}\n\nexport function getFeesPaid() {\n return function(dispatch) {\n cartSetToken();\n dispatch({type: types.GET_FEES_PAID});\n cartCall.post('/GetSchoolFeeDepositDetailsByUserToken')\n .then(response => {\n if (response.status === 200) {\n dispatch(getFeesPaidSuccess(response.data));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(getFeesPaidFailure());\n });\n };\n}\n\nfunction getFeesPaidSuccess(fees) {\n return {\n type: types.GET_FEES_PAID_SUCCESS,\n payload: fees\n };\n}\n\nfunction getFeesPaidFailure() {\n return {\n type: types.GET_FEES_PAID_FAILURE\n };\n}\n\nexport function resetCart() {\n return {\n type: types.RESET_CART\n };\n}\n\nexport function removeFee(subAccountID) {\n return {\n type: types.REMOVE_FEE,\n payload: subAccountID\n };\n}\n\nexport function cartSetToken(token = Utils.checkForToken()) {\n cartCall.defaults.headers.common['User-Token'] = token;\n return token;\n}\n\n\n\n// WEBPACK FOOTER //\n// app/common/actions/CartAction.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/invariant/browser.js\n// module id = 27\n// module chunks = 0","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_tagTester.js\n// module id = 28\n// module chunks = 0","import axios from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport Utils from '../js/utils.js';\r\nimport * as types from '../constants/AuthConstants.js';\r\nimport {version} from '../../version.json';\r\n\r\nimport {getPatrons, getSchoolFees, getBalanceNotifications} from './PatronsAction.js';\r\nimport {getPaymentMethods} from './TransAction.js';\r\nimport {getReceipts} from './CartAction.js';\r\nimport {getScheduledDeposits} from './SubAction.js';\r\n\r\naxiosRetry(axios, {retries: 3, retryCondition: response => {\r\n if (response.status === 500) return true;\r\n return false;\r\n}});\r\n\r\nconst currentTime = new Date();\r\n\r\nlet authCall = axios.create({\r\n baseURL: APP_API + 'auth/',\r\n headers: {\r\n 'API-Changeset': API_CHANGESET,\r\n 'Version': version,\r\n 'Content-Type': 'application/json',\r\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\r\n }\r\n});\r\n\r\nlet coppaCall = axios.create({\r\n baseURL: APP_API + 'PublicUser/',\r\n headers: {\r\n 'API-Changeset': API_CHANGESET,\r\n 'Version': version,\r\n 'Content-Type': 'application/json',\r\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\r\n }\r\n});\r\n\r\n//TODO: inProgress\r\nexport function validateCoppaDOB(dob, router) {\r\n return function(dispatch) {\r\n dispatch({type: types.COPPA_VALIDATE_DOB});\r\n coppaCall.post('/ValidateCoppaBirthdate', {\r\n coppaBirthdate: dob\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(validateCoppaDOBSuccess({\r\n origBirthdate: dob,\r\n coppaBirthdate: response.data.coppaBirthdate,\r\n isCompliant: true\r\n }, router));\r\n }\r\n })\r\n .catch(function(error) {\r\n dispatch(validateCoppaDOBFailure({\r\n origBirthdate: dob,\r\n coppaBirthdate: undefined,\r\n isCompliant: false,\r\n eventTime: new Date(),\r\n error: error.response.data,\r\n dispatch: dispatch\r\n }));\r\n Utils.dispatchError(error, dispatch);\r\n });\r\n };\r\n}\r\n\r\nfunction validateCoppaDOBSuccess(coppa, router) {\r\n router.push('/register');\r\n return {\r\n type: types.COPPA_VALIDATE_DOB_SUCCESS,\r\n payload: coppa\r\n };\r\n}\r\n\r\nfunction validateCoppaDOBFailure(coppa) {\r\n return {\r\n type: types.COPPA_VALIDATE_DOB_FAILURE,\r\n payload: coppa\r\n };\r\n}\r\n\r\nexport function clearCoppa() {\r\n return {\r\n type: types.COPPA_CLEAR\r\n };\r\n}\r\n\r\nexport function requestSignIn(username, password, birthdate, persist) {\r\n return function(dispatch) {\r\n dispatch({type: types.SIGN_IN_REQUEST});\r\n return authCall.post('/SignInPublicUser', {\r\n username: username,\r\n password: password,\r\n coppaBirthdate: birthdate,\r\n persisted: persist\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const token = response.data.token;\r\n authSetToken(token);\r\n Utils.setToken(token, persist);\r\n dispatch(signInSuccess({\r\n token: token,\r\n tokenLength: response.data.sessionTimeoutSeconds,\r\n apiInfo: response.headers,\r\n persisted: persist\r\n }));\r\n }\r\n })\r\n .catch(function(error) {\r\n //console.log(error);\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(signInFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function signInSuccess(session) {\r\n return {\r\n type: types.SIGN_IN_SUCCESS,\r\n payload: session\r\n };\r\n}\r\n\r\nexport function signInFailure() {\r\n return {\r\n type: types.SIGN_IN_FAILURE\r\n };\r\n}\r\n\r\nexport function triggerReauthenticate() {\r\n return {\r\n type: types.TRIGGER_REAUTH\r\n };\r\n}\r\n\r\nexport function reauthenticate(username, password) {\r\n return function(dispatch) {\r\n dispatch({type: types.REAUTH});\r\n const persisted = Utils.isPersisted();\r\n return authCall.post('/SignInPublicUser', {\r\n username: username,\r\n password: password,\r\n coppaBirthdate: \"\",\r\n persisted: persisted\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const token = response.data.token;\r\n authSetToken(token);\r\n Utils.setToken(token, persisted);\r\n dispatch(reauthenticateSuccess(token));\r\n refreshData(dispatch);\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(reauthenticateFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function reauthenticateSuccess(token) {\r\n GA.event({\r\n category: 'Reauthenticate',\r\n action: 'Persist'\r\n });\r\n return {\r\n type: types.REAUTH_SUCCESS,\r\n payload: token\r\n };\r\n}\r\n\r\nexport function reauthenticateFailure() {\r\n return {\r\n type: types.REAUTH_FAILURE\r\n };\r\n}\r\n\r\n// Fee data (and potentially other data) can get stale\r\n// if the user doesn't log out for a bit, so we can refresh\r\n// that data when they reauthenticate.\r\nfunction refreshData(dispatch) {\r\n dispatch(getSchoolFees());\r\n dispatch(getPaymentMethods());\r\n dispatch(getBalanceNotifications());\r\n dispatch(getPatrons());\r\n dispatch(getScheduledDeposits());\r\n dispatch(getReceipts());\r\n //document.dispatchEvent(new Event('refresh-data'));\r\n}\r\n\r\nexport function signOut(router) {\r\n return function(dispatch) {\r\n dispatch({\r\n type: types.SIGN_OUT\r\n });\r\n authSetToken();\r\n // Clear local storage so you can't rehydrate back in with old info\r\n // localStorage.clear();\r\n Utils.clearToken();\r\n // Utils.deleteCookie('token');\r\n router.push('/signoutsuccess');\r\n authCall.post('/SignOutPublicUser', {\r\n deleteUserToken: false\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(signOutSuccess());\r\n }\r\n })\r\n .catch(function(error) {\r\n if (error.response.status === 401) {\r\n // We don't care if the session has expired\r\n dispatch(signOutSuccess());\r\n } else {\r\n // Who cares what happened, don't show the user. Just sign them out\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(signOutFailure());\r\n }\r\n });\r\n };\r\n}\r\n\r\nexport function signOutSimple() {\r\n Utils.clearToken();\r\n return {\r\n type: types.SIGN_OUT\r\n };\r\n}\r\n\r\nexport function signOutSuccess() {\r\n return {\r\n type: types.SIGN_OUT_SUCCESS\r\n };\r\n}\r\n\r\nexport function signOutFailure() {\r\n return {\r\n type: types.SIGN_OUT_FAILURE\r\n };\r\n}\r\n\r\nexport function addPinAsync(pin, dispatch) {\r\n authSetToken();\r\n return authCall.post('/AddPin', {\r\n pin: pin\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n return response.data.token;\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(addPinFailure());\r\n });\r\n}\r\n\r\nexport function addPin(userID, username, pin, key) {\r\n return function(dispatch) {\r\n authSetToken();\r\n dispatch({type: types.ADD_PIN});\r\n authCall.post('/AddPin', {\r\n pin: pin\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const pinToken = response.data.token;\r\n dispatch(addPinSuccess(userID, username, pinToken, key));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(addPinFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function addPinSuccess(userID, username, pinToken, key) {\r\n GA.event({\r\n category: 'Fingerprint',\r\n action: 'Add'\r\n });\r\n return {\r\n type: types.ADD_PIN_SUCCESS\r\n };\r\n}\r\n\r\nexport function addPinFailure() {\r\n return {\r\n type: types.ADD_PIN_FAILURE\r\n };\r\n}\r\n\r\nexport function removePin(pin) {\r\n return function(dispatch) {\r\n authSetToken();\r\n dispatch({type: types.REM_PIN});\r\n authCall.post('/DeletePin', {\r\n pin: pin\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const token = response.data.token;\r\n Utils.setToken(token);\r\n dispatch(removePinSuccess(token));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(removePinFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function removePinSuccess() {\r\n GA.event({\r\n category: 'Fingerprint',\r\n action: 'Remove'\r\n });\r\n return {\r\n type: types.REM_PIN_SUCCESS\r\n };\r\n}\r\n\r\nexport function removePinFailure() {\r\n return {\r\n type: types.REM_PIN_FAILURE\r\n };\r\n}\r\n\r\nexport function pinSignIn(pin, pinToken, persist, reauth = false) {\r\n return function(dispatch) {\r\n authSetToken();\r\n authCall.defaults.headers.common['Pin-Token'] = pinToken;\r\n let actionType = types.PIN_SIGN_IN;\r\n let successFunc = pinSignInSuccess;\r\n let failureFunc = pinSignInFailure;\r\n if (reauth) {\r\n actionType = types.PIN_REAUTH;\r\n successFunc = pinReauthSuccess;\r\n failureFunc = pinReauthFailure;\r\n }\r\n dispatch({type: actionType});\r\n authCall.post('/SignInPublicUserByPin', {\r\n pin: pin\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const token = response.data.token;\r\n let isPersisted = persist || Utils.isPersisted();\r\n authSetToken(token);\r\n Utils.setToken(token, persist);\r\n dispatch(successFunc({\r\n token: token,\r\n tokenLength: response.data.sessionTimeoutSeconds,\r\n apiInfo: response.headers,\r\n persisted: isPersisted\r\n }));\r\n if (reauth) refreshData(dispatch);\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n //ensure pin-token is removed on failure\r\n delete authCall.defaults.headers.common['Pin-Token'];\r\n dispatch(failureFunc());\r\n });\r\n };\r\n}\r\n\r\nexport function pinSignInSuccess(session) {\r\n GA.event({\r\n category: 'Fingerprint',\r\n action: 'Sign In'\r\n });\r\n return {\r\n type: types.PIN_SIGN_IN_SUCCESS,\r\n payload: session\r\n };\r\n}\r\n\r\nexport function pinSignInFailure() {\r\n return {\r\n type: types.PIN_SIGN_IN_FAILURE\r\n };\r\n}\r\n\r\nfunction pinReauthSuccess(session) {\r\n GA.event({\r\n category: 'Fingerprint',\r\n action: 'Reauth'\r\n });\r\n return {\r\n type: types.PIN_REAUTH_SUCCESS,\r\n payload: session.token\r\n };\r\n}\r\n\r\nfunction pinReauthFailure() {\r\n return {\r\n type: types.PIN_REAUTH_FAILURE\r\n };\r\n}\r\n\r\nexport function keepAlive() {\r\n return function(dispatch) {\r\n authSetToken();\r\n dispatch({type: types.KEEP_ALIVE});\r\n authCall.post('/ContinuePublicUserSession')\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(keepAliveSuccess());\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(keepAliveFailure());\r\n });\r\n };\r\n}\r\n\r\nfunction keepAliveSuccess() {\r\n return {\r\n type: types.KEEP_ALIVE_SUCCESS\r\n };\r\n}\r\n\r\nfunction keepAliveFailure() {\r\n return {\r\n type: types.KEEP_ALIVE_FAILURE\r\n };\r\n}\r\n\r\nexport function apiTest() {\r\n return function(dispatch) {\r\n authSetToken();\r\n dispatch({type: types.API_TEST});\r\n return authCall.post('/TestIntegration')\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(apiTestSuccess());\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(apiTestFailure());\r\n });\r\n };\r\n}\r\n\r\nfunction apiTestSuccess() {\r\n return {\r\n type: types.API_TEST_SUCCESS\r\n };\r\n}\r\n\r\nfunction apiTestFailure() {\r\n return {\r\n type: types.API_TEST_FAILURE\r\n };\r\n}\r\n\r\nexport function authSetToken(token = Utils.checkForToken()) {\r\n authCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/actions/AuthAction.js","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_a-function.js\n// module id = 30\n// module chunks = 0","export var KEY_PREFIX = 'reduxPersist:';\nexport var REHYDRATE = 'persist/REHYDRATE';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux-persist/es/constants.js\n// module id = 31\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/ExecutionEnvironment.js\n// module id = 32\n// module chunks = 0","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n if (_.iteratee !== iteratee) return _.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_cb.js\n// module id = 33\n// module chunks = 0","import axios from 'axios';\nimport axiosRetry from 'axios-retry';\nimport Utils from '../js/utils.js';\nimport * as types from '../constants/UserConstants.js';\nimport {version} from '../../version.json';\nimport {initPushNotifications} from '../js/Push.js';\nimport {signOut} from './AuthAction.js';\n\naxiosRetry(axios, {retries: 3, retryCondition: (error) => {\n if (error.response.status === 500) return true;\n return false;\n}});\n\nconst currentTime = new Date();\n\nlet userCall = axios.create({\n baseURL: APP_API + 'PublicUser/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nlet messageCall = axios.create({\n baseURL: APP_API + 'Message/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nlet notificationCall = axios.create({\n baseURL: APP_API + 'Notification/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nexport function cancelUser(user, router, authenticatedUsername) {\n return function(dispatch) {\n dispatch({type: types.DELETE_USER});\n userCall.post('/CancelPublicUser', {\n username: user.username,\n password: user.password,\n acknowledged: user.acknowledged\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(cancelUserSuccess(router, dispatch, (authenticatedUsername.toLowerCase() == user.username.toLowerCase())));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(cancelUserFailure());\n });\n };\n}\n\nfunction cancelUserSuccess(router, dispatch, signoutUser) {\n GA.event({\n category: 'User',\n action: 'Deleted'\n });\n\n if(signoutUser) {\n Utils.updateModal('confirm', {\n msg: 'Account successfully canceled!',\n timeout: 2000,\n styleClass: 'level1',\n timeoutCallback: () => {\n dispatch(signOut(router));\n }\n });\n } else {\n // reset form\n try {\n let Cancelform = $('#delete-account-form')[0]\n Cancelform.loginCancelUsername.value = '';\n Cancelform.loginCancelPassword.value = '';\n Cancelform.acknowledgeCancel.checked = false;\n Cancelform.cancelAccountBtn.disabled = true;\n } catch (e) {\n\n }\n\n Utils.updateModal('confirm', {\n msg: 'Account successfully canceled!',\n timeout: 2000,\n styleClass: 'level1'\n });\n }\n\n\n return {\n type: types.DELETE_USER_SUCCESS\n };\n}\n\nfunction cancelUserFailure() {\n return {\n type: types.DELETE_USER_FAILURE\n };\n}\n\nexport function registerUser(user) {\n return function(dispatch) {\n dispatch({type: types.REGISTER_REQUEST});\n userCall.post('/AddPublicUser', {\n username: user.username,\n password: user.newPassword,\n repeatPassword: user.repeatNewPassword,\n firstName: user.firstName,\n lastName: user.lastName,\n securityQuestionID: user.securityQuestionID,\n securityAnswer: user.securityA,\n email: user.email,\n repeatEmail: user.repeatEmail,\n phoneAreaCode: user.phoneAreaCode,\n phoneNum: user.phoneNum,\n phoneExt: user.phoneExt,\n coppaBirthdate: user.coppaBirthdate\n })\n .then(response => {\n if (response.status === 200) {\n Utils.setToken(response.data.token, false);\n dispatch(registerSuccess({\n token: response.data.token,\n persisted: false,\n tokenLength: response.data.sessionTimeoutSeconds,\n apiInfo: response.headers\n }));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(registerFailure());\n });\n };\n}\n\nfunction registerSuccess(token) {\n return {\n type: types.REGISTER_SUCCESS,\n payload: token\n };\n}\n\nfunction registerFailure() {\n return {\n type: types.REGISTER_FAILURE\n };\n}\n\nexport function resetRegistrationStatus() {\n return {\n type: types.CLEAR_REGISTRATION\n };\n}\n\nexport function updateUser(user) {\n return function(dispatch) {\n dispatch({type: types.UPDATE_USER});\n userSetToken();\n userCall.post('/UpdatePublicUser', {\n oldPassword: user.oldPassword,\n newPassword: user.newPassword,\n repeatNewPassword: user.repeatNewPassword,\n firstName: user.firstName,\n lastName: user.lastName,\n securityQuestionID: user.securityQuestionID,\n securityAnswer: user.securityA,\n email: user.email,\n repeatEmail: user.repeatEmail,\n email2: user.email2,\n email3: user.email3,\n phoneAreaCode: user.phoneAreaCode,\n phoneNum: user.phoneNum,\n phoneExt: user.phoneExt\n })\n .then(response => {\n if (response.status === 200) {\n const user = {\n userID: response.data.userID,\n userInfo: response.data\n };\n // Remove ID & stripeID so that userInfo can just be replaced\n delete user.userInfo.userID;\n delete user.userInfo.defaultStripePaymentSourceID;\n document.dispatchEvent(new Event('hide-settings'));\n if(!Utils.isMobile()) {\n document.dispatchEvent(new CustomEvent('rove-on-modals', {detail: {\n modalShown: false,\n checkpoint: document.activeElement\n }}));\n }\n dispatch(updateUserSuccess(user));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(updateUserFailure());\n });\n };\n}\n\nfunction updateUserSuccess(user) {\n GA.event({\n category: 'User',\n action: 'Updated'\n });\n\n Utils.updateModal('confirm', {\n msg: 'Your settings have been saved',\n timeout: 2000,\n styleClass: 'level1'\n });\n\n return {\n type: types.UPDATE_USER_SUCCESS,\n payload: user\n };\n}\n\nfunction updateUserFailure() {\n return {\n type: types.UPDATE_USER_FAILURE\n };\n}\n\nexport function getUserByToken(token, router, themeSuccess) {\n return function(dispatch) {\n dispatch({type: types.GET_USER_BY_TOKEN});\n userSetToken(token);\n userCall.post('/GetPublicUserByUserToken', {})\n .then(response => {\n if (response.status === 200) {\n const userInfo = response.data;\n dispatch(getUserByTokenSuccess(userInfo));\n // Check for theme tied to user\n if (_.isFunction(themeSuccess)) getUserData(response.data.userID, 'theme', themeSuccess);\n // Refresh and Retrieve Push Setting for this device and user\n if (Utils.isApp()) {\n (async () => {\n initPushNotifications(dispatch, router);\n })();\n }\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(getUserByTokenFailure());\n });\n };\n}\n\nfunction getUserByTokenSuccess(user) {\n let userInfo = {\n username: user.username,\n firstName: user.firstName,\n lastName: user.lastName,\n email: user.email,\n email2: user.email2,\n email3: user.email3,\n phoneAreaCode: user.phoneAreaCode,\n phoneNum: user.phoneNum,\n phoneExt: user.phoneExt,\n securityQuestionID: user.securityQuestionID\n };\n return {\n type: types.GET_USER_BY_TOKEN_SUCCESS,\n payload: {\n active: user.active,\n id: user.userID,\n userInfo: userInfo,\n defaultPayment: user.defaultStripePaymentSourceID\n }\n };\n}\n\nfunction getUserByTokenFailure() {\n return {\n type: types.GET_USER_BY_TOKEN_FAILURE\n };\n}\n\nexport function forgotPassword(username) {\n return function(dispatch) {\n dispatch({type: types.FORGOT_PASS});\n userCall.post('/GetSecurityQuestionByUsername', {\n username: username\n })\n .then(response => {\n if (response.status === 200) {\n let question = response.data.securityQuestionID;\n dispatch(forgotPasswordSuccess(username, question));\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(forgotPasswordFailure());\n });\n };\n}\n\nfunction forgotPasswordSuccess(username, question) {\n return {\n type: types.FORGOT_PASS_SUCCESS,\n payload: {username: username, question: question}\n };\n}\n\nfunction forgotPasswordFailure() {\n return {\n type: types.FORGOT_PASS_FAILURE\n };\n}\n\nexport function forgotUsername(email) {\n return function(dispatch) {\n dispatch({type: types.FORGOT_USERNAME});\n userCall.post('/SendForgotUsernameEmail', {\n email: email\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(forgotUsernameSuccess(response.data));\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(forgotUsernameFail());\n });\n };\n}\n\nfunction forgotUsernameSuccess(question) {\n return {\n type: types.FORGOT_USERNAME_SUCCESS,\n payload: question\n };\n}\n\nfunction forgotUsernameFail() {\n return {\n type: types.FORGOT_USERNAME_FAILURE\n };\n}\n\nexport function submitSecurityAnswer(username, answer) {\n return function(dispatch) {\n dispatch({type: types.SUBMIT_SECURITY_A});\n userCall.post('/ResetPasswordBySecurityAnswer', {\n username: username,\n securityAnswer: answer\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(submitSecurityAnswerSuccess());\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(submitSecurityAnswerFailure());\n });\n };\n}\n\nfunction submitSecurityAnswerSuccess() {\n return {\n type: types.SUBMIT_SECURITY_A_SUCCESS\n };\n}\n\nfunction submitSecurityAnswerFailure() {\n return {\n type: types.SUBMIT_SECURITY_A_FAILURE\n };\n}\n\nexport function checkUsernameAvailability(username) {\n return function(dispatch) {\n dispatch({type: types.CHECK_USERNAME});\n userCall.post('/CheckUsernameAvailable', {\n username: username\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(checkUsernameAvailabilitySuccess(response.data));\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(checkUsernameAvailabilityFailure());\n });\n };\n}\n\nfunction checkUsernameAvailabilitySuccess(available) {\n return {\n type: types.CHECK_USERNAME_SUCCESS,\n payload: available\n };\n}\n\nfunction checkUsernameAvailabilityFailure() {\n return {\n type: types.CHECK_USERNAME_FAILURE\n };\n}\n\nexport function checkEmailAvailability(email) {\n return function(dispatch) {\n dispatch({type: types.CHECK_EMAIL});\n userCall.post('/CheckEmailAvailable', {\n email: email\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(checkEmailAvailabilitySuccess(response.data));\n }\n })\n .catch(error => {\n if (error.response.status === 500) {\n // Ignore 500 errors...?\n dispatch(checkEmailAmbiguous());\n return;\n }\n Utils.dispatchError(error, dispatch);\n dispatch(checkEmailAvailabilityFailure());\n });\n };\n}\n\nfunction checkEmailAvailabilitySuccess(available) {\n return {\n type: types.CHECK_EMAIL_SUCCESS,\n payload: available\n };\n}\n\nfunction checkEmailAvailabilityFailure() {\n return {\n type: types.CHECK_EMAIL_FAILURE\n };\n}\n\nfunction checkEmailAmbiguous() {\n return {\n type: types.CHECK_EMAIL_GHOST\n };\n}\n\nexport function resetRegistration() {\n return {\n type: types.RESET_REG\n };\n}\n\nexport function clearUserValidation() {\n return {\n type: types.CLEAR_USER_VAL\n };\n}\n\nexport function clearEmailValidation() {\n return {\n type: types.CLEAR_EMAIL_VAL\n };\n}\n\nexport function clearUpdateValidation() {\n return {\n type: types.CLEAR_UPDATE_VAL\n };\n}\n\nexport function getUserMessages() {\n return function(dispatch) {\n dispatch({type: types.GET_MESSAGES});\n messageCall.defaults.headers.common['User-Token'] = Utils.checkForToken();\n messageCall.post('/GetMessagesByUserToken')\n .then(response => {\n if (response.status === 200) {\n dispatch(getUserMessagesSuccess(response.data));\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(getUserMessagesFailure());\n });\n };\n}\n\nfunction getUserMessagesSuccess(messages) {\n return {\n type: types.GET_MESSAGES_SUCCESS,\n payload: messages\n };\n}\n\nfunction getUserMessagesFailure() {\n return {\n type: types.GET_MESSAGES_FAILURE\n };\n}\n\nconst osID = {\n android: 1,\n ios: 2\n};\n\nexport function getUserNotificationSettings(deviceID) {\n return function(dispatch) {\n let prevDeviceID = Utils.getFromStorage('prevDevicePushRegID') || null;\n dispatch({type: types.GET_NOTIF_SETTINGS});\n notificationSetToken();\n const devicePlatform = window.Capacitor.getPlatform();\n notificationCall.post('/GetPushNotificationSettings', {\n deviceIDCode: deviceID,\n osID: osID[devicePlatform],\n prevDeviceIDCode: prevDeviceID\n })\n .then(response => {\n if (response.status === 200) {\n let currentDevicePushRegID = Utils.getFromStorage('devicePushRegID');\n \n if(prevDeviceID !== currentDevicePushRegID) {\n Utils.updateStorage('prevDevicePushRegID', currentDevicePushRegID);\n }\n\n Utils.updateStorage('devicePushRegID', deviceID);\n \n dispatch(getUserNotificationSettingsSuccess(response.data));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(getUserNotificationSettingsFailure());\n });\n };\n}\n\nfunction getUserNotificationSettingsSuccess(settings) {\n return {\n type: types.GET_NOTIF_SETTINGS_SUCCESS,\n payload: settings\n };\n}\n\nfunction getUserNotificationSettingsFailure() {\n return {\n type: types.GET_NOTIF_SETTINGS_FAILURE\n };\n}\n\nexport function updateGlobalPush(deviceID, enabled) {\n return function(dispatch) {\n let prevDeviceID = Utils.getFromStorage('prevDevicePushRegID') || null;\n dispatch({type: types.UPDATE_PUSH_GLOBAL});\n notificationSetToken();\n const devicePlatform = window.Capacitor.getPlatform();\n notificationCall.post('/UpdateGlobalPushSetting', {\n deviceIDCode: deviceID,\n osID: osID[devicePlatform],\n pushEnabled: enabled,\n prevDeviceIDCode: prevDeviceID\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(updateGlobalPushSuccess(enabled));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(updateGlobalPushFailure());\n });\n };\n}\n\nfunction updateGlobalPushSuccess(enabled) {\n return {\n type: types.UPDATE_PUSH_GLOBAL_SUCCESS,\n payload: enabled\n };\n}\n\nfunction updateGlobalPushFailure() {\n return {\n type: types.UPDATE_PUSH_GLOBAL_FAILURE\n };\n}\n\nexport function updateNotificationSetting(deviceID, notificationTypeID, enabled) {\n return function(dispatch) {\n let prevDeviceID = Utils.getFromStorage('prevDevicePushRegID') || null;\n dispatch({type: types.UPDATE_NOTIF_SETTINGS});\n notificationSetToken();\n const devicePlatform = window.Capacitor.getPlatform();\n notificationCall.post('/UpdatePushNotificationSetting', {\n deviceIDCode: deviceID,\n osID: osID[devicePlatform],\n notificationTypeID: notificationTypeID,\n pushEnabled: enabled,\n prevDeviceIDCode: prevDeviceID\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(updateNotificationSettingsSuccess(response.data));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(updateNotificationSettingsFailure());\n });\n };\n}\n\nfunction updateNotificationSettingsSuccess(settings) {\n return {\n type: types.UPDATE_NOTIF_SETTINGS_SUCCESS,\n payload: settings\n };\n}\n\nfunction updateNotificationSettingsFailure() {\n return {\n type: types.UPDATE_NOTIF_SETTINGS_FAILURE\n };\n}\n\nfunction userSetToken(token = Utils.checkForToken()) {\n userCall.defaults.headers.common['User-Token'] = token;\n return token;\n}\n\nfunction notificationSetToken(token = Utils.checkForToken()) {\n notificationCall.defaults.headers.common['User-Token'] = token;\n return token;\n}\n\n\n\n// WEBPACK FOOTER //\n// app/common/actions/UserAction.js","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_hide.js\n// module id = 35\n// module chunks = 0","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_redefine.js\n// module id = 36\n// module chunks = 0","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_string-html.js\n// module id = 37\n// module chunks = 0","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_isArrayLike.js\n// module id = 38\n// module chunks = 0","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/restArguments.js\n// module id = 39\n// module chunks = 0","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n if (obj instanceof _) return obj;\n if (!(this instanceof _)) return new _(obj);\n this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/underscore.js\n// module id = 40\n// module chunks = 0","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * typeof document.createElement -> undefined\n */\nfunction isStandardBrowserEnv() {\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object' && !isArray(obj)) {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/axios/lib/utils.js\n// module id = 41\n// module chunks = 0","import axios from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport Utils from '../js/utils.js';\r\nimport * as types from '../constants/PatronsConstants.js';\r\nimport {REM_CART} from '../constants/CartConstants.js';\r\n\r\nimport {getUserMessages} from './UserAction.js';\r\nimport {getFeesPaid} from './CartAction.js';\r\n\r\nimport {version} from '../../version.json';\r\n\r\naxiosRetry(axios, {retries: 3, retryCondition: (error) => {\r\n if (error.response.status === 500) return true;\r\n return false;\r\n}});\r\n\r\nconst currentTime = new Date();\r\n\r\nconst defaultHeader = {\r\n 'API-Changeset': API_CHANGESET,\r\n 'Version': version,\r\n 'Content-Type': 'application/json',\r\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\r\n};\r\n\r\nlet patronCall = axios.create({\r\n baseURL: APP_API + 'Patron/',\r\n headers: defaultHeader\r\n});\r\n\r\nlet posCall = axios.create({\r\n baseURL: APP_API + 'PosTrans/',\r\n headers: defaultHeader\r\n});\r\n\r\nlet schoolCall = axios.create({\r\n baseURL: APP_API + 'School/',\r\n headers: defaultHeader\r\n});\r\n\r\nlet feeCall = axios.create({\r\n baseURL: APP_API + 'SchoolFee/',\r\n headers: defaultHeader\r\n});\r\n\r\nexport function getPatrons(resolveFunc) {\r\n return function(dispatch) {\r\n patronSetToken();\r\n\r\n dispatch({type: types.PATRON_FETCH});\r\n patronCall.post('/GetPatronAccountsByUserToken', {\r\n explicitlyInUserProfile: null,\r\n hasActivePOSCheckingAccount: null\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getPatronsSuccess(response.data));\r\n // Handles pull to refresh\r\n if (_.isFunction(resolveFunc)) resolveFunc();\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getPatronsFailure());\r\n if (_.isFunction(resolveFunc)) resolveFunc();\r\n });\r\n };\r\n}\r\n\r\nexport function getPatronsSuccess(patrons) {\r\n return {\r\n type: types.PATRON_FETCH_SUCCESS,\r\n payload: patrons\r\n };\r\n}\r\n\r\nexport function getPatronsFailure() {\r\n return {\r\n type: types.PATRON_FETCH_FAILURE\r\n };\r\n}\r\n\r\nexport function addPatron(schoolID, firstName, idCode) {\r\n return function(dispatch) {\r\n dispatch({type: types.PATRON_ADD});\r\n patronSetToken();\r\n patronCall.post('/AddPatronToPublicUser', {\r\n schoolLocationID: schoolID,\r\n firstName: firstName,\r\n idCode: idCode\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(addPatronSuccess(response.data));\r\n // If a student has been added, check to see if that new student has\r\n // any fees to go along with them!\r\n dispatch(getSchoolFees());\r\n dispatch(getUserMessages());\r\n document.dispatchEvent(new Event('update-acct-info'));\r\n\r\n //TODO: Revisit and Review. A good candidate for refactoring.\r\n if(response.data.userPatrons.length === 1 && (Utils.isApp() || Utils.isMobile())) {\r\n dispatch(getPatronAccount(response.data.userPatrons[0].patronID));\r\n dispatch(getStudentData(response.data.userPatrons[0].patronID, idCode));\r\n }\r\n\r\n let checkpoint = {id: \"existing-acct-\" + response.data.patronAccount.patronAccountNum};\r\n\r\n if(Utils.isMobile()) {\r\n document.dispatchEvent(new CustomEvent('rove-focal-point', {detail: {\r\n focalPointID: 'dummy-right-col-container',\r\n checkpoint: checkpoint\r\n }}));\r\n } else {\r\n document.dispatchEvent(new CustomEvent('rove-focal-point', {detail: {\r\n focalPointID: 'dummy-right-col-container',\r\n checkpoint: checkpoint,\r\n routeChange: \"accounts\"\r\n }}));\r\n }\r\n\r\n Utils.updateModal('confirm', {\r\n msg: 'Account successfully added!',\r\n timeout: 2000,\r\n styleClass: 'level1'\r\n });\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(addPatronFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function addPatronSuccess(patron) {\r\n GA.event({\r\n category: 'Patron',\r\n action: 'Added'\r\n });\r\n return {\r\n type: types.PATRON_ADD_SUCCESS,\r\n payload: patron\r\n };\r\n}\r\n\r\nexport function addPatronFailure() {\r\n return {\r\n type: types.PATRON_ADD_FAILURE\r\n };\r\n}\r\n\r\nexport function removePatron(patronID, patronAccountNum) {\r\n return function(dispatch) {\r\n dispatch({type: types.PATRON_REM});\r\n patronSetToken();\r\n patronCall.post('/RemovePatronFromPublicUser', {\r\n patronID: patronID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(removePatronSuccess(patronAccountNum));\r\n dispatch(getFeesPaid());\r\n Utils.updateModal('confirm', {\r\n msg: 'Account successfully deleted.',\r\n timeout: 2000,\r\n styleClass: 'level1'\r\n });\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(removePatronFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function removePatronSuccess(patronAccountNum) {\r\n GA.event({\r\n category: 'Patron',\r\n action: 'Removed'\r\n });\r\n return {\r\n type: types.PATRON_REM_SUCCESS,\r\n payload: patronAccountNum\r\n };\r\n}\r\n\r\nexport function removePatronFailure() {\r\n return {\r\n type: types.PATRON_REM_FAILURE\r\n };\r\n}\r\n\r\nexport function getBalanceNotifications(patronID, patronAccountNum) {\r\n return function(dispatch) {\r\n dispatch({type: types.GET_BALANCE_NOTIF});\r\n patronSetToken();\r\n patronCall.post('/GetUserPatronsByUserToken')\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getBalanceNotificationsSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getBalanceNotificationsFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function getBalanceNotificationsSuccess(lowBalance) {\r\n GA.event({\r\n category: 'Patron',\r\n action: 'Removed'\r\n });\r\n return {\r\n type: types.GET_BALANCE_NOTIF_SUCCESS,\r\n payload: lowBalance\r\n };\r\n}\r\n\r\nexport function getBalanceNotificationsFailure() {\r\n return {\r\n type: types.GET_BALANCE_NOTIF_FAILURE\r\n };\r\n}\r\n\r\nexport function updatePatron(patronInfo) {\r\n GA.event({\r\n category: 'Patron',\r\n action: 'Updated'\r\n });\r\n return function(dispatch) {\r\n dispatch({type: types.UPDATE_BALANCE_NOTIF});\r\n patronSetToken();\r\n patronCall.post('/UpdateUserPatrons', {\r\n userPatrons: patronInfo\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(updatePatronSuccess(patronInfo));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(updatePatronFailure());\r\n });\r\n };\r\n}\r\n\r\nfunction updatePatronSuccess(patronInfo) {\r\n Utils.updateModal('confirm', {\r\n msg: 'Your settings have been saved.',\r\n timeout: 3000,\r\n styleClass: 'level1'\r\n });\r\n return {\r\n type: types.UPDATE_BALANCE_NOTIF_SUCCESS,\r\n payload: patronInfo\r\n };\r\n}\r\n\r\nfunction updatePatronFailure() {\r\n return {\r\n type: types.UPDATE_BALANCE_NOTIF_FAILURE\r\n };\r\n}\r\n\r\nexport function loadPatron(patron) {\r\n return {\r\n type: types.LOAD_PATRON,\r\n payload: patron\r\n };\r\n}\r\n\r\nexport function loadAccount(acct) {\r\n return {\r\n type: types.LOAD_ACCT,\r\n payload: acct\r\n };\r\n}\r\n\r\nexport function clearLoaded() {\r\n return {\r\n type: types.CLEAR_LOADED\r\n };\r\n}\r\n\r\nexport function fetchTransactions(patronID, count, fromDate, toDate) {\r\n return function(dispatch) {\r\n let token = posSetToken();\r\n if (_.isUndefined(token)) {\r\n dispatch(fetchTransactionsFailure('User token is undefined'));\r\n return;\r\n }\r\n dispatch({type: types.FETCH_TRANS});\r\n posCall.post('/GetPosTransSalesByPatronID', {\r\n patronID: patronID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(fetchTransactionsSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(fetchTransactionsFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function fetchTransactionsSuccess(transactions) {\r\n return {\r\n type: types.FETCH_TRANS_SUCCESS,\r\n payload: transactions\r\n };\r\n}\r\n\r\nexport function fetchTransactionsFailure() {\r\n return {\r\n type: types.FETCH_TRANS_FAILURE\r\n };\r\n}\r\n\r\nexport function fetchDepositsByAccount(acctNum, district, count, fromDate, toDate) {\r\n return function(dispatch) {\r\n let token = posSetToken();\r\n if (_.isUndefined(token)) {\r\n dispatch(fetchDepositsByAccountFailure('User token is undefined'));\r\n return;\r\n }\r\n dispatch({type: types.FETCH_DEP_BY_ACCT});\r\n posCall.post('/GetMT5PosTransDepositsByPatronAccountNum', {\r\n patronAccountNum: acctNum,\r\n districtLocationSeed: district\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(fetchDepositsByAccountSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(fetchDepositsByAccountFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function fetchDepositsByAccountSuccess(deposits) {\r\n return {\r\n type: types.FETCH_DEP_BY_ACCT_SUCCESS,\r\n payload: deposits\r\n };\r\n}\r\n\r\nexport function fetchDepositsByAccountFailure() {\r\n return {\r\n type: types.FETCH_DEP_BY_ACCT_FAILURE\r\n };\r\n}\r\n\r\nexport function fetchDepositsByPatron(patronID, count, fromDate, toDate) {\r\n return function(dispatch) {\r\n let token = posSetToken();\r\n if (_.isUndefined(token)) {\r\n dispatch(fetchDepositsByPatronFailure('User token is undefined'));\r\n return;\r\n }\r\n dispatch({type: types.FETCH_DEP_BY_PATRON});\r\n posCall.post('/GetMT2PosTransDepositsByPatronID', {\r\n patronID: patronID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(fetchDepositsByPatronSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(fetchDepositsByPatronFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function fetchDepositsByPatronSuccess(deposits) {\r\n return {\r\n type: types.FETCH_DEP_BY_PATRON_SUCCESS,\r\n payload: deposits\r\n };\r\n}\r\n\r\nexport function fetchDepositsByPatronFailure() {\r\n return {\r\n type: types.FETCH_DEP_BY_PATRON_FAILURE\r\n };\r\n}\r\n\r\nexport function getStateSchools(stateID) {\r\n return function(dispatch) {\r\n schoolSetToken();\r\n dispatch({type: types.SCHOOL_FETCH});\r\n schoolCall.post('/GetSchoolsByStateID', {\r\n stateID: stateID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getStateSchoolsSuccess(response.data, stateID));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getStateSchoolsFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function getStateSchoolsSuccess(schools, stateID) {\r\n GA.event({\r\n category: 'Schools',\r\n action: 'Fetched',\r\n label: stateID\r\n });\r\n return {\r\n type: types.SCHOOL_FETCH_SUCCESS,\r\n payload: schools\r\n };\r\n}\r\n\r\nexport function getStateSchoolsFailure() {\r\n return {\r\n type: types.SCHOOL_FETCH_FAILURE\r\n };\r\n}\r\n\r\nexport function clearSchools() {\r\n return {\r\n type: types.CLEAR_SCHOOLS\r\n };\r\n}\r\n\r\n// You know, I COULD make this its own action/reducer/constant, but it's only one call\r\nexport function getSchoolFees() {\r\n return function(dispatch) {\r\n feeSetToken();\r\n dispatch({type: types.GET_SCHOOL_FEES});\r\n feeCall.post('/GetSchoolFeesByUserToken')\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getSchoolFeesSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getSchoolFeesFailure());\r\n });\r\n };\r\n}\r\n\r\nfunction getSchoolFeesSuccess(fees) {\r\n return {\r\n type: types.GET_SCHOOL_FEES_SUCCESS,\r\n payload: fees\r\n };\r\n}\r\n\r\nfunction getSchoolFeesFailure() {\r\n return {\r\n type: types.GET_SCHOOL_FEES_FAILURE\r\n };\r\n}\r\n\r\n/*\r\n * I feel like there should be a better way to do this, but the calls\r\n * don't have the token stored after refresh. You could set them with\r\n * the default header, but there's no guarantee you'll have it when\r\n * the app launches either.\r\n */\r\nfunction patronSetToken(token = Utils.checkForToken()) {\r\n patronCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\r\nfunction posSetToken(token = Utils.checkForToken()) {\r\n posCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\r\nfunction schoolSetToken(token = Utils.checkForToken()) {\r\n schoolCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\r\nfunction feeSetToken(token = Utils.checkForToken()) {\r\n feeCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\r\n/*\r\nTODO: Revisit and Review. From student src that is supposed to be student specific but had to move it here because of the shared component and babel\r\n*/\r\nexport function getPatronAccount(patronID) {\r\n return function(dispatch) {\r\n patronSetToken();\r\n dispatch({type: types.GET_PATRON_ACCOUNT});\r\n patronCall.post('/GetPatronAccountByPatronID', {\r\n patronID: patronID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getPatronAccountSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getPatronAccountFailure());\r\n });\r\n };\r\n}\r\n\r\nfunction getPatronAccountSuccess(patron) {\r\n return {\r\n type: types.GET_PATRON_ACCOUNT_SUCCESS,\r\n payload: patron\r\n };\r\n}\r\n\r\nfunction getPatronAccountFailure() {\r\n return {\r\n type: types.GET_PATRON_ACCOUNT_FAILURE\r\n };\r\n}\r\n\r\nexport function getStudentData(patronID, userID) {\r\n return function(dispatch) {\r\n dispatch({type: types.GET_PATRON_DATA});\r\n patronSetToken();\r\n patronCall.post('/GetPatronStudentAppData', {\r\n patronID: patronID\r\n })\r\n .then(response => {\r\n if (response.status === 200) {\r\n const studentInfo = {\r\n patronID: Number(patronID),\r\n studentData: response.data\r\n };\r\n setUserData(userID, 'student', studentInfo);\r\n dispatch(getStudentDataSuccess(studentInfo));\r\n }\r\n })\r\n .catch(function(error) {\r\n\r\n if(error.response.data.errors[0].error.errorCode === \"MT5CallForMT2Patron\") {\r\n dispatch(getStudentDataFailure());\r\n } else {\r\n Utils.dispatchError(error, dispatch);\r\n }\r\n\r\n });\r\n };\r\n}\r\n\r\nexport function getStudentDataSuccess(student) {\r\n return {\r\n type: types.GET_PATRON_DATA_SUCCESS,\r\n payload: student\r\n };\r\n}\r\n\r\nfunction getStudentDataFailure() {\r\n return {\r\n type: types.GET_PATRON_DATA_FAILURE\r\n };\r\n}\n\n\n// WEBPACK FOOTER //\n// app/common/actions/PatronsAction.js","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_has.js\n// module id = 43\n// module chunks = 0","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-gopd.js\n// module id = 44\n// module chunks = 0","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-gpo.js\n// module id = 45\n// module chunks = 0","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-iobject.js\n// module id = 46\n// module chunks = 0","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_getLength.js\n// module id = 47\n// module chunks = 0","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/isFunction.js\n// module id = 48\n// module chunks = 0","module.exports = require('./lib/axios');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/axios/index.js\n// module id = 49\n// module chunks = 0","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport './ToolTip.scss';\r\n\r\nclass ToopTip extends React.Component {\r\n static propTypes = {\r\n toolTipClassName: PropTypes.string,\r\n direction: PropTypes.string,\r\n customClass: PropTypes.string,\r\n title: PropTypes.string\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.toolTipClassName = props.toolTipClassName || 'fa fa-question-circle-o tooltip-generic';\r\n this.direction = props.direction || 'top';\r\n this.title = props.title || '';\r\n this.customClass = props.customClass || null;\r\n }\r\n\r\n componentDidMount() {\r\n $(this.refs.tooltip).tooltip();\r\n\r\n if (!_.isUndefined(window.orientation)) {\r\n $(window).on('orientationchange', this.hideTooltip);\r\n } else {\r\n $(window).on('resize', this.hideTooltip);\r\n }\r\n\r\n $(this.refs.tooltip).on('inserted.bs.tooltip', this.setupTooltip);\r\n $(this.refs.tooltip).on('hide.bs.tooltip', this.destroyTooltip);\r\n }\r\n\r\n componentWillUnmount() {\r\n $(this.refs.tooltip).tooltip('dispose');\r\n\r\n if (!_.isUndefined(window.orientation)) {\r\n $(window).off('orientationchange', this.hideTooltip);\r\n } else {\r\n $(window).off('resize', this.hideTooltip);\r\n }\r\n\r\n $(this.refs.tooltip).off('inserted.bs.tooltip', this.setupTooltip);\r\n $(this.refs.tooltip).off('hide.bs.tooltip', this.destroyTooltip);\r\n }\r\n\r\n hideTooltip = () => {\r\n $(this.refs.tooltip).tooltip('hide');\r\n $(this.refs.tooltip).one('click', this.showTooltip);\r\n }\r\n\r\n showTooltip = () => {\r\n $(this.refs.tooltip).tooltip('show');\r\n }\r\n\r\n setupTooltip = () => {\r\n if (this.customClass) {\r\n $('#' + $(this.refs.tooltip)[0].getAttribute('aria-describedby')).addClass(this.customClass);\r\n }\r\n\r\n $('#app-body').attr('tabindex', '-1');\r\n }\r\n\r\n destroyTooltip = () => {\r\n $('#app-body').attr('tabindex', '');\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ToopTip;\n\n\n// WEBPACK FOOTER //\n// app/common/components/ToolTip/ToolTip.jsx","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_cof.js\n// module id = 51\n// module chunks = 0","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_core.js\n// module id = 52\n// module chunks = 0","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_ctx.js\n// module id = 53\n// module chunks = 0","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_strict-method.js\n// module id = 54\n// module chunks = 0","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-integer.js\n// module id = 55\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 56\n// module chunks = 0","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInstrumentation.js\n// module id = 57\n// module chunks = 0","/* global StatusBar */\r\nimport CryptoJS from 'crypto-js';\r\nimport actionableError from '../js/ActionableError.js';\r\n\r\nimport ErrorIDs from '../constants/ValidationErrorIDs.json';\r\nimport Actionable from '../constants/ActionableErrors.json';\r\nconst ActionableErrors = Actionable.actionableErrors;\r\n\r\nimport {\r\n generalError,\r\n validationError\r\n} from '../actions/ErrorAction.js';\r\nimport {pinSignIn} from '../actions/AuthAction.js';\r\nimport { verifyBiometric } from '../js/Biometry.js';\r\n\r\nlet reauthDialog = {status: 0, timestamp: null, timeout: 300000};\r\n//TODO: this is uber long. Can be organize for better maintainability\r\nclass Utils {\r\n /**\r\n * Validation function for password input.\r\n * @param {String} password Password string\r\n *\r\n * @return {Object} Password state\r\n */\r\n acceptablePassword(password) {\r\n let passwordState = {\r\n upper: false,\r\n lower: false,\r\n num: false,\r\n special: false,\r\n length: false,\r\n invalid: false,\r\n acceptable: false\r\n };\r\n const acceptedSpecials = ['@', '%', '+', '\\\\', '/', '\\'', '!', '#', '$',\r\n '^', '?', '*', ':', ',', '(', ')', '{', '}', '[', ']', '~', '-', '_'];\r\n\r\n if (/[A-Z]/.test(password)) {\r\n passwordState.upper = true;\r\n }\r\n if (/[a-z]/.test(password)) {\r\n passwordState.lower = true;\r\n }\r\n if (/[0-9]/.test(password)) {\r\n passwordState.num = true;\r\n }\r\n\r\n let parsedPassword = password.replace(/[a-zA-Z0-9]/g, '');\r\n\r\n for (let c of parsedPassword) {\r\n if (acceptedSpecials.includes(c)) {\r\n passwordState.special = true;\r\n } else {\r\n passwordState.invalid = true;\r\n }\r\n }\r\n\r\n if (password.length >= 8 && password.length <= 20) {\r\n passwordState.length = true;\r\n }\r\n\r\n if (passwordState.upper === true &&\r\n passwordState.lower === true &&\r\n passwordState.num === true &&\r\n passwordState.special === true &&\r\n passwordState.length === true &&\r\n passwordState.invalid === false) {\r\n passwordState.acceptable = true;\r\n }\r\n\r\n return passwordState;\r\n }\r\n\r\n /**\r\n * Checks for the token in both local and session storage\r\n *\r\n * @return {String} Returns the token as a string, or undefined if token can't be found\r\n */\r\n checkForToken() {\r\n let token;\r\n\r\n // Get token from localstorage\r\n token = this.getFromStorage('token');\r\n if (!_.isUndefined(token)) {\r\n return token;\r\n }\r\n\r\n token = this.getFromSession('token');\r\n\r\n // If not in localstorage, get from cookie\r\n // token = document.cookie.replace(/(?:(?:^|.*;\\s*)token\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\");\r\n // if (_.isEmpty(token)) {\r\n // // Regex returns an empty string if not found\r\n // // so let's try to keep everything uniform\r\n // token = undefined;\r\n // }\r\n return token;\r\n }\r\n\r\n /**\r\n * Converts datetime string to a JS Date object\r\n * @param {String} dt Datetime string\r\n *\r\n * @return {Date} Converted Date object\r\n */\r\n convertFromDatetime(dt) {\r\n let dateString = dt + 'Z';\r\n const convertedDate = new Date(Date.parse(dateString));\r\n convertedDate.setTime(convertedDate.getTime() + convertedDate.getTimezoneOffset() * 60 * 1000);\r\n\r\n if (this.isApp()) {\r\n // https://stackoverflow.com/questions/13363673/javascript-date-is-invalid-on-ios\r\n convertedDate.setTime(convertedDate.getTime() + convertedDate.getTimezoneOffset() * 60 * 1000);\r\n } else {\r\n convertedDate.setTime(convertedDate.getTime());\r\n }\r\n\r\n return convertedDate;\r\n }\r\n\r\n /**\r\n * Converts Date object to datetime string\r\n * @param {Date} date Date object to be converted\r\n *\r\n * @return {String} Datetime string\r\n */\r\n convertToDatetime(date) {\r\n var day = date.getDay();\r\n var month = date.getMonth();\r\n var year = date.getFullYear();\r\n var hour = date.getHours();\r\n var minute = date.getMinutes();\r\n var second = date.getSeconds();\r\n\r\n var time = day + \"/\" + month + \"/\" + year + \" \" + hour + ':' + minute + ':' + second;\r\n return time;\r\n }\r\n\r\n /**\r\n * Clears the token from both local and session storage\r\n */\r\n clearToken() {\r\n localStorage.removeItem('token');\r\n sessionStorage.removeItem('token');\r\n }\r\n\r\n /**\r\n * Converts a Date object to a readable string\r\n * @param {Date} d Date object to the printed\r\n * @param {Boolean} english Whether or not to print the date in english or as a series of numbers\r\n *\r\n * @return {String} Date string\r\n */\r\n dateFormat(d, english = true) {\r\n let monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n let days = ['Sunday', 'Monday', 'Tuesday',\r\n 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n\r\n //if for whatever reason d obj is undefined return empty string to avoid the app from crashing\r\n if(_.isUndefined(d)) return '';\r\n\r\n let day = d.getDate();\r\n if (day < 10) day = '0' + day;\r\n let monthIndex = d.getMonth();\r\n let year = d.getFullYear();\r\n let weekDay = d.getDay();\r\n\r\n let dateStr = '';\r\n if (english) {\r\n dateStr = days[weekDay] + ', ' + monthNames[monthIndex] + ' ' + day + ' ' + year;\r\n } else {\r\n monthIndex += 1;\r\n dateStr = monthIndex + '/' + day + '/' + year;\r\n }\r\n\r\n return dateStr;\r\n }\r\n\r\n /**\r\n * Turns 1 into 1st, 3 into 3rd, etc\r\n * @param {Number} i Day (1, 4, 17, etc) to be suffix-ed\r\n *\r\n * @return {String} 1st, 2nd, 3rd, etc\r\n */\r\n daySuffix(i) {\r\n let j = i % 10;\r\n let k = i % 100;\r\n if (j === 1 && k !== 11) {\r\n return i + \"st\";\r\n }\r\n if (j === 2 && k !== 12) {\r\n return i + \"nd\";\r\n }\r\n if (j === 3 && k !== 13) {\r\n return i + \"rd\";\r\n }\r\n return i + \"th\";\r\n }\r\n\r\n // deleteCookie(name) {\r\n // document.cookie = name + '=; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\r\n // }\r\n\r\n /**\r\n * Friendlier localstorage key deletion\r\n * @param {String} key Key of the item to delete\r\n */\r\n deleteFromStorage(key) {\r\n if (('localStorage' in window) && window.localStorage !== null) {\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n\r\n /**\r\n * Handles multiple errors and sorts them into their appropriate category\r\n * (i.e. Actionable, Validation, & General)\r\n * @param {Object} error Error object\r\n * @param {Function} dispatch Dispatch function\r\n */\r\n dispatchError(error, dispatch) {\r\n let general = {};\r\n let validation = [];\r\n if (error.response &&\r\n error.response.data &&\r\n _.isArray(error.response.data.errors)) {\r\n // Place errors correctly\r\n for (let err of error.response.data.errors) {\r\n if (ActionableErrors.includes(err.error.errorCode)) {\r\n // Actionable error\r\n actionableError(err, dispatch, error.response);\r\n } else if (!_.isUndefined(ErrorIDs[err.error.errorCode])) {\r\n // Validation error\r\n validation.push(err.error);\r\n } else {\r\n // General error\r\n general = err;\r\n }\r\n }\r\n } else if (error.response) { // Error responses not from API\r\n if (error.response.status === 503) {\r\n general = {\r\n error: {\r\n errorCode: \"ApiUnavailable\",\r\n errorMessage: \"The server is temporarily unavailable.\"\r\n }\r\n };\r\n }\r\n } else if (error.stripeError) { // Error responses from Stripe Validation errors.\r\n if (error.stripeError.code === 'card_declined') {\r\n if (!_.isUndefined(ErrorIDs[error.stripeError.decline_code])) {\r\n validation.push({\r\n errorCode: error.stripeError.decline_code,\r\n errorMessage: error.stripeError.message\r\n });\r\n }\r\n }\r\n } else if (error.message === 'Network Error') {\r\n general = {\r\n error: {\r\n errorCode: \"NetworkError\",\r\n errorMessage: \"(Network Error) A connection to the service could not be made. Please try again later.\"\r\n }\r\n };\r\n } else { // Error sending request likely no network connection\r\n console.warn({\r\n context: \"utils dispatchError general handler\",\r\n error: error\r\n });\r\n general = {\r\n error: {\r\n errorCode: \"RequestNotSent\",\r\n errorMessage: \"(RequestNotSent) A connection to the service could not be made. Please try again later.\"\r\n }\r\n };\r\n }\r\n\r\n if (!_.isEmpty(general)) dispatch(generalError(general, dispatch));\r\n if (!_.isEmpty(validation)) dispatch(validationError(validation));\r\n\r\n return;\r\n }\r\n\r\n emailValidityCheck(email, errorCode) {\r\n let error = [];\r\n if (email.length > 128) {\r\n // Email is over 128 characters. This person is a monster\r\n error.push({\r\n errorCode: errorCode,\r\n errorMessage: 'Email must be 128 characters or less.'\r\n });\r\n } else if (!this.validateEmail(email)) {\r\n // Invalid email\r\n error.push({\r\n errorCode: errorCode,\r\n errorMessage: 'Email address is invalid.'\r\n });\r\n }\r\n return error;\r\n }\r\n\r\n /**\r\n * Returns a patron found by patron ID\r\n * @param {Number} patronID Patron ID we want found\r\n * @param {Array} accounts Patron accounts tied to user account\r\n *\r\n * @return {Object} Returns a patron if found, undefined otherwise\r\n */\r\n findPatronInAccounts(patronID, accounts) {\r\n for (let patronAcct of accounts) {\r\n // Go through each patron account looking for matching patron\r\n let matchingPatron = _.findWhere(patronAcct.patrons, {patronID: patronID});\r\n // If a matching patron is found, return that patron\r\n if (_.isObject(matchingPatron)) return matchingPatron;\r\n }\r\n\r\n // Otherwise return undefined\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Returns a patron's account found by patron ID\r\n * @param {Number} patronID Patron ID we want found\r\n * @param {Array} accounts Patron accounts tied to user account\r\n *\r\n * @return {Object} Returns a patron if found, undefined otherwise\r\n */\r\n findAccountOfPatron(patronID, accounts) {\r\n for (let patronAcct of accounts) {\r\n // Go through each patron account looking for matching patron\r\n let matchingPatron = _.findWhere(patronAcct.patrons, {patronID: patronID});\r\n // If a matching patron is found, return that patron\r\n if (_.isObject(matchingPatron)) return patronAcct;\r\n }\r\n\r\n // Otherwise return undefined\r\n return;\r\n }\r\n\r\n /**\r\n * Returns a patron that is in a blocked account\r\n * @param {Number} patronID Patron ID we want found\r\n * @param {Array} accounts Patron accounts tied to user account\r\n *\r\n * @return {Object} Returns a blocked patron if found, undefined otherwise\r\n */\r\n patronInBlockedAccount(patronID, accounts) {\r\n for (let patronAcct of accounts) {\r\n if (patronAcct.paymentsProhibited === true) {\r\n let blockedPatron = _.findWhere(patronAcct.patrons, {patronID: patronID});\r\n if (!_.isUndefined(blockedPatron)) {\r\n return blockedPatron;\r\n }\r\n }\r\n }\r\n return;\r\n }\r\n\r\n /**\r\n * Formats cart items (deposits, fees, etc) to fit the needs of the API.\r\n * Items in the front-end cart have additional info used in the UI.\r\n * @param {Object} item Cart item object\r\n *\r\n * @return {Object} API formatted cart object (depositDetails)\r\n */\r\n formatCartItem(item) {\r\n // Co-opted this to help with both the cart and scheduled deposits\r\n let amount = item.amount || item.depositAmount;\r\n return {\r\n patronID: item.patronID,\r\n checkingAccountID: item.checkingAccountID,\r\n depositAmount: amount,\r\n subAccountID: item.subAccountID,\r\n priceEach: item.priceEach,\r\n quantity: item.quantity\r\n };\r\n }\r\n\r\n /**\r\n * Picks validation errors that are tied to specific ids (i.e. 'username', 'email', etc)\r\n * @param {Array} validationErrors All current validation errors\r\n * @param {Array} ids Array of ids to pluck from all validation errors\r\n *\r\n * @return {Object} Error object with the ids as keys\r\n */\r\n getErrorsByID(validationErrors, ...ids) {\r\n let errors = {};\r\n // Can handle any number of arguments\r\n for (let arg of ids) {\r\n // If the ID matches an ID passed via argument\r\n // let matches = _.where(validationErrors, {domID: arg});\r\n let matches = _.filter(validationErrors, err => {\r\n return err.id.includes(arg);\r\n });\r\n\r\n if (!_.isEmpty(matches)) {\r\n let errorMsg = '';\r\n // Rare, but a single ID COULD have multiple errors\r\n for (let err of matches) {\r\n errorMsg += err.message;\r\n }\r\n errors[arg] = errorMsg;\r\n }\r\n }\r\n return errors;\r\n }\r\n\r\n /**\r\n * Gets patron account by patronAccountNum\r\n * @param {Array} patrons Array of all patron accounts\r\n * @param {Number} acctNum Patron account number of account to be plucked\r\n *\r\n * @return {Object} Patron account with matching account number, or undefined if none found\r\n */\r\n getPatronsByID(patrons, acctNum) {\r\n return _.findWhere(patrons, {patronAccountNum: acctNum});\r\n }\r\n\r\n /**\r\n * Gets a payment method based on\r\n *\r\n * Note - if the payment method array only contains a temp payment method\r\n * this will throw an exeption because the Cart component expects that a default_payment was set by the user.\r\n * Since the user never sets a default, we will return the first or only payment method\r\n *\r\n *\r\n *\r\n * @param {Array} methods Array of payment methods tied to user account\r\n * @param {String} id Stripe ID of payment we wish to get\r\n *\r\n * @return {Object} Payment method we wanted to find, or undefined if not found\r\n */\r\n getPaymentByStripeID(methods, id) {\r\n if (id === \"\" || _.isNull(id) || _.isUndefined(id)) {\r\n return _.first(methods);\r\n } else {\r\n return _.findWhere(methods, {stripeCardID: id});\r\n }\r\n }\r\n\r\n /**\r\n * Friendlier way to get item from session storage\r\n * @param {String} key Key of the item we want to get from session storage\r\n *\r\n * @return {Object} Object we wanted to get, undefined if not found\r\n */\r\n getFromSession(key) {\r\n let item;\r\n\r\n try {\r\n if (('sessionStorage' in window) && window.sessionStorage !== null) {\r\n item = sessionStorage.getItem(key);\r\n }\r\n if (item === null || item === 'undefined') return undefined;\r\n return JSON.parse(item);\r\n } catch (error) {\r\n return item;\r\n }\r\n }\r\n\r\n /**\r\n * Friendlier way to get item from local storage\r\n * @param {String} key Key of the item we want to get from local storage\r\n *\r\n * @return {Object} Object we wanted to get, undefined if not found\r\n */\r\n getFromStorage(key) {\r\n let item;\r\n\r\n try {\r\n if (('localStorage' in window) && window.localStorage !== null) {\r\n item = localStorage.getItem(key);\r\n }\r\n if (item === null || item === 'undefined') return undefined;\r\n return JSON.parse(item);\r\n } catch (error) {\r\n return item;\r\n }\r\n }\r\n\r\n /**\r\n * Filter the dismissed district messages\r\n * @param {Number} userID User ID to filter messages with\r\n * @param {Array} messages Array of all messages\r\n *\r\n * @return {Array} The difference between all messages and dismissed messages\r\n */\r\n getRelevantMessages(userID, messages) {\r\n let dismissedMessages = this.getFromStorage(String(userID) + ':dismissed-messages');\r\n if (_.isUndefined(dismissedMessages)) dismissedMessages = [];\r\n let relevantMessages = [];\r\n _.map(messages, message => {\r\n if (dismissedMessages.includes(message.messageID)) return;\r\n relevantMessages.push(message);\r\n });\r\n\r\n return relevantMessages;\r\n }\r\n\r\n /**\r\n * Checks to see if fees are stored in local storage. Redux-persist takes too long to load on refresh.\r\n *\r\n * @return {Bool} Whether or not fees are in local storage\r\n */\r\n hasFees() {\r\n let patronPersist = this.getFromStorage('reduxPersist:patrons');\r\n if (_.isUndefined(patronPersist)) return false;\r\n return !_.isEmpty(patronPersist.fees);\r\n }\r\n\r\n hasMessages() {\r\n let userPersist = this.getFromStorage('reduxPersist:user');\r\n if (_.isUndefined(userPersist)) return false;\r\n return !_.isUndefined(userPersist.messages);\r\n }\r\n\r\n hasmPowerStudents(patrons) {\r\n let mt5Students = false;\r\n if (_.isEmpty(patrons)) return mt5Students;\r\n for (let patronAcct of patrons) {\r\n for (let patron of patronAcct.patrons) {\r\n if (patron.schoolMT5) mt5Students = true;\r\n }\r\n }\r\n\r\n return mt5Students;\r\n }\r\n\r\n hasPatrons() {\r\n let patronPersist = this.getFromStorage('reduxPersist:patrons');\r\n if (_.isUndefined(patronPersist)) return false;\r\n return !_.isEmpty(patronPersist.patrons);\r\n }\r\n\r\n hasPaymentExpired(method) {\r\n if(_.isUndefined(method)) return false;\r\n\r\n let today = new Date();\r\n if (method.expYear > today.getFullYear()) {\r\n return false;\r\n } else if (method.expYear === today.getFullYear()) {\r\n if (method.expMonth >= today.getMonth() + 1) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n willMethodExpire(method) {\r\n if(_.isUndefined(method)) return false;\r\n\r\n let today = new Date();\r\n if (method.expYear === today.getFullYear() && method.expMonth === today.getMonth() + 1) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n hasPaymentMethods() {\r\n let transPersist = this.getFromStorage('reduxPersist:trans');\r\n if (_.isUndefined(transPersist)) return false;\r\n return !_.isUndefined(transPersist.methods);\r\n }\r\n\r\n hasReceipts() {\r\n let cartPersist = this.getFromStorage('reduxPersist:cart');\r\n if (_.isUndefined(cartPersist)) return false;\r\n return !_.isEmpty(cartPersist.receipts);\r\n }\r\n\r\n hasScheduledDeposits() {\r\n let subPersist = this.getFromStorage('reduxPersist:sub');\r\n if (_.isUndefined(subPersist)) return false;\r\n return !_.isUndefined(subPersist.subscriptions);\r\n }\r\n\r\n hasTokenExpired(lastActivity, tokenLength) {\r\n const SESSION_TIMEOUT = tokenLength / 60;\r\n return this.minutesSince(lastActivity) >= SESSION_TIMEOUT;\r\n }\r\n\r\n hasUser() {\r\n let userPersist = this.getFromStorage('reduxPersist:user');\r\n if (_.isUndefined(userPersist)) return false;\r\n return (!_.isUndefined(userPersist.id) && !_.isUndefined(userPersist.userInfo.email));\r\n }\r\n\r\n /**\r\n * Returns whether or not the environment is mobile app\r\n */\r\n isApp() {\r\n return !_.isUndefined(window.Capacitor);\r\n }\r\n\r\n /**\r\n * Checks if the site falls under the mobile width\r\n * @return {Bool} True if site width is less than 992px\r\n */\r\n isMobile() {\r\n const MOBILE = 992;\r\n return window.innerWidth < MOBILE;\r\n }\r\n\r\n /**\r\n * Checks if there is limited screen width for element rendering\r\n * @return {Bool}\r\n */\r\n isSmallFormFactor() {\r\n const SMALLFORM = 400;\r\n return window.innerWidth < SMALLFORM;\r\n }\r\n\r\n /**\r\n * Checks whether or not a modal is currently open\r\n *\r\n * @return {Bool} True if modal is open, false...if it's not\r\n */\r\n isModalOpen() {\r\n let modal = document.querySelector('.modal.show');\r\n return modal !== null;\r\n }\r\n\r\n /**\r\n * Checks if n is a number or not.\r\n * Since _.isNumber returns true on NaN\r\n * @param {Number} n The thing we want to see if it's a number or not\r\n *\r\n * @return {Bool} True if it's a number\r\n */\r\n isNumber(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n /**\r\n * Checks if \"remember me\" was checked. If remember me is checked, the token is stored in\r\n * local storage. If it's not, it's stored in session storage.\r\n *\r\n * @return {Bool} True if token is in local storage\r\n */\r\n isPersisted() {\r\n // let cookie = document.cookie.match(/^(.*;)?\\s*token\\s*=\\s*[^;]+(.*)?$/);\r\n let token = this.getFromStorage('token');\r\n return !_.isUndefined(token);\r\n }\r\n\r\n /**\r\n * Check how many minutes it's been since the date passed\r\n * @param {Date} since Date to compare against\r\n *\r\n * @return {Bool} Number of minutes since the date passed\r\n */\r\n minutesSince(since) {\r\n const current = new Date();\r\n let diff = Math.abs(current - since);\r\n return Math.floor((diff / 1000) / 60);\r\n }\r\n\r\n /**\r\n * Turns an array of names into a string of \"a, b, & c\"\r\n * @param {Array} names Array of names. Doesn't have to be names I guess.\r\n *\r\n * @return {String} String of names joined together\r\n */\r\n multiNameString(names) {\r\n return [names.slice(0, -1).join(', '), names.slice(-1)[0]].join(names.length < 2 ? '' : ' & ');\r\n }\r\n\r\n /**\r\n * Returns a string created by an array of student names\r\n * @param {Array} students Array of student full names\r\n * @param {Boolean} first Whether or not to print just the first names\r\n *\r\n * @return {String} String of names joined together\r\n */\r\n nameFormat(students, first = false) {\r\n let names = _.map(students, name => {\r\n // Only return the first name\r\n if (first) {\r\n name = name.substr(0, name.indexOf(' '));\r\n }\r\n return name;\r\n });\r\n return this.multiNameString(names);\r\n }\r\n\r\n /**\r\n * Plucks first names from patron objects, returns as string\r\n * @param {Array} students Array of patron objects\r\n *\r\n * @return {String} String of first names\r\n */\r\n namesOnAccount(students) {\r\n let names = _.pluck(students, 'firstName');\r\n\r\n return this.multiNameString(names);\r\n }\r\n\r\n /**\r\n * Turns 1 into 1.00\r\n * @param {Event} e Event to normalize\r\n */\r\n normalizeInput(e) {\r\n if (_.isEmpty(e.target.value)) return;\r\n e.target.value = Number(e.target.value).toFixed(2);\r\n }\r\n\r\n /**\r\n * onInput validation to make sure only numbers are inputted. If the user\r\n * enters a non-number, the character is removed.\r\n * @param {Event} e Event to check against\r\n */\r\n numbersOnly(e) {\r\n const value = e.currentTarget.value;\r\n let validValue = '';\r\n _.map(value, char => {\r\n if (this.isNumber(char)) validValue += char;\r\n });\r\n // No need to set it every time. Would constantly be moving the cursor\r\n if (value !== validValue) e.currentTarget.value = validValue;\r\n }\r\n\r\n /**\r\n * onInput validation to make sure only numbers are inputted. If the user\r\n * enters a non-number, the character is removed. Adds decimals to the values atumatically\r\n * @param {Event} e Event to check against\r\n */\r\n moneyOnly(e) {\r\n const value = e.currentTarget.value;\r\n let validValue = '';\r\n\r\n _.map(value, char => {\r\n if (this.isNumber(char)) validValue += char;\r\n });\r\n\r\n let valueDisplay = (validValue/100).toFixed(2);\r\n e.currentTarget.value = valueDisplay === '0.00' ? '' : valueDisplay;\r\n }\r\n\r\n /**\r\n * Returns Utils information about the reauth\r\n * fingerprint dialog and modal\r\n * @return {Object} Reauth details\r\n */\r\n getReauthDialog() {\r\n return reauthDialog;\r\n }\r\n\r\n /**\r\n * Reauthenticates correctly based on environment\r\n * @param {Number} userID User ID to reauthenticate\r\n * @param {Function} dispatch Dispatch function\r\n */\r\n reauthenticate(userID, dispatch) {\r\n this.clearToken();\r\n reauthDialog.timestamp = Date.now();\r\n\r\n $('#reauth').modal({\r\n backdrop: 'static',\r\n keyboard: false\r\n });\r\n\r\n if(this.isApp()) {\r\n (async () => {\r\n reauthDialog.status = 1;\r\n const verified = await verifyBiometric('Sign in for \"My MealTime\"', 'Your session has expired. Please sign in with your finger to continue.', userID);\r\n\r\n if(verified) {\r\n reauthDialog.status = 0;\r\n let reauth = Date.now() - reauthDialog.timestamp < reauthDialog.timeout ? true : false\r\n\r\n const biometryData = JSON.parse(verified.password);\r\n const authHash = this.createHmacSHA1(String(biometryData.persistedUserID), biometryData.key);\r\n dispatch(pinSignIn(authHash.toString(), biometryData.pinToken, undefined, reauth));\r\n } else {\r\n reauthDialog.status = 0;\r\n return;\r\n }\r\n })();\r\n }\r\n }\r\n\r\n /**\r\n * Refreshes the site, and clears the cache to load new version of site.\r\n */\r\n reloadSiteAndCache() {\r\n // Refresh the page and clear the cache to get the new version\r\n location.reload(true);\r\n }\r\n\r\n /**\r\n * Converts rgb color string into a hex string\r\n * @param {String} rgb RGB color string\r\n *\r\n * @return {String} Color as a hex\r\n */\r\n rgb2hex(rgb) {\r\n rgb = rgb.match(/^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/);\r\n function hex(x) {\r\n return (\"0\" + parseInt(x).toString(16)).slice(-2);\r\n }\r\n return \"#\" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);\r\n }\r\n\r\n /**\r\n * remove white spaces and generate string id\r\n * @param {String} string meaningful element name\r\n * @return {String} string with no white spaces\r\n */\r\n setElementId(string) {\r\n return (string.replace(/\\s/g, \"\"));\r\n }\r\n\r\n /**\r\n * Sets the color of the app status bar based on the color of the header\r\n */\r\n setStatusBarColor() {\r\n const headerRGB = $('header').css('background-color');\r\n if (!_.isEmpty(headerRGB) && window.StatusBar) {\r\n StatusBar.backgroundColorByHexString(this.rgb2hex(headerRGB));\r\n }\r\n }\r\n\r\n /**\r\n * Stores the token based on login\r\n * @param {String} token Token to store\r\n * @param {Bool} persist Whether or not \"Remember me\" was checked\r\n */\r\n setToken(token, persist) {\r\n if (persist) {\r\n this.updateStorage('token', token);\r\n } else {\r\n this.updateSession('token', token);\r\n }\r\n // if (persist) document.cookie = 'token=' + token;\r\n }\r\n\r\n /**\r\n * Creates a temporary account ID for when patronAccountNum is null\r\n *\r\n * @return {Number} Negative number for temporary patronAccountNUm\r\n */\r\n tempAccountID() {\r\n const min = 100;\r\n const max = 999;\r\n return -1 * (Math.floor(Math.random() * (max - min)) + min);\r\n }\r\n\r\n /**\r\n * Prints time as a string\r\n * @param {Date} date Date with time to print\r\n *\r\n * @return {String} Time as hh:mm\r\n */\r\n timeFormat(date) {\r\n return date.toLocaleTimeString('en-US', {\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n hour12: true\r\n });\r\n }\r\n\r\n /**\r\n * Converts \"A string that looks like this\" to\r\n * \"A String That Looks Like This\"\r\n * @param {String} str String to convert\r\n *\r\n * @return {String} Title case string\r\n */\r\n toTitleCase(str) {\r\n return str.replace(/\\w\\S*/g, function(txt) {\r\n // There are more words that fit this,\r\n // but these are the only ones we will be using.\r\n const nonPrincipal = ['of', 'the'];\r\n if (nonPrincipal.includes(txt)) return txt;\r\n return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Removes any patron data for accounts that may have been removed\r\n * @param {Object} sub Scheduled deposit to \"trim\"\r\n */\r\n trimSubscription(sub, patrons) {\r\n let newSub = {...sub};\r\n let activePatrons = [];\r\n for (let dep of newSub.details) {\r\n let patronFound = this.findPatronInAccounts(dep.patron.patronID, patrons);\r\n let patronBlocked = this.patronInBlockedAccount(dep.patron.patronID, patrons);\r\n\r\n if (_.isUndefined(patronFound) || !_.isUndefined(patronBlocked)) {\r\n // If the patron is missing or blocked, don't add to array\r\n continue;\r\n }\r\n\r\n activePatrons.push(dep);\r\n }\r\n\r\n newSub.details = activePatrons;\r\n\r\n return newSub;\r\n }\r\n\r\n /**\r\n * Handles the changing and opening of the general use modal\r\n * @param {String} type Modal we want opened\r\n * @param {Object} props Props to pass to that modal\r\n */\r\n updateModal(type, props) {\r\n const detail = {\r\n type: type,\r\n props: props\r\n };\r\n document.dispatchEvent(new CustomEvent('update-modal', {detail: detail}));\r\n if (!this.isModalOpen()) {\r\n $('.gen-modal').modal({\r\n backdrop: 'static'\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Friendlier session setting function\r\n * @param {String} key Key of item to store\r\n * @param {Object} value Item to store\r\n */\r\n updateSession(key, value) {\r\n if (('sessionStorage' in window) && window.sessionStorage !== null) {\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n\r\n /**\r\n * Friendlier local storage setting function\r\n * @param {String} key Key of item to store\r\n * @param {Object} value Item to store\r\n */\r\n updateStorage(key, value) {\r\n if (('localStorage' in window) && window.localStorage !== null) {\r\n localStorage.setItem(key, JSON.stringify(value));\r\n }\r\n }\r\n\r\n /**\r\n * Email validation function\r\n * @param {String} email Email address to validate\r\n *\r\n * @return {Bool} Whether the email is valid\r\n */\r\n validateEmail(email) {\r\n let japRe = /[\\u3000-\\u303F]|[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\uFF00-\\uFFEF]|[\\u4E00-\\u9FAF]|[\\u2605-\\u2606]|[\\u2190-\\u2195]|\\u203B/g;\r\n if (japRe.test(email)) {\r\n return false;\r\n }\r\n //Mimicing API's email.\r\n //For this to work, there were changes that had to be made to translate\r\n //the lookaheads and lookbehinds used on the API as they are not supported by javascript.\r\n //For a description of regex logic go to link below.\r\n //https://github.com/dotnet/docs/blob/master/docs/standard/base-types/how-to-verify-that-strings-are-in-valid-email-format.md\r\n const emailRe = /^(?:(?=\")(\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"@)|(?!\")(([0-9a-z]((\\.(?!\\.))|[-!#$%&'*+\\/=?^`{}|~\\w])*)?[a-z0-9]@))((\\[(\\d{1,3}\\.){3}\\d{1,3}\\])|(([0-9a-z][-\\w]*[0-9a-z]*\\.)+[a-z0-9][-a-z0-9]{0,22}[a-z0-9]))$/i;\r\n return emailRe.test(email);\r\n }\r\n\r\n /**\r\n * Vibrate function\r\n * @param {Number} time Milliseconds to vibrate device\r\n */\r\n vibrate(time) {\r\n if (navigator && navigator.vibrate) {\r\n navigator.vibrate(time);\r\n }\r\n }\r\n\r\n /**\r\n * String to array\r\n * @param {Object} stringObject string object to parse\r\n * @param {String} delimiter regex delimiter\r\n * @return {Array} Splitted string array\r\n */\r\n stringToArray(stringObject, delimiter) {\r\n\r\n let splitted = [];\r\n\r\n if(stringObject.match(delimiter)) {\r\n stringObject.split(delimiter).map(function (val) {\r\n splitted.push(val);\r\n })\r\n } else {\r\n splitted.push(stringObject);\r\n }\r\n\r\n return splitted;\r\n }\r\n\r\n /**\r\n * Checks if amount is invalid or not\r\n * @param {String} inputString\r\n * @return {Bool} if dollar value valid\r\n */\r\n isInValidAmount(inputString) {\r\n let amount = Number(inputString);\r\n let isInvalid = false;\r\n\r\n if(amount > 0 && amount < 1) isInvalid = true;\r\n\r\n if(amount > 50000) isInvalid = true;\r\n\r\n return isInvalid;\r\n }\r\n\r\n //TODO Refactor\r\n /**\r\n * Check if account can make deposit\r\n *\r\n * @param {Object} patron\r\n * @return {Object} validations result\r\n */\r\n canDeposit(patron) {\r\n let result = {\r\n canDeposit: true,\r\n reason: '',\r\n showBalance: true,\r\n msg: ''\r\n };\r\n\r\n let defaultSchoolActiveStatus;\r\n let inActiveClassicStudent;\r\n let noCheckingAccount;\r\n let inActiveMPowerStudent;\r\n let studentSchoolName;\r\n\r\n //if patron obj does not have patrons. This obj was deleted from user profile\r\n if(_.isUndefined(patron.patrons)) {\r\n result = {\r\n canDeposit: false,\r\n reason: 'DeletedFromAccount',\r\n showBalance: false,\r\n msg: \"This student/s are no longer associated with your MyMealTime.com account.\"\r\n }\r\n return result;\r\n }\r\n\r\n //get the default student's school active status\r\n for(let stu of patron.patrons) {\r\n if(stu.patronID === patron.defaultPatronID) {\r\n defaultSchoolActiveStatus = stu.schoolActive;\r\n inActiveClassicStudent = (!stu.patronActive && !stu.schoolMT5);\r\n inActiveMPowerStudent = (!stu.patronActive && stu.schoolMT5);\r\n studentSchoolName = stu.schoolName;\r\n noCheckingAccount = (_.isNull(stu.posCheckingAccountActive) || _.isNull(stu.posCheckingAccountID)) ? true : false;\r\n }\r\n }\r\n\r\n //Inactive school or district\r\n if(!defaultSchoolActiveStatus || !patron.districtActive ) {\r\n result = {\r\n canDeposit: false,\r\n reason: 'InactiveSchoolOrDistrict',\r\n showBalance: false,\r\n msg: \"Your school is no longer accepting deposits or sharing information with you via this service. For more information, please contact the food service officials at your school or school district.\"\r\n }\r\n return result;\r\n }\r\n\r\n //Inactive Classic student\r\n if(inActiveClassicStudent) {\r\n result = {\r\n canDeposit: false,\r\n reason: 'InactiveClassicStudent',\r\n showBalance: false,\r\n msg: \"You may not make online deposits for this Cafeteria Account at this time. Please contact your school or school district for further assistance.\"\r\n }\r\n return result;\r\n }\r\n\r\n //blocked/prohibited patron account\r\n if(patron.paymentsProhibited) {\r\n result = {\r\n canDeposit: false,\r\n reason: 'Blocked/ProhibitedAccount',\r\n showBalance: true,\r\n msg: \"You may not make online deposits for this Cafeteria Account at this time. Please contact your school or school district for further assistance.\"\r\n }\r\n return result;\r\n }\r\n\r\n // Missing or inactive checking account (if a shared account, all students must meet this condition, otherwise the deposit is allowed)\r\n if (noCheckingAccount) {\r\n result = {\r\n canDeposit: false,\r\n reason: 'InactiveCheckingAccount',\r\n showBalance: true,\r\n msg: \"The school is not accepting deposits right now. Please try again later, or contact the food service officials at your school or school district for immediate assistance.\"\r\n }\r\n return result;\r\n }\r\n\r\n //mPowerUnavailable\r\n if(patron.lastPosDepositDateTimeUnavailable || _.isNull(patron.balance)) {\r\n result = {\r\n canDeposit: true,\r\n reason: 'mPowerUnavailable',\r\n showBalance: false,\r\n msg: \"The requested information from your school is temporarily unavailable, but should return shortly. For immediate assistance, please contact the food service officials at your school or school district.\"\r\n }\r\n return result;\r\n }\r\n\r\n //inactive and an mPower student\r\n if(inActiveMPowerStudent) {\r\n result = {\r\n canDeposit: true,\r\n reason: 'inActiveMPowerStudent',\r\n showBalance: true,\r\n msg: \"This student's enrollment status has been set to 'Inactive' by \" + studentSchoolName + \". Are you sure you want to add funds to their \" + studentSchoolName + \" Cafeteria Account?\"\r\n }\r\n return result;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get Subscription that matches id\r\n *\r\n * @param {Object} id\r\n * @return {Object} subscription that matches id\r\n */\r\n getSubcriptionByID(scheduledDepositID) {\r\n let subPersist = this.getFromStorage('reduxPersist:sub');\r\n return _.findWhere(subPersist.subscriptions, {scheduledDepositID});\r\n }\r\n\r\n /**\r\n * Formats receipt items labels appropriately\r\n *\r\n * @param {Object} item\r\n * @param {String} context\r\n */\r\n formatSchoolFeeLabels(context, item) {\r\n let qty = '';\r\n let plural = '';\r\n\r\n if(item.quantity > 0) {\r\n qty = item.quantity;\r\n }\r\n\r\n if(context === 'receipt') {\r\n return item.patronNames + ' - ' + qty + ' ' + item.schoolFeeName + plural\r\n } else { //fee page\r\n return qty + ' ' + item.schoolFeeName + plural\r\n }\r\n\r\n }\r\n\r\n getPaymentByStripeIDFromStorage(id) {\r\n let transPersist = this.getFromStorage('reduxPersist:trans');\r\n if(_.isUndefined(transPersist)) {\r\n return {};\r\n } else {\r\n if(_.isUndefined(transPersist.methods)) {\r\n return {};\r\n } else {\r\n return _.findWhere(transPersist.methods, {stripeCardID: id});\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Get CartKey from storage\r\n * @return {uuid} unique key of cart\r\n */\r\n getCartKey() {\r\n let cartPersist = this.getFromStorage('reduxPersist:cart');\r\n if (_.isUndefined(cartPersist)) return ''; //let the api give as an error\r\n return cartPersist.cartKey;\r\n }\r\n\r\n /**\r\n * Return a string containing the first normalChars characters\r\n * of string combined with maskedChars of the mask character\r\n *\r\n * @param {string} string String to mask\r\n * @param {number} normalChars Number of character to leave unmasked\r\n * @param {number} maskedChars Number of masked characters to append\r\n * @param {string} mask Character mask\r\n *\r\n * @return {string} maskedString\r\n */\r\n maskString(string, normalChars, maskedChars, mask) {\r\n let maskedString = '';\r\n\r\n for (let i = 0; i < normalChars; i++) {\r\n maskedString = maskedString + string.charAt(i);\r\n }\r\n\r\n for (let i = 0; i < maskedChars; i++) {\r\n maskedString = maskedString + mask;\r\n }\r\n\r\n return maskedString;\r\n }\r\n\r\n\r\n /**\r\n * Shallow check for iOS Safari\r\n */\r\n isMobileSafari() {\r\n //shallow check\r\n const ua = window.navigator.userAgent;\r\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\r\n const webKit = !!ua.match(/WebKit/i);\r\n const chrmiOS = !ua.match(/CriOS/i);\r\n return (iOS && webKit && chrmiOS);\r\n }\r\n\r\n /**\r\n * Check for android device\r\n * @return {bool} User agent contains android\r\n */\r\n isAndroid() {\r\n return /(Android)/i.test(navigator.userAgent);\r\n }\r\n\r\n /**\r\n * Check if enter key was pressed and clicks target.\r\n * Should be used for adding accessibility access to\r\n * certain elements.\r\n *\r\n * @param {event} e Standard event\r\n */\r\n accessibleEnterKey(e) {\r\n if (e.key === \"Enter\") {\r\n e.currentTarget.click();\r\n }\r\n }\r\n\r\n /**\r\n * get current school year\r\n * @return {obj} school year obj\r\n */\r\n getSchoolYear() {\r\n let t = new Date();\r\n let month = t.getMonth();\r\n let year = t.getFullYear();\r\n\r\n let startYear = '';\r\n let endYear = '';\r\n let fromDate = '-07-01';\r\n let toDate = '-06-30';\r\n let adStart = (new Date(year + '/07/01'));\r\n let adEnd = (new Date(year + '/10/01'));\r\n let showAds = (t > adStart && t < adEnd);\r\n\r\n if (month >= 6) { // Between July - December\r\n startYear = year;\r\n endYear = (year + 1);\r\n fromDate = year + fromDate;\r\n toDate = (year + 1) + toDate;\r\n } else { // Into next year\r\n startYear = (year - 1);\r\n endYear = year;\r\n fromDate = (year - 1) + fromDate;\r\n toDate = year + toDate;\r\n }\r\n\r\n return {\r\n schoolStartDate: fromDate,\r\n schoolEndDate: toDate,\r\n schoolStartYear: startYear,\r\n schoolEndYear: endYear,\r\n showAds: showAds\r\n };\r\n }\r\n\r\n /**\r\n * generate a readable error message for screen readers\r\n * @param {errors} errors array {id, message}\r\n * @return {string} screen reader message\r\n */\r\n generateSROnlyErrorMsg(errors) {\r\n let msg = '';\r\n let customErrMsg = {\r\n pauseEndDate: {\r\n apiMessage: \"Not able to parse method input.\",\r\n custom: \"Invalid Date\"\r\n }\r\n };\r\n\r\n if (errors.length > 1) {\r\n msg = \"There are \" + errors.length + \" errors in the form.\";\r\n } else if (errors.length === 1) {\r\n msg = \"There is an error in the form.\";\r\n } else {\r\n msg = \"\";\r\n }\r\n let i = 1;\r\n for(let err of errors) {\r\n msg += \" \" + i++ + \" of \" + errors.length + \", \" + ((customErrMsg[err.id] && customErrMsg[err.id].apiMessage === err.message) ? customErrMsg[err.id].custom : err.message);\r\n }\r\n return msg;\r\n }\r\n\r\n /**\r\n * handle openning of links for web and mobile\r\n */\r\n openLink(url, target) {\r\n if (window.Capacitor) {\r\n (window.Capacitor.Plugins.Browser).open({ url: url})\r\n } else {\r\n window.open(url, target);\r\n }\r\n }\r\n\r\n /**\r\n * createHashKey\r\n * Creates secret key used in hashing function\r\n *\r\n * @return {string} Secret key\r\n */\r\n createHashKey() {\r\n return CryptoJS.lib.WordArray.random(64).toString();\r\n }\r\n\r\n /**\r\n * createHmacSHA1\r\n * Creates HmacSHA1 hash\r\n * @param {string} message Message to be hashed\r\n * @param {string} key Secret key used to create hash\r\n *\r\n * @return {object} Hashed object\r\n */\r\n createHmacSHA1(message, key) {\r\n return CryptoJS.HmacSHA1(message, key);\r\n }\r\n}\r\n\r\nconst UT = new Utils();\r\n\r\nexport default UT;\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/js/utils.js","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_array-methods.js\n// module id = 59\n// module chunks = 0","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_defined.js\n// module id = 60\n// module chunks = 0","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-sap.js\n// module id = 61\n// module chunks = 0","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-primitive.js\n// module id = 62\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactUpdates.js\n// module id = 63\n// module chunks = 0","import axios from 'axios';\nimport axiosRetry from 'axios-retry';\nimport Utils from '../../common/js/utils.js';\nimport * as types from '../constants/SubConstants.js';\n\nimport {version} from '../../version.json';\n\nimport {removeRememberAlert} from './RememberAction.js'\n\naxiosRetry(axios, {retries: 3, retryCondition: (error) => {\n if (error.response.status === 500) return true;\n return false;\n}});\n\nconst currentTime = new Date();\n\nlet subCall = axios.create({\n baseURL: APP_API + 'ScheduledDeposit/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nlet cartCall = axios.create({\n baseURL: APP_API + 'Deposit/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nlet testCall = axios.create({\n baseURL: APP_API + 'Test/',\n headers: {\n 'API-Changeset': API_CHANGESET,\n 'Version': version,\n 'Content-Type': 'application/json',\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\n }\n});\n\nexport function updateSubscriptionPaused(sub) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.UPDATE_SUB});\n\n let apiBody = {\n scheduledDepositID: sub.id,\n paused: sub.isPaused,\n pauseEndDate: sub.pauseEndDate\n }\n subCall.post('/UpdateScheduledDepositPaused', apiBody)\n .then(response => {\n dispatch(updateSubscriptionSuccess(response.data));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(updateSubscriptionFailure());\n });\n };\n}\n\nexport function getScheduledDeposits() {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.GET_SUBS});\n subCall.post('/GetScheduledDepositsByUserToken')\n .then(response => {\n dispatch(getScheduledDepositsSuccess(response.data));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(getScheduledDepositsFailure());\n });\n };\n}\n\nfunction getScheduledDepositsSuccess(subs) {\n return {\n type: types.GET_SUBS_SUCCESS,\n payload: subs\n };\n}\n\nfunction getScheduledDepositsFailure() {\n return {\n type: types.GET_SUBS_FAILURE\n };\n}\n\nexport function loadSubscriptionForm(sub) {\n return {\n type: types.LOAD_SUB_FORM,\n payload: sub\n };\n}\n\nexport function updateSubscriptionForm(sub) {\n return {\n type: types.UPDATE_SUB_FORM,\n payload: sub\n };\n}\n\nexport function saveSubscriptionForm(sub, dispatch) {\n return function(dispatch){\n dispatch({type: types.SAVE_SUB_FORM});\n //calculate fee\n cartCall.defaults.headers.common['User-Token'] = Utils.checkForToken();\n\n cartCall.post('/CalculateTotalUserFee', {\n depositDetails: _.map(sub.getDeposits(), Utils.formatCartItem)\n })\n .then(response => {\n if (response.status === 200) {\n sub.setFee(response.data.totalUserFeeAmount);\n sub.setMinDepositAmount(response.data.minDepositAmount); \n dispatch(updateSubscriptionForm(sub));\n\n if(sub.getSubTotal() >= response.data.minDepositAmount ) {\n subCall.post('/CalculateNextScheduledDate', {\n scheduleTypeID: sub.interval,\n intervalID: sub.getIntervalID(),\n dayOfWeek: sub.dayOfWeek,\n pauseEndDate: sub.pauseEndDate\n })\n .then(response => {\n sub.nextScheduledDate = response.data.nextScheduledDate;\n dispatch(saveSubscriptionFormSuccess(sub, dispatch));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(saveSubscriptionFormFailure());\n });\n }\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(saveSubscriptionFormFailure());\n });\n }\n}\n\nfunction saveSubscriptionFormSuccess(sub, dispatch) {\n Utils.updateModal('subscription-confirmation', {\n loadedSud: sub,\n dispatch: dispatch\n });\n return {\n type: types.SAVE_SUB_FORM_SUCCESS\n };\n}\n\nfunction saveSubscriptionFormFailure(sub) {\n return {\n type: types.SAVE_SUB_FORM_FAILURE\n };\n}\n\nexport function deleteSubscriptionForm() {\n return {\n type: types.DELETE_SUB_FORM\n };\n}\n\nexport function newSubscription(sub) {\n return {\n type: types.NEW_SUB,\n payload: sub // Only the default payment is sent\n };\n}\n\nexport function loadSubscription(sub) {\n return {\n type: types.LOAD_SUB,\n payload: sub\n };\n}\n\nexport function addNewSubscription(sub) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.CREATE_SUB});\n\n subCall.post('/AddScheduledDeposit', sub.getApiBody())\n .then(response => {\n if (response.status === 200) {\n dispatch(addNewSubscriptionSuccess(response.data));\n }\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(addNewSubscriptionFailure());\n });\n };\n}\n\nfunction addNewSubscriptionSuccess(sub) {\n Utils.updateModal('confirm', {\n msg: 'You have successfully created a new scheduled deposit.',\n timeout: 3000,\n styleClass: 'level1'\n });\n\n return {\n type: types.CREATE_SUB_SUCCESS,\n payload: sub\n };\n}\n\nfunction addNewSubscriptionFailure() {\n return {\n type: types.CREATE_SUB_FAILURE\n };\n}\n\nexport function updateSubscription(sub) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.UPDATE_SUB});\n\n let apiBody = sub.getApiBody();\n apiBody.scheduledDepositID = sub.id;\n\n subCall.post('/UpdateScheduledDeposit', apiBody)\n .then(response => {\n dispatch(updateSubscriptionSuccess(response.data));\n dispatch(\n removeRememberAlert({alert: \"scheduledDeposit\", scheduledDepositID: response.data.scheduledDepositID})\n );\n dispatch(\n removeRememberAlert({alert: \"scheduledDepositError\", scheduledDepositID: response.data.scheduledDepositID})\n );\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(updateSubscriptionFailure());\n });\n };\n}\n\nfunction updateSubscriptionSuccess(sub) {\n Utils.updateModal('confirm', {\n msg: 'Your settings have been saved.',\n timeout: 3000,\n styleClass: 'level1'\n });\n\n return {\n type: types.UPDATE_SUB_SUCCESS,\n payload: sub\n };\n}\n\nfunction updateSubscriptionFailure() {\n return {\n type: types.UPDATE_SUB_FAILURE\n };\n}\n\nexport function deleteSubscription(scheduledDepositID) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.DELETE_SUB});\n\n subCall.post('/DeleteScheduledDeposit', {\n scheduledDepositID: scheduledDepositID\n })\n .then(response => {\n dispatch(deleteSubscriptionSuccess(scheduledDepositID));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(deleteSubscriptionFailure());\n });\n };\n}\n\nfunction deleteSubscriptionSuccess(sub) {\n Utils.updateModal('confirm', {\n msg: 'You have successfully deleted a scheduled deposit.',\n timeout: 3000,\n styleClass: 'level1'\n });\n return {\n type: types.DELETE_SUB_SUCCESS,\n payload: sub\n };\n}\n\nfunction deleteSubscriptionFailure() {\n return {\n type: types.DELETE_SUB_FAILURE\n };\n}\n\nexport function getSubscriptionFee(deposits) {\n return function(dispatch) {\n cartCall.defaults.headers.common['User-Token'] = Utils.checkForToken();\n dispatch({type: types.CALC_SUB_FEE});\n if (_.isEmpty(deposits)) {\n dispatch(getSubscriptionFeeSuccess(0));\n return;\n }\n cartCall.post('/CalculateTotalUserFee', {\n depositDetails: _.map(deposits, Utils.formatCartItem)\n })\n .then(response => {\n if (response.status === 200) {\n dispatch(getSubscriptionFeeSuccess(response.data.totalUserFeeAmount));\n }\n })\n .catch(function(error) {\n Utils.dispatchError(error, dispatch);\n dispatch(getSubscriptionFeeFailure());\n });\n };\n}\n\nexport function getSubscriptionFeeSuccess(fee) {\n return {\n type: types.CALC_SUB_FEE_SUCCESS,\n payload: fee\n };\n}\n\nfunction getSubscriptionFeeFailure() {\n return {\n type: types.CALC_SUB_FEE_FAILURE\n };\n}\n\nexport function validateScheduledDeposit(depositID) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.VALIDATE_SUB});\n\n testCall.post('/ValidateScheduledDeposit', {\n scheduledDepositID: depositID\n })\n .then(response => {\n dispatch(validateScheduledDepositSuccess(depositID));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(validateScheduledDepositFailure());\n });\n };\n}\n\nfunction validateScheduledDepositSuccess(response) {\n return {\n type: types.VALIDATE_SUB_SUCCESS\n };\n}\n\nfunction validateScheduledDepositFailure() {\n return {\n type: types.VALIDATE_SUB_FAILURE\n };\n}\n\nexport function runScheduledDeposit(depositID) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.RUN_SUB});\n\n testCall.post('/ExecuteScheduledDeposit', {\n scheduledDepositID: depositID\n })\n .then(response => {\n dispatch(runScheduledDepositSuccess(depositID));\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(runScheduledDepositFailure());\n });\n };\n}\n\nfunction runScheduledDepositSuccess(response) {\n return {\n type: types.RUN_SUB_SUCCESS\n };\n}\n\nfunction runScheduledDepositFailure(response) {\n return {\n type: types.RUN_SUB_FAILURE\n };\n}\n\nexport function getResumeDate(sub) {\n return function(dispatch) {\n subSetToken();\n dispatch({type: types.GET_RESUME_DATE});\n\n subCall.post('/CalculateNextScheduledDate', {\n scheduleTypeID: sub.scheduleTypeId,\n intervalID: sub.intervalId,\n dayOfWeek: sub.dayOfWeek,\n pauseEndDate: null\n })\n .then(response => {\n dispatch(getResumeDateSuccess(response.data.nextScheduledDate, sub))\n })\n .catch(error => {\n Utils.dispatchError(error, dispatch);\n dispatch(getResumeDateFailure());\n });\n };\n}\n\nfunction getResumeDateSuccess(nextScheduledDate, sub) {\n let nextDate = Utils.dateFormat(Utils.convertFromDatetime(nextScheduledDate));\n let msg = \"Do you want to resume? The next scheduled deposit will take place on \" + nextDate + \".\"\n\n Utils.updateModal('confirm', {\n header: \"Resume this Scheduled Deposit\",\n msg: msg,\n okTitle: \"OK\",\n cancelable: true,\n clickHandler: () => {\n let updatedSub = {\n id: sub.scheduledDepositId,\n isPaused: false,\n pauseEndDate: null\n }\n sub.dispatch(updateSubscriptionPaused(updatedSub));\n }\n });\n return {\n type: types.GET_RESUME_DATE_SUCCESS\n }\n}\n\nfunction getResumeDateFailure() {\n return {\n type: types.GET_RESUME_DATE_FAILURE\n };\n}\n\nexport function subSetToken(token = Utils.checkForToken()) {\n subCall.defaults.headers.common['User-Token'] = token;\n return token;\n}\n\n\n// WEBPACK FOOTER //\n// app/common/actions/SubAction.js","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_metadata.js\n// module id = 65\n// module chunks = 0","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_typed-array.js\n// module id = 66\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar React = require('react');\nvar factory = require('./factory');\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/create-react-class/index.js\n// module id = 67\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticEvent.js\n// module id = 68\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactCurrentOwner.js\n// module id = 69\n// module chunks = 0","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport isRetryAllowed from 'is-retry-allowed';\nvar namespace = 'axios-retry';\n/**\n * @param {Error} error\n * @return {boolean}\n */\n\nexport function isNetworkError(error) {\n return !error.response && Boolean(error.code) && // Prevents retrying cancelled requests\n error.code !== 'ECONNABORTED' && // Prevents retrying timed out requests\n isRetryAllowed(error); // Prevents retrying unsafe errors\n}\nvar SAFE_HTTP_METHODS = ['get', 'head', 'options'];\nvar IDEMPOTENT_HTTP_METHODS = SAFE_HTTP_METHODS.concat(['put', 'delete']);\n/**\n * @param {Error} error\n * @return {boolean}\n */\n\nexport function isRetryableError(error) {\n return error.code !== 'ECONNABORTED' && (!error.response || error.response.status >= 500 && error.response.status <= 599);\n}\n/**\n * @param {Error} error\n * @return {boolean}\n */\n\nexport function isSafeRequestError(error) {\n if (!error.config) {\n // Cannot determine if the request can be retried\n return false;\n }\n\n return isRetryableError(error) && SAFE_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\n/**\n * @param {Error} error\n * @return {boolean}\n */\n\nexport function isIdempotentRequestError(error) {\n if (!error.config) {\n // Cannot determine if the request can be retried\n return false;\n }\n\n return isRetryableError(error) && IDEMPOTENT_HTTP_METHODS.indexOf(error.config.method) !== -1;\n}\n/**\n * @param {Error} error\n * @return {boolean | Promise}\n */\n\nexport function isNetworkOrIdempotentRequestError(error) {\n return isNetworkError(error) || isIdempotentRequestError(error);\n}\n/**\n * @return {number} - delay in milliseconds, always 0\n */\n\nfunction noDelay() {\n return 0;\n}\n/**\n * @param {number} [retryNumber=0]\n * @return {number} - delay in milliseconds\n */\n\n\nexport function exponentialDelay() {\n var retryNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var delay = Math.pow(2, retryNumber) * 100;\n var randomSum = delay * 0.2 * Math.random(); // 0-20% of the delay\n\n return delay + randomSum;\n}\n/**\n * Initializes and returns the retry state for the given request/config\n * @param {AxiosRequestConfig} config\n * @return {Object}\n */\n\nfunction getCurrentState(config) {\n var currentState = config[namespace] || {};\n currentState.retryCount = currentState.retryCount || 0;\n config[namespace] = currentState;\n return currentState;\n}\n/**\n * Returns the axios-retry options for the current request\n * @param {AxiosRequestConfig} config\n * @param {AxiosRetryConfig} defaultOptions\n * @return {AxiosRetryConfig}\n */\n\n\nfunction getRequestOptions(config, defaultOptions) {\n return _objectSpread(_objectSpread({}, defaultOptions), config[namespace]);\n}\n/**\n * @param {Axios} axios\n * @param {AxiosRequestConfig} config\n */\n\n\nfunction fixConfig(axios, config) {\n if (axios.defaults.agent === config.agent) {\n delete config.agent;\n }\n\n if (axios.defaults.httpAgent === config.httpAgent) {\n delete config.httpAgent;\n }\n\n if (axios.defaults.httpsAgent === config.httpsAgent) {\n delete config.httpsAgent;\n }\n}\n/**\n * Checks retryCondition if request can be retried. Handles it's retruning value or Promise.\n * @param {number} retries\n * @param {Function} retryCondition\n * @param {Object} currentState\n * @param {Error} error\n * @return {boolean}\n */\n\n\nfunction shouldRetry(_x, _x2, _x3, _x4) {\n return _shouldRetry.apply(this, arguments);\n}\n/**\n * Adds response interceptors to an axios instance to retry requests failed due to network issues\n *\n * @example\n *\n * import axios from 'axios';\n *\n * axiosRetry(axios, { retries: 3 });\n *\n * axios.get('http://example.com/test') // The first request fails and the second returns 'ok'\n * .then(result => {\n * result.data; // 'ok'\n * });\n *\n * // Exponential back-off retry delay between requests\n * axiosRetry(axios, { retryDelay : axiosRetry.exponentialDelay});\n *\n * // Custom retry delay\n * axiosRetry(axios, { retryDelay : (retryCount) => {\n * return retryCount * 1000;\n * }});\n *\n * // Also works with custom axios instances\n * const client = axios.create({ baseURL: 'http://example.com' });\n * axiosRetry(client, { retries: 3 });\n *\n * client.get('/test') // The first request fails and the second returns 'ok'\n * .then(result => {\n * result.data; // 'ok'\n * });\n *\n * // Allows request-specific configuration\n * client\n * .get('/test', {\n * 'axios-retry': {\n * retries: 0\n * }\n * })\n * .catch(error => { // The first request fails\n * error !== undefined\n * });\n *\n * @param {Axios} axios An axios instance (the axios object or one created from axios.create)\n * @param {Object} [defaultOptions]\n * @param {number} [defaultOptions.retries=3] Number of retries\n * @param {boolean} [defaultOptions.shouldResetTimeout=false]\n * Defines if the timeout should be reset between retries\n * @param {Function} [defaultOptions.retryCondition=isNetworkOrIdempotentRequestError]\n * A function to determine if the error can be retried\n * @param {Function} [defaultOptions.retryDelay=noDelay]\n * A function to determine the delay between retry requests\n */\n\n\nfunction _shouldRetry() {\n _shouldRetry = _asyncToGenerator(function* (retries, retryCondition, currentState, error) {\n var shouldRetryOrPromise = currentState.retryCount < retries && retryCondition(error); // This could be a promise\n\n if (typeof shouldRetryOrPromise === 'object') {\n try {\n yield shouldRetryOrPromise;\n return true;\n } catch (_err) {\n return false;\n }\n }\n\n return shouldRetryOrPromise;\n });\n return _shouldRetry.apply(this, arguments);\n}\n\nexport default function axiosRetry(axios, defaultOptions) {\n axios.interceptors.request.use(config => {\n var currentState = getCurrentState(config);\n currentState.lastRequestTime = Date.now();\n return config;\n });\n axios.interceptors.response.use(null, /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (error) {\n var {\n config\n } = error; // If we have no information to retry the request\n\n if (!config) {\n return Promise.reject(error);\n }\n\n var {\n retries = 3,\n retryCondition = isNetworkOrIdempotentRequestError,\n retryDelay = noDelay,\n shouldResetTimeout = false\n } = getRequestOptions(config, defaultOptions);\n var currentState = getCurrentState(config);\n\n if (yield shouldRetry(retries, retryCondition, currentState, error)) {\n currentState.retryCount += 1;\n var delay = retryDelay(currentState.retryCount, error); // Axios fails merging this configuration to the default configuration because it has an issue\n // with circular structures: https://github.com/mzabriskie/axios/issues/370\n\n fixConfig(axios, config);\n\n if (!shouldResetTimeout && config.timeout && currentState.lastRequestTime) {\n var lastRequestDuration = Date.now() - currentState.lastRequestTime; // Minimum 1ms timeout (passing 0 or less to XHR means no timeout)\n\n config.timeout = Math.max(config.timeout - lastRequestDuration - delay, 1);\n }\n\n config.transformRequest = [data => data];\n return new Promise(resolve => setTimeout(() => resolve(axios(config)), delay));\n }\n\n return Promise.reject(error);\n });\n\n return function (_x5) {\n return _ref.apply(this, arguments);\n };\n }());\n} // Compatibility with CommonJS\n\naxiosRetry.isNetworkError = isNetworkError;\naxiosRetry.isSafeRequestError = isSafeRequestError;\naxiosRetry.isIdempotentRequestError = isIdempotentRequestError;\naxiosRetry.isNetworkOrIdempotentRequestError = isNetworkOrIdempotentRequestError;\naxiosRetry.exponentialDelay = exponentialDelay;\naxiosRetry.isRetryableError = isRetryableError;\n//# sourceMappingURL=index.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/axios-retry/lib/esm/index.js\n// module id = 70\n// module chunks = 0","// See what I did there?! 👀\r\n// https://stripe.com/docs/elements/reference\r\nimport axios from 'axios';\r\nimport axiosRetry from 'axios-retry';\r\nimport Utils from '../js/utils.js';\r\nimport * as types from '../constants/TransConstants.js';\r\nimport {version} from '../../version.json';\r\n\r\nimport {updatePayment} from './CartAction.js';\r\nimport {removeRememberAlert} from './RememberAction.js';\r\n\r\n// If we get a 5XX error, lets retry the call\r\naxiosRetry(axios, {retries: 3, retryCondition: error => {\r\n if (error.response.status === 500) return true;\r\n return false;\r\n}});\r\n\r\nconst currentTime = new Date();\r\n\r\nlet transCall = axios.create({\r\n baseURL: APP_API + 'PaymentCard/',\r\n headers: {\r\n 'API-Changeset': API_CHANGESET,\r\n 'Version': version,\r\n 'Content-Type': 'application/json',\r\n 'UTC-Offset-Minutes': currentTime.getTimezoneOffset()\r\n }\r\n});\r\n\r\nexport function getPaymentMethods() {\r\n return function(dispatch) {\r\n dispatch({type: types.GET_PAYMENT_METHODS});\r\n transSetToken();\r\n return transCall.post('/GetPaymentCardsByUserToken')\r\n .then(response => {\r\n if (response.status === 200) {\r\n dispatch(getPaymentMethodsSuccess(response.data));\r\n }\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(getPaymentMethodsFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function getPaymentMethodsSuccess(methods) {\r\n return {\r\n type: types.GET_PAYMENT_METHODS_SUCCESS,\r\n payload: methods\r\n };\r\n}\r\n\r\nexport function getPaymentMethodsFailure() {\r\n return {\r\n type: types.GET_PAYMENT_METHODS_FAILURE\r\n };\r\n}\r\n\r\nexport function addNewCard(card, isDefault, save, name) {\r\n return function(dispatch) {\r\n dispatch({type: types.ADD_CARD});\r\n stripe.createToken(card, {\r\n name: name\r\n })\r\n .then(response => {\r\n const supported = [\r\n 'Visa',\r\n 'MasterCard',\r\n 'Discover'\r\n ];\r\n if (response.error) {\r\n const stripeError = {\r\n stripeError: response.error\r\n };\r\n throw stripeError;\r\n }\r\n if (!supported.includes(response.token.card.type)) {\r\n return Promise.reject({\r\n response: {\r\n data: {\r\n errors: [\r\n {\r\n error: {\r\n errorCode: 'PaymentTypeInvalid',\r\n errorMessage: 'MealTime Online does not support ' + response.token.card.brand + ' cards.'\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n });\r\n }\r\n if (response.token.card.country !== \"US\") {\r\n return Promise.reject({\r\n response: {\r\n data: {\r\n errors: [\r\n {\r\n error: {\r\n errorCode: 'CardCountryNotSupported',\r\n errorMessage: 'My MealTime only accepts cards issued in the US.'\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n });\r\n }\r\n if (save) { // Save card for future use\r\n transSetToken();\r\n return transCall.post('/AddPaymentCard', {\r\n stripeTokenID: response.token.id,\r\n defaultPaymentMethod: isDefault\r\n });\r\n }\r\n\r\n // Don't save transaction\r\n dispatch(updatePayment(response.token.id));\r\n isDefault = false;\r\n const stripeCard = response.token.card;\r\n const fauxCard = {\r\n stripeCardID: response.token.id,\r\n brand: stripeCard.brand,\r\n expMonth: stripeCard.exp_month,\r\n expYear: stripeCard.exp_year,\r\n zipCode: stripeCard.address_zip,\r\n cardholderName: stripeCard.name,\r\n last4: stripeCard.last4 + \" (Temp)\"\r\n };\r\n return Promise.resolve({\r\n data: fauxCard\r\n });\r\n })\r\n .then(response => {\r\n dispatch(addNewCardSuccess(response.data, isDefault));\r\n if (isDefault) {\r\n dispatch(setDefaultPayment(response.data.stripeCardID));\r\n dispatch(updatePayment(response.data.stripeCardID));\r\n }\r\n //TODO: sets newly added payment method as cart's current payment. this will avoid to ask users for a new payment everytime they try to checkout using cart\r\n //dispatch(updatePayment(response.data.stripeCardID));\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(addNewCardFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function addNewCardSuccess(method, isDefault) {\r\n GA.event({\r\n category: 'Payment',\r\n action: 'Add New',\r\n value: method.brand\r\n });\r\n\r\n return {\r\n type: types.ADD_CARD_SUCCESS,\r\n payload: {\r\n method: method,\r\n isDefault: isDefault\r\n }\r\n };\r\n}\r\n\r\nexport function addNewCardFailure() {\r\n return {\r\n type: types.ADD_CARD_FAILURE\r\n };\r\n}\r\n\r\nexport function removeCard(cardID, defaultCardID) {\r\n return function(dispatch) {\r\n dispatch({type: types.DELETE_CARD});\r\n\r\n if(_.isNull(defaultCardID)) {\r\n defaultCardID = \"\";\r\n }\r\n\r\n //don't use temp card for defaultCard replacement\r\n if(!_.isNull(defaultCardID)) {\r\n if (defaultCardID.startsWith('tok_')) {\r\n defaultCardID = \"\";\r\n }\r\n }\r\n\r\n if (cardID.startsWith('tok_')) {\r\n // One time use card, skip the API call\r\n dispatch(removeCardSuccess(cardID, defaultCardID));\r\n return;\r\n }\r\n\r\n //todo: hack for echeck. replace when echeck implementation is finalized\r\n if(cardID.startsWith('eCheckAuth')) {\r\n Utils.sleep(5000);\r\n dispatch(removeCardSuccess(cardID, defaultCardID));\r\n return;\r\n }\r\n\r\n transSetToken();\r\n return transCall.post('/DeletePaymentCard', {\r\n stripePaymentCardID: cardID,\r\n defaultStripePaymentCardID: defaultCardID // New default card\r\n })\r\n .then(response => {\r\n dispatch(removeCardSuccess(cardID, defaultCardID));\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(removeCardFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function removeCardSuccess(cardID, defaultCardID) {\r\n GA.event({\r\n category: 'Payment',\r\n action: 'Remove'\r\n });\r\n return {\r\n type: types.DELETE_CARD_SUCCESS,\r\n payload: {\r\n cardID: cardID,\r\n defaultCardID: defaultCardID\r\n }\r\n };\r\n}\r\n\r\nexport function removeCardFailure() {\r\n return {\r\n type: types.DELETE_CARD_FAILURE\r\n };\r\n}\r\n\r\nexport function updateCard(stripeID,\r\n expMonth,\r\n expYear,\r\n zipCode,\r\n cardholderName,\r\n defaultPaymentMethod) {\r\n return function(dispatch) {\r\n dispatch({type: types.UPDATE_CARD});\r\n transSetToken();\r\n return transCall.post('/UpdatePaymentCard', {\r\n stripePaymentCardID: stripeID,\r\n expMonth: expMonth,\r\n expYear: expYear,\r\n zipCode: zipCode,\r\n cardholderName: cardholderName,\r\n defaultPaymentMethod: defaultPaymentMethod\r\n })\r\n .then(response => {\r\n dispatch(updateCardSuccess({\r\n card: response.data,\r\n isDefault: defaultPaymentMethod\r\n }));\r\n if(defaultPaymentMethod) {\r\n dispatch(updatePayment(response.data.stripeCardID));\r\n }\r\n\r\n dispatch(removeRememberAlert({alert: \"expiredMethod\", stripeCardID: response.data.stripeCardID}));\r\n dispatch(removeRememberAlert({alert: \"expiringMethod\", stripeCardID: response.data.stripeCardID}));\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(updateCardFailure());\r\n });\r\n };\r\n}\r\n\r\nexport function updateCardSuccess(card) {\r\n GA.event({\r\n category: 'Payment',\r\n action: 'Add New',\r\n value: card.brand\r\n });\r\n return {\r\n type: types.UPDATE_CARD_SUCCESS,\r\n payload: card\r\n };\r\n}\r\n\r\nexport function updateCardFailure() {\r\n return {\r\n type: types.UPDATE_CARD_FAILURE\r\n };\r\n}\r\n\r\nexport function setDefaultPayment(stripeCardID) {\r\n return {\r\n type: types.NEW_DEFAULT,\r\n payload: stripeCardID\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nexport function dummyECHECKAPI(eCheckInfo, isNew, inAuth) {\r\n let fauxECheck = null;\r\n\r\n if(isNew) {\r\n fauxECheck = {\r\n stripeCardID: 'eCheckPendingAuth',\r\n brand: 'eCheck',\r\n expMonth: 'NA',\r\n expYear: 'NA',\r\n zipCode: 'NA',\r\n cardholderName: eCheckInfo.echeckHolderName,\r\n last4: eCheckInfo.echeckAccountNumber\r\n };\r\n } else if(inAuth) {\r\n fauxECheck = {\r\n stripeCardID: 'eCheckAuth',\r\n brand: 'eCheck',\r\n expMonth: 'NA',\r\n expYear: 'NA',\r\n zipCode: 'NA',\r\n cardholderName: eCheckInfo.stripeECheck.cardholderName,\r\n last4: eCheckInfo.stripeECheck.last4\r\n };\r\n }\r\n\r\n return new Promise(function(resolve, reject) {\r\n setTimeout(function() {\r\n resolve({data: fauxECheck});\r\n }, 5000);\r\n });\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nexport function addNewECheck(eCheckInfo) {\r\n return function(dispatch) {\r\n dispatch({type: types.ADD_ECHECK});\r\n dummyECHECKAPI(eCheckInfo, true, false)\r\n .then(response => {\r\n dispatch(addNewECheckSuccess(response.data));\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(addNewECheckFailure());\r\n });\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nexport function addNewECheckSuccess(method) {\r\n\r\n Utils.updateModal('confirm', {\r\n msg: 'Successfully added a new Echeck. Verification needed.',\r\n timeout: 3000,\r\n styleClass: 'level1'\r\n });\r\n\r\n //GA.event({\r\n // category: 'Payment',\r\n // action: 'Add New',\r\n // value: method.brand\r\n //});\r\n\r\n return {\r\n type: types.ADD_ECHECK_SUCCESS,\r\n payload: {\r\n method: method\r\n }\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nexport function addNewECheckFailure() {\r\n return {\r\n type: types.ADD_ECHECK_FAILURE\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nexport function authorizeeCheck(eCheckInfo) {\r\n // submit to API\\\r\n return function(dispatch) {\r\n dispatch({type: types.AUTH_ECHECK});\r\n dummyECHECKAPI(eCheckInfo, false, true)\r\n .then(response => {\r\n dispatch(authorizeeCheckSuccess(response.data));\r\n })\r\n .catch(function(error) {\r\n Utils.dispatchError(error, dispatch);\r\n dispatch(authorizeeCheckFailure());\r\n });\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nfunction authorizeeCheckSuccess(method) {\r\n // success\r\n Utils.updateModal('confirm', {\r\n msg: 'ECheck is ready for use.',\r\n timeout: 3000,\r\n styleClass: 'level1'\r\n });\r\n return {\r\n type: types.AUTH_ECHECK_SUCCESS,\r\n payload: {\r\n method: method\r\n }\r\n };\r\n}\r\n\r\n//todo: hack for echeck. replace when echeck implementation is finalized\r\nfunction authorizeeCheckFailure() {\r\n return {\r\n type: types.AUTH_ECHECK_FAILURE\r\n };\r\n}\r\n\r\nexport function resetPayment() {\r\n return {\r\n type: types.RESET_PAYMENT\r\n };\r\n}\r\n\r\nexport function transSetToken(token = Utils.checkForToken()) {\r\n transCall.defaults.headers.common['User-Token'] = token;\r\n return token;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/actions/TransAction.js","export const SIGN_IN_REQUEST = \"SIGN_IN_REQUEST\";\r\nexport const SIGN_IN_SUCCESS = \"SIGN_IN_SUCCESS\";\r\nexport const SIGN_IN_FAILURE = \"SIGN_IN_FAILURE\";\r\n\r\nexport const SIGN_OUT = \"SIGN_OUT\";\r\nexport const SIGN_OUT_SUCCESS = \"SIGN_OUT_SUCCESS\";\r\nexport const SIGN_OUT_FAILURE = \"SIGN_OUT_FAILURE\";\r\n\r\nexport const TRIGGER_REAUTH = \"TRIGGER_REAUTHENTICATE\";\r\nexport const REAUTH = \"REAUTHENTICATE\";\r\nexport const REAUTH_SUCCESS = \"REAUTHENTICATE_SUCCESS\";\r\nexport const REAUTH_FAILURE = \"REAUTHENTICATE_FAILURE\";\r\n\r\nexport const PIN_SIGN_IN = \"PIN_SIGN_IN\";\r\nexport const PIN_SIGN_IN_SUCCESS = \"PIN_SIGN_IN_SUCCESS\";\r\nexport const PIN_SIGN_IN_FAILURE = \"PIN_SIGN_IN_FAILURE\";\r\n\r\nexport const PIN_REAUTH = \"PIN_REAUTH\";\r\nexport const PIN_REAUTH_SUCCESS = \"PIN_REAUTH_SUCCESS\";\r\nexport const PIN_REAUTH_FAILURE = \"PIN_REAUTH_FAILURE\";\r\n\r\nexport const ADD_PIN = \"ADD_PIN\";\r\nexport const ADD_PIN_SUCCESS = \"ADD_PIN_SUCCESS\";\r\nexport const ADD_PIN_FAILURE = \"ADD_PIN_FAILURE\";\r\n\r\nexport const REM_PIN = \"REM_PIN\";\r\nexport const REM_PIN_SUCCESS = \"REM_PIN_SUCCESS\";\r\nexport const REM_PIN_FAILURE = \"REM_PIN_FAILURE\";\r\n\r\nexport const KEEP_ALIVE = \"KEEP_ALIVE\";\r\nexport const KEEP_ALIVE_SUCCESS = \"KEEP_ALIVE_SUCCESS\";\r\nexport const KEEP_ALIVE_FAILURE = \"KEEP_ALIVE_FAILURE\";\r\n\r\nexport const API_TEST = \"API_TEST\";\r\nexport const API_TEST_SUCCESS = \"API_TEST_SUCCESS\";\r\nexport const API_TEST_FAILURE = \"API_TEST_FAILURE\";\r\n\r\nexport const TRIGGER_COPPA = \"TRIGGER_COPPA\";\r\nexport const COPPA_VALIDATE_DOB = \"COPPA_VALIDATE_DOB\";\r\nexport const COPPA_VALIDATE_DOB_FAILURE = \"COPPA_VALIDATE_DOB_FAILURE\";\r\nexport const COPPA_VALIDATE_DOB_SUCCESS = \"COPPA_VALIDATE_DOB_SUCCESS\";\r\nexport const COPPA_CLEAR = \"COPPA_CLEAR\";\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/constants/AuthConstants.js","export const DELETE_USER = \"DELETE_USER\";\r\nexport const DELETE_USER_SUCCESS = \"DELETE_USER_SUCCESS\";\r\nexport const DELETE_USER_FAILURE = \"DELETE_USER_FAILURE\";\r\n\r\nexport const REGISTER_REQUEST = \"REGISTER_REQUEST\";\r\nexport const REGISTER_SUCCESS = \"REGISTER_SUCCESS\";\r\nexport const REGISTER_FAILURE = \"REGISTER_FAILURE\";\r\n\r\nexport const CLEAR_REGISTRATION = \"CLEAR_REGISTRATION_STATUS\";\r\n\r\nexport const UPDATE_USER = \"UPDATE_USER\";\r\nexport const UPDATE_USER_SUCCESS = \"UPDATE_USER_SUCCESS\";\r\nexport const UPDATE_USER_FAILURE = \"UPDATE_USER_FAILURE\";\r\n\r\nexport const GET_USER_BY_TOKEN = \"GET_USER_BY_TOKEN\";\r\nexport const GET_USER_BY_TOKEN_SUCCESS = \"GET_USER_BY_TOKEN_SUCCESS\";\r\nexport const GET_USER_BY_TOKEN_FAILURE = \"GET_USER_BY_TOKEN_FAILURE\";\r\n\r\nexport const GET_SECURITY_Q = \"GET_SECURITY_QUESTION\";\r\nexport const GET_SECURITY_Q_SUCCESS = \"GET_SECURITY_QUESTION_SUCCESS\";\r\nexport const GET_SECURITY_Q_FAILURE = \"GET_SECURITY_QUESTION_FAILURE\";\r\n\r\nexport const FORGOT_PASS = \"FORGOT_PASSWORD\";\r\nexport const FORGOT_PASS_SUCCESS = \"FORGOT_PASSWORD_SUCCESS\";\r\nexport const FORGOT_PASS_FAILURE = \"FORGOT_PASSWORD_FAILURE\";\r\n\r\nexport const FORGOT_USERNAME = \"FORGOT_USERNAME\";\r\nexport const FORGOT_USERNAME_SUCCESS = \"FORGOT_USERNAME_SUCCESS\";\r\nexport const FORGOT_USERNAME_FAILURE = \"FORGOT_USERNAME_FAILURE\";\r\n\r\nexport const SUBMIT_SECURITY_A = \"SUBMIT_SECURITY_ANSWER\";\r\nexport const SUBMIT_SECURITY_A_SUCCESS = \"SUBMIT_SECURITY_ANSWER_SUCCESS\";\r\nexport const SUBMIT_SECURITY_A_FAILURE = \"SUBMIT_SECURITY_ANSWER_FAILURE\";\r\n\r\nexport const CHECK_USERNAME = \"CHECK_USERNAME_AVAILABILITY\";\r\nexport const CHECK_USERNAME_SUCCESS = \"CHECK_USERNAME_AVAILABILITY_SUCCESS\";\r\nexport const CHECK_USERNAME_FAILURE = \"CHECK_USERNAME_AVAILABILITY_FAILURE\";\r\n\r\nexport const CHECK_EMAIL = \"CHECK_EMAIL_AVAILABILITY\";\r\nexport const CHECK_EMAIL_SUCCESS = \"CHECK_EMAIL_AVAILABILITY_SUCCESS\";\r\nexport const CHECK_EMAIL_FAILURE = \"CHECK_EMAIL_AVAILABILITY_FAILURE\";\r\nexport const CHECK_EMAIL_GHOST = \"CHECK_EMAIL_AVAILABILITY_GHOST\";\r\n\r\nexport const MAKE_DEPOSIT = \"MAKE_DEPOSIT\";\r\nexport const MAKE_DEPOSIT_SUCCESS = \"MAKE_DEPOSIT_SUCCESS\";\r\nexport const MAKE_DEPOSIT_FAILURE = \"MAKE_DEPOSIT_FAILURE\";\r\n\r\nexport const ADD_PAY_METHOD = \"ADD_PAYMENT_METHOD\";\r\nexport const ADD_PAY_METHOD_SUCCESS = \"ADD_PAYMENT_METHOD_SUCCESS\";\r\nexport const ADD_PAY_METHOD_FAILURE = \"ADD_PAYMENT_METHOD_FAILURE\";\r\n\r\nexport const RESET_REG = \"RESET_REGISTRATION\";\r\nexport const CLEAR_USER_VAL = \"CLEAR_USER_VALIDATION\";\r\nexport const CLEAR_EMAIL_VAL = \"CLEAR_EMAIL_VALIDATION\";\r\nexport const CLEAR_UPDATE_VAL = \"CLEAR_UPDATE_VALIDATION\";\r\n\r\nexport const GET_MESSAGES = \"GET_MESSAGES\";\r\nexport const GET_MESSAGES_SUCCESS = \"GET_MESSAGES_SUCCESS\";\r\nexport const GET_MESSAGES_FAILURE = \"GET_MESSAGES_FAILURE\";\r\n\r\nexport const GET_NOTIF_SETTINGS = \"GET_NOTIFICATION_SETTINGS\";\r\nexport const GET_NOTIF_SETTINGS_SUCCESS = \"GET_NOTIFICATION_SETTINGS_SUCCESS\";\r\nexport const GET_NOTIF_SETTINGS_FAILURE = \"GET_NOTIFICATION_SETTINGS_FAILURE\";\r\n\r\nexport const UPDATE_PUSH_GLOBAL = \"UPDATE_PUSH_GLOBAL\";\r\nexport const UPDATE_PUSH_GLOBAL_SUCCESS = \"UPDATE_PUSH_GLOBAL_SUCCESS\";\r\nexport const UPDATE_PUSH_GLOBAL_FAILURE = \"UPDATE_PUSH_GLOBAL_FAILURE\";\r\n\r\nexport const UPDATE_NOTIF_SETTINGS = \"UPDATE_NOTIFICATION_SETTINGS\";\r\nexport const UPDATE_NOTIF_SETTINGS_SUCCESS = \"UPDATE_NOTIFICATION_SETTINGS_SUCCESS\";\r\nexport const UPDATE_NOTIF_SETTINGS_FAILURE = \"UPDATE_NOTIFICATION_SETTINGS_FAILURE\";\r\n\r\nexport const NEW_USER_TOUR = \"NEW_USER_TOUR\";\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/constants/UserConstants.js","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_add-to-unscopables.js\n// module id = 74\n// module chunks = 0","module.exports = false;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_library.js\n// module id = 75\n// module chunks = 0","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_meta.js\n// module id = 76\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {\n var _parsePath = parsePath(path),\n pathname = _parsePath.pathname,\n search = _parsePath.search,\n hash = _parsePath.hash;\n\n return createPath({\n pathname: pathname,\n search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,\n hash: hash\n });\n};\n\nvar stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {\n var _parsePath2 = parsePath(path),\n pathname = _parsePath2.pathname,\n search = _parsePath2.search,\n hash = _parsePath2.hash;\n\n return createPath({\n pathname: pathname,\n search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {\n return prefix === '?' ? prefix : suffix;\n }),\n hash: hash\n });\n};\n\nvar getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {\n var _parsePath3 = parsePath(path),\n search = _parsePath3.search;\n\n var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));\n return match && match[1];\n};\n\nvar extractPath = function extractPath(string) {\n var match = string.match(/^(https?:)?\\/\\/[^\\/]*/);\n return match == null ? string : string.substring(match[0].length);\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n var pathname = extractPath(path);\n var search = '';\n var hash = '';\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like \"%s\"', path) : void 0;\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substring(hashIndex);\n pathname = pathname.substring(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substring(searchIndex);\n pathname = pathname.substring(0, searchIndex);\n }\n\n if (pathname === '') pathname = '/';\n\n return {\n pathname: pathname,\n search: search,\n hash: hash\n };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n if (location == null || typeof location === 'string') return location;\n\n var basename = location.basename,\n pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n var path = (basename || '') + pathname;\n\n if (search && search !== '?') path += search;\n\n if (hash) path += hash;\n\n return path;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/PathUtils.js\n// module id = 77\n// module chunks = 0","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport React from 'react';\n\nfunction isValidChild(object) {\n return object == null || React.isValidElement(object);\n}\n\nexport function isReactChildren(object) {\n return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n return _extends({}, defaultProps, props);\n}\n\nexport function createRouteFromReactElement(element) {\n var type = element.type;\n var route = createRoute(type.defaultProps, element.props);\n\n if (route.children) {\n var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n if (childRoutes.length) route.childRoutes = childRoutes;\n\n delete route.children;\n }\n\n return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n * import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n * const routes = createRoutesFromReactChildren(\n * \n * \n * \n * \n * )\n *\n * Note: This method is automatically used when you provide children\n * to a component.\n */\nexport function createRoutesFromReactChildren(children, parentRoute) {\n var routes = [];\n\n React.Children.forEach(children, function (element) {\n if (React.isValidElement(element)) {\n // Component classes may have a static create* method.\n if (element.type.createRouteFromReactElement) {\n var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n if (route) routes.push(route);\n } else {\n routes.push(createRouteFromReactElement(element));\n }\n }\n });\n\n return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nexport function createRoutes(routes) {\n if (isReactChildren(routes)) {\n routes = createRoutesFromReactChildren(routes);\n } else if (routes && !Array.isArray(routes)) {\n routes = [routes];\n }\n\n return routes;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/es/RouteUtils.js\n// module id = 78\n// module chunks = 0","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/_has.js\n// module id = 79\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/warning/browser.js\n// module id = 80\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 81\n// module chunks = 0","import * as types from '../constants/RememberConstants.js';\r\n\r\nexport function updateRemember(username) {\r\n return {\r\n type: types.UPDATE_REMEMBER_ME,\r\n payload: {\r\n username: username\r\n }\r\n };\r\n}\r\n\r\nexport function addRememberAlert(alert) {\r\n return {\r\n type: types.ADD_REMEMBER_ALERT,\r\n payload: {\r\n alert: alert\r\n }\r\n };\r\n}\r\n\r\nexport function removeRememberAlert(alert) {\r\n return {\r\n type: types.REMOVE_REMEMBER_ALERT,\r\n payload: {\r\n alert: alert\r\n }\r\n };\r\n}\n\n\n// WEBPACK FOOTER //\n// app/common/actions/RememberAction.js","import React from 'react';\r\n\r\nimport './LeftCol.scss';\r\n\r\n/**\r\n * Left Col\r\n * Left column content. Exported parent component.\r\n * Becomes 100% of page content on screen < tablet\r\n * For use if page has a left and right col content.\r\n * Only in use on the dashboard at the moment.\r\n */\r\nclass LeftCol extends React.Component {\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LeftCol;\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/components/LeftCol/LeftCol.jsx","import React from 'react';\r\n\r\nimport './RightCol.scss';\r\n\r\n/**\r\n * Right Col\r\n * Right column content. Exported parent component.\r\n * Hidden on screen < tablet\r\n * For use if page has a left and right col content.\r\n * Only in use on the dashboard at the moment.\r\n */\r\nclass RightCol extends React.Component {\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default RightCol;\r\n\n\n\n// WEBPACK FOOTER //\n// app/common/components/RightCol/RightCol.jsx","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_an-instance.js\n// module id = 85\n// module chunks = 0","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_for-of.js\n// module id = 86\n// module chunks = 0","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-create.js\n// module id = 87\n// module chunks = 0","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-gopn.js\n// module id = 88\n// module chunks = 0","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_object-keys.js\n// module id = 89\n// module chunks = 0","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_property-desc.js\n// module id = 90\n// module chunks = 0","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_redefine-all.js\n// module id = 91\n// module chunks = 0","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_set-species.js\n// module id = 92\n// module chunks = 0","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_to-absolute-index.js\n// module id = 93\n// module chunks = 0","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_uid.js\n// module id = 94\n// module chunks = 0","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-js/modules/_validate-collection.js\n// module id = 95\n// module chunks = 0",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t var block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/crypto-js/evpkdf.js\n// module id = 96\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createQuery = exports.createQuery = function createQuery(props) {\n return _extends(Object.create(null), props);\n};\n\nvar createLocation = exports.createLocation = function createLocation() {\n var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/';\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _Actions.POP;\n var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(!object.path, 'Location descriptor objects should have a `pathname`, not a `path`.') : void 0;\n\n var pathname = object.pathname || '/';\n var search = object.search || '';\n var hash = object.hash || '';\n var state = object.state;\n\n return {\n pathname: pathname,\n search: search,\n hash: hash,\n state: state,\n action: action,\n key: key\n };\n};\n\nvar isDate = function isDate(object) {\n return Object.prototype.toString.call(object) === '[object Date]';\n};\n\nvar statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {\n if (a === b) return true;\n\n var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (typeofA !== typeofB) return false;\n\n !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;\n\n // Not the same object, but same type.\n if (typeofA === 'object') {\n !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;\n\n if (!Array.isArray(a)) {\n var keysofA = Object.keys(a);\n var keysofB = Object.keys(b);\n return keysofA.length === keysofB.length && keysofA.every(function (key) {\n return statesAreEqual(a[key], b[key]);\n });\n }\n\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return statesAreEqual(item, b[index]);\n });\n }\n\n // All other serializable types (string, number, boolean)\n // should be strict equal.\n return false;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.key === b.key &&\n // a.action === b.action && // Different action !== location change.\n a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/LocationUtils.js\n// module id = 97\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/PooledClass.js\n// module id = 98\n// module chunks = 0","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/each.js\n// module id = 99\n// module chunks = 0","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/isArray.js\n// module id = 100\n// module chunks = 0","// Is a given variable an object?\nexport default function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/underscore/modules/isObject.js\n// module id = 101\n// module chunks = 0","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport FocusTrap from 'focus-trap-react';\r\n\r\nimport Deposit from '../Deposit/Deposit.jsx';\r\nimport SignOut from '../SignOut/SignOut.jsx';\r\nimport Confirmation from '../Confirmation/Confirmation.jsx';\r\nimport District from '../District/District.jsx';\r\nimport CheckValidation from '../CheckValidation/CheckValidation.jsx';\r\nimport MasterOption from '../MasterOption/MasterOption.jsx';\r\nimport ACHValidation from '../ACHValidation/ACHValidation.jsx';\r\nimport AreYouSure from '../AreYouSure/AreYouSure.jsx';\r\nimport AccountInfo from '../../AccountInfo/AccountInfo.jsx';\r\nimport ExistingPayment from '../../ExistingPayment/ExistingPayment.jsx';\r\nimport NewPayment from '../../NewPayment/NewPayment.jsx';\r\nimport Receipt from '../../Receipt/Receipt.jsx';\r\nimport SubSetting from '../../SubSetting/SubSetting.jsx';\r\nimport Cart from '../../Cart/Cart.jsx';\r\nimport StudentInfo from '../../StudentInfo/StudentInfo.jsx';\r\nimport CoppaValidation from '../CoppaValidation/CoppaValidation.jsx';\r\nimport CartConfirmation from '../CartConfirmation/CartConfirmation.jsx';\r\nimport Warning from '../Warning/Warning.jsx';\r\nimport SchPause from '../SchPause/SchPause.jsx';\r\nimport ToolTip from '../../ToolTip/ToolTip.jsx';\r\nimport PaymentMethodConfirmation from '../PaymentMethodConfirmation/PaymentMethodConfirmation.jsx';\r\n\r\n// http://xabikos.com/2015/10/03/Webpack-aliases-and-relative-paths/\r\n// import SubInfo from 'SubInfo';\r\nimport SubscriptionConfirmation from 'SubscriptionConfirmation';\r\nimport SubscriptionForm from 'SubscriptionForm';\r\nimport {clearValidationErrors} from '../../../actions/ErrorAction.js';\r\nimport './Modal.scss';\r\n\r\n/**\r\n * Since we use modals a lot, and are switching between content\r\n * inside of them, I figured it would be best to just have ONE modal\r\n * with a state that changes based on the current need.\r\n *\r\n * No need to update specific modal titles or content using jQuery\r\n * or use a lot of confusing calls. Just set the modal type and this\r\n * component will take care of the rest.\r\n */\r\nclass Modal extends React.Component {\r\n constructor() {\r\n super();\r\n this._isMounted = false;\r\n this.state = {\r\n trapActive: false,\r\n body:
Uh oh!
,\r\n header: 'Modal'\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const self = this;\r\n this._isMounted = true;\r\n const enableTrap = this.enableTrap.bind(this);\r\n document.addEventListener('update-modal', this.switchModalContent.bind(this));\r\n\r\n $(this.modal).on('hidden.bs.modal', function(e) {\r\n document.removeEventListener('keydown', enableTrap);\r\n const context = this.innerText;\r\n // When closing the modal, make sure the user can't go back to a stale state\r\n self.setState({\r\n trapActive: false,\r\n id: undefined,\r\n bodyComponent: undefined,\r\n prevState: undefined,\r\n body: undefined\r\n });\r\n\r\n document.dispatchEvent(new CustomEvent('rove-on-modals', {detail: {\r\n modalShown: false,\r\n checkpoint: document.activeElement,\r\n context: context\r\n }}));\r\n });\r\n\r\n $(this.modal).on('shown.bs.modal', function(e) {\r\n document.addEventListener('keydown', enableTrap);\r\n });\r\n\r\n $(this.modal).on('show.bs.modal', function(e) {\r\n const context = this.innerText;\r\n document.dispatchEvent(new CustomEvent('rove-on-modals', {detail: {\r\n // When closing the modal, make sure the user can't go back to a stale state\r\n modalShown: true,\r\n checkpoint: document.activeElement,\r\n context: context\r\n }}));\r\n });\r\n }\r\n\r\n componentWillUnmount() {\r\n this._isMounted = false;\r\n }\r\n\r\n switchModalContent(e) {\r\n let bodyComponent =
Uh oh!
;\r\n let headerText = 'Broken!';\r\n let id = 'modal';\r\n let prevState;\r\n let headerNames = '';\r\n let headerSchoolDistrict = '';\r\n let closeHandler = null;\r\n\r\n switch (e.detail.type) {\r\n case 'deposit':\r\n // Modal content needs a key, otherwise it won't rerender on prop change\r\n bodyComponent = ;\r\n headerText = 'Make a deposit for ';\r\n id = 'deposit-modal';\r\n headerNames = e.detail.props.name;\r\n headerSchoolDistrict = e.detail.props.districtName;\r\n break;\r\n case 'cart':\r\n bodyComponent = ;\r\n headerText = 'Secure Checkout';\r\n id = 'cart-modal';\r\n break;\r\n case 'cart-confirm':\r\n bodyComponent = ;\r\n headerText = 'Confirm Transaction Amount';\r\n id = 'cart-confirm';\r\n break;\r\n case 'confirm':\r\n bodyComponent = ;\r\n headerText = e.detail.props.header;\r\n id = 'confirm-modal';\r\n if (!e.detail.props.cancelable) {\r\n closeHandler = e.detail.props.clickHandler;\r\n }\r\n break;\r\n case 'confirm-tran':\r\n bodyComponent = ;\r\n headerText = 'Transaction Successful!';\r\n id = 'confirm-modal';\r\n break;\r\n case 'payment-select':\r\n bodyComponent = ;\r\n headerText = e.detail.props.header || 'Select a payment method';\r\n id = 'payment-modal';\r\n if (this.state.id &&\r\n this.state.id !== 'new-payment-modal' &&\r\n this.state.id !== 'confirm-modal') prevState = this.state;\r\n if (e.detail.props.replacingDefault) prevState = this.state;\r\n break;\r\n case 'new-payment':\r\n // cart prop is whether or not the card is being edited from the cart\r\n bodyComponent = ;\r\n if (_.isObject(e.detail.props.payment)) {\r\n headerText = 'Edit payment method';\r\n } else {\r\n headerText = 'Add a payment method';\r\n }\r\n id = 'new-payment-modal';\r\n if (this.state.id &&\r\n this.state.id !== 'confirm-modal') prevState = this.state;\r\n break;\r\n case 'delete-payment':\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'delete-payment';\r\n prevState = this.state;\r\n break;\r\n case 'edit-echeck':\r\n // cart prop is whether or not the card is being edited from the cart\r\n bodyComponent = ;\r\n if (_.isObject(e.detail.props.payInfo)) {\r\n headerText = 'Edit payment method';\r\n } else {\r\n headerText = 'Unsupported payment method';\r\n }\r\n id = 'new-payment-modal';\r\n if (this.state.id &&\r\n this.state.id !== 'confirm-modal') prevState = this.state;\r\n break;\r\n case 'receipt':\r\n bodyComponent = ;\r\n headerText = 'Receipt';\r\n id = 'receipt-modal';\r\n break;\r\n case 'student':\r\n // Pass the info the the component, let it figure out what to display\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'student-modal';\r\n break;\r\n case 'account':\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'account-modal';\r\n break;\r\n case 'add-student':\r\n bodyComponent = ;\r\n headerText = 'Add a new student';\r\n id = 'account-modal';\r\n break;\r\n case 'district':\r\n bodyComponent = ;\r\n headerText = 'Message from school district';\r\n id = 'district-modal';\r\n break;\r\n case 'subscription-form':\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'sub-modal';\r\n break;\r\n case 'subscription-confirmation':\r\n bodyComponent = ;\r\n headerText = 'Scheduled Deposit: ' + e.detail.props.loadedSud.generateSentence(true);\r\n id = 'sub-modal';\r\n break;\r\n\r\n case 'settings':\r\n bodyComponent = ;\r\n headerText = '';\r\n switch (e.detail.props.load) {\r\n case 'payment':\r\n headerText = 'Payment Settings';\r\n break;\r\n case 'account':\r\n headerText = 'Account Settings';\r\n break;\r\n case 'notification':\r\n headerText = 'Notification Settings';\r\n break;\r\n default:\r\n headerText = ' ';\r\n }\r\n id = 'setting-modal';\r\n break;\r\n case 'sign-out':\r\n bodyComponent = ;\r\n headerText = 'Sign Out';\r\n id = 'sign-out-modal';\r\n break;\r\n case 'master':\r\n bodyComponent = ;\r\n headerText = e.detail.props.headerTxt;\r\n id = 'option-modal';\r\n break;\r\n case 'echeck':\r\n bodyComponent = ;\r\n headerText = 'Validate eCheck';\r\n id = 'echeck-modal';\r\n break;\r\n case 'ach':\r\n bodyComponent = ;\r\n headerText = ' ACH Authorization';\r\n id = 'ach-modal';\r\n break;\r\n case 'areYouSure':\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'sure-modal';\r\n break;\r\n case 'coppa':\r\n bodyComponent = ;\r\n headerText = '';\r\n id = 'coppa-validation';\r\n break;\r\n case 'warning':\r\n bodyComponent = ;\r\n headerText = e.detail.props.modalTitle || 'Warning';\r\n id = 'warning';\r\n break;\r\n case 'pause-sch':\r\n bodyComponent = ;\r\n headerText = 'Pause this Scheduled Deposit';\r\n id = 'sch-pause';\r\n break;\r\n default:\r\n return;\r\n }\r\n\r\n if (this._isMounted) {\r\n this.setState({\r\n body: bodyComponent,\r\n header: headerText,\r\n id: id,\r\n prevState: prevState,\r\n headerNames: headerNames,\r\n headerSchoolDistrict: headerSchoolDistrict,\r\n styleClass: _.isUndefined(e.detail.props) ?\r\n undefined :\r\n e.detail.props.styleClass,\r\n closeHandler: closeHandler\r\n });\r\n }\r\n }\r\n\r\n getModalBodyClass(id) {\r\n let customClass = \"\";\r\n\r\n switch (id) {\r\n case 'coppa-validation':\r\n customClass = \" coppa\";\r\n break;\r\n case 'sch-pause':\r\n if(!Utils.isMobile()) {\r\n customClass = \" coppa\";\r\n } else {\r\n customClass = '';\r\n }\r\n break;\r\n default:\r\n customClass = '';\r\n break;\r\n }\r\n return customClass;\r\n }\r\n\r\n getModalContentClass() {\r\n return Utils.isMobileSafari() && !Utils.isApp() ?\r\n \"modal-content is-m-safari \" : \"modal-content \";\r\n }\r\n\r\n goBack(e) {\r\n if (this._isMounted && this.state.prevState) {\r\n //clear validation errors coming back to the previos state\r\n this.props.dispatch(clearValidationErrors());\r\n this.setState(this.state.prevState);\r\n }\r\n }\r\n\r\n resetModal() {\r\n this.props.dispatch(clearValidationErrors());\r\n $('.gen-modal').modal('hide');\r\n if (this._isMounted) {\r\n this.setState({\r\n trapActive: false,\r\n body: undefined,\r\n id: undefined,\r\n prevState: undefined\r\n });\r\n }\r\n }\r\n\r\n enableTrap(e) {\r\n if((e.shiftKey && e.keyCode === 9) || e.keyCode === 9) {\r\n if(this.state.trapActive) return;\r\n this.setState({\r\n trapActive: true\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n let trapActive = this.state.trapActive;\r\n if(trapActive) {\r\n if(this.state.styleClass === \"level1\") trapActive = false;\r\n if(!_.isUndefined(this.modal)) {\r\n if(this.modal.classList.contains('ghost')) trapActive = false;\r\n }\r\n }\r\n\r\n return (\r\n