@paystack/checkout-js 1.44.0-dev.3 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkout.js","sources":["../node_modules/regenerator-runtime/runtime.js","../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/core-js/internals/function-call.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/array-slice-simple.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/internals/array-buffer-non-extensible.js","../node_modules/core-js/internals/object-is-extensible.js","../node_modules/core-js/internals/freezing.js","../node_modules/core-js/internals/internal-metadata.js","../node_modules/core-js/modules/es.object.seal.js","../node_modules/core-js/internals/function-apply.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/to-string.js","../node_modules/core-js/internals/normalize-string-argument.js","../node_modules/core-js/internals/install-error-cause.js","../node_modules/core-js/internals/clear-error-stack.js","../node_modules/core-js/internals/error-stack-installable.js","../node_modules/core-js/internals/wrap-error-constructor-with-cause.js","../node_modules/core-js/modules/es.error.cause.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/is-constructor.js","../node_modules/core-js/internals/array-species-constructor.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.concat.js","../src/utilities/validation-error.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/internals/dom-token-list-prototype.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/modules/es.object.keys.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/internals/regexp-sticky-helpers.js","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/internals/regexp-unsupported-dot-all.js","../node_modules/core-js/internals/regexp-unsupported-ncg.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/modules/es.regexp.test.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/internals/number-parse-int.js","../node_modules/core-js/modules/es.parse-int.js","../node_modules/core-js/internals/this-number-value.js","../node_modules/core-js/modules/es.number.constructor.js","../src/utilities/validation-helpers.js","../src/utilities/transaction-validation.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/core-js/internals/array-sort.js","../node_modules/core-js/internals/engine-ff-version.js","../node_modules/core-js/internals/engine-is-ie-or-edge.js","../node_modules/core-js/internals/engine-webkit-version.js","../node_modules/core-js/modules/es.array.sort.js","../node_modules/core-js/modules/es.array.filter.js","../node_modules/core-js/modules/es.array.join.js","../node_modules/fingerprintjs2/fingerprint2.js","../node_modules/core-js/internals/native-promise-constructor.js","../node_modules/core-js/internals/redefine-all.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/get-iterator.js","../node_modules/core-js/internals/iterator-close.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/task.js","../node_modules/core-js/internals/a-constructor.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/internals/array-slice.js","../node_modules/core-js/internals/validate-arguments-length.js","../node_modules/core-js/internals/engine-is-ios.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/internals/microtask.js","../node_modules/core-js/internals/engine-is-ios-pebble.js","../node_modules/core-js/internals/engine-is-webos-webkit.js","../node_modules/core-js/internals/new-promise-capability.js","../node_modules/core-js/internals/promise-resolve.js","../node_modules/core-js/internals/host-report-errors.js","../node_modules/core-js/internals/queue.js","../node_modules/core-js/modules/es.promise.js","../node_modules/core-js/internals/engine-is-browser.js","../node_modules/core-js/internals/perform.js","../src/utilities/wait.js","../src/utilities/log-message.js","../src/utilities/device-fingerprint.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/modules/es.object.assign.js","../src/config.js","../src/utilities/functions.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/modules/es.array.includes.js","../src/utilities/charge-responses.js","../src/utilities/pusher.js","../node_modules/core-js/modules/es.regexp.to-string.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/create-iterator-constructor.js","../node_modules/core-js/internals/define-iterator.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/internals/native-url.js","../node_modules/core-js/internals/call-with-safe-iteration-closing.js","../node_modules/core-js/internals/array-from.js","../node_modules/core-js/internals/string-punycode-to-ascii.js","../node_modules/core-js/modules/web.url-search-params.js","../node_modules/core-js/modules/web.url.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/node_modules/form-data/lib/browser.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/env/classes/FormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/index.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/modules/es.array.reduce.js","../src/utilities/sanitize-params.js","../src/utilities/axios-instance.js","../src/utilities/get-language.js","../src/transactions/transaction.api.js","../src/transactions/pay-with-transfer/pay-with-transfer.api.js","../src/transactions/pay-with-transfer/pay-with-transfer.charge.js","../node_modules/form-urlencoded/dist/form-urlencoded.js","../src/transactions/payattitude/payattitude.api.js","../src/transactions/payattitude/payattittude.charge.js","../src/transactions/eft/eft.charge.js","../src/transactions/apple-pay/apple-pay.api.js","../src/transactions/apple-pay/apple-pay.charge.js","../src/transactions/paypal/paypal.api.js","../src/transactions/paypal/paypal.charge.js","../src/utilities/encryption/browser.js","../node_modules/jsencrypt/bin/jsencrypt.js","../node_modules/core-js/internals/object-to-array.js","../node_modules/core-js/modules/es.object.values.js","../node_modules/core-js/modules/es.array.find.js","../node_modules/card-validator/src/luhn-10.js","../node_modules/credit-card-type/lib/clone.js","../node_modules/credit-card-type/lib/is-valid-input-type.js","../node_modules/credit-card-type/lib/matches.js","../node_modules/credit-card-type/lib/add-matching-cards-to-results.js","../node_modules/credit-card-type/index.js","../node_modules/credit-card-type/lib/card-types.js","../node_modules/credit-card-type/lib/find-best-match.js","../node_modules/card-validator/src/card-number.js","../node_modules/card-validator/src/expiration-year.js","../node_modules/card-validator/src/lib/is-array.js","../node_modules/card-validator/src/parse-date.js","../node_modules/card-validator/src/expiration-month.js","../node_modules/card-validator/src/expiration-date.js","../node_modules/card-validator/src/cvv.js","../node_modules/card-validator/src/postal-code.js","../node_modules/card-validator/index.js","../src/utilities/card/test-cards.js","../src/utilities/card/card.js","../src/transactions/card/card.js","../src/transactions/card/card.api.js","../src/transactions/card/card.charge.js","../src/transactions/bank/bank-account.js","../src/transactions/bank/emandate/emandate.api.js","../src/transactions/bank/emandate/emandate.js","../src/transactions/bank/ibank/ibank.js","../src/transactions/bank/digital-bank-mandate/digital-bank-mandate.api.js","../src/transactions/bank/digital-bank-mandate/digital-bank-mandate.js","../src/transactions/bank/bank-account.charge.js","../src/transactions/ussd/ussd.api.js","../src/transactions/ussd/ussd.charge.js","../src/transactions/qr/qr.api.js","../src/transactions/qr/qr.charge.js","../src/transactions/phone-number/phone-number.js","../src/transactions/mobile-money/mobile-money.api.js","../src/transactions/mobile-money/mobile-money.charge.js","../src/transactions/direct-debit/direct-debit.api.js","../src/transactions/direct-debit/direct-debit.charge.js","../node_modules/core-js/internals/string-trim-forced.js","../node_modules/core-js/modules/es.string.trim.js","../src/transactions/capitec-pay/constants.js","../src/transactions/capitec-pay/capitec-pay.js","../src/transactions/capitec-pay/capitec-pay.api.js","../src/transactions/capitec-pay/capitec-pay.charge.js","../src/transactions/transaction.charge.js","../node_modules/is-mobile/index.js","../src/utilities/analytics/analytics.js","../node_modules/core-js/modules/es.json.stringify.js","../src/utilities/analytics/analytics.api.js","../src/transactions/transaction.analytics.api.js","../src/transactions/transaction.analytics.js","../src/transactions/capitec-pay/capitec-pay.analytics.js","../src/transactions/link/link.api.js","../src/transactions/link/link.charge.js","../src/transactions/transaction.instance.js","../src/transactions/transaction.js","../src/toolkit/toolkit.api.js","../src/toolkit/toolkit.js","../src/preauthorizations/card/card.js","../src/preauthorizations/card/card.api.js","../src/preauthorizations/card/card.preauthorization.js","../src/preauthorizations/preauthorization.api.js","../src/preauthorizations/preauthorization.analytics.api.js","../src/preauthorizations/preauthorization.analytics.js","../src/preauthorizations/preauthorization.instance.js","../src/preauthorizations/preauthorization.js"],"sourcesContent":["/**\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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","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","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.21.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\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 setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-seal -- safe\nvar $seal = Object.seal;\nvar FAILS_ON_PRIMITIVES = fails(function () { $seal(1); });\n\n// `Object.seal` method\n// https://tc39.es/ecma262/#sec-object.seal\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n seal: function seal(it) {\n return $seal && isObject(it) ? $seal(onFreeze(it)) : it;\n }\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string') {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","class ValidationError extends Error {\n constructor(errors, ...params) {\n // Pass remaining arguments (including vendor specific ones) to parent constructor\n super(...params);\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ValidationError);\n }\n\n // Custom error\n this.errors = errors;\n }\n}\n\nexport default ValidationError;\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\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 IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar Error = global.Error;\nvar un$Test = uncurryThis(/./.test);\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n var exec = this.exec;\n if (!isCallable(exec)) return un$Test(this, str);\n var result = call(exec, this, str);\n if (result !== null && !isObject(result)) {\n throw new Error('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n parseInt: $parseInt\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\n}\n","export function isPublicKey(value) {\n return value && value.substring(0, 2) === 'pk';\n}\n\nexport function isValidEmail(value) {\n return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/.test(\n value,\n );\n}\n\nexport function isArray(value) {\n return value instanceof Array;\n}\n\nexport function isInteger(value) {\n const int = parseInt(value, 10);\n return int === Number(value) && Number(value) >= 0;\n}\n\nexport function isString(value) {\n return value && typeof value === 'string';\n}\n","import {\n isPublicKey,\n isValidEmail,\n isArray,\n isInteger,\n isString,\n} from './validation-helpers';\n\nconst fields = {\n ref: {\n required: false,\n isValid: isString,\n },\n key: {\n required: true,\n isValid: isPublicKey,\n },\n email: {\n required: true,\n fallback: 'customer_code',\n isValid: isValidEmail,\n },\n customer_code: {\n required: false,\n isValid: isString,\n },\n amount: {\n required: true,\n fallback: 'plan',\n isValid: isInteger,\n },\n plan: {\n required: false,\n isValid: isString,\n },\n transaction_charge: {\n required: false,\n isValid: isInteger,\n },\n bearer: {\n required: false,\n isValid: isString,\n },\n channels: {\n required: false,\n isValid: isArray,\n },\n currency: {\n required: false,\n isValid: isString,\n },\n firstname: {\n required: false,\n isValid: isString,\n },\n lastname: {\n required: false,\n isValid: isString,\n },\n phone: {\n required: false,\n isValid: isString,\n },\n remark: {\n required: false,\n isValid: isString,\n },\n payment_page: {\n required: false,\n isValid: isInteger,\n },\n payment_request: {\n required: false,\n isValid: isString,\n },\n quantity: {\n required: false,\n isValid: isString,\n },\n coupon: {\n required: false,\n isValid: isString,\n },\n start_date: {\n required: false,\n isValid: isString,\n },\n interval: {\n required: false,\n isValid: isString,\n },\n invoice_limit: {\n required: false,\n isValid: isInteger,\n },\n subaccount: {\n required: false,\n isValid: isString,\n },\n hash: {\n required: false,\n isValid: isString,\n },\n metadata: {\n required: false,\n isValid: isString,\n },\n transaction_type: {\n required: false,\n isValid: isString,\n },\n subscription: {\n required: false,\n isValid: isInteger,\n },\n};\n\nexport default function ValidateTransactionParameters(data) {\n const errors = [];\n if (!data || typeof data !== 'object') {\n errors.push({\n message: 'Please supply a valid object',\n });\n return errors;\n }\n\n Object.keys(fields).forEach((key) => {\n const field = fields[key];\n const fieldValue = data[key];\n if (field.required && !fieldValue && !data[field.fallback]) {\n errors.push({\n field: key,\n message: `Required field: ${key}`,\n });\n return;\n }\n if (fieldValue && !field.isValid(fieldValue)) {\n errors.push({\n field: key,\n message: `Invalid field: ${key}`,\n });\n }\n });\n return errors;\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) delete array[index++];\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","/*\n* Fingerprintjs2 2.0.5 - Modern & flexible browser fingerprint library v2\n* https://github.com/Valve/fingerprintjs2\n* Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com)\n* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY\n* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/* global define */\n(function (name, context, definition) {\n 'use strict'\n if (typeof window !== 'undefined' && typeof define === 'function' && define.amd) { define(definition) } else if (typeof module !== 'undefined' && module.exports) { module.exports = definition() } else if (context.exports) { context.exports = definition() } else { context[name] = definition() }\n})('Fingerprint2', this, function () {\n 'use strict'\n\n/// MurmurHash3 related functions\n\n//\n// Given two 64bit ints (as an array of two 32bit ints) returns the two\n// added together as a 64bit int (as an array of two 32bit ints).\n//\n var x64Add = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] + n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] + n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] + n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += m[0] + n[0]\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n\n//\n// Given two 64bit ints (as an array of two 32bit ints) returns the two\n// multiplied together as a 64bit int (as an array of two 32bit ints).\n//\n var x64Multiply = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] * n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] * n[3]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[2] += m[3] * n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] * n[3]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[2] * n[2]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[3] * n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0])\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n//\n// Given a 64bit int (as an array of two 32bit ints) and an int\n// representing a number of bit positions, returns the 64bit int (as an\n// array of two 32bit ints) rotated left by that number of positions.\n//\n var x64Rotl = function (m, n) {\n n %= 64\n if (n === 32) {\n return [m[1], m[0]]\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))]\n } else {\n n -= 32\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))]\n }\n }\n//\n// Given a 64bit int (as an array of two 32bit ints) and an int\n// representing a number of bit positions, returns the 64bit int (as an\n// array of two 32bit ints) shifted left by that number of positions.\n//\n var x64LeftShift = function (m, n) {\n n %= 64\n if (n === 0) {\n return m\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n]\n } else {\n return [m[1] << (n - 32), 0]\n }\n }\n//\n// Given two 64bit ints (as an array of two 32bit ints) returns the two\n// xored together as a 64bit int (as an array of two 32bit ints).\n//\n var x64Xor = function (m, n) {\n return [m[0] ^ n[0], m[1] ^ n[1]]\n }\n//\n// Given a block, returns murmurHash3's final x64 mix of that block.\n// (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n// only place where we need to right shift 64bit ints.)\n//\n var x64Fmix = function (h) {\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xff51afd7, 0xed558ccd])\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53])\n h = x64Xor(h, [0, h[0] >>> 1])\n return h\n }\n\n//\n// Given a string and an optional seed as an int, returns a 128 bit\n// hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n//\n var x64hash128 = function (key, seed) {\n key = key || ''\n seed = seed || 0\n var remainder = key.length % 16\n var bytes = key.length - remainder\n var h1 = [0, seed]\n var h2 = [0, seed]\n var k1 = [0, 0]\n var k2 = [0, 0]\n var c1 = [0x87c37b91, 0x114253d5]\n var c2 = [0x4cf5ad43, 0x2745937f]\n for (var i = 0; i < bytes; i = i + 16) {\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)]\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)]\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n h1 = x64Rotl(h1, 27)\n h1 = x64Add(h1, h2)\n h1 = x64Add(x64Multiply(h1, [0, 5]), [0, 0x52dce729])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n h2 = x64Rotl(h2, 31)\n h2 = x64Add(h2, h1)\n h2 = x64Add(x64Multiply(h2, [0, 5]), [0, 0x38495ab5])\n }\n k1 = [0, 0]\n k2 = [0, 0]\n switch (remainder) {\n case 15:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 14)], 48))\n // fallthrough\n case 14:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 13)], 40))\n // fallthrough\n case 13:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 12)], 32))\n // fallthrough\n case 12:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 11)], 24))\n // fallthrough\n case 11:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 10)], 16))\n // fallthrough\n case 10:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 9)], 8))\n // fallthrough\n case 9:\n k2 = x64Xor(k2, [0, key.charCodeAt(i + 8)])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n // fallthrough\n case 8:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 7)], 56))\n // fallthrough\n case 7:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 6)], 48))\n // fallthrough\n case 6:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 5)], 40))\n // fallthrough\n case 5:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 4)], 32))\n // fallthrough\n case 4:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 3)], 24))\n // fallthrough\n case 3:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 2)], 16))\n // fallthrough\n case 2:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 1)], 8))\n // fallthrough\n case 1:\n k1 = x64Xor(k1, [0, key.charCodeAt(i)])\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n // fallthrough\n }\n h1 = x64Xor(h1, [0, key.length])\n h2 = x64Xor(h2, [0, key.length])\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n h1 = x64Fmix(h1)\n h2 = x64Fmix(h2)\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8)\n }\n\n var defaultOptions = {\n preprocessor: null,\n audio: {\n timeout: 1000,\n // On iOS 11, audio context can only be used in response to user interaction.\n // We require users to explicitly enable audio fingerprinting on iOS 11.\n // See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n excludeIOS11: true\n },\n fonts: {\n swfContainerId: 'fingerprintjs2',\n swfPath: 'flash/compiled/FontList.swf',\n userDefinedFonts: [],\n extendedJsFonts: false\n },\n screen: {\n // To ensure consistent fingerprints when users rotate their mobile devices\n detectScreenOrientation: true\n },\n plugins: {\n sortPluginsFor: [/palemoon/i],\n excludeIE: false\n },\n extraComponents: [],\n excludes: {\n // Unreliable on Windows, see https://github.com/Valve/fingerprintjs2/issues/375\n 'enumerateDevices': true,\n // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom\n 'pixelRatio': true,\n // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode\n 'doNotTrack': true,\n // uses js fonts already\n 'fontsFlash': true\n },\n NOT_AVAILABLE: 'not available',\n ERROR: 'error',\n EXCLUDED: 'excluded'\n }\n\n var each = function (obj, iterator) {\n if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {\n obj.forEach(iterator)\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n iterator(obj[i], i, obj)\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator(obj[key], key, obj)\n }\n }\n }\n }\n\n var map = function (obj, iterator) {\n var results = []\n // Not using strict equality so that this acts as a\n // shortcut to checking for `null` and `undefined`.\n if (obj == null) {\n return results\n }\n if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }\n each(obj, function (value, index, list) {\n results.push(iterator(value, index, list))\n })\n return results\n }\n\n var extendSoft = function (target, source) {\n if (source == null) { return target }\n var value\n var key\n for (key in source) {\n value = source[key]\n if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {\n target[key] = value\n }\n }\n return target\n }\n\n// https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices\n var enumerateDevicesKey = function (done, options) {\n if (!isEnumerateDevicesSupported()) {\n return done(options.NOT_AVAILABLE)\n }\n navigator.mediaDevices.enumerateDevices().then(function (devices) {\n done(devices.map(function (device) {\n return 'id=' + device.deviceId + ';gid=' + device.groupId + ';' + device.kind + ';' + device.label\n }))\n })\n .catch(function (error) {\n done(error)\n })\n }\n\n var isEnumerateDevicesSupported = function () {\n return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n }\n// Inspired by and based on https://github.com/cozylife/audio-fingerprint\n var audioKey = function (done, options) {\n var audioOptions = options.audio\n if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\\/11.+Safari/)) {\n // See comment for excludeUserAgent and https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n return done(options.EXCLUDED)\n }\n\n var AudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext\n\n if (AudioContext == null) {\n return done(options.NOT_AVAILABLE)\n }\n\n var context = new AudioContext(1, 44100, 44100)\n\n var oscillator = context.createOscillator()\n oscillator.type = 'triangle'\n oscillator.frequency.setValueAtTime(10000, context.currentTime)\n\n var compressor = context.createDynamicsCompressor()\n each([\n ['threshold', -50],\n ['knee', 40],\n ['ratio', 12],\n ['reduction', -20],\n ['attack', 0],\n ['release', 0.25]\n ], function (item) {\n if (compressor[item[0]] !== undefined && typeof compressor[item[0]].setValueAtTime === 'function') {\n compressor[item[0]].setValueAtTime(item[1], context.currentTime)\n }\n })\n\n oscillator.connect(compressor)\n compressor.connect(context.destination)\n oscillator.start(0)\n context.startRendering()\n\n var audioTimeoutId = setTimeout(function () {\n console.warn('Audio fingerprint timed out. Please report bug at https://github.com/Valve/fingerprintjs2 with your user agent: \"' + navigator.userAgent + '\".')\n context.oncomplete = function () {}\n context = null\n return done('audioTimeout')\n }, audioOptions.timeout)\n\n context.oncomplete = function (event) {\n var fingerprint\n try {\n clearTimeout(audioTimeoutId)\n fingerprint = event.renderedBuffer.getChannelData(0)\n .slice(4500, 5000)\n .reduce(function (acc, val) { return acc + Math.abs(val) }, 0)\n .toString()\n oscillator.disconnect()\n compressor.disconnect()\n } catch (error) {\n done(error)\n return\n }\n done(fingerprint)\n }\n }\n var UserAgent = function (done) {\n done(navigator.userAgent)\n }\n var languageKey = function (done, options) {\n done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)\n }\n var colorDepthKey = function (done, options) {\n done(window.screen.colorDepth || options.NOT_AVAILABLE)\n }\n var deviceMemoryKey = function (done, options) {\n done(navigator.deviceMemory || options.NOT_AVAILABLE)\n }\n var pixelRatioKey = function (done, options) {\n done(window.devicePixelRatio || options.NOT_AVAILABLE)\n }\n var screenResolutionKey = function (done, options) {\n done(getScreenResolution(options))\n }\n var getScreenResolution = function (options) {\n var resolution = [window.screen.width, window.screen.height]\n if (options.screen.detectScreenOrientation) {\n resolution.sort().reverse()\n }\n return resolution\n }\n var availableScreenResolutionKey = function (done, options) {\n done(getAvailableScreenResolution(options))\n }\n var getAvailableScreenResolution = function (options) {\n if (window.screen.availWidth && window.screen.availHeight) {\n var available = [window.screen.availHeight, window.screen.availWidth]\n if (options.screen.detectScreenOrientation) {\n available.sort().reverse()\n }\n return available\n }\n // headless browsers\n return options.NOT_AVAILABLE\n }\n var timezoneOffset = function (done) {\n done(new Date().getTimezoneOffset())\n }\n var timezone = function (done, options) {\n if (window.Intl && window.Intl.DateTimeFormat) {\n done(new window.Intl.DateTimeFormat().resolvedOptions().timeZone)\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var sessionStorageKey = function (done, options) {\n done(hasSessionStorage(options))\n }\n var localStorageKey = function (done, options) {\n done(hasLocalStorage(options))\n }\n var indexedDbKey = function (done, options) {\n done(hasIndexedDB(options))\n }\n var addBehaviorKey = function (done) {\n // body might not be defined at this point or removed programmatically\n done(!!(document.body && document.body.addBehavior))\n }\n var openDatabaseKey = function (done) {\n done(!!window.openDatabase)\n }\n var cpuClassKey = function (done, options) {\n done(getNavigatorCpuClass(options))\n }\n var platformKey = function (done, options) {\n done(getNavigatorPlatform(options))\n }\n var doNotTrackKey = function (done, options) {\n done(getDoNotTrack(options))\n }\n var canvasKey = function (done, options) {\n if (isCanvasSupported()) {\n done(getCanvasFp(options))\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglKey = function (done, options) {\n if (isWebGlSupported()) {\n done(getWebglFp())\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglVendorAndRendererKey = function (done) {\n if (isWebGlSupported()) {\n done(getWebglVendorAndRenderer())\n return\n }\n done()\n }\n var adBlockKey = function (done) {\n done(getAdBlock())\n }\n var hasLiedLanguagesKey = function (done) {\n done(getHasLiedLanguages())\n }\n var hasLiedResolutionKey = function (done) {\n done(getHasLiedResolution())\n }\n var hasLiedOsKey = function (done) {\n done(getHasLiedOs())\n }\n var hasLiedBrowserKey = function (done) {\n done(getHasLiedBrowser())\n }\n// flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)\n var flashFontsKey = function (done, options) {\n // we do flash if swfobject is loaded\n if (!hasSwfObjectLoaded()) {\n return done('swf object not loaded')\n }\n if (!hasMinFlashInstalled()) {\n return done('flash not installed')\n }\n if (!options.fonts.swfPath) {\n return done('missing options.fonts.swfPath')\n }\n loadSwfAndDetectFonts(function (fonts) {\n done(fonts)\n }, options)\n }\n// kudos to http://www.lalit.org/lab/javascript-css-font-detect/\n var jsFontsKey = function (done, options) {\n // a font will be compared against all the three default fonts.\n // and if it doesn't match all 3 then that font is not available.\n var baseFonts = ['monospace', 'sans-serif', 'serif']\n\n var fontList = [\n 'Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',\n 'Bitstream Vera Sans Mono', 'Book Antiqua', 'Bookman Old Style',\n 'Calibri', 'Cambria', 'Cambria Math', 'Century', 'Century Gothic', 'Century Schoolbook', 'Comic Sans', 'Comic Sans MS', 'Consolas', 'Courier', 'Courier New',\n 'Geneva', 'Georgia',\n 'Helvetica', 'Helvetica Neue',\n 'Impact',\n 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'LUCIDA GRANDE', 'Lucida Handwriting', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode',\n 'Microsoft Sans Serif', 'Monaco', 'Monotype Corsiva', 'MS Gothic', 'MS Outlook', 'MS PGothic', 'MS Reference Sans Serif', 'MS Sans Serif', 'MS Serif', 'MYRIAD', 'MYRIAD PRO',\n 'Palatino', 'Palatino Linotype',\n 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol',\n 'Tahoma', 'Times', 'Times New Roman', 'Times New Roman PS', 'Trebuchet MS',\n 'Verdana', 'Wingdings', 'Wingdings 2', 'Wingdings 3'\n ]\n\n if (options.fonts.extendedJsFonts) {\n var extendedFontList = [\n 'Abadi MT Condensed Light', 'Academy Engraved LET', 'ADOBE CASLON PRO', 'Adobe Garamond', 'ADOBE GARAMOND PRO', 'Agency FB', 'Aharoni', 'Albertus Extra Bold', 'Albertus Medium', 'Algerian', 'Amazone BT', 'American Typewriter',\n 'American Typewriter Condensed', 'AmerType Md BT', 'Andalus', 'Angsana New', 'AngsanaUPC', 'Antique Olive', 'Aparajita', 'Apple Chancery', 'Apple Color Emoji', 'Apple SD Gothic Neo', 'Arabic Typesetting', 'ARCHER',\n 'ARNO PRO', 'Arrus BT', 'Aurora Cn BT', 'AvantGarde Bk BT', 'AvantGarde Md BT', 'AVENIR', 'Ayuthaya', 'Bandy', 'Bangla Sangam MN', 'Bank Gothic', 'BankGothic Md BT', 'Baskerville',\n 'Baskerville Old Face', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus 93', 'Bazooka', 'Bell MT', 'Bembo', 'Benguiat Bk BT', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'BernhardFashion BT', 'BernhardMod BT', 'Big Caslon', 'BinnerD',\n 'Blackadder ITC', 'BlairMdITC TT', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed',\n 'Bookshelf Symbol 7', 'Boulder', 'Bradley Hand', 'Bradley Hand ITC', 'Bremen Bd BT', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script MT', 'Californian FB', 'Calisto MT', 'Calligrapher', 'Candara',\n 'CaslonOpnface BT', 'Castellar', 'Centaur', 'Cezanne', 'CG Omega', 'CG Times', 'Chalkboard', 'Chalkboard SE', 'Chalkduster', 'Charlesworth', 'Charter Bd BT', 'Charter BT', 'Chaucer',\n 'ChelthmITC Bk BT', 'Chiller', 'Clarendon', 'Clarendon Condensed', 'CloisterBlack BT', 'Cochin', 'Colonna MT', 'Constantia', 'Cooper Black', 'Copperplate', 'Copperplate Gothic', 'Copperplate Gothic Bold',\n 'Copperplate Gothic Light', 'CopperplGoth Bd BT', 'Corbel', 'Cordia New', 'CordiaUPC', 'Cornerstone', 'Coronet', 'Cuckoo', 'Curlz MT', 'DaunPenh', 'Dauphin', 'David', 'DB LCD Temp', 'DELICIOUS', 'Denmark',\n 'DFKai-SB', 'Didot', 'DilleniaUPC', 'DIN', 'DokChampa', 'Dotum', 'DotumChe', 'Ebrima', 'Edwardian Script ITC', 'Elephant', 'English 111 Vivace BT', 'Engravers MT', 'EngraversGothic BT', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC',\n 'EucrosiaUPC', 'Euphemia', 'Euphemia UCAS', 'EUROSTILE', 'Exotc350 Bd BT', 'FangSong', 'Felix Titling', 'Fixedsys', 'FONTIN', 'Footlight MT Light', 'Forte',\n 'FrankRuehl', 'Fransiscan', 'Freefrm721 Blk BT', 'FreesiaUPC', 'Freestyle Script', 'French Script MT', 'FrnkGothITC Bk BT', 'Fruitger', 'FRUTIGER',\n 'Futura', 'Futura Bk BT', 'Futura Lt BT', 'Futura Md BT', 'Futura ZBlk BT', 'FuturaBlack BT', 'Gabriola', 'Galliard BT', 'Gautami', 'Geeza Pro', 'Geometr231 BT', 'Geometr231 Hv BT', 'Geometr231 Lt BT', 'GeoSlab 703 Lt BT',\n 'GeoSlab 703 XBd BT', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester MT Extra Condensed', 'GOTHAM', 'GOTHAM BOLD',\n 'Goudy Old Style', 'Goudy Stout', 'GoudyHandtooled BT', 'GoudyOLSt BT', 'Gujarati Sangam MN', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'Gurmukhi MN', 'Haettenschweiler', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heiti SC', 'Heiti TC', 'HELV',\n 'Herald', 'High Tower Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Mincho ProN', 'Hoefler Text', 'Humanst 521 Cn BT', 'Humanst521 BT', 'Humanst521 Lt BT', 'Imprint MT Shadow', 'Incised901 Bd BT', 'Incised901 BT',\n 'Incised901 Lt BT', 'INCONSOLATA', 'Informal Roman', 'Informal011 BT', 'INTERSTATE', 'IrisUPC', 'Iskoola Pota', 'JasmineUPC', 'Jazz LET', 'Jenson', 'Jester', 'Jokerman', 'Juice ITC', 'Kabel Bk BT', 'Kabel Ult BT', 'Kailasa', 'KaiTi', 'Kalinga', 'Kannada Sangam MN',\n 'Kartika', 'Kaufmann Bd BT', 'Kaufmann BT', 'Khmer UI', 'KodchiangUPC', 'Kokila', 'Korinna BT', 'Kristen ITC', 'Krungthep', 'Kunstler Script', 'Lao UI', 'Latha', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'LilyUPC', 'Lithograph', 'Lithograph Light', 'Long Island',\n 'Lydian BT', 'Magneto', 'Maiandra GD', 'Malayalam Sangam MN', 'Malgun Gothic',\n 'Mangal', 'Marigold', 'Marion', 'Marker Felt', 'Market', 'Marlett', 'Matisse ITC', 'Matura MT Script Capitals', 'Meiryo', 'Meiryo UI', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Tai Le',\n 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft Yi Baiti', 'MingLiU', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'MingLiU-ExtB', 'Minion', 'Minion Pro', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona Lisa Solid ITC TT', 'Mongolian Baiti',\n 'MONO', 'MoolBoran', 'Mrs Eaves', 'MS LineDraw', 'MS Mincho', 'MS PMincho', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MUSEO', 'MV Boli',\n 'Nadeem', 'Narkisim', 'NEVIS', 'News Gothic', 'News GothicMT', 'NewsGoth BT', 'Niagara Engraved', 'Niagara Solid', 'Noteworthy', 'NSimSun', 'Nyala', 'OCR A Extended', 'Old Century', 'Old English Text MT', 'Onyx', 'Onyx BT', 'OPTIMA', 'Oriya Sangam MN',\n 'OSAKA', 'OzHandicraft BT', 'Palace Script MT', 'Papyrus', 'Parchment', 'Party LET', 'Pegasus', 'Perpetua', 'Perpetua Titling MT', 'PetitaBold', 'Pickwick', 'Plantagenet Cherokee', 'Playbill', 'PMingLiU', 'PMingLiU-ExtB',\n 'Poor Richard', 'Poster', 'PosterBodoni BT', 'PRINCETOWN LET', 'Pristina', 'PTBarnum BT', 'Pythagoras', 'Raavi', 'Rage Italic', 'Ravie', 'Ribbon131 Bd BT', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Sakkal Majalla',\n 'Santa Fe LET', 'Savoye LET', 'Sceptre', 'Script', 'Script MT Bold', 'SCRIPTINA', 'Serifa', 'Serifa BT', 'Serifa Th BT', 'ShelleyVolante BT', 'Sherwood',\n 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'Signboard', 'SILKSCREEN', 'SimHei', 'Simplified Arabic', 'Simplified Arabic Fixed', 'SimSun', 'SimSun-ExtB', 'Sinhala Sangam MN', 'Sketch Rockwell', 'Skia', 'Small Fonts', 'Snap ITC', 'Snell Roundhand', 'Socket',\n 'Souvenir Lt BT', 'Staccato222 BT', 'Steamer', 'Stencil', 'Storybook', 'Styllo', 'Subway', 'Swis721 BlkEx BT', 'Swiss911 XCm BT', 'Sylfaen', 'Synchro LET', 'System', 'Tamil Sangam MN', 'Technical', 'Teletype', 'Telugu Sangam MN', 'Tempus Sans ITC',\n 'Terminal', 'Thonburi', 'Traditional Arabic', 'Trajan', 'TRAJAN PRO', 'Tristan', 'Tubular', 'Tunga', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold',\n 'TypoUpright BT', 'Unicorn', 'Univers', 'Univers CE 55 Medium', 'Univers Condensed', 'Utsaah', 'Vagabond', 'Vani', 'Vijaya', 'Viner Hand ITC', 'VisualUI', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Westminster', 'WHITNEY', 'Wide Latin',\n 'ZapfEllipt BT', 'ZapfHumnst BT', 'ZapfHumnst Dm BT', 'Zapfino', 'Zurich BlkEx BT', 'Zurich Ex BT', 'ZWAdobeF']\n fontList = fontList.concat(extendedFontList)\n }\n\n fontList = fontList.concat(options.fonts.userDefinedFonts)\n\n // remove duplicate fonts\n fontList = fontList.filter(function (font, position) {\n return fontList.indexOf(font) === position\n })\n\n // we use m or w because these two characters take up the maximum width.\n // And we use a LLi so that the same matching fonts can get separated\n var testString = 'mmmmmmmmmmlli'\n\n // we test using 72px font size, we may use any size. I guess larger the better.\n var testSize = '72px'\n\n var h = document.getElementsByTagName('body')[0]\n\n // div to load spans for the base fonts\n var baseFontsDiv = document.createElement('div')\n\n // div to load spans for the fonts to detect\n var fontsDiv = document.createElement('div')\n\n var defaultWidth = {}\n var defaultHeight = {}\n\n // creates a span where the fonts will be loaded\n var createSpan = function () {\n var s = document.createElement('span')\n /*\n * We need this css as in some weird browser this\n * span elements shows up for a microSec which creates a\n * bad user experience\n */\n s.style.position = 'absolute'\n s.style.left = '-9999px'\n s.style.fontSize = testSize\n\n // css font reset to reset external styles\n s.style.fontStyle = 'normal'\n s.style.fontWeight = 'normal'\n s.style.letterSpacing = 'normal'\n s.style.lineBreak = 'auto'\n s.style.lineHeight = 'normal'\n s.style.textTransform = 'none'\n s.style.textAlign = 'left'\n s.style.textDecoration = 'none'\n s.style.textShadow = 'none'\n s.style.whiteSpace = 'normal'\n s.style.wordBreak = 'normal'\n s.style.wordSpacing = 'normal'\n\n s.innerHTML = testString\n return s\n }\n\n // creates a span and load the font to detect and a base font for fallback\n var createSpanWithFonts = function (fontToDetect, baseFont) {\n var s = createSpan()\n s.style.fontFamily = \"'\" + fontToDetect + \"',\" + baseFont\n return s\n }\n\n // creates spans for the base fonts and adds them to baseFontsDiv\n var initializeBaseFontsSpans = function () {\n var spans = []\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n var s = createSpan()\n s.style.fontFamily = baseFonts[index]\n baseFontsDiv.appendChild(s)\n spans.push(s)\n }\n return spans\n }\n\n // creates spans for the fonts to detect and adds them to fontsDiv\n var initializeFontsSpans = function () {\n var spans = {}\n for (var i = 0, l = fontList.length; i < l; i++) {\n var fontSpans = []\n for (var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) {\n var s = createSpanWithFonts(fontList[i], baseFonts[j])\n fontsDiv.appendChild(s)\n fontSpans.push(s)\n }\n spans[fontList[i]] = fontSpans // Stores {fontName : [spans for that font]}\n }\n return spans\n }\n\n // checks if a font is available\n var isFontAvailable = function (fontSpans) {\n var detected = false\n for (var i = 0; i < baseFonts.length; i++) {\n detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]])\n if (detected) {\n return detected\n }\n }\n return detected\n }\n\n // create spans for base fonts\n var baseFontsSpans = initializeBaseFontsSpans()\n\n // add the spans to the DOM\n h.appendChild(baseFontsDiv)\n\n // get the default width for the three base fonts\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight // height for the default font\n }\n\n // create spans for fonts to detect\n var fontsSpans = initializeFontsSpans()\n\n // add all the spans to the DOM\n h.appendChild(fontsDiv)\n\n // check available fonts\n var available = []\n for (var i = 0, l = fontList.length; i < l; i++) {\n if (isFontAvailable(fontsSpans[fontList[i]])) {\n available.push(fontList[i])\n }\n }\n\n // remove spans from DOM\n h.removeChild(fontsDiv)\n h.removeChild(baseFontsDiv)\n done(available)\n }\n var pluginsComponent = function (done, options) {\n if (isIE()) {\n if (!options.plugins.excludeIE) {\n done(getIEPlugins(options))\n } else {\n done(options.EXCLUDED)\n }\n } else {\n done(getRegularPlugins(options))\n }\n }\n var getRegularPlugins = function (options) {\n if (navigator.plugins == null) {\n return options.NOT_AVAILABLE\n }\n\n var plugins = []\n // plugins isn't defined in Node envs.\n for (var i = 0, l = navigator.plugins.length; i < l; i++) {\n if (navigator.plugins[i]) { plugins.push(navigator.plugins[i]) }\n }\n\n // sorting plugins only for those user agents, that we know randomize the plugins\n // every time we try to enumerate them\n if (pluginsShouldBeSorted(options)) {\n plugins = plugins.sort(function (a, b) {\n if (a.name > b.name) { return 1 }\n if (a.name < b.name) { return -1 }\n return 0\n })\n }\n return map(plugins, function (p) {\n var mimeTypes = map(p, function (mt) {\n return [mt.type, mt.suffixes]\n })\n return [p.name, p.description, mimeTypes]\n })\n }\n var getIEPlugins = function (options) {\n var result = []\n if ((Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, 'ActiveXObject')) || ('ActiveXObject' in window)) {\n var names = [\n 'AcroPDF.PDF', // Adobe PDF reader 7+\n 'Adodb.Stream',\n 'AgControl.AgControl', // Silverlight\n 'DevalVRXCtrl.DevalVRXCtrl.1',\n 'MacromediaFlashPaper.MacromediaFlashPaper',\n 'Msxml2.DOMDocument',\n 'Msxml2.XMLHTTP',\n 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr\n 'QuickTime.QuickTime', // QuickTime\n 'QuickTimeCheckObject.QuickTimeCheck.1',\n 'RealPlayer',\n 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',\n 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',\n 'Scripting.Dictionary',\n 'SWCtl.SWCtl', // ShockWave player\n 'Shell.UIHelper',\n 'ShockwaveFlash.ShockwaveFlash', // flash plugin\n 'Skype.Detection',\n 'TDCCtl.TDCCtl',\n 'WMPlayer.OCX', // Windows media player\n 'rmocx.RealPlayer G2 Control',\n 'rmocx.RealPlayer G2 Control.1'\n ]\n // starting to detect plugins in IE\n result = map(names, function (name) {\n try {\n // eslint-disable-next-line no-new\n new window.ActiveXObject(name)\n return name\n } catch (e) {\n return options.ERROR\n }\n })\n } else {\n result.push(options.NOT_AVAILABLE)\n }\n if (navigator.plugins) {\n result = result.concat(getRegularPlugins(options))\n }\n return result\n }\n var pluginsShouldBeSorted = function (options) {\n var should = false\n for (var i = 0, l = options.plugins.sortPluginsFor.length; i < l; i++) {\n var re = options.plugins.sortPluginsFor[i]\n if (navigator.userAgent.match(re)) {\n should = true\n break\n }\n }\n return should\n }\n var touchSupportKey = function (done) {\n done(getTouchSupport())\n }\n var hardwareConcurrencyKey = function (done, options) {\n done(getHardwareConcurrency(options))\n }\n var hasSessionStorage = function (options) {\n try {\n return !!window.sessionStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n\n// https://bugzilla.mozilla.org/show_bug.cgi?id=781447\n var hasLocalStorage = function (options) {\n try {\n return !!window.localStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var hasIndexedDB = function (options) {\n try {\n return !!window.indexedDB\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var getHardwareConcurrency = function (options) {\n if (navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency\n }\n return options.NOT_AVAILABLE\n }\n var getNavigatorCpuClass = function (options) {\n return navigator.cpuClass || options.NOT_AVAILABLE\n }\n var getNavigatorPlatform = function (options) {\n if (navigator.platform) {\n return navigator.platform\n } else {\n return options.NOT_AVAILABLE\n }\n }\n var getDoNotTrack = function (options) {\n if (navigator.doNotTrack) {\n return navigator.doNotTrack\n } else if (navigator.msDoNotTrack) {\n return navigator.msDoNotTrack\n } else if (window.doNotTrack) {\n return window.doNotTrack\n } else {\n return options.NOT_AVAILABLE\n }\n }\n// This is a crude and primitive touch screen detection.\n// It's not possible to currently reliably detect the availability of a touch screen\n// with a JS, without actually subscribing to a touch event.\n// http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n// https://github.com/Modernizr/Modernizr/issues/548\n// method returns an array of 3 values:\n// maxTouchPoints, the success or failure of creating a TouchEvent,\n// and the availability of the 'ontouchstart' property\n\n var getTouchSupport = function () {\n var maxTouchPoints = 0\n var touchEvent\n if (typeof navigator.maxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.maxTouchPoints\n } else if (typeof navigator.msMaxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.msMaxTouchPoints\n }\n try {\n document.createEvent('TouchEvent')\n touchEvent = true\n } catch (_) {\n touchEvent = false\n }\n var touchStart = 'ontouchstart' in window\n return [maxTouchPoints, touchEvent, touchStart]\n }\n// https://www.browserleaks.com/canvas#how-does-it-work\n\n var getCanvasFp = function (options) {\n var result = []\n // Very simple now, need to make it more complex (geo shapes etc)\n var canvas = document.createElement('canvas')\n canvas.width = 2000\n canvas.height = 200\n canvas.style.display = 'inline'\n var ctx = canvas.getContext('2d')\n // detect browser support of canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n ctx.rect(0, 0, 10, 10)\n ctx.rect(2, 2, 6, 6)\n result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))\n\n ctx.textBaseline = 'alphabetic'\n ctx.fillStyle = '#f60'\n ctx.fillRect(125, 1, 62, 20)\n ctx.fillStyle = '#069'\n // https://github.com/Valve/fingerprintjs2/issues/66\n if (options.dontUseFakeFontInCanvas) {\n ctx.font = '11pt Arial'\n } else {\n ctx.font = '11pt no-real-font-123'\n }\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 2, 15)\n ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'\n ctx.font = '18pt Arial'\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 4, 45)\n\n // canvas blending\n // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n ctx.globalCompositeOperation = 'multiply'\n ctx.fillStyle = 'rgb(255,0,255)'\n ctx.beginPath()\n ctx.arc(50, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(0,255,255)'\n ctx.beginPath()\n ctx.arc(100, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,255,0)'\n ctx.beginPath()\n ctx.arc(75, 100, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,0,255)'\n // canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n ctx.arc(75, 75, 75, 0, Math.PI * 2, true)\n ctx.arc(75, 75, 25, 0, Math.PI * 2, true)\n ctx.fill('evenodd')\n\n if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }\n return result\n }\n var getWebglFp = function () {\n var gl\n var fa2s = function (fa) {\n gl.clearColor(0.0, 0.0, 0.0, 1.0)\n gl.enable(gl.DEPTH_TEST)\n gl.depthFunc(gl.LEQUAL)\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n return '[' + fa[0] + ', ' + fa[1] + ']'\n }\n var maxAnisotropy = function (gl) {\n var ext = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic')\n if (ext) {\n var anisotropy = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n if (anisotropy === 0) {\n anisotropy = 2\n }\n return anisotropy\n } else {\n return null\n }\n }\n\n gl = getWebglCanvas()\n if (!gl) { return null }\n // WebGL fingerprinting is a combination of techniques, found in MaxMind antifraud script & Augur fingerprinting.\n // First it draws a gradient object with shaders and convers the image to the Base64 string.\n // Then it enumerates all WebGL extensions & capabilities and appends them to the Base64 string, resulting in a huge WebGL string, potentially very unique on each device\n // Since iOS supports webgl starting from version 8.1 and 8.1 runs on several graphics chips, the results may be different across ios devices, but we need to verify it.\n var result = []\n var vShaderTemplate = 'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'\n var fShaderTemplate = 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}'\n var vertexPosBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer)\n var vertices = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0])\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW)\n vertexPosBuffer.itemSize = 3\n vertexPosBuffer.numItems = 3\n var program = gl.createProgram()\n var vshader = gl.createShader(gl.VERTEX_SHADER)\n gl.shaderSource(vshader, vShaderTemplate)\n gl.compileShader(vshader)\n var fshader = gl.createShader(gl.FRAGMENT_SHADER)\n gl.shaderSource(fshader, fShaderTemplate)\n gl.compileShader(fshader)\n gl.attachShader(program, vshader)\n gl.attachShader(program, fshader)\n gl.linkProgram(program)\n gl.useProgram(program)\n program.vertexPosAttrib = gl.getAttribLocation(program, 'attrVertex')\n program.offsetUniform = gl.getUniformLocation(program, 'uniformOffset')\n gl.enableVertexAttribArray(program.vertexPosArray)\n gl.vertexAttribPointer(program.vertexPosAttrib, vertexPosBuffer.itemSize, gl.FLOAT, !1, 0, 0)\n gl.uniform2f(program.offsetUniform, 1, 1)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexPosBuffer.numItems)\n try {\n result.push(gl.canvas.toDataURL())\n } catch (e) {\n /* .toDataURL may be absent or broken (blocked by extension) */\n }\n result.push('extensions:' + (gl.getSupportedExtensions() || []).join(';'))\n result.push('webgl aliased line width range:' + fa2s(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)))\n result.push('webgl aliased point size range:' + fa2s(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)))\n result.push('webgl alpha bits:' + gl.getParameter(gl.ALPHA_BITS))\n result.push('webgl antialiasing:' + (gl.getContextAttributes().antialias ? 'yes' : 'no'))\n result.push('webgl blue bits:' + gl.getParameter(gl.BLUE_BITS))\n result.push('webgl depth bits:' + gl.getParameter(gl.DEPTH_BITS))\n result.push('webgl green bits:' + gl.getParameter(gl.GREEN_BITS))\n result.push('webgl max anisotropy:' + maxAnisotropy(gl))\n result.push('webgl max combined texture image units:' + gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS))\n result.push('webgl max cube map texture size:' + gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE))\n result.push('webgl max fragment uniform vectors:' + gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS))\n result.push('webgl max render buffer size:' + gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))\n result.push('webgl max texture image units:' + gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max texture size:' + gl.getParameter(gl.MAX_TEXTURE_SIZE))\n result.push('webgl max varying vectors:' + gl.getParameter(gl.MAX_VARYING_VECTORS))\n result.push('webgl max vertex attribs:' + gl.getParameter(gl.MAX_VERTEX_ATTRIBS))\n result.push('webgl max vertex texture image units:' + gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max vertex uniform vectors:' + gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS))\n result.push('webgl max viewport dims:' + fa2s(gl.getParameter(gl.MAX_VIEWPORT_DIMS)))\n result.push('webgl red bits:' + gl.getParameter(gl.RED_BITS))\n result.push('webgl renderer:' + gl.getParameter(gl.RENDERER))\n result.push('webgl shading language version:' + gl.getParameter(gl.SHADING_LANGUAGE_VERSION))\n result.push('webgl stencil bits:' + gl.getParameter(gl.STENCIL_BITS))\n result.push('webgl vendor:' + gl.getParameter(gl.VENDOR))\n result.push('webgl version:' + gl.getParameter(gl.VERSION))\n\n try {\n // Add the unmasked vendor and unmasked renderer if the debug_renderer_info extension is available\n var extensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info')\n if (extensionDebugRendererInfo) {\n result.push('webgl unmasked vendor:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL))\n result.push('webgl unmasked renderer:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL))\n }\n } catch (e) { /* squelch */ }\n\n if (!gl.getShaderPrecisionFormat) {\n return result\n }\n\n each(['FLOAT', 'INT'], function (numType) {\n each(['VERTEX', 'FRAGMENT'], function (shader) {\n each(['HIGH', 'MEDIUM', 'LOW'], function (numSize) {\n each(['precision', 'rangeMin', 'rangeMax'], function (key) {\n var format = gl.getShaderPrecisionFormat(gl[shader + '_SHADER'], gl[numSize + '_' + numType])[key]\n if (key !== 'precision') {\n key = 'precision ' + key\n }\n var line = ['webgl ', shader.toLowerCase(), ' shader ', numSize.toLowerCase(), ' ', numType.toLowerCase(), ' ', key, ':', format].join('')\n result.push(line)\n })\n })\n })\n })\n return result\n }\n var getWebglVendorAndRenderer = function () {\n /* This a subset of the WebGL fingerprint with a lot of entropy, while being reasonably browser-independent */\n try {\n var glContext = getWebglCanvas()\n var extensionDebugRendererInfo = glContext.getExtension('WEBGL_debug_renderer_info')\n return glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL) + '~' + glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)\n } catch (e) {\n return null\n }\n }\n var getAdBlock = function () {\n var ads = document.createElement('div')\n ads.innerHTML = '&nbsp;'\n ads.className = 'adsbox'\n var result = false\n try {\n // body may not exist, that's why we need try/catch\n document.body.appendChild(ads)\n result = document.getElementsByClassName('adsbox')[0].offsetHeight === 0\n document.body.removeChild(ads)\n } catch (e) {\n result = false\n }\n return result\n }\n var getHasLiedLanguages = function () {\n // We check if navigator.language is equal to the first language of navigator.languages\n if (typeof navigator.languages !== 'undefined') {\n try {\n var firstLanguages = navigator.languages[0].substr(0, 2)\n if (firstLanguages !== navigator.language.substr(0, 2)) {\n return true\n }\n } catch (err) {\n return true\n }\n }\n return false\n }\n var getHasLiedResolution = function () {\n return window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight\n }\n var getHasLiedOs = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var oscpu = navigator.oscpu\n var platform = navigator.platform.toLowerCase()\n var os\n // We extract the OS from the user agent (respect the order of the if else if statement)\n if (userAgent.indexOf('windows phone') >= 0) {\n os = 'Windows Phone'\n } else if (userAgent.indexOf('win') >= 0) {\n os = 'Windows'\n } else if (userAgent.indexOf('android') >= 0) {\n os = 'Android'\n } else if (userAgent.indexOf('linux') >= 0) {\n os = 'Linux'\n } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0) {\n os = 'iOS'\n } else if (userAgent.indexOf('mac') >= 0) {\n os = 'Mac'\n } else {\n os = 'Other'\n }\n // We detect if the person uses a mobile device\n var mobileDevice = (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0))\n\n if (mobileDevice && os !== 'Windows Phone' && os !== 'Android' && os !== 'iOS' && os !== 'Other') {\n return true\n }\n\n // We compare oscpu with the OS extracted from the UA\n if (typeof oscpu !== 'undefined') {\n oscpu = oscpu.toLowerCase()\n if (oscpu.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if (oscpu.indexOf('linux') >= 0 && os !== 'Linux' && os !== 'Android') {\n return true\n } else if (oscpu.indexOf('mac') >= 0 && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((oscpu.indexOf('win') === -1 && oscpu.indexOf('linux') === -1 && oscpu.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n }\n\n // We compare platform with the OS extracted from the UA\n if (platform.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if ((platform.indexOf('linux') >= 0 || platform.indexOf('android') >= 0 || platform.indexOf('pike') >= 0) && os !== 'Linux' && os !== 'Android') {\n return true\n } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((platform.indexOf('win') === -1 && platform.indexOf('linux') === -1 && platform.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n\n return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'\n }\n var getHasLiedBrowser = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var productSub = navigator.productSub\n\n // we extract the browser from the user agent (respect the order of the tests)\n var browser\n if (userAgent.indexOf('firefox') >= 0) {\n browser = 'Firefox'\n } else if (userAgent.indexOf('opera') >= 0 || userAgent.indexOf('opr') >= 0) {\n browser = 'Opera'\n } else if (userAgent.indexOf('chrome') >= 0) {\n browser = 'Chrome'\n } else if (userAgent.indexOf('safari') >= 0) {\n browser = 'Safari'\n } else if (userAgent.indexOf('trident') >= 0) {\n browser = 'Internet Explorer'\n } else {\n browser = 'Other'\n }\n\n if ((browser === 'Chrome' || browser === 'Safari' || browser === 'Opera') && productSub !== '20030107') {\n return true\n }\n\n // eslint-disable-next-line no-eval\n var tempRes = eval.toString().length\n if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {\n return true\n } else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {\n return true\n } else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'Opera' && browser !== 'Other') {\n return true\n }\n\n // We create an error to see how it is handled\n var errFirefox\n try {\n // eslint-disable-next-line no-throw-literal\n throw 'a'\n } catch (err) {\n try {\n err.toSource()\n errFirefox = true\n } catch (errOfErr) {\n errFirefox = false\n }\n }\n return errFirefox && browser !== 'Firefox' && browser !== 'Other'\n }\n var isCanvasSupported = function () {\n var elem = document.createElement('canvas')\n return !!(elem.getContext && elem.getContext('2d'))\n }\n var isWebGlSupported = function () {\n // code taken from Modernizr\n if (!isCanvasSupported()) {\n return false\n }\n\n var glContext = getWebglCanvas()\n return !!window.WebGLRenderingContext && !!glContext\n }\n var isIE = function () {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n return true\n } else if (navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)) { // IE 11\n return true\n }\n return false\n }\n var hasSwfObjectLoaded = function () {\n return typeof window.swfobject !== 'undefined'\n }\n var hasMinFlashInstalled = function () {\n return window.swfobject.hasFlashPlayerVersion('9.0.0')\n }\n var addFlashDivNode = function (options) {\n var node = document.createElement('div')\n node.setAttribute('id', options.fonts.swfContainerId)\n document.body.appendChild(node)\n }\n var loadSwfAndDetectFonts = function (done, options) {\n var hiddenCallback = '___fp_swf_loaded'\n window[hiddenCallback] = function (fonts) {\n done(fonts)\n }\n var id = options.fonts.swfContainerId\n addFlashDivNode()\n var flashvars = { onReady: hiddenCallback }\n var flashparams = { allowScriptAccess: 'always', menu: 'false' }\n window.swfobject.embedSWF(options.fonts.swfPath, id, '1', '1', '9.0.0', false, flashvars, flashparams, {})\n }\n var getWebglCanvas = function () {\n var canvas = document.createElement('canvas')\n var gl = null\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')\n } catch (e) { /* squelch */ }\n if (!gl) { gl = null }\n return gl\n }\n\n var components = [\n {key: 'userAgent', getData: UserAgent},\n {key: 'language', getData: languageKey},\n {key: 'colorDepth', getData: colorDepthKey},\n {key: 'deviceMemory', getData: deviceMemoryKey},\n {key: 'pixelRatio', getData: pixelRatioKey},\n {key: 'hardwareConcurrency', getData: hardwareConcurrencyKey},\n {key: 'screenResolution', getData: screenResolutionKey},\n {key: 'availableScreenResolution', getData: availableScreenResolutionKey},\n {key: 'timezoneOffset', getData: timezoneOffset},\n {key: 'timezone', getData: timezone},\n {key: 'sessionStorage', getData: sessionStorageKey},\n {key: 'localStorage', getData: localStorageKey},\n {key: 'indexedDb', getData: indexedDbKey},\n {key: 'addBehavior', getData: addBehaviorKey},\n {key: 'openDatabase', getData: openDatabaseKey},\n {key: 'cpuClass', getData: cpuClassKey},\n {key: 'platform', getData: platformKey},\n {key: 'doNotTrack', getData: doNotTrackKey},\n {key: 'plugins', getData: pluginsComponent},\n {key: 'canvas', getData: canvasKey},\n {key: 'webgl', getData: webglKey},\n {key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey},\n {key: 'adBlock', getData: adBlockKey},\n {key: 'hasLiedLanguages', getData: hasLiedLanguagesKey},\n {key: 'hasLiedResolution', getData: hasLiedResolutionKey},\n {key: 'hasLiedOs', getData: hasLiedOsKey},\n {key: 'hasLiedBrowser', getData: hasLiedBrowserKey},\n {key: 'touchSupport', getData: touchSupportKey},\n {key: 'fonts', getData: jsFontsKey, pauseBefore: true},\n {key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true},\n {key: 'audio', getData: audioKey},\n {key: 'enumerateDevices', getData: enumerateDevicesKey}\n ]\n\n var Fingerprint2 = function (options) {\n throw new Error(\"'new Fingerprint()' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200\")\n }\n\n Fingerprint2.get = function (options, callback) {\n if (!callback) {\n callback = options\n options = {}\n } else if (!options) {\n options = {}\n }\n extendSoft(options, defaultOptions)\n options.components = options.extraComponents.concat(components)\n\n var keys = {\n data: [],\n addPreprocessedComponent: function (key, value) {\n if (typeof options.preprocessor === 'function') {\n value = options.preprocessor(key, value)\n }\n keys.data.push({key: key, value: value})\n }\n }\n\n var i = -1\n var chainComponents = function (alreadyWaited) {\n i += 1\n if (i >= options.components.length) { // on finish\n callback(keys.data)\n return\n }\n var component = options.components[i]\n\n if (options.excludes[component.key]) {\n chainComponents(false) // skip\n return\n }\n\n if (!alreadyWaited && component.pauseBefore) {\n i -= 1\n setTimeout(function () {\n chainComponents(true)\n }, 1)\n return\n }\n\n try {\n component.getData(function (value) {\n keys.addPreprocessedComponent(component.key, value)\n chainComponents(false)\n }, options)\n } catch (error) {\n // main body error\n keys.addPreprocessedComponent(component.key, String(error))\n chainComponents(false)\n }\n }\n\n chainComponents(false)\n }\n\n Fingerprint2.getPromise = function (options) {\n return new Promise(function (resolve, reject) {\n Fingerprint2.get(options, resolve)\n })\n }\n\n Fingerprint2.getV18 = function (options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n return Fingerprint2.get(options, function (components) {\n var newComponents = []\n for (var i = 0; i < components.length; i++) {\n var component = components[i]\n if (component.value === (options.NOT_AVAILABLE || 'not available')) {\n newComponents.push({key: component.key, value: 'unknown'})\n } else if (component.key === 'plugins') {\n newComponents.push({key: 'plugins',\n value: map(component.value, function (p) {\n var mimeTypes = map(p[2], function (mt) {\n if (mt.join) { return mt.join('~') }\n return mt\n }).join(',')\n return [p[0], p[1], mimeTypes].join('::')\n })})\n } else if (['canvas', 'webgl'].indexOf(component.key) !== -1) {\n newComponents.push({key: component.key, value: component.value.join('~')})\n } else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) {\n if (component.value) {\n newComponents.push({key: component.key, value: 1})\n } else {\n // skip\n continue\n }\n } else {\n if (component.value) {\n newComponents.push(component.value.join ? {key: component.key, value: component.value.join(';')} : component)\n } else {\n newComponents.push({key: component.key, value: component.value})\n }\n }\n }\n var murmur = x64hash128(map(newComponents, function (component) { return component.value }).join('~~~'), 31)\n callback(murmur, newComponents)\n })\n }\n\n Fingerprint2.x64hash128 = x64hash128\n Fingerprint2.VERSION = '2.0.0'\n return Fingerprint2\n})\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var global = require('../internals/global');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw TypeError('Incorrect invocation');\n};\n","module.exports = {};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw TypeError(tryToString(argument) + ' is not iterable');\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TypeError = global.TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var global = require('../internals/global');\nvar isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n return passed;\n};\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n // eslint-disable-next-line unicorn/no-thenable -- safe\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","module.exports = typeof window == 'object';\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","const waitForDuration = (duration = 500) => {\n return new Promise((resolve) => {\n setTimeout(resolve, duration);\n });\n};\n\nexport default waitForDuration;\n","/* eslint-disable no-console */\n\nconst logMessage = (message) => {\n const logger = console ? console.log : () => {};\n logger(message);\n};\n\nexport default logMessage;\n","/* eslint-env browser */\nimport Fingerprint2 from 'fingerprintjs2';\n\nimport waitForDuration from './wait';\nimport logMessage from './log-message';\n\nconst generateDeviceFingerprint = async () => {\n try {\n const components = await Fingerprint2.getPromise();\n if (components && Array.isArray(components)) {\n const sortedComponents = components\n .filter((component) => component.value !== 'not available')\n .sort((a, b) => {\n if (a.key > b.key) {\n return 1;\n }\n if (a.key < b.key) {\n return -1;\n }\n return 0;\n })\n .map((component) => component.value);\n const joinedComponents = sortedComponents && sortedComponents.join('');\n // seed is an arbitrary positive integer used in initializing the hashing function.\n const seed = 31;\n const hash = Fingerprint2.x64hash128(joinedComponents, seed);\n return hash;\n }\n logMessage('Device ID could not be calculated');\n } catch (error) {\n logMessage(error);\n }\n return null;\n};\n\nconst getDeviceFingerprint = async () => {\n let deviceFingerprint;\n try {\n /**\n * The fingerprintjs2 library recommends waiting for some time to get consistent\n * fingerprints across page loads, We tried various durations, 50, 100, 200 etc\n * but it only become consistent after crossing 500 so we decided to go with 550\n */\n if (window) {\n await waitForDuration(550);\n deviceFingerprint = await generateDeviceFingerprint();\n }\n } catch (error) {\n // continue with transaction\n logMessage(\n 'Device ID could not be calculated but we are moving on with the transaction',\n );\n }\n return deviceFingerprint;\n};\n\nexport default getDeviceFingerprint;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","const config = {\n cookieTestUrl: 'https://legacy-staging.paystack.co/test-iframe/start.html',\n publishableKey:\n 'uFmz/uE/SDT6GupOrSEXIZXGByjQ0zFkPyc9LqKHFqnTI0WPN3JS5kQPo/j9or0TOXlqMQj2lzHn/UGsQT4XeQ==',\n publicKey:\n '-----BEGIN PUBLIC KEY-----' +\n '\\r\\n' +\n 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALhZs/7hP0g0+hrqTq0hFyGVxgco0NMx' +\n '\\r\\n' +\n 'ZD8nPS6ihxap0yNFjzdyUuZED6P4/aK9Ezl5ajEI9pcx5/1BrEE+F3kCAwEAAQ==' +\n '\\r\\n' +\n '-----END PUBLIC KEY-----',\n};\n\nexport const devConfig = {\n ...config,\n checkoutUrl: 'http://localhost:8080/',\n paymentBaseUrl: 'https://legacy-staging.paystack.co/',\n paystackApiUrl: 'https://studio-api.paystack.co/',\n pusherKey: '1c7b262ee18455815893',\n pusherUrl:\n 'https://s3-eu-west-1.amazonaws.com/pstk-public-files/js/pusher.min.js',\n};\n\nexport const stagingConfig = {\n ...config,\n checkoutUrl: 'https://checkout-studio.paystack.com/',\n paymentBaseUrl: 'https://legacy-staging.paystack.co/',\n paystackApiUrl: 'https://studio-api.paystack.co/',\n pusherKey: '1c7b262ee18455815893',\n pusherUrl:\n 'https://s3-eu-west-1.amazonaws.com/pstk-public-files/js/pusher.min.js',\n};\n\nexport const productionConfig = {\n ...config,\n checkoutUrl: 'https://checkout.paystack.com/',\n paymentBaseUrl: 'https://standard.paystack.co/',\n paystackApiUrl: 'https://api.paystack.co/',\n pusherKey: '8e4b9b7ca3418bd5cdc8',\n pusherUrl: 'https://checkout.paystack.com/static/vendor/pusher.min.js',\n};\n\n// eslint-disable-next-line no-undef\nconst env = window || process.env;\n\nconst configToEnvironmentMapping = {\n dev: devConfig,\n staging: stagingConfig,\n production: productionConfig,\n};\n\nconst configToUse =\n configToEnvironmentMapping[env.paystackEnvironment] || productionConfig;\n\nexport default configToUse;\n","const noOp = () => undefined;\n\nexport default noOp;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","const PREAUTHORIZATION_STATE_AUTHORIZED = 'authorized';\n\nexport default {\n authorized(response) {\n const { message, status, errors, ...cleanResponse } = response;\n return {\n status: PREAUTHORIZATION_STATE_AUTHORIZED,\n message: message || 'Payment authorized successfully',\n data: cleanResponse,\n };\n },\n success(response) {\n const { message, status, errors, ...cleanResponse } = response;\n return {\n status: 'success',\n message: message || 'Successful',\n data: cleanResponse,\n };\n },\n pending(response) {\n const { message, status, errors, ...cleanResponse } = response;\n return {\n status: 'pending',\n message: message || 'Payment in progress',\n data: cleanResponse,\n };\n },\n getCleanResponse(response, defaultMessage) {\n const { message, status, errors, ...cleanResponse } = response;\n return {\n status,\n message: message || defaultMessage,\n data: cleanResponse,\n };\n },\n auth(response) {\n const { status, message, otpmessage, ...cleanResponse } = response;\n const authMessage = otpmessage || message;\n return {\n status: 'auth',\n message: authMessage || 'Authentication required',\n data: cleanResponse,\n };\n },\n requery(response) {\n const { message } = response;\n return {\n status: 'requery',\n message: message || 'Requery',\n };\n },\n requestCustomField(response) {\n const { message, type, format, field } = response;\n return {\n status: 'custom_field',\n message,\n data: {\n type,\n format,\n field,\n },\n };\n },\n error(response) {\n const error = {\n status: 'failed',\n message: response.message || 'Failed',\n errors: response.errors || [],\n };\n if (response.bank) {\n error.bank = response.bank;\n }\n return error;\n },\n parse(apiResponse) {\n const response = typeof apiResponse === 'object' ? apiResponse : {};\n if (response.data && typeof response.data === 'object') {\n Object.assign(response, response.data);\n delete response.data;\n }\n\n if (['true', true, 'success'].includes(response.status)) {\n return this.success(response);\n }\n if (response.status === PREAUTHORIZATION_STATE_AUTHORIZED) {\n return this.authorized(response);\n }\n if (response.status === 'pending') {\n return this.pending(response);\n }\n if (response.status === 'requery') {\n return this.requery(response);\n }\n if (response.status === 'send') {\n return this.requestCustomField(response);\n }\n if (\n [\n 'transfer-credit-request-received',\n 'transfer-credit-request-pending',\n 'transfer-credit-request-rejected',\n ].includes(response.status)\n ) {\n return this.getCleanResponse(response, 'Transfer credit request');\n }\n if (\n response.status === 'incorrect-amount-sent' ||\n response.message_type === 'INCORRECT_AMOUNT'\n ) {\n return this.getCleanResponse(response, 'Incorrect amount sent');\n }\n if (response.status === 'awaiting_registration_token') {\n return this.getCleanResponse(response);\n }\n if (response.auth && response.auth !== 'none') {\n return this.auth(response);\n }\n\n return this.error(response);\n },\n};\n","import config from '../config';\n\nimport noOp from './functions';\nimport ChargeResponses from './charge-responses';\n\n/* eslint-env browser */\nexport const loadPusher = () => {\n if (!window) {\n return Promise.reject(new Error('Window object not available'));\n }\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', config.pusherUrl);\n xhr.onload = () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n const s = document.createElement('script');\n s.appendChild(document.createTextNode(xhr.responseText));\n document.head.appendChild(s);\n resolve();\n } else {\n reject(xhr.statusText);\n }\n };\n xhr.onerror = () => reject(xhr.statusText);\n xhr.send(null);\n });\n};\n\n// `context` is passed through to set the class property of `isListening` to true/false\n// and provide the logAPIResponse analytics function\n// eslint-disable-next-line consistent-return\nexport const subscribeToChargeEvents = (options, context, callback) => {\n const { channel, paymentMethod } = options;\n let pusher;\n\n if (window && window.Pusher) {\n pusher = new window.Pusher(config.pusherKey, {\n cluster: 'eu',\n disableStats: true,\n });\n }\n\n const pusherUndefinedError = {\n status: 'error',\n message: 'We could not listen for charge response.',\n };\n const pusherSubscriptionError = {\n status: 'error',\n message:\n 'We could not listen for charge response. Use transaction.requery() to check the status.',\n };\n\n const unsubscribeFromPusher = () => {\n pusher.unsubscribe(channel);\n };\n\n if (!pusher) {\n return callback(pusherUndefinedError, noOp);\n }\n\n const pusherSubscription = pusher.subscribe(channel);\n pusherSubscription.bind('pusher:subscription_succeeded', () => {\n context.isListening = true;\n });\n pusherSubscription.bind('pusher:subscription_error', () => {\n context.isListening = false;\n callback(pusherSubscriptionError, noOp);\n });\n\n pusherSubscription.bind('response', (response) => {\n const formattedResponse = ChargeResponses.parse(response);\n context.logAPIResponse(formattedResponse, paymentMethod);\n callback(formattedResponse, unsubscribeFromPusher);\n });\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\nvar getFlags = uncurryThis(regExpFlags);\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = $toString(R.source);\n var rf = R.flags;\n var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n redefine(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://тест').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar RangeError = global.RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar n$Fetch = getBuiltIn('fetch');\nvar N$Request = getBuiltIn('Request');\nvar Headers = getBuiltIn('Headers');\nvar RequestPrototype = N$Request && N$Request.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(n$Fetch)) {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return n$Fetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(N$Request)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new N$Request(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperties = require('../internals/object-define-properties').f;\nvar redefine = require('../internals/redefine');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor('serialize', 'setHref'),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor('getOrigin'),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor('getProtocol', 'setProtocol'),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor('getUsername', 'setUsername'),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor('getPassword', 'setPassword'),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor('getHost', 'setHost'),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor('getHostname', 'setHostname'),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor('getPort', 'setPort'),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor('getPathname', 'setPathname'),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor('getSearch', 'setSearch'),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor('getSearchParams'),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor('getHash', 'setHash')\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\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 Array.isArray(val);\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 a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\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) && (isArrayBuffer(val.buffer));\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 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 plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a empty Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a empty Object, otherwise false\n */\nfunction isEmptyObject(val) {\n return val && Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\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 FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\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.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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 * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n var product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\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') {\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 (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\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\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter, propFilter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n * @param {*} [thing]\n * @returns {?Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n var i = thing.length;\n if (!isNumber(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nfunction forEachEntry(obj, fn) {\n var generator = obj && obj[Symbol.iterator];\n\n var iterator = generator.call(obj);\n\n var result;\n\n while ((result = iterator.next()) && !result.done) {\n var pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\nfunction matchAll(regExp, str) {\n var matches;\n var arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\nvar isHTMLForm = kindOfTest('HTMLFormElement');\n\nvar hasOwnProperty = (function resolver(_hasOwnProperty) {\n return function(obj, prop) {\n return _hasOwnProperty.call(obj, prop);\n };\n})(Object.prototype.hasOwnProperty);\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isEmptyObject: isEmptyObject,\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 stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList,\n forEachEntry: forEachEntry,\n matchAll: matchAll,\n isHTMLForm: isHTMLForm,\n hasOwnProperty: hasOwnProperty\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosError = require('../core/AxiosError');\nvar envFormData = require('../env/classes/FormData');\n\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nvar predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\nfunction isSpecCompliant(thing) {\n return thing && utils.isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator];\n}\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (envFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n var metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n var visitor = options.visitor || defaultVisitor;\n var dots = options.dots;\n var indexes = options.indexes;\n var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n var useBlob = _Blob && isSpecCompliant(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n var arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n (utils.isFileList(value) || utils.endsWith(key, '[]') && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !utils.isUndefined(el) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n var stack = [];\n\n var exposedHelpers = Object.assign(predicates, {\n defaultVisitor: defaultVisitor,\n convertValue: convertValue,\n isVisitable: isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n var result = !utils.isUndefined(el) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","// eslint-disable-next-line strict\nmodule.exports = require('form-data');\n","'use strict';\n\nvar toFormData = require('./toFormData');\n\nfunction encode(str) {\n var charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'\\(\\)~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nvar prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n var _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nmodule.exports = AxiosURLSearchParams;\n","'use strict';\n\nvar utils = require('../utils');\nvar AxiosURLSearchParams = require('../helpers/AxiosURLSearchParams');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n var _encode = options && options.encode || encode;\n\n var serializerParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n\n if (serializerParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializerParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Clear all interceptors from the stack\n */\nInterceptorManager.prototype.clear = function clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nmodule.exports = require('./node/');\n","'use strict';\n\nmodule.exports = {\n isBrowser: true,\n classes: {\n URLSearchParams: require('./classes/URLSearchParams'),\n FormData: require('./classes/FormData'),\n Blob: Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nvar AxiosURLSearchParams = require('../../../helpers/AxiosURLSearchParams');\n\nmodule.exports = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nmodule.exports = FormData;\n","'use strict';\n\nvar utils = require('../utils');\nvar toFormData = require('./toFormData');\nvar platform = require('../platform/');\n\nmodule.exports = function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(function(match) {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\nfunction arrayToObject(arr) {\n var obj = {};\n var keys = Object.keys(arr);\n var i;\n var len = keys.length;\n var key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n var name = path[index++];\n var isNumericKey = Number.isFinite(+name);\n var isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProperty(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n var result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n var obj = {};\n\n utils.forEachEntry(formData, function(name, value) {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nmodule.exports = formDataToJSON;\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.slice(0, i)).toLowerCase();\n val = utils.trim(line.slice(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\nvar platform = require('../platform');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var withXSRFToken = config.withXSRFToken;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config));\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) {\n // Add xsrf header\n var xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, req) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n // false, 0 (zero number), and '' (empty string) are valid JSON values\n if (!requestData && requestData !== false && requestData !== 0 && requestData !== '') {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\nvar toURLEncodedForm = require('../helpers/toURLEncodedForm');\nvar platform = require('../platform');\nvar formDataToJSON = require('../helpers/formDataToJSON');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n var contentType = headers && headers['Content-Type'] || '';\n var hasJSONContentType = contentType.indexOf('application/json') > -1;\n var isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n var isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') !== -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n var _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Number} status HTTP status code\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, status, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers, status);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n null,\n config.transformRequest\n );\n\n normalizeHeaderName(config.headers, 'Accept');\n normalizeHeaderName(config.headers, 'Content-Type');\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n response.status,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n reason.response.status,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isEmptyObject(source)) {\n return utils.merge({}, target);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'withXSRFToken': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.28.0\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n var paramsSerializer = config.paramsSerializer;\n\n utils.isFunction(paramsSerializer) && (config.paramsSerializer = {serialize: paramsSerializer});\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\nvar formDataToJSON = require('./helpers/formDataToJSON');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\naxios.formToJSON = function(thing) {\n return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n};\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","module.exports = require('./lib/axios');","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true; // eslint-disable-line no-param-reassign\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options); // eslint-disable-line no-param-reassign\n } else {\n target.push(item);\n }\n } else {\n target[i] = item; // eslint-disable-line no-param-reassign\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options); // eslint-disable-line no-param-reassign\n } else {\n acc[key] = value; // eslint-disable-line no-param-reassign\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key]; // eslint-disable-line no-param-reassign\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar util = require('./utils');\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = util.assign(\n {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n }\n },\n Format\n);\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = obj.join(',');\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset));\n }\n return [formatter(keyValue) + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n value,\n typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n } else {\n pushToArray(values, stringify(\n value,\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly,\n charset\n ));\n }\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.formatter,\n options.encodeValuesOnly,\n options.charset\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset);\n val = maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset);\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj; // eslint-disable-line no-param-reassign\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n depth: typeof opts.depth === 'number' ? opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","var global = require('../internals/global');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar TypeError = global.TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","const sanitizeParams = (params = {}) =>\n Object.keys(params)\n .filter((key) => ![undefined, null].includes(params[key]))\n .reduce((accumulator, key) => ({ ...accumulator, [key]: params[key] }), {});\n\nexport default sanitizeParams;\n","import axios from 'axios';\nimport qs from 'qs';\n\nimport sanitizeParams from './sanitize-params';\n\nconst axiosInstance = axios.create({\n paramsSerializer: (params) => {\n const sanitizedParams = sanitizeParams(params);\n return qs.stringify(sanitizedParams, {\n arrayFormat: 'brackets',\n });\n },\n});\n\nexport default axiosInstance;\n","/* eslint-env browser */\n\nconst getLanguage = () => {\n try {\n if (window) {\n const languageStorageKey = window.languageStorageKey || 'i18nextLng';\n return (\n (window.localStorage &&\n window.localStorage.getItem(languageStorageKey)) ||\n (navigator && navigator.language)\n );\n }\n return null;\n } catch (_) {\n return null;\n }\n};\n\nexport default getLanguage;\n","import axiosInstance from '../utilities/axios-instance';\nimport config from '../config';\nimport ChargeResponses from '../utilities/charge-responses';\nimport getLanguage from '../utilities/get-language';\n\nconst TransactionAPI = {\n requestInline(params) {\n const language = getLanguage();\n const { connect_account: connectAccount } = params;\n const headers = {\n ...(language && { 'Accept-Language': language }),\n ...(connectAccount && { 'x-connect-account': connectAccount }),\n };\n\n const url = new URL(\n '/checkout/request_inline',\n config.paystackApiUrl,\n ).toString();\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => response.data);\n },\n\n requestStandard(accessCode) {\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = `${config.paystackApiUrl}transaction/verify_access_code/${accessCode}`;\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n\n getByAccessCode(accessCode, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n `/transaction/get_by_access_code/${accessCode}`,\n config.paystackApiUrl,\n ).toString();\n\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n\n verify(reference) {\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n const url = `${config.paystackApiUrl}transaction/verify/${reference}`;\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n\n requery(transactionId) {\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n const url = `${config.paymentBaseUrl}charge/requery/${transactionId}`;\n return axiosInstance\n .get(url, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n markAsAbandoned({ publicKey, transactionId }) {\n const url = `${config.paystackApiUrl}transaction/${transactionId}/mark-as-abandoned`;\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .patch(url, {}, { headers })\n .then((response) => response.data);\n },\n\n verifyStatus({ reference, publicKey }) {\n const url = new URL(\n `transaction/verify_status/${reference}`,\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n\n initializeCustomerSubscriptionAuthorization(params, publicKey) {\n const url = new URL(\n '/customer/authorization/initialize_subscription',\n config.paystackApiUrl,\n ).toString();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n };\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => response.data);\n },\n};\n\nexport default TransactionAPI;\n","import config from '../../config';\nimport axiosInstance from '../../utilities/axios-instance';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst PayWithTransferAPI = {\n generateManagedAccount(params, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n 'checkout/pay_with_transfer',\n config.paystackApiUrl,\n ).toString();\n\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n incorrectAmountDecision(params, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n 'pay-with-transfer/incorrect-amount/decision',\n config.paystackApiUrl,\n ).toString();\n\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n authenticatePayer(params, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n 'pay-with-transfer/authenticate-payer',\n config.paystackApiUrl,\n ).toString();\n\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default PayWithTransferAPI;\n","import PayWithTransferAPI from './pay-with-transfer.api';\n\nexport default {\n getManagedAccount({ fulfilLateNotification, preferredProvider }) {\n const params = {\n transaction_id: this.id,\n fulfil_late_notification: fulfilLateNotification,\n preferred_provider: preferredProvider,\n };\n\n return PayWithTransferAPI.generateManagedAccount(\n params,\n this.merchant.key,\n ).then((response) => {\n if (response.status === 'success') {\n this.bankTransfer = response;\n }\n return response;\n });\n },\n\n listenForPayWithTransferCharge(callback, pusherChannel = '') {\n const { data } = this.bankTransfer;\n const listenerOptions = {\n channel: (data && data.pusher_channel) || pusherChannel,\n paymentMethod: 'bank_transfer',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n\n sendIncorrectAmountDecision(decisionMade) {\n const params = {\n transaction_id: this.id,\n decision: decisionMade,\n };\n\n return PayWithTransferAPI.incorrectAmountDecision(\n params,\n this.merchant.key,\n );\n },\n\n sendAuthenticatePayer({ amountPaid, payerAccountNumber, payerBankSlug }) {\n const params = {\n transaction_id: this.id,\n amount: amountPaid,\n payer_account_number: payerAccountNumber,\n payer_bank_slug: payerBankSlug,\n };\n\n return PayWithTransferAPI.authenticatePayer(params, this.merchant.key);\n },\n};\n","'use strict';\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\n// Filename: formurlencoded.js\n// Timestamp: 2017.07.04-19:19:11 (last modified)\n// Author(s): Bumblehead (www.bumblehead.com), JBlashill (james@blashill.com), Jumper423 (jump.e.r@yandex.ru)\n\nmodule.exports = function (data) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var sorted = Boolean(opts.sorted),\n skipIndex = Boolean(opts.skipIndex),\n ignorenull = Boolean(opts.ignorenull),\n encode = function encode(value) {\n return String(value).replace(/(?:[\\0-\\x1F\"-&\\+-\\}\\x7F-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])/g, encodeURIComponent).replace(/ /g, '+').replace(/[!'()~\\*]/g, function (ch) {\n return '%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase();\n });\n },\n keys = function keys(obj) {\n var keyarr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object.keys(obj);\n return sorted ? keyarr.sort() : keyarr;\n },\n filterjoin = function filterjoin(arr) {\n return arr.filter(function (e) {\n return e;\n }).join('&');\n },\n objnest = function objnest(name, obj) {\n return filterjoin(keys(obj).map(function (key) {\n return nest(name + '[' + key + ']', obj[key]);\n }));\n },\n arrnest = function arrnest(name, arr) {\n return arr.length ? filterjoin(arr.map(function (elem, index) {\n return skipIndex ? nest(name + '[]', elem) : nest(name + '[' + index + ']', elem);\n })) : encode(name + '[]');\n },\n nest = function nest(name, value) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : typeof value === 'undefined' ? 'undefined' : _typeof(value);\n var f = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (value === f) f = ignorenull ? f : encode(name) + '=' + f;else if (/string|number|boolean/.test(type)) f = encode(name) + '=' + encode(value);else if (Array.isArray(value)) f = arrnest(name, value);else if (type === 'object') f = objnest(name, value);\n\n return f;\n };\n\n return data && filterjoin(keys(data).map(function (key) {\n return nest(key, data[key]);\n }));\n};","import formurlencoded from 'form-urlencoded';\n\nimport config from '../../config';\nimport axiosInstance from '../../utilities/axios-instance';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst PayattitudeAPI = {\n charge({ transactionId, phoneNumber }) {\n const url = `${config.paymentBaseUrl}payattitude/charge/${transactionId}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = {\n phone_number: phoneNumber,\n };\n const urlEncodedParams = formurlencoded(params);\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then(({ data }) => ChargeResponses.parse(data));\n },\n};\n\nexport default PayattitudeAPI;\n","import PayattitudeAPI from './payattitude.api';\n\nconst paymentMethod = 'payattitude';\n\nexport default {\n chargePayattitude({ phoneNumber }) {\n const params = {\n transactionId: this.id,\n phoneNumber,\n };\n\n return PayattitudeAPI.charge(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n listenForPayattitudeCharge(callback, pusherChannel = '') {\n const listenerOptions = {\n paymentMethod,\n channel: pusherChannel,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n","import config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\n\nconst EFT = {\n getEFTUrl({ eftGateway }) {\n return new Promise((resolve, reject) => {\n if (!eftGateway) {\n reject(Error('Please pass the `eftGateway`'));\n }\n const url = `${config.paymentBaseUrl}eft/${eftGateway}/${this.id}`;\n resolve(ChargeResponses.success({ url }));\n });\n },\n\n listenForEFTCharge(callback) {\n const listenerOptions = {\n channel: `EFT_${this.id}`,\n paymentMethod: 'eft',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n\nexport default EFT;\n","import formurlencoded from 'form-urlencoded';\n\nimport axiosInstance from '../../utilities/axios-instance';\nimport config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst ApplePayAPI = {\n validateApplePaySession({\n sessionUrl,\n displayName,\n transactionId,\n domainName,\n }) {\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n const url = `${config.paymentBaseUrl}applepay/validate-session`;\n const urlEncodedParams = formurlencoded({\n sessionUrl,\n displayName,\n domainName,\n transaction: transactionId,\n });\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n charge({ transactionId, paymentObject }) {\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n const url = `${config.paymentBaseUrl}applepay/charge`;\n const urlEncodedParams = formurlencoded({\n paymentObject,\n transaction: transactionId,\n });\n return axiosInstance\n .post(url, urlEncodedParams, {\n headers,\n })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default ApplePayAPI;\n","import ApplePayAPI from './apple-pay.api';\n\nconst paymentMethod = 'apple pay';\n\nexport default {\n validateApplePaySession({ sessionUrl, displayName, domainName }) {\n this.logAttempt(paymentMethod);\n return ApplePayAPI.validateApplePaySession({\n sessionUrl,\n displayName,\n domainName,\n transactionId: this.id,\n }).then((response) => {\n this.logAPIResponseMessage(response.message);\n return response;\n });\n },\n chargeApplePay({ paymentObject }) {\n return ApplePayAPI.charge({\n transactionId: this.id,\n device: this.deviceFingerprint,\n paymentObject,\n }).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n};\n","import axiosInstance from '../../utilities/axios-instance';\nimport config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst PayPalAPI = {\n createOrder(transactionId) {\n const url = `${config.paymentBaseUrl}paypal/${transactionId}/create`;\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(url, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n captureOrder(transactionId) {\n const url = `${config.paymentBaseUrl}paypal/${transactionId}/capture`;\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(url, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n getConfig({ publicKey, transactionId }) {\n const url = `${config.paystackApiUrl}paypal/config?transaction=${transactionId}`;\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n};\n\nexport default PayPalAPI;\n","import PayPalAPI from './paypal.api';\n\nconst paymentMethod = 'paypal';\n\nexport default {\n createPayPalOrder() {\n this.logAttempt(paymentMethod);\n return PayPalAPI.createOrder(this.id).then((response) => {\n this.logAPIResponseMessage(response.message);\n return response;\n });\n },\n capturePayPalOrder() {\n return PayPalAPI.captureOrder(this.id).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n getPayPalConfig() {\n return PayPalAPI.getConfig({\n publicKey: this.merchant.key,\n transactionId: this.id,\n });\n },\n};\n","import { JSEncrypt } from 'jsencrypt';\n\nimport config from '../../config';\n\nexport default function encrypt(toEncrypt) {\n const jsEncrypt = new JSEncrypt();\n jsEncrypt.setPublicKey(config.publicKey);\n return jsEncrypt.encrypt(toEncrypt);\n}\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.JSEncrypt = {})));\n}(this, (function (exports) { 'use strict';\n\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += int2char(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += int2char((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += int2char(slop);\n ret += int2char(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += int2char((slop << 2) | (v >> 4));\n ret += int2char(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += int2char(slop << 2);\n }\n return ret;\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder$1;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder$1 === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder$1 = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder$1[b64.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder$1[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder$1[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini <lapo@lapo.it>\n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n// ASN.1 JavaScript decoder\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \" + pos + \" on a stream of length \" + this.enc.length);\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n// Copyright (c) 2005 Tom Wu\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += int2char(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + lbit(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += cbit(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1<<n)\n BigInteger.prototype.setBit = function (n) {\n return this.changeBit(n, op_or);\n };\n // BigInteger.prototype.clearBit = bnClearBit;\n // (public) this & ~(1<<n)\n BigInteger.prototype.clearBit = function (n) {\n return this.changeBit(n, op_andnot);\n };\n // BigInteger.prototype.flipBit = bnFlipBit;\n // (public) this ^ (1<<n)\n BigInteger.prototype.flipBit = function (n) {\n return this.changeBit(n, op_xor);\n };\n // BigInteger.prototype.add = bnAdd;\n // (public) this + a\n BigInteger.prototype.add = function (a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n };\n // BigInteger.prototype.subtract = bnSubtract;\n // (public) this - a\n BigInteger.prototype.subtract = function (a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n };\n // BigInteger.prototype.multiply = bnMultiply;\n // (public) this * a\n BigInteger.prototype.multiply = function (a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n };\n // BigInteger.prototype.divide = bnDivide;\n // (public) this / a\n BigInteger.prototype.divide = function (a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n };\n // BigInteger.prototype.remainder = bnRemainder;\n // (public) this % a\n BigInteger.prototype.remainder = function (a) {\n var r = nbi();\n this.divRemTo(a, null, r);\n return r;\n };\n // BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n // (public) [this/a,this%a]\n BigInteger.prototype.divideAndRemainder = function (a) {\n var q = nbi();\n var r = nbi();\n this.divRemTo(a, q, r);\n return [q, r];\n };\n // BigInteger.prototype.modPow = bnModPow;\n // (public) this^e % m (HAC 14.85)\n BigInteger.prototype.modPow = function (e, m) {\n var i = e.bitLength();\n var k;\n var r = nbv(1);\n var z;\n if (i <= 0) {\n return r;\n }\n else if (i < 18) {\n k = 1;\n }\n else if (i < 48) {\n k = 3;\n }\n else if (i < 144) {\n k = 4;\n }\n else if (i < 768) {\n k = 5;\n }\n else {\n k = 6;\n }\n if (i < 8) {\n z = new Classic(m);\n }\n else if (m.isEven()) {\n z = new Barrett(m);\n }\n else {\n z = new Montgomery(m);\n }\n // precomputation\n var g = [];\n var n = 3;\n var k1 = k - 1;\n var km = (1 << k) - 1;\n g[1] = z.convert(this);\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<<n)\n BigInteger.prototype.changeBit = function (n, op) {\n var r = BigInteger.ONE.shiftLeft(n);\n this.bitwiseTo(r, op, r);\n return r;\n };\n // BigInteger.prototype.addTo = bnpAddTo;\n // (protected) r = this + a\n BigInteger.prototype.addTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n}\nif (j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n}\nelse if (j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n// Random number generator - requires a PRNG backend, e.g. prng4.js\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var onMouseMoveListener_1 = function (ev) {\n this.count = this.count || 0;\n if (this.count >= 256 || rng_pptr >= rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n this.count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = prng_newstate();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n// Depends on jsbn.js and rng.js\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return parseBigInt(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var m = pkcs1pad2(text, (this.n.bitLength() + 7) >> 3);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16);\n this.e = parseInt(E, 16);\n this.d = parseBigInt(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16);\n this.e = parseInt(E, 16);\n this.d = parseBigInt(D, 16);\n this.p = parseBigInt(P, 16);\n this.q = parseBigInt(Q, 16);\n this.dmp1 = parseBigInt(DP, 16);\n this.dmq1 = parseBigInt(DQ, 16);\n this.coeff = parseBigInt(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new BigInteger(B - qs, 1, rng);\n if (this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new BigInteger(qs, 1, rng);\n if (this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(BigInteger.ONE);\n var q1 = this.q.subtract(BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = parseBigInt(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(BigInteger.ONE);\n var q1 = rsa.q.subtract(BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = nbi();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = nbi();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = parseBigInt(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\",\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function(subc, superc, overrides) {\n if (! superc || ! subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n\n var F = function() {};\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function() {},\n ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function(r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n } catch (ex) {} _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license <a href=\"https://kjur.github.io/jsrsasign/license/\">MIT License</a>\n */\n\n/**\n * kjur's class library name space\n * <p>\n * This name space provides following name spaces:\n * <ul>\n * <li>{@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder</li>\n * <li>{@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL</li>\n * <li>{@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n\n/**\n * kjur's ASN.1 class library name space\n * <p>\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n * <h4>PROVIDING ASN.1 PRIMITIVES</h4>\n * Here are ASN.1 DER primitive classes.\n * <ul>\n * <li>0x01 {@link KJUR.asn1.DERBoolean}</li>\n * <li>0x02 {@link KJUR.asn1.DERInteger}</li>\n * <li>0x03 {@link KJUR.asn1.DERBitString}</li>\n * <li>0x04 {@link KJUR.asn1.DEROctetString}</li>\n * <li>0x05 {@link KJUR.asn1.DERNull}</li>\n * <li>0x06 {@link KJUR.asn1.DERObjectIdentifier}</li>\n * <li>0x0a {@link KJUR.asn1.DEREnumerated}</li>\n * <li>0x0c {@link KJUR.asn1.DERUTF8String}</li>\n * <li>0x12 {@link KJUR.asn1.DERNumericString}</li>\n * <li>0x13 {@link KJUR.asn1.DERPrintableString}</li>\n * <li>0x14 {@link KJUR.asn1.DERTeletexString}</li>\n * <li>0x16 {@link KJUR.asn1.DERIA5String}</li>\n * <li>0x17 {@link KJUR.asn1.DERUTCTime}</li>\n * <li>0x18 {@link KJUR.asn1.DERGeneralizedTime}</li>\n * <li>0x30 {@link KJUR.asn1.DERSequence}</li>\n * <li>0x31 {@link KJUR.asn1.DERSet}</li>\n * </ul>\n * <h4>OTHER ASN.1 CLASSES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.ASN1Object}</li>\n * <li>{@link KJUR.asn1.DERAbstractString}</li>\n * <li>{@link KJUR.asn1.DERAbstractTime}</li>\n * <li>{@link KJUR.asn1.DERAbstractStructured}</li>\n * <li>{@link KJUR.asn1.DERTaggedObject}</li>\n * </ul>\n * <h4>SUB NAME SPACES</h4>\n * <ul>\n * <li>{@link KJUR.asn1.cades} - CAdES long term signature format</li>\n * <li>{@link KJUR.asn1.cms} - Cryptographic Message Syntax</li>\n * <li>{@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)</li>\n * <li>{@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format</li>\n * <li>{@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL</li>\n * </ul>\n * </p>\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) KJUR.asn1 = {};\n\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function() {\n this.integerToByteHex = function(i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1) h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function(bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n } else {\n if (! h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n } else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n } else {\n if (! h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n var biMask = new BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function(dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n * <blockquote>\n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n * </blockquote>\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n * <ul>\n * <li>'bool' - DERBoolean</li>\n * <li>'int' - DERInteger</li>\n * <li>'bitstr' - DERBitString</li>\n * <li>'octstr' - DEROctetString</li>\n * <li>'null' - DERNull</li>\n * <li>'oid' - DERObjectIdentifier</li>\n * <li>'enum' - DEREnumerated</li>\n * <li>'utf8str' - DERUTF8String</li>\n * <li>'numstr' - DERNumericString</li>\n * <li>'prnstr' - DERPrintableString</li>\n * <li>'telstr' - DERTeletexString</li>\n * <li>'ia5str' - DERIA5String</li>\n * <li>'utctime' - DERUTCTime</li>\n * <li>'gentime' - DERGeneralizedTime</li>\n * <li>'seq' - DERSequence</li>\n * <li>'set' - DERSet</li>\n * <li>'tag' - DERTaggedObject</li>\n * </ul>\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function(param) {\n var _KJUR = KJUR,\n _KJUR_asn1 = _KJUR.asn1,\n _DERBoolean = _KJUR_asn1.DERBoolean,\n _DERInteger = _KJUR_asn1.DERInteger,\n _DERBitString = _KJUR_asn1.DERBitString,\n _DEROctetString = _KJUR_asn1.DEROctetString,\n _DERNull = _KJUR_asn1.DERNull,\n _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,\n _DEREnumerated = _KJUR_asn1.DEREnumerated,\n _DERUTF8String = _KJUR_asn1.DERUTF8String,\n _DERNumericString = _KJUR_asn1.DERNumericString,\n _DERPrintableString = _KJUR_asn1.DERPrintableString,\n _DERTeletexString = _KJUR_asn1.DERTeletexString,\n _DERIA5String = _KJUR_asn1.DERIA5String,\n _DERUTCTime = _KJUR_asn1.DERUTCTime,\n _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime,\n _DERSequence = _KJUR_asn1.DERSequence,\n _DERSet = _KJUR_asn1.DERSet,\n _DERTaggedObject = _KJUR_asn1.DERTaggedObject,\n _newObject = _KJUR_asn1.ASN1Util.newObject;\n\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n\n if (key == \"bool\") return new _DERBoolean(param[key]);\n if (key == \"int\") return new _DERInteger(param[key]);\n if (key == \"bitstr\") return new _DERBitString(param[key]);\n if (key == \"octstr\") return new _DEROctetString(param[key]);\n if (key == \"null\") return new _DERNull(param[key]);\n if (key == \"oid\") return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\") return new _DEREnumerated(param[key]);\n if (key == \"utf8str\") return new _DERUTF8String(param[key]);\n if (key == \"numstr\") return new _DERNumericString(param[key]);\n if (key == \"prnstr\") return new _DERPrintableString(param[key]);\n if (key == \"telstr\") return new _DERTeletexString(param[key]);\n if (key == \"ia5str\") return new _DERIA5String(param[key]);\n if (key == \"utctime\") return new _DERUTCTime(param[key]);\n if (key == \"gentime\") return new _DERGeneralizedTime(param[key]);\n\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({'array': a});\n }\n\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({'array': a});\n }\n\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj});\n } else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function(param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') &rarr; \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function(hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(- 8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n return s;\n};\n\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") &rarr; \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function(oidString) {\n var itox = function(i) {\n var h = i.toString(16);\n if (h.length == 1) h = '0' + h;\n return h;\n };\n\n var roidtox = function(roid) {\n var h = '';\n var bi = new BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7) padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++) bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7) b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n\n if (! oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n\n\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n\n// ********************************************************************\n\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function() {\n var hV = '';\n\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function() {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n } else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function() {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function() {\n this.getEncodedHex();\n return this.hV;\n };\n\n this.getFreshValueHex = function() {\n return '';\n };\n};\n\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function(params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function() {\n return this.s;\n };\n\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function(newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function(newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n } else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n } else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function(params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function(d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function(dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc') year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n\n this.zeroPadding = function(s, len) {\n if (s.length >= len) return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function() {\n return this.s;\n };\n\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function(newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function(year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n};\nYAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function(params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function(asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function(asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n\n\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function() {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>int - specify initial ASN.1 value(V) by integer value</li>\n * <li>bigint - specify initial ASN.1 value(V) by BigInteger object</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function(params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function(bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function(intValue) {\n var bi = new BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n * <br/>\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function(newHexString) {\n this.hV = newHexString;\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n } else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n } else if (typeof params == \"number\") {\n this.setByInteger(params);\n } else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>bin - specify binary string (ex. '10111')</li>\n * <li>array - specify array of boolean (ex. [true,false,true,true])</li>\n * <li>hex - specify hexadecimal string of ASN.1 value(V) including unused bits</li>\n * <li>obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.</li>\n * </ul>\n * NOTE1: 'params' can be omitted.<br/>\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).<br/>\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function(params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function(newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function(unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n\n /**\n * set ASN.1 DER BitString by binary string<br/>\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'. <br/>\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function(binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8) unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1) x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n\n /**\n * set ASN.1 TLV value(V) by an array of boolean<br/>\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function(booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n } else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n\n /**\n * generate an array of falses with specified length<br/>\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) &rarr; [false, false, false]\n */\n this.newFalseArray = function(nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n } else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n } else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n } else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString<br/>\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.<br/>\n * Supported \"params\" attributes are:\n * <ul>\n * <li>str - to set a string as a value</li>\n * <li>hex - to set a hexadecimal string as a value</li>\n * <li>obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}</li>\n * </ul>\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function(params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\nYAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function() {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function(params) {\n var itox = function(i) {\n var h = i.toString(16);\n if (h.length == 1) h = '0' + h;\n return h;\n };\n var roidtox = function(roid) {\n var h = '';\n var bi = new BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7) padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++) bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7) b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function(newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n\n /**\n * set value by a OID string<br/>\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function(oidString) {\n if (! oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function(oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n } else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n } else {\n this.setValueName(params);\n }\n } else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n } else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n } else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>int - specify initial ASN.1 value(V) by integer value</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function(params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function(bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function(intValue) {\n var bi = new BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n * <br/>\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function(newHexString) {\n this.hV = newHexString;\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n } else if (typeof params == \"number\") {\n this.setByInteger(params);\n } else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function(params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function(params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function(params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function(params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function(params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\nYAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * <li>date - specify Date object.</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n * <h4>EXAMPLES</h4>\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function(params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n\n /**\n * set value by a Date object<br/>\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function(dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n\n this.getFreshValueHex = function() {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n } else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n } else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n } else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')</li>\n * <li>hex - specify initial ASN.1 value(V) by a hexadecimal string</li>\n * <li>date - specify Date object.</li>\n * <li>millis - specify flag to show milliseconds (from 1.0.6)</li>\n * </ul>\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function(params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:<br/>\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function(dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n\n this.getFreshValueHex = function() {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n } else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n } else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n } else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>array - specify array of ASN1Object to set elements of content</li>\n * </ul>\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function(params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function() {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\nYAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n * <br/>\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n * <ul>\n * <li>array - specify array of ASN1Object to set elements of content</li>\n * <li>sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.</li>\n * </ul>\n * NOTE1: 'params' can be omitted.<br/>\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function(params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function() {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true) a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n * <br/>\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n * <br/>\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n * <ul>\n * <li>explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').</li>\n * <li>tag - specify tag (default is 'a0' which means [0])</li>\n * <li>obj - specify ASN1Object which is tagged</li>\n * </ul>\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function(params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function(isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n } else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n\n this.getFreshValueHex = function() {\n return this.hV;\n };\n\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\nYAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem);\n var asn1 = ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = parseBigInt(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = parseBigInt(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = parseBigInt(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = parseBigInt(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = parseBigInt(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = parseBigInt(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = parseBigInt(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n // Parse the public key.\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = parseBigInt(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new KJUR.asn1.DERInteger({ int: 0 }),\n new KJUR.asn1.DERInteger({ bigint: this.n }),\n new KJUR.asn1.DERInteger({ int: this.e }),\n new KJUR.asn1.DERInteger({ bigint: this.d }),\n new KJUR.asn1.DERInteger({ bigint: this.p }),\n new KJUR.asn1.DERInteger({ bigint: this.q }),\n new KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new KJUR.asn1.DERInteger({ bigint: this.coeff })\n ]\n };\n var seq = new KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return hex2b64(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new KJUR.asn1.DERSequence({\n array: [\n new KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new KJUR.asn1.DERNull()\n ]\n });\n var second_sequence = new KJUR.asn1.DERSequence({\n array: [\n new KJUR.asn1.DERInteger({ bigint: this.n }),\n new KJUR.asn1.DERInteger({ int: this.e })\n ]\n });\n var bit_string = new KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex()\n });\n var seq = new KJUR.asn1.DERSequence({\n array: [\n first_sequence,\n bit_string\n ]\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return hex2b64(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\"));\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(RSAKey));\n\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n options = options || {};\n this.default_key_size = parseInt(options.default_key_size, 10) || 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt(b64tohex(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return hex2b64(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return hex2b64(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, b64tohex(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\n JSEncrypt.version = \"3.0.0-rc.1\";\n return JSEncrypt;\n}());\n\nwindow.JSEncrypt = JSEncrypt;\n\nexports.JSEncrypt = JSEncrypt;\nexports.default = JSEncrypt;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n'use strict';\n\nfunction luhn10(identifier) {\n var sum = 0;\n var alt = false;\n var i = identifier.length - 1;\n var num;\n\n while (i >= 0) {\n num = parseInt(identifier.charAt(i), 10);\n\n if (alt) {\n num *= 2;\n if (num > 9) {\n num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n }\n }\n\n alt = !alt;\n\n sum += num;\n\n i--;\n }\n\n return sum % 10 === 0;\n}\n\nmodule.exports = luhn10;\n","'use strict';\n\nfunction clone(originalObject) {\n var dupe;\n\n if (!originalObject) { return null; }\n\n dupe = JSON.parse(JSON.stringify(originalObject));\n\n return dupe;\n}\n\nmodule.exports = clone;\n","'use strict';\n\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === 'string' || cardNumber instanceof String;\n}\n\nmodule.exports = isValidInputType;\n","'use strict';\n\n// Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n\n return integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max;\n}\n\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n\n return pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length);\n}\n\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n\n return matchesPattern(cardNumber, pattern);\n}\n\nmodule.exports = matches;\n","'use strict';\n\nvar clone = require('./clone');\nvar matches = require('./matches');\n\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, pattern, patternLength, clonedCardConfiguration;\n\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n pattern = cardConfiguration.patterns[i];\n\n if (!matches(cardNumber, pattern)) {\n continue;\n }\n\n clonedCardConfiguration = clone(cardConfiguration);\n\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n } else {\n patternLength = String(pattern).length;\n }\n\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n\n results.push(clonedCardConfiguration);\n break;\n }\n}\n\nmodule.exports = addMatchingCardsToResults;\n","'use strict';\n\nvar types = require('./lib/card-types');\nvar clone = require('./lib/clone');\nvar findBestMatch = require('./lib/find-best-match');\nvar isValidInputType = require('./lib/is-valid-input-type');\nvar addMatchingCardsToResults = require('./lib/add-matching-cards-to-results');\n\nvar testOrder;\nvar customCards = {};\n\nvar cardNames = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMERICAN_EXPRESS: 'american-express',\n DINERS_CLUB: 'diners-club',\n DISCOVER: 'discover',\n JCB: 'jcb',\n UNIONPAY: 'unionpay',\n MAESTRO: 'maestro',\n ELO: 'elo',\n MIR: 'mir',\n HIPER: 'hiper',\n HIPERCARD: 'hipercard'\n};\n\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD\n];\n\ntestOrder = clone(ORIGINAL_TEST_ORDER);\n\nfunction findType(type) {\n return customCards[type] || types[type];\n}\n\nfunction getAllCardTypes() {\n return testOrder.map(function (type) {\n return clone(findType(type));\n });\n}\n\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n var position = testOrder.indexOf(name);\n\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n\n return position;\n}\n\nfunction creditCardType(cardNumber) {\n var bestMatch;\n var results = [];\n\n if (!isValidInputType(cardNumber)) {\n return [];\n }\n\n if (cardNumber.length === 0) {\n return getAllCardTypes(testOrder);\n }\n\n testOrder.forEach(function (type) {\n var cardConfiguration = findType(type);\n\n addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n\n bestMatch = findBestMatch(results);\n\n if (bestMatch) {\n return [bestMatch];\n }\n\n return results;\n}\n\ncreditCardType.getTypeInfo = function (type) {\n return clone(findType(type));\n};\n\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n\n testOrder.splice(position, 1);\n};\n\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n\n customCards[config.type] = config;\n\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\n\ncreditCardType.updateCard = function (cardType, updates) {\n var clonedCard;\n var originalObject = customCards[cardType] || types[cardType];\n\n if (!originalObject) {\n throw new Error('\"' + cardType + '\" is not a recognized type. Use `addCard` instead.');\n }\n\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error('Cannot overwrite type parameter.');\n }\n\n clonedCard = clone(originalObject, true);\n\n Object.keys(clonedCard).forEach(function (key) {\n if (updates[key]) {\n clonedCard[key] = updates[key];\n }\n });\n\n customCards[clonedCard.type] = clonedCard;\n};\n\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\n\ncreditCardType.resetModifications = function () {\n testOrder = clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\n\ncreditCardType.types = cardNames;\n\nmodule.exports = creditCardType;\n","'use strict';\n\nvar cardTypes = {\n visa: {\n niceType: 'Visa',\n type: 'visa',\n patterns: [\n 4\n ],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n mastercard: {\n niceType: 'Mastercard',\n type: 'mastercard',\n patterns: [\n [51, 55],\n [2221, 2229],\n [223, 229],\n [23, 26],\n [270, 271],\n 2720\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n 'american-express': {\n niceType: 'American Express',\n type: 'american-express',\n patterns: [\n 34,\n 37\n ],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: 'CID',\n size: 4\n }\n },\n 'diners-club': {\n niceType: 'Diners Club',\n type: 'diners-club',\n patterns: [\n [300, 305],\n 36,\n 38,\n 39\n ],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n discover: {\n niceType: 'Discover',\n type: 'discover',\n patterns: [\n 6011,\n [644, 649],\n 65\n ],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: 'CID',\n size: 3\n }\n },\n jcb: {\n niceType: 'JCB',\n type: 'jcb',\n patterns: [\n 2131,\n 1800,\n [3528, 3589]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n unionpay: {\n niceType: 'UnionPay',\n type: 'unionpay',\n patterns: [\n 620,\n [624, 626],\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [622019, 622999],\n [62207, 62209],\n [622126, 622925],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVN',\n size: 3\n }\n },\n maestro: {\n niceType: 'Maestro',\n type: 'maestro',\n patterns: [\n 493698,\n [500000, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n elo: {\n niceType: 'Elo',\n type: 'elo',\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058]\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVE',\n size: 3\n }\n },\n mir: {\n niceType: 'Mir',\n type: 'mir',\n patterns: [\n [2200, 2204]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVP2',\n size: 3\n }\n },\n hiper: {\n niceType: 'Hiper',\n type: 'hiper',\n patterns: [\n 637095,\n 637568,\n 637599,\n 637609,\n 637612\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n hipercard: {\n niceType: 'Hipercard',\n type: 'hipercard',\n patterns: [\n 606282\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n }\n};\n\nmodule.exports = cardTypes;\n","'use strict';\n\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) {\n return result.matchStrength;\n }).length;\n\n // if all possible results have a maxStrength property\n // that means the card number is sufficiently long\n // enough to determine conclusively what the type is\n return numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length;\n}\n\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return;\n }\n\n return results.reduce(function (bestMatch, result) { // eslint-disable-line consistent-return\n if (!bestMatch) {\n return result;\n }\n\n // if the current best match pattern is less specific\n // than this result, set the result as the new best match\n if (bestMatch.matchStrength < result.matchStrength) {\n return result;\n }\n\n return bestMatch;\n });\n}\n\nmodule.exports = findBestMatch;\n","'use strict';\n\nvar luhn10 = require('./luhn-10');\nvar getCardTypes = require('credit-card-type');\n\nfunction verification(card, isPotentiallyValid, isValid) {\n return {card: card, isPotentiallyValid: isPotentiallyValid, isValid: isValid};\n}\n\nfunction cardNumber(value, options) {\n var potentialTypes, cardType, isPotentiallyValid, isValid, i, maxLength;\n\n options = options || {};\n\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (typeof value !== 'string') { return verification(null, false, false); }\n\n value = value.replace(/\\-|\\s/g, '');\n\n if (!/^\\d*$/.test(value)) { return verification(null, false, false); }\n\n potentialTypes = getCardTypes(value);\n\n if (potentialTypes.length === 0) {\n return verification(null, false, false);\n } else if (potentialTypes.length !== 1) {\n return verification(null, true, false);\n }\n\n cardType = potentialTypes[0];\n\n if (options.maxLength && value.length > options.maxLength) {\n return verification(cardType, false, false);\n }\n\n if (cardType.type === getCardTypes.types.UNIONPAY && options.luhnValidateUnionPay !== true) {\n isValid = true;\n } else {\n isValid = luhn10(value);\n }\n\n maxLength = Math.max.apply(null, cardType.lengths);\n if (options.maxLength) {\n maxLength = Math.min(options.maxLength, maxLength);\n }\n\n for (i = 0; i < cardType.lengths.length; i++) {\n if (cardType.lengths[i] === value.length) {\n isPotentiallyValid = value.length < maxLength || isValid;\n\n return verification(cardType, isPotentiallyValid, isValid);\n }\n }\n\n return verification(cardType, value.length < maxLength, false);\n}\n\nmodule.exports = cardNumber;\n","'use strict';\n\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\n\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isCurrentYear: isCurrentYear || false\n };\n}\n\nfunction expirationYear(value, maxElapsedYear) {\n var currentFirstTwo, currentYear, firstTwo, len, twoDigitYear, valid, isCurrentYear;\n\n maxElapsedYear = maxElapsedYear || DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n len = value.length;\n\n if (len < 2) {\n return verification(false, true);\n }\n\n currentYear = new Date().getFullYear();\n\n if (len === 3) {\n // 20x === 20x\n firstTwo = value.slice(0, 2);\n currentFirstTwo = String(currentYear).slice(0, 2);\n\n return verification(false, firstTwo === currentFirstTwo);\n }\n\n if (len > 4) {\n return verification(false, false);\n }\n\n value = parseInt(value, 10);\n twoDigitYear = Number(String(currentYear).substr(2, 2));\n\n if (len === 2) {\n isCurrentYear = twoDigitYear === value;\n valid = value >= twoDigitYear && value <= twoDigitYear + maxElapsedYear;\n } else if (len === 4) {\n isCurrentYear = currentYear === value;\n valid = value >= currentYear && value <= currentYear + maxElapsedYear;\n }\n\n return verification(valid, valid, isCurrentYear);\n}\n\nmodule.exports = expirationYear;\n","'use strict';\n\n// Polyfill taken from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray#Polyfill>.\n\nmodule.exports = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n","'use strict';\n\nvar expirationYear = require('./expiration-year');\nvar isArray = require('./lib/is-array');\n\nfunction getNumberOfMonthDigitsInDateString(dateString) {\n var firstCharacter = Number(dateString[0]);\n var assumedYear;\n\n /*\n if the first character in the string starts with `0`,\n we know that the month will be 2 digits.\n\n '0122' => {month: '01', year: '22'}\n */\n if (firstCharacter === 0) {\n return 2;\n }\n\n /*\n if the first character in the string starts with\n number greater than 1, it must be a 1 digit month\n\n '322' => {month: '3', year: '22'}\n */\n if (firstCharacter > 1) {\n return 1;\n }\n\n /*\n if the first 2 characters make up a number between\n 13-19, we know that the month portion must be 1\n\n '139' => {month: '1', year: '39'}\n */\n if (firstCharacter === 1 && Number(dateString[1]) > 2) {\n return 1;\n }\n\n /*\n if the first 2 characters make up a number between\n 10-12, we check if the year portion would be considered\n valid if we assumed that the month was 1. If it is\n not potentially valid, we assume the month must have\n 2 digits.\n\n '109' => {month: '10', year: '9'}\n '120' => {month: '1', year: '20'} // when checked in the year 2019\n '120' => {month: '12', year: '0'} // when checked in the year 2021\n */\n if (firstCharacter === 1) {\n assumedYear = dateString.substr(1);\n\n return expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;\n }\n\n /*\n If the length of the value is exactly 5 characters,\n we assume a full year was passed in, meaning the remaining\n single leading digit must be the month value.\n\n '12202' => {month: '1', year: '2202'}\n */\n if (dateString.length === 5) {\n return 1;\n }\n\n /*\n If the length of the value is more than five characters,\n we assume a full year was passed in addition to the month\n and therefore the month portion must be 2 digits.\n\n '112020' => {month: '11', year: '2020'}\n */\n if (dateString.length > 5) {\n return 2;\n }\n\n /*\n By default, the month value is the first value\n */\n return 1;\n}\n\nfunction parseDate(date) {\n var month, numberOfDigitsInMonth;\n\n if (/^\\d{4}-\\d{1,2}$/.test(date)) {\n date = date.split('-').reverse();\n } else if (/\\//.test(date)) {\n date = date.split(/\\s*\\/\\s*/g);\n } else if (/\\s/.test(date)) {\n date = date.split(/ +/g);\n }\n\n if (isArray(date)) {\n return {\n month: date[0] || '',\n year: date.slice(1).join()\n };\n }\n\n numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(date);\n\n month = date.substr(0, numberOfDigitsInMonth);\n\n return {\n month: month,\n year: date.substr(month.length)\n };\n}\n\nmodule.exports = parseDate;\n","'use strict';\n\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isValidForThisYear: isValidForThisYear || false\n };\n}\n\nfunction expirationMonth(value) {\n var month, result;\n var currentMonth = new Date().getMonth() + 1;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '' || value === '0') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n month = parseInt(value, 10);\n\n if (isNaN(value)) {\n return verification(false, false);\n }\n\n result = month > 0 && month < 13;\n\n return verification(result, result, result && month >= currentMonth);\n}\n\nmodule.exports = expirationMonth;\n","'use strict';\n\nvar parseDate = require('./parse-date');\nvar expirationMonth = require('./expiration-month');\nvar expirationYear = require('./expiration-year');\n\nfunction verification(isValid, isPotentiallyValid, month, year) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n month: month,\n year: year\n };\n}\n\nfunction expirationDate(value, maxElapsedYear) {\n var date, monthValid, yearValid, isValidForThisYear;\n\n if (typeof value === 'string') {\n value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, '$1/$2');\n date = parseDate(value);\n } else if (value !== null && typeof value === 'object') {\n date = {\n month: String(value.month),\n year: String(value.year)\n };\n } else {\n return verification(false, false, null, null);\n }\n\n monthValid = expirationMonth(date.month);\n yearValid = expirationYear(date.year, maxElapsedYear);\n\n if (monthValid.isValid) {\n if (yearValid.isCurrentYear) {\n isValidForThisYear = monthValid.isValidForThisYear;\n\n return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n }\n\n if (yearValid.isValid) {\n return verification(true, true, date.month, date.year);\n }\n }\n\n if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n return verification(false, true, null, null);\n }\n\n return verification(false, false, null, null);\n}\n\nmodule.exports = expirationDate;\n","'use strict';\n\nvar DEFAULT_LENGTH = 3;\n\nfunction includes(array, thing) {\n var i = 0;\n\n for (; i < array.length; i++) {\n if (thing === array[i]) { return true; }\n }\n\n return false;\n}\n\nfunction max(array) {\n var maximum = DEFAULT_LENGTH;\n var i = 0;\n\n for (; i < array.length; i++) {\n maximum = array[i] > maximum ? array[i] : maximum;\n }\n\n return maximum;\n}\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction cvv(value, maxLength) {\n maxLength = maxLength || DEFAULT_LENGTH;\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') { return verification(false, false); }\n if (!/^\\d*$/.test(value)) { return verification(false, false); }\n if (includes(maxLength, value.length)) { return verification(true, true); }\n if (value.length < Math.min.apply(null, maxLength)) { return verification(false, true); }\n if (value.length > max(maxLength)) { return verification(false, false); }\n\n return verification(true, true);\n}\n\nmodule.exports = cvv;\n","'use strict';\n\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction postalCode(value, options) {\n var minLength;\n\n options = options || {};\n\n minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n } else if (value.length < minLength) {\n return verification(false, true);\n }\n\n return verification(true, true);\n}\n\nmodule.exports = postalCode;\n","'use strict';\n\nmodule.exports = {\n number: require('./src/card-number'),\n expirationDate: require('./src/expiration-date'),\n expirationMonth: require('./src/expiration-month'),\n expirationYear: require('./src/expiration-year'),\n cvv: require('./src/cvv'),\n postalCode: require('./src/postal-code'),\n creditCardType: require('credit-card-type')\n};\n","export default [\n {\n type: 'bank_auth',\n name: 'Bank authorization',\n number: '4084080000000409',\n cvv: '000',\n month: '01',\n year: '30',\n },\n {\n type: 'success',\n name: 'Success',\n number: '4084084084084081',\n cvv: '408',\n month: '12',\n year: '30',\n },\n {\n type: 'declined',\n name: 'Declined',\n number: '4084080000005408',\n cvv: '001',\n month: '12',\n year: '30',\n },\n {\n type: 'pin',\n name: 'Pin only validation',\n number: '507850785078507812',\n cvv: '884',\n month: '01',\n year: '30',\n },\n {\n type: 'pin+otp',\n name: 'Pin and OTP validation',\n number: '5060666666666666666',\n cvv: '123',\n month: '01',\n year: '30',\n },\n {\n type: 'pin+phone+otp',\n name: 'Pin, phone and OTP validation',\n number: '507850785078507812',\n cvv: '884',\n month: '01',\n year: '30',\n },\n {\n type: 'default',\n name: 'No validation',\n number: '4084084084084081',\n cvv: '408',\n month: '01',\n year: '30',\n },\n];\n","import Validate from 'card-validator';\n\nimport encrypt from '../encryption/node';\n\nimport testCards from './test-cards';\n\nValidate.creditCardType.addCard({\n niceType: 'Verve',\n type: 'verve',\n patterns: [\n [506000, 507999],\n [650000, 650009],\n ],\n gaps: [4, 8, 12, 16],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3,\n },\n});\n\nValidate.creditCardType.changeOrder('verve', 0);\n\nconst Card = {\n getEncryptedPin(pin) {\n return pin ? encrypt(pin) : undefined;\n },\n\n getLast4(number) {\n return number.substring(number.length - 4);\n },\n\n tokenize({ number, cvv, month, year }) {\n return encrypt(`${number}*${cvv}*${month}*${year}`);\n },\n\n getType(value) {\n const response = Validate.number(value);\n if (response && response.card) {\n return {\n type: response.card.type,\n maxLength: Math.max(...response.card.lengths),\n minLength: Math.min(...response.card.lengths),\n };\n }\n return { type: null, maxLength: 0 };\n },\n\n validate({ number, cvv, month, year }) {\n const { type: cardType } = this.getType(number);\n\n const result = {\n number: this.isNumberValid(number),\n expiry: this.isExpiryValid({ month, year }),\n cvv: this.isCvvValid(cvv, cardType),\n };\n const isValid = Object.values(result).every((value) => value === true);\n\n return {\n isValid,\n result,\n };\n },\n\n validateNumber(value) {\n return Validate.number(value);\n },\n\n isNumberValid(value) {\n return Card.validateNumber(value).isValid;\n },\n\n validateCVV(cvv, cardType) {\n const isAmexCard = cardType === 'american-express';\n const cvvLength = isAmexCard ? 4 : 3;\n return Validate.cvv(cvv, cvvLength);\n },\n\n isCvvValid(cvv, cardType) {\n return Card.validateCVV(cvv, cardType).isValid;\n },\n\n validateExpiry(value) {\n if (value !== null && typeof value === 'object') {\n const { month, year } = value;\n return Validate.expirationMonth(month) && Validate.expirationYear(year);\n }\n\n return Validate.expirationDate(value);\n },\n\n isExpiryValid(value) {\n return Card.validateExpiry(value).isValid;\n },\n\n findTestCard(cardType) {\n const type = cardType || 'default';\n return testCards.find((card) => card.type === type);\n },\n};\n\nexport default Card;\n","import { CardUtils } from '../../utilities/card';\n\nclass Card {\n constructor({ number, cvv, month, year, pin }) {\n this.number = number;\n this.cvv = cvv;\n this.month = month;\n this.year = year;\n this.pin = pin;\n }\n\n getEncryptedPin() {\n return CardUtils.getEncryptedPin(this.pin);\n }\n\n getLast4() {\n return CardUtils.getLast4(this.number);\n }\n\n tokenize() {\n return CardUtils.tokenize({\n number: this.number,\n cvv: this.cvv,\n month: this.month,\n year: this.year,\n });\n }\n\n static getType(value) {\n return CardUtils.getType(value);\n }\n\n static validate({ number, cvv, month, year }) {\n return CardUtils.validate({ number, cvv, month, year });\n }\n\n static validateNumber(value) {\n return CardUtils.validateNumber(value);\n }\n\n static isNumberValid(value) {\n return CardUtils.isNumberValid(value);\n }\n\n static validateCVV(cvv, cardType) {\n return CardUtils.validateCVV(cvv, cardType);\n }\n\n static isCvvValid(cvv, cardType) {\n return CardUtils.isCvvValid(cvv, cardType);\n }\n\n static validateExpiry(value) {\n return CardUtils.validateExpiry(value);\n }\n\n static isExpiryValid(value) {\n return CardUtils.isExpiryValid(value);\n }\n\n static generateTestCard(cardType) {\n return new Card(CardUtils.findTestCard(cardType));\n }\n}\n\nexport default Card;\n","import formurlencoded from 'form-urlencoded';\n\nimport config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport axiosInstance from '../../utilities/axios-instance';\nimport getLanguage from '../../utilities/get-language';\n\nconst CardAPI = {\n charge({\n clientdata,\n last4,\n pin,\n trans,\n device,\n rememberCard,\n transactionType,\n subscription,\n customFields,\n }) {\n const url = `${config.paymentBaseUrl}charge/`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const chargeParams = {\n clientdata,\n last4,\n trans,\n device,\n offset: new Date().getTimezoneOffset(),\n remember_card: rememberCard,\n ...(transactionType && { transaction_type: transactionType }),\n ...(subscription && { subscription }),\n ...(customFields && customFields),\n };\n\n if (pin) {\n chargeParams.handle = pin;\n }\n\n const urlEncodedParams = formurlencoded(chargeParams);\n\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n resumeCardCharge({ device, accessCode, pin }) {\n const url = `${config.paymentBaseUrl}charge/resume/${accessCode}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n const data = { device, ...(pin && { handle: pin }) };\n\n const urlEncodedData = formurlencoded(data);\n return axiosInstance\n .post(url, urlEncodedData, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n chargeRememberedCard({\n last4,\n trans,\n device,\n authorizationCode,\n cvv,\n pin,\n transactionType,\n subscription,\n }) {\n const url = `${config.paymentBaseUrl}charge/`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const chargeParams = {\n last4,\n trans,\n device,\n cvv,\n handle: pin,\n authorization_code: authorizationCode,\n ...(transactionType && { transaction_type: transactionType }),\n ...(subscription && { subscription }),\n };\n\n const urlEncodedParams = formurlencoded(chargeParams);\n\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n authenticate(trans, token) {\n const url = `${config.paymentBaseUrl}charge/validate`;\n const data = {\n trans,\n token,\n };\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const urlEncodedData = formurlencoded(data);\n return axiosInstance\n .post(url, urlEncodedData, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n verifyAddress({ address, city, state, zipCode, transactionId }) {\n const url = `${config.paymentBaseUrl}charge/avs`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n const data = {\n city,\n state,\n address,\n zip_code: zipCode,\n trans: transactionId,\n };\n const urlEncodedData = formurlencoded(data);\n return axiosInstance\n .post(url, urlEncodedData, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n forgetRememberedCard({ authorizationId, publicKey }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n const params = {\n authorization_id: authorizationId,\n };\n const url = `${config.paystackApiUrl}rememberme/forget_card`;\n return axiosInstance\n .post(url, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n async sendSavedCardsOTP({ transaction, phone, channels, email }) {\n const url = new URL(\n '/saved_cards/authorize',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const data = {\n ...(phone && { phone }),\n ...(channels && { channels }),\n ...(email && { email }),\n transaction,\n };\n\n const response = await axiosInstance.post(url, data, { headers });\n return response.data;\n },\n\n async verifySavedCardsOtp({ code, transaction, token }) {\n const url = new URL(\n '/saved_cards/authorize/verify',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const data = {\n code,\n transaction,\n };\n\n const response = await axiosInstance.post(url, data, { headers });\n return response.data;\n },\n\n async getSavedCards({ token }) {\n const url = new URL('/saved_cards/cards', config.paystackApiUrl).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n const response = await axiosInstance.get(url, { headers });\n return response.data;\n },\n\n async deleteSavedCard({ cardCode, token }) {\n const url = new URL(\n `/saved_cards/cards/${cardCode}`,\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n const response = await axiosInstance.delete(url, { headers });\n return response.data;\n },\n\n async chargeSavedCard({\n token,\n device,\n cardCode,\n transaction,\n selectedCurrency,\n }) {\n const url = new URL(\n `/saved_cards/cards/${cardCode}/charge`,\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n const data = {\n device,\n transaction,\n selected_currency: selectedCurrency,\n };\n\n const response = await axiosInstance.post(url, data, { headers });\n return ChargeResponses.parse(response.data);\n },\n};\n\nexport default CardAPI;\n","import encrypt from '../../utilities/encryption/node';\n\nimport Card from './card';\nimport CardAPI from './card.api';\n\nconst paymentMethod = 'card';\nconst savedCardMethods = {\n payment: 'saved card',\n authentication: 'otp',\n};\n\nfunction validate(card, isSetter) {\n return new Promise((resolve, reject) => {\n const validation = Card.validate(card);\n if (!validation.isValid) {\n const throwValidation = isSetter || card.number;\n const errors = Object.keys(validation.result).filter(\n (value) => validation.result[value] === false,\n );\n const errorMessage = `Invalid card details: ${errors.join(', ')}`;\n reject(\n Error(\n throwValidation\n ? errorMessage\n : 'Please set a valid card with Transaction.setCard()',\n ),\n );\n }\n resolve();\n });\n}\n\nexport default {\n setCard(params) {\n return validate(params, true).then(() => {\n this.card = new Card(params);\n });\n },\n\n rememberCard() {\n this.remember_card = true;\n },\n\n chargeCard(customFields = {}) {\n if (!this.card.number && this.card.pin) {\n return this.chargeCardWithPin(customFields);\n }\n return validate(this.card).then(() => {\n this.logAttempt(paymentMethod);\n const chargeParams = {\n clientdata: this.card.tokenize(),\n last4: this.card.getLast4(),\n pin: this.card.getEncryptedPin(),\n trans: this.id,\n device: this.deviceFingerprint,\n rememberCard: this.remember_card,\n transactionType: this.transactionType,\n subscription: this.subscription,\n customFields,\n };\n\n return CardAPI.charge(chargeParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n });\n },\n\n /**\n * Handles submitting a card pin after\n * other card details have been previously submitted.\n */\n chargeCardWithPin(customFields = {}) {\n this.logAttempt(paymentMethod);\n const chargeParams = {\n pin: encrypt(this.card.pin),\n trans: this.id,\n device: this.deviceFingerprint,\n rememberCard: this.remember_card,\n transactionType: this.transactionType,\n subscription: this.subscription,\n customFields,\n };\n return CardAPI.charge(chargeParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n chargeRememberedCard({ cvv, authorizationCode, cardLast4, pin }) {\n this.logAttempt(paymentMethod);\n const encryptedPin = encrypt(pin);\n const chargeParams = {\n authorizationCode,\n cvv,\n last4: cardLast4,\n trans: this.id,\n device: this.deviceFingerprint,\n pin: encryptedPin,\n transactionType: this.transactionType,\n subscription: this.subscription,\n };\n\n return CardAPI.chargeRememberedCard(chargeParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n resumeCardCharge({ accessCode, pin }) {\n const params = {\n ...(pin && { pin: encrypt(pin) }),\n accessCode,\n device: this.deviceFingerprint,\n };\n\n return CardAPI.resumeCardCharge(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n forgetRememberedCard(authorizationId) {\n const params = {\n authorizationId,\n publicKey: this.merchant.key,\n };\n return CardAPI.forgetRememberedCard(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n authenticateCard(token) {\n return CardAPI.authenticate(this.id, token).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n verifyAddress({ address, city, state, zipCode }) {\n const payload = {\n city,\n state,\n address,\n zipCode,\n transactionId: this.id,\n };\n return CardAPI.verifyAddress(payload).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n listenFor3DSCharge(callback) {\n const listenerOptions = {\n channel: `3DS_${this.id}`,\n paymentMethod,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n\n async sendSavedCardsOTP({ phone, channels, email } = {}) {\n try {\n this.logAuth(savedCardMethods.authentication);\n const response = await CardAPI.sendSavedCardsOTP({\n phone,\n transaction: this.id,\n channels,\n email,\n });\n\n this.savedCardsTempAuthToken = response.data.token;\n return response;\n } catch (error) {\n this.savedCardsTempAuthToken = null;\n throw error;\n }\n },\n\n async verifySavedCardsOtp({ code }) {\n const payload = {\n code,\n transaction: this.id,\n token: this.savedCardsTempAuthToken,\n };\n\n try {\n const response = await CardAPI.verifySavedCardsOtp(payload);\n this.savedCardsToken = response.data.token;\n return response;\n } catch (error) {\n this.savedCardsToken = null;\n throw error;\n }\n },\n\n getSavedCards() {\n return CardAPI.getSavedCards({ token: this.savedCardsToken });\n },\n\n deleteSavedCard(cardCode) {\n return CardAPI.deleteSavedCard({ cardCode, token: this.savedCardsToken });\n },\n\n chargeSavedCard({ cardCode, selectedCurrency = this.currency }) {\n this.logAttempt(savedCardMethods.payment);\n\n return CardAPI.chargeSavedCard({\n cardCode,\n transaction: this.id,\n token: this.savedCardsToken,\n device: this.deviceFingerprint,\n selectedCurrency,\n });\n },\n};\n","import axiosInstance from '../../utilities/axios-instance';\nimport config from '../../config';\nimport getLanguage from '../../utilities/get-language';\n\nclass BankAccount {\n constructor({ bankId, accountType, accountNumber }) {\n this.bankId = bankId;\n this.accountType = accountType;\n this.accountNumber = accountNumber;\n }\n\n static validate({ bankId, accountType, accountNumber }) {\n const errors = [];\n\n if (!bankId || typeof bankId !== 'number') {\n errors.push(\n 'Invalid bankId. Please check for supported banks with BankAccount.supportedBanks()',\n );\n }\n\n if (BankAccount.types.indexOf(accountType) > -1) {\n if (\n accountType === 'nuban' &&\n !BankAccount.isValidNubanAccount(accountNumber)\n ) {\n errors.push(\n 'Invalid account number. Nuban accounts must be 10 digit numbers',\n );\n }\n } else {\n errors.push(\n 'Invalid bank type. Please check BankAccount.types for the list of valid bank types',\n );\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n }\n\n static isValidNubanAccount(accountNumber) {\n if (!accountNumber) {\n return false;\n }\n const isNumber =\n typeof accountNumber === 'number' || /^\\d+$/.test(accountNumber);\n return isNumber && accountNumber.length === 10;\n }\n\n static supportedBanks() {\n const url = `${config.paymentBaseUrl}bank?pay_with_bank=true`;\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(url, { headers })\n .then((response) => response.data);\n }\n\n static async resolve({ transaction, bankCode, accountNumber }) {\n const url = new URL(\n `saved_cards/transaction/${transaction}/bank-resolve`,\n config.paystackApiUrl,\n );\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const payload = { bank_code: bankCode, account_number: accountNumber };\n\n const response = await axiosInstance.post(url, payload, { headers });\n\n return response.data;\n }\n}\n\nBankAccount.types = ['nuban'];\nexport default BankAccount;\n","import formurlencoded from 'form-urlencoded';\n\nimport axiosInstance from '../../../utilities/axios-instance';\nimport config from '../../../config';\nimport ChargeResponses from '../../../utilities/charge-responses';\nimport getLanguage from '../../../utilities/get-language';\n\nconst EMandateAPI = {\n verify({ bankId, transactionId, accountNumber, device }) {\n const url = `${config.paymentBaseUrl}bank/charge_account/${bankId}/${transactionId}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = {\n account_number: accountNumber,\n device,\n };\n const urlEncodedParams = formurlencoded(params);\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n register({ bankId, transactionId, accountNumber, birthday }) {\n const url = `${config.paymentBaseUrl}bank/charge_account/${bankId}/${transactionId}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = {\n account_number: accountNumber,\n birthday,\n };\n const urlEncodedParams = formurlencoded(params);\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n authenticate({ bankId, transactionId, token, device }) {\n const url = `${config.paymentBaseUrl}bank/validate_token/${bankId}/${transactionId}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = {\n device,\n token,\n };\n const urlEncodedParams = formurlencoded(params);\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default EMandateAPI;\n","import BankAccount from '../bank-account';\n\nimport EMandateAPI from './emandate.api';\n\nconst paymentMethod = 'bank account';\n\nfunction validate(bankAccount, isSetter) {\n return new Promise((resolve, reject) => {\n const validation = BankAccount.validate(bankAccount);\n if (!validation.isValid) {\n const throwValidation = isSetter || bankAccount.accountNumber;\n const errorMessage = throwValidation\n ? validation.errors[0]\n : 'Please set a valid bank account with Transaction.setBank()';\n reject(Error(errorMessage));\n }\n resolve();\n });\n}\n\nconst EMandate = {\n setBankAccount(params) {\n return validate(params, true).then(() => {\n this.bankAccount = new BankAccount(params);\n });\n },\n\n chargeBankAccount() {\n return validate(this.bankAccount).then(() => {\n this.logAttempt(paymentMethod);\n const verifyParams = {\n bankId: this.bankAccount.bankId,\n transactionId: this.id,\n accountNumber: this.bankAccount.accountNumber,\n device: this.deviceFingerprint,\n };\n return EMandateAPI.verify(verifyParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n });\n },\n\n registerBankAccount(birthday) {\n return validate(this.bankAccount).then(() => {\n const registerParams = {\n bankId: this.bankAccount.bankId,\n transactionId: this.id,\n accountNumber: this.bankAccount.accountNumber,\n birthday,\n };\n return EMandateAPI.register(registerParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n });\n },\n\n authenticateBankAccount(token) {\n return validate(this.bankAccount).then(() => {\n const chargeParams = {\n bankId: this.bankAccount.bankId,\n transactionId: this.id,\n token,\n device: this.deviceFingerprint,\n };\n return EMandateAPI.authenticate(chargeParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n });\n },\n};\n\nexport default EMandate;\n","import config from '../../../config';\nimport ChargeResponses from '../../../utilities/charge-responses';\n\nconst IBank = {\n getIbankUrl({ bankId }) {\n return new Promise((resolve, reject) => {\n if (!bankId) {\n reject(Error('Please send bankId'));\n }\n const url = `${config.paymentBaseUrl}bank/ibank/${bankId}/${this.id}`;\n resolve(ChargeResponses.success({ url }));\n });\n },\n\n listenForIbankCharge(callback) {\n const listenerOptions = {\n channel: `IBANK_${this.id}`,\n paymentMethod: 'ibank',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n\nexport default IBank;\n","import formurlencoded from 'form-urlencoded';\n\nimport axiosInstance from '../../../utilities/axios-instance';\nimport config from '../../../config';\nimport ChargeResponses from '../../../utilities/charge-responses';\nimport getLanguage from '../../../utilities/get-language';\n\nconst DigitalBankMandateAPI = {\n charge({ bankId, transactionId, phoneNumber, payId, walletId }) {\n const url = `${config.paymentBaseUrl}bank/digitalbankmandate/${bankId}/${transactionId}`;\n const language = getLanguage();\n const headers = {\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = walletId\n ? { wallet_id: walletId }\n : {\n phone_number: phoneNumber,\n token: payId,\n };\n\n const urlEncodedParams = formurlencoded(params);\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default DigitalBankMandateAPI;\n","import DigitalBankMandateAPI from './digital-bank-mandate.api';\n\nconst paymentMethod = 'bank';\n\nconst DigitalBankMandate = {\n chargeDigitalBankMandate({ phoneNumber, payId, bankId, walletId }) {\n const params = {\n transactionId: this.id,\n phoneNumber,\n payId,\n bankId,\n walletId,\n };\n\n return DigitalBankMandateAPI.charge(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n listenForDigitalBankMandateCharge(callback, pusherChannel = '') {\n const listenerOptions = {\n paymentMethod,\n channel: pusherChannel,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n\nexport default DigitalBankMandate;\n","import EmandateCharge from './emandate/emandate';\nimport IBankCharge from './ibank/ibank';\nimport DigitalBankMandateCharge from './digital-bank-mandate/digital-bank-mandate';\n\nconst BankAccountCharge = {\n ...EmandateCharge,\n ...IBankCharge,\n ...DigitalBankMandateCharge,\n};\n\nexport default BankAccountCharge;\n","import config from '../../config';\nimport axiosInstance from '../../utilities/axios-instance';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst UssdAPI = {\n generateShortcode(params, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(`${config.paystackApiUrl}checkout/ussd/reference`, params, {\n headers,\n })\n .then((response) => ChargeResponses.parse(response.data));\n },\n generatePWTUSSDShortcode(params, publicKey) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(`${config.paystackApiUrl}checkout/pay_with_transfer_ussd`, params, {\n headers,\n })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default UssdAPI;\n","import UssdAPI from './ussd.api';\n\nexport default {\n getUSSDShortcode({ channel }) {\n const params = {\n transaction: this.id,\n channel,\n };\n\n return UssdAPI.generateShortcode(params, this.merchant.key).then(\n (response) => {\n if (response.status === 'success') {\n this.ussd[channel] = response;\n }\n return response;\n },\n );\n },\n getPWTUSSDShortcode({ bankSlug, fulfilLateNotification = false }) {\n const params = {\n transaction_id: this.id,\n fulfil_late_notification: fulfilLateNotification,\n bank_slug: bankSlug,\n };\n\n return UssdAPI.generatePWTUSSDShortcode(params, this.merchant.key).then(\n (response) => {\n if (response.status === 'success') {\n this.ussd[bankSlug] = response;\n }\n return response;\n },\n );\n },\n listenForPWTUSSDCharge({ bankSlug }, callback) {\n if (!this.ussd[bankSlug]) {\n return Promise.reject(\n Error(\n 'Please generate a ussd shortcode with Transaction.getPWTUSSDShortcode()',\n ),\n );\n }\n\n const { data } = this.ussd[bankSlug];\n const listenerOptions = {\n channel: data.pusher_channel,\n paymentMethod: 'ussd',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n listenForUSSDCharge({ channel }, callback) {\n if (!this.ussd[channel]) {\n return Promise.reject(\n Error(\n 'Please generate a ussd shortcode with Transaction.getUSSDShortcode()',\n ),\n );\n }\n\n const { data } = this.ussd[channel];\n const listenerOptions = {\n channel: data.channel,\n paymentMethod: channel,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n","import axiosInstance from '../../utilities/axios-instance';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport config from '../../config';\nimport getLanguage from '../../utilities/get-language';\n\nconst QrAPI = {\n generateQrCode({ transaction, channel }, publicKey) {\n const params = {\n source: 'checkout',\n reference: transaction,\n channel,\n };\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(`${config.paystackApiUrl}offline/qr/generate`, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default QrAPI;\n","import QrAPI from './qr.api';\n\nfunction validate(channel) {\n return new Promise((resolve, reject) => {\n const allowedChannels = ['visa', 'MPASS_OLTI'];\n if (allowedChannels.indexOf(channel) <= -1) {\n const errorMessage = `Invalid channel. Available channels: ${allowedChannels.join(\n ', ',\n )}`;\n reject(Error(errorMessage));\n } else {\n resolve();\n }\n });\n}\n\nexport default {\n getQRCode({ channel }) {\n return validate(channel).then(() => {\n if (this.qr[channel]) {\n return this.qr[channel];\n }\n\n const params = {\n transaction: this.id,\n channel,\n };\n\n return QrAPI.generateQrCode(params, this.merchant.key).then(\n (response) => {\n if (response.status === 'success') {\n this.qr[channel] = response;\n }\n return response;\n },\n );\n });\n },\n\n listenForQRCharge({ channel }, callback) {\n return validate(channel).then(() => {\n if (!this.qr[channel]) {\n return Promise.reject(\n Error('Please generate qr code with Transaction.getQRCode()'),\n );\n }\n const { data } = this.qr[channel];\n const listenrOptions = {\n channel: data.channel,\n paymentMethod: channel,\n };\n\n return this.listenForCharge(listenrOptions, callback);\n });\n },\n};\n","class PhoneNumber {\n static hasCountryCode(number) {\n return number && number[0] === '+';\n }\n\n static hasOnlyDigits(number) {\n const isNumber = (x) => /^\\d+$/.test(x);\n return number && isNumber(number.substring(1));\n }\n\n static isE164Number(number) {\n return number && number.length < 17;\n }\n\n static validate(number) {\n const errors = [];\n\n if (!PhoneNumber.hasCountryCode(number)) {\n errors.push('Number should include country code prefix');\n }\n\n if (!PhoneNumber.hasOnlyDigits(number)) {\n errors.push('Number should contain only digits');\n }\n\n if (!PhoneNumber.isE164Number(number)) {\n errors.push('Number should not be longer than 16 digits');\n }\n\n return {\n isValid: errors.length === 0,\n errors,\n };\n }\n}\n\nexport default PhoneNumber;\n","import formUrlencoded from 'form-urlencoded';\n\nimport axiosInstance from '../../utilities/axios-instance';\nimport config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst MobileMoneyAPI = {\n charge({\n transaction,\n phone,\n account,\n device,\n channel_name: channelName,\n provider,\n voucher,\n registrationToken,\n }) {\n const params = {\n transaction,\n phone,\n account,\n device,\n channel_name: channelName,\n provider,\n voucher,\n registration_token: registrationToken,\n };\n\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(`${config.paystackApiUrl}charge/mobile_money`, params, { headers })\n .then((response) => ChargeResponses.parse(response.data))\n .catch(({ response }) => ChargeResponses.parse(response.data));\n },\n\n submitCode({ transaction, code }) {\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n const urlEncodedData = formUrlencoded({\n transaction,\n otp: code,\n });\n\n const url = new URL(\n 'charge/momo_payin_finalize',\n config.paymentBaseUrl,\n ).toString();\n\n return axiosInstance\n .post(url, urlEncodedData, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default MobileMoneyAPI;\n","import PhoneNumber from '../phone-number/phone-number';\n\nimport MobileMoneyAPI from './mobile-money.api';\n\nfunction validate(phoneNumber) {\n return new Promise((resolve, reject) => {\n const validation = PhoneNumber.validate(phoneNumber);\n if (!validation.isValid) {\n const errorMessage = phoneNumber\n ? validation.errors[0]\n : 'Please start a mobile money transaction with Transaction.chargeMobileMoney()';\n reject(Error(errorMessage));\n }\n resolve(validation);\n });\n}\n\nexport default {\n mobileMoneyChargeAPI(params) {\n return MobileMoneyAPI.charge(params).then((response) => {\n if (response.status === 'success') {\n this.mobileMoney = response;\n if (\n response.data &&\n response.data.display &&\n response.data.display.otpSentCount === 1\n ) {\n this.logTokenRequest('mobile money');\n }\n }\n return response;\n });\n },\n\n chargeMobileMoney({ phoneNumber, provider, voucher, registrationToken }) {\n return validate(phoneNumber).then(() => {\n this.logAttempt('mobile money');\n const params = {\n provider,\n voucher,\n registrationToken,\n transaction: this.id,\n phone: phoneNumber,\n device: this.deviceFingerprint,\n channel_name: `MOBILE_MONEY_${this.id}`,\n };\n\n return this.mobileMoneyChargeAPI(params);\n });\n },\n\n chargeMobileMoneyBusiness({\n accountNumber,\n provider,\n voucher,\n registrationToken,\n }) {\n this.logAttempt('mobile money');\n const params = {\n provider,\n voucher,\n registrationToken,\n transaction: this.id,\n account: accountNumber,\n device: this.deviceFingerprint,\n channel_name: `MOBILE_MONEY_${this.id}`,\n };\n\n return this.mobileMoneyChargeAPI(params);\n },\n\n chargeMpesaOffline({ provider, voucher, registrationToken }) {\n this.logAttempt('mobile money');\n const params = {\n provider,\n voucher,\n registrationToken,\n transaction: this.id,\n device: this.deviceFingerprint,\n channel_name: `MOBILE_MONEY_${this.id}`,\n };\n\n return this.mobileMoneyChargeAPI(params);\n },\n\n chargeWaveMobile({ provider }) {\n this.logAttempt('mobile money');\n const params = {\n provider,\n transaction: this.id,\n device: this.deviceFingerprint,\n channel_name: `MOBILE_MONEY_${this.id}`,\n };\n\n return this.mobileMoneyChargeAPI(params);\n },\n\n authenticateMobileMoney(payload) {\n const { phoneNumber, provider, registrationToken } = payload;\n return validate(phoneNumber).then(() => {\n this.logMobileMoneyActions(payload);\n\n const params = {\n provider,\n registrationToken,\n transaction: this.id,\n phone: phoneNumber,\n device: this.deviceFingerprint,\n channel_name: `MOBILE_MONEY_${this.id}`,\n };\n\n return MobileMoneyAPI.charge(params).then((response) => {\n if (response.status === 'success') {\n this.mobileMoney = response;\n if (\n response.data &&\n response.data.display &&\n response.data.display.otpSentCount === 1\n ) {\n this.logTokenRequest('mobile money');\n }\n } else if (\n response.errors &&\n response.errors.data &&\n response.errors.data.status === 'awaiting_registration_token'\n ) {\n this.logTokenAuthenticationFailure(response.message);\n } else {\n this.logError(response.message);\n }\n\n return response;\n });\n });\n },\n\n submitMobileMoneyCode(payload) {\n return MobileMoneyAPI.submitCode({\n code: payload.code,\n transaction: this.id,\n }).then((response) => {\n this.logAPIResponse(response, 'mobile_money');\n return response;\n });\n },\n\n listenForMobileMoneyCharge(callback) {\n if (this.mobileMoney.status !== 'success') {\n return Promise.reject(\n Error(\n 'Please start a mobile money charge with Transaction.chargeMobileMoney()',\n ),\n );\n }\n const { channel, channel_name: channelName } = this.mobileMoney.data;\n const listenerOptions = {\n channel: channel || channelName,\n paymentMethod: 'mobile_money',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n","import axiosInstance from '../../utilities/axios-instance';\nimport config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst DirectDebitAPI = {\n loginToDirectDebitAccount({ email, password }) {\n const params = { email, password };\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(`${config.paystackApiUrl}login`, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n charge({ account_code: accountCode, transaction, token }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n const params = { account_code: accountCode, transaction };\n return axiosInstance\n .post(`${config.paystackApiUrl}directdebit/initiate`, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n authenticate({ otp, transaction, token }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n const params = { otp, transaction };\n return axiosInstance\n .post(`${config.paystackApiUrl}directdebit/validate`, params, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n\n getProvisionedAccounts(token) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .get(`${config.paystackApiUrl}directdebit/account`, { headers })\n .then((response) => response.data);\n },\n};\n\nexport default DirectDebitAPI;\n","import { isValidEmail } from '../../utilities/validation-helpers';\n\nimport DirectDebitAPI from './direct-debit.api';\n\nconst paymentMethod = 'direct debit';\n\nexport default {\n loginToDirectDebitAccount({ email, password }) {\n const params = { email, password };\n\n if (!isValidEmail(email)) {\n return Promise.reject(Error('Invalid email'));\n }\n\n return DirectDebitAPI.loginToDirectDebitAccount(params).then((response) => {\n if (response.status === 'success') {\n const {\n data: {\n token,\n user: { permissions },\n },\n } = response;\n if (!permissions || permissions.length < 1) {\n throw Error('You do not have the privileges to perform this action');\n }\n if (permissions.find((permission) => permission === 'directdebit-*')) {\n this.directDebit.token = token;\n return response;\n }\n throw Error('You do not have the privileges to perform this action');\n }\n return response;\n });\n },\n\n chargeDirectDebit(accountCode) {\n if (!this.directDebit.token) {\n return Promise.reject(\n Error(\n 'Please login with Transaction.loginToDirectDebitAccount() to start a Direct debit charge',\n ),\n );\n }\n this.logAttempt(paymentMethod);\n const params = {\n account_code: accountCode,\n transaction: this.id,\n token: this.directDebit.token,\n };\n\n return DirectDebitAPI.charge(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n if (response.status) {\n this.directDebit.chargeResponse = response;\n }\n return response;\n });\n },\n\n getProvisionedAccounts() {\n return DirectDebitAPI.getProvisionedAccounts(this.directDebit.token).then(\n (response) => {\n this.logAPIResponse(response, paymentMethod);\n const { status, data } = response;\n if (status) {\n if (data && data.length < 1) {\n return Promise.reject(\n Error(\n 'You have not provisioned any bank account for Direct Debit yet',\n ),\n );\n }\n this.directDebit.accounts = response.data;\n }\n return response;\n },\n );\n },\n\n authenticateAccount(otp) {\n const params = {\n otp,\n transaction: this.id,\n token: this.directDebit.token,\n };\n\n return DirectDebitAPI.authenticate(params).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","export const CAPITEC_PAY_CHANNEL = 'capitec_pay';\n\nexport const IDENTIFIER_KEY = {\n CELLPHONE_NUMBER: 'CELLPHONE',\n ID_NUMBER: 'IDNUMBER',\n ACCOUNT_NUMBER: 'ACCOUNTNUMBER',\n};\n","import encrypt from '../../utilities/encryption/node';\n\nimport { IDENTIFIER_KEY } from './constants';\n\nconst CapitecPay = {\n combineIdentifierKeyAndIdentifierValue({ identifierKey, identifierValue }) {\n return `${identifierKey}*${identifierValue}`;\n },\n\n encryptIdentifierKeyAndIdentifierValue({ identifierKey, identifierValue }) {\n return encrypt(\n CapitecPay.combineIdentifierKeyAndIdentifierValue({\n identifierKey,\n identifierValue,\n }),\n );\n },\n\n validateAccountNumber(value) {\n const numericTenDigitsAllowLeadingZerosRegex = /^\\d{10}$/;\n return numericTenDigitsAllowLeadingZerosRegex.test(value);\n },\n\n validateIDNumber(value) {\n const numericThirteenDigitsAllowLeadingZerosRegex = /^\\d{13}$/;\n return numericThirteenDigitsAllowLeadingZerosRegex.test(value);\n },\n\n validateCellphoneNumber(value) {\n const numericTenDigitWithSingleLeadingZeroRegex = /^0\\d{9}$/;\n return numericTenDigitWithSingleLeadingZeroRegex.test(value);\n },\n\n validateIdentifierKeyAndIdentifierValue({ identifierKey, identifierValue }) {\n switch (identifierKey) {\n case IDENTIFIER_KEY.CELLPHONE_NUMBER:\n return CapitecPay.validateCellphoneNumber(identifierValue);\n case IDENTIFIER_KEY.ID_NUMBER:\n return CapitecPay.validateIDNumber(identifierValue);\n case IDENTIFIER_KEY.ACCOUNT_NUMBER:\n return CapitecPay.validateAccountNumber(identifierValue);\n default:\n return false;\n }\n },\n};\n\nexport default CapitecPay;\n","import formurlencoded from 'form-urlencoded';\n\nimport config from '../../config';\nimport axiosInstance from '../../utilities/axios-instance';\nimport getLanguage from '../../utilities/get-language';\nimport chargeResponses from '../../utilities/charge-responses';\n\nconst CapitecPayAPI = {\n authenticate: ({\n clientData,\n transactionId,\n deviceFingerprint,\n publicKey,\n }) => {\n const url = new URL(\n 'capitec-pay/authenticate',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n ...(language && { 'Accept-Language': language }),\n };\n\n const authenticateParams = {\n clientdata: clientData,\n trans: transactionId,\n device: deviceFingerprint,\n };\n\n const urlEncodedParams = formurlencoded(authenticateParams);\n\n return axiosInstance\n .post(url, urlEncodedParams, { headers })\n .then((response) => response.data);\n },\n\n requery: ({ transactionId, publicKey }) => {\n const url = new URL(\n 'capitec-pay/requery',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const params = {\n transaction_id: transactionId,\n };\n\n return axiosInstance\n .get(url, { headers, params })\n .then((response) => chargeResponses.parse(response));\n },\n};\n\nexport default CapitecPayAPI;\n","import CapitecPay from './capitec-pay';\nimport CapitecPayAPI from './capitec-pay.api';\n\nconst CAPITEC_PAY_PAYMENT_METHOD = 'capitec_pay';\n\nconst CapitecPayCharge = {\n validateIdentifier({ identifierKey, identifierValue = '' }) {\n const trimmedIdentifierValue = identifierValue.trim();\n return CapitecPay.validateIdentifierKeyAndIdentifierValue({\n identifierKey,\n identifierValue: trimmedIdentifierValue,\n });\n },\n\n authenticateCapitecPay({ identifierKey, identifierValue = '' }) {\n const trimmedIdentifierValue = identifierValue.trim();\n if (\n !CapitecPay.validateIdentifierKeyAndIdentifierValue({\n identifierKey,\n identifierValue: trimmedIdentifierValue,\n })\n ) {\n return Promise.reject(new Error('Invalid identifier key and value'));\n }\n\n const clientData = CapitecPay.encryptIdentifierKeyAndIdentifierValue({\n identifierKey,\n identifierValue: trimmedIdentifierValue,\n });\n\n return CapitecPayAPI.authenticate({\n clientData,\n deviceFingerprint: this.deviceFingerprint,\n transactionId: this.id,\n publicKey: this.merchant.key,\n });\n },\n\n requeryCapitecPay() {\n return CapitecPayAPI.requery({\n transactionId: this.id,\n publicKey: this.merchant.key,\n }).then((response) => {\n this.logAPIResponse(response, CAPITEC_PAY_PAYMENT_METHOD);\n return response;\n });\n },\n\n listenForCapitecPayCharge(callback, pusherChannel = '') {\n const listenerOptions = {\n paymentMethod: CAPITEC_PAY_PAYMENT_METHOD,\n channel: pusherChannel,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n\nexport default CapitecPayCharge;\n","import PayWithTransferCharge from './pay-with-transfer/pay-with-transfer.charge';\nimport PayattitudeCharge from './payattitude/payattittude.charge';\nimport EFTCharge from './eft/eft.charge';\nimport ApplePayCharge from './apple-pay/apple-pay.charge';\nimport PayPalCharge from './paypal/paypal.charge';\nimport CardCharge from './card/card.charge';\nimport BankAccountCharge from './bank/bank-account.charge';\nimport USSDCharge from './ussd/ussd.charge';\nimport QRCharge from './qr/qr.charge';\nimport MobileMoneyCharge from './mobile-money/mobile-money.charge';\nimport DirectDebitCharge from './direct-debit/direct-debit.charge';\nimport CapitecPayCharge from './capitec-pay/capitec-pay.charge';\n\nexport default {\n get(channel) {\n const chargeFunctions = {\n card: CardCharge,\n bank: BankAccountCharge,\n ussd: USSDCharge,\n qr: QRCharge,\n mobile_money: MobileMoneyCharge,\n direct_debit: DirectDebitCharge,\n bank_transfer: PayWithTransferCharge,\n eft: EFTCharge,\n payattitude: PayattitudeCharge,\n apple_pay: ApplePayCharge,\n paypal: PayPalCharge,\n capitec_pay: CapitecPayCharge,\n };\n\n return chargeFunctions[channel];\n },\n};\n","module.exports = isMobile;\n\nfunction isMobile (ua) {\n if (!ua && typeof navigator != 'undefined') ua = navigator.userAgent;\n if (ua && ua.headers && typeof ua.headers['user-agent'] == 'string') {\n ua = ua.headers['user-agent'];\n }\n if (typeof ua != 'string') return false;\n\n return /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(ua.substr(0,4));\n}\n\n","import isMobile from 'is-mobile';\n\nconst AnalyticsUtils = {\n initializeLog(log) {\n const { attempts, authentication, errors, history } = log || {};\n return {\n start_time: Math.round(Date.now() / 1000),\n time_spent: 0,\n attempts: attempts || 0,\n authentication,\n errors: errors || 0,\n success: false,\n mobile: isMobile(),\n input: [],\n history: history || [],\n };\n },\n\n getTimeSpent(startTime) {\n const currentTimeInSeconds = Math.round(Date.now() / 1000);\n return currentTimeInSeconds - startTime;\n },\n};\n\nexport default AnalyticsUtils;\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar Array = global.Array;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];\n var result = apply($stringify, null, args);\n return typeof result == 'string' ? replace(result, tester, fix) : result;\n }\n });\n}\n","import getLanguage from '../get-language';\nimport axiosInstance from '../axios-instance';\n\nconst AnalyticsAPIUtils = {\n saveLog(url, { merchantKey, log }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${merchantKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(url, { payload: JSON.stringify(log) }, { headers })\n .then((response) => response.data);\n },\n\n getIp() {\n const url = 'https://api.paystack.co/decision/ip';\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data.data.ip_address);\n },\n\n saveIp(url, { merchantKey }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${merchantKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(url, null, { headers })\n .then((response) => response.data);\n },\n\n saveReferrer(url, { merchantKey, referrer }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${merchantKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .post(url, { referrer }, { headers })\n .then((response) => response.data);\n },\n};\n\nexport default AnalyticsAPIUtils;\n","import config from '../config';\nimport { AnalyticsAPIUtils } from '../utilities/analytics';\n\nconst AnalyticsAPI = {\n saveLog(transactionId, merchantKey, log) {\n const url = new URL(\n `transaction/update_log/${transactionId}`,\n config.paystackApiUrl,\n ).toString();\n return AnalyticsAPIUtils.saveLog(url, { merchantKey, log });\n },\n\n getIp() {\n return AnalyticsAPIUtils.getIp();\n },\n\n saveIp(transactionId, merchantKey) {\n const url = new URL(\n `transaction/set_ip/${transactionId}`,\n config.paystackApiUrl,\n ).toString();\n return AnalyticsAPIUtils.saveIp(url, { merchantKey });\n },\n\n saveReferrer(transactionId, merchantKey, referrer) {\n const url = new URL(\n `transaction/set_referrer/${transactionId}`,\n config.paystackApiUrl,\n ).toString();\n return AnalyticsAPIUtils.saveReferrer(url, { merchantKey, referrer });\n },\n};\n\nexport default AnalyticsAPI;\n","import { AnalyticsUtils } from '../utilities/analytics';\n\nimport AnalyticsAPI from './transaction.analytics.api';\nimport CapitecPayAnalytics from './capitec-pay/capitec-pay.analytics';\n\nexport default {\n ...CapitecPayAnalytics,\n initializeLog(log) {\n this.log = AnalyticsUtils.initializeLog(log);\n },\n\n getTimeSpent() {\n this.log.time_spent = AnalyticsUtils.getTimeSpent(this.log.start_time);\n return this.log.time_spent;\n },\n\n logHistoryEntry(historyEntry) {\n this.log.history.push(historyEntry);\n return this.saveLog();\n },\n\n logPageOpen() {\n this.log.history.push({\n type: 'open',\n message: 'Opened checkout',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logChannelSwitch(value) {\n this.log.history.push({\n type: 'action',\n message: `Set payment method to: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logValidationErrors(inputs) {\n inputs.forEach((input) => {\n this.log.history.push({\n type: 'error',\n message: `Invalid ${input}`,\n time: this.getTimeSpent(),\n });\n });\n return this.saveLog();\n },\n\n logInput(value) {\n const isUpdate = this.log.history.find(\n (item) => item.message === `Filled this field: ${value}`,\n );\n this.log.history.push({\n type: 'input',\n message: `${isUpdate ? 'Changed' : 'Filled'} this field: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logBankSelect(value) {\n this.log.history.push({\n type: 'action',\n message: `Selected bank: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logSavedCardSelect() {\n this.log.history.push({\n type: 'action',\n message: 'Selected saved card',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuthWindowOpen() {\n this.log.history.push({\n type: 'action',\n message: 'Third-party authentication window opened',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuthWindowClose() {\n this.log.history.push({\n type: 'action',\n message: 'Third-party authentication window closed',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAPIResponse(response, channel) {\n switch (response.status) {\n case 'success':\n return this.logSuccess(channel);\n case 'pending':\n return this.logPending(channel);\n case 'failed':\n return this.logError(response.message);\n case 'auth':\n return this.logAuth(response.data.auth);\n default:\n return false;\n }\n },\n\n logMobileMoneyActions({ numberOfTokenRequests, registrationToken }) {\n if (numberOfTokenRequests) {\n this.logTokenRequest('mobile money', numberOfTokenRequests);\n } else if (registrationToken) {\n this.logTokenSubmitted('mobile money');\n } else {\n this.logAttempt('mobile money');\n }\n },\n\n logAPIResponseMessage(message) {\n this.log.history.push({\n type: 'action',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAttempt(channel) {\n let message = 'Attempted to pay';\n if (channel) {\n message += ` with ${channel}`;\n }\n this.log.attempts += 1;\n this.log.history.push({\n type: 'action',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logTokenRequest(channel, numberOfTokenRequests = 0) {\n const message =\n numberOfTokenRequests === 0\n ? 'Waiting for customer to submit OTP'\n : 'Customer requested to resend OTP';\n this.log.history.push({\n type: 'action',\n message,\n channel,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logTokenSubmitted(channel) {\n const message = 'Customer submitted OTP';\n this.log.history.push({\n type: 'action',\n message,\n channel,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logTokenAuthenticationFailure(error) {\n const message = error ? `Error: ${error}` : 'Error';\n this.log.errors += 1;\n this.log.history.push({\n type: 'error',\n message,\n authentication: 'failed',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logError(error) {\n let message = 'Error';\n if (error) {\n message += `: ${error}`;\n }\n this.log.errors += 1;\n this.log.history.push({\n type: 'error',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuth(value) {\n this.log.authentication = value;\n this.log.history.push({\n type: 'auth',\n message: `Authentication Required: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logSuccess(channel) {\n let message = 'Successfully paid';\n if (channel) {\n message += ` with ${channel}`;\n }\n this.log.success = true;\n this.log.history.push({\n type: 'success',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logPending(channel) {\n let message = 'Payment in progress';\n if (channel) {\n message += ` with ${channel}`;\n }\n this.log.history.push({\n type: 'pending',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logPageClose() {\n this.log.history.push({\n type: 'close',\n message: 'Closed checkout',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logTransactionCurrencySwitch({ currency, isUserAction = true }) {\n const prefix = isUserAction ? 'User switched' : 'Switched';\n\n this.log.history.push({\n type: 'action',\n message: `${prefix} transaction currency to ${currency}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n saveLog() {\n return AnalyticsAPI.saveLog(this.id, this.merchant.key, this.log);\n },\n\n saveIpAddress() {\n return AnalyticsAPI.saveIp(this.id, this.merchant.key);\n },\n\n saveReferrer(referrer) {\n return AnalyticsAPI.saveReferrer(this.id, this.merchant.key, referrer);\n },\n\n setAmountByChannel(channelName) {\n this.amount =\n this.channelFeesConfig[channelName]?.amount || this.originalAmount;\n },\n};\n","import { CAPITEC_PAY_CHANNEL } from './constants';\n\nconst CapitecPayAnalytics = {\n logCapitecPayConfirmation(identifierKey) {\n return this.logHistoryEntry({\n type: 'action',\n message: `Customer submitted account details with identifier: ${identifierKey}`,\n channel: CAPITEC_PAY_CHANNEL,\n time: this.getTimeSpent(),\n });\n },\n\n logCapitecPayAccountIdentifierSwitch(identifierKey) {\n return this.logHistoryEntry({\n type: 'action',\n message: `Switched account identifier to: ${identifierKey}`,\n channel: CAPITEC_PAY_CHANNEL,\n time: this.getTimeSpent(),\n });\n },\n\n logCapitecPayConfirmedPaymentApproval() {\n return this.logHistoryEntry({\n type: 'action',\n message: 'Selected confirm payment approval',\n channel: CAPITEC_PAY_CHANNEL,\n time: this.getTimeSpent(),\n });\n },\n\n logCapitecPayRetryConfirmation() {\n return this.logHistoryEntry({\n type: 'action',\n message: 'Selected retry payment confirmation',\n channel: CAPITEC_PAY_CHANNEL,\n time: this.getTimeSpent(),\n });\n },\n};\n\nexport default CapitecPayAnalytics;\n","import config from '../../config';\nimport axiosInstance from '../../utilities/axios-instance';\nimport chargeResponses from '../../utilities/charge-responses';\nimport getLanguage from '../../utilities/get-language';\n\nconst linkAPI = {\n async sendLinkOtp({ transaction, phone, channels, email }) {\n const url = new URL(\n '/saved_cards/authorize',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const data = {\n ...(phone && { phone }),\n ...(channels && { channels }),\n ...(email && { email }),\n transaction,\n is_six_digit_otp: true, // the endpoint sends both 4 and 6 digit OTPs. We want 6digits for Link for better security.\n };\n\n const response = await axiosInstance.post(url, data, { headers });\n return response.data;\n },\n\n async verifyLinkOtp({ code, transaction, token }) {\n const url = new URL(\n '/saved_cards/authorize/verify',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const data = { code, transaction };\n\n const response = await axiosInstance.post(url, data, { headers });\n return response.data;\n },\n\n async getLinkPaymentInstruments({ token }) {\n const url = new URL(\n '/saved_cards/link/payment-instruments',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n const response = await axiosInstance.get(url, { headers });\n return response.data;\n },\n\n async chargeLinkPaymentInstrument({\n token,\n device,\n instrumentCode,\n transaction,\n selectedCurrency,\n }) {\n const url = new URL(\n `/saved_cards/link/${instrumentCode}/charge`,\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${token}`,\n 'jwt-auth': true,\n ...(language && { 'Accept-Language': language }),\n };\n\n const payload = {\n device,\n transaction,\n selected_currency: selectedCurrency,\n };\n\n const response = await axiosInstance.post(url, payload, { headers });\n return chargeResponses.parse(response.data);\n },\n\n async generateDirectDebitManagedAccount(params) {\n const url = new URL(\n '/saved_cards/direct-debit/pay-with-transfer',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${params.token}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const payload = {\n device: params.device,\n transaction_id: params.transactionId,\n account_number: params.accountNumber,\n account_name: params.accountName,\n bank_code: params.bankCode,\n currency: params.currency,\n country_code: params.countryCode,\n fulfil_late_notification: params.fulfilLateNotification,\n };\n\n const response = await axiosInstance.post(url, payload, { headers });\n return chargeResponses.parse(response.data);\n },\n\n async verifyLinkProfile(params) {\n const url = new URL(\n '/saved_cards/user/profile/verify',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const payload = {\n transaction_id: params.transactionId,\n email: params.email,\n account_number: params.accountNumber,\n bank_code: params.bankCode,\n };\n\n const response = await axiosInstance.post(url, payload, { headers });\n return response.data;\n },\n\n async validateLinkCustomerBankAccount(params) {\n const url = new URL(\n '/saved_cards/customer-validation/validate',\n config.paystackApiUrl,\n ).toString();\n\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const payload = {\n bank_code: params.bankCode,\n account_number: params.accountNumber,\n email: params.email,\n ...(params.phoneNumber && { phone_number: params.phoneNumber }),\n transaction_id: params.transactionId,\n };\n\n const response = await axiosInstance.post(url, payload, { headers });\n return response.data;\n },\n};\n\nexport default linkAPI;\n","import PayWithTransferAPI from '../pay-with-transfer/pay-with-transfer.api';\n\nimport linkAPI from './link.api';\n\nconst linkAnalytics = {\n authentication: 'vault otp',\n paymentInstrument: {\n bank: 'linked account',\n card: 'saved card',\n },\n};\n\nexport default {\n sendLinkOtp({ phone, channels, email }) {\n this.logAuth(linkAnalytics.authentication);\n return linkAPI.sendLinkOtp({\n phone,\n transaction: this.id,\n channels,\n email,\n });\n },\n\n verifyLinkOtp({ code, token }) {\n return linkAPI.verifyLinkOtp({\n code,\n transaction: this.id,\n token,\n });\n },\n\n getLinkPaymentInstruments({ token }) {\n return linkAPI.getLinkPaymentInstruments({ token });\n },\n\n chargeLinkPaymentInstrument({\n instrumentCode,\n selectedCurrency = this.currency,\n token,\n instrumentType,\n }) {\n const paymentMethod =\n linkAnalytics.paymentInstrument[instrumentType] || 'vault';\n\n const chargeParams = {\n instrumentCode,\n transaction: this.id,\n token,\n device: this.deviceFingerprint,\n selectedCurrency,\n };\n\n this.logAttempt(paymentMethod);\n\n return linkAPI\n .chargeLinkPaymentInstrument(chargeParams)\n .then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n },\n\n generateLinkManagedAccount(params) {\n return this.getDirectDebitManagedAccount(params);\n },\n\n getDirectDebitManagedAccount(params) {\n return linkAPI.generateDirectDebitManagedAccount({\n ...params,\n device: this.deviceFingerprint,\n transactionId: this.id,\n });\n },\n\n getManagedAccount({ fulfilLateNotification, preferredProvider }) {\n const params = {\n transaction_id: this.id,\n fulfil_late_notification: fulfilLateNotification,\n preferred_provider: preferredProvider,\n };\n\n return PayWithTransferAPI.generateManagedAccount(params, this.merchant.key);\n },\n\n listenForLinkBankPayWithTransferCharge(pusherChannel, callback) {\n return this.listenForBankPayWithTransferCharge(pusherChannel, callback);\n },\n\n listenForBankPayWithTransferCharge(pusherChannel, callback) {\n const listenerOptions = {\n channel: pusherChannel,\n paymentMethod: 'bank_transfer',\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n\n verifyLinkProfile(params) {\n return linkAPI.verifyLinkProfile({ ...params, transactionId: this.id });\n },\n\n validateLinkCustomerBankAccount(params) {\n return linkAPI.validateLinkCustomerBankAccount({\n ...params,\n transactionId: this.id,\n });\n },\n};\n","/* eslint-env browser */\nimport { loadPusher, subscribeToChargeEvents } from '../utilities/pusher';\nimport logMessage from '../utilities/log-message';\n\nimport TransactionAPI from './transaction.api';\nimport ChargeFunctions from './transaction.charge';\nimport AnalyticsFunctions from './transaction.analytics';\nimport linkChargeFunctions from './link/link.charge';\n\nclass TransactionInstance {\n constructor(data) {\n this.email = data.email;\n this.merchant = {\n id: data.merchant_id,\n logo: data.merchant_logo,\n name: data.merchant_name,\n key: data.merchant_key,\n channelSettings: data.merchant_channel_settings || {},\n };\n this.status = data.transaction_status || data.status;\n this.accessCode = data.access_code;\n this.amount = data.amount;\n this.originalAmount = data.amount;\n this.domain = data.domain;\n this.isTest = data.domain === 'test';\n this.currency = data.currency;\n this.id = data.id;\n this.channels = data.channels;\n this.label = data.label;\n this.metadata = data.metadata || {};\n this.cancel_action = data.cancel_action || null;\n this.channelFeesConfig = data.channel_fees_and_amount || {};\n this.channel_options = data.channel_options || null;\n this.hash = data.hash || null;\n this.authorizations = data.authorizations;\n this.remember_card = false;\n this.rememberMeEnabled = data.is_remember_me_enabled;\n this.card = {};\n this.bankAccount = {};\n this.mobileMoney = {};\n this.ussd = {};\n this.bankTransfer = {};\n this.qr = {};\n this.directDebit = {};\n this.deviceFingerprint = data.deviceFingerprint || null;\n this.customer = data.customer;\n this.custom_filters = data.custom_filters || null;\n this.isCharging = false;\n this.isListening = false;\n this.transactionType = data.transaction_type || null;\n this.subscription = data.subscription || null;\n this.planDetails = data.plan_details || null;\n this.exchangeRate = data.exchange_rate || null;\n this.savedCardsConfig = data.saved_cards || {};\n this.supportedBanks = data.supported_banks || [];\n this.isWhiteLabeled = data.whitelabel || null;\n\n /**\n * savedCardsTempAuthToken: This token is issued on calling `authorize` and we pass it down to `authorize/verify` to ensure we only add users to saved cards only after a successful verification.\n * savedCardsToken: This token is issued after verification and is used for all saved card auth requests.\n */\n this.savedCardsTempAuthToken = null;\n this.savedCardsToken = null;\n this.reference = data.reference;\n\n this.linkConfig = data.link_config || {};\n\n /**\n * We initialize parameters we send to the API as empty strings\n * when we don't have them instead of null because the API expects\n * these parameters as URL params which means parameters are eventually converted to strings\n */\n\n // Load pusher\n loadPusher();\n\n // Analytics\n this.log = null;\n Object.assign(this, AnalyticsFunctions);\n this.initializeLog(data.log);\n this.saveIpAddress();\n\n // Bind charge functions for the available channels\n this.channels.forEach((channel) => {\n const chargeFunctions = ChargeFunctions.get(channel);\n Object.assign(this, chargeFunctions);\n });\n\n if (this.linkConfig.enabled) {\n Object.assign(this, linkChargeFunctions);\n }\n\n if (data.currency === 'GHS' && data.elevy_percentage) {\n this.elevyPercentage = data.elevy_percentage;\n }\n }\n\n setMetadata(key, value) {\n this.metadata[key] = value;\n }\n\n setDevice(uuid) {\n if (this.deviceFingerprint) {\n logMessage(\n \"Device ID has already been set by Checkout JS so there's no need to set this again\",\n );\n } else {\n this.deviceFingerprint = uuid;\n }\n }\n\n // eslint-disable-next-line consistent-return\n listenForCharge(options, callback) {\n return subscribeToChargeEvents(options, this, callback);\n }\n\n requery() {\n return TransactionAPI.requery(this.id);\n }\n\n markAsAbandoned() {\n return TransactionAPI.markAsAbandoned({\n publicKey: this.merchant.key,\n transactionId: this.id,\n });\n }\n\n verifyStatus() {\n return TransactionAPI.verifyStatus({\n reference: this.reference,\n publicKey: this.merchant.key,\n }).then((response) => response && response.data);\n }\n\n initializeCustomerSubscriptionAuthorization(payload) {\n return TransactionAPI.initializeCustomerSubscriptionAuthorization(\n payload,\n this.merchant.key,\n ).then((response) => response && response.data);\n }\n}\n\nexport default TransactionInstance;\n","import ValidationError from '../utilities/validation-error';\nimport ValidateTransactionParameters from '../utilities/transaction-validation';\nimport getDeviceFingerprint from '../utilities/device-fingerprint';\n\nimport TransactionInstance from './transaction.instance';\nimport TransactionAPI from './transaction.api';\n\nconst Transaction = {\n validate(data) {\n const validationErrors = ValidateTransactionParameters(data);\n if (validationErrors.length) {\n const [{ message }] = validationErrors;\n throw new ValidationError(validationErrors, message);\n }\n },\n async request(data) {\n const deviceFingerprint = await getDeviceFingerprint();\n const response = await TransactionAPI.requestInline({\n ...data,\n ...{ device: deviceFingerprint },\n });\n return (\n response &&\n Object.seal(\n new TransactionInstance({ ...response.data, ...{ deviceFingerprint } }),\n )\n );\n },\n /**\n *\n * @param {*} transactionData : The transaction data gotten from calling the `/request_inline` endpoint\n * @returns TransactionInstance\n */\n async createInstance(transactionData) {\n const deviceFingerprint = await getDeviceFingerprint();\n\n if (!transactionData?.access_code) {\n throw new Error(\n 'This function should be used with transaction data from the API',\n );\n }\n\n return Object.seal(\n new TransactionInstance({\n ...transactionData,\n ...{ deviceFingerprint },\n }),\n );\n },\n async requestWithAccessCode(accessCode) {\n const deviceFingerprint = await getDeviceFingerprint();\n const response = await TransactionAPI.requestStandard(accessCode);\n return (\n response &&\n Object.seal(\n new TransactionInstance({ ...response.data, ...{ deviceFingerprint } }),\n )\n );\n },\n async getByAccessCode(accessCode, publicKey) {\n const deviceFingerprint = await getDeviceFingerprint();\n const response = await TransactionAPI.getByAccessCode(\n accessCode,\n publicKey,\n );\n return (\n response &&\n Object.seal(\n new TransactionInstance({ ...response.data, ...{ deviceFingerprint } }),\n )\n );\n },\n initialize(data) {\n return Object.seal(new TransactionInstance(data));\n },\n async verify(reference) {\n const response = await TransactionAPI.verify(reference);\n return response && response.data;\n },\n};\n\nexport default Transaction;\n","import axiosInstance from '../utilities/axios-instance';\nimport config from '../config';\nimport getLanguage from '../utilities/get-language';\n\nconst resolvedCardBins = {};\nconst ToolkitAPI = {\n fetchBanks(params) {\n const url = new URL('/bank', config.paystackApiUrl).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n const data = { params, headers };\n return axiosInstance.get(url, data).then((response) => response.data);\n },\n fetchResolutions() {\n const url = new URL(\n '/checkout/resolutions',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n fetchCelebrations() {\n const url = new URL(\n '/checkout/celebrations',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n fetchStates(params) {\n const url = new URL(\n '/address_verification/states',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n const data = { params, headers };\n return axiosInstance.get(url, data).then((response) => response.data);\n },\n resolveCardBin(bin) {\n const url = new URL(\n `/decision/bin/${bin}`,\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n if (resolvedCardBins[bin]) {\n return Promise.resolve(resolvedCardBins[bin]);\n }\n\n return axiosInstance.get(url, { headers }).then(({ data }) => {\n resolvedCardBins[bin] = data;\n return data;\n });\n },\n resolveIPAddress(ipAddress) {\n const url = new URL(\n `decision/resolve_ip/${ipAddress}`,\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance.get(url, { headers }).then(({ data }) => {\n return data;\n });\n },\n};\n\nexport default ToolkitAPI;\n","import ToolkitAPI from './toolkit.api';\n\nclass Toolkit {\n static contents() {\n return [\n {\n key: 'banks',\n usage: 'Returns a list of banks that can be used to complete checkout',\n },\n {\n key: 'resolutions',\n usage:\n 'Returns a list of known errors, mapped to their suggested resolutions',\n },\n {\n key: 'celebrations',\n usage: 'Returns a list of upcoming celebrations',\n },\n {\n key: 'states',\n usage: 'Returns a list of states for a particular country',\n },\n ];\n }\n\n static fetch(key, params) {\n const availableData = this.contents().map((content) => content.key);\n if (availableData.indexOf(key) <= -1) {\n throw new Error(\n 'Please provide a valid config key. Use Toolkit.contents() to see available options.',\n );\n }\n\n let data;\n switch (key) {\n case 'banks':\n data = ToolkitAPI.fetchBanks(params || { pay_with_bank: '1' });\n break;\n case 'resolutions':\n data = ToolkitAPI.fetchResolutions();\n break;\n case 'celebrations':\n data = ToolkitAPI.fetchCelebrations();\n break;\n case 'states':\n data = ToolkitAPI.fetchStates(params);\n break;\n default:\n }\n\n return data;\n }\n\n static resolveCardBin(bin) {\n return ToolkitAPI.resolveCardBin(bin);\n }\n\n static resolveIPAddress(ipAddress) {\n return ToolkitAPI.resolveIPAddress(ipAddress);\n }\n}\n\nexport default Toolkit;\n","import { CardUtils } from '../../utilities/card';\n\nclass Card {\n constructor({ number, cvv, month, year, pin }) {\n this.number = number;\n this.cvv = cvv;\n this.month = month;\n this.year = year;\n this.pin = pin;\n }\n\n getEncryptedPin() {\n return CardUtils.getEncryptedPin(this.pin);\n }\n\n getLast4() {\n return CardUtils.getLast4(this.number);\n }\n\n tokenize() {\n return CardUtils.tokenize({\n number: this.number,\n cvv: this.cvv,\n month: this.month,\n year: this.year,\n });\n }\n\n static getType(value) {\n return CardUtils.getType(value);\n }\n\n static validate({ number, cvv, month, year }) {\n return CardUtils.validate({ number, cvv, month, year });\n }\n\n static validateNumber(value) {\n return CardUtils.validateNumber(value);\n }\n\n static isNumberValid(value) {\n return CardUtils.isNumberValid(value);\n }\n\n static validateCVV(cvv, cardType) {\n return CardUtils.validateCVV(cvv, cardType);\n }\n\n static isCvvValid(cvv, cardType) {\n return CardUtils.isCvvValid(cvv, cardType);\n }\n\n static validateExpiry(value) {\n return CardUtils.validateExpiry(value);\n }\n\n static isExpiryValid(value) {\n return CardUtils.isExpiryValid(value);\n }\n\n static generateTestCard(cardType) {\n return new Card(CardUtils.findTestCard(cardType));\n }\n}\n\nexport default Card;\n","import config from '../../config';\nimport ChargeResponses from '../../utilities/charge-responses';\nimport axiosInstance from '../../utilities/axios-instance';\nimport getLanguage from '../../utilities/get-language';\n\nconst CardAPI = {\n reserveFunds({ clientdata, last4, preauthorizationId, publicKey }) {\n const url = new URL(\n 'preauthorization/create',\n config.paystackApiUrl,\n ).toString();\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n return axiosInstance\n .post(\n url,\n { clientdata, last4, preauthorization: preauthorizationId },\n { headers },\n )\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default CardAPI;\n","import Card from './card';\nimport CardAPI from './card.api';\n\nconst paymentMethod = 'card';\n\nfunction validate(card, isSetter) {\n return new Promise((resolve, reject) => {\n const validation = Card.validate(card);\n if (!validation.isValid) {\n const throwValidation = isSetter || card.number;\n const errors = Object.keys(validation.result).filter(\n (value) => validation.result[value] === false,\n );\n const errorMessage = `Invalid card details: ${errors.join(', ')}`;\n reject(\n Error(\n throwValidation\n ? errorMessage\n : 'Please set a valid card with setCard()',\n ),\n );\n }\n resolve();\n });\n}\n\nexport default {\n setCard(params) {\n return validate(params, true).then(() => {\n this.card = new Card(params);\n });\n },\n\n reserveFunds({ preauthorizationId, publicKey, customFields = {} }) {\n return validate(this.card).then(() => {\n this.logAttempt(paymentMethod);\n const chargeParams = {\n clientdata: this.card.tokenize(),\n last4: this.card.getLast4(),\n device: this.deviceFingerprint,\n preauthorizationId,\n publicKey,\n customFields,\n };\n\n return CardAPI.reserveFunds(chargeParams).then((response) => {\n this.logAPIResponse(response, paymentMethod);\n return response;\n });\n });\n },\n\n listenFor3DSCharge(callback) {\n const listenerOptions = {\n channel: `3DS_${this.id}`,\n paymentMethod,\n };\n\n return this.listenForCharge(listenerOptions, callback);\n },\n};\n","import config from '../config';\nimport axiosInstance from '../utilities/axios-instance';\nimport getLanguage from '../utilities/get-language';\nimport ChargeResponses from '../utilities/charge-responses';\n\nconst PreauthorizationAPI = {\n getByAccessCode(accessCode) {\n const language = getLanguage();\n const headers = {\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n `preauthorization/verify_access_code/${accessCode}`,\n config.paystackApiUrl,\n ).toString();\n return axiosInstance\n .get(url, { headers })\n .then((response) => response.data);\n },\n\n requery({ reference, publicKey }) {\n const language = getLanguage();\n const headers = {\n Authorization: `Bearer ${publicKey}`,\n ...(language && { 'Accept-Language': language }),\n };\n\n const url = new URL(\n `preauthorization/verify/${reference}`,\n config.paystackApiUrl,\n ).toString();\n\n return axiosInstance\n .get(url, { headers })\n .then((response) => ChargeResponses.parse(response.data));\n },\n};\n\nexport default PreauthorizationAPI;\n","import config from '../config';\nimport { AnalyticsAPIUtils } from '../utilities/analytics';\n\nconst PreauthorizationAnalyticsAPI = {\n saveLog(preauthorizationReference, merchantKey, log) {\n const url = new URL(\n `preauthorization/update_log/${preauthorizationReference}`,\n config.paystackApiUrl,\n ).toString();\n return AnalyticsAPIUtils.saveLog(url, { merchantKey, log });\n },\n\n getIp() {\n return AnalyticsAPIUtils.getIp();\n },\n\n saveIp(preauthorizationReference, merchantKey) {\n const url = new URL(\n `preauthorization/set_ip/${preauthorizationReference}`,\n config.paystackApiUrl,\n ).toString();\n return AnalyticsAPIUtils.saveIp(url, { merchantKey });\n },\n};\n\nexport default PreauthorizationAnalyticsAPI;\n","import { AnalyticsUtils } from '../utilities/analytics';\n\nimport PreauthorizationAnalyticsAPI from './preauthorization.analytics.api';\n\nexport default {\n initializeLog(log) {\n this.log = AnalyticsUtils.initializeLog(log);\n },\n\n getTimeSpent() {\n this.log.time_spent = AnalyticsUtils.getTimeSpent(this.log.start_time);\n return this.log.time_spent;\n },\n\n logPageOpen() {\n this.log.history.push({\n type: 'open',\n message: 'Opened checkout',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logChannelSwitch(value) {\n this.log.history.push({\n type: 'action',\n message: `Set charge method to: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logValidationErrors(inputs) {\n inputs.forEach((input) => {\n this.log.history.push({\n type: 'error',\n message: `Invalid ${input}`,\n time: this.getTimeSpent(),\n });\n });\n return this.saveLog();\n },\n\n logInput(value) {\n const isUpdate = this.log.history.find(\n (item) => item.message === `Filled this field: ${value}`,\n );\n this.log.history.push({\n type: 'input',\n message: `${isUpdate ? 'Changed' : 'Filled'} this field: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuthWindowOpen() {\n this.log.history.push({\n type: 'action',\n message: 'Third-party authentication window opened',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuthWindowClose() {\n this.log.history.push({\n type: 'action',\n message: 'Third-party authentication window closed',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAPIResponse(response, channel) {\n console.log('api response', response);\n switch (response.status) {\n case 'authorized':\n return this.logAuthorized(channel);\n case 'failed':\n return this.logError(response.message);\n case 'auth':\n return this.logAuth(response.data.auth);\n default:\n return false;\n }\n },\n\n logAPIResponseMessage(message) {\n this.log.history.push({\n type: 'action',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAttempt(channel) {\n let message = 'Attempted to charge';\n if (channel) {\n message += ` with ${channel}`;\n }\n this.log.attempts += 1;\n this.log.history.push({\n type: 'action',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuth(value) {\n this.log.authentication = value;\n this.log.history.push({\n type: 'auth',\n message: `Authentication Required: ${value}`,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logAuthorized(channel) {\n let message = 'Successfully preauthorized funds';\n if (channel) {\n message += ` with ${channel}`;\n }\n this.log.success = true;\n this.log.history.push({\n type: 'authorized',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logPageClose() {\n this.log.history.push({\n type: 'close',\n message: 'Closed checkout',\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n logError(error) {\n let message = 'Error';\n if (error) {\n message += `: ${error}`;\n }\n this.log.errors += 1;\n this.log.history.push({\n type: 'error',\n message,\n time: this.getTimeSpent(),\n });\n return this.saveLog();\n },\n\n saveLog() {\n return PreauthorizationAnalyticsAPI.saveLog(\n this.reference,\n this.merchant.key,\n this.log,\n );\n },\n\n saveIpAddress() {\n return PreauthorizationAnalyticsAPI.saveIp(\n this.reference,\n this.merchant.key,\n );\n },\n};\n","/* eslint-env browser */\nimport { loadPusher, subscribeToChargeEvents } from '../utilities/pusher';\n\nimport CardPreauthorization from './card/card.preauthorization';\nimport PreauthorizationAPI from './preauthorization.api';\nimport AnalyticsFunctions from './preauthorization.analytics';\n\nconst PAYMENT_METHOD = 'card';\n\nclass PreauthorizationInstance {\n constructor(data) {\n this.id = data.id;\n this.email = data.customer?.email;\n this.status = data.status;\n this.reference = data.reference;\n this.amount = data.amount;\n this.currency = data.currency;\n this.metadata = data.metadata || {};\n this.customer = data.customer;\n this.channels = data.channels || ['card'];\n this.isListening = false;\n this.isTest = data.domain === 'test';\n this.deviceFingerprint = data.deviceFingerprint || null;\n this.merchant = {\n id: data.merchant_id,\n logo: data.merchant_logo,\n name: data.merchant_name,\n key: data.merchant_key,\n };\n this.card = {};\n\n loadPusher();\n\n this.log = null;\n Object.assign(this, AnalyticsFunctions);\n this.initializeLog(data.log);\n this.saveIpAddress();\n\n Object.assign(this, CardPreauthorization);\n }\n\n setMetadata(key, value) {\n this.metadata[key] = value;\n }\n\n requery() {\n return PreauthorizationAPI.requery({\n reference: this.reference,\n publicKey: this.merchant.key,\n }).then((response) => {\n this.logAPIResponse(response, PAYMENT_METHOD);\n return response;\n });\n }\n\n listenForCharge(options, callback) {\n return subscribeToChargeEvents(options, this, callback);\n }\n}\n\nexport default PreauthorizationInstance;\n","import getDeviceFingerprint from '../utilities/device-fingerprint';\n\nimport PreauthorizationInstance from './preauthorization.instance';\nimport PreauthorizationAPI from './preauthorization.api';\n\nconst Preauthorization = {\n initialize(data) {\n return Object.seal(new PreauthorizationInstance(data));\n },\n async getByAccessCode(accessCode) {\n const deviceFingerprint = await getDeviceFingerprint();\n const response = await PreauthorizationAPI.getByAccessCode(accessCode);\n return (\n response &&\n Object.seal(\n new PreauthorizationInstance({\n ...response.data,\n deviceFingerprint,\n }),\n )\n );\n },\n};\n\nexport default Preauthorization;\n"],"names":["runtime","exports","undefined","Op","Object","prototype","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","obj","key","value","defineProperty","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","state","GenStateSuspendedStart","method","arg","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","type","done","GenStateSuspendedYield","makeInvokeMethod","fn","call","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","AsyncIterator","PromiseImpl","invoke","resolve","reject","result","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","module","regeneratorRuntime","accidentalStrictMode","globalThis","Function","check","it","Math","global","window","fails","exec","descriptors","require$$0","get","functionBindNative","test","bind","NATIVE_BIND","functionCall","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","V","descriptor","match","version","createPropertyDescriptor","bitmap","FunctionPrototype","uncurryThis","functionUncurryThis","toString","stringSlice","classofRaw","require$$1","require$$2","classof","require$$3","split","indexedObject","requireObjectCoercible","IndexedObject","toIndexedObject","isCallable","argument","isObject","getBuiltIn","namespace","objectIsPrototypeOf","isPrototypeOf","engineUserAgent","userAgent","process","Deno","versions","v8","engineV8Version","V8_VERSION","nativeSymbol","getOwnPropertySymbols","symbol","String","sham","useSymbolAsUid","USE_SYMBOL_AS_UID","require$$4","isSymbol","tryToString","aCallable","getMethod","P","func","setGlobal","SHARED","sharedStore","store","sharedModule","mode","copyright","license","source","toObject","hasOwnProperty_1","id","postfix","random","uid","shared","NATIVE_SYMBOL","require$$5","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","wellKnownSymbol","description","ordinaryToPrimitive","input","pref","val","valueOf","require$$6","TO_PRIMITIVE","toPrimitive","exoticToPrim","toPropertyKey","document","EXISTS","createElement","documentCreateElement","ie8DomDefine","a","DESCRIPTORS","propertyIsEnumerableModule","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","O","f","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","Attributes","current","definePropertyModule","createNonEnumerableProperty","functionToString","inspectSource","set","has","WeakMap","nativeWeakMap","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","require$$8","OBJECT_ALREADY_INITIALIZED","wmget","wmhas","wmset","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","getDescriptor","functionName","PROPER","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","redefineModule","options","unsafe","simple","noTargetGet","replace","join","ceil","floor","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","integer","toLength","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","indexOf","objectKeysInternal","names","enumBugKeys","internalObjectKeys","concat","getOwnPropertyNames","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","copyConstructorProperties","target","exceptions","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","redefine","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","createProperty","propertyKey","Array","arraySliceSimple","start","end","k","fin","n","$getOwnPropertyNames","arraySlice","windowNames","getWindowNames","arrayBufferNonExtensible","ArrayBuffer","buffer","isExtensible","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","objectIsExtensible","freezing","preventExtensions","$","getOwnPropertyNamesExternalModule","FREEZING","require$$10","REQUIRED","METADATA","require$$9","setMetadata","objectID","weakData","meta","internalMetadataModule","enable","splice","fastKey","getWeakData","onFreeze","$seal","seal","functionApply","Reflect","aPossiblePrototype","objectSetPrototypeOf","setter","CORRECT_SETTER","proto","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","toStringTagSupport","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","TEST","stack","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","errorStackInstallable","normalizeStringArgument","$default","installErrorCause","cause","clearErrorStack","dropEntries","ERROR_STACK_INSTALLABLE","wrapErrorConstructorWithCause","FULL_NAME","wrapper","FORCED","IS_AGGREGATE_ERROR","OPTIONS_POSITION","path","ERROR_NAME","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","b","message","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","init","isArray","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","called","SPECIES","arraySpeciesConstructor","originalArray","C","arraySpeciesCreate","arrayMethodHasSpeciesSupport","METHOD_NAME","array","foo","Boolean","require$$11","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","len","E","A","ValidationError","_Error","_inherits","_super","_createSuper","errors","_this","_classCallCheck","_len","params","_key","captureStackTrace","_assertThisInitialized","_createClass","_wrapNativeSuper","objectToString","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","DOMTokenListPrototype","domTokenListPrototype","functionBindContext","that","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","arrayIteration","map","filter","some","every","find","findIndex","filterReject","arrayMethodIsStrict","$forEach","arrayForEach","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","objectKeys","nativeKeys","regexpFlags","ignoreCase","multiline","dotAll","unicode","sticky","$RegExp","RegExp","UNSUPPORTED_Y","re","lastIndex","MISSED_STICKY","BROKEN_CARET","regexpStickyHelpers","defineProperties","Properties","props","activeXDocument","html","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","style","display","appendChild","src","contentWindow","open","F","re1","re2","objectCreate","regexpUnsupportedDotAll","flags","regexpUnsupportedNcg","groups","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","reCopy","group","str","raw","charsAdded","strCopy","execCalled","DELEGATES_TO_EXEC","un$Test","whitespaces","whitespace","ltrim","rtrim","stringTrim","trim","$parseInt","parseInt","ITERATOR","hex","numberParseInt","radix","S","thisNumberValue","require$$12","require$$13","require$$14","require$$15","NUMBER","NativeNumber","NumberPrototype","charCodeAt","toNumber","first","third","maxCode","digits","code","NaN","NumberWrapper","primValue","toNumeric","j","isValidEmail","isInteger","Number","isString","fields","ref","required","isValid","substring","email","fallback","customer_code","amount","plan","transaction_charge","bearer","channels","currency","firstname","lastname","phone","remark","payment_page","payment_request","quantity","coupon","start_date","interval","invoice_limit","subaccount","hash","transaction_type","subscription","$map","mergeSort","comparefn","middle","insertionSort","merge","element","left","right","llength","rlength","lindex","rindex","arraySort","firefox","engineFfVersion","engineIsIeOrEdge","webkit","engineWebkitVersion","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STRICT_METHOD","STABLE_SORT","chr","fromCharCode","v","itemsLength","items","arrayLength","x","y","getSortCompare","$filter","un$Join","ES3_STRINGS","separator","definition","x64Add","m","o","x64Multiply","x64Rotl","x64LeftShift","x64Xor","x64Fmix","h","x64hash128","seed","remainder","bytes","h1","h2","k1","k2","c1","c2","defaultOptions","preprocessor","audio","timeout","excludeIOS11","fonts","swfContainerId","swfPath","userDefinedFonts","extendedJsFonts","screen","detectScreenOrientation","plugins","sortPluginsFor","excludeIE","extraComponents","excludes","enumerateDevices","pixelRatio","doNotTrack","fontsFlash","NOT_AVAILABLE","ERROR","EXCLUDED","each","l","results","list","isEnumerateDevicesSupported","navigator","mediaDevices","getScreenResolution","resolution","width","height","getAvailableScreenResolution","availWidth","availHeight","available","getRegularPlugins","pluginsShouldBeSorted","p","mimeTypes","mt","suffixes","getIEPlugins","e","should","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","hasIndexedDB","indexedDB","getHardwareConcurrency","hardwareConcurrency","getNavigatorCpuClass","cpuClass","getNavigatorPlatform","platform","getDoNotTrack","msDoNotTrack","getTouchSupport","touchEvent","maxTouchPoints","msMaxTouchPoints","createEvent","_","getCanvasFp","canvas","ctx","getContext","rect","isPointInPath","textBaseline","fillStyle","fillRect","dontUseFakeFontInCanvas","font","fillText","globalCompositeOperation","beginPath","arc","PI","closePath","fill","toDataURL","getWebglFp","gl","fa2s","fa","clearColor","DEPTH_TEST","depthFunc","LEQUAL","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","getWebglCanvas","vertexPosBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","vertices","Float32Array","bufferData","STATIC_DRAW","itemSize","numItems","program","createProgram","vshader","createShader","VERTEX_SHADER","shaderSource","compileShader","fshader","FRAGMENT_SHADER","attachShader","linkProgram","useProgram","vertexPosAttrib","getAttribLocation","offsetUniform","getUniformLocation","enableVertexAttribArray","vertexPosArray","vertexAttribPointer","FLOAT","uniform2f","drawArrays","TRIANGLE_STRIP","getSupportedExtensions","getParameter","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","ALPHA_BITS","getContextAttributes","antialias","BLUE_BITS","DEPTH_BITS","GREEN_BITS","ext","getExtension","anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT","maxAnisotropy","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","RED_BITS","RENDERER","SHADING_LANGUAGE_VERSION","STENCIL_BITS","VENDOR","VERSION","extensionDebugRendererInfo","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getShaderPrecisionFormat","numType","shader","numSize","format","line","getWebglVendorAndRenderer","glContext","getAdBlock","ads","innerHTML","className","body","getElementsByClassName","offsetHeight","removeChild","getHasLiedLanguages","languages","substr","language","getHasLiedResolution","getHasLiedOs","os","oscpu","getHasLiedBrowser","browser","productSub","errFirefox","tempRes","eval","toSource","errOfErr","isCanvasSupported","elem","isWebGlSupported","WebGLRenderingContext","isIE","appName","hasSwfObjectLoaded","swfobject","hasMinFlashInstalled","hasFlashPlayerVersion","loadSwfAndDetectFonts","hiddenCallback","node","setAttribute","addFlashDivNode","flashvars","onReady","embedSWF","allowScriptAccess","menu","components","getData","userLanguage","browserLanguage","systemLanguage","colorDepth","deviceMemory","devicePixelRatio","Date","getTimezoneOffset","Intl","DateTimeFormat","resolvedOptions","timeZone","addBehavior","openDatabase","baseFonts","fontList","position","getElementsByTagName","baseFontsDiv","fontsDiv","defaultWidth","defaultHeight","createSpan","s","fontSize","fontStyle","fontWeight","letterSpacing","lineBreak","lineHeight","textTransform","textAlign","textDecoration","textShadow","whiteSpace","wordBreak","wordSpacing","createSpanWithFonts","fontToDetect","baseFont","fontFamily","isFontAvailable","fontSpans","detected","offsetWidth","baseFontsSpans","spans","initializeBaseFontsSpans","fontsSpans","numDefaultFonts","initializeFontsSpans","pauseBefore","audioOptions","AudioContext","OfflineAudioContext","webkitOfflineAudioContext","oscillator","createOscillator","frequency","setValueAtTime","currentTime","compressor","createDynamicsCompressor","item","connect","destination","startRendering","audioTimeoutId","setTimeout","console","warn","oncomplete","event","fingerprint","clearTimeout","renderedBuffer","getChannelData","reduce","acc","abs","disconnect","devices","device","deviceId","groupId","kind","label","Fingerprint2","callback","extendSoft","addPreprocessedComponent","chainComponents","alreadyWaited","component","getPromise","getV18","newComponents","murmur","nativePromiseConstructor","redefineAll","setToStringTag","TAG","anInstance","Prototype","iterators","Iterators","ArrayPrototype","isArrayIteratorMethod","getIteratorMethod","getIterator","usingIterator","iteratorClose","innerResult","innerError","Result","stopped","ResultPrototype","SAFE_CLOSING","iteratorWithReturn","return","from","location","defer","channel","port","aConstructor","validateArgumentsLength","passed","engineIsIos","engineIsNode","IS_IOS","IS_NODE","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","queue","ONREADYSTATECHANGE","run","runner","listener","post","postMessage","protocol","host","handler","args","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","flush","head","last","notify","toggle","promise","task","engineIsIosPebble","Pebble","engineIsWebosWebkit","macrotask","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","parent","exit","enter","createTextNode","observe","characterData","microtask","PromiseCapability","$$resolve","$$reject","newPromiseCapability","Queue","tail","add","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","engineIsBrowser","NativePromise","setSpecies","CONSTRUCTOR_NAME","Constructor","iterate","unboundFunction","iterFn","step","AS_ENTRIES","IS_ITERATOR","INTERRUPTED","condition","callFn","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","speciesConstructor","defaultConstructor","require$$19","require$$20","promiseResolve","promiseCapability","hostReportErrors","newPromiseCapabilityModule","require$$23","perform","require$$25","InternalStateModule","require$$26","require$$27","IS_BROWSER","require$$29","require$$30","require$$31","require$$28","PROMISE","setInternalState","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","r","capability","$promiseResolve","remaining","alreadyCalled","race","waitForDuration","duration","logMessage","log","generateDeviceFingerprint","_ref","_asyncToGenerator","_callee","sortedComponents","joinedComponents","_context","t0","getDeviceFingerprint","_ref2","_callee2","deviceFingerprint","_context2","$assign","assign","objectAssign","B","alphabet","T","argumentsLength","config","cookieTestUrl","publishableKey","publicKey","devConfig","_objectSpread","checkoutUrl","paymentBaseUrl","paystackApiUrl","pusherKey","pusherUrl","stagingConfig","productionConfig","configToUse","dev","staging","production","env","paystackEnvironment","noOp","UNSCOPABLES","addToUnscopables","$includes","PREAUTHORIZATION_STATE_AUTHORIZED","authorized","response","status","cleanResponse","_objectWithoutProperties","_excluded","success","_excluded2","pending","_excluded3","getCleanResponse","defaultMessage","_excluded4","auth","otpmessage","_excluded5","requery","requestCustomField","field","bank","parse","apiResponse","_typeof","message_type","loadPusher","xhr","XMLHttpRequest","onload","responseText","statusText","onerror","send","subscribeToChargeEvents","pusher","paymentMethod","Pusher","cluster","disableStats","pusherSubscriptionError","unsubscribeFromPusher","unsubscribe","pusherSubscription","subscribe","isListening","formattedResponse","ChargeResponses","logAPIResponse","PROPER_FUNCTION_NAME","$toString","regExpFlags","TO_STRING","RegExpPrototype","n$ToString","getFlags","NOT_GENERIC","INCORRECT_NAME","R","rf","PrototypeOfArrayIteratorPrototype","arrayIterator","correctPrototypeGetter","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","returnThis","createIteratorConstructor","IteratorConstructor","NAME","ENUMERABLE_NEXT","FunctionName","KEYS","VALUES","ENTRIES","defineIterator","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","ARRAY_ITERATOR","es_array_iterator","iterated","Arguments","CONVERT_TO_STRING","pos","second","size","stringMultibyte","codeAt","STRING_ITERATOR","point","ArrayIteratorMethods","ArrayValues","nativeUrl","url","URL","searchParams","pathname","href","URLSearchParams","username","callWithSafeIterationClosing","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","RangeError","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","base","encode","output","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","q","t","qMinusT","baseMinusT","USE_NATIVE_URL","require$$16","require$$17","require$$18","require$$21","require$$22","require$$24","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","n$Fetch","N$Request","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","encodeURIComponent","shift","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","replacer","serialize","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","update","entryIterator","entryNext","query","attribute","attributes","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","append","delete","getAll","found","headersHas","headersSet","wrapRequestOptions","headers","fetch","RequestConstructor","Request","EOF","web_urlSearchParams","getState","arrayFrom","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","toASCII","encoded","labels","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","pow","numberToString","unshift","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","maxLength","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","baseState","failure","urlString","stateOverride","codePoints","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","password","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","parseIPv6","partsLength","numbers","part","ipv4","parts","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","origin","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","search","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","cache","thisArg","kindOf","thing","kindOfTest","isUndefined","isArrayBuffer","isNumber","isPlainObject","isDate","isFile","isBlob","isFileList","isFunction","isURLSearchParams","TypedArray","isTypedArray","Uint8Array","_hasOwnProperty","isHTMLForm","prop","utils","isBuffer","isFormData","pattern","FormData","isArrayBufferView","isView","isEmptyObject","isStream","pipe","isStandardBrowserEnv","product","assignValue","extend","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","endsWith","searchString","toArray","arr","forEachEntry","pair","matchAll","regExp","matches","AxiosError","request","toJSON","fileName","lineNumber","columnNumber","customProps","axiosError","AxiosError_1","envFormData","isVisitable","removeBrackets","renderKey","dots","token","predicates","toFormData_1","formData","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","isFlatArray","exposedHelpers","build","toFormData","charMap","AxiosURLSearchParams","_pairs","encoder","_encode","AxiosURLSearchParams_1","buildURL","hashmarkIndex","serializerParams","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","InterceptorManager_1","normalizeHeaderName","normalizedName","toUpperCase","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","protocols","formDataToJSON_1","buildPath","isNumericKey","isFinite","isLast","arrayToObject","parsePropPath","cookies","expires","secure","cookie","toGMTString","read","remove","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","ignoreDuplicateOf","isURLSameOrigin","originURL","msie","urlParsingNode","resolveURL","requestURL","parsed","CanceledError","ERR_CANCELED","__CANCEL__","CanceledError_1","settle","validateStatus","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","parseHeaders","transitionalDefaults","parseProtocol","onCanceled","requestData","requestHeaders","responseType","withXSRFToken","cancelToken","signal","removeEventListener","unescape","Authorization","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","paramsSerializer","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","xsrfHeaderName","xsrfCookieName","setRequestHeader","withCredentials","onDownloadProgress","onUploadProgress","upload","cancel","req","abort","aborted","toURLEncodedForm","helpers","formDataToJSON","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","transformRequest","contentType","hasJSONContentType","isObjectPayload","formSerializer","_FormData","rawValue","parser","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","maxContentLength","maxBodyLength","common","Accept","defaults_1","isCancel","transformData","fns","throwIfCancellationRequested","throwIfRequested","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","validators","deprecatedWarnings","validator","formatMessage","opt","desc","opts","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","dispatchRequest","Axios","instanceConfig","interceptors","configOrUrl","boolean","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","getUri","generateHTTPMethod","isForm","Axios_1","CancelToken","resolvePromise","_listeners","onfulfilled","_resolve","c","CancelToken_1","axios","createInstance","defaultConfig","instance","Cancel","promises","spread","isAxiosError","payload","formToJSON","hexTable","plainObjects","combine","compact","refs","compacted","compactQueue","decode","decoder","charset","strWithoutPlus","defaultEncoder","escape","$0","out","isRegExp","allowPrototypes","mergeTarget","targetItem","percentTwenties","Format","RFC1738","RFC3986","formats","default","formatters","arrayPrefixGenerators","brackets","prefix","comma","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","allowDots","charsetSentinel","delimiter","encodeValuesOnly","formatter","serializeDate","date","skipNulls","strictNullHandling","generateArrayPrefix","keyValue","valuesArray","valuesJoined","objKeys","arrayLimit","depth","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","numberStr","parseArrayValue","maybeMap","mapped","parseKeys","givenKey","valuesParsed","child","leaf","root","cleanRoot","normalizeStringifyOptions","arrayFormat","joined","normalizeParseOptions","tempObj","cleanStr","limit","Infinity","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","lib","IS_RIGHT","memo","$reduce","CHROME_VERSION","axiosInstance","sanitizedParams","accumulator","_defineProperty","sanitizeParams","qs","getLanguage","languageStorageKey","getItem","TransactionAPI","connectAccount","connect_account","accessCode","reference","transactionId","patch","PayWithTransferAPI","getManagedAccount","fulfilLateNotification","preferredProvider","transaction_id","fulfil_late_notification","preferred_provider","merchant","bankTransfer","listenForPayWithTransferCharge","pusherChannel","listenerOptions","pusher_channel","listenForCharge","sendIncorrectAmountDecision","decisionMade","decision","sendAuthenticatePayer","amountPaid","payerAccountNumber","payerBankSlug","payer_account_number","payer_bank_slug","formUrlencoded","sorted","ignorenull","ch","keyarr","filterjoin","objnest","nest","arrnest","PayattitudeAPI","phoneNumber","urlEncodedParams","formurlencoded","phone_number","chargePayattitude","listenForPayattitudeCharge","EFT","getEFTUrl","eftGateway","listenForEFTCharge","ApplePayAPI","sessionUrl","domainName","transaction","paymentObject","validateApplePaySession","logAttempt","logAPIResponseMessage","chargeApplePay","_this2","PayPalAPI","createPayPalOrder","capturePayPalOrder","getPayPalConfig","encrypt","toEncrypt","jsEncrypt","JSEncrypt","setPublicKey","BI_RM","int2char","op_and","op_or","op_xor","op_andnot","lbit","cbit","b64map","b64pad","hex2b64","ret","b64tohex","slop","extendStatics","d","__extends","__","decoder$1","Hex","ignore","bits","char_count","Base64","b64","unarmor","Int10","buf","mulAdd","sub","simplify","ellipsis","reTimeS","reTimeL","stringCut","dbits","Stream","enc","hexDigits","hexByte","hexDump","isASCII","parseStringISO","parseStringUTF","parseStringBMP","hi","lo","parseTime","shortYear","parseInteger","neg","pad","parseBitString","unusedBit","intro","skip","parseOctetString","parseOID","ASN1","stream","header","ASN1Tag","typeName","tagClass","tagNumber","posContent","isUniversal","toPrettyString","indent","tagConstructed","posStart","posEnd","toHexString","decodeLength","getHexStringValue","hexString","offset","streamStart","getSub","isEOC","lowprimes","lplim","BigInteger","fromNumber","fromString","negate","toRadix","km","DB","nbi","ZERO","subTo","compareTo","bitLength","nbits","DM","mod","divRemTo","modPowInt","z","isEven","Classic","Montgomery","exp","clone","copyTo","intValue","DV","byteValue","shortValue","signum","toByteArray","equals","and","bitwiseTo","or","xor","andNot","not","shiftLeft","rShiftTo","lShiftTo","shiftRight","getLowestSetBit","bitCount","testBit","setBit","changeBit","clearBit","flipBit","addTo","subtract","multiply","multiplyTo","divide","divideAndRemainder","modPow","nbv","Barrett","g","convert","g2","sqrTo","mulTo","w","is1","r2","revert","modInverse","ac","u","ONE","NullExp","gcd","isProbablePrime","modInt","millerRabin","fromInt","fromRadix","mi","sh","intAt","clamp","dlShiftTo","drShiftTo","bs","cbs","bm","ds","am","squareTo","pm","pt","ts","ms","nsh","ys","y0","yt","F1","F2","d1","FV","d2","qd","invDigit","chunkSize","LN2","cs","dMultiply","dAddOffset","nextBytes","op","multiplyLowerTo","multiplyUpperTo","n1","square","gcda","gcda1","fromNumberAsync","bnp_1","bnpfn1_1","mp","mpl","mph","um","mt2","u0","q3","mu","parseBigInt","am1","am2","xl","xh","am3","BI_FP","rr","vv","BI_RC","Arcfour","prng_newstate","rng_state","rng_pptr","rng_psize","rng_pool","crypto","getRandomValues","Uint32Array","onMouseMoveListener_1","ev","count","detachEvent","mouseCoordinates","attachEvent","rng_get_byte","SecureRandom","ba","pkcs1pad1","filler","pkcs1pad2","rng","RSAKey","dmp1","dmq1","coeff","doPublic","doPrivate","xp","xq","setPublic","N","text","setPrivate","D","setPrivateEx","Q","DP","DQ","generate","ee","p1","q1","phi","decrypt","ctext","pkcs1unpad2","generateAsync","rsa","loop1","loop4","loop3","loop2","sign","digestMethod","digestName","getDigestHeader","verify","signature","removeDigestHeader","DIGEST_HEADERS","md2","md5","sha1","sha224","sha256","sha384","sha512","ripemd160","name_1","YAHOO","lang","subc","superc","overrides","superclass","_IEEnumFix","ADD","fname","ex","KJUR","asn1","ASN1Util","integerToByteHex","bigIntToMinTwosComplementsHex","bigIntegerValue","xorLen","hMask","getPEMStringFromHex","dataHex","pemHeader","hextopem","newObject","param","_KJUR_asn1","_DERBoolean","DERBoolean","_DERInteger","DERInteger","_DERBitString","DERBitString","_DEROctetString","DEROctetString","_DERNull","DERNull","_DERObjectIdentifier","DERObjectIdentifier","_DEREnumerated","DEREnumerated","_DERUTF8String","DERUTF8String","_DERNumericString","DERNumericString","_DERPrintableString","DERPrintableString","_DERTeletexString","DERTeletexString","_DERIA5String","DERIA5String","_DERUTCTime","DERUTCTime","_DERGeneralizedTime","DERGeneralizedTime","_DERSequence","DERSequence","_DERSet","DERSet","_DERTaggedObject","DERTaggedObject","_newObject","paramList","asn1Obj","tagParam","explicit","newParam","jsonToASN1HEX","getEncodedHex","oidHexToInt","i01","binbuf","bin","oidIntToHex","oidString","itox","roidtox","roid","padLen","bPad","b8","i0","ASN1Object","hV","getLengthHexFromValue","hN","hNlen","hTLV","isModified","getFreshValueHex","hL","hT","getValueHex","DERAbstractString","getString","setString","newS","stohex","setStringHex","newHexString","DERAbstractTime","localDateToUTC","utc","getTime","formatDate","dateObject","withMillis","zeroPadding","year","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","millis","getMilliseconds","sMillis","setByDateValue","month","day","hour","sec","UTC","setByDate","DERAbstractStructured","setByASN1ObjectArray","asn1ObjectArray","asn1Array","appendASN1Object","asn1Object","setByBigInteger","setByInteger","bi","setValueHex","setHexValueIncludingUnusedBits","newHexStringIncludingUnusedBits","setUnusedBitsAndHexValue","unusedBits","hValue","hUnusedBits","setByBinaryString","binaryString","setByBooleanArray","booleanArray","newFalseArray","nLength","setValueOidString","setValueName","oidName","oid","x509","OID","name2oid","sortFlag","sortflag","isExplicit","setASN1Object","isExplicitFlag","tagNoHex","JSEncryptRSAKey","parseKey","hasPrivateKeyProperty","hasPublicKeyProperty","parsePropertiesFrom","pem","modulus","public_exponent","der","private_exponent","prime1","prime2","exponent1","exponent2","coefficient","getPrivateBaseKey","int","bigint","getPrivateBaseKeyB64","getPublicBaseKey","first_sequence","second_sequence","bit_string","getPublicBaseKeyB64","wordwrap","regex","getPrivateKey","getPublicKey","default_key_size","default_public_exponent","setKey","setPrivateKey","privkey","pubkey","getKey","cb","getPrivateKeyB64","getPublicKeyB64","factory","TO_ENTRIES","$values","$find","FIND","SKIPS_HOLES","luhn10_1","identifier","num","sum","alt","clone_1","originalObject","isValidInputType_1","cardNumber","matches_1","maxLengthToCheck","integerRepresentationOfCardNumber","matchesRange","matchesPattern","testOrder","addMatchingCardsToResults_1","cardConfiguration","patternLength","clonedCardConfiguration","patterns","matchStrength","types","visa","niceType","gaps","lengths","mastercard","discover","jcb","unionpay","maestro","elo","mir","hiper","hipercard","findBestMatch","numberOfResultsWithMaxStrengthProperty","hasEnoughResultsToDetermineBestMatch","bestMatch","isValidInputType","addMatchingCardsToResults","customCards","cardNames","VISA","MASTERCARD","AMERICAN_EXPRESS","DINERS_CLUB","DISCOVER","JCB","UNIONPAY","MAESTRO","ELO","MIR","HIPER","HIPERCARD","ORIGINAL_TEST_ORDER","findType","getCardPosition","ignoreErrorForNotExisting","creditCardType","getTypeInfo","removeCard","addCard","existingCardPosition","updateCard","cardType","updates","clonedCard","changeOrder","currentPosition","resetModifications","creditCardType_1","luhn10","getCardTypes","verification","card","isPotentiallyValid","cardNumber_1","potentialTypes","luhnValidateUnionPay","isCurrentYear","expirationYear_1","maxElapsedYear","currentYear","twoDigitYear","valid","expirationYear","isValidForThisYear","expirationMonth_1","currentMonth","parseDate","numberOfDigitsInMonth","dateString","assumedYear","firstCharacter","expirationMonth","DEFAULT_LENGTH","cardValidator","expirationDate","monthValid","yearValid","cvv","maximum","postalCode","minLength","Card","getEncryptedPin","pin","getLast4","tokenize","getType","Validate","_toConsumableArray","validate","isNumberValid","expiry","isExpiryValid","isCvvValid","validateNumber","validateCVV","cvvLength","validateExpiry","findTestCard","testCards","CardUtils","CardAPI","clientdata","last4","trans","rememberCard","transactionType","customFields","chargeParams","remember_card","urlEncodedData","_ref3","authorizationCode","authorization_code","_ref4","city","zipCode","zip_code","_ref5","authorizationId","authorization_id","_ref6","_ref7","_ref8","_callee3","_context3","_ref9","_callee4","cardCode","_context4","_ref10","_callee5","selectedCurrency","_context5","selected_currency","savedCardMethods","isSetter","validation","throwValidation","errorMessage","setCard","chargeCard","chargeCardWithPin","_this3","chargeRememberedCard","_this4","cardLast4","encryptedPin","resumeCardCharge","_this5","forgetRememberedCard","_this6","authenticateCard","_this7","verifyAddress","_this8","listenFor3DSCharge","sendSavedCardsOTP","_arguments","_this9","logAuth","savedCardsTempAuthToken","verifySavedCardsOtp","_this10","savedCardsToken","getSavedCards","deleteSavedCard","chargeSavedCard","_ref6$selectedCurrenc","BankAccount","bankId","accountType","accountNumber","isValidNubanAccount","bankCode","bank_code","account_number","_x","EMandateAPI","birthday","bankAccount","IBank","getIbankUrl","listenForIbankCharge","DigitalBankMandateAPI","payId","walletId","wallet_id","DigitalBankMandate","chargeDigitalBankMandate","listenForDigitalBankMandateCharge","BankAccountCharge","setBankAccount","chargeBankAccount","verifyParams","registerBankAccount","registerParams","authenticateBankAccount","IBankCharge","DigitalBankMandateCharge","UssdAPI","getUSSDShortcode","ussd","getPWTUSSDShortcode","bankSlug","_ref2$fulfilLateNotif","bank_slug","listenForPWTUSSDCharge","listenForUSSDCharge","QrAPI","allowedChannels","getQRCode","qr","listenForQRCharge","listenrOptions","PhoneNumber","hasCountryCode","hasOnlyDigits","isE164Number","MobileMoneyAPI","account","channel_name","provider","voucher","registration_token","registrationToken","otp","mobileMoneyChargeAPI","mobileMoney","otpSentCount","logTokenRequest","chargeMobileMoney","chargeMobileMoneyBusiness","chargeMpesaOffline","chargeWaveMobile","authenticateMobileMoney","logMobileMoneyActions","logTokenAuthenticationFailure","logError","submitMobileMoneyCode","listenForMobileMoneyCharge","_this$mobileMoney$dat","channelName","DirectDebitAPI","accountCode","account_code","loginToDirectDebitAccount","_response$data","permissions","user","permission","directDebit","chargeDirectDebit","chargeResponse","getProvisionedAccounts","accounts","authenticateAccount","$trim","forcedStringTrimMethod","CAPITEC_PAY_CHANNEL","IDENTIFIER_KEY","CapitecPay","combineIdentifierKeyAndIdentifierValue","identifierKey","identifierValue","encryptIdentifierKeyAndIdentifierValue","validateAccountNumber","validateIDNumber","validateCellphoneNumber","validateIdentifierKeyAndIdentifierValue","CapitecPayAPI","clientData","chargeResponses","CAPITEC_PAY_PAYMENT_METHOD","CapitecPayCharge","validateIdentifier","_ref$identifierValue","trimmedIdentifierValue","authenticateCapitecPay","_ref2$identifierValue","requeryCapitecPay","listenForCapitecPayCharge","CardCharge","USSDCharge","QRCharge","mobile_money","MobileMoneyCharge","direct_debit","DirectDebitCharge","bank_transfer","PayWithTransferCharge","eft","EFTCharge","payattitude","PayattitudeCharge","apple_pay","ApplePayCharge","paypal","PayPalCharge","capitec_pay","isMobile_1","ua","AnalyticsUtils","attempts","authentication","history","start_time","round","time_spent","mobile","isMobile","startTime","$stringify","tester","low","fix","space","AnalyticsAPIUtils","merchantKey","referrer","AnalyticsAPI","logCapitecPayConfirmation","logHistoryEntry","time","getTimeSpent","logCapitecPayAccountIdentifierSwitch","logCapitecPayConfirmedPaymentApproval","logCapitecPayRetryConfirmation","initializeLog","historyEntry","saveLog","logPageOpen","logChannelSwitch","logValidationErrors","inputs","logInput","isUpdate","logBankSelect","logSavedCardSelect","logAuthWindowOpen","logAuthWindowClose","logSuccess","logPending","numberOfTokenRequests","logTokenSubmitted","logPageClose","logTransactionCurrencySwitch","_ref2$isUserAction","isUserAction","saveIpAddress","saveReferrer","setAmountByChannel","_this$channelFeesConf","channelFeesConfig","originalAmount","linkAPI","is_six_digit_otp","instrumentCode","account_name","accountName","country_code","countryCode","_callee6","_context6","_callee7","_context7","linkAnalytics","paymentInstrument","sendLinkOtp","verifyLinkOtp","getLinkPaymentInstruments","chargeLinkPaymentInstrument","_ref4$selectedCurrenc","instrumentType","generateLinkManagedAccount","getDirectDebitManagedAccount","listenForLinkBankPayWithTransferCharge","listenForBankPayWithTransferCharge","verifyLinkProfile","validateLinkCustomerBankAccount","TransactionInstance","merchant_id","logo","merchant_logo","merchant_name","merchant_key","channelSettings","merchant_channel_settings","transaction_status","access_code","isTest","cancel_action","channel_fees_and_amount","channel_options","authorizations","rememberMeEnabled","is_remember_me_enabled","customer","custom_filters","isCharging","planDetails","plan_details","exchangeRate","exchange_rate","savedCardsConfig","saved_cards","supportedBanks","supported_banks","isWhiteLabeled","whitelabel","linkConfig","link_config","AnalyticsFunctions","chargeFunctions","ChargeFunctions","enabled","linkChargeFunctions","elevy_percentage","elevyPercentage","uuid","Transaction","validationErrors","fieldValue","ValidateTransactionParameters","_slicedToArray","transactionData","requestWithAccessCode","getByAccessCode","initialize","resolvedCardBins","ToolkitAPI","ipAddress","Toolkit","usage","contents","pay_with_bank","preauthorizationId","preauthorization","reserveFunds","_ref$customFields","PreauthorizationAPI","PreauthorizationAnalyticsAPI","preauthorizationReference","logAuthorized","PreauthorizationInstance","_data$customer","CardPreauthorization","Preauthorization"],"mappings":"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"}