@launchdarkly/akamai-server-base-sdk 1.0.2 → 1.0.3

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 +1 @@
1
- {"version":3,"file":"bundle.cjs.js","sources":["../../../../shared/sdk-server/dist/BigSegmentStatusProviderImpl.js","../../../../shared/common/dist/AttributeReference.js","../../../../shared/common/dist/validators.js","../../../../shared/common/dist/Context.js","../../../../shared/common/dist/ContextFilter.js","../../../../shared/common/dist/api/context/LDContextCommon.js","../../../../shared/common/dist/api/context/LDContextMeta.js","../../../../shared/common/dist/api/context/LDMultiKindContext.js","../../../../shared/common/dist/api/context/LDSingleKindContext.js","../../../../shared/common/dist/api/context/LDUser.js","../../../../shared/common/dist/api/context/LDContext.js","../../../../shared/common/dist/api/context/index.js","../../../../shared/common/dist/api/logging/BasicLoggerOptions.js","../../../../shared/common/dist/api/logging/LDLogger.js","../../../../shared/common/dist/api/logging/LDLogLevel.js","../../../../shared/common/dist/api/logging/index.js","../../../../shared/common/dist/api/data/LDEvaluationDetail.js","../../../../shared/common/dist/api/data/LDEvaluationReason.js","../../../../shared/common/dist/api/data/LDFlagSet.js","../../../../shared/common/dist/api/data/LDFlagValue.js","../../../../shared/common/dist/api/data/index.js","../../../../shared/common/dist/api/options/index.js","../../../../shared/common/dist/api/platform/Crypto.js","../../../../shared/common/dist/api/platform/Filesystem.js","../../../../shared/common/dist/api/platform/Info.js","../../../../shared/common/dist/api/platform/Platform.js","../../../../shared/common/dist/api/platform/Requests.js","../../../../shared/common/dist/api/platform/EventSource.js","../../../../shared/common/dist/api/platform/index.js","../../../../shared/common/dist/api/subsystem/LDEventSender.js","../../../../shared/common/dist/api/subsystem/index.js","../../../../shared/common/dist/api/index.js","../../../../shared/common/dist/logging/format.js","../../../../shared/common/dist/logging/BasicLogger.js","../../../../shared/common/dist/logging/SafeLogger.js","../../../../shared/common/dist/logging/index.js","../../../../shared/common/dist/options/OptionMessages.js","../../../../shared/common/dist/options/ApplicationTags.js","../../../../shared/common/dist/options/ClientContext.js","../../../../shared/common/dist/options/ServiceEndpoints.js","../../../../shared/common/dist/options/index.js","../../../../shared/common/dist/utils/noop.js","../../../../shared/common/dist/utils/index.js","../../../../shared/common/dist/internal/events/guards.js","../../../../shared/common/dist/internal/events/SummaryCounter.js","../../../../shared/common/dist/internal/events/EventSummarizer.js","../../../../shared/common/dist/internal/events/LDInvalidSDKKeyError.js","../../../../shared/common/dist/internal/events/EventProcessor.js","../../../../shared/common/dist/internal/events/InputCustomEvent.js","../../../../shared/common/dist/internal/events/InputEvalEvent.js","../../../../shared/common/dist/internal/events/InputIdentifyEvent.js","../../../../shared/common/dist/internal/events/index.js","../../../../shared/common/dist/internal/index.js","../../../../shared/common/dist/index.js","../../../../shared/sdk-server/dist/cache/LruCache.js","../../../../shared/sdk-server/dist/BigSegmentsManager.js","../../../../shared/sdk-server/dist/ClientMessages.js","../../../../shared/sdk-server/dist/store/VersionedDataKinds.js","../../../../shared/sdk-server/dist/data_sources/NamespacedDataSet.js","../../../../shared/sdk-server/dist/data_sources/DependencyTracker.js","../../../../shared/sdk-server/dist/data_sources/DataSourceUpdates.js","../../../../shared/sdk-server/dist/data_sources/NullUpdateProcessor.js","../../../../shared/sdk-server/dist/errors.js","../../../../shared/sdk-server/dist/store/serialization.js","../../../../shared/sdk-server/dist/data_sources/httpErrorMessage.js","../../../../shared/sdk-server/dist/data_sources/PollingProcessor.js","../../../../shared/sdk-server/dist/data_sources/defaultHeaders.js","../../../../shared/sdk-server/dist/data_sources/Requestor.js","../../../../shared/sdk-server/dist/data_sources/StreamingProcessor.js","../../../../shared/sdk-server/dist/evaluation/collection.js","../../../../shared/sdk-server/dist/evaluation/ErrorKinds.js","../../../../shared/sdk-server/dist/evaluation/Reasons.js","../../../../shared/sdk-server/dist/evaluation/EvalResult.js","../../../../shared/sdk-server/dist/evaluation/Bucketer.js","../../../../shared/sdk-server/dist/evaluation/variations.js","../../../../shared/sdk-server/dist/evaluation/evalTargets.js","../../../../shared/sdk-server/dist/evaluation/makeBigSegmentRef.js","../../../../../node_modules/semver/internal/constants.js","../../../../../node_modules/semver/internal/debug.js","../../../../../node_modules/semver/internal/re.js","../../../../../node_modules/semver/internal/parse-options.js","../../../../../node_modules/semver/internal/identifiers.js","../../../../../node_modules/semver/classes/semver.js","../../../../../node_modules/semver/functions/parse.js","../../../../../node_modules/semver/functions/valid.js","../../../../../node_modules/semver/functions/clean.js","../../../../../node_modules/semver/functions/inc.js","../../../../../node_modules/semver/functions/diff.js","../../../../../node_modules/semver/functions/major.js","../../../../../node_modules/semver/functions/minor.js","../../../../../node_modules/semver/functions/patch.js","../../../../../node_modules/semver/functions/prerelease.js","../../../../../node_modules/semver/functions/compare.js","../../../../../node_modules/semver/functions/rcompare.js","../../../../../node_modules/semver/functions/compare-loose.js","../../../../../node_modules/semver/functions/compare-build.js","../../../../../node_modules/semver/functions/sort.js","../../../../../node_modules/semver/functions/rsort.js","../../../../../node_modules/semver/functions/gt.js","../../../../../node_modules/semver/functions/lt.js","../../../../../node_modules/semver/functions/eq.js","../../../../../node_modules/semver/functions/neq.js","../../../../../node_modules/semver/functions/gte.js","../../../../../node_modules/semver/functions/lte.js","../../../../../node_modules/semver/functions/cmp.js","../../../../../node_modules/semver/functions/coerce.js","../../../../../node_modules/yallist/yallist.js","../../../../../node_modules/yallist/iterator.js","../../../../../node_modules/semver/classes/range.js","../../../../../node_modules/semver/node_modules/lru-cache/index.js","../../../../../node_modules/semver/classes/comparator.js","../../../../../node_modules/semver/functions/satisfies.js","../../../../../node_modules/semver/ranges/to-comparators.js","../../../../../node_modules/semver/ranges/max-satisfying.js","../../../../../node_modules/semver/ranges/min-satisfying.js","../../../../../node_modules/semver/ranges/min-version.js","../../../../../node_modules/semver/ranges/valid.js","../../../../../node_modules/semver/ranges/outside.js","../../../../../node_modules/semver/ranges/gtr.js","../../../../../node_modules/semver/ranges/ltr.js","../../../../../node_modules/semver/ranges/intersects.js","../../../../../node_modules/semver/ranges/simplify.js","../../../../../node_modules/semver/ranges/subset.js","../../../../../node_modules/semver/index.js","../../../../shared/sdk-server/dist/evaluation/Operations.js","../../../../shared/sdk-server/dist/evaluation/matchClause.js","../../../../shared/sdk-server/dist/evaluation/matchSegmentTargets.js","../../../../shared/sdk-server/dist/evaluation/Evaluator.js","../../../../shared/sdk-server/dist/events/ContextDeduplicator.js","../../../../shared/sdk-server/dist/store/InMemoryFeatureStore.js","../../../../shared/sdk-server/dist/options/Configuration.js","../../../../shared/sdk-server/dist/events/DiagnosticsManager.js","../../../../shared/sdk-server/dist/events/isExperiment.js","../../../../shared/sdk-server/dist/events/EventFactory.js","../../../../shared/sdk-server/dist/events/EventSender.js","../../../../shared/sdk-server/dist/events/NullEventProcessor.js","../../../../shared/sdk-server/dist/FlagsStateBuilder.js","../../../../shared/sdk-server/dist/async/promisify.js","../../../../shared/sdk-server/dist/store/AsyncStoreFacade.js","../../../../shared/sdk-server/dist/LDClientImpl.js","../../../../shared/sdk-server/dist/data_sources/FileLoader.js","../../../../shared/sdk-server/dist/data_sources/FileDataSource.js","../../../../shared/sdk-server/dist/integrations/FileDataSourceFactory.js","../../../../shared/sdk-server/dist/integrations/test_data/booleanVariation.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataRuleBuilder.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataFlagBuilder.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataSource.js","../../../../shared/sdk-server/dist/integrations/test_data/TestData.js","../../../../shared/sdk-server/dist/integrations/test_data/index.js","../../../../shared/sdk-server/dist/integrations/index.js","../../../../shared/sdk-server/dist/api/data/LDFlagsStateOptions.js","../../../../shared/sdk-server/dist/api/data/LDFlagsState.js","../../../../shared/sdk-server/dist/api/data/index.js","../../../../shared/sdk-server/dist/api/options/LDBigSegmentsOptions.js","../../../../shared/sdk-server/dist/api/options/LDOptions.js","../../../../shared/sdk-server/dist/api/options/LDProxyOptions.js","../../../../shared/sdk-server/dist/api/options/LDTLSOptions.js","../../../../shared/sdk-server/dist/api/options/index.js","../../../../shared/sdk-server/dist/api/LDClient.js","../../../../shared/sdk-server/dist/api/interfaces/DataKind.js","../../../../shared/sdk-server/dist/api/subsystems/LDFeatureStore.js","../../../../shared/sdk-server/dist/api/subsystems/LDStreamProcessor.js","../../../../shared/sdk-server/dist/api/integrations/FileDataSourceOptions.js","../../../../shared/sdk-server/dist/api/integrations/index.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStore.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreMembership.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreMetadata.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreStatus.js","../../../../shared/sdk-server/dist/api/interfaces/DataCollection.js","../../../../shared/sdk-server/dist/api/interfaces/FullDataSet.js","../../../../shared/sdk-server/dist/api/interfaces/KeyedItems.js","../../../../shared/sdk-server/dist/api/interfaces/VersionedData.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreStatusProvider.js","../../../../shared/sdk-server/dist/api/interfaces/persistent_store/index.js","../../../../shared/sdk-server/dist/api/interfaces/index.js","../../../../shared/sdk-server/dist/api/subsystems/LDFeatureRequestor.js","../../../../shared/sdk-server/dist/api/subsystems/LDDataSourceUpdates.js","../../../../shared/sdk-server/dist/api/subsystems/index.js","../../../../shared/sdk-server/dist/api/index.js","../../../../shared/sdk-server/dist/cache/TtlCache.js","../../../../shared/sdk-server/dist/store/persistentStoreKinds.js","../../../../shared/sdk-server/dist/store/sortDataSet.js","../../../../shared/sdk-server/dist/store/UpdateQueue.js","../../../../shared/sdk-server/dist/store/PersistentDataStoreWrapper.js","../../../../shared/sdk-server/dist/store/index.js","../../../../shared/sdk-server/dist/events/NullEventSource.js","../../../../shared/sdk-server/dist/events/index.js","../../../../shared/sdk-server/dist/index.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/createCallbacks.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/createOptions.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/validateOptions.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/index.js","../../../../shared/akamai-edgeworker-sdk/dist/api/LDClient.js","../../../../shared/akamai-edgeworker-sdk/dist/featureStore/index.js","../../../../shared/akamai-edgeworker-sdk/dist/featureStore/cacheableStoreProvider.js","../../../../../node_modules/crypto-js/core.js","../../../../../node_modules/crypto-js/x64-core.js","../../../../../node_modules/crypto-js/lib-typedarrays.js","../../../../../node_modules/crypto-js/enc-utf16.js","../../../../../node_modules/crypto-js/enc-base64.js","../../../../../node_modules/crypto-js/enc-base64url.js","../../../../../node_modules/crypto-js/md5.js","../../../../../node_modules/crypto-js/sha1.js","../../../../../node_modules/crypto-js/sha256.js","../../../../../node_modules/crypto-js/sha512.js","../../../../../node_modules/crypto-js/sha3.js","../../../../../node_modules/crypto-js/hmac.js","../../../../../node_modules/crypto-js/evpkdf.js","../../../../../node_modules/crypto-js/cipher-core.js","../../../../../node_modules/crypto-js/mode-cfb.js","../../../../../node_modules/crypto-js/mode-ctr.js","../../../../../node_modules/crypto-js/mode-ctr-gladman.js","../../../../../node_modules/crypto-js/mode-ofb.js","../../../../../node_modules/crypto-js/tripledes.js","../../../../../node_modules/crypto-js/index.js","../../../../../node_modules/crypto-js/sha224.js","../../../../../node_modules/crypto-js/sha384.js","../../../../../node_modules/crypto-js/ripemd160.js","../../../../../node_modules/crypto-js/pbkdf2.js","../../../../../node_modules/crypto-js/mode-ecb.js","../../../../../node_modules/crypto-js/pad-ansix923.js","../../../../../node_modules/crypto-js/pad-iso10126.js","../../../../../node_modules/crypto-js/pad-iso97971.js","../../../../../node_modules/crypto-js/pad-zeropadding.js","../../../../../node_modules/crypto-js/pad-nopadding.js","../../../../../node_modules/crypto-js/format-hex.js","../../../../../node_modules/crypto-js/aes.js","../../../../../node_modules/crypto-js/rc4.js","../../../../../node_modules/crypto-js/rabbit.js","../../../../../node_modules/crypto-js/rabbit-legacy.js","../../../../../node_modules/crypto-js/enc-hex.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/cryptoJSHasher.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/cryptoJSHmac.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/index.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/requests.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/index.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/info/index.js","../../../../shared/akamai-edgeworker-sdk/dist/index.js","../../../src/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @ignore\n */\nclass BigSegmentStoreStatusProviderImpl {\n constructor(onRequestStatus) {\n this.onRequestStatus = onRequestStatus;\n }\n /**\n * Gets the current status of the store, if known.\n *\n * @returns a {@link BigSegmentStoreStatus}, or `undefined` if the SDK has not yet queried the\n * Big Segment store status\n */\n getStatus() {\n return this.lastStatus;\n }\n /**\n * Gets the current status of the store, querying it if the status has not already been queried.\n *\n * @returns a Promise for the status of the store\n */\n async requireStatus() {\n if (!this.lastStatus) {\n await this.onRequestStatus();\n }\n // Status will be defined at this point.\n return this.lastStatus;\n }\n notify() {\n var _a;\n if (this.lastStatus) {\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.call(this, this.lastStatus);\n }\n }\n setListener(listener) {\n this.listener = listener;\n }\n setStatus(status) {\n this.lastStatus = status;\n }\n}\nexports.default = BigSegmentStoreStatusProviderImpl;\n//# sourceMappingURL=BigSegmentStatusProviderImpl.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Converts a literal to a ref string.\n * @param value\n * @returns An escaped literal which can be used as a ref.\n */\nfunction toRefString(value) {\n return `/${value.replace(/~/g, '~0').replace(/\\//g, '~1')}`;\n}\n/**\n * Produce a literal from a ref component.\n * @param ref\n * @returns A literal version of the ref.\n */\nfunction unescape(ref) {\n return ref.indexOf('~') ? ref.replace(/~1/g, '/').replace(/~0/g, '~') : ref;\n}\nfunction getComponents(reference) {\n const referenceWithoutPrefix = reference.startsWith('/') ? reference.substring(1) : reference;\n return referenceWithoutPrefix.split('/').map((component) => unescape(component));\n}\nfunction isLiteral(reference) {\n return !reference.startsWith('/');\n}\nfunction validate(reference) {\n return !reference.match(/\\/\\/|(^\\/.*~[^0|^1])|~$/);\n}\nclass AttributeReference {\n /**\n * Take an attribute reference string, or literal string, and produce\n * an attribute reference.\n *\n * Legacy user objects would have been created with names not\n * references. So, in that case, we need to use them as a component\n * without escaping them.\n *\n * e.g. A user could contain a custom attribute of `/a` which would\n * become the literal `a` if treated as a reference. Which would cause\n * it to no longer be redacted.\n * @param refOrLiteral The attribute reference string or literal string.\n * @param literal it true the value should be treated as a literal.\n */\n constructor(refOrLiteral, literal = false) {\n if (!literal) {\n this.redactionName = refOrLiteral;\n if (refOrLiteral === '' || refOrLiteral === '/' || !validate(refOrLiteral)) {\n this.isValid = false;\n this.components = [];\n return;\n }\n if (isLiteral(refOrLiteral)) {\n this.components = [refOrLiteral];\n }\n else if (refOrLiteral.indexOf('/', 1) < 0) {\n this.components = [unescape(refOrLiteral.slice(1))];\n }\n else {\n this.components = getComponents(refOrLiteral);\n }\n // The items inside of '_meta' are not intended to be addressable.\n // Excluding it as a valid reference means that we can make it non-addressable\n // without having to copy all the attributes out of the context object\n // provided by the user.\n if (this.components[0] === '_meta') {\n this.isValid = false;\n }\n else {\n this.isValid = true;\n }\n }\n else {\n const literalVal = refOrLiteral;\n this.components = [literalVal];\n this.isValid = literalVal !== '';\n // Literals which start with '/' need escaped to prevent ambiguity.\n this.redactionName = literalVal.startsWith('/') ? toRefString(literalVal) : literalVal;\n }\n }\n get(target) {\n const { components, isValid } = this;\n if (!isValid) {\n return undefined;\n }\n let current = target;\n // This doesn't use a range based for loops, because those use generators.\n // See `no-restricted-syntax`.\n // It also doesn't use a collection method because this logic is more\n // straightforward with a loop.\n for (let index = 0; index < components.length; index += 1) {\n const component = components[index];\n if (current !== null &&\n current !== undefined &&\n // See https://eslint.org/docs/rules/no-prototype-builtins\n Object.prototype.hasOwnProperty.call(current, component) &&\n typeof current === 'object' &&\n // We do not want to allow indexing into an array.\n !Array.isArray(current)) {\n current = current[component];\n }\n else {\n return undefined;\n }\n }\n return current;\n }\n getComponent(depth) {\n return this.components[depth];\n }\n get depth() {\n return this.components.length;\n }\n get isKind() {\n return this.components.length === 1 && this.components[0] === 'kind';\n }\n compare(other) {\n return (this.depth === other.depth &&\n this.components.every((value, index) => value === other.getComponent(index)));\n }\n}\n/**\n * For use as invalid references when deserializing Flag/Segment data.\n */\nAttributeReference.invalidReference = new AttributeReference('');\nexports.default = AttributeReference;\n//# sourceMappingURL=AttributeReference.js.map","\"use strict\";\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeValidators = exports.DateValidator = exports.Function = exports.StringMatchingRegex = exports.NumberWithMinimum = exports.TypeArray = exports.Type = exports.FactoryOrInstance = void 0;\n/**\n * Validate a factory or instance.\n */\nclass FactoryOrInstance {\n is(factoryOrInstance) {\n if (Array.isArray(factoryOrInstance)) {\n return false;\n }\n const anyFactory = factoryOrInstance;\n const typeOfFactory = typeof anyFactory;\n return typeOfFactory === 'function' || typeOfFactory === 'object';\n }\n getType() {\n return 'factory method or object';\n }\n}\nexports.FactoryOrInstance = FactoryOrInstance;\n/**\n * Validate a basic type.\n */\nclass Type {\n constructor(typeName, example) {\n this.typeName = typeName;\n this.typeOf = typeof example;\n }\n is(u) {\n if (Array.isArray(u)) {\n return false;\n }\n return typeof u === this.typeOf;\n }\n getType() {\n return this.typeName;\n }\n}\nexports.Type = Type;\n/**\n * Validate an array of the specified type.\n *\n * This does not validate instances of types. All class instances\n * of classes will simply objects.\n */\nclass TypeArray {\n constructor(typeName, example) {\n this.typeName = typeName;\n this.typeOf = typeof example;\n }\n is(u) {\n if (Array.isArray(u)) {\n if (u.length > 0) {\n return u.every((val) => typeof val === this.typeOf);\n }\n return true;\n }\n return false;\n }\n getType() {\n return this.typeName;\n }\n}\nexports.TypeArray = TypeArray;\n/**\n * Validate a value is a number and is greater or eval than a minimum.\n */\nclass NumberWithMinimum extends Type {\n constructor(min) {\n super(`number with minimum value of ${min}`, 0);\n this.min = min;\n }\n is(u) {\n return typeof u === this.typeOf && u >= this.min;\n }\n}\nexports.NumberWithMinimum = NumberWithMinimum;\n/**\n * Validate a value is a string and it matches the given expression.\n */\nclass StringMatchingRegex extends Type {\n constructor(expression) {\n super(`string matching ${expression}`, '');\n this.expression = expression;\n }\n is(u) {\n return !!u.match(this.expression);\n }\n}\nexports.StringMatchingRegex = StringMatchingRegex;\n/**\n * Validate a value is a function.\n */\nclass Function {\n is(u) {\n // We cannot inspect the parameters and there isn't really\n // a generic function type we can instantiate.\n // So the type guard is here just to make TS comfortable\n // calling something after using this guard.\n return typeof u === 'function';\n }\n getType() {\n return 'function';\n }\n}\nexports.Function = Function;\n// Our reference SDK, Go, parses date/time strings with the time.RFC3339Nano format.\n// This regex should match strings that are valid in that format, and no others.\n// Acceptable:\n// 2019-10-31T23:59:59Z, 2019-10-31T23:59:59.100Z,\n// 2019-10-31T23:59:59-07, 2019-10-31T23:59:59-07:00, etc.\n// Unacceptable: no \"T\", no time zone designation\nconst DATE_REGEX = /^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d*)?(Z|[-+]\\d\\d(:\\d\\d)?)/;\n/**\n * Validate a value is a date. Values which are numbers are treated as dates and any string\n * which if compliant with `time.RFC3339Nano` is a date.\n */\nclass DateValidator {\n is(u) {\n return typeof u === 'number' || (typeof u === 'string' && DATE_REGEX.test(u));\n }\n getType() {\n return 'date';\n }\n}\nexports.DateValidator = DateValidator;\n/**\n * A set of standard type validators.\n */\nclass TypeValidators {\n static numberWithMin(min) {\n return new NumberWithMinimum(min);\n }\n static stringMatchingRegex(expression) {\n return new StringMatchingRegex(expression);\n }\n}\nexports.TypeValidators = TypeValidators;\nTypeValidators.String = new Type('string', '');\nTypeValidators.Number = new Type('number', 0);\nTypeValidators.ObjectOrFactory = new FactoryOrInstance();\nTypeValidators.Object = new Type('object', {});\nTypeValidators.StringArray = new TypeArray('string[]', '');\nTypeValidators.Boolean = new Type('boolean', true);\nTypeValidators.Function = new Function();\nTypeValidators.Date = new DateValidator();\n//# sourceMappingURL=validators.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AttributeReference_1 = require(\"./AttributeReference\");\nconst validators_1 = require(\"./validators\");\n// The general strategy for the context is to transform the passed in context\n// as little as possible. We do convert the legacy users to a single kind\n// context, but we do not translate all passed contexts into a rigid structure.\n// The context will have to be copied for events, but we want to avoid any\n// copying that we can.\n// So we validate that the information we are given is correct, and then we\n// just proxy calls with a nicely typed interface.\n// This is to reduce work on the hot-path. Later, for event processing, deeper\n// cloning of the context will be done.\n// Validates a kind excluding check that it isn't \"kind\".\nconst KindValidator = validators_1.TypeValidators.stringMatchingRegex(/^(\\w|\\.|-)+$/);\n// When no kind is specified, then this kind will be used.\nconst DEFAULT_KIND = 'user';\n// The API allows for calling with an `LDContext` which is\n// `LDUser | LDSingleKindContext | LDMultiKindContext`. When ingesting a context\n// first the type must be determined to allow us to put it into a consistent type.\n/**\n * The partial URL encoding is needed because : is a valid character in context keys.\n *\n * Partial encoding is the replacement of all colon (:) characters with the URL\n * encoded equivalent (%3A) and all percent (%) characters with the URL encoded\n * equivalent (%25).\n * @param key The key to encode.\n * @returns Partially URL encoded key.\n */\nfunction encodeKey(key) {\n if (key.includes('%') || key.includes(':')) {\n return key.replace(/%/g, '%25').replace(/:/g, '%3A');\n }\n return key;\n}\n/**\n * Check if a context is a single kind context.\n * @param context\n * @returns true if the context is a single kind context.\n */\nfunction isSingleKind(context) {\n if ('kind' in context) {\n return validators_1.TypeValidators.String.is(context.kind) && context.kind !== 'multi';\n }\n return false;\n}\n/**\n * Check if a context is a multi-kind context.\n * @param context\n * @returns true if it is a multi-kind context.\n */\nfunction isMultiKind(context) {\n if ('kind' in context) {\n return validators_1.TypeValidators.String.is(context.kind) && context.kind === 'multi';\n }\n return false;\n}\n/**\n * Check if a context is a legacy user context.\n * @param context\n * @returns true if it is a legacy user context.\n */\nfunction isLegacyUser(context) {\n return !('kind' in context) || context.kind === null || context.kind === undefined;\n}\n/**\n * Check if the given value is a LDContextCommon.\n * @param kindOrContext\n * @returns true if it is an LDContextCommon\n *\n * Due to a limitation in the expressiveness of these highly polymorphic types any field\n * in a multi-kind context can either be a context or 'kind'. So we need to re-assure\n * the compiler that it isn't the word multi.\n *\n * Because we do not allow top level values in a multi-kind context we can validate\n * that as well.\n */\nfunction isContextCommon(kindOrContext) {\n return kindOrContext && validators_1.TypeValidators.Object.is(kindOrContext);\n}\n/**\n * Validate a context kind.\n * @param kind\n * @returns true if the kind is valid.\n */\nfunction validKind(kind) {\n return KindValidator.is(kind) && kind !== 'kind';\n}\n/**\n * Validate a context key.\n * @param key\n * @returns true if the key is valid.\n */\nfunction validKey(key) {\n return validators_1.TypeValidators.String.is(key) && key !== '';\n}\nfunction processPrivateAttributes(privateAttributes, literals = false) {\n if (privateAttributes) {\n return privateAttributes.map((privateAttribute) => new AttributeReference_1.default(privateAttribute, literals));\n }\n return [];\n}\nfunction defined(value) {\n return value !== null && value !== undefined;\n}\n/**\n * Convert a legacy user to a single kind context.\n * @param user\n * @returns A single kind context.\n */\nfunction legacyToSingleKind(user) {\n const singleKindContext = Object.assign(Object.assign({}, (user.custom || [])), { kind: 'user', key: String(user.key) });\n // For legacy users we never established a difference between null\n // and undefined for inputs. Because anonymous can be used in evaluations\n // we would want it to not possibly match true/false unless defined.\n // Which is different than coercing a null/undefined anonymous as `false`.\n if (defined(user.anonymous)) {\n const anonymous = !!user.anonymous;\n delete singleKindContext.anonymous;\n singleKindContext.anonymous = anonymous;\n }\n if (user.name !== null && user.name !== undefined) {\n singleKindContext.name = user.name;\n }\n if (user.ip !== null && user.ip !== undefined) {\n singleKindContext.ip = user.ip;\n }\n if (user.firstName !== null && user.firstName !== undefined) {\n singleKindContext.firstName = user.firstName;\n }\n if (user.lastName !== null && user.lastName !== undefined) {\n singleKindContext.lastName = user.lastName;\n }\n if (user.email !== null && user.email !== undefined) {\n singleKindContext.email = user.email;\n }\n if (user.avatar !== null && user.avatar !== undefined) {\n singleKindContext.avatar = user.avatar;\n }\n if (user.country !== null && user.country !== undefined) {\n singleKindContext.country = user.country;\n }\n // We are not pulling private attributes over because we will serialize\n // those from attribute references for events.\n return singleKindContext;\n}\n/**\n * Container for a context/contexts. Because contexts come from external code\n * they must be thoroughly validated and then formed to comply with\n * the type system.\n */\nclass Context {\n /**\n * Contexts should be created using the static factory method {@link Context.fromLDContext}.\n * @param kind The kind of the context.\n *\n * The factory methods are static functions within the class because they access private\n * implementation details, so they cannot be free functions.\n */\n constructor(valid, kind, message) {\n this.isMulti = false;\n this.isUser = false;\n this.wasLegacy = false;\n this.contexts = {};\n this.kind = kind;\n this.valid = valid;\n this.message = message;\n }\n static contextForError(kind, message) {\n return new Context(false, kind, message);\n }\n static getValueFromContext(reference, context) {\n if (!context || !reference.isValid) {\n return undefined;\n }\n if (reference.depth === 1 && reference.getComponent(0) === 'anonymous') {\n return !!(context === null || context === void 0 ? void 0 : context.anonymous);\n }\n return reference.get(context);\n }\n contextForKind(kind) {\n if (this.isMulti) {\n return this.contexts[kind];\n }\n if (this.kind === kind) {\n return this.context;\n }\n return undefined;\n }\n static fromMultiKindContext(context) {\n const kinds = Object.keys(context).filter((key) => key !== 'kind');\n const kindsValid = kinds.every(validKind);\n if (!kinds.length) {\n return Context.contextForError('multi', 'A multi-kind context must contain at least one kind');\n }\n if (!kindsValid) {\n return Context.contextForError('multi', 'Context contains invalid kinds');\n }\n const privateAttributes = {};\n let contextsAreObjects = true;\n const contexts = kinds.reduce((acc, kind) => {\n var _a;\n const singleContext = context[kind];\n if (isContextCommon(singleContext)) {\n acc[kind] = singleContext;\n privateAttributes[kind] = processPrivateAttributes((_a = singleContext._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);\n }\n else {\n // No early break isn't the most efficient, but it is an error condition.\n contextsAreObjects = false;\n }\n return acc;\n }, {});\n if (!contextsAreObjects) {\n return Context.contextForError('multi', 'Context contained contexts that were not objects');\n }\n if (!Object.values(contexts).every((part) => validKey(part.key))) {\n return Context.contextForError('multi', 'Context contained invalid keys');\n }\n // There was only a single kind in the multi-kind context.\n // So we can just translate this to a single-kind context.\n if (kinds.length === 1) {\n const kind = kinds[0];\n const created = new Context(true, kind);\n created.context = contexts[kind];\n created.privateAttributeReferences = privateAttributes;\n created.isUser = kind === 'user';\n return created;\n }\n const created = new Context(true, context.kind);\n created.contexts = contexts;\n created.privateAttributeReferences = privateAttributes;\n created.isMulti = true;\n return created;\n }\n static fromSingleKindContext(context) {\n var _a;\n const { key, kind } = context;\n const kindValid = validKind(kind);\n const keyValid = validKey(key);\n if (!kindValid) {\n return Context.contextForError(kind !== null && kind !== void 0 ? kind : 'unknown', 'The kind was not valid for the context');\n }\n if (!keyValid) {\n return Context.contextForError(kind, 'The key for the context was not valid');\n }\n // The JSON interfaces uses dangling _.\n // eslint-disable-next-line no-underscore-dangle\n const privateAttributeReferences = processPrivateAttributes((_a = context._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);\n const created = new Context(true, kind);\n created.isUser = kind === 'user';\n created.context = context;\n created.privateAttributeReferences = {\n [kind]: privateAttributeReferences,\n };\n return created;\n }\n static fromLegacyUser(context) {\n const keyValid = context.key !== undefined && context.key !== null;\n // For legacy users we allow empty keys.\n if (!keyValid) {\n return Context.contextForError('user', 'The key for the context was not valid');\n }\n const created = new Context(true, 'user');\n created.isUser = true;\n created.wasLegacy = true;\n created.context = legacyToSingleKind(context);\n created.privateAttributeReferences = {\n user: processPrivateAttributes(context.privateAttributeNames, true),\n };\n return created;\n }\n /**\n * Attempt to create a {@link Context} from an {@link LDContext}.\n * @param context The input context to create a Context from.\n * @returns a {@link Context}, if the context was not valid, then the returned contexts `valid`\n * property will be false.\n */\n static fromLDContext(context) {\n if (!context) {\n return Context.contextForError('unknown', 'No context specified. Returning default value');\n }\n if (isSingleKind(context)) {\n return Context.fromSingleKindContext(context);\n }\n if (isMultiKind(context)) {\n return Context.fromMultiKindContext(context);\n }\n if (isLegacyUser(context)) {\n return Context.fromLegacyUser(context);\n }\n return Context.contextForError('unknown', 'Context was not of a valid kind');\n }\n /**\n * Attempt to get a value for the given context kind using the given reference.\n * @param reference The reference to the value to get.\n * @param kind The kind of the context to get the value for.\n * @returns a value or `undefined` if one is not found.\n */\n valueForKind(reference, kind = DEFAULT_KIND) {\n if (reference.isKind) {\n return this.kinds;\n }\n return Context.getValueFromContext(reference, this.contextForKind(kind));\n }\n /**\n * Attempt to get a key for the specified kind.\n * @param kind The kind to get a key for.\n * @returns The key for the specified kind, or undefined.\n */\n key(kind = DEFAULT_KIND) {\n var _a;\n return (_a = this.contextForKind(kind)) === null || _a === void 0 ? void 0 : _a.key;\n }\n /**\n * True if this is a multi-kind context.\n */\n get isMultiKind() {\n return this.isMulti;\n }\n /**\n * Get the canonical key for this context.\n */\n get canonicalKey() {\n if (this.isUser) {\n return this.context.key;\n }\n if (this.isMulti) {\n return Object.keys(this.contexts)\n .sort()\n .map((key) => `${key}:${encodeKey(this.contexts[key].key)}`)\n .join(':');\n }\n return `${this.kind}:${encodeKey(this.context.key)}`;\n }\n /**\n * Get the kinds of this context.\n */\n get kinds() {\n if (this.isMulti) {\n return Object.keys(this.contexts);\n }\n return [this.kind];\n }\n /**\n * Get the kinds, and their keys, for this context.\n */\n get kindsAndKeys() {\n if (this.isMulti) {\n return Object.entries(this.contexts).reduce((acc, [kind, context]) => {\n acc[kind] = context.key;\n return acc;\n }, {});\n }\n return { [this.kind]: this.context.key };\n }\n /**\n * Get the attribute references.\n *\n * @param kind\n */\n privateAttributes(kind) {\n var _a;\n return ((_a = this.privateAttributeReferences) === null || _a === void 0 ? void 0 : _a[kind]) || [];\n }\n /**\n * Get the underlying context objects from this context.\n *\n * This method is intended to be used in event generation.\n *\n * The returned objects should not be modified.\n */\n getContexts() {\n if (this.isMulti) {\n return Object.entries(this.contexts);\n }\n return [[this.kind, this.context]];\n }\n get legacy() {\n return this.wasLegacy;\n }\n}\nContext.userKind = DEFAULT_KIND;\nexports.default = Context;\n//# sourceMappingURL=Context.js.map","\"use strict\";\n// _meta is part of the specification.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AttributeReference_1 = require(\"./AttributeReference\");\n// These attributes cannot be removed via a private attribute.\nconst protectedAttributes = ['key', 'kind', '_meta', 'anonymous'].map((str) => new AttributeReference_1.default(str, true));\n// Attributes that should be stringified for legacy users.\nconst legacyTopLevelCopyAttributes = [\n 'name',\n 'ip',\n 'firstName',\n 'lastName',\n 'email',\n 'avatar',\n 'country',\n];\nfunction compare(a, b) {\n return a.depth === b.length && b.every((value, index) => value === a.getComponent(index));\n}\nfunction cloneWithRedactions(target, references) {\n const stack = [];\n const cloned = {};\n const excluded = [];\n stack.push(...Object.keys(target).map((key) => ({\n key,\n ptr: [key],\n source: target,\n parent: cloned,\n visited: [target],\n })));\n while (stack.length) {\n const item = stack.pop();\n const redactRef = references.find((ref) => compare(ref, item.ptr));\n if (!redactRef) {\n const value = item.source[item.key];\n // Handle null because it overlaps with object, which we will want to handle later.\n if (value === null) {\n item.parent[item.key] = value;\n }\n else if (Array.isArray(value)) {\n item.parent[item.key] = [...value];\n }\n else if (typeof value === 'object') {\n // Arrays and null must already be handled.\n // Prevent cycles by not visiting the same object\n // with in the same branch. Different branches\n // may contain the same object.\n //\n // Same object visited twice in different branches.\n // A -> B -> D\n // -> C -> D\n // This is fine, which is why it doesn't just check if the object\n // was visited ever.\n if (!item.visited.includes(value)) {\n item.parent[item.key] = {};\n stack.push(...Object.keys(value).map((key) => ({\n key,\n ptr: [...item.ptr, key],\n source: value,\n parent: item.parent[item.key],\n visited: [...item.visited, value],\n })));\n }\n }\n else {\n item.parent[item.key] = value;\n }\n }\n else {\n excluded.push(redactRef.redactionName);\n }\n }\n return { cloned, excluded: excluded.sort() };\n}\nclass ContextFilter {\n constructor(allAttributesPrivate, privateAttributes) {\n this.allAttributesPrivate = allAttributesPrivate;\n this.privateAttributes = privateAttributes;\n }\n filter(context) {\n const contexts = context.getContexts();\n if (contexts.length === 1) {\n return this.filterSingleKind(context, contexts[0][1], contexts[0][0]);\n }\n const filteredMulti = {\n kind: 'multi',\n };\n contexts.forEach(([kind, single]) => {\n filteredMulti[kind] = this.filterSingleKind(context, single, kind);\n });\n return filteredMulti;\n }\n getAttributesToFilter(context, single, kind) {\n return (this.allAttributesPrivate\n ? Object.keys(single).map((k) => new AttributeReference_1.default(k, true))\n : [...this.privateAttributes, ...context.privateAttributes(kind)]).filter((attr) => !protectedAttributes.some((protectedAttr) => protectedAttr.compare(attr)));\n }\n filterSingleKind(context, single, kind) {\n const { cloned, excluded } = cloneWithRedactions(single, this.getAttributesToFilter(context, single, kind));\n if (context.legacy) {\n legacyTopLevelCopyAttributes.forEach((name) => {\n if (name in cloned) {\n cloned[name] = String(cloned[name]);\n }\n });\n }\n if (excluded.length) {\n if (!cloned._meta) {\n cloned._meta = {};\n }\n cloned._meta.redactedAttributes = excluded;\n }\n if (cloned._meta) {\n delete cloned._meta.privateAttributes;\n if (Object.keys(cloned._meta).length === 0) {\n delete cloned._meta;\n }\n }\n return cloned;\n }\n}\nexports.default = ContextFilter;\n//# sourceMappingURL=ContextFilter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContextCommon.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContextMeta.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDMultiKindContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDSingleKindContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDUser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDContextCommon\"), exports);\n__exportStar(require(\"./LDContextMeta\"), exports);\n__exportStar(require(\"./LDMultiKindContext\"), exports);\n__exportStar(require(\"./LDSingleKindContext\"), exports);\n__exportStar(require(\"./LDUser\"), exports);\n__exportStar(require(\"./LDContext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BasicLoggerOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDLogLevel.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BasicLoggerOptions\"), exports);\n__exportStar(require(\"./LDLogger\"), exports);\n__exportStar(require(\"./LDLogLevel\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDEvaluationDetail.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDEvaluationReason.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagValue.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDEvaluationDetail\"), exports);\n__exportStar(require(\"./LDEvaluationReason\"), exports);\n__exportStar(require(\"./LDFlagSet\"), exports);\n__exportStar(require(\"./LDFlagValue\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Lint issue is because there is 1 item currently. We do not want to default export it.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Crypto.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Filesystem.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Info.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Platform.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Requests.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=EventSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Crypto\"), exports);\n__exportStar(require(\"./Filesystem\"), exports);\n__exportStar(require(\"./Info\"), exports);\n__exportStar(require(\"./Platform\"), exports);\n__exportStar(require(\"./Requests\"), exports);\n__exportStar(require(\"./EventSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LDDeliveryStatus = exports.LDEventType = void 0;\nvar LDEventType;\n(function (LDEventType) {\n LDEventType[LDEventType[\"AnalyticsEvents\"] = 0] = \"AnalyticsEvents\";\n LDEventType[LDEventType[\"DiagnosticEvent\"] = 1] = \"DiagnosticEvent\";\n})(LDEventType || (exports.LDEventType = LDEventType = {}));\nvar LDDeliveryStatus;\n(function (LDDeliveryStatus) {\n LDDeliveryStatus[LDDeliveryStatus[\"Succeeded\"] = 0] = \"Succeeded\";\n LDDeliveryStatus[LDDeliveryStatus[\"Failed\"] = 1] = \"Failed\";\n LDDeliveryStatus[LDDeliveryStatus[\"FailedAndMustShutDown\"] = 2] = \"FailedAndMustShutDown\";\n})(LDDeliveryStatus || (exports.LDDeliveryStatus = LDDeliveryStatus = {}));\n//# sourceMappingURL=LDEventSender.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LDEventType = exports.LDDeliveryStatus = void 0;\nconst LDEventSender_1 = require(\"./LDEventSender\");\nObject.defineProperty(exports, \"LDDeliveryStatus\", { enumerable: true, get: function () { return LDEventSender_1.LDDeliveryStatus; } });\nObject.defineProperty(exports, \"LDEventType\", { enumerable: true, get: function () { return LDEventSender_1.LDEventType; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subsystem = void 0;\n__exportStar(require(\"./context\"), exports);\n__exportStar(require(\"./logging\"), exports);\n__exportStar(require(\"./data\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./platform\"), exports);\nexports.subsystem = require(\"./subsystem\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\n/**\n * Attempt to produce a string representation of a value.\n * The format should be roughly comparable to `util.format`\n * aside from object which will be JSON versus the `util.inspect`\n * format.\n * @param val\n * @returns A string representation of the value if possible.\n */\nfunction tryStringify(val) {\n if (typeof val === 'string') {\n return val;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (Object.prototype.hasOwnProperty.call(val, 'toString')) {\n try {\n return val.toString();\n }\n catch (_a) {\n /* Keep going */\n }\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n try {\n return JSON.stringify(val);\n }\n catch (error) {\n if (error instanceof TypeError && error.message.indexOf('circular') >= 0) {\n return '[Circular]';\n }\n return '[Not Stringifiable]';\n }\n}\n/**\n * Attempt to produce a numeric representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The numeric representation or 'NaN' if not numeric.\n */\nfunction toNumber(val) {\n // Symbol has to be treated special because it will\n // throw an exception if an attempt is made to convert it.\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n return String(Number(val));\n}\n/**\n * Attempt to produce an integer representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The integer representation or 'NaN' if not numeric.\n */\nfunction toInt(val) {\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n return String(parseInt(val, 10));\n}\n/**\n * Attempt to produce a float representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The integer representation or 'NaN' if not numeric.\n */\nfunction toFloat(val) {\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n return String(parseFloat(val));\n}\n// Based on:\n// https://nodejs.org/api/util.html#utilformatformat-args\n// The result will not match node exactly, but it should get the\n// right information through.\nconst escapes = {\n s: (val) => tryStringify(val),\n d: (val) => toNumber(val),\n i: (val) => toInt(val),\n f: (val) => toFloat(val),\n j: (val) => tryStringify(val),\n o: (val) => tryStringify(val),\n O: (val) => tryStringify(val),\n c: () => '',\n};\n/**\n * A basic formatted for use where `util.format` is not available.\n * This will not be as performant, but it will produce formatted\n * messages.\n *\n * @internal\n *\n * @param args\n * @returns Formatted string.\n */\nfunction format(...args) {\n var _a;\n const formatString = args.shift();\n if (validators_1.TypeValidators.String.is(formatString)) {\n let out = '';\n let i = 0;\n while (i < formatString.length) {\n const char = formatString.charAt(i);\n if (char === '%') {\n const nextIndex = i + 1;\n if (nextIndex < formatString.length) {\n const nextChar = formatString.charAt(i + 1);\n if (nextChar in escapes && args.length) {\n const value = args.shift();\n // This rule is for math.\n // eslint-disable-next-line no-unsafe-optional-chaining\n out += (_a = escapes[nextChar]) === null || _a === void 0 ? void 0 : _a.call(escapes, value);\n }\n else if (nextChar === '%') {\n out += '%';\n }\n else {\n out += `%${nextChar}`;\n }\n i += 2;\n }\n }\n else {\n out += char;\n i += 1;\n }\n }\n // If there are any args left after we exhaust the format string\n // then just stick those on the end.\n if (args.length) {\n if (out.length) {\n out += ' ';\n }\n out += args.map(tryStringify).join(' ');\n }\n return out;\n }\n return args.map(tryStringify).join(' ');\n}\nexports.default = format;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst LogPriority = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\nconst LevelNames = ['debug', 'info', 'warn', 'error', 'none'];\n/**\n * A basic logger which handles filtering by level.\n *\n * With the default options it will write to `console.error`\n * and it will use the formatting provided by `console.error`.\n * If the destination is overwritten, then it will use an included\n * formatter similar to `util.format`.\n *\n * If a formatter is available, then that should be overridden\n * as well for performance.\n */\nclass BasicLogger {\n /**\n * This should only be used as a default fallback and not as a convenient\n * solution. In most cases you should construct a new instance with the\n * appropriate options for your specific needs.\n */\n static get() {\n return new BasicLogger({});\n }\n constructor(options) {\n var _a, _b, _c;\n this.logLevel = (_b = LogPriority[(_a = options.level) !== null && _a !== void 0 ? _a : 'info']) !== null && _b !== void 0 ? _b : LogPriority.info;\n this.name = (_c = options.name) !== null && _c !== void 0 ? _c : 'LaunchDarkly';\n // eslint-disable-next-line no-console\n this.destination = options.destination;\n this.formatter = options.formatter;\n }\n tryFormat(...args) {\n var _a;\n try {\n if (this.formatter) {\n // In case the provided formatter fails.\n return (_a = this.formatter) === null || _a === void 0 ? void 0 : _a.call(this, ...args);\n }\n return (0, format_1.default)(...args);\n }\n catch (_b) {\n return (0, format_1.default)(...args);\n }\n }\n tryWrite(msg) {\n try {\n this.destination(msg);\n }\n catch (_a) {\n // eslint-disable-next-line no-console\n console.error(msg);\n }\n }\n log(level, args) {\n if (level >= this.logLevel) {\n const prefix = `${LevelNames[level]}: [${this.name}]`;\n try {\n if (this.destination) {\n this.tryWrite(`${prefix} ${this.tryFormat(...args)}`);\n }\n else {\n // `console.error` has its own formatter.\n // So we don't need to do anything.\n // eslint-disable-next-line no-console\n console.error(...args);\n }\n }\n catch (_a) {\n // If all else fails do not break.\n // eslint-disable-next-line no-console\n console.error(...args);\n }\n }\n }\n error(...args) {\n this.log(LogPriority.error, args);\n }\n warn(...args) {\n this.log(LogPriority.warn, args);\n }\n info(...args) {\n this.log(LogPriority.info, args);\n }\n debug(...args) {\n this.log(LogPriority.debug, args);\n }\n}\nexports.default = BasicLogger;\n//# sourceMappingURL=BasicLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\nconst loggerRequirements = {\n error: validators_1.TypeValidators.Function,\n warn: validators_1.TypeValidators.Function,\n info: validators_1.TypeValidators.Function,\n debug: validators_1.TypeValidators.Function,\n};\n/**\n * The safeLogger logic exists because we allow the application to pass in a custom logger, but\n * there is no guarantee that the logger works correctly and if it ever throws exceptions there\n * could be serious consequences (e.g. an uncaught exception within an error event handler, due\n * to the SDK trying to log the error, can terminate the application). An exception could result\n * from faulty logic in the logger implementation, or it could be that this is not a logger at\n * all but some other kind of object; the former is handled by a catch block that logs an error\n * message to the SDK's default logger, and we can at least partly guard against the latter by\n * checking for the presence of required methods at configuration time.\n */\nclass SafeLogger {\n /**\n * Construct a safe logger with the specified logger.\n * @param logger The logger to use.\n * @param fallback A fallback logger to use in case an issue is encountered using\n * the provided logger.\n */\n constructor(logger, fallback) {\n Object.entries(loggerRequirements).forEach(([level, validator]) => {\n if (!validator.is(logger[level])) {\n throw new Error(`Provided logger instance must support logger.${level}(...) method`);\n // Note that the SDK normally does not throw exceptions to the application, but that rule\n // does not apply to LDClient.init() which will throw an exception if the parameters are so\n // invalid that we cannot proceed with creating the client. An invalid logger meets those\n // criteria since the SDK calls the logger during nearly all of its operations.\n }\n });\n this.logger = logger;\n this.fallback = fallback;\n }\n log(level, args) {\n try {\n this.logger[level](...args);\n }\n catch (_a) {\n // If all else fails do not break.\n this.fallback[level](...args);\n }\n }\n error(...args) {\n this.log('error', args);\n }\n warn(...args) {\n this.log('warn', args);\n }\n info(...args) {\n this.log('info', args);\n }\n debug(...args) {\n this.log('debug', args);\n }\n}\nexports.default = SafeLogger;\n//# sourceMappingURL=SafeLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SafeLogger = exports.BasicLogger = void 0;\nconst BasicLogger_1 = require(\"./BasicLogger\");\nexports.BasicLogger = BasicLogger_1.default;\nconst SafeLogger_1 = require(\"./SafeLogger\");\nexports.SafeLogger = SafeLogger_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Messages for issues which can be encountered from processing the configuration options.\n */\nclass OptionMessages {\n static deprecated(oldName, newName) {\n return `\"${oldName}\" is deprecated, please use \"${newName}\"`;\n }\n static optionBelowMinimum(name, value, min) {\n return `Config option \"${name}\" had invalid value of ${value}, using minimum of ${min} instead`;\n }\n static unknownOption(name) {\n return `Ignoring unknown config option \"${name}\"`;\n }\n static wrongOptionType(name, expectedType, actualType) {\n return `Config option \"${name}\" should be of type ${expectedType}, got ${actualType}, using default value`;\n }\n static wrongOptionTypeBoolean(name, actualType) {\n return `Config option \"${name}\" should be a boolean, got ${actualType}, converting to boolean`;\n }\n static invalidTagValue(name) {\n return `Config option \"${name}\" must only contain letters, numbers, ., _ or -.`;\n }\n static tagValueTooLong(name) {\n return `Value of \"${name}\" was longer than 64 characters and was discarded.`;\n }\n static partialEndpoint(name) {\n return `You have set custom uris without specifying the ${name} URI; connections may not work properly`;\n }\n}\nexports.default = OptionMessages;\n//# sourceMappingURL=OptionMessages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\nconst OptionMessages_1 = require(\"./OptionMessages\");\n/**\n * Expression to validate characters that are allowed in tag keys and values.\n */\nconst allowedTagCharacters = /^(\\w|\\.|-)+$/;\nconst regexValidator = validators_1.TypeValidators.stringMatchingRegex(allowedTagCharacters);\nconst tagValidator = {\n is: (u, name) => {\n if (regexValidator.is(u)) {\n if (u.length > 64) {\n return { valid: false, message: OptionMessages_1.default.tagValueTooLong(name) };\n }\n return { valid: true };\n }\n return { valid: false, message: OptionMessages_1.default.invalidTagValue(name) };\n },\n};\n/**\n * Class for managing tags.\n */\nclass ApplicationTags {\n constructor(options) {\n var _a, _b;\n const tags = {};\n const application = options === null || options === void 0 ? void 0 : options.application;\n if ((application === null || application === void 0 ? void 0 : application.id) !== null && (application === null || application === void 0 ? void 0 : application.id) !== undefined) {\n const { valid, message } = tagValidator.is(application.id, 'application.id');\n if (!valid) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(message);\n }\n else {\n tags['application-id'] = [application.id];\n }\n }\n if ((application === null || application === void 0 ? void 0 : application.version) !== null && (application === null || application === void 0 ? void 0 : application.version) !== undefined) {\n const { valid, message } = tagValidator.is(application.version, 'application.version');\n if (!valid) {\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.warn(message);\n }\n else {\n tags['application-version'] = [application.version];\n }\n }\n const tagKeys = Object.keys(tags);\n if (tagKeys.length) {\n this.value = tagKeys\n .sort()\n .flatMap((key) => tags[key].sort().map((value) => `${key}/${value}`))\n .join(' ');\n }\n }\n}\nexports.default = ApplicationTags;\n//# sourceMappingURL=ApplicationTags.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * The client context provides basic configuration and platform support which are required\n * when building SDK components.\n */\nclass ClientContext {\n constructor(sdkKey, configuration, platform) {\n this.platform = platform;\n this.basicConfiguration = {\n logger: configuration.logger,\n offline: configuration.offline,\n sdkKey,\n serviceEndpoints: configuration.serviceEndpoints,\n };\n }\n}\nexports.default = ClientContext;\n//# sourceMappingURL=ClientContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction canonicalizeUri(uri) {\n return uri.replace(/\\/+$/, '');\n}\n/**\n * Specifies the base service URIs used by SDK components.\n */\nclass ServiceEndpoints {\n constructor(streaming, polling, events) {\n this.streaming = canonicalizeUri(streaming);\n this.polling = canonicalizeUri(polling);\n this.events = canonicalizeUri(events);\n }\n}\nexports.default = ServiceEndpoints;\n//# sourceMappingURL=ServiceEndpoints.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientContext = exports.ServiceEndpoints = exports.OptionMessages = exports.ApplicationTags = void 0;\nconst ApplicationTags_1 = require(\"./ApplicationTags\");\nexports.ApplicationTags = ApplicationTags_1.default;\nconst ClientContext_1 = require(\"./ClientContext\");\nexports.ClientContext = ClientContext_1.default;\nconst OptionMessages_1 = require(\"./OptionMessages\");\nexports.OptionMessages = OptionMessages_1.default;\nconst ServiceEndpoints_1 = require(\"./ServiceEndpoints\");\nexports.ServiceEndpoints = ServiceEndpoints_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = () => { };\n//# sourceMappingURL=noop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = void 0;\nconst noop_1 = require(\"./noop\");\nexports.noop = noop_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIdentify = exports.isCustom = exports.isFeature = void 0;\nfunction isFeature(u) {\n return u.kind === 'feature';\n}\nexports.isFeature = isFeature;\nfunction isCustom(u) {\n return u.kind === 'custom';\n}\nexports.isCustom = isCustom;\nfunction isIdentify(u) {\n return u.kind === 'identify';\n}\nexports.isIdentify = isIdentify;\n//# sourceMappingURL=guards.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass SummaryCounter {\n constructor(count, key, value, defValue, version, variation) {\n this.count = count;\n this.key = key;\n this.value = value;\n this.version = version;\n this.variation = variation;\n this.default = defValue;\n }\n increment() {\n this.count += 1;\n }\n}\nexports.default = SummaryCounter;\n//# sourceMappingURL=SummaryCounter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst guards_1 = require(\"./guards\");\nconst SummaryCounter_1 = require(\"./SummaryCounter\");\nfunction counterKey(event) {\n return `${event.key}:${event.variation !== null && event.variation !== undefined ? event.variation : ''}:${event.version !== null && event.version !== undefined ? event.version : ''}`;\n}\n/**\n * @internal\n */\nclass EventSummarizer {\n constructor() {\n this.startDate = 0;\n this.endDate = 0;\n this.counters = {};\n this.contextKinds = {};\n }\n summarizeEvent(event) {\n if ((0, guards_1.isFeature)(event)) {\n const countKey = counterKey(event);\n const counter = this.counters[countKey];\n let kinds = this.contextKinds[event.key];\n if (!kinds) {\n kinds = new Set();\n this.contextKinds[event.key] = kinds;\n }\n event.context.kinds.forEach((kind) => kinds.add(kind));\n if (counter) {\n counter.increment();\n }\n else {\n this.counters[countKey] = new SummaryCounter_1.default(1, event.key, event.value, event.default, event.version, event.variation);\n }\n if (this.startDate === 0 || event.creationDate < this.startDate) {\n this.startDate = event.creationDate;\n }\n if (event.creationDate > this.endDate) {\n this.endDate = event.creationDate;\n }\n }\n }\n getSummary() {\n const features = Object.values(this.counters).reduce((acc, counter) => {\n let flagSummary = acc[counter.key];\n if (!flagSummary) {\n flagSummary = {\n default: counter.default,\n counters: [],\n contextKinds: [...this.contextKinds[counter.key]],\n };\n acc[counter.key] = flagSummary;\n }\n const counterOut = {\n value: counter.value,\n count: counter.count,\n };\n if (counter.variation !== undefined && counter.variation !== null) {\n counterOut.variation = counter.variation;\n }\n if (counter.version !== undefined && counter.version !== null) {\n counterOut.version = counter.version;\n }\n else {\n counterOut.unknown = true;\n }\n flagSummary.counters.push(counterOut);\n return acc;\n }, {});\n return {\n startDate: this.startDate,\n endDate: this.endDate,\n features,\n kind: 'summary',\n };\n }\n clearSummary() {\n this.startDate = 0;\n this.endDate = 0;\n this.counters = {};\n this.contextKinds = {};\n }\n}\nexports.default = EventSummarizer;\n//# sourceMappingURL=EventSummarizer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass LDInvalidSDKKeyError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyInvalidSDKKeyError';\n }\n}\nexports.default = LDInvalidSDKKeyError;\n//# sourceMappingURL=LDInvalidSDKKeyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LDEventSender_1 = require(\"../../api/subsystem/LDEventSender\");\nconst AttributeReference_1 = require(\"../../AttributeReference\");\nconst ContextFilter_1 = require(\"../../ContextFilter\");\nconst EventSummarizer_1 = require(\"./EventSummarizer\");\nconst guards_1 = require(\"./guards\");\nconst LDInvalidSDKKeyError_1 = require(\"./LDInvalidSDKKeyError\");\nclass EventProcessor {\n constructor(config, clientContext, eventSender, contextDeduplicator, diagnosticsManager) {\n this.eventSender = eventSender;\n this.contextDeduplicator = contextDeduplicator;\n this.diagnosticsManager = diagnosticsManager;\n this.summarizer = new EventSummarizer_1.default();\n this.queue = [];\n this.lastKnownPastTime = 0;\n this.droppedEvents = 0;\n this.deduplicatedUsers = 0;\n this.exceededCapacity = false;\n this.eventsInLastBatch = 0;\n this.shutdown = false;\n this.flushUsersTimer = null;\n this.capacity = config.eventsCapacity;\n this.logger = clientContext.basicConfiguration.logger;\n this.contextFilter = new ContextFilter_1.default(config.allAttributesPrivate, config.privateAttributes.map((ref) => new AttributeReference_1.default(ref)));\n if (this.contextDeduplicator.flushInterval !== undefined) {\n this.flushUsersTimer = setInterval(() => {\n this.contextDeduplicator.flush();\n }, this.contextDeduplicator.flushInterval * 1000);\n }\n this.flushTimer = setInterval(async () => {\n try {\n await this.flush();\n }\n catch (_a) {\n // Eat the errors.\n }\n }, config.flushInterval * 1000);\n if (this.diagnosticsManager) {\n const initEvent = diagnosticsManager.createInitEvent();\n this.postDiagnosticEvent(initEvent);\n this.diagnosticsTimer = setInterval(() => {\n const statsEvent = this.diagnosticsManager.createStatsEventAndReset(this.droppedEvents, this.deduplicatedUsers, this.eventsInLastBatch);\n this.droppedEvents = 0;\n this.deduplicatedUsers = 0;\n this.postDiagnosticEvent(statsEvent);\n }, config.diagnosticRecordingInterval * 1000);\n }\n }\n postDiagnosticEvent(event) {\n this.eventSender.sendEventData(LDEventSender_1.LDEventType.DiagnosticEvent, event);\n }\n close() {\n clearInterval(this.flushTimer);\n if (this.flushUsersTimer) {\n clearInterval(this.flushUsersTimer);\n }\n if (this.diagnosticsTimer) {\n clearInterval(this.diagnosticsTimer);\n }\n }\n async flush() {\n var _a;\n if (this.shutdown) {\n throw new LDInvalidSDKKeyError_1.default('Events cannot be posted because SDK key is invalid');\n }\n const eventsToFlush = this.queue;\n this.queue = [];\n const summary = this.summarizer.getSummary();\n this.summarizer.clearSummary();\n if (Object.keys(summary.features).length) {\n eventsToFlush.push(summary);\n }\n if (!eventsToFlush.length) {\n return;\n }\n this.eventsInLastBatch = eventsToFlush.length;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Flushing %d events', eventsToFlush.length);\n await this.tryPostingEvents(eventsToFlush);\n }\n sendEvent(inputEvent) {\n if (this.shutdown) {\n return;\n }\n this.summarizer.summarizeEvent(inputEvent);\n const isFeatureEvent = (0, guards_1.isFeature)(inputEvent);\n const addFullEvent = (isFeatureEvent && inputEvent.trackEvents) || !isFeatureEvent;\n const addDebugEvent = this.shouldDebugEvent(inputEvent);\n const isIdentifyEvent = (0, guards_1.isIdentify)(inputEvent);\n const shouldNotDeduplicate = this.contextDeduplicator.processContext(inputEvent.context);\n // If there is no cache, then it will never be in the cache.\n if (!shouldNotDeduplicate) {\n if (!isIdentifyEvent) {\n this.deduplicatedUsers += 1;\n }\n }\n const addIndexEvent = shouldNotDeduplicate && !isIdentifyEvent;\n if (addIndexEvent) {\n this.enqueue({\n kind: 'index',\n creationDate: inputEvent.creationDate,\n context: this.contextFilter.filter(inputEvent.context),\n });\n }\n if (addFullEvent) {\n this.enqueue(this.makeOutputEvent(inputEvent, false));\n }\n if (addDebugEvent) {\n this.enqueue(this.makeOutputEvent(inputEvent, true));\n }\n }\n makeOutputEvent(event, debug) {\n switch (event.kind) {\n case 'feature': {\n const out = {\n kind: debug ? 'debug' : 'feature',\n creationDate: event.creationDate,\n key: event.key,\n value: event.value,\n default: event.default,\n prereqOf: event.prereqOf,\n };\n if (event.variation !== undefined) {\n out.variation = event.variation;\n }\n if (event.version !== undefined) {\n out.version = event.version;\n }\n if (event.reason) {\n out.reason = event.reason;\n }\n if (debug) {\n out.context = this.contextFilter.filter(event.context);\n }\n else {\n out.contextKeys = event.context.kindsAndKeys;\n }\n return out;\n }\n case 'identify': {\n return {\n kind: 'identify',\n creationDate: event.creationDate,\n context: this.contextFilter.filter(event.context),\n };\n }\n case 'custom': {\n const out = {\n kind: 'custom',\n creationDate: event.creationDate,\n key: event.key,\n contextKeys: event.context.kindsAndKeys,\n };\n if (event.data !== undefined) {\n out.data = event.data;\n }\n if (event.metricValue !== undefined) {\n out.metricValue = event.metricValue;\n }\n return out;\n }\n default:\n // This would happen during the addition of a new event type to the SDK.\n return event;\n }\n }\n enqueue(event) {\n var _a;\n if (this.queue.length < this.capacity) {\n this.queue.push(event);\n this.exceededCapacity = false;\n }\n else {\n if (!this.exceededCapacity) {\n this.exceededCapacity = true;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('Exceeded event queue capacity. Increase capacity to avoid dropping events.');\n }\n this.droppedEvents += 1;\n }\n }\n shouldDebugEvent(event) {\n return ((0, guards_1.isFeature)(event) &&\n event.debugEventsUntilDate &&\n event.debugEventsUntilDate > this.lastKnownPastTime &&\n event.debugEventsUntilDate > Date.now());\n }\n async tryPostingEvents(events) {\n const res = await this.eventSender.sendEventData(LDEventSender_1.LDEventType.AnalyticsEvents, events);\n if (res.status === LDEventSender_1.LDDeliveryStatus.FailedAndMustShutDown) {\n this.shutdown = true;\n }\n if (res.serverTime) {\n this.lastKnownPastTime = res.serverTime;\n }\n if (res.error) {\n throw res.error;\n }\n }\n}\nexports.default = EventProcessor;\n//# sourceMappingURL=EventProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputCustomEvent {\n constructor(context, key, data, metricValue) {\n this.key = key;\n this.data = data;\n this.metricValue = metricValue;\n this.kind = 'custom';\n this.creationDate = Date.now();\n this.context = context;\n }\n}\nexports.default = InputCustomEvent;\n//# sourceMappingURL=InputCustomEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputEvalEvent {\n constructor(withReasons, context, key, defValue, // default is a reserved keyword in this context.\n detail, version, variation, trackEvents, prereqOf, reason, debugEventsUntilDate) {\n var _a;\n this.key = key;\n this.kind = 'feature';\n this.creationDate = Date.now();\n this.context = context;\n this.default = defValue;\n this.variation = (_a = detail.variationIndex) !== null && _a !== void 0 ? _a : undefined;\n this.value = detail.value;\n if (version !== undefined) {\n this.version = version;\n }\n if (variation !== undefined) {\n this.variation = variation;\n }\n if (trackEvents !== undefined) {\n this.trackEvents = trackEvents;\n }\n if (prereqOf !== undefined) {\n this.prereqOf = prereqOf;\n }\n if (reason !== undefined) {\n this.reason = reason;\n }\n if (debugEventsUntilDate !== undefined) {\n this.debugEventsUntilDate = debugEventsUntilDate;\n }\n }\n}\nexports.default = InputEvalEvent;\n//# sourceMappingURL=InputEvalEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputIdentifyEvent {\n constructor(context) {\n this.kind = 'identify';\n this.creationDate = Date.now();\n this.context = context;\n }\n}\nexports.default = InputIdentifyEvent;\n//# sourceMappingURL=InputIdentifyEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventProcessor = exports.InputIdentifyEvent = exports.InputEvalEvent = exports.InputCustomEvent = void 0;\nconst EventProcessor_1 = require(\"./EventProcessor\");\nexports.EventProcessor = EventProcessor_1.default;\nconst InputCustomEvent_1 = require(\"./InputCustomEvent\");\nexports.InputCustomEvent = InputCustomEvent_1.default;\nconst InputEvalEvent_1 = require(\"./InputEvalEvent\");\nexports.InputEvalEvent = InputEvalEvent_1.default;\nconst InputIdentifyEvent_1 = require(\"./InputIdentifyEvent\");\nexports.InputIdentifyEvent = InputIdentifyEvent_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./events\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextFilter = exports.Context = exports.AttributeReference = exports.internal = void 0;\nconst AttributeReference_1 = require(\"./AttributeReference\");\nexports.AttributeReference = AttributeReference_1.default;\nconst Context_1 = require(\"./Context\");\nexports.Context = Context_1.default;\nconst ContextFilter_1 = require(\"./ContextFilter\");\nexports.ContextFilter = ContextFilter_1.default;\n__exportStar(require(\"./api\"), exports);\n__exportStar(require(\"./validators\"), exports);\n__exportStar(require(\"./logging\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./utils\"), exports);\nexports.internal = require(\"./internal\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass LruCache {\n constructor(options) {\n this.keyMap = new Map();\n this.head = 0;\n this.tail = 0;\n this.size = 0;\n const { max } = options;\n this.max = max;\n // This is effectively a struct-of-arrays implementation\n // of a linked list. All the nodes exist statically and then\n // the links between them are changed by updating the previous/next\n // arrays.\n this.values = new Array(max);\n this.keys = new Array(max);\n this.next = new Uint32Array(max);\n this.prev = new Uint32Array(max);\n if (options.maxAge) {\n this.lastUpdated = new Array(max).fill(0);\n this.maxAge = options.maxAge;\n }\n else {\n // To please linting.\n this.lastUpdated = [];\n this.maxAge = 0;\n }\n }\n set(key, val) {\n let index = this.keyMap.get(key);\n if (index === undefined) {\n index = this.index();\n this.keys[index] = key;\n this.keyMap.set(key, index);\n this.next[this.tail] = index;\n this.prev[index] = this.tail;\n this.tail = index;\n this.size += 1;\n }\n else {\n this.setTail(index);\n }\n this.values[index] = val;\n if (this.maxAge) {\n this.lastUpdated[index] = Date.now();\n }\n }\n get(key) {\n const index = this.keyMap.get(key);\n if (index !== undefined) {\n if (this.maxAge) {\n const lastUpdated = this.lastUpdated[index];\n if (Date.now() - lastUpdated > this.maxAge) {\n // The oldest items are always the head, so they get incrementally\n // replaced. This would not be the case if we supported per item TTL.\n return undefined;\n }\n }\n this.setTail(index);\n if (this.maxAge) {\n this.lastUpdated[index] = Date.now();\n }\n return this.values[index];\n }\n return undefined;\n }\n clear() {\n this.head = 0;\n this.tail = 0;\n this.size = 0;\n this.values.fill(undefined);\n this.keys.fill(undefined);\n this.next.fill(0);\n this.prev.fill(0);\n }\n index() {\n if (this.size === 0) {\n return this.tail;\n }\n if (this.size === this.max) {\n return this.evict();\n }\n // The initial list is being populated, so we can just continue increasing size.\n return this.size;\n }\n evict() {\n const { head } = this;\n const k = this.keys[head];\n this.head = this.next[head];\n this.keyMap.delete(k);\n this.size -= 1;\n return head;\n }\n link(p, n) {\n this.prev[n] = p;\n this.next[p] = n;\n }\n setTail(index) {\n // If it is already the tail, then there is nothing to do.\n if (index !== this.tail) {\n // If this is the head, then we change the next item\n // to the head.\n if (index === this.head) {\n this.head = this.next[index];\n }\n else {\n // Link the previous item to the next item, effectively removing\n // the current node.\n this.link(this.prev[index], this.next[index]);\n }\n // Connect the current tail to this node.\n this.link(this.tail, index);\n this.tail = index;\n }\n }\n}\nexports.default = LruCache;\n//# sourceMappingURL=LruCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst BigSegmentStatusProviderImpl_1 = require(\"./BigSegmentStatusProviderImpl\");\nconst LruCache_1 = require(\"./cache/LruCache\");\nconst DEFAULT_STALE_AFTER_SECONDS = 120;\nconst DEFAULT_STATUS_POLL_INTERVAL_SECONDS = 5;\nconst DEFAULT_USER_CACHE_SIZE = 1000;\nconst DEFAULT_USER_CACHE_TIME_SECONDS = 5;\nclass BigSegmentsManager {\n constructor(store, \n // The store will have been created before the manager is instantiated, so we do not need\n // it in the options at this stage.\n config, logger, crypto) {\n this.store = store;\n this.logger = logger;\n this.crypto = crypto;\n this.statusProvider = new BigSegmentStatusProviderImpl_1.default(async () => this.pollStoreAndUpdateStatus());\n this.staleTimeMs =\n (js_sdk_common_1.TypeValidators.Number.is(config.staleAfter) && config.staleAfter > 0\n ? config.staleAfter\n : DEFAULT_STALE_AFTER_SECONDS) * 1000;\n const pollIntervalMs = (js_sdk_common_1.TypeValidators.Number.is(config.statusPollInterval) && config.statusPollInterval > 0\n ? config.statusPollInterval\n : DEFAULT_STATUS_POLL_INTERVAL_SECONDS) * 1000;\n this.pollHandle = store\n ? setInterval(() => this.pollStoreAndUpdateStatus(), pollIntervalMs)\n : null;\n if (store) {\n this.cache = new LruCache_1.default({\n max: config.userCacheSize || DEFAULT_USER_CACHE_SIZE,\n maxAge: (config.userCacheTime || DEFAULT_USER_CACHE_TIME_SECONDS) * 1000,\n });\n }\n }\n close() {\n if (this.pollHandle) {\n clearInterval(this.pollHandle);\n this.pollHandle = undefined;\n }\n if (this.store) {\n this.store.close();\n }\n }\n async getUserMembership(userKey) {\n var _a, _b, _c;\n if (!this.store) {\n return undefined;\n }\n const memberCache = (_a = this.cache) === null || _a === void 0 ? void 0 : _a.get(userKey);\n let membership;\n if (!memberCache) {\n try {\n membership = await this.store.getUserMembership(this.hashForUserKey(userKey));\n const cacheItem = { membership };\n (_b = this.cache) === null || _b === void 0 ? void 0 : _b.set(userKey, cacheItem);\n }\n catch (err) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.error(`Big Segment store membership query returned error: ${err}`);\n return [null, 'STORE_ERROR'];\n }\n }\n else {\n membership = memberCache.membership;\n }\n if (!this.statusProvider.getStatus()) {\n await this.pollStoreAndUpdateStatus();\n }\n // Status will be present, because polling is done earlier in this method if it is not.\n const lastStatus = this.statusProvider.getStatus();\n if (!lastStatus.available) {\n return [membership || null, 'STORE_ERROR'];\n }\n return [membership || null, lastStatus.stale ? 'STALE' : 'HEALTHY'];\n }\n async pollStoreAndUpdateStatus() {\n var _a, _b, _c;\n if (!this.store) {\n this.statusProvider.setStatus({ available: false, stale: false });\n return;\n }\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Querying Big Segment store status');\n let newStatus;\n try {\n const metadata = await this.store.getMetadata();\n newStatus = {\n available: true,\n stale: !metadata || !metadata.lastUpToDate || this.isStale(metadata.lastUpToDate),\n };\n }\n catch (err) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Big Segment store status query returned error: ${err}`);\n newStatus = { available: false, stale: false };\n }\n const lastStatus = this.statusProvider.getStatus();\n if (!lastStatus ||\n lastStatus.available !== newStatus.available ||\n lastStatus.stale !== newStatus.stale) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Big Segment store status changed from %s to %s', JSON.stringify(lastStatus), JSON.stringify(newStatus));\n this.statusProvider.setStatus(newStatus);\n this.statusProvider.notify();\n }\n }\n hashForUserKey(userKey) {\n const hasher = this.crypto.createHash('sha256');\n hasher.update(userKey);\n return hasher.digest('base64');\n }\n isStale(timestamp) {\n return Date.now() - timestamp >= this.staleTimeMs;\n }\n}\nexports.default = BigSegmentsManager;\n//# sourceMappingURL=BigSegmentsManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Messages for issues which can be encountered processing client requests.\n *\n * @internal\n */\nclass ClientMessages {\n}\nClientMessages.missingContextKeyNoEvent = 'Context was unspecified or had no key; event will not be sent';\nexports.default = ClientMessages;\n//# sourceMappingURL=ClientMessages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass VersionedDataKinds {\n}\nVersionedDataKinds.Features = {\n namespace: 'features',\n streamApiPath: '/flags/',\n requestPath: '/sdk/latest-flags/',\n};\nVersionedDataKinds.Segments = {\n namespace: 'segments',\n streamApiPath: '/segments/',\n requestPath: '/sdk/latest-segments/',\n};\nexports.default = VersionedDataKinds;\n//# sourceMappingURL=VersionedDataKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass NamespacedDataSet {\n constructor() {\n this.itemsByNamespace = {};\n }\n get(namespace, key) {\n var _a;\n return (_a = this.itemsByNamespace[namespace]) === null || _a === void 0 ? void 0 : _a[key];\n }\n set(namespace, key, value) {\n if (!(namespace in this.itemsByNamespace)) {\n this.itemsByNamespace[namespace] = {};\n }\n this.itemsByNamespace[namespace][key] = value;\n }\n remove(namespace, key) {\n const items = this.itemsByNamespace[namespace];\n if (items) {\n delete items[key];\n }\n }\n removeAll() {\n this.itemsByNamespace = {};\n }\n enumerate(callback) {\n Object.entries(this.itemsByNamespace).forEach(([namespace, values]) => {\n Object.entries(values).forEach(([key, value]) => {\n callback(namespace, key, value);\n });\n });\n }\n mergeFrom(other) {\n other.enumerate(this.set.bind(this));\n }\n}\nexports.default = NamespacedDataSet;\n//# sourceMappingURL=NamespacedDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst NamespacedDataSet_1 = require(\"./NamespacedDataSet\");\n/**\n * @internal\n */\nclass DependencyTracker {\n constructor() {\n this.dependenciesFrom = new NamespacedDataSet_1.default();\n this.dependenciesTo = new NamespacedDataSet_1.default();\n }\n updateDependenciesFrom(namespace, key, newDependencySet) {\n const oldDependencySet = this.dependenciesFrom.get(namespace, key);\n oldDependencySet === null || oldDependencySet === void 0 ? void 0 : oldDependencySet.enumerate((depNs, depKey) => {\n const depsToThisDep = this.dependenciesTo.get(depNs, depKey);\n depsToThisDep === null || depsToThisDep === void 0 ? void 0 : depsToThisDep.remove(namespace, key);\n });\n this.dependenciesFrom.set(namespace, key, newDependencySet);\n newDependencySet === null || newDependencySet === void 0 ? void 0 : newDependencySet.enumerate((depNs, depKey) => {\n let depsToThisDep = this.dependenciesTo.get(depNs, depKey);\n if (!depsToThisDep) {\n depsToThisDep = new NamespacedDataSet_1.default();\n this.dependenciesTo.set(depNs, depKey, depsToThisDep);\n }\n depsToThisDep.set(namespace, key, true);\n });\n }\n updateModifiedItems(inDependencySet, modifiedNamespace, modifiedKey) {\n if (!inDependencySet.get(modifiedNamespace, modifiedKey)) {\n inDependencySet.set(modifiedNamespace, modifiedKey, true);\n const affectedItems = this.dependenciesTo.get(modifiedNamespace, modifiedKey);\n affectedItems === null || affectedItems === void 0 ? void 0 : affectedItems.enumerate((namespace, key) => {\n this.updateModifiedItems(inDependencySet, namespace, key);\n });\n }\n }\n reset() {\n this.dependenciesFrom.removeAll();\n this.dependenciesTo.removeAll();\n }\n}\nexports.default = DependencyTracker;\n//# sourceMappingURL=DependencyTracker.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst DependencyTracker_1 = require(\"./DependencyTracker\");\nconst NamespacedDataSet_1 = require(\"./NamespacedDataSet\");\nfunction computeDependencies(namespace, item) {\n var _a, _b;\n const ret = new NamespacedDataSet_1.default();\n const isFlag = namespace === VersionedDataKinds_1.default.Features.namespace;\n const isSegment = namespace === VersionedDataKinds_1.default.Segments.namespace;\n if (isFlag) {\n const flag = item;\n (_a = flag === null || flag === void 0 ? void 0 : flag.prerequisites) === null || _a === void 0 ? void 0 : _a.forEach((prereq) => {\n ret.set(namespace, prereq.key, true);\n });\n }\n if (isFlag || isSegment) {\n const itemWithRuleClauses = item;\n (_b = itemWithRuleClauses === null || itemWithRuleClauses === void 0 ? void 0 : itemWithRuleClauses.rules) === null || _b === void 0 ? void 0 : _b.forEach((rule) => {\n var _a;\n (_a = rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause.op === 'segmentMatch') {\n clause.values.forEach((value) => {\n ret.set(VersionedDataKinds_1.default.Segments.namespace, value, true);\n });\n }\n });\n });\n }\n return ret;\n}\n/**\n * @internal\n */\nclass DataSourceUpdates {\n constructor(featureStore, hasEventListeners, onChange) {\n this.featureStore = featureStore;\n this.hasEventListeners = hasEventListeners;\n this.onChange = onChange;\n this.dependencyTracker = new DependencyTracker_1.default();\n }\n init(allData, callback) {\n const checkForChanges = this.hasEventListeners();\n const doInit = (oldData) => {\n this.featureStore.init(allData, () => {\n this.dependencyTracker.reset();\n Object.entries(allData).forEach(([namespace, items]) => {\n Object.keys(items || {}).forEach((key) => {\n const item = items[key];\n this.dependencyTracker.updateDependenciesFrom(namespace, key, computeDependencies(namespace, item));\n });\n });\n if (checkForChanges) {\n const updatedItems = new NamespacedDataSet_1.default();\n Object.keys(allData).forEach((namespace) => {\n const oldDataForKind = (oldData === null || oldData === void 0 ? void 0 : oldData[namespace]) || {};\n const newDataForKind = allData[namespace];\n const mergedData = Object.assign(Object.assign({}, oldDataForKind), newDataForKind);\n Object.keys(mergedData).forEach((key) => {\n this.addIfModified(namespace, key, oldDataForKind && oldDataForKind[key], newDataForKind && newDataForKind[key], updatedItems);\n });\n });\n this.sendChangeEvents(updatedItems);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n });\n };\n if (checkForChanges) {\n this.featureStore.all(VersionedDataKinds_1.default.Features, (oldFlags) => {\n this.featureStore.all(VersionedDataKinds_1.default.Segments, (oldSegments) => {\n const oldData = {\n [VersionedDataKinds_1.default.Features.namespace]: oldFlags,\n [VersionedDataKinds_1.default.Segments.namespace]: oldSegments,\n };\n doInit(oldData);\n });\n });\n }\n else {\n doInit();\n }\n }\n upsert(kind, data, callback) {\n const { key } = data;\n const checkForChanges = this.hasEventListeners();\n const doUpsert = (oldItem) => {\n this.featureStore.upsert(kind, data, () => {\n this.dependencyTracker.updateDependenciesFrom(kind.namespace, key, computeDependencies(kind.namespace, data));\n if (checkForChanges) {\n const updatedItems = new NamespacedDataSet_1.default();\n this.addIfModified(kind.namespace, key, oldItem, data, updatedItems);\n this.sendChangeEvents(updatedItems);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n });\n };\n if (checkForChanges) {\n this.featureStore.get(kind, key, doUpsert);\n }\n else {\n doUpsert();\n }\n }\n addIfModified(namespace, key, oldValue, newValue, toDataSet) {\n if (newValue && oldValue && newValue.version <= oldValue.version) {\n return;\n }\n this.dependencyTracker.updateModifiedItems(toDataSet, namespace, key);\n }\n sendChangeEvents(dataSet) {\n dataSet.enumerate((namespace, key) => {\n if (namespace === VersionedDataKinds_1.default.Features.namespace) {\n this.onChange(key);\n }\n });\n }\n}\nexports.default = DataSourceUpdates;\n//# sourceMappingURL=DataSourceUpdates.js.map","\"use strict\";\n// This is an empty implementation, so it doesn't use this, and it has empty methods, and it\n// has unused variables.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass NullUpdateProcessor {\n start(fn) {\n // Deferring the start callback should allow client construction to complete before we start\n // emitting events. Allowing the client an opportunity to register events.\n setTimeout(() => fn === null || fn === void 0 ? void 0 : fn(), 0);\n }\n stop() { }\n close() { }\n}\nexports.default = NullUpdateProcessor;\n//# sourceMappingURL=NullUpdateProcessor.js.map","\"use strict\";\n// These classes are of trivial complexity. If they become\n// more complex, then they could be independent files.\n/* eslint-disable max-classes-per-file */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isHttpRecoverable = exports.LDClientError = exports.LDUnexpectedResponseError = exports.LDStreamingError = exports.LDPollingError = void 0;\nclass LDPollingError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyPollingError';\n }\n}\nexports.LDPollingError = LDPollingError;\nclass LDStreamingError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = 'LaunchDarklyStreamingError';\n }\n}\nexports.LDStreamingError = LDStreamingError;\nclass LDUnexpectedResponseError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyUnexpectedResponseError';\n }\n}\nexports.LDUnexpectedResponseError = LDUnexpectedResponseError;\nclass LDClientError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyClientError';\n }\n}\nexports.LDClientError = LDClientError;\nfunction isHttpRecoverable(status) {\n if (status >= 400 && status < 500) {\n return status === 400 || status === 408 || status === 429;\n }\n return true;\n}\nexports.isHttpRecoverable = isHttpRecoverable;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// The deserialization will be updating parameter values, so we don't need this\n// warning in this file.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeSegment = exports.serializeSegment = exports.deserializeFlag = exports.serializeFlag = exports.deserializeDelete = exports.deserializePatch = exports.deserializePoll = exports.deserializeAll = exports.processSegment = exports.processFlag = exports.replacer = exports.reviver = void 0;\n/* eslint-disable no-param-reassign */\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst VersionedDataKinds_1 = require(\"./VersionedDataKinds\");\n/**\n * @internal\n */\nfunction reviver(key, value) {\n // Whenever a null is included we want to remove the field.\n // In this way validation checks do not have to consider null, only undefined.\n if (value === null) {\n return undefined;\n }\n return value;\n}\nexports.reviver = reviver;\n/**\n * For use when serializing flags/segments. This will ensure local types\n * are converted to the appropriate JSON representation.\n * @param this The scope containing the key/value.\n * @param key The key of the item being visited.\n * @param value The value of the item being visited.\n * @returns A transformed value for serialization.\n *\n * @internal\n */\nfunction replacer(key, value) {\n if (value instanceof js_sdk_common_1.AttributeReference) {\n return undefined;\n }\n if (Array.isArray(value)) {\n if (value[0] && value[0] instanceof js_sdk_common_1.AttributeReference) {\n return undefined;\n }\n }\n return value;\n}\nexports.replacer = replacer;\nfunction processRollout(rollout) {\n if (rollout && rollout.bucketBy) {\n rollout.bucketByAttributeReference = new js_sdk_common_1.AttributeReference(rollout.bucketBy, !rollout.contextKind);\n }\n}\n/**\n * @internal\n */\nfunction processFlag(flag) {\n var _a;\n if (flag.fallthrough && flag.fallthrough.rollout) {\n const rollout = flag.fallthrough.rollout;\n processRollout(rollout);\n }\n (_a = flag === null || flag === void 0 ? void 0 : flag.rules) === null || _a === void 0 ? void 0 : _a.forEach((rule) => {\n var _a;\n processRollout(rule.rollout);\n (_a = rule === null || rule === void 0 ? void 0 : rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause && clause.attribute) {\n // Clauses before U2C would have had literals for attributes.\n // So use the contextKind to indicate if this is new or old data.\n clause.attributeReference = new js_sdk_common_1.AttributeReference(clause.attribute, !clause.contextKind);\n }\n else if (clause) {\n clause.attributeReference = js_sdk_common_1.AttributeReference.invalidReference;\n }\n });\n });\n}\nexports.processFlag = processFlag;\n/**\n * @internal\n */\nfunction processSegment(segment) {\n var _a;\n (_a = segment === null || segment === void 0 ? void 0 : segment.rules) === null || _a === void 0 ? void 0 : _a.forEach((rule) => {\n var _a;\n if (rule.bucketBy) {\n // Rules before U2C would have had literals for attributes.\n // So use the rolloutContextKind to indicate if this is new or old data.\n rule.bucketByAttributeReference = new js_sdk_common_1.AttributeReference(rule.bucketBy, !rule.rolloutContextKind);\n }\n (_a = rule === null || rule === void 0 ? void 0 : rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause && clause.attribute) {\n // Clauses before U2C would have had literals for attributes.\n // So use the contextKind to indicate if this is new or old data.\n clause.attributeReference = new js_sdk_common_1.AttributeReference(clause.attribute, !clause.contextKind);\n }\n else if (clause) {\n clause.attributeReference = js_sdk_common_1.AttributeReference.invalidReference;\n }\n });\n });\n}\nexports.processSegment = processSegment;\nfunction tryParse(data) {\n try {\n return JSON.parse(data, reviver);\n }\n catch (_a) {\n return undefined;\n }\n}\n/**\n * @internal\n */\nfunction deserializeAll(data) {\n var _a, _b;\n // The reviver lacks the context of where a different key exists, being as it\n // starts at the deepest level and works outward. As a result attributes are\n // translated into references after the initial parsing. That way we can be sure\n // they are the correct ones. For instance if we added 'attribute' as a new field to\n // the schema for something that was NOT an attribute reference, then we wouldn't\n // want to construct an attribute reference out of it.\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n Object.values(((_a = parsed === null || parsed === void 0 ? void 0 : parsed.data) === null || _a === void 0 ? void 0 : _a.flags) || []).forEach((flag) => {\n processFlag(flag);\n });\n Object.values(((_b = parsed === null || parsed === void 0 ? void 0 : parsed.data) === null || _b === void 0 ? void 0 : _b.segments) || []).forEach((segment) => {\n processSegment(segment);\n });\n return parsed;\n}\nexports.deserializeAll = deserializeAll;\n/**\n * This function is intended for usage inside LaunchDarkly SDKs.\n * This function should NOT be used by customer applications.\n * This function may be changed or removed without a major version.\n *\n * @param data String data from launchdarkly.\n * @returns The parsed and processed data.\n */\nfunction deserializePoll(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n Object.values((parsed === null || parsed === void 0 ? void 0 : parsed.flags) || []).forEach((flag) => {\n processFlag(flag);\n });\n Object.values((parsed === null || parsed === void 0 ? void 0 : parsed.segments) || []).forEach((segment) => {\n processSegment(segment);\n });\n return parsed;\n}\nexports.deserializePoll = deserializePoll;\n/**\n * @internal\n */\nfunction deserializePatch(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n if (parsed.path.startsWith(VersionedDataKinds_1.default.Features.streamApiPath)) {\n processFlag(parsed.data);\n parsed.kind = VersionedDataKinds_1.default.Features;\n }\n else if (parsed.path.startsWith(VersionedDataKinds_1.default.Segments.streamApiPath)) {\n processSegment(parsed.data);\n parsed.kind = VersionedDataKinds_1.default.Segments;\n }\n return parsed;\n}\nexports.deserializePatch = deserializePatch;\n/**\n * @internal\n */\nfunction deserializeDelete(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n if (parsed.path.startsWith(VersionedDataKinds_1.default.Features.streamApiPath)) {\n parsed.kind = VersionedDataKinds_1.default.Features;\n }\n else if (parsed.path.startsWith(VersionedDataKinds_1.default.Segments.streamApiPath)) {\n parsed.kind = VersionedDataKinds_1.default.Segments;\n }\n return parsed;\n}\nexports.deserializeDelete = deserializeDelete;\n/**\n * Serialize a single flag. Used for persistent data stores.\n *\n * @internal\n */\nfunction serializeFlag(flag) {\n return JSON.stringify(flag, replacer);\n}\nexports.serializeFlag = serializeFlag;\n/**\n * Deserialize a single flag. Used for persistent data stores.\n *\n * @internal\n */\nfunction deserializeFlag(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n processFlag(parsed);\n return parsed;\n}\nexports.deserializeFlag = deserializeFlag;\n/**\n * Serialize a single segment. Used for persistent data stores.\n *\n * @internal\n */\nfunction serializeSegment(segment) {\n return JSON.stringify(segment, replacer);\n}\nexports.serializeSegment = serializeSegment;\n/**\n * Deserialize a single segment. Used for persistent data stores.\n *\n * @internal\n */\nfunction deserializeSegment(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n processSegment(parsed);\n return parsed;\n}\nexports.deserializeSegment = deserializeSegment;\n//# sourceMappingURL=serialization.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction httpErrorMessage(err, context, retryMessage) {\n let desc;\n if (err.status) {\n desc = `error ${err.status}${err.status === 401 ? ' (invalid SDK key)' : ''}`;\n }\n else {\n desc = `I/O error (${err.message || err})`;\n }\n const action = retryMessage !== null && retryMessage !== void 0 ? retryMessage : 'giving up permanently';\n return `Received ${desc} for ${context} - ${action}`;\n}\nexports.default = httpErrorMessage;\n//# sourceMappingURL=httpErrorMessage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst httpErrorMessage_1 = require(\"./httpErrorMessage\");\n/**\n * @internal\n */\nclass PollingProcessor {\n constructor(config, requestor, featureStore) {\n this.requestor = requestor;\n this.featureStore = featureStore;\n this.stopped = false;\n this.logger = config.logger;\n this.pollInterval = config.pollInterval;\n this.featureStore = featureStore;\n }\n poll(fn) {\n var _a;\n if (this.stopped) {\n return;\n }\n const reportJsonError = (data) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Polling received invalid data');\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDPollingError('Malformed JSON data in polling response'));\n };\n const startTime = Date.now();\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Polling LaunchDarkly for feature flag updates');\n this.requestor.requestAllData((err, body) => {\n var _a, _b, _c;\n const elapsed = Date.now() - startTime;\n const sleepFor = Math.max(this.pollInterval * 1000 - elapsed, 0);\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Elapsed: %d ms, sleeping for %d ms', elapsed, sleepFor);\n if (err) {\n if (err.status && !(0, errors_1.isHttpRecoverable)(err.status)) {\n const message = (0, httpErrorMessage_1.default)(err, 'polling request');\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(message);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDPollingError(message));\n // It is not recoverable, return and do not trigger another\n // poll.\n return;\n }\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.warn((0, httpErrorMessage_1.default)(err, 'polling request', 'will retry'));\n }\n else if (body) {\n const parsed = (0, serialization_1.deserializePoll)(body);\n if (!parsed) {\n // We could not parse this JSON. Report the problem and fallthrough to\n // start another poll.\n reportJsonError(body);\n }\n else {\n const initData = {\n [VersionedDataKinds_1.default.Features.namespace]: parsed.flags,\n [VersionedDataKinds_1.default.Segments.namespace]: parsed.segments,\n };\n this.featureStore.init(initData, () => {\n fn === null || fn === void 0 ? void 0 : fn();\n // Triggering the next poll after the init has completed.\n this.timeoutHandle = setTimeout(() => {\n this.poll(fn);\n }, sleepFor);\n });\n // The poll will be triggered by the feature store initialization\n // completing.\n return;\n }\n }\n // Falling through, there was some type of error and we need to trigger\n // a new poll.\n this.timeoutHandle = setTimeout(() => {\n this.poll(fn);\n }, sleepFor);\n });\n }\n start(fn) {\n this.poll(fn);\n }\n stop() {\n if (this.timeoutHandle) {\n clearTimeout(this.timeoutHandle);\n this.timeoutHandle = undefined;\n }\n this.stopped = true;\n }\n close() {\n this.stop();\n }\n}\nexports.default = PollingProcessor;\n//# sourceMappingURL=PollingProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultHeaders(sdkKey, config, info) {\n const sdkData = info.sdkData();\n const headers = {\n authorization: sdkKey,\n 'user-agent': `NodeJSClient/${sdkData.version}`,\n };\n if (sdkData.wrapperName) {\n headers['x-launchdarkly-wrapper'] = sdkData.wrapperVersion\n ? `${sdkData.wrapperName}/${sdkData.wrapperVersion}`\n : sdkData.wrapperName;\n }\n const tags = config.tags.value;\n if (tags) {\n headers['x-launchdarkly-tags'] = tags;\n }\n return headers;\n}\nexports.default = defaultHeaders;\n//# sourceMappingURL=defaultHeaders.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst defaultHeaders_1 = require(\"./defaultHeaders\");\n/**\n * @internal\n */\nclass Requestor {\n constructor(sdkKey, config, info, requests) {\n this.requests = requests;\n this.eTagCache = {};\n this.headers = (0, defaultHeaders_1.default)(sdkKey, config, info);\n this.uri = `${config.serviceEndpoints.polling}/sdk/latest-all`;\n }\n /**\n * Perform a request and utilize the ETag cache. The ETags are cached in the\n * requestor instance.\n */\n async requestWithETagCache(requestUrl, options) {\n const cacheEntry = this.eTagCache[requestUrl];\n const cachedETag = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.etag;\n const updatedOptions = cachedETag\n ? Object.assign(Object.assign({}, options), { headers: Object.assign(Object.assign({}, options.headers), { 'if-none-match': cachedETag }) }) : options;\n const res = await this.requests.fetch(requestUrl, updatedOptions);\n if (res.status === 304 && cacheEntry) {\n return { res, body: cacheEntry.body };\n }\n const etag = res.headers.get('etag');\n const body = await res.text();\n if (etag) {\n this.eTagCache[requestUrl] = { etag, body };\n }\n return { res, body };\n }\n async requestAllData(cb) {\n const options = {\n method: 'GET',\n headers: this.headers,\n };\n try {\n const { res, body } = await this.requestWithETagCache(this.uri, options);\n if (res.status !== 200 && res.status !== 304) {\n const err = new errors_1.LDStreamingError(`Unexpected status code: ${res.status}`, res.status);\n return cb(err, undefined);\n }\n return cb(undefined, res.status === 304 ? null : body);\n }\n catch (err) {\n return cb(err, undefined);\n }\n }\n}\nexports.default = Requestor;\n//# sourceMappingURL=Requestor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst defaultHeaders_1 = require(\"./defaultHeaders\");\nconst httpErrorMessage_1 = require(\"./httpErrorMessage\");\nconst STREAM_READ_TIMEOUT_MS = 5 * 60 * 1000;\nconst RETRY_RESET_INTERVAL_MS = 60 * 1000;\nfunction getKeyFromPath(kind, path) {\n return path.startsWith(kind.streamApiPath)\n ? path.substring(kind.streamApiPath.length)\n : undefined;\n}\n/**\n * @internal\n */\nclass StreamingProcessor {\n constructor(sdkKey, config, requests, info, featureStore, diagnosticsManager) {\n this.featureStore = featureStore;\n this.diagnosticsManager = diagnosticsManager;\n this.headers = (0, defaultHeaders_1.default)(sdkKey, config, info);\n this.logger = config.logger;\n this.streamInitialReconnectDelay = config.streamInitialReconnectDelay;\n this.requests = requests;\n this.streamUri = `${config.serviceEndpoints.streaming}/all`;\n }\n logConnectionStarted() {\n this.connectionAttemptStartTime = Date.now();\n }\n logConnectionResult(success) {\n if (this.connectionAttemptStartTime && this.diagnosticsManager) {\n this.diagnosticsManager.recordStreamInit(this.connectionAttemptStartTime, !success, Date.now() - this.connectionAttemptStartTime);\n }\n this.connectionAttemptStartTime = undefined;\n }\n start(fn) {\n this.logConnectionStarted();\n const errorFilter = (err) => {\n var _a, _b;\n if (err.status && !(0, errors_1.isHttpRecoverable)(err.status)) {\n this.logConnectionResult(false);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError(err.message, err.status));\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error((0, httpErrorMessage_1.default)(err, 'streaming request'));\n return false;\n }\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn((0, httpErrorMessage_1.default)(err, 'streaming request', 'will retry'));\n this.logConnectionResult(false);\n this.logConnectionStarted();\n return true;\n };\n const reportJsonError = (type, data) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(`Stream received invalid data in \"${type}\" message`);\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Malformed JSON data in event stream'));\n };\n // TLS is handled by the platform implementation.\n const eventSource = this.requests.createEventSource(this.streamUri, {\n headers: this.headers,\n errorFilter,\n initialRetryDelayMillis: 1000 * this.streamInitialReconnectDelay,\n readTimeoutMillis: STREAM_READ_TIMEOUT_MS,\n retryResetIntervalMillis: RETRY_RESET_INTERVAL_MS,\n });\n this.eventSource = eventSource;\n eventSource.onclose = () => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Closed LaunchDarkly stream connection');\n };\n eventSource.onerror = () => {\n // The work is done by `errorFilter`.\n };\n eventSource.onopen = () => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Opened LaunchDarkly stream connection');\n };\n eventSource.onretrying = (e) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`Will retry stream connection in ${e.delayMillis} milliseconds`);\n };\n eventSource.addEventListener('put', (event) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received put event');\n if (event && event.data) {\n this.logConnectionResult(true);\n const parsed = (0, serialization_1.deserializeAll)(event.data);\n if (!parsed) {\n reportJsonError('put', event.data);\n return;\n }\n const initData = {\n [VersionedDataKinds_1.default.Features.namespace]: parsed.data.flags,\n [VersionedDataKinds_1.default.Segments.namespace]: parsed.data.segments,\n };\n this.featureStore.init(initData, () => fn === null || fn === void 0 ? void 0 : fn());\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n eventSource.addEventListener('patch', (event) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received patch event');\n if (event && event.data) {\n const parsed = (0, serialization_1.deserializePatch)(event.data);\n if (!parsed) {\n reportJsonError('patch', event.data);\n return;\n }\n if (parsed.kind) {\n const key = getKeyFromPath(parsed.kind, parsed.path);\n if (key) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Updating ${key} in ${parsed.kind.namespace}`);\n this.featureStore.upsert(parsed.kind, parsed.data, () => { });\n }\n }\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n eventSource.addEventListener('delete', (event) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received delete event');\n if (event && event.data) {\n const parsed = (0, serialization_1.deserializeDelete)(event.data);\n if (!parsed) {\n reportJsonError('delete', event.data);\n return;\n }\n if (parsed.kind) {\n const key = getKeyFromPath(parsed.kind, parsed.path);\n if (key) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Deleting ${key} in ${parsed.kind.namespace}`);\n this.featureStore.upsert(parsed.kind, {\n key,\n version: parsed.version,\n deleted: true,\n }, () => { });\n }\n }\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n }\n stop() {\n var _a;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n this.eventSource = undefined;\n }\n close() {\n this.stop();\n }\n}\nexports.default = StreamingProcessor;\n//# sourceMappingURL=StreamingProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstSeriesAsync = exports.allSeriesAsync = exports.firstResult = void 0;\n/**\n * Iterate a collection any apply the specified operation. The first operation which\n * returns a value will be returned and iteration will stop.\n *\n * @param collection The collection to enumerate.\n * @param operator The operation to apply to each item.\n * @returns The result of the first successful operation.\n */\nfunction firstResult(collection, operator) {\n let res;\n collection === null || collection === void 0 ? void 0 : collection.some((item, index) => {\n res = operator(item, index);\n return !!res;\n });\n return res;\n}\nexports.firstResult = firstResult;\nasync function seriesAsync(collection, check, all) {\n if (!collection) {\n return false;\n }\n for (let index = 0; index < collection.length; index += 1) {\n // This warning is to encourage starting many operations at once.\n // In this case we only want to evaluate until we encounter something that\n // doesn't match. Versus starting all the evaluations and then letting them\n // all resolve.\n // eslint-disable-next-line no-await-in-loop\n const res = await check(collection[index], index);\n // If we want all checks to pass, then we return on any failed check.\n // If we want only a single result to pass, then we return on a true result.\n if (all) {\n if (!res) {\n return false;\n }\n }\n else if (res) {\n return true;\n }\n }\n // In the case of 'all', getting here means all checks passed.\n // In the case of 'first', this means no checks passed.\n return all;\n}\n/**\n * Iterate a collection in series awaiting each check operation.\n * @param collection The collection to iterate.\n * @param check The check to perform for each item in the container.\n * @returns True if all items pass the check.\n */\nasync function allSeriesAsync(collection, check) {\n return seriesAsync(collection, check, true);\n}\nexports.allSeriesAsync = allSeriesAsync;\n/**\n * Iterate a collection in series awaiting each check operation.\n * @param collection The collection to iterate.\n * @param check The check to perform for each item in the container.\n * @returns True on the first item that passes the check. False if no items\n * pass.\n */\nasync function firstSeriesAsync(collection, check) {\n return seriesAsync(collection, check, false);\n}\nexports.firstSeriesAsync = firstSeriesAsync;\n//# sourceMappingURL=collection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Different kinds of error which may be encountered during evaluation.\n *\n * @internal\n */\nvar ErrorKinds;\n(function (ErrorKinds) {\n ErrorKinds[\"MalformedFlag\"] = \"MALFORMED_FLAG\";\n ErrorKinds[\"UserNotSpecified\"] = \"USER_NOT_SPECIFIED\";\n ErrorKinds[\"FlagNotFound\"] = \"FLAG_NOT_FOUND\";\n ErrorKinds[\"ClientNotReady\"] = \"CLIENT_NOT_READY\";\n})(ErrorKinds || (ErrorKinds = {}));\n/**\n * @internal\n */\nexports.default = ErrorKinds;\n//# sourceMappingURL=ErrorKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A set of static evaluation reasons and methods for creating specific reason instances.\n *\n * @internal\n */\nclass Reasons {\n static prerequisiteFailed(prerequisiteKey) {\n return { kind: 'PREREQUISITE_FAILED', prerequisiteKey };\n }\n static ruleMatch(ruleId, ruleIndex) {\n return { kind: 'RULE_MATCH', ruleId, ruleIndex };\n }\n}\nReasons.Fallthrough = { kind: 'FALLTHROUGH' };\nReasons.Off = { kind: 'OFF' };\nReasons.TargetMatch = { kind: 'TARGET_MATCH' };\nexports.default = Reasons;\n//# sourceMappingURL=Reasons.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reasons_1 = require(\"./Reasons\");\n/**\n * A class which encapsulates the result of an evaluation. It allows for differentiating between\n * successful and error result types.\n *\n * @internal\n */\nclass EvalResult {\n constructor(isError, detail, message) {\n this.isError = isError;\n this.detail = detail;\n this.message = message;\n this.isError = isError;\n this.detail = detail;\n this.message = message;\n }\n get isOff() {\n return this.detail.reason.kind === Reasons_1.default.Off.kind;\n }\n setDefault(def) {\n this.detail.value = def;\n }\n static forError(errorKind, message, def) {\n return new EvalResult(true, {\n value: def !== null && def !== void 0 ? def : null,\n variationIndex: null,\n reason: { kind: 'ERROR', errorKind },\n }, message);\n }\n static forSuccess(value, reason, variationIndex) {\n return new EvalResult(false, {\n value,\n variationIndex: variationIndex === undefined ? null : variationIndex,\n reason,\n });\n }\n}\nexports.default = EvalResult;\n//# sourceMappingURL=EvalResult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Bucketing can be done by string or integer values. The need to be converted to a string\n * for the hashing process.\n * @param value The value to get a bucketable value for.\n * @returns The value as a string, or null if the value cannot be used for bucketing.\n */\nfunction valueForBucketing(value) {\n if (typeof value === 'string') {\n return value;\n }\n if (Number.isInteger(value)) {\n return String(value);\n }\n return null;\n}\nclass Bucketer {\n constructor(crypto) {\n this.crypto = crypto;\n }\n sha1Hex(value) {\n const hash = this.crypto.createHash('sha1');\n hash.update(value);\n return hash.digest('hex');\n }\n /**\n * Bucket the provided context using the provided parameters.\n * @param context The context to bucket. Can be a 'multi' kind context, but\n * the bucketing will be by a specific contained kind.\n * @param key A key to use in hashing. Typically the flag key or the segment key.\n * @param attr The attribute to use for bucketing.\n * @param salt A salt to use in hashing.\n * @param kindForRollout The kind to use for bucketing.\n * @param seed A seed to use in hashing.\n *\n * @returns A tuple where the first value is the bucket, and the second value indicates if there\n * was a context for the value specified by `kindForRollout`. If there was not a context for the\n * specified kind, then the `inExperiment` attribute should be `false`.\n */\n bucket(context, key, attr, salt, kindForRollout = 'user', seed) {\n const value = context.valueForKind(attr, kindForRollout);\n const bucketableValue = valueForBucketing(value);\n // Bucketing cannot be done by the specified attribute value.\n if (bucketableValue === null) {\n // If we got a value, then we know there was a context, but if we didn't get a value, then\n // it could either be there wasn't an attribute, the attribute was undefined/null, or there\n // was not a context. So here check for the context.\n const hadContext = context.kinds.indexOf(kindForRollout) >= 0;\n return [0, hadContext];\n }\n const prefix = seed ? Number(seed) : `${key}.${salt}`;\n const hashKey = `${prefix}.${bucketableValue}`;\n const hashVal = parseInt(this.sha1Hex(hashKey).substring(0, 15), 16);\n // This is how this has worked in previous implementations, but it is not\n // ideal.\n // The maximum safe integer representation in JS is 2^53 - 1.\n // eslint-disable-next-line @typescript-eslint/no-loss-of-precision\n return [hashVal / 0xfffffffffffffff, true];\n }\n}\nexports.default = Bucketer;\n//# sourceMappingURL=Bucketer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBucketBy = exports.getOffVariation = exports.getVariation = void 0;\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst ErrorKinds_1 = require(\"./ErrorKinds\");\nconst EvalResult_1 = require(\"./EvalResult\");\nconst KEY_ATTR_REF = new js_sdk_common_1.AttributeReference('key');\n/**\n * Attempt to get an evaluation result for the specific variation/flag combination.\n * @param flag The flag to get a variation from.\n * @param index The index of the flag.\n * @param reason The initial evaluation reason. If there is a valid variation, then this reason\n * will be returned in the EvalResult.\n * @returns An evaluation result containing the successful evaluation, or an error if there is\n * a problem accessing the variation.\n *\n * @internal\n */\nfunction getVariation(flag, index, reason) {\n if (js_sdk_common_1.TypeValidators.Number.is(index) && index >= 0 && index < flag.variations.length) {\n return EvalResult_1.default.forSuccess(flag.variations[index], reason, index);\n }\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid variation index in flag');\n}\nexports.getVariation = getVariation;\n/**\n * Attempt to get an off result for the specified flag.\n * @param flag The flag to get the off variation for.\n * @param reason The initial reason for the evaluation result.\n * @returns A successful evaluation result, or an error result if there is a problem accessing\n * the off variation. Flags which do not have an off variation specified will get a `null` flag\n * value with an `undefined` variation.\n *\n * @internal\n */\nfunction getOffVariation(flag, reason) {\n if (!js_sdk_common_1.TypeValidators.Number.is(flag.offVariation)) {\n return EvalResult_1.default.forSuccess(null, reason);\n }\n return getVariation(flag, flag.offVariation, reason);\n}\nexports.getOffVariation = getOffVariation;\nfunction getBucketBy(isExperiment, bucketByAttributeReference) {\n var _a;\n return (_a = (isExperiment ? undefined : bucketByAttributeReference)) !== null && _a !== void 0 ? _a : KEY_ATTR_REF;\n}\nexports.getBucketBy = getBucketBy;\n//# sourceMappingURL=variations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst collection_1 = require(\"./collection\");\nconst Reasons_1 = require(\"./Reasons\");\nconst variations_1 = require(\"./variations\");\nfunction evalTarget(flag, target, context) {\n const contextKey = context.key(target.contextKind);\n if (contextKey !== undefined) {\n const found = target.values.indexOf(contextKey) >= 0;\n if (found) {\n return (0, variations_1.getVariation)(flag, target.variation, Reasons_1.default.TargetMatch);\n }\n }\n return undefined;\n}\n/**\n * Evaluate the targets of the specified flag against the given context.\n * @param flag The flag to evaluate targets for.\n * @param context The context to evaluate those targets against.\n * @returns An evaluation result if there is a target match/error or undefined if there is not.\n *\n * @internal\n */\nfunction evalTargets(flag, context) {\n var _a;\n if (!((_a = flag.contextTargets) === null || _a === void 0 ? void 0 : _a.length)) {\n // There are not context targets, so we are going to evaluate the user targets.\n return (0, collection_1.firstResult)(flag.targets, (target) => evalTarget(flag, target, context));\n }\n return (0, collection_1.firstResult)(flag.contextTargets, (target) => {\n if (!target.contextKind || target.contextKind === js_sdk_common_1.Context.userKind) {\n // When a context target is for a user, then use a user target with the same variation.\n const userTarget = (flag.targets || []).find((ut) => ut.variation === target.variation);\n if (userTarget) {\n return evalTarget(flag, userTarget, context);\n }\n return undefined;\n }\n return evalTarget(flag, target, context);\n });\n}\nexports.default = evalTargets;\n//# sourceMappingURL=evalTargets.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nfunction makeBigSegmentRef(segment) {\n // The format of Big Segment references is independent of what store implementation is being\n // used; the store implementation receives only this string and does not know the details of\n // the data model. The Relay Proxy will use the same format when writing to the store.\n return `${segment.key}.g${segment.generation}`;\n}\nexports.default = makeBigSegmentRef;\n//# sourceMappingURL=makeBigSegmentRef.js.map","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst semver_1 = require(\"semver\");\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst VERSION_COMPONENTS_REGEX = /^\\d+(\\.\\d+)?(\\.\\d+)?/;\nfunction parseSemver(input) {\n // A leading 'v' is not supported by the standard, but may be by the semver library.\n if (js_sdk_common_1.TypeValidators.String.is(input) && !input.startsWith('v')) {\n // If the input is able to be parsed, then return that.\n const parsed = (0, semver_1.parse)(input);\n if (parsed) {\n return parsed;\n }\n // If not, then we are going to make some exceptions to the format.\n // Specifically semver requires 3 components, but we allow versions with\n // less. For instance we allow '1' to be equivalent to '1.0.0'.\n const components = VERSION_COMPONENTS_REGEX.exec(input);\n if (components) {\n let transformed = components[0];\n // Start after the match.\n for (let i = 1; i < components.length; i += 1) {\n // The regex will return a match followed by each group.\n // Unmatched groups are 'undefined'.\n // So we will always have 3 entries, the match and 2 groups.\n // For each missing group we need to append a '.0' until we have the\n // standard 3.\n if (components[i] === undefined) {\n transformed += '.0';\n }\n }\n // If the original version contains pre-release information like '-beta.1',\n // then this will re-incorporate that into the string.\n transformed += input.substring(components[0].length);\n return (0, semver_1.parse)(transformed);\n }\n }\n return null;\n}\nfunction semVerOperator(fn) {\n return (a, b) => {\n const aVer = parseSemver(a);\n const bVer = parseSemver(b);\n return !!(aVer && bVer && fn(aVer, bVer));\n };\n}\nfunction makeOperator(fn, validator, converter) {\n return (a, b) => {\n if (validator.is(a) && validator.is(b)) {\n if (converter) {\n return fn(converter(a), converter(b));\n }\n return fn(a, b);\n }\n return false;\n };\n}\nfunction parseDate(input) {\n // Before calling this function we know the value is a date in a number\n // or as a string.\n if (typeof input === 'number') {\n return input;\n }\n return Date.parse(input);\n}\nfunction safeRegexMatch(pattern, value) {\n try {\n return new RegExp(pattern).test(value);\n }\n catch (_a) {\n return false;\n }\n}\nconst operators = {\n in: (a, b) => a === b,\n endsWith: makeOperator((a, b) => a.endsWith(b), js_sdk_common_1.TypeValidators.String),\n startsWith: makeOperator((a, b) => a.startsWith(b), js_sdk_common_1.TypeValidators.String),\n matches: makeOperator((value, pattern) => safeRegexMatch(pattern, value), js_sdk_common_1.TypeValidators.String),\n contains: makeOperator((a, b) => a.indexOf(b) > -1, js_sdk_common_1.TypeValidators.String),\n lessThan: makeOperator((a, b) => a < b, js_sdk_common_1.TypeValidators.Number),\n lessThanOrEqual: makeOperator((a, b) => a <= b, js_sdk_common_1.TypeValidators.Number),\n greaterThan: makeOperator((a, b) => a > b, js_sdk_common_1.TypeValidators.Number),\n greaterThanOrEqual: makeOperator((a, b) => a >= b, js_sdk_common_1.TypeValidators.Number),\n before: makeOperator((a, b) => a < b, js_sdk_common_1.TypeValidators.Date, parseDate),\n after: makeOperator((a, b) => a > b, js_sdk_common_1.TypeValidators.Date, parseDate),\n semVerEqual: semVerOperator((a, b) => a.compare(b) === 0),\n semVerLessThan: semVerOperator((a, b) => a.compare(b) < 0),\n semVerGreaterThan: semVerOperator((a, b) => a.compare(b) > 0),\n};\n/**\n * Allows checking if a specific operator is defined and allows execution of an operator on data.\n *\n * @internal\n */\nclass Operators {\n static is(op) {\n return Object.prototype.hasOwnProperty.call(operators, op);\n }\n static execute(op, a, b) {\n var _a, _b;\n return (_b = (_a = operators[op]) === null || _a === void 0 ? void 0 : _a.call(operators, a, b)) !== null && _b !== void 0 ? _b : false;\n }\n}\nexports.default = Operators;\n//# sourceMappingURL=Operations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Operations_1 = require(\"./Operations\");\nfunction maybeNegate(clause, value) {\n if (clause.negate) {\n return !value;\n }\n return value;\n}\nfunction matchAny(op, value, values) {\n return values.some((testValue) => Operations_1.default.execute(op, value, testValue));\n}\n/**\n * Match a clause against a context.\n * @param clause The clause to match against a context.\n * @param context The context to match.\n * @returns True if the clause matches.\n *\n * @internal\n */\nfunction matchClauseWithoutSegmentOperations(clause, context) {\n const contextValue = context.valueForKind(clause.attributeReference, clause.contextKind);\n if (contextValue === null || contextValue === undefined) {\n return false;\n }\n if (Array.isArray(contextValue)) {\n return maybeNegate(clause, contextValue.some((value) => matchAny(clause.op, value, clause.values)));\n }\n return maybeNegate(clause, matchAny(clause.op, contextValue, clause.values));\n}\nexports.default = matchClauseWithoutSegmentOperations;\n//# sourceMappingURL=matchClause.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction segmentSearch(context, contextTargets, userTargets) {\n if (contextTargets) {\n for (let targetIndex = 0; targetIndex < contextTargets.length; targetIndex += 1) {\n const target = contextTargets[targetIndex];\n const key = context.key(target.contextKind);\n if (key && target.values.includes(key)) {\n return true;\n }\n }\n }\n if (userTargets) {\n const userKey = context.key('user');\n if (userKey) {\n if (userTargets.includes(userKey)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction matchSegmentTargets(segment, context) {\n const included = segmentSearch(context, segment.includedContexts, segment.included);\n if (included) {\n return true;\n }\n const excluded = segmentSearch(context, segment.excludedContexts, segment.excluded);\n if (excluded) {\n // The match was an exclusion, so it should be negated.\n return !excluded;\n }\n return undefined;\n}\nexports.default = matchSegmentTargets;\n//# sourceMappingURL=matchSegmentTargets.js.map","\"use strict\";\n/* eslint-disable class-methods-use-this */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Bucketer_1 = require(\"./Bucketer\");\nconst collection_1 = require(\"./collection\");\nconst ErrorKinds_1 = require(\"./ErrorKinds\");\nconst EvalResult_1 = require(\"./EvalResult\");\nconst evalTargets_1 = require(\"./evalTargets\");\nconst makeBigSegmentRef_1 = require(\"./makeBigSegmentRef\");\nconst matchClause_1 = require(\"./matchClause\");\nconst matchSegmentTargets_1 = require(\"./matchSegmentTargets\");\nconst Reasons_1 = require(\"./Reasons\");\nconst variations_1 = require(\"./variations\");\nconst bigSegmentsStatusPriority = {\n HEALTHY: 1,\n STALE: 2,\n STORE_ERROR: 3,\n NOT_CONFIGURED: 4,\n};\nfunction getBigSegmentsStatusPriority(status) {\n if (status !== undefined) {\n return bigSegmentsStatusPriority[status] || 0;\n }\n return 0;\n}\n/**\n * Given two big segment statuses return the one with the higher priority.\n * @returns The status with the higher priority.\n */\nfunction computeUpdatedBigSegmentsStatus(old, latest) {\n if (old !== undefined &&\n getBigSegmentsStatusPriority(old) > getBigSegmentsStatusPriority(latest)) {\n return old;\n }\n return latest;\n}\nclass EvalState {\n}\nclass Match {\n constructor(isMatch) {\n this.isMatch = isMatch;\n this.error = false;\n }\n}\nclass MatchError {\n constructor(result) {\n this.result = result;\n this.error = true;\n this.isMatch = false;\n }\n}\n/**\n * @internal\n */\nclass Evaluator {\n constructor(platform, queries) {\n this.queries = queries;\n this.bucketer = new Bucketer_1.default(platform.crypto);\n }\n async evaluate(flag, context, eventFactory) {\n const state = new EvalState();\n const res = await this.evaluateInternal(flag, context, state, [], eventFactory);\n if (state.bigSegmentsStatus) {\n res.detail.reason = Object.assign(Object.assign({}, res.detail.reason), { bigSegmentsStatus: state.bigSegmentsStatus });\n }\n res.events = state.events;\n return res;\n }\n /**\n * Evaluate the given flag against the given context. This internal method is entered\n * initially from the external evaluation method, but may be recursively executed during\n * prerequisite evaluations.\n * @param flag The flag to evaluate.\n * @param context The context to evaluate the flag against.\n * @param state The current evaluation state.\n * @param visitedFlags The flags that have been visited during this evaluation.\n * This is not part of the state, because it needs to be forked during prerequisite evaluations.\n */\n async evaluateInternal(flag, context, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n state, visitedFlags, eventFactory) {\n if (!flag.on) {\n return (0, variations_1.getOffVariation)(flag, Reasons_1.default.Off);\n }\n const prereqResult = await this.checkPrerequisites(flag, context, state, visitedFlags, eventFactory);\n // If there is a prereq result, then prereqs have failed, or there was\n // an error.\n if (prereqResult) {\n return prereqResult;\n }\n const targetRes = (0, evalTargets_1.default)(flag, context);\n if (targetRes) {\n return targetRes;\n }\n const ruleRes = await this.evaluateRules(flag, context, state);\n if (ruleRes) {\n return ruleRes;\n }\n return this.variationForContext(flag.fallthrough, context, flag, Reasons_1.default.Fallthrough);\n }\n /**\n * Evaluate the prerequisite flags for the given flag.\n * @param flag The flag to evaluate prerequisites for.\n * @param context The context to evaluate the prerequisites against.\n * @param state used to accumulate prerequisite events.\n * @param visitedFlags Used to detect cycles in prerequisite evaluation.\n * @returns An {@link EvalResult} containing an error result or `undefined` if the prerequisites\n * are met.\n */\n async checkPrerequisites(flag, context, state, visitedFlags, eventFactory) {\n let prereqResult;\n if (!flag.prerequisites || !flag.prerequisites.length) {\n return undefined;\n }\n // On any error conditions the prereq result will be set, so we do not need\n // the result of the series evaluation.\n await (0, collection_1.allSeriesAsync)(flag.prerequisites, async (prereq) => {\n var _a;\n if (visitedFlags.indexOf(prereq.key) !== -1) {\n prereqResult = EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, `Prerequisite of ${flag.key} causing a circular reference.` +\n ' This is probably a temporary condition due to an incomplete update.');\n return false;\n }\n const updatedVisitedFlags = [...visitedFlags, prereq.key];\n const prereqFlag = await this.queries.getFlag(prereq.key);\n if (!prereqFlag) {\n prereqResult = (0, variations_1.getOffVariation)(flag, Reasons_1.default.prerequisiteFailed(prereq.key));\n return false;\n }\n const evalResult = await this.evaluateInternal(prereqFlag, context, state, updatedVisitedFlags, eventFactory);\n // eslint-disable-next-line no-param-reassign\n state.events = (_a = state.events) !== null && _a !== void 0 ? _a : [];\n if (eventFactory) {\n state.events.push(eventFactory.evalEvent(prereqFlag, context, evalResult.detail, null, flag));\n }\n if (evalResult.isError) {\n prereqResult = evalResult;\n return false;\n }\n if (evalResult.isOff || evalResult.detail.variationIndex !== prereq.variation) {\n prereqResult = (0, variations_1.getOffVariation)(flag, Reasons_1.default.prerequisiteFailed(prereq.key));\n return false;\n }\n return true;\n });\n if (prereqResult) {\n return prereqResult;\n }\n // There were no prereqResults for errors or failed prerequisites.\n // So they have all passed.\n return undefined;\n }\n /**\n * Evaluate the rules for a flag and return an {@link EvalResult} if there is\n * a match or error.\n * @param flag The flag to evaluate rules for.\n * @param context The context to evaluate the rules against.\n * @param state The current evaluation state.\n * @returns\n */\n async evaluateRules(flag, context, state) {\n let ruleResult;\n await (0, collection_1.firstSeriesAsync)(flag.rules, async (rule, ruleIndex) => {\n ruleResult = await this.ruleMatchContext(flag, rule, ruleIndex, context, state, []);\n return !!ruleResult;\n });\n return ruleResult;\n }\n async clauseMatchContext(clause, context, segmentsVisited, state) {\n let errorResult;\n if (clause.op === 'segmentMatch') {\n const match = await (0, collection_1.firstSeriesAsync)(clause.values, async (value) => {\n const segment = await this.queries.getSegment(value);\n if (segment) {\n if (segmentsVisited.includes(segment.key)) {\n errorResult = EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, `Segment rule referencing segment ${segment.key} caused a circular reference. ` +\n 'This is probably a temporary condition due to an incomplete update');\n // There was an error, so stop checking further segments.\n return true;\n }\n const newVisited = [...segmentsVisited, segment === null || segment === void 0 ? void 0 : segment.key];\n const res = await this.segmentMatchContext(segment, context, state, newVisited);\n if (res.error) {\n errorResult = res.result;\n }\n return res.error || res.isMatch;\n }\n return false;\n });\n if (errorResult) {\n return new MatchError(errorResult);\n }\n return new Match(match);\n }\n // This is after segment matching, which does not use the reference.\n if (!clause.attributeReference.isValid) {\n return new MatchError(EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference in clause'));\n }\n return new Match((0, matchClause_1.default)(clause, context));\n }\n /**\n * Evaluate a flag rule against the given context.\n * @param flag The flag the rule is part of.\n * @param rule The rule to match.\n * @param rule The index of the rule.\n * @param context The context to match the rule against.\n * @returns An {@link EvalResult} or `undefined` if there are no matches or errors.\n */\n async ruleMatchContext(flag, rule, ruleIndex, context, state, segmentsVisited) {\n if (!rule.clauses) {\n return undefined;\n }\n let errorResult;\n const match = await (0, collection_1.allSeriesAsync)(rule.clauses, async (clause) => {\n const res = await this.clauseMatchContext(clause, context, segmentsVisited, state);\n errorResult = res.result;\n return res.error || res.isMatch;\n });\n if (errorResult) {\n return errorResult;\n }\n if (match) {\n return this.variationForContext(rule, context, flag, Reasons_1.default.ruleMatch(rule.id, ruleIndex));\n }\n return undefined;\n }\n variationForContext(varOrRollout, context, flag, reason) {\n if (varOrRollout === undefined) {\n // By spec this field should be defined, but better to be overly cautious.\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Fallthrough variation undefined');\n }\n if (varOrRollout.variation !== undefined) {\n // 0 would be false.\n return (0, variations_1.getVariation)(flag, varOrRollout.variation, reason);\n }\n if (varOrRollout.rollout) {\n const { rollout } = varOrRollout;\n const { variations } = rollout;\n const isExperiment = rollout.kind === 'experiment';\n if (variations && variations.length) {\n const bucketBy = (0, variations_1.getBucketBy)(isExperiment, rollout.bucketByAttributeReference);\n if (!bucketBy.isValid) {\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference for bucketBy in rollout');\n }\n const [bucket, hadContext] = this.bucketer.bucket(context, flag.key, bucketBy, flag.salt || '', rollout.contextKind, rollout.seed);\n const updatedReason = Object.assign({}, reason);\n let sum = 0;\n for (let i = 0; i < variations.length; i += 1) {\n const variate = variations[i];\n sum += variate.weight / 100000.0;\n if (bucket < sum) {\n if (isExperiment && hadContext && !variate.untracked) {\n updatedReason.inExperiment = true;\n }\n return (0, variations_1.getVariation)(flag, variate.variation, updatedReason);\n }\n }\n // The context's bucket value was greater than or equal to the end of\n // the last bucket. This could happen due to a rounding error, or due to\n // the fact that we are scaling to 100000 rather than 99999, or the flag\n // data could contain buckets that don't actually add up to 100000.\n // Rather than returning an error in this case (or changing the scaling,\n // which would potentially change the results for *all* users), we will\n // simply put the context in the last bucket.\n const lastVariate = variations[variations.length - 1];\n if (isExperiment && !lastVariate.untracked) {\n updatedReason.inExperiment = true;\n }\n return (0, variations_1.getVariation)(flag, lastVariate.variation, updatedReason);\n }\n }\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Variation/rollout object with no variation or rollout');\n }\n async segmentRuleMatchContext(segment, rule, context, state, segmentsVisited) {\n let errorResult;\n const match = await (0, collection_1.allSeriesAsync)(rule.clauses, async (clause) => {\n const res = await this.clauseMatchContext(clause, context, segmentsVisited, state);\n errorResult = res.result;\n return res.error || res.isMatch;\n });\n if (errorResult) {\n return new MatchError(errorResult);\n }\n if (match) {\n if (rule.weight === undefined) {\n return new Match(match);\n }\n const bucketBy = (0, variations_1.getBucketBy)(false, rule.bucketByAttributeReference);\n if (!bucketBy.isValid) {\n return new MatchError(EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference in clause'));\n }\n const [bucket] = this.bucketer.bucket(context, segment.key, bucketBy, segment.salt || '', rule.rolloutContextKind);\n return new Match(bucket < rule.weight / 100000.0);\n }\n return new Match(false);\n }\n // eslint-disable-next-line class-methods-use-this\n async simpleSegmentMatchContext(segment, context, state, segmentsVisited) {\n if (!segment.unbounded) {\n const includeExclude = (0, matchSegmentTargets_1.default)(segment, context);\n if (includeExclude !== undefined) {\n return new Match(includeExclude);\n }\n }\n let evalResult;\n const matched = await (0, collection_1.firstSeriesAsync)(segment.rules, async (rule) => {\n const res = await this.segmentRuleMatchContext(segment, rule, context, state, segmentsVisited);\n evalResult = res.result;\n return res.error || res.isMatch;\n });\n if (evalResult) {\n return new MatchError(evalResult);\n }\n return new Match(matched);\n }\n async segmentMatchContext(segment, context, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n state, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n segmentsVisited) {\n if (!segment.unbounded) {\n return this.simpleSegmentMatchContext(segment, context, state, segmentsVisited);\n }\n const bigSegmentKind = segment.unboundedContextKind || 'user';\n const keyForBigSegment = context.key(bigSegmentKind);\n if (!keyForBigSegment) {\n return new Match(false);\n }\n if (!segment.generation) {\n // Big Segment queries can only be done if the generation is known. If it's unset,\n // that probably means the data store was populated by an older SDK that doesn't know\n // about the generation property and therefore dropped it from the JSON data. We'll treat\n // that as a \"not configured\" condition.\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, 'NOT_CONFIGURED');\n return new Match(false);\n }\n if (state.bigSegmentsMembership && state.bigSegmentsMembership[keyForBigSegment]) {\n // We've already done the query at some point during the flag evaluation and stored\n // the result (if any) in stateOut.bigSegmentsMembership, so we don't need to do it\n // again. Even if multiple Big Segments are being referenced, the membership includes\n // *all* of the user's segment memberships.\n return this.bigSegmentMatchContext(state.bigSegmentsMembership[keyForBigSegment], segment, context, state);\n }\n const result = await this.queries.getBigSegmentsMembership(keyForBigSegment);\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsMembership = state.bigSegmentsMembership || {};\n if (result) {\n const [membership, status] = result;\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsMembership[keyForBigSegment] = membership;\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, status);\n }\n else {\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, 'NOT_CONFIGURED');\n }\n /* eslint-enable no-param-reassign */\n return this.bigSegmentMatchContext(state.bigSegmentsMembership[keyForBigSegment], segment, context, state);\n }\n async bigSegmentMatchContext(membership, segment, context, state) {\n const segmentRef = (0, makeBigSegmentRef_1.default)(segment);\n const included = membership === null || membership === void 0 ? void 0 : membership[segmentRef];\n // Typically null is not checked because we filter it from the data\n // we get in flag updates. Here it is checked because big segment data\n // will be contingent on the store that implements it.\n if (included !== undefined && included !== null) {\n return new Match(included);\n }\n return this.simpleSegmentMatchContext(segment, context, state, []);\n }\n}\nexports.default = Evaluator;\n//# sourceMappingURL=Evaluator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LruCache_1 = require(\"../cache/LruCache\");\nclass ContextDeduplicator {\n constructor(options) {\n this.contextKeysCache = new LruCache_1.default({ max: options.contextKeysCapacity });\n this.flushInterval = options.contextKeysFlushInterval;\n }\n processContext(context) {\n const { canonicalKey } = context;\n const inCache = this.contextKeysCache.get(canonicalKey);\n this.contextKeysCache.set(canonicalKey, true);\n // If it is in the cache, then we do not want to add an event.\n return !inCache;\n }\n flush() {\n this.contextKeysCache.clear();\n }\n}\nexports.default = ContextDeduplicator;\n//# sourceMappingURL=ContextDeduplicator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InMemoryFeatureStore {\n constructor() {\n this.allData = {};\n this.initCalled = false;\n }\n addItem(kind, key, item) {\n let items = this.allData[kind.namespace];\n if (!items) {\n items = {};\n this.allData[kind.namespace] = items;\n }\n if (Object.hasOwnProperty.call(items, key)) {\n const old = items[key];\n if (!old || old.version < item.version) {\n items[key] = item;\n }\n }\n else {\n items[key] = item;\n }\n }\n get(kind, key, callback) {\n const items = this.allData[kind.namespace];\n if (items) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n const item = items[key];\n if (item && !item.deleted) {\n return callback === null || callback === void 0 ? void 0 : callback(item);\n }\n }\n }\n return callback === null || callback === void 0 ? void 0 : callback(null);\n }\n all(kind, callback) {\n var _a;\n const result = {};\n const items = (_a = this.allData[kind.namespace]) !== null && _a !== void 0 ? _a : {};\n Object.entries(items).forEach(([key, item]) => {\n if (item && !item.deleted) {\n result[key] = item;\n }\n });\n callback === null || callback === void 0 ? void 0 : callback(result);\n }\n init(allData, callback) {\n this.initCalled = true;\n this.allData = allData;\n callback === null || callback === void 0 ? void 0 : callback();\n }\n delete(kind, key, version, callback) {\n const deletedItem = { version, deleted: true };\n this.addItem(kind, key, deletedItem);\n callback === null || callback === void 0 ? void 0 : callback();\n }\n upsert(kind, data, callback) {\n this.addItem(kind, data.key, data);\n callback === null || callback === void 0 ? void 0 : callback();\n }\n initialized(callback) {\n return callback === null || callback === void 0 ? void 0 : callback(this.initCalled);\n }\n /* eslint-disable class-methods-use-this */\n close() {\n // For the memory store this is a no-op.\n }\n getDescription() {\n return 'memory';\n }\n}\nexports.default = InMemoryFeatureStore;\n//# sourceMappingURL=InMemoryFeatureStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultValues = void 0;\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst InMemoryFeatureStore_1 = require(\"../store/InMemoryFeatureStore\");\n// Once things are internal to the implementation of the SDK we can depend on\n// types. Calls to the SDK could contain anything without any regard to typing.\n// So, data we take from external sources must be normalized into something\n// that can be trusted.\n/**\n * These perform cursory validations. Complex objects are implemented with classes\n * and these should allow for conditional construction.\n */\nconst validations = {\n baseUri: js_sdk_common_1.TypeValidators.String,\n streamUri: js_sdk_common_1.TypeValidators.String,\n eventsUri: js_sdk_common_1.TypeValidators.String,\n timeout: js_sdk_common_1.TypeValidators.Number,\n capacity: js_sdk_common_1.TypeValidators.Number,\n logger: js_sdk_common_1.TypeValidators.Object,\n featureStore: js_sdk_common_1.TypeValidators.ObjectOrFactory,\n bigSegments: js_sdk_common_1.TypeValidators.Object,\n updateProcessor: js_sdk_common_1.TypeValidators.ObjectOrFactory,\n flushInterval: js_sdk_common_1.TypeValidators.Number,\n pollInterval: js_sdk_common_1.TypeValidators.numberWithMin(30),\n proxyOptions: js_sdk_common_1.TypeValidators.Object,\n offline: js_sdk_common_1.TypeValidators.Boolean,\n stream: js_sdk_common_1.TypeValidators.Boolean,\n streamInitialReconnectDelay: js_sdk_common_1.TypeValidators.Number,\n useLdd: js_sdk_common_1.TypeValidators.Boolean,\n sendEvents: js_sdk_common_1.TypeValidators.Boolean,\n allAttributesPrivate: js_sdk_common_1.TypeValidators.Boolean,\n privateAttributes: js_sdk_common_1.TypeValidators.StringArray,\n contextKeysCapacity: js_sdk_common_1.TypeValidators.Number,\n contextKeysFlushInterval: js_sdk_common_1.TypeValidators.Number,\n tlsParams: js_sdk_common_1.TypeValidators.Object,\n diagnosticOptOut: js_sdk_common_1.TypeValidators.Boolean,\n diagnosticRecordingInterval: js_sdk_common_1.TypeValidators.numberWithMin(60),\n wrapperName: js_sdk_common_1.TypeValidators.String,\n wrapperVersion: js_sdk_common_1.TypeValidators.String,\n application: js_sdk_common_1.TypeValidators.Object,\n};\n/**\n * @internal\n */\nexports.defaultValues = {\n baseUri: 'https://sdk.launchdarkly.com',\n streamUri: 'https://stream.launchdarkly.com',\n eventsUri: 'https://events.launchdarkly.com',\n stream: true,\n streamInitialReconnectDelay: 1,\n sendEvents: true,\n timeout: 5,\n capacity: 10000,\n flushInterval: 5,\n pollInterval: 30,\n offline: false,\n useLdd: false,\n allAttributesPrivate: false,\n privateAttributes: [],\n contextKeysCapacity: 1000,\n contextKeysFlushInterval: 300,\n diagnosticOptOut: false,\n diagnosticRecordingInterval: 900,\n featureStore: () => new InMemoryFeatureStore_1.default(),\n};\nfunction validateTypesAndNames(options) {\n const errors = [];\n const validatedOptions = Object.assign({}, exports.defaultValues);\n Object.keys(options).forEach((optionName) => {\n var _a;\n // We need to tell typescript it doesn't actually know what options are.\n // If we don't then it complains we are doing crazy things with it.\n const optionValue = options[optionName];\n const validator = validations[optionName];\n if (validator) {\n if (!validator.is(optionValue)) {\n if (validator.getType() === 'boolean') {\n errors.push(js_sdk_common_1.OptionMessages.wrongOptionTypeBoolean(optionName, typeof optionValue));\n validatedOptions[optionName] = !!optionValue;\n }\n else if (validator instanceof js_sdk_common_1.NumberWithMinimum &&\n js_sdk_common_1.TypeValidators.Number.is(optionValue)) {\n const { min } = validator;\n errors.push(js_sdk_common_1.OptionMessages.optionBelowMinimum(optionName, optionValue, min));\n validatedOptions[optionName] = min;\n }\n else {\n errors.push(js_sdk_common_1.OptionMessages.wrongOptionType(optionName, validator.getType(), typeof optionValue));\n validatedOptions[optionName] = exports.defaultValues[optionName];\n }\n }\n else {\n validatedOptions[optionName] = optionValue;\n }\n }\n else {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(js_sdk_common_1.OptionMessages.unknownOption(optionName));\n }\n });\n return { errors, validatedOptions };\n}\nfunction validateEndpoints(options, validatedOptions) {\n var _a, _b, _c;\n const { baseUri, streamUri, eventsUri } = options;\n const streamingEndpointSpecified = streamUri !== undefined && streamUri !== null;\n const pollingEndpointSpecified = baseUri !== undefined && baseUri !== null;\n const eventEndpointSpecified = eventsUri !== undefined && eventsUri !== null;\n if (streamingEndpointSpecified === pollingEndpointSpecified &&\n streamingEndpointSpecified === eventEndpointSpecified) {\n // Either everything is default, or everything is set.\n return;\n }\n if (!streamingEndpointSpecified && validatedOptions.stream) {\n (_a = validatedOptions.logger) === null || _a === void 0 ? void 0 : _a.warn(js_sdk_common_1.OptionMessages.partialEndpoint('streamUri'));\n }\n if (!pollingEndpointSpecified) {\n (_b = validatedOptions.logger) === null || _b === void 0 ? void 0 : _b.warn(js_sdk_common_1.OptionMessages.partialEndpoint('baseUri'));\n }\n if (!eventEndpointSpecified && validatedOptions.sendEvents) {\n (_c = validatedOptions.logger) === null || _c === void 0 ? void 0 : _c.warn(js_sdk_common_1.OptionMessages.partialEndpoint('eventsUri'));\n }\n}\n/**\n * Configuration options for the LDClient.\n *\n * @internal\n */\nclass Configuration {\n constructor(options = {}) {\n // The default will handle undefined, but not null.\n // Because we can be called from JS we need to be extra defensive.\n // eslint-disable-next-line no-param-reassign\n options = options || {};\n // If there isn't a valid logger from the platform, then logs would go nowhere.\n this.logger = options.logger;\n const { errors, validatedOptions } = validateTypesAndNames(options);\n errors.forEach((error) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(error);\n });\n validateEndpoints(options, validatedOptions);\n this.serviceEndpoints = new js_sdk_common_1.ServiceEndpoints(validatedOptions.streamUri, validatedOptions.baseUri, validatedOptions.eventsUri);\n this.eventsCapacity = validatedOptions.capacity;\n this.timeout = validatedOptions.timeout;\n this.bigSegments = validatedOptions.bigSegments;\n this.flushInterval = validatedOptions.flushInterval;\n this.pollInterval = validatedOptions.pollInterval;\n this.proxyOptions = validatedOptions.proxyOptions;\n this.offline = validatedOptions.offline;\n this.stream = validatedOptions.stream;\n this.streamInitialReconnectDelay = validatedOptions.streamInitialReconnectDelay;\n this.useLdd = validatedOptions.useLdd;\n this.sendEvents = validatedOptions.sendEvents;\n this.allAttributesPrivate = validatedOptions.allAttributesPrivate;\n this.privateAttributes = validatedOptions.privateAttributes;\n this.contextKeysCapacity = validatedOptions.contextKeysCapacity;\n this.contextKeysFlushInterval = validatedOptions.contextKeysFlushInterval;\n this.tlsParams = validatedOptions.tlsParams;\n this.diagnosticOptOut = validatedOptions.diagnosticOptOut;\n this.wrapperName = validatedOptions.wrapperName;\n this.wrapperVersion = validatedOptions.wrapperVersion;\n this.tags = new js_sdk_common_1.ApplicationTags(validatedOptions);\n this.diagnosticRecordingInterval = validatedOptions.diagnosticRecordingInterval;\n if (js_sdk_common_1.TypeValidators.Function.is(validatedOptions.updateProcessor)) {\n // @ts-ignore\n this.updateProcessorFactory = validatedOptions.updateProcessor;\n }\n else {\n // The processor is already created, just have the method return it.\n // @ts-ignore\n this.updateProcessorFactory = () => validatedOptions.updateProcessor;\n }\n if (js_sdk_common_1.TypeValidators.Function.is(validatedOptions.featureStore)) {\n // @ts-ignore\n this.featureStoreFactory = validatedOptions.featureStore;\n }\n else {\n // The store is already created, just have the method return it.\n // @ts-ignore\n this.featureStoreFactory = () => validatedOptions.featureStore;\n }\n }\n}\nexports.default = Configuration;\n//# sourceMappingURL=Configuration.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Configuration_1 = require(\"../options/Configuration\");\nfunction secondsToMillis(sec) {\n return Math.trunc(sec * 1000);\n}\n/**\n * Maintains information for diagnostic events.\n *\n * @internal\n */\nclass DiagnosticsManager {\n constructor(sdkKey, config, platform, featureStore) {\n this.config = config;\n this.platform = platform;\n this.featureStore = featureStore;\n this.streamInits = [];\n this.startTime = Date.now();\n this.dataSinceDate = this.startTime;\n this.id = {\n diagnosticId: platform.crypto.randomUUID(),\n sdkKeySuffix: sdkKey.length > 6 ? sdkKey.substring(sdkKey.length - 6) : sdkKey,\n };\n }\n /**\n * Creates the initial event that is sent by the event processor when the SDK starts up. This will\n * not be repeated during the lifetime of the SDK client.\n */\n createInitEvent() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n const sdkData = this.platform.info.sdkData();\n const platformData = this.platform.info.platformData();\n return {\n kind: 'diagnostic-init',\n id: this.id,\n creationDate: this.startTime,\n sdk: sdkData,\n configuration: {\n customBaseURI: this.config.serviceEndpoints.polling !== Configuration_1.defaultValues.baseUri,\n customStreamURI: this.config.serviceEndpoints.streaming !== Configuration_1.defaultValues.streamUri,\n customEventsURI: this.config.serviceEndpoints.events !== Configuration_1.defaultValues.eventsUri,\n eventsCapacity: this.config.eventsCapacity,\n // Node doesn't distinguish between these two kinds of timeouts. It is unlikely other web\n // based implementations would be able to either.\n connectTimeoutMillis: secondsToMillis(this.config.timeout),\n socketTimeoutMillis: secondsToMillis(this.config.timeout),\n eventsFlushIntervalMillis: secondsToMillis(this.config.flushInterval),\n pollingIntervalMillis: secondsToMillis(this.config.pollInterval),\n reconnectTimeMillis: secondsToMillis(this.config.streamInitialReconnectDelay),\n streamingDisabled: !this.config.stream,\n usingRelayDaemon: this.config.useLdd,\n offline: this.config.offline,\n allAttributesPrivate: this.config.allAttributesPrivate,\n contextKeysCapacity: this.config.contextKeysCapacity,\n contextKeysFlushIntervalMillis: secondsToMillis(this.config.contextKeysFlushInterval),\n usingProxy: !!((_b = (_a = this.platform.requests).usingProxy) === null || _b === void 0 ? void 0 : _b.call(_a)),\n usingProxyAuthenticator: !!((_d = (_c = this.platform.requests).usingProxyAuth) === null || _d === void 0 ? void 0 : _d.call(_c)),\n diagnosticRecordingIntervalMillis: secondsToMillis(this.config.diagnosticRecordingInterval),\n dataStoreType: (_g = (_f = (_e = this.featureStore).getDescription) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : 'memory',\n },\n platform: Object.assign({ name: platformData.name, osArch: (_h = platformData.os) === null || _h === void 0 ? void 0 : _h.arch, osName: (_j = platformData.os) === null || _j === void 0 ? void 0 : _j.name, osVersion: (_k = platformData.os) === null || _k === void 0 ? void 0 : _k.version }, (platformData.additional || {})),\n };\n }\n /**\n * Records a stream connection attempt (called by the stream processor).\n *\n * @param timestamp Time of the *beginning* of the connection attempt.\n * @param failed True if the connection failed, or we got a read timeout before receiving a \"put\".\n * @param durationMillis Elapsed time between starting timestamp and when we either gave up/lost\n * the connection or received a successful \"put\".\n */\n recordStreamInit(timestamp, failed, durationMillis) {\n const item = { timestamp, failed, durationMillis };\n this.streamInits.push(item);\n }\n /**\n * Creates a periodic event containing time-dependent stats, and resets the state of the manager\n * with regard to those stats.\n *\n * Note: the reason droppedEvents, deduplicatedUsers, and eventsInLastBatch are passed into this\n * function, instead of being properties of the DiagnosticsManager, is that the event processor is\n * the one who's calling this function and is also the one who's tracking those stats.\n */\n createStatsEventAndReset(droppedEvents, deduplicatedUsers, eventsInLastBatch) {\n const currentTime = Date.now();\n const evt = {\n kind: 'diagnostic',\n id: this.id,\n creationDate: currentTime,\n dataSinceDate: this.dataSinceDate,\n droppedEvents,\n deduplicatedUsers,\n eventsInLastBatch,\n streamInits: this.streamInits,\n };\n this.streamInits = [];\n this.dataSinceDate = currentTime;\n return evt;\n }\n}\nexports.default = DiagnosticsManager;\n//# sourceMappingURL=DiagnosticsManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nfunction isExperiment(flag, reason) {\n if (reason) {\n // If the reason says we're in an experiment, we are. Otherwise, apply\n // the legacy rule exclusion logic.\n if (reason.inExperiment) {\n return true;\n }\n switch (reason.kind) {\n case 'RULE_MATCH': {\n const index = reason.ruleIndex;\n if (index !== undefined) {\n const rules = flag.rules || [];\n return index >= 0 && index < rules.length && !!rules[index].trackEvents;\n }\n break;\n }\n case 'FALLTHROUGH':\n return !!flag.trackEventsFallthrough;\n default:\n // No action needed.\n }\n }\n return false;\n}\nexports.default = isExperiment;\n//# sourceMappingURL=isExperiment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst isExperiment_1 = require(\"./isExperiment\");\n/**\n * @internal\n */\nclass EventFactory {\n constructor(withReasons) {\n this.withReasons = withReasons;\n }\n evalEvent(flag, context, detail, defaultVal, prereqOfFlag) {\n var _a;\n const addExperimentData = (0, isExperiment_1.default)(flag, detail.reason);\n return new js_sdk_common_1.internal.InputEvalEvent(this.withReasons, context, flag.key, defaultVal, detail, flag.version, \n // Exclude null as a possibility.\n (_a = detail.variationIndex) !== null && _a !== void 0 ? _a : undefined, flag.trackEvents || addExperimentData, prereqOfFlag === null || prereqOfFlag === void 0 ? void 0 : prereqOfFlag.key, this.withReasons || addExperimentData ? detail.reason : undefined, flag.debugEventsUntilDate);\n }\n unknownFlagEvent(key, context, detail) {\n return new js_sdk_common_1.internal.InputEvalEvent(this.withReasons, context, key, detail.value, detail);\n }\n /* eslint-disable-next-line class-methods-use-this */\n identifyEvent(context) {\n return new js_sdk_common_1.internal.InputIdentifyEvent(context);\n }\n /* eslint-disable-next-line class-methods-use-this */\n customEvent(key, context, data, metricValue) {\n return new js_sdk_common_1.internal.InputCustomEvent(context, key, data !== null && data !== void 0 ? data : undefined, metricValue !== null && metricValue !== void 0 ? metricValue : undefined);\n }\n}\nexports.default = EventFactory;\n//# sourceMappingURL=EventFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst defaultHeaders_1 = require(\"../data_sources/defaultHeaders\");\nconst httpErrorMessage_1 = require(\"../data_sources/httpErrorMessage\");\nconst errors_1 = require(\"../errors\");\nclass EventSender {\n constructor(config, clientContext) {\n this.defaultHeaders = Object.assign({}, (0, defaultHeaders_1.default)(clientContext.basicConfiguration.sdkKey, config, clientContext.platform.info));\n this.eventsUri = `${clientContext.basicConfiguration.serviceEndpoints.events}/bulk`;\n this.diagnosticEventsUri = `${clientContext.basicConfiguration.serviceEndpoints.events}/diagnostic`;\n this.requests = clientContext.platform.requests;\n this.crypto = clientContext.platform.crypto;\n }\n async tryPostingEvents(events, uri, payloadId, canRetry) {\n const tryRes = {\n status: js_sdk_common_1.subsystem.LDDeliveryStatus.Succeeded,\n };\n const headers = Object.assign(Object.assign({}, this.defaultHeaders), { 'content-type': 'application/json' });\n if (payloadId) {\n headers['x-launchdarkly-payload-id'] = payloadId;\n headers['x-launchDarkly-event-schema'] = '4';\n }\n let error;\n try {\n const res = await this.requests.fetch(uri, {\n headers,\n body: JSON.stringify(events),\n method: 'POST',\n });\n const serverDate = Date.parse(res.headers.get('date') || '');\n if (serverDate) {\n tryRes.serverTime = serverDate;\n }\n if (res.status <= 204) {\n return tryRes;\n }\n error = new errors_1.LDUnexpectedResponseError((0, httpErrorMessage_1.default)({ status: res.status, message: 'some events were dropped' }, 'event posting'));\n if (!(0, errors_1.isHttpRecoverable)(res.status)) {\n tryRes.status = js_sdk_common_1.subsystem.LDDeliveryStatus.FailedAndMustShutDown;\n tryRes.error = error;\n return tryRes;\n }\n }\n catch (err) {\n error = err;\n }\n if (error && !canRetry) {\n tryRes.status = js_sdk_common_1.subsystem.LDDeliveryStatus.Failed;\n tryRes.error = error;\n return tryRes;\n }\n await new Promise((r) => {\n setTimeout(r, 1000);\n });\n return this.tryPostingEvents(events, this.eventsUri, payloadId, false);\n }\n async sendEventData(type, data) {\n const payloadId = type === js_sdk_common_1.subsystem.LDEventType.AnalyticsEvents ? this.crypto.randomUUID() : undefined;\n const uri = type === js_sdk_common_1.subsystem.LDEventType.AnalyticsEvents ? this.eventsUri : this.diagnosticEventsUri;\n return this.tryPostingEvents(data, uri, payloadId, true);\n }\n}\nexports.default = EventSender;\n//# sourceMappingURL=EventSender.js.map","\"use strict\";\n// This is an empty implementation, so it doesn't use this, and it has empty methods, and it\n// has unused variables.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Empty event processor implementation for when events are not desired.\n *\n * @internal\n */\nclass NullEventProcessor {\n close() { }\n async flush() { }\n sendEvent(inputEvent) { }\n}\nexports.default = NullEventProcessor;\n//# sourceMappingURL=NullEventProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass FlagsStateBuilder {\n constructor(valid, withReasons) {\n this.valid = valid;\n this.withReasons = withReasons;\n this.flagValues = {};\n this.flagMetadata = {};\n }\n addFlag(flag, value, variation, reason, trackEvents, trackReason, detailsOnlyIfTracked) {\n this.flagValues[flag.key] = value;\n const meta = {};\n if (variation !== undefined) {\n meta.variation = variation;\n }\n const omitDetails = detailsOnlyIfTracked &&\n !trackEvents &&\n !trackReason &&\n flag.debugEventsUntilDate === undefined; // 0 probably doesn't matter.\n if (!omitDetails) {\n meta.version = flag.version;\n }\n if (reason && (trackReason || (this.withReasons && !omitDetails))) {\n meta.reason = reason;\n }\n if (trackEvents) {\n meta.trackEvents = true;\n }\n if (trackReason) {\n meta.trackReason = true;\n }\n if (flag.debugEventsUntilDate !== undefined) {\n meta.debugEventsUntilDate = flag.debugEventsUntilDate;\n }\n this.flagMetadata[flag.key] = meta;\n }\n build() {\n const state = this;\n return {\n valid: state.valid,\n allValues: () => state.flagValues,\n getFlagValue: (key) => state.flagValues[key],\n getFlagReason: (key) => { var _a; return (_a = (state.flagMetadata[key] ? state.flagMetadata[key].reason : null)) !== null && _a !== void 0 ? _a : null; },\n toJSON: () => (Object.assign(Object.assign({}, state.flagValues), { $flagsState: state.flagMetadata, $valid: state.valid })),\n };\n }\n}\nexports.default = FlagsStateBuilder;\n//# sourceMappingURL=FlagsStateBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A basic wrapper to make async methods with callbacks into promises.\n *\n * @param method\n * @returns A promisified version of the method.\n */\nfunction promisify(method) {\n return new Promise((resolve) => {\n method((val) => {\n resolve(val);\n });\n });\n}\nexports.default = promisify;\n//# sourceMappingURL=promisify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst promisify_1 = require(\"../async/promisify\");\n/**\n * Provides an async interface to a feature store.\n *\n * This allows for using a store using async/await instead of callbacks.\n *\n */\nclass AsyncStoreFacade {\n constructor(store) {\n this.store = store;\n }\n async get(kind, key) {\n return (0, promisify_1.default)((cb) => {\n this.store.get(kind, key, cb);\n });\n }\n async all(kind) {\n return (0, promisify_1.default)((cb) => {\n this.store.all(kind, cb);\n });\n }\n async init(allData) {\n return (0, promisify_1.default)((cb) => {\n this.store.init(allData, cb);\n });\n }\n async delete(kind, key, version) {\n return (0, promisify_1.default)((cb) => {\n this.store.delete(kind, key, version, cb);\n });\n }\n async upsert(kind, data) {\n return (0, promisify_1.default)((cb) => {\n this.store.upsert(kind, data, cb);\n });\n }\n async initialized() {\n return (0, promisify_1.default)((cb) => {\n this.store.initialized(cb);\n });\n }\n close() {\n this.store.close();\n }\n}\nexports.default = AsyncStoreFacade;\n//# sourceMappingURL=AsyncStoreFacade.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-unused-vars */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable class-methods-use-this */\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst BigSegmentsManager_1 = require(\"./BigSegmentsManager\");\nconst ClientMessages_1 = require(\"./ClientMessages\");\nconst DataSourceUpdates_1 = require(\"./data_sources/DataSourceUpdates\");\nconst NullUpdateProcessor_1 = require(\"./data_sources/NullUpdateProcessor\");\nconst PollingProcessor_1 = require(\"./data_sources/PollingProcessor\");\nconst Requestor_1 = require(\"./data_sources/Requestor\");\nconst StreamingProcessor_1 = require(\"./data_sources/StreamingProcessor\");\nconst errors_1 = require(\"./errors\");\nconst collection_1 = require(\"./evaluation/collection\");\nconst ErrorKinds_1 = require(\"./evaluation/ErrorKinds\");\nconst EvalResult_1 = require(\"./evaluation/EvalResult\");\nconst Evaluator_1 = require(\"./evaluation/Evaluator\");\nconst ContextDeduplicator_1 = require(\"./events/ContextDeduplicator\");\nconst DiagnosticsManager_1 = require(\"./events/DiagnosticsManager\");\nconst EventFactory_1 = require(\"./events/EventFactory\");\nconst EventSender_1 = require(\"./events/EventSender\");\nconst isExperiment_1 = require(\"./events/isExperiment\");\nconst NullEventProcessor_1 = require(\"./events/NullEventProcessor\");\nconst FlagsStateBuilder_1 = require(\"./FlagsStateBuilder\");\nconst Configuration_1 = require(\"./options/Configuration\");\nconst AsyncStoreFacade_1 = require(\"./store/AsyncStoreFacade\");\nconst VersionedDataKinds_1 = require(\"./store/VersionedDataKinds\");\nvar InitState;\n(function (InitState) {\n InitState[InitState[\"Initializing\"] = 0] = \"Initializing\";\n InitState[InitState[\"Initialized\"] = 1] = \"Initialized\";\n InitState[InitState[\"Failed\"] = 2] = \"Failed\";\n})(InitState || (InitState = {}));\n/**\n * @ignore\n */\nclass LDClientImpl {\n constructor(sdkKey, platform, options, callbacks) {\n var _a, _b, _c, _d, _e;\n this.sdkKey = sdkKey;\n this.platform = platform;\n this.initState = InitState.Initializing;\n this.eventFactoryDefault = new EventFactory_1.default(false);\n this.eventFactoryWithReasons = new EventFactory_1.default(true);\n this.onError = callbacks.onError;\n this.onFailed = callbacks.onFailed;\n this.onReady = callbacks.onReady;\n const { onUpdate, hasEventListeners } = callbacks;\n const config = new Configuration_1.default(options);\n if (!sdkKey && !config.offline) {\n throw new Error('You must configure the client with an SDK key');\n }\n this.config = config;\n this.logger = config.logger;\n const clientContext = new js_sdk_common_1.ClientContext(sdkKey, config, platform);\n const featureStore = config.featureStoreFactory(clientContext);\n const dataSourceUpdates = new DataSourceUpdates_1.default(featureStore, hasEventListeners, onUpdate);\n if (config.sendEvents && !config.offline && !config.diagnosticOptOut) {\n this.diagnosticsManager = new DiagnosticsManager_1.default(sdkKey, config, platform, featureStore);\n }\n const makeDefaultProcessor = () => config.stream\n ? new StreamingProcessor_1.default(sdkKey, config, this.platform.requests, this.platform.info, dataSourceUpdates, this.diagnosticsManager)\n : new PollingProcessor_1.default(config, new Requestor_1.default(sdkKey, config, this.platform.info, this.platform.requests), dataSourceUpdates);\n if (config.offline || config.useLdd) {\n this.updateProcessor = new NullUpdateProcessor_1.default();\n }\n else {\n this.updateProcessor =\n (_b = (_a = config.updateProcessorFactory) === null || _a === void 0 ? void 0 : _a.call(config, clientContext, dataSourceUpdates)) !== null && _b !== void 0 ? _b : makeDefaultProcessor();\n }\n if (!config.sendEvents || config.offline) {\n this.eventProcessor = new NullEventProcessor_1.default();\n }\n else {\n this.eventProcessor = new js_sdk_common_1.internal.EventProcessor(config, clientContext, new EventSender_1.default(config, clientContext), new ContextDeduplicator_1.default(config), this.diagnosticsManager);\n }\n const asyncFacade = new AsyncStoreFacade_1.default(featureStore);\n this.featureStore = asyncFacade;\n const manager = new BigSegmentsManager_1.default((_d = (_c = config.bigSegments) === null || _c === void 0 ? void 0 : _c.store) === null || _d === void 0 ? void 0 : _d.call(_c, clientContext), (_e = config.bigSegments) !== null && _e !== void 0 ? _e : {}, config.logger, this.platform.crypto);\n this.bigSegmentsManager = manager;\n this.bigSegmentStatusProviderInternal = manager.statusProvider;\n const queries = {\n async getFlag(key) {\n var _a;\n return (_a = (await asyncFacade.get(VersionedDataKinds_1.default.Features, key))) !== null && _a !== void 0 ? _a : undefined;\n },\n async getSegment(key) {\n var _a;\n return (_a = (await asyncFacade.get(VersionedDataKinds_1.default.Segments, key))) !== null && _a !== void 0 ? _a : undefined;\n },\n getBigSegmentsMembership(userKey) {\n return manager.getUserMembership(userKey);\n },\n };\n this.evaluator = new Evaluator_1.default(this.platform, queries);\n this.updateProcessor.start((err) => {\n var _a, _b;\n if (err) {\n let error;\n if ((err.status && err.status === 401) || (err.code && err.code === 401)) {\n error = new Error('Authentication failed. Double check your SDK key.');\n }\n else {\n error = err;\n }\n this.onError(error);\n this.onFailed(error);\n (_a = this.initReject) === null || _a === void 0 ? void 0 : _a.call(this, error);\n this.initState = InitState.Failed;\n }\n else if (!this.initialized()) {\n this.initState = InitState.Initialized;\n (_b = this.initResolve) === null || _b === void 0 ? void 0 : _b.call(this, this);\n this.onReady();\n }\n });\n }\n initialized() {\n return this.initState === InitState.Initialized;\n }\n waitForInitialization() {\n if (this.initState === InitState.Initialized) {\n return Promise.resolve(this);\n }\n if (!this.initializedPromise) {\n this.initializedPromise = new Promise((resolve, reject) => {\n this.initResolve = resolve;\n this.initReject = reject;\n });\n }\n return this.initializedPromise;\n }\n async variation(key, context, defaultValue, callback) {\n const res = await this.evaluateIfPossible(key, context, defaultValue, this.eventFactoryDefault);\n if (!callback) {\n return res.detail.value;\n }\n callback(null, res.detail.value);\n return undefined;\n }\n async variationDetail(key, context, defaultValue, callback) {\n const res = await this.evaluateIfPossible(key, context, defaultValue, this.eventFactoryWithReasons);\n callback === null || callback === void 0 ? void 0 : callback(null, res.detail);\n return res.detail;\n }\n async allFlagsState(context, options, callback) {\n var _a, _b, _c, _d, _e;\n if (this.config.offline) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('allFlagsState() called in offline mode. Returning empty state.');\n const allFlagState = new FlagsStateBuilder_1.default(false, false).build();\n callback === null || callback === void 0 ? void 0 : callback(null, allFlagState);\n return allFlagState;\n }\n const evalContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!evalContext.valid) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.info(`${(_c = evalContext.message) !== null && _c !== void 0 ? _c : 'Invalid context.'}. Returning empty state.`);\n return new FlagsStateBuilder_1.default(false, false).build();\n }\n let valid = true;\n if (!this.initialized()) {\n const storeInitialized = await this.featureStore.initialized();\n if (storeInitialized) {\n (_d = this.logger) === null || _d === void 0 ? void 0 : _d.warn('Called allFlagsState before client initialization; using last known' +\n ' values from data store');\n }\n else {\n (_e = this.logger) === null || _e === void 0 ? void 0 : _e.warn('Called allFlagsState before client initialization. Data store not available; ' +\n 'returning empty state');\n valid = false;\n }\n }\n const builder = new FlagsStateBuilder_1.default(valid, !!(options === null || options === void 0 ? void 0 : options.withReasons));\n const clientOnly = !!(options === null || options === void 0 ? void 0 : options.clientSideOnly);\n const detailsOnlyIfTracked = !!(options === null || options === void 0 ? void 0 : options.detailsOnlyForTrackedFlags);\n const allFlags = await this.featureStore.all(VersionedDataKinds_1.default.Features);\n await (0, collection_1.allSeriesAsync)(Object.values(allFlags), async (storeItem) => {\n var _a;\n const flag = storeItem;\n if (clientOnly && !flag.clientSide) {\n return true;\n }\n const res = await this.evaluator.evaluate(flag, evalContext);\n if (res.isError) {\n this.onError(new Error(`Error for feature flag \"${flag.key}\" while evaluating all flags: ${res.message}`));\n }\n const requireExperimentData = (0, isExperiment_1.default)(flag, res.detail.reason);\n builder.addFlag(flag, res.detail.value, (_a = res.detail.variationIndex) !== null && _a !== void 0 ? _a : undefined, res.detail.reason, flag.trackEvents || requireExperimentData, requireExperimentData, detailsOnlyIfTracked);\n return true;\n });\n const res = builder.build();\n callback === null || callback === void 0 ? void 0 : callback(null, res);\n return res;\n }\n secureModeHash(context) {\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n const key = checkedContext.valid ? checkedContext.canonicalKey : undefined;\n const hmac = this.platform.crypto.createHmac('sha256', this.sdkKey);\n if (key === undefined) {\n throw new errors_1.LDClientError('Could not generate secure mode hash for invalid context');\n }\n hmac.update(key);\n return hmac.digest('hex');\n }\n close() {\n this.eventProcessor.close();\n this.updateProcessor.close();\n this.featureStore.close();\n this.bigSegmentsManager.close();\n }\n isOffline() {\n return this.config.offline;\n }\n track(key, context, data, metricValue) {\n var _a;\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!checkedContext.valid) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages_1.default.missingContextKeyNoEvent);\n return;\n }\n this.eventProcessor.sendEvent(this.eventFactoryDefault.customEvent(key, checkedContext, data, metricValue));\n }\n identify(context) {\n var _a;\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!checkedContext.valid) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages_1.default.missingContextKeyNoEvent);\n return;\n }\n this.eventProcessor.sendEvent(this.eventFactoryDefault.identifyEvent(checkedContext));\n }\n async flush(callback) {\n try {\n await this.eventProcessor.flush();\n }\n catch (err) {\n callback === null || callback === void 0 ? void 0 : callback(err, false);\n }\n callback === null || callback === void 0 ? void 0 : callback(null, true);\n }\n async variationInternal(flagKey, context, defaultValue, eventFactory) {\n var _a, _b, _c, _d;\n if (this.config.offline) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Variation called in offline mode. Returning default value.');\n return EvalResult_1.default.forError(ErrorKinds_1.default.ClientNotReady, undefined, defaultValue);\n }\n const evalContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!evalContext.valid) {\n this.onError(new errors_1.LDClientError(`${(_b = evalContext.message) !== null && _b !== void 0 ? _b : 'Context not valid;'} returning default value.`));\n return EvalResult_1.default.forError(ErrorKinds_1.default.UserNotSpecified, undefined, defaultValue);\n }\n const flag = (await this.featureStore.get(VersionedDataKinds_1.default.Features, flagKey));\n if (!flag) {\n const error = new errors_1.LDClientError(`Unknown feature flag \"${flagKey}\"; returning default value`);\n this.onError(error);\n const result = EvalResult_1.default.forError(ErrorKinds_1.default.FlagNotFound, undefined, defaultValue);\n this.eventProcessor.sendEvent(this.eventFactoryDefault.unknownFlagEvent(flagKey, evalContext, result.detail));\n return result;\n }\n const evalRes = await this.evaluator.evaluate(flag, evalContext, eventFactory);\n if (evalRes.detail.variationIndex === undefined || evalRes.detail.variationIndex === null) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Result value is null in variation');\n evalRes.setDefault(defaultValue);\n }\n (_d = evalRes.events) === null || _d === void 0 ? void 0 : _d.forEach((event) => {\n this.eventProcessor.sendEvent(event);\n });\n this.eventProcessor.sendEvent(eventFactory.evalEvent(flag, evalContext, evalRes.detail, defaultValue));\n return evalRes;\n }\n async evaluateIfPossible(flagKey, context, defaultValue, eventFactory) {\n var _a, _b;\n if (!this.initialized()) {\n const storeInitialized = await this.featureStore.initialized();\n if (storeInitialized) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('Variation called before LaunchDarkly client initialization completed' +\n \" (did you wait for the 'ready' event?) - using last known values from feature store\");\n return this.variationInternal(flagKey, context, defaultValue, eventFactory);\n }\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn('Variation called before LaunchDarkly client initialization completed (did you wait for the' +\n \"'ready' event?) - using default value\");\n return EvalResult_1.default.forError(ErrorKinds_1.default.ClientNotReady, undefined, defaultValue);\n }\n return this.variationInternal(flagKey, context, defaultValue, eventFactory);\n }\n}\nexports.default = LDClientImpl;\n//# sourceMappingURL=LDClientImpl.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A debounced file load/watcher for use with the {@link FileDataSource}.\n *\n * The file loader will load all files specified and keep the string representations in memory.\n * Whenever a change is made to any of the files, then that file will be reloaded and the in\n * memory version updated.\n *\n * Updates to many files, which occur within 10ms of each other, will be coalesced into\n * a single callback.\n *\n * @internal\n */\nclass FileLoader {\n constructor(filesystem, paths, watch, callback) {\n this.filesystem = filesystem;\n this.paths = paths;\n this.watch = watch;\n this.callback = callback;\n this.watchers = [];\n this.fileData = {};\n this.fileTimestamps = {};\n }\n /**\n * Load all the files and start watching them if watching is enabled.\n */\n async loadAndWatch() {\n const promises = this.paths.map(async (path) => {\n const data = await this.filesystem.readFile(path);\n const timeStamp = await this.filesystem.getFileTimestamp(path);\n return { data, path, timeStamp };\n });\n // This promise could be rejected, let the caller handle it.\n const results = await Promise.all(promises);\n results.forEach((res) => {\n this.fileData[res.path] = res.data;\n this.fileTimestamps[res.path] = res.timeStamp;\n });\n this.callback(results);\n // If we are watching, then setup watchers and notify of any changes.\n if (this.watch) {\n this.paths.forEach((path) => {\n const watcher = this.filesystem.watch(path, async (_, updatePath) => {\n const timeStamp = await this.filesystem.getFileTimestamp(updatePath);\n // The modification time is the same, so we are going to ignore this update.\n // In some implementations watch might be triggered multiple times for a single update.\n if (timeStamp === this.fileTimestamps[updatePath]) {\n return;\n }\n this.fileTimestamps[updatePath] = timeStamp;\n const data = await this.filesystem.readFile(updatePath);\n this.fileData[updatePath] = data;\n this.debounceCallback();\n });\n this.watchers.push(watcher);\n });\n }\n }\n close() {\n this.watchers.forEach((watcher) => watcher.close());\n }\n debounceCallback() {\n // If there is a handle, then we have already started the debounce process.\n if (!this.debounceHandle) {\n this.debounceHandle = setTimeout(() => {\n this.debounceHandle = undefined;\n this.callback(Object.entries(this.fileData).reduce((acc, [path, data]) => {\n acc.push({ path, data });\n return acc;\n }, []));\n }, 10);\n // The 10ms delay above is arbitrary - we just don't want to have the number be zero,\n // because in a case where multiple watch events are fired off one after another,\n // we want the reload to happen only after all of the event handlers have executed.\n }\n }\n}\nexports.default = FileLoader;\n//# sourceMappingURL=FileLoader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst FileLoader_1 = require(\"./FileLoader\");\nfunction makeFlagWithValue(key, value) {\n return {\n key,\n on: true,\n fallthrough: { variation: 0 },\n variations: [value],\n version: 1,\n };\n}\nclass FileDataSource {\n /**\n * This is internal because we want instances to only be created with the\n * factory.\n * @internal\n */\n constructor(options, filesystem, featureStore) {\n var _a;\n this.featureStore = featureStore;\n this.allData = {};\n this.fileLoader = new FileLoader_1.default(filesystem, options.paths, (_a = options.autoUpdate) !== null && _a !== void 0 ? _a : false, (results) => {\n var _a, _b;\n // Whenever changes are detected we re-process all of the data.\n // The FileLoader will have handled debouncing for us.\n try {\n this.processFileData(results);\n }\n catch (err) {\n // If this was during start, then the initCallback will be present.\n (_a = this.initCallback) === null || _a === void 0 ? void 0 : _a.call(this, err);\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Error processing files: ${err}`);\n }\n });\n this.logger = options.logger;\n this.yamlParser = options.yamlParser;\n }\n start(fn) {\n this.initCallback = fn;\n // Use an immediately invoked function expression to allow handling of the\n // async loading without making start async itself.\n (async () => {\n try {\n await this.fileLoader.loadAndWatch();\n }\n catch (err) {\n // There was an issue loading/watching the files.\n // Report back to the caller.\n fn === null || fn === void 0 ? void 0 : fn(err);\n }\n })();\n }\n stop() {\n this.fileLoader.close();\n }\n close() {\n this.stop();\n }\n addItem(kind, item) {\n if (!this.allData[kind.namespace]) {\n this.allData[kind.namespace] = {};\n }\n if (this.allData[kind.namespace][item.key]) {\n throw new Error(`found duplicate key: \"${item.key}\"`);\n }\n else {\n this.allData[kind.namespace][item.key] = item;\n }\n }\n processFileData(fileData) {\n // Clear any existing data before re-populating it.\n this.allData = {};\n // We let the parsers throw, and the caller can handle the rejection.\n fileData.forEach((fd) => {\n let parsed;\n if (fd.path.endsWith('.yml') || fd.path.endsWith('.yaml')) {\n if (this.yamlParser) {\n parsed = this.yamlParser(fd.data);\n }\n else {\n throw new Error(`Attempted to parse yaml file (${fd.path}) without parser.`);\n }\n }\n else {\n parsed = JSON.parse(fd.data);\n }\n this.processParsedData(parsed);\n });\n this.featureStore.init(this.allData, () => {\n var _a;\n // Call the init callback if present.\n // Then clear the callback so we cannot call it again.\n (_a = this.initCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n this.initCallback = undefined;\n });\n }\n processParsedData(parsed) {\n Object.keys(parsed.flags || {}).forEach((key) => {\n (0, serialization_1.processFlag)(parsed.flags[key]);\n this.addItem(VersionedDataKinds_1.default.Features, parsed.flags[key]);\n });\n Object.keys(parsed.flagValues || {}).forEach((key) => {\n const flag = makeFlagWithValue(key, parsed.flagValues[key]);\n (0, serialization_1.processFlag)(flag);\n this.addItem(VersionedDataKinds_1.default.Features, flag);\n });\n Object.keys(parsed.segments || {}).forEach((key) => {\n (0, serialization_1.processSegment)(parsed.segments[key]);\n this.addItem(VersionedDataKinds_1.default.Segments, parsed.segments[key]);\n });\n }\n}\nexports.default = FileDataSource;\n//# sourceMappingURL=FileDataSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst FileDataSource_1 = require(\"../data_sources/FileDataSource\");\n/**\n * Class for creating file data sources.\n */\nclass FileDataSourceFactory {\n constructor(options) {\n this.options = options;\n }\n /**\n * Method for creating instances of the file data source. This method is intended to be used\n * by the SDK.\n *\n * @param config SDK configuration required by the file data source.\n * @param filesystem Platform abstraction used for filesystem access.\n * @returns a {@link FileDataSource}\n *\n * @internal\n */\n create(ldClientContext, featureStore) {\n const updatedOptions = {\n paths: this.options.paths,\n autoUpdate: this.options.autoUpdate,\n logger: this.options.logger || ldClientContext.basicConfiguration.logger,\n yamlParser: this.options.yamlParser,\n };\n return new FileDataSource_1.default(updatedOptions, ldClientContext.platform.fileSystem, featureStore);\n }\n getFactory() {\n return (ldClientContext, featureStore) => this.create(ldClientContext, featureStore);\n }\n}\nexports.default = FileDataSourceFactory;\n//# sourceMappingURL=FileDataSourceFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variationForBoolean = exports.FALSE_VARIATION_INDEX = exports.TRUE_VARIATION_INDEX = void 0;\nexports.TRUE_VARIATION_INDEX = 0;\nexports.FALSE_VARIATION_INDEX = 1;\n/**\n * @internal\n */\nfunction variationForBoolean(val) {\n return val ? exports.TRUE_VARIATION_INDEX : exports.FALSE_VARIATION_INDEX;\n}\nexports.variationForBoolean = variationForBoolean;\n//# sourceMappingURL=booleanVariation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst booleanVariation_1 = require(\"./booleanVariation\");\n/**\n * A builder for feature flag rules to be used with {@link TestDataFlagBuilder}.\n *\n * In the LaunchDarkly model, a flag can have any number of rules, and\n * a rule can have any number of clauses. A clause is an individual test\n * such as \"name is 'X'\". A rule matches a user if all of the rule's\n * clauses match the user.\n *\n * To start defining a rule, use one of the flag builder's matching methods\n * such as `ifMatch`. This defines the first clause for the rule. Optionally,\n * you may add more clauses with the rule builder's methods such as `andMatch`.\n * Finally, call `thenReturn` to finish defining the rule.\n */\nclass TestDataRuleBuilder {\n /**\n * @internal\n */\n constructor(flagBuilder, clauses, variation) {\n this.flagBuilder = flagBuilder;\n this.clauses = [];\n if (clauses) {\n this.clauses = [...clauses];\n }\n if (variation !== undefined) {\n this.variation = variation;\n }\n }\n /**\n * Adds another clause using the \"is one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * \"Patsy\" and the country is \"gb\":\n *\n * testData.flag('flag')\n * .ifMatch('name', 'Patsy')\n * .andMatch('country', 'gb')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return the flag rule builder\n */\n andMatch(contextKind, attribute, ...values) {\n this.clauses.push({\n contextKind,\n attribute,\n attributeReference: new js_sdk_common_1.AttributeReference(attribute),\n op: 'in',\n values,\n negate: false,\n });\n return this;\n }\n /**\n * Adds another clause using the \"is not one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * \"Patsy\" and the country is not \"gb\":\n *\n * testData.flag('flag')\n * .ifMatch('name', 'Patsy')\n * .andNotMatch('country', 'gb')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return the flag rule builder\n */\n andNotMatch(contextKind, attribute, ...values) {\n this.clauses.push({\n contextKind,\n attribute,\n attributeReference: new js_sdk_common_1.AttributeReference(attribute),\n op: 'in',\n values,\n negate: true,\n });\n return this;\n }\n /**\n * Finishes defining the rule, specifying the result value as either a boolean or an index\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag rule builder\n */\n thenReturn(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n this.flagBuilder.booleanFlag();\n return this.thenReturn((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.variation = variation;\n this.flagBuilder.addRule(this);\n return this.flagBuilder;\n }\n /**\n * @internal\n */\n build(id) {\n return {\n id: `rule${id}`,\n variation: this.variation,\n clauses: this.clauses,\n };\n }\n /**\n * @internal\n */\n clone() {\n return new TestDataRuleBuilder(this.flagBuilder, this.clauses, this.variation);\n }\n}\nexports.default = TestDataRuleBuilder;\n//# sourceMappingURL=TestDataRuleBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst booleanVariation_1 = require(\"./booleanVariation\");\nconst TestDataRuleBuilder_1 = require(\"./TestDataRuleBuilder\");\n/**\n * A builder for feature flag configurations to be used with {@link TestData}.\n */\nclass TestDataFlagBuilder {\n /**\n * @internal\n */\n constructor(key, data) {\n this.key = key;\n this.data = {\n on: true,\n variations: [],\n };\n if (data) {\n // Not the fastest way to deep copy, but this is a testing mechanism.\n this.data = {\n on: data.on,\n variations: [...data.variations],\n };\n if (data.offVariation !== undefined) {\n this.data.offVariation = data.offVariation;\n }\n if (data.fallthroughVariation !== undefined) {\n this.data.fallthroughVariation = data.fallthroughVariation;\n }\n if (data.targetsByVariation) {\n this.data.targetsByVariation = JSON.parse(JSON.stringify(data.targetsByVariation));\n }\n if (data.rules) {\n this.data.rules = [];\n data.rules.forEach((rule) => {\n var _a;\n (_a = this.data.rules) === null || _a === void 0 ? void 0 : _a.push(rule.clone());\n });\n }\n }\n }\n get isBooleanFlag() {\n return (this.data.variations.length === 2 &&\n this.data.variations[booleanVariation_1.TRUE_VARIATION_INDEX] === true &&\n this.data.variations[booleanVariation_1.FALSE_VARIATION_INDEX] === false);\n }\n /**\n * A shortcut for setting the flag to use the standard boolean configuration.\n *\n * This is the default for all new flags created with {@link TestData.flag}. The\n * flag will have two variations, `true` and `false` (in that order). It\n * will return `false` whenever targeting is off and `true` when targeting\n * is on unless other settings specify otherwise.\n *\n * @return the flag builder\n */\n booleanFlag() {\n if (this.isBooleanFlag) {\n return this;\n }\n // Change this flag into a boolean flag.\n return this.variations(true, false)\n .fallthroughVariation(booleanVariation_1.TRUE_VARIATION_INDEX)\n .offVariation(booleanVariation_1.FALSE_VARIATION_INDEX);\n }\n /**\n * Sets the allowable variation values for the flag.\n *\n * The values may be of any JSON-compatible type: boolean, number, string, array,\n * or object. For instance, a boolean flag normally has `variations(true, false)`;\n * a string-valued flag might have `variations(\"red\", \"green\")`; etc.\n *\n * @param values any number of variation values\n * @return the flag builder\n */\n variations(...values) {\n this.data.variations = [...values];\n return this;\n }\n /**\n * Sets targeting to be on or off for this flag.\n *\n * The effect of this depends on the rest of the flag configuration, just\n * as it does on the real LaunchDarkly dashboard. In the default configuration\n * that you get from calling {@link TestData.flag} with a new flag key, the flag\n * will return `false` whenever targeting is off and `true` when targeting\n * is on.\n *\n * @param targetingOn true if targeting should be on\n * @return the flag builder\n */\n on(targetingOn) {\n this.data.on = targetingOn;\n return this;\n }\n /**\n * Specifies the fallthrough variation for a flag. The fallthrough is\n * the value that is returned if targeting is on and the user was not\n * matched by a more specific target or rule.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param variation\n * either `true` or `false` or the index of the desired fallthrough\n * variation: 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n fallthroughVariation(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().fallthroughVariation((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.data.fallthroughVariation = variation;\n return this;\n }\n /**\n * Specifies the off variation for a flag. This is the variation that is\n * returned whenever targeting is off.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param variation\n * either `true` or `false` or the index of the desired off\n * variation: 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n offVariation(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().offVariation((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.data.offVariation = variation;\n return this;\n }\n /**\n * Sets the flag to always return the specified variation for all contexts.\n *\n * Targeting is switched on, any existing targets or rules are removed,\n * and the fallthrough variation is set to the specified value. The off\n * variation is left unchanged.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param varation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForAll(variation) {\n return this.on(true).clearRules().clearAllTargets().fallthroughVariation(variation);\n }\n /**\n * Sets the flag to always return the specified variation value for all contexts.\n *\n * The value may be of any valid JSON type. This method changes the flag to have\n * only a single variation, which is this value, and to return the same variation\n * regardless of whether targeting is on or off. Any existing targets or rules\n * are removed.\n *\n * @param value The desired value to be returned for all contexts.\n * @return the flag builder\n */\n valueForAll(value) {\n return this.variations(value).variationForAll(0);\n }\n /**\n * Sets the flag to return the specified variation for a specific context key\n * when targeting is on. The context kind for contexts created with this method\n * will be 'user'.\n *\n * This has no effect when targeting is turned off for the flag.\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param contextKey a context key\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForUser(contextKey, variation) {\n return this.variationForContext('user', contextKey, variation);\n }\n /**\n * Sets the flag to return the specified variation for a specific context key\n * when targeting is on.\n *\n * This has no effect when targeting is turned off for the flag.\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param contextKind a context kind\n * @param contextKey a context key\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForContext(contextKind, contextKey, variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().variationForContext(contextKind, contextKey, (0, booleanVariation_1.variationForBoolean)(variation));\n }\n if (!this.data.targetsByVariation) {\n this.data.targetsByVariation = {};\n }\n this.data.variations.forEach((_, i) => {\n if (i === variation) {\n // If there is nothing set at the current variation then set it to the empty array\n const targetsForVariation = this.data.targetsByVariation[i] || {};\n if (!(contextKind in targetsForVariation)) {\n targetsForVariation[contextKind] = [];\n }\n const exists = targetsForVariation[contextKind].indexOf(contextKey) !== -1;\n // Add context to current variation set if they aren't already there\n if (!exists) {\n targetsForVariation[contextKind].push(contextKey);\n }\n this.data.targetsByVariation[i] = targetsForVariation;\n }\n else {\n // remove user from other variation set if necessary\n const targetsForVariation = this.data.targetsByVariation[i];\n if (targetsForVariation) {\n const targetsForContextKind = targetsForVariation[contextKind];\n if (targetsForContextKind) {\n const targetIndex = targetsForContextKind.indexOf(contextKey);\n if (targetIndex !== -1) {\n targetsForContextKind.splice(targetIndex, 1);\n if (!targetsForContextKind.length) {\n delete targetsForVariation[contextKind];\n }\n }\n }\n if (!Object.keys(targetsForVariation).length) {\n delete this.data.targetsByVariation[i];\n }\n }\n }\n });\n return this;\n }\n /**\n * Removes any existing rules from the flag. This undoes the effect of methods\n * like {@link ifMatch}.\n *\n * @return the same flag builder\n */\n clearRules() {\n delete this.data.rules;\n return this;\n }\n /**\n * Removes any existing targets from the flag. This undoes the effect of\n * methods like {@link variationForContext}.\n *\n * @return the same flag builder\n */\n clearAllTargets() {\n delete this.data.targetsByVariation;\n return this;\n }\n /**\n * Starts defining a flag rule using the \"is one of\" operator.\n *\n * For example, this creates a rule that returnes `true` if the name is\n * \"Patsy\" or \"Edina\":\n *\n * testData.flag('flag')\n * .ifMatch('user', name', 'Patsy', 'Edina')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the context attribute to match against\n * @param values values to compare to\n * @return\n * a flag rule builder; call `thenReturn` to finish the rule\n * or add more tests with another method like `andMatch`\n */\n ifMatch(contextKind, attribute, ...values) {\n const flagRuleBuilder = new TestDataRuleBuilder_1.default(this);\n return flagRuleBuilder.andMatch(contextKind, attribute, ...values);\n }\n /**\n * Starts defining a flag rule using the \"is not one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * neither \"Saffron\" nor \"Bubble\":\n *\n * testData.flag('flag')\n * .ifNotMatch('user', 'name', 'Saffron', 'Bubble')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return\n * a flag rule builder; call `thenReturn` to finish the rule\n * or add more tests with another method like `andNotMatch`\n */\n ifNotMatch(contextKind, attribute, ...values) {\n const flagRuleBuilder = new TestDataRuleBuilder_1.default(this);\n return flagRuleBuilder.andNotMatch(contextKind, attribute, ...values);\n }\n /**\n * @internal\n */\n addRule(flagRuleBuilder) {\n if (!this.data.rules) {\n this.data.rules = [];\n }\n this.data.rules.push(flagRuleBuilder);\n }\n /**\n * @internal\n */\n build(version) {\n const baseFlagObject = {\n key: this.key,\n version,\n on: this.data.on,\n offVariation: this.data.offVariation,\n fallthrough: {\n variation: this.data.fallthroughVariation,\n },\n variations: [...this.data.variations],\n };\n if (this.data.targetsByVariation) {\n const contextTargets = [];\n const userTargets = [];\n Object.entries(this.data.targetsByVariation).forEach(([variation, contextTargetsForVariation]) => {\n Object.entries(contextTargetsForVariation).forEach(([contextKind, values]) => {\n const numberVariation = parseInt(variation, 10);\n contextTargets.push({\n contextKind,\n values: contextKind === 'user' ? [] : values,\n // Iterating the object it will be a string.\n variation: numberVariation,\n });\n if (contextKind === 'user') {\n userTargets.push({ values, variation: numberVariation });\n }\n });\n });\n baseFlagObject.targets = userTargets;\n baseFlagObject.contextTargets = contextTargets;\n }\n if (this.data.rules) {\n baseFlagObject.rules = this.data.rules.map((rule, i) => rule.build(String(i)));\n }\n return baseFlagObject;\n }\n /**\n * @internal\n */\n clone() {\n return new TestDataFlagBuilder(this.key, this.data);\n }\n /**\n * @internal\n */\n getKey() {\n return this.key;\n }\n}\nexports.default = TestDataFlagBuilder;\n//# sourceMappingURL=TestDataFlagBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst VersionedDataKinds_1 = require(\"../../store/VersionedDataKinds\");\n/**\n * @internal\n */\nclass TestDataSource {\n constructor(featureStore, flags, segments, onStop) {\n this.featureStore = featureStore;\n this.flags = flags;\n this.segments = segments;\n this.onStop = onStop;\n }\n async start(fn) {\n await this.featureStore.init({\n [VersionedDataKinds_1.default.Features.namespace]: Object.assign({}, this.flags),\n [VersionedDataKinds_1.default.Segments.namespace]: Object.assign({}, this.segments),\n });\n fn === null || fn === void 0 ? void 0 : fn();\n }\n stop() {\n this.onStop(this);\n }\n close() {\n this.stop();\n }\n async upsert(kind, value) {\n return this.featureStore.upsert(kind, value);\n }\n}\nexports.default = TestDataSource;\n//# sourceMappingURL=TestDataSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AsyncStoreFacade_1 = require(\"../../store/AsyncStoreFacade\");\nconst serialization_1 = require(\"../../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../../store/VersionedDataKinds\");\nconst TestDataFlagBuilder_1 = require(\"./TestDataFlagBuilder\");\nconst TestDataSource_1 = require(\"./TestDataSource\");\n/**\n * A mechanism for providing dynamically updatable feature flag state in a simplified form to an SDK\n * client in test scenarios.\n *\n * Unlike `FileData`, this mechanism does not use any external resources. It provides only the\n * data that the application has put into it using the {@link TestData.update} method.\n *\n * ```\n * // Import TestData from the integrations package of the SDK you are using.\n * // This is a common implementation and may be used in multiple SDKs.\n *\n * const td = TestData();\n * testData.update(td.flag(\"flag-key-1\").booleanFlag().variationForAll(true));\n * // Use the initialization mechanism specified by your SDK.\n * const client = LDClient.init(sdkKey, { updateProcessor: td.getFactory() });\n *\n * // flags can be updated at any time:\n * td.update(td.flag(\"flag-key-2\")\n * .variationForContext(\"user\", \"some-user-key\", true)\n * .fallthroughVariation(false));\n * ```\n *\n * The above example uses a simple boolean flag, but more complex configurations are possible using\n * the methods of the {@link TestDataFlagBuilder} that is returned by {@link TestData.flag}.\n * {@link TestDataFlagBuilder} supports many of the ways a flag can be configured on the\n * LaunchDarkly dashboard, but does not currently support\n * 1. rule operators other than \"in\" and \"not in\", or\n * 2. percentage rollouts.\n *\n * If the same `TestData` instance is used to configure multiple `LDClient` instances,\n * any changes made to the data will propagate to all of the `LDClient`s.\n */\nclass TestData {\n constructor() {\n this.currentFlags = {};\n this.currentSegments = {};\n this.dataSources = [];\n this.flagBuilders = {};\n }\n /**\n * Get a factory for update processors that will be attached to this TestData instance.\n * @returns An update processor factory.\n */\n getFactory() {\n // Provides an arrow function to prevent needed to bind the method to\n // maintain `this`.\n return (\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n clientContext, featureStore) => {\n const newSource = new TestDataSource_1.default(new AsyncStoreFacade_1.default(featureStore), this.currentFlags, this.currentSegments, (tds) => {\n this.dataSources.splice(this.dataSources.indexOf(tds));\n });\n this.dataSources.push(newSource);\n return newSource;\n };\n }\n /**\n * Creates or copies a {@link TestDataFlagBuilder} for building a test flag configuration.\n *\n * If the flag key has already been defined in this `TestData` instance,\n * then the builder starts with the same configuration that was last\n * provided for this flag.\n *\n * Otherwise, it starts with a new default configuration in which the flag\n * has `true` and `false` variations, is `true` for all users when targeting\n * is turned on and `false` otherwise, and currently has targeting turned on.\n * You can change any of those properties and provide more complex behavior\n * using the `TestDataFlagBuilder` methods.\n *\n * Once you have set the desired configuration, pass the builder to\n * {@link TestData.update}.\n *\n * @param key the flag key\n * @returns a flag configuration builder\n *\n */\n flag(key) {\n if (this.flagBuilders[key]) {\n return this.flagBuilders[key].clone();\n }\n return new TestDataFlagBuilder_1.default(key).booleanFlag();\n }\n /**\n * Updates the test data with the specified flag configuration.\n *\n * This has the same effect as if a flag were added or modified in the\n * LaunchDarkly dashboard. It immediately propagates the flag changes to\n * any `LDClient` instance(s) that you have already configured to use\n * this `TestData`. If no `LDClient` has been started yet, it simply adds\n * this flag to the test data which will be provided to any `LDClient`\n * that you subsequently configure.\n *\n * Any subsequent changes to this `TestDataFlagBuilder` instance do not affect\n * the test data unless you call `update` again.\n *\n * @param flagBuilder a flag configuration builder\n * @return a promise that will resolve when the feature stores are updated\n */\n update(flagBuilder) {\n const flagKey = flagBuilder.getKey();\n const oldItem = this.currentFlags[flagKey];\n const oldVersion = oldItem ? oldItem.version : 0;\n const newFlag = flagBuilder.build(oldVersion + 1);\n this.currentFlags[flagKey] = newFlag;\n this.flagBuilders[flagKey] = flagBuilder.clone();\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Features, newFlag)));\n }\n /**\n * Copies a full feature flag data model object into the test data.\n *\n * It immediately propagates the flag change to any `LDClient` instance(s) that you have already\n * configured to use this `TestData`. If no `LDClient` has been started yet, it simply adds this\n * flag to the test data which will be provided to any LDClient that you subsequently configure.\n *\n * Use this method if you need to use advanced flag configuration properties that are not\n * supported by the simplified {@link TestDataFlagBuilder} API. Otherwise it is recommended to use\n * the regular {@link flag}/{@link update} mechanism to avoid dependencies on details of the data\n * model.\n *\n * You cannot make incremental changes with {@link flag}/{@link update} to a flag that has been\n * added in this way; you can only replace it with an entirely new flag configuration.\n *\n * @param flagConfig the flag configuration as a JSON object\n * @return a promise that will resolve when the feature stores are updated\n */\n usePreconfiguredFlag(inConfig) {\n // We need to do things like process attribute reference, and\n // we do not want to modify the passed in value.\n const flagConfig = JSON.parse(JSON.stringify(inConfig));\n const oldItem = this.currentFlags[flagConfig.key];\n const newItem = Object.assign(Object.assign({}, flagConfig), { version: oldItem ? oldItem.version + 1 : flagConfig.version });\n (0, serialization_1.processFlag)(newItem);\n this.currentFlags[flagConfig.key] = newItem;\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Features, newItem)));\n }\n /**\n * Copies a full segment data model object into the test data.\n *\n * It immediately propagates the change to any `LDClient` instance(s) that you have already\n * configured to use this `TestData`. If no `LDClient` has been started yet, it simply adds\n * this segment to the test data which will be provided to any LDClient that you subsequently\n * configure.\n *\n * This method is currently the only way to inject segment data, since there is no builder\n * API for segments. It is mainly intended for the SDK's own tests of segment functionality,\n * since application tests that need to produce a desired evaluation state could do so more easily\n * by just setting flag values.\n *\n * @param segmentConfig the segment configuration as a JSON object\n * @return a promise that will resolve when the feature stores are updated\n */\n usePreconfiguredSegment(inConfig) {\n const segmentConfig = JSON.parse(JSON.stringify(inConfig));\n const oldItem = this.currentSegments[segmentConfig.key];\n const newItem = Object.assign(Object.assign({}, segmentConfig), { version: oldItem ? oldItem.version + 1 : segmentConfig.version });\n (0, serialization_1.processSegment)(newItem);\n this.currentSegments[segmentConfig.key] = newItem;\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Segments, newItem)));\n }\n}\nexports.default = TestData;\n//# sourceMappingURL=TestData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestDataRuleBuilder = exports.TestDataFlagBuilder = exports.TestData = void 0;\nconst TestData_1 = require(\"./TestData\");\nexports.TestData = TestData_1.default;\nconst TestDataFlagBuilder_1 = require(\"./TestDataFlagBuilder\");\nexports.TestDataFlagBuilder = TestDataFlagBuilder_1.default;\nconst TestDataRuleBuilder_1 = require(\"./TestDataRuleBuilder\");\nexports.TestDataRuleBuilder = TestDataRuleBuilder_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileDataSourceFactory = void 0;\nconst FileDataSourceFactory_1 = require(\"./FileDataSourceFactory\");\nexports.FileDataSourceFactory = FileDataSourceFactory_1.default;\n__exportStar(require(\"./test_data\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagsStateOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagsState.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDFlagsStateOptions\"), exports);\n__exportStar(require(\"./LDFlagsState\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDBigSegmentsOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDProxyOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDTLSOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDBigSegmentsOptions\"), exports);\n__exportStar(require(\"./LDOptions\"), exports);\n__exportStar(require(\"./LDProxyOptions\"), exports);\n__exportStar(require(\"./LDTLSOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDClient.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DataKind.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFeatureStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDStreamProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=FileDataSourceOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./FileDataSourceOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreMembership.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreMetadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreStatus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DataCollection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=FullDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=KeyedItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=VersionedData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreStatusProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BigSegmentStore\"), exports);\n__exportStar(require(\"./BigSegmentStoreMembership\"), exports);\n__exportStar(require(\"./BigSegmentStoreMetadata\"), exports);\n__exportStar(require(\"./BigSegmentStoreStatus\"), exports);\n__exportStar(require(\"./DataCollection\"), exports);\n__exportStar(require(\"./DataKind\"), exports);\n__exportStar(require(\"./FullDataSet\"), exports);\n__exportStar(require(\"./KeyedItems\"), exports);\n__exportStar(require(\"./VersionedData\"), exports);\n__exportStar(require(\"./BigSegmentStoreStatusProvider\"), exports);\n__exportStar(require(\"./persistent_store\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFeatureRequestor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDDataSourceUpdates.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDFeatureRequestor\"), exports);\n__exportStar(require(\"./LDFeatureStore\"), exports);\n__exportStar(require(\"./LDStreamProcessor\"), exports);\n__exportStar(require(\"./LDDataSourceUpdates\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subsystems = exports.interfaces = exports.integrations = void 0;\n__exportStar(require(\"./data\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./LDClient\"), exports);\n__exportStar(require(\"./interfaces/DataKind\"), exports);\n__exportStar(require(\"./subsystems/LDFeatureStore\"), exports);\n__exportStar(require(\"./subsystems/LDStreamProcessor\"), exports);\n// These are items that should be less frequently used, and therefore they\n// are namespaced to reduce clutter amongst the top level exports.\nexports.integrations = require(\"./integrations\");\nexports.interfaces = require(\"./interfaces\");\nexports.subsystems = require(\"./subsystems\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isStale(record) {\n return Date.now() > record.expiration;\n}\n/**\n * A basic TTL cache with configurable TTL and check interval.\n *\n * @internal\n */\nclass TtlCache {\n constructor(options) {\n this.options = options;\n this.storage = new Map();\n this.checkIntervalHandle = setInterval(() => {\n this.purgeStale();\n }, options.checkInterval * 1000);\n }\n /**\n * Get a value from the cache.\n * @param key The key to get a value for.\n * @returns The value for the key, or undefined if the key was not added, or\n * if the value has expired.\n */\n get(key) {\n const record = this.storage.get(key);\n if (record && isStale(record)) {\n this.storage.delete(key);\n return undefined;\n }\n return record === null || record === void 0 ? void 0 : record.value;\n }\n /**\n * Set an item in the cache. It will expire after the TTL specified\n * in the cache configuration.\n * @param key The key for the value.\n * @param value The value to set.\n */\n set(key, value) {\n this.storage.set(key, {\n value,\n expiration: Date.now() + this.options.ttl * 1000,\n });\n }\n /**\n * Delete the item with the specific key. If the item does not exist,\n * then there will be no change to the cache.\n * @param key The key of the value to delete.\n */\n delete(key) {\n this.storage.delete(key);\n }\n /**\n * Clear the items that are in the cache.\n */\n clear() {\n this.storage.clear();\n }\n /**\n * Indicate that you are no longer going to use the cache. The cache will be\n * cleared and it will stop checking for stale items.\n */\n close() {\n this.clear();\n if (this.checkIntervalHandle) {\n clearInterval(this.checkIntervalHandle);\n this.checkIntervalHandle = null;\n }\n }\n purgeStale() {\n this.storage.forEach((record, key) => {\n if (isStale(record)) {\n this.storage.delete(key);\n }\n });\n }\n /**\n * This is for testing.\n * @internal\n */\n get size() {\n return this.storage.size;\n }\n}\nexports.default = TtlCache;\n//# sourceMappingURL=TtlCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.persistentStoreKinds = void 0;\nconst serialization_1 = require(\"./serialization\");\nconst VersionedDataKinds_1 = require(\"./VersionedDataKinds\");\n/**\n * Map namespace to a persistent store kind.\n */\nexports.persistentStoreKinds = {\n segments: {\n namespace: VersionedDataKinds_1.default.Segments.namespace,\n deserialize: (data) => {\n const segment = (0, serialization_1.deserializeSegment)(data);\n if (segment) {\n return {\n version: segment.version,\n item: segment,\n };\n }\n return undefined;\n },\n serialize: (data) => {\n const serializedItem = (0, serialization_1.serializeSegment)(data);\n return {\n version: data.version,\n deleted: data.deleted,\n serializedItem,\n };\n },\n priority: 0,\n },\n features: {\n namespace: VersionedDataKinds_1.default.Features.namespace,\n deserialize: (data) => {\n const flag = (0, serialization_1.deserializeFlag)(data);\n if (flag) {\n return {\n version: flag.version,\n item: flag,\n };\n }\n return undefined;\n },\n serialize: (data) => {\n const serializedItem = (0, serialization_1.serializeFlag)(data);\n return {\n version: data.version,\n deleted: data.deleted,\n serializedItem,\n };\n },\n priority: 1,\n },\n};\n//# sourceMappingURL=persistentStoreKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst persistentStoreKinds_1 = require(\"./persistentStoreKinds\");\nfunction getDependencyKeys(flag) {\n if (!flag.prerequisites || !flag.prerequisites.length) {\n return [];\n }\n return flag.prerequisites.map((preReq) => preReq.key);\n}\n/**\n * Do a topological sort using a depth-first search.\n * https://en.wikipedia.org/wiki/Topological_sorting\n */\nfunction topologicalSort(kind, itemsMap) {\n const sortedItems = [];\n const unvisitedItems = new Set(Object.keys(itemsMap));\n const visit = (key) => {\n if (!unvisitedItems.has(key)) {\n return;\n }\n // Typically in a depth-first search this would be done later, and there\n // would be a temporary mark to detect that this was not an directed acylic graph.\n // Removing it here will mean we cannot do that detection, but we also will\n // not infinitely recurse.\n unvisitedItems.delete(key);\n const item = itemsMap[key];\n if (kind.namespace === 'features') {\n getDependencyKeys(item).forEach((prereqKey) => {\n visit(prereqKey);\n });\n }\n sortedItems.push({\n key,\n item: kind.serialize(item),\n });\n };\n while (unvisitedItems.size > 0) {\n // Visit the next item, the order we visit doesn't matter.\n const key = unvisitedItems.values().next().value;\n visit(key);\n }\n return sortedItems;\n}\n/**\n * For non-atomic stores we want to insert items in an order that no items exist\n * in the store before their dependencies. Segments before flags, because flags\n * are dependent on segments. For flags we want to insert them such that no flags are\n * added before the prerequisites of those flags.\n *\n * Segments can also depend on other segments, but a segment will not be accessed\n * if there are no flags.\n */\nfunction sortDataSet(dataMap) {\n // We use a different type for collecting the results so that we have access\n // to the serialization methods and priorities.\n const result = [];\n Object.keys(dataMap).forEach((kindNamespace) => {\n const kind = persistentStoreKinds_1.persistentStoreKinds[kindNamespace];\n result.push({ key: kind, item: topologicalSort(kind, dataMap[kindNamespace]) });\n });\n result.sort((i1, i2) => i1.key.priority - i2.key.priority);\n return result;\n}\nexports.default = sortDataSet;\n//# sourceMappingURL=sortDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass UpdateQueue {\n constructor() {\n this.queue = [];\n }\n enqueue(updateFn, cb) {\n this.queue.push([updateFn, cb]);\n if (this.queue.length === 1) {\n // If this is the only item in the queue, then there is not a series\n // of updates already in progress. So we can start executing those updates.\n this.executePendingUpdates();\n }\n }\n executePendingUpdates() {\n if (this.queue.length > 0) {\n const [fn, cb] = this.queue[0];\n const newCb = () => {\n // We just completed work, so remove it from the queue.\n // Don't remove it before the work is done, because then the\n // count could hit 0, and overlapping execution chains could be started.\n this.queue.shift();\n // There is more work to do, so schedule an update.\n if (this.queue.length > 0) {\n setTimeout(() => this.executePendingUpdates(), 0);\n }\n // Call the original callback.\n cb === null || cb === void 0 ? void 0 : cb();\n };\n fn(newCb);\n }\n }\n}\nexports.default = UpdateQueue;\n//# sourceMappingURL=UpdateQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst TtlCache_1 = require(\"../cache/TtlCache\");\nconst persistentStoreKinds_1 = require(\"./persistentStoreKinds\");\nconst sortDataSet_1 = require(\"./sortDataSet\");\nconst UpdateQueue_1 = require(\"./UpdateQueue\");\nfunction cacheKey(kind, key) {\n return `${kind.namespace}:${key}`;\n}\nfunction allForKindCacheKey(kind) {\n return `$all:${kind.namespace}`;\n}\n// This key will be set in the cache if we have checked that a store was\n// initialized and found that it was not. If we do not become initialized\n// within the TTL period, then the key will expire, and the next initialization\n// check will pass through to the store. Once we are initialized, then the key\n// will never be checked again.\nconst initializationCheckedKey = '$checkedInit';\n// The interval to check items in the TTL cache to purge expired items.\n// Expired items which are not purged, will be reactively purged when they are\n// accessed.\nconst defaultCheckInterval = 600;\nfunction itemIfNotDeleted(item) {\n return !item || item.item.deleted ? null : item.item;\n}\nfunction deletedDescriptor(version) {\n return {\n version,\n item: { version, deleted: true },\n };\n}\n/**\n * Deserialize a {@link SerializedItemDescriptor}\n * @param kind The persistent store data kind to deserialize.\n * @param descriptor The serialized descriptor we want to deserialize.\n * @returns An item descriptor for the deserialized item.\n */\nfunction deserialize(kind, descriptor) {\n if (descriptor.deleted || !descriptor.serializedItem) {\n return deletedDescriptor(descriptor.version);\n }\n const deserializedItem = kind.deserialize(descriptor.serializedItem);\n if (deserializedItem === undefined) {\n // This would only happen if the JSON is invalid.\n return deletedDescriptor(descriptor.version);\n }\n if (deserializedItem.version === 0 ||\n deserializedItem.version === descriptor.version ||\n deserializedItem.item === undefined) {\n return deserializedItem;\n }\n // There was a mismatch between the version of the serialized descriptor and the deserialized\n // descriptor. So we are going to trust the version of the serialized descriptor.\n return {\n version: descriptor.version,\n item: deserializedItem.item,\n };\n}\n/**\n * Internal implementation of {@link LDFeatureStore} that delegates the basic functionality to an\n * instance of {@link PersistentDataStore}. It provides optional caching behavior and other logic\n * that would otherwise be repeated in every data store implementation. This makes it easier to\n * create new database integrations by implementing only the database-specific logic.\n */\nclass PersistentDataStoreWrapper {\n constructor(core, ttl) {\n this.core = core;\n this.isInitialized = false;\n /**\n * Used to preserve order of operations of async requests.\n */\n this.queue = new UpdateQueue_1.default();\n if (ttl) {\n this.itemCache = new TtlCache_1.default({\n ttl,\n checkInterval: defaultCheckInterval,\n });\n this.allItemsCache = new TtlCache_1.default({\n ttl,\n checkInterval: defaultCheckInterval,\n });\n }\n }\n init(allData, callback) {\n this.queue.enqueue((cb) => {\n const afterStoreInit = () => {\n this.isInitialized = true;\n if (this.itemCache) {\n this.itemCache.clear();\n this.allItemsCache.clear();\n Object.keys(allData).forEach((kindNamespace) => {\n const kind = persistentStoreKinds_1.persistentStoreKinds[kindNamespace];\n const items = allData[kindNamespace];\n this.allItemsCache.set(allForKindCacheKey(kind), items);\n Object.keys(items).forEach((key) => {\n const itemForKey = items[key];\n const itemDescriptor = {\n version: itemForKey.version,\n item: itemForKey,\n };\n this.itemCache.set(cacheKey(kind, key), itemDescriptor);\n });\n });\n }\n cb();\n };\n this.core.init((0, sortDataSet_1.default)(allData), afterStoreInit);\n }, callback);\n }\n get(kind, key, callback) {\n if (this.itemCache) {\n const item = this.itemCache.get(cacheKey(kind, key));\n if (item) {\n callback(itemIfNotDeleted(item));\n return;\n }\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.get(persistKind, key, (descriptor) => {\n var _a;\n if (descriptor && descriptor.serializedItem) {\n const value = deserialize(persistKind, descriptor);\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(cacheKey(kind, key), value);\n callback(itemIfNotDeleted(value));\n }\n callback(null);\n });\n }\n initialized(callback) {\n var _a;\n if (this.isInitialized) {\n callback(true);\n }\n else if ((_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.get(initializationCheckedKey)) {\n callback(false);\n }\n else {\n this.core.initialized((storeInitialized) => {\n var _a;\n this.isInitialized = storeInitialized;\n if (!this.isInitialized) {\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(initializationCheckedKey, true);\n }\n callback(this.isInitialized);\n });\n }\n }\n all(kind, callback) {\n var _a;\n const items = (_a = this.allItemsCache) === null || _a === void 0 ? void 0 : _a.get(allForKindCacheKey(kind));\n if (items) {\n callback(items);\n return;\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.getAll(persistKind, (storeItems) => {\n var _a;\n if (!storeItems) {\n callback({});\n return;\n }\n const filteredItems = {};\n storeItems.forEach(({ key, item }) => {\n const deserializedItem = deserialize(persistKind, item);\n const filteredItem = itemIfNotDeleted(deserializedItem);\n if (filteredItem) {\n filteredItems[key] = filteredItem;\n }\n });\n (_a = this.allItemsCache) === null || _a === void 0 ? void 0 : _a.set(allForKindCacheKey(kind), filteredItems);\n callback(filteredItems);\n });\n }\n upsert(kind, data, callback) {\n this.queue.enqueue((cb) => {\n // Clear the caches which contain all the values of a specific kind.\n if (this.allItemsCache) {\n this.allItemsCache.clear();\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.upsert(persistKind, data.key, persistKind.serialize(data), (err, updatedDescriptor) => {\n var _a, _b;\n if (!err && updatedDescriptor) {\n if (updatedDescriptor.serializedItem) {\n const value = deserialize(persistKind, updatedDescriptor);\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(cacheKey(kind, data.key), value);\n }\n else if (updatedDescriptor.deleted) {\n // Deleted and there was not a serialized representation.\n (_b = this.itemCache) === null || _b === void 0 ? void 0 : _b.set(data.key, {\n key: data.key,\n version: updatedDescriptor.version,\n deleted: true,\n });\n }\n }\n cb();\n });\n }, callback);\n }\n delete(kind, key, version, callback) {\n this.upsert(kind, { key, version, deleted: true }, callback);\n }\n close() {\n var _a, _b;\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.close();\n (_b = this.allItemsCache) === null || _b === void 0 ? void 0 : _b.close();\n this.core.close();\n }\n getDescription() {\n return this.core.getDescription();\n }\n}\nexports.default = PersistentDataStoreWrapper;\n//# sourceMappingURL=PersistentDataStoreWrapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializePoll = exports.PersistentDataStoreWrapper = exports.AsyncStoreFacade = void 0;\nconst AsyncStoreFacade_1 = require(\"./AsyncStoreFacade\");\nexports.AsyncStoreFacade = AsyncStoreFacade_1.default;\nconst PersistentDataStoreWrapper_1 = require(\"./PersistentDataStoreWrapper\");\nexports.PersistentDataStoreWrapper = PersistentDataStoreWrapper_1.default;\nconst serialization_1 = require(\"./serialization\");\nObject.defineProperty(exports, \"deserializePoll\", { enumerable: true, get: function () { return serialization_1.deserializePoll; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass NullEventSource {\n constructor(url, options) {\n this.handlers = {};\n this.closed = false;\n this.url = url;\n this.options = options;\n }\n addEventListener(type, listener) {\n this.handlers[type] = listener;\n }\n close() {\n this.closed = true;\n }\n simulateError(error) {\n const shouldRetry = this.options.errorFilter(error);\n if (!shouldRetry) {\n this.closed = true;\n }\n }\n}\nexports.default = NullEventSource;\n//# sourceMappingURL=NullEventSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullEventSource = void 0;\nconst NullEventSource_1 = require(\"./NullEventSource\");\nexports.NullEventSource = NullEventSource_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BigSegmentStoreStatusProviderImpl = exports.LDClientImpl = exports.platform = exports.integrations = void 0;\nconst BigSegmentStatusProviderImpl_1 = require(\"./BigSegmentStatusProviderImpl\");\nexports.BigSegmentStoreStatusProviderImpl = BigSegmentStatusProviderImpl_1.default;\nconst LDClientImpl_1 = require(\"./LDClientImpl\");\nexports.LDClientImpl = LDClientImpl_1.default;\nexports.integrations = require(\"./integrations\");\nexports.platform = require(\"@launchdarkly/js-sdk-common\");\n__exportStar(require(\"./api\"), exports);\n__exportStar(require(\"./store\"), exports);\n__exportStar(require(\"./events\"), exports);\n__exportStar(require(\"@launchdarkly/js-sdk-common\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCallbacks = void 0;\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line import/prefer-default-export\nconst createCallbacks = () => ({\n onError: (err) => { },\n onFailed: (err) => { },\n onReady: () => { },\n onUpdate: (key) => { },\n hasEventListeners: () => false,\n});\nexports.createCallbacks = createCallbacks;\n//# sourceMappingURL=createCallbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createOptions = exports.defaultOptions = void 0;\n// eslint-disable-next-line max-classes-per-file\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nexports.defaultOptions = {\n stream: false,\n sendEvents: false,\n useLdd: true,\n diagnosticOptOut: true,\n logger: js_server_sdk_common_1.BasicLogger.get(),\n};\nconst createOptions = (options) => {\n var _a;\n const finalOptions = Object.assign(Object.assign({}, exports.defaultOptions), options);\n (_a = finalOptions.logger) === null || _a === void 0 ? void 0 : _a.debug(`Using LD options: ${JSON.stringify(finalOptions)}`);\n return finalOptions;\n};\nexports.createOptions = createOptions;\n//# sourceMappingURL=createOptions.js.map","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateOptions = void 0;\nconst validateOptions = (sdkKey, options) => {\n const { featureStore, logger, sendEvents } = options, rest = __rest(options, [\"featureStore\", \"logger\", \"sendEvents\"]);\n if (!sdkKey) {\n throw new Error('You must configure the client with a client key');\n }\n if (!featureStore || typeof featureStore !== 'object' || !featureStore.get) {\n throw new Error('You must configure the client with a feature store');\n }\n if (!logger) {\n throw new Error('You must configure the client with a logger');\n }\n if (JSON.stringify(rest) !== '{}') {\n throw new Error(`Invalid configuration: ${Object.keys(rest).toString()} not supported`);\n }\n return true;\n};\nexports.validateOptions = validateOptions;\n//# sourceMappingURL=validateOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./createCallbacks\"), exports);\n__exportStar(require(\"./createOptions\"), exports);\n__exportStar(require(\"./validateOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// eslint-disable-next-line max-classes-per-file\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nconst utils_1 = require(\"../utils\");\n/**\n * The LaunchDarkly Akamai SDK edge client object.\n */\nclass LDClient extends js_server_sdk_common_1.LDClientImpl {\n // sdkKey is only used to query featureStore, not to initialize with LD servers\n constructor(sdkKey, platform, options, storeProvider) {\n super(sdkKey, platform, (0, utils_1.createOptions)(options), (0, utils_1.createCallbacks)());\n this.cacheableStoreProvider = storeProvider;\n }\n waitForInitialization() {\n // we need to resolve the promise immediately because Akamai's runtime doesnt\n // have a setimeout so everything executes synchronously.\n return Promise.resolve(this);\n }\n async variation(key, context, defaultValue, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.variation(key, context, defaultValue, callback);\n }\n async variationDetail(key, context, defaultValue, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.variationDetail(key, context, defaultValue, callback);\n }\n async allFlagsState(context, options, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.allFlagsState(context, options, callback);\n }\n}\nexports.default = LDClient;\n//# sourceMappingURL=LDClient.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EdgeFeatureStore = exports.buildRootKey = void 0;\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\n/**\n * Builds the root key needed to retrieve environment payload from the feature store\n * @param sdkKey string\n * @returns\n */\nconst buildRootKey = (sdkKey) => `LD-Env-${sdkKey}`;\nexports.buildRootKey = buildRootKey;\nclass EdgeFeatureStore {\n constructor(edgeProvider, sdkKey, description, logger) {\n this.edgeProvider = edgeProvider;\n this.sdkKey = sdkKey;\n this.description = description;\n this.logger = logger;\n // unused\n this.close = js_server_sdk_common_1.noop;\n this.delete = js_server_sdk_common_1.noop;\n this.upsert = js_server_sdk_common_1.noop;\n this.rootKey = (0, exports.buildRootKey)(this.sdkKey);\n }\n async get(kind, dataKey, callback) {\n const { namespace } = kind;\n const kindKey = namespace === 'features' ? 'flags' : namespace;\n this.logger.debug(`Requesting ${dataKey} from ${this.rootKey}.${kindKey}`);\n try {\n const i = await this.edgeProvider.get(this.rootKey);\n if (!i) {\n throw new Error(`${this.rootKey}.${kindKey} is not found in KV.`);\n }\n const item = (0, js_server_sdk_common_1.deserializePoll)(i);\n if (!item) {\n throw new Error(`Error deserializing ${kindKey}`);\n }\n switch (namespace) {\n case 'features':\n callback(item.flags[dataKey]);\n break;\n case 'segments':\n callback(item.segments[dataKey]);\n break;\n default:\n throw new Error(`Unsupported DataKind: ${namespace}`);\n }\n }\n catch (err) {\n this.logger.error(err);\n callback(null);\n }\n }\n async all(kind, callback = js_server_sdk_common_1.noop) {\n const { namespace } = kind;\n const kindKey = namespace === 'features' ? 'flags' : namespace;\n this.logger.debug(`Requesting all from ${this.rootKey}.${kindKey}`);\n try {\n const i = await this.edgeProvider.get(this.rootKey);\n if (!i) {\n throw new Error(`${this.rootKey}.${kindKey} is not found in KV.`);\n }\n const item = (0, js_server_sdk_common_1.deserializePoll)(i);\n if (!item) {\n throw new Error(`Error deserializing ${kindKey}`);\n }\n switch (namespace) {\n case 'features':\n callback(item.flags);\n break;\n case 'segments':\n callback(item.segments);\n break;\n default:\n throw new Error(`Unsupported DataKind: ${namespace}`);\n }\n }\n catch (err) {\n this.logger.error(err);\n callback({});\n }\n }\n async initialized(callback = js_server_sdk_common_1.noop) {\n const config = await this.edgeProvider.get(this.rootKey);\n const result = config !== null;\n this.logger.debug(`Is ${this.rootKey} initialized? ${result}`);\n callback(result);\n }\n init(allData, callback) {\n callback();\n }\n getDescription() {\n return this.description;\n }\n}\nexports.EdgeFeatureStore = EdgeFeatureStore;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Wraps around an edge provider to cache a copy of the sdk payload locally an explicit request is made to refetch data from the origin.\n * The wrapper is neccessary to ensure that we dont make redundant sub-requests from Akamai to fetch an entire environment payload.\n */\nclass CacheableStoreProvider {\n constructor(edgeProvider, rootKey) {\n this.edgeProvider = edgeProvider;\n this.rootKey = rootKey;\n }\n /**\n * Get data from the edge provider feature store.\n * @param rootKey\n * @returns\n */\n async get(rootKey) {\n if (!this.cache) {\n this.cache = await this.edgeProvider.get(rootKey);\n }\n return this.cache;\n }\n /**\n * Invalidates cache and fetch environment payload data from origin. The result of this data is cached in memory.\n * You should only call this function within a feature store to pre-fetch and cache payload data in environments\n * where its expensive to make multiple outbound requests to the origin\n * @param rootKey\n * @returns\n */\n async prefetchPayloadFromOriginStore(rootKey) {\n this.cache = undefined; // clear the cache so that new data can be fetched from the origin\n return this.get(rootKey || this.rootKey);\n }\n}\nexports.default = CacheableStoreProvider;\n//# sourceMappingURL=cacheableStoreProvider.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Hex;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_js_1 = require(\"crypto-js\");\nconst enc_base64_1 = require(\"crypto-js/enc-base64\");\nconst enc_hex_1 = require(\"crypto-js/enc-hex\");\nclass CryptoJSHasher {\n constructor(algorithm) {\n let algo;\n switch (algorithm) {\n case 'sha1':\n algo = crypto_js_1.algo.SHA1;\n break;\n case 'sha256':\n algo = crypto_js_1.algo.SHA256;\n break;\n default:\n throw new Error('unsupported hash algorithm. Only sha1 and sha256 are supported.');\n }\n this.cryptoJSHasher = algo.create();\n }\n digest(encoding) {\n const result = this.cryptoJSHasher.finalize();\n let enc;\n switch (encoding) {\n case 'base64':\n enc = enc_base64_1.default;\n break;\n case 'hex':\n enc = enc_hex_1.default;\n break;\n default:\n throw new Error('unsupported output encoding. Only base64 and hex are supported.');\n }\n return result.toString(enc);\n }\n update(data) {\n this.cryptoJSHasher.update(data);\n return this;\n }\n}\nexports.default = CryptoJSHasher;\n//# sourceMappingURL=cryptoJSHasher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_js_1 = require(\"crypto-js\");\nclass CryptoJSHmac {\n constructor(algorithm, key) {\n let algo;\n switch (algorithm) {\n case 'sha1':\n algo = crypto_js_1.algo.SHA1;\n break;\n case 'sha256':\n algo = crypto_js_1.algo.SHA256;\n break;\n default:\n throw new Error('unsupported hash algorithm. Only sha1 and sha256 are supported.');\n }\n this.CryptoJSHmac = crypto_js_1.algo.HMAC.create(algo, key);\n }\n digest(encoding) {\n const result = this.CryptoJSHmac.finalize();\n if (encoding === 'base64') {\n return result.toString(CryptoJS.enc.Base64);\n }\n if (encoding === 'hex') {\n return result.toString(CryptoJS.enc.Hex);\n }\n throw new Error('unsupported output encoding. Only base64 and hex are supported.');\n }\n update(data) {\n this.CryptoJSHmac.update(data);\n return this;\n }\n}\nexports.default = CryptoJSHmac;\n//# sourceMappingURL=cryptoJSHmac.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-ignore. // this crypto is provided by Akamai's platform at runtime\nconst crypto_1 = require(\"crypto\");\nconst cryptoJSHasher_1 = require(\"./cryptoJSHasher\");\nconst cryptoJSHmac_1 = require(\"./cryptoJSHmac\");\n/**\n * Uses crypto-js as substitute to node:crypto because the latter\n * is not yet supported in Akamai runtimes.\n * https://cryptojs.gitbook.io/docs/\n */\nclass EdgeCrypto {\n createHash(algorithm) {\n return new cryptoJSHasher_1.default(algorithm);\n }\n createHmac(algorithm, key) {\n return new cryptoJSHmac_1.default(algorithm, key);\n }\n randomUUID() {\n const array = new Uint32Array(1);\n crypto_1.crypto.getRandomValues(array);\n return array.join();\n }\n}\nexports.default = EdgeCrypto;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable max-classes-per-file */\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nclass NoopResponse {\n constructor() {\n this.headers = {};\n this.status = 0;\n }\n /**\n * Read the response and provide it as a string.\n */\n text() {\n return Promise.resolve('');\n }\n /**\n * Read the response and provide it as decoded json.\n */\n json() {\n return Promise.resolve({});\n }\n}\nclass EdgeRequests {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(url, options = {}) {\n return Promise.resolve(new NoopResponse());\n }\n createEventSource(url, eventSourceInitDict) {\n return new js_server_sdk_common_1.NullEventSource(url, eventSourceInitDict);\n }\n}\nexports.default = EdgeRequests;\n//# sourceMappingURL=requests.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_1 = require(\"./crypto\");\nconst requests_1 = require(\"./requests\");\nclass EdgePlatform {\n constructor(info) {\n this.crypto = new crypto_1.default();\n this.requests = new requests_1.default();\n this.info = info;\n }\n}\nexports.default = EdgePlatform;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass AkamaiPlatformInfo {\n constructor(platformName, sdkName, sdkVersion) {\n this.platformName = platformName;\n this.sdkName = sdkName;\n this.sdkVersion = sdkVersion;\n }\n platformData() {\n return {\n name: this.platformName,\n };\n }\n sdkData() {\n return {\n name: this.sdkName,\n version: this.sdkVersion,\n };\n }\n}\nconst createPlatformInfo = (platformName, sdkName, sdkVersion) => new AkamaiPlatformInfo(platformName, sdkName, sdkVersion);\nexports.default = createPlatformInfo;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.init = exports.EdgeFeatureStore = void 0;\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nconst LDClient_1 = require(\"./api/LDClient\");\nconst featureStore_1 = require(\"./featureStore\");\nObject.defineProperty(exports, \"EdgeFeatureStore\", { enumerable: true, get: function () { return featureStore_1.EdgeFeatureStore; } });\nconst cacheableStoreProvider_1 = require(\"./featureStore/cacheableStoreProvider\");\nconst platform_1 = require(\"./platform\");\nconst info_1 = require(\"./platform/info\");\nconst utils_1 = require(\"./utils\");\n__exportStar(require(\"@launchdarkly/js-server-sdk-common\"), exports);\nconst init = (params) => {\n var _a;\n const { sdkKey, options = {}, featureStoreProvider, platformName, sdkName, sdkVersion } = params;\n const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : js_server_sdk_common_1.BasicLogger.get();\n const cachableStoreProvider = new cacheableStoreProvider_1.default(featureStoreProvider, (0, featureStore_1.buildRootKey)(sdkKey));\n const featureStore = new featureStore_1.EdgeFeatureStore(cachableStoreProvider, sdkKey, 'Akamai', logger);\n const ldOptions = Object.assign({ featureStore,\n logger }, options);\n // this throws if options are invalid\n (0, utils_1.validateOptions)(params.sdkKey, ldOptions);\n const platform = (0, info_1.default)(platformName, sdkName, sdkVersion);\n return new LDClient_1.default(sdkKey, new platform_1.default(platform), ldOptions, cachableStoreProvider);\n};\nexports.init = init;\n//# sourceMappingURL=index.js.map",null],"names":["Object","defineProperty","BigSegmentStatusProviderImpl","value","default","constructor","onRequestStatus","this","getStatus","lastStatus","requireStatus","notify","_a","listener","call","setListener","setStatus","status","unescape","ref","indexOf","replace","AttributeReference_1","AttributeReference","refOrLiteral","literal","literalVal","components","isValid","redactionName","startsWith","match","reference","isLiteral","slice","substring","split","map","component","getComponents","get","target","current","index","length","prototype","hasOwnProperty","Array","isArray","getComponent","depth","isKind","compare","other","every","invalidReference","validators","TypeValidators","DateValidator","Function","NumberWithMinimum","TypeArray","Type","FactoryOrInstance","is","factoryOrInstance","typeOfFactory","getType","typeName","example","typeOf","u","val","min","super","StringMatchingRegex","expression","DATE_REGEX","test","numberWithMin","stringMatchingRegex","String","Number","ObjectOrFactory","StringArray","Boolean","Date","Context_1","require$$0","validators_1","require$$1","KindValidator","DEFAULT_KIND","encodeKey","key","includes","validKind","kind","validKey","processPrivateAttributes","privateAttributes","literals","privateAttribute","Context","valid","message","isMulti","isUser","wasLegacy","contexts","contextForError","getValueFromContext","context","anonymous","contextForKind","fromMultiKindContext","kinds","keys","filter","kindsValid","contextsAreObjects","reduce","acc","singleContext","kindOrContext","_meta","values","part","created","privateAttributeReferences","fromSingleKindContext","kindValid","keyValid","fromLegacyUser","undefined","user","singleKindContext","assign","custom","name","ip","firstName","lastName","email","avatar","country","legacyToSingleKind","privateAttributeNames","fromLDContext","isSingleKind","isMultiKind","isLegacyUser","valueForKind","canonicalKey","sort","join","kindsAndKeys","entries","getContexts","legacy","userKind","ContextFilter_1","protectedAttributes","str","legacyTopLevelCopyAttributes","allAttributesPrivate","filterSingleKind","filteredMulti","forEach","single","getAttributesToFilter","k","attr","some","protectedAttr","cloned","excluded","references","stack","push","ptr","source","parent","visited","item","pop","redactRef","find","a","b","cloneWithRedactions","redactedAttributes","LDContextCommon","LDContextMeta","LDMultiKindContext","LDSingleKindContext","LDUser","LDContext","__createBinding","create","o","m","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","exports","p","require$$2","require$$3","require$$4","require$$5","BasicLoggerOptions","LDLogger","LDLogLevel","LDEvaluationDetail","LDEvaluationReason","LDFlagSet","LDFlagValue","options","Crypto","Filesystem","Info","Platform","Requests","EventSource","LDEventType","LDDeliveryStatus","LDEventSender","LDEventSender_1","subsystem","format_1","tryStringify","toString","JSON","stringify","error","TypeError","escapes","s","d","toNumber","i","parseInt","toInt","f","parseFloat","toFloat","j","O","c","args","formatString","shift","out","char","charAt","nextChar","BasicLogger_1","LogPriority","debug","info","warn","none","LevelNames","BasicLogger","_b","_c","logLevel","level","destination","formatter","tryFormat","tryWrite","msg","console","log","prefix","SafeLogger_1","loggerRequirements","logger","fallback","validator","Error","logging","SafeLogger","OptionMessages_1","deprecated","oldName","newName","optionBelowMinimum","unknownOption","wrongOptionType","expectedType","actualType","wrongOptionTypeBoolean","invalidTagValue","tagValueTooLong","partialEndpoint","ApplicationTags_1","regexValidator","tagValidator","tags","application","id","version","tagKeys","flatMap","ClientContext_1","sdkKey","configuration","platform","basicConfiguration","offline","serviceEndpoints","canonicalizeUri","uri","ServiceEndpoints_1","streaming","polling","events","ClientContext","OptionMessages","ApplicationTags","ServiceEndpoints","noop","utils","noop_1","guards","isIdentify","isCustom","isFeature","SummaryCounter_1","count","defValue","variation","increment","EventSummarizer_1","guards_1","startDate","endDate","counters","contextKinds","summarizeEvent","event","countKey","counterKey","counter","Set","add","creationDate","getSummary","features","flagSummary","counterOut","unknown","clearSummary","LDInvalidSDKKeyError_1","LDInvalidSDKKeyError","EventProcessor_1","config","clientContext","eventSender","contextDeduplicator","diagnosticsManager","summarizer","queue","lastKnownPastTime","droppedEvents","deduplicatedUsers","exceededCapacity","eventsInLastBatch","shutdown","flushUsersTimer","capacity","eventsCapacity","contextFilter","flushInterval","flushTimer","initEvent","createInitEvent","postDiagnosticEvent","diagnosticsTimer","diagnosticRecordingInterval","sendEventData","DiagnosticEvent","close","clearInterval","flush","eventsToFlush","summary","tryPostingEvents","sendEvent","inputEvent","isFeatureEvent","addFullEvent","trackEvents","addDebugEvent","shouldDebugEvent","isIdentifyEvent","shouldNotDeduplicate","processContext","enqueue","makeOutputEvent","prereqOf","reason","contextKeys","data","metricValue","debugEventsUntilDate","now","res","AnalyticsEvents","FailedAndMustShutDown","serverTime","InputCustomEvent_1","InputEvalEvent_1","withReasons","detail","variationIndex","InputIdentifyEvent_1","EventProcessor","InputEvalEvent","InputCustomEvent","InputIdentifyEvent","ContextFilter","internal","require$$6","require$$7","require$$8","LruCache_1","keyMap","Map","head","tail","size","max","next","Uint32Array","prev","maxAge","lastUpdated","fill","set","setTail","clear","evict","delete","link","n","BigSegmentsManager_1","js_sdk_common_1","BigSegmentStatusProviderImpl_1","store","crypto","statusProvider","async","pollStoreAndUpdateStatus","staleTimeMs","staleAfter","statusPollInterval","pollHandle","setInterval","cache","userCacheSize","userCacheTime","getUserMembership","userKey","memberCache","membership","hashForUserKey","cacheItem","err","available","stale","newStatus","metadata","getMetadata","lastUpToDate","isStale","hasher","createHash","update","digest","timestamp","ClientMessages_1","ClientMessages","missingContextKeyNoEvent","VersionedDataKinds_1","VersionedDataKinds","Features","namespace","streamApiPath","requestPath","Segments","NamespacedDataSet_1","itemsByNamespace","remove","items","removeAll","enumerate","callback","mergeFrom","bind","DependencyTracker_1","dependenciesFrom","dependenciesTo","updateDependenciesFrom","newDependencySet","oldDependencySet","depNs","depKey","depsToThisDep","updateModifiedItems","inDependencySet","modifiedNamespace","modifiedKey","affectedItems","reset","DataSourceUpdates_1","computeDependencies","ret","isFlag","isSegment","flag","prerequisites","prereq","itemWithRuleClauses","rules","rule","clauses","clause","op","featureStore","hasEventListeners","onChange","dependencyTracker","init","allData","checkForChanges","doInit","oldData","updatedItems","oldDataForKind","newDataForKind","mergedData","addIfModified","sendChangeEvents","all","oldFlags","oldSegments","upsert","doUpsert","oldItem","oldValue","newValue","toDataSet","dataSet","NullUpdateProcessor_1","start","fn","stop","errors","isHttpRecoverable","LDClientError","LDUnexpectedResponseError","LDStreamingError","LDPollingError","code","serialization","deserializeSegment","serializeSegment","deserializeFlag","deserializeDelete","deserializePatch","deserializePoll","deserializeAll","processSegment","processFlag","replacer","reviver","processRollout","rollout","bucketBy","bucketByAttributeReference","contextKind","fallthrough","attribute","attributeReference","segment","rolloutContextKind","tryParse","parse","parsed","flags","segments","path","serializeFlag","httpErrorMessage_1","retryMessage","PollingProcessor_1","errors_1","serialization_1","requestor","stopped","pollInterval","poll","reportJsonError","startTime","requestAllData","body","elapsed","sleepFor","Math","initData","timeoutHandle","clearTimeout","defaultHeaders_1","sdkData","headers","authorization","wrapperName","wrapperVersion","Requestor_1","requests","eTagCache","requestWithETagCache","requestUrl","cacheEntry","cachedETag","etag","updatedOptions","fetch","text","cb","method","StreamingProcessor_1","getKeyFromPath","streamInitialReconnectDelay","streamUri","logConnectionStarted","connectionAttemptStartTime","logConnectionResult","success","recordStreamInit","type","eventSource","createEventSource","errorFilter","initialRetryDelayMillis","readTimeoutMillis","retryResetIntervalMillis","onclose","onerror","onopen","onretrying","e","delayMillis","addEventListener","deleted","seriesAsync","collection","check","firstSeriesAsync","allSeriesAsync","firstResult","operator","ErrorKinds","ErrorKinds_1","Reasons_1","Reasons","prerequisiteFailed","prerequisiteKey","ruleMatch","ruleId","ruleIndex","Fallthrough","Off","TargetMatch","EvalResult_1","EvalResult","isError","isOff","setDefault","def","forError","errorKind","forSuccess","Bucketer_1","sha1Hex","hash","bucket","salt","kindForRollout","seed","bucketableValue","isInteger","valueForBucketing","hashKey","variations","getBucketBy","getOffVariation","KEY_ATTR_REF","getVariation","MalformedFlag","offVariation","isExperiment","evalTargets_1","collection_1","variations_1","evalTarget","contextKey","contextTargets","userTarget","targets","ut","makeBigSegmentRef_1","generation","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","debug_1","process","env","NODE_DEBUG","re","module","safeRe","src","t","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","token","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","looseOption","freeze","loose","emptyOpts","parseOptions_1","numeric","compareIdentifiers","anum","bnum","identifiers","rcompareIdentifiers","parseOptions","semver","SemVer","includePrerelease","trim","LOOSE","FULL","raw","major","minor","patch","prerelease","num","build","format","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","base","isNaN","parse_1","throwErrors","er","valid_1","v","clean_1","inc_1","diff_1","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","major_1","minor_1","patch_1","prerelease_1","compare_1","rcompare_1","compareLoose_1","compareBuild_1","versionA","versionB","sort_1","list","rsort_1","gt_1","lt_1","eq_1","neq_1","gte_1","lte_1","eq","neq","gt","gte","lt","lte","cmp_1","coerce_1","rtl","COERCERTL","exec","lastIndex","Yallist","self","arguments","l","insert","node","inserted","Node","unshift","yallist","removeNode","unshiftNode","pushNode","thisp","walker","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArray","arr","toArrayReverse","from","to","sliceReverse","splice","deleteCount","nodes","reverse","iterator","Symbol","Range","range","Comparator","r","parseRange","first","isNullSet","isAny","comps","memoKey","cached","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","comp","parseComparator","replaceGTE0","COMPARATORLOOSE","rangeMap","comparators","has","result","intersects","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","LRU","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","hit","del","diff","Entry","forEachStep","lruCache","Infinity","lc","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","dump","h","dumpLru","len","peek","load","expiresAt","prune","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","toLowerCase","replaceTilde","TILDELOOSE","TILDE","_","M","pr","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","ANY","allowed","COMPARATOR","cmp","comparator","satisfies_1","toComparators_1","maxSatisfying_1","versions","maxSV","rangeObj","minSatisfying_1","minSV","minVersion_1","minver","setMin","compver","satisfies","outside_1","hilo","gtfn","ltefn","ltfn","ecomp","high","low","outside","gtr_1","ltr_1","intersects_1","r1","r2","minimumVersionWithPreRelease","minimumVersion","simpleSubset","sub","dom","eqSet","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","subset_1","sawNonNull","OUTER","simpleSub","simpleDom","isSub","internalRe","simplifyRange","ranges","simplified","original","clean","require$$9","require$$10","require$$11","require$$12","require$$13","rcompare","require$$14","compareLoose","require$$15","require$$16","require$$17","rsort","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","coerce","require$$26","require$$27","require$$28","require$$29","toComparators","require$$30","maxSatisfying","require$$31","minSatisfying","require$$32","minVersion","require$$33","validRange","require$$34","require$$35","gtr","require$$36","ltr","require$$37","require$$38","subset","require$$40","tokens","Operations","semver_1","VERSION_COMPONENTS_REGEX","parseSemver","input","transformed","semVerOperator","aVer","bVer","makeOperator","converter","parseDate","operators","in","endsWith","matches","pattern","safeRegexMatch","contains","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","before","after","semVerEqual","semVerLessThan","semVerGreaterThan","execute","matchClause","Operations_1","maybeNegate","negate","matchAny","testValue","contextValue","segmentSearch","userTargets","targetIndex","matchSegmentTargets_1","includedContexts","included","excludedContexts","Evaluator_1","matchClause_1","bigSegmentsStatusPriority","HEALTHY","STALE","STORE_ERROR","NOT_CONFIGURED","getBigSegmentsStatusPriority","computeUpdatedBigSegmentsStatus","old","latest","EvalState","Match","isMatch","MatchError","queries","bucketer","evaluate","eventFactory","state","evaluateInternal","bigSegmentsStatus","visitedFlags","on","prereqResult","checkPrerequisites","targetRes","ruleRes","evaluateRules","variationForContext","updatedVisitedFlags","prereqFlag","getFlag","evalResult","evalEvent","ruleResult","ruleMatchContext","clauseMatchContext","segmentsVisited","errorResult","getSegment","newVisited","segmentMatchContext","varOrRollout","hadContext","updatedReason","sum","variate","weight","untracked","inExperiment","lastVariate","segmentRuleMatchContext","simpleSegmentMatchContext","unbounded","includeExclude","matched","bigSegmentKind","unboundedContextKind","keyForBigSegment","bigSegmentsMembership","bigSegmentMatchContext","getBigSegmentsMembership","segmentRef","ContextDeduplicator_1","contextKeysCache","contextKeysCapacity","contextKeysFlushInterval","inCache","InMemoryFeatureStore_1","initCalled","addItem","deletedItem","initialized","getDescription","defaultValues","validations","baseUri","eventsUri","timeout","bigSegments","updateProcessor","proxyOptions","stream","useLdd","sendEvents","tlsParams","diagnosticOptOut","validatedOptions","optionName","optionValue","validateTypesAndNames","streamingEndpointSpecified","pollingEndpointSpecified","eventEndpointSpecified","validateEndpoints","updateProcessorFactory","featureStoreFactory","DiagnosticsManager_1","Configuration_1","secondsToMillis","sec","trunc","streamInits","dataSinceDate","diagnosticId","randomUUID","sdkKeySuffix","_d","_e","_f","_g","_h","_j","_k","platformData","sdk","customBaseURI","customStreamURI","customEventsURI","connectTimeoutMillis","socketTimeoutMillis","eventsFlushIntervalMillis","pollingIntervalMillis","reconnectTimeMillis","streamingDisabled","usingRelayDaemon","contextKeysFlushIntervalMillis","usingProxy","usingProxyAuthenticator","usingProxyAuth","diagnosticRecordingIntervalMillis","dataStoreType","osArch","os","arch","osName","osVersion","additional","failed","durationMillis","createStatsEventAndReset","currentTime","evt","isExperiment_1","trackEventsFallthrough","EventFactory_1","defaultVal","prereqOfFlag","addExperimentData","unknownFlagEvent","identifyEvent","customEvent","EventSender_1","defaultHeaders","diagnosticEventsUri","payloadId","canRetry","tryRes","Succeeded","serverDate","Failed","Promise","NullEventProcessor_1","FlagsStateBuilder_1","flagValues","flagMetadata","addFlag","trackReason","detailsOnlyIfTracked","meta","omitDetails","allValues","getFlagValue","getFlagReason","toJSON","$flagsState","$valid","promisify_1","resolve","AsyncStoreFacade_1","LDClientImpl_1","InitState","callbacks","initState","Initializing","eventFactoryDefault","eventFactoryWithReasons","onError","onFailed","onReady","onUpdate","dataSourceUpdates","makeDefaultProcessor","eventProcessor","asyncFacade","manager","bigSegmentsManager","bigSegmentStatusProviderInternal","evaluator","initReject","Initialized","initResolve","waitForInitialization","initializedPromise","reject","defaultValue","evaluateIfPossible","variationDetail","allFlagsState","allFlagState","evalContext","builder","clientOnly","clientSideOnly","detailsOnlyForTrackedFlags","allFlags","storeItem","clientSide","requireExperimentData","secureModeHash","checkedContext","hmac","createHmac","isOffline","track","identify","variationInternal","flagKey","ClientNotReady","UserNotSpecified","FlagNotFound","evalRes","FileLoader_1","filesystem","paths","watch","watchers","fileData","fileTimestamps","loadAndWatch","promises","readFile","timeStamp","getFileTimestamp","results","watcher","updatePath","debounceCallback","debounceHandle","FileDataSource_1","fileLoader","autoUpdate","processFileData","initCallback","yamlParser","fd","processParsedData","makeFlagWithValue","FileDataSourceFactory_1","ldClientContext","fileSystem","getFactory","variationForBoolean","FALSE_VARIATION_INDEX","TRUE_VARIATION_INDEX","TestDataRuleBuilder_1","booleanVariation_1","TestDataRuleBuilder","flagBuilder","andMatch","andNotMatch","thenReturn","booleanFlag","addRule","clone","TestDataFlagBuilder_1","TestDataFlagBuilder","fallthroughVariation","targetsByVariation","isBooleanFlag","targetingOn","variationForAll","clearRules","clearAllTargets","valueForAll","variationForUser","targetsForVariation","targetsForContextKind","ifMatch","ifNotMatch","flagRuleBuilder","baseFlagObject","contextTargetsForVariation","numberVariation","getKey","TestDataSource_1","onStop","TestData_1","currentFlags","currentSegments","dataSources","flagBuilders","newSource","tds","oldVersion","newFlag","impl","usePreconfiguredFlag","inConfig","flagConfig","newItem","usePreconfiguredSegment","segmentConfig","test_data","TestData","FileDataSourceFactory","LDFlagsStateOptions","LDFlagsState","LDBigSegmentsOptions","LDOptions","LDProxyOptions","LDTLSOptions","LDClient","DataKind","LDFeatureStore","LDStreamProcessor","FileDataSourceOptions","BigSegmentStore","BigSegmentStoreMembership","BigSegmentStoreMetadata","BigSegmentStoreStatus","DataCollection","FullDataSet","KeyedItems","VersionedData","BigSegmentStoreStatusProvider","persistent_store","LDFeatureRequestor","LDDataSourceUpdates","subsystems","interfaces","integrations","record","expiration","TtlCache_1","storage","checkIntervalHandle","checkInterval","ttl","purgeStale","persistentStoreKinds","deserialize","serialize","serializedItem","priority","sortDataSet_1","persistentStoreKinds_1","topologicalSort","itemsMap","sortedItems","unvisitedItems","visit","preReq","prereqKey","dataMap","kindNamespace","i1","i2","UpdateQueue_1","updateFn","executePendingUpdates","PersistentDataStoreWrapper_1","cacheKey","allForKindCacheKey","initializationCheckedKey","itemIfNotDeleted","deletedDescriptor","descriptor","deserializedItem","core","isInitialized","itemCache","allItemsCache","itemForKey","itemDescriptor","persistKind","storeInitialized","getAll","storeItems","filteredItems","filteredItem","updatedDescriptor","PersistentDataStoreWrapper","AsyncStoreFacade","NullEventSource_1","url","handlers","closed","simulateError","NullEventSource","BigSegmentStoreStatusProviderImpl","LDClientImpl","createCallbacks_1","createCallbacks","createOptions","defaultOptions","js_server_sdk_common_1","finalOptions","__rest","getOwnPropertySymbols","propertyIsEnumerable","validateOptions_1","validateOptions","rest","LDClient_1","utils_1","storeProvider","cacheableStoreProvider","prefetchPayloadFromOriginStore","EdgeFeatureStore","buildRootKey","edgeProvider","description","rootKey","dataKey","kindKey","CryptoJS","window","globalThis","msCrypto","global","require","cryptoSecureRandomInt","getRandomValues","randomBytes","readInt32LE","F","obj","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","$super","apply","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","concat","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","random","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","offset","_doProcessBlock","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","_createHmacHelper","C_algo","HMAC","algo","factory","X32WordArray","C_x64","x64","Word","toX32","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","T","abs","sin","MD5","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","H_i","x","HmacMD5","W","SHA1","HmacSHA1","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","SHA256","g","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","HmacSHA256","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","HmacSHA512","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","y","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","EvpKDF","keySize","iterations","compute","password","block","derivedKey","derivedKeyWords","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","dataUpdate","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","StreamCipher","C_mode","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","BlockCipher","modeCreator","_mode","__creator","finalProcessedBlocks","CipherParams","cipherParams","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","_counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","_keystream","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyWords","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_doCryptBlock","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","SHA224","HmacSHA224","SHA384","HmacSHA384","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","ar","br","cr","dr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","ECB","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","_nRounds","_keyPriorReset","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","nRounds","s0","s1","s2","s3","t0","t2","t3","RC4","keySigBytes","S","_S","keyByteIndex","keyByte","_i","generateKeystreamWord","keystreamWord","RC4Drop","drop","C_","G","Rabbit","X","_X","_C","nextState","IV","IV_0","IV_1","i0","i3","gx","ga","gb","RabbitLegacy","cryptoJSHasher","crypto_js_1","enc_base64_1","enc_hex_1","encoding","cryptoJSHmac","CryptoJSHmac","crypto_1","cryptoJSHasher_1","cryptoJSHmac_1","array","NoopResponse","json","eventSourceInitDict","requests_1","AkamaiPlatformInfo","platformName","sdkName","sdkVersion","featureStore_1","cacheableStoreProvider_1","platform_1","info_1","params","featureStoreProvider","cachableStoreProvider","ldOptions","initEdge"],"mappings":"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U,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,WACV,QAAU,GACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,KACV,QAAU,WACV,QAAU,QACV,QAAU,SAE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","x_google_ignoreList":[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230]}
1
+ {"version":3,"file":"bundle.cjs.js","sources":["../../../../shared/sdk-server/dist/BigSegmentStatusProviderImpl.js","../../../../shared/common/dist/AttributeReference.js","../../../../shared/common/dist/validators.js","../../../../shared/common/dist/Context.js","../../../../shared/common/dist/ContextFilter.js","../../../../shared/common/dist/api/context/LDContextCommon.js","../../../../shared/common/dist/api/context/LDContextMeta.js","../../../../shared/common/dist/api/context/LDMultiKindContext.js","../../../../shared/common/dist/api/context/LDSingleKindContext.js","../../../../shared/common/dist/api/context/LDUser.js","../../../../shared/common/dist/api/context/LDContext.js","../../../../shared/common/dist/api/context/index.js","../../../../shared/common/dist/api/logging/BasicLoggerOptions.js","../../../../shared/common/dist/api/logging/LDLogger.js","../../../../shared/common/dist/api/logging/LDLogLevel.js","../../../../shared/common/dist/api/logging/index.js","../../../../shared/common/dist/api/data/LDEvaluationDetail.js","../../../../shared/common/dist/api/data/LDEvaluationReason.js","../../../../shared/common/dist/api/data/LDFlagSet.js","../../../../shared/common/dist/api/data/LDFlagValue.js","../../../../shared/common/dist/api/data/index.js","../../../../shared/common/dist/api/options/index.js","../../../../shared/common/dist/api/platform/Crypto.js","../../../../shared/common/dist/api/platform/Filesystem.js","../../../../shared/common/dist/api/platform/Info.js","../../../../shared/common/dist/api/platform/Platform.js","../../../../shared/common/dist/api/platform/Requests.js","../../../../shared/common/dist/api/platform/EventSource.js","../../../../shared/common/dist/api/platform/index.js","../../../../shared/common/dist/api/subsystem/LDEventSender.js","../../../../shared/common/dist/api/subsystem/index.js","../../../../shared/common/dist/api/index.js","../../../../shared/common/dist/logging/format.js","../../../../shared/common/dist/logging/BasicLogger.js","../../../../shared/common/dist/logging/SafeLogger.js","../../../../shared/common/dist/logging/index.js","../../../../shared/common/dist/options/OptionMessages.js","../../../../shared/common/dist/options/ApplicationTags.js","../../../../shared/common/dist/options/ClientContext.js","../../../../shared/common/dist/options/ServiceEndpoints.js","../../../../shared/common/dist/options/index.js","../../../../shared/common/dist/utils/noop.js","../../../../shared/common/dist/utils/index.js","../../../../shared/common/dist/internal/events/guards.js","../../../../shared/common/dist/internal/events/SummaryCounter.js","../../../../shared/common/dist/internal/events/EventSummarizer.js","../../../../shared/common/dist/internal/events/LDInvalidSDKKeyError.js","../../../../shared/common/dist/internal/events/EventProcessor.js","../../../../shared/common/dist/internal/events/InputCustomEvent.js","../../../../shared/common/dist/internal/events/InputEvalEvent.js","../../../../shared/common/dist/internal/events/InputIdentifyEvent.js","../../../../shared/common/dist/internal/events/index.js","../../../../shared/common/dist/internal/index.js","../../../../shared/common/dist/index.js","../../../../shared/sdk-server/dist/cache/LruCache.js","../../../../shared/sdk-server/dist/BigSegmentsManager.js","../../../../shared/sdk-server/dist/ClientMessages.js","../../../../shared/sdk-server/dist/store/VersionedDataKinds.js","../../../../shared/sdk-server/dist/data_sources/NamespacedDataSet.js","../../../../shared/sdk-server/dist/data_sources/DependencyTracker.js","../../../../shared/sdk-server/dist/data_sources/DataSourceUpdates.js","../../../../shared/sdk-server/dist/data_sources/NullUpdateProcessor.js","../../../../shared/sdk-server/dist/errors.js","../../../../shared/sdk-server/dist/store/serialization.js","../../../../shared/sdk-server/dist/data_sources/httpErrorMessage.js","../../../../shared/sdk-server/dist/data_sources/PollingProcessor.js","../../../../shared/sdk-server/dist/data_sources/defaultHeaders.js","../../../../shared/sdk-server/dist/data_sources/Requestor.js","../../../../shared/sdk-server/dist/data_sources/StreamingProcessor.js","../../../../shared/sdk-server/dist/evaluation/collection.js","../../../../shared/sdk-server/dist/evaluation/ErrorKinds.js","../../../../shared/sdk-server/dist/evaluation/Reasons.js","../../../../shared/sdk-server/dist/evaluation/EvalResult.js","../../../../shared/sdk-server/dist/evaluation/Bucketer.js","../../../../shared/sdk-server/dist/evaluation/variations.js","../../../../shared/sdk-server/dist/evaluation/evalTargets.js","../../../../shared/sdk-server/dist/evaluation/makeBigSegmentRef.js","../../../../../node_modules/semver/internal/constants.js","../../../../../node_modules/semver/internal/debug.js","../../../../../node_modules/semver/internal/re.js","../../../../../node_modules/semver/internal/parse-options.js","../../../../../node_modules/semver/internal/identifiers.js","../../../../../node_modules/semver/classes/semver.js","../../../../../node_modules/semver/functions/parse.js","../../../../../node_modules/semver/functions/valid.js","../../../../../node_modules/semver/functions/clean.js","../../../../../node_modules/semver/functions/inc.js","../../../../../node_modules/semver/functions/diff.js","../../../../../node_modules/semver/functions/major.js","../../../../../node_modules/semver/functions/minor.js","../../../../../node_modules/semver/functions/patch.js","../../../../../node_modules/semver/functions/prerelease.js","../../../../../node_modules/semver/functions/compare.js","../../../../../node_modules/semver/functions/rcompare.js","../../../../../node_modules/semver/functions/compare-loose.js","../../../../../node_modules/semver/functions/compare-build.js","../../../../../node_modules/semver/functions/sort.js","../../../../../node_modules/semver/functions/rsort.js","../../../../../node_modules/semver/functions/gt.js","../../../../../node_modules/semver/functions/lt.js","../../../../../node_modules/semver/functions/eq.js","../../../../../node_modules/semver/functions/neq.js","../../../../../node_modules/semver/functions/gte.js","../../../../../node_modules/semver/functions/lte.js","../../../../../node_modules/semver/functions/cmp.js","../../../../../node_modules/semver/functions/coerce.js","../../../../../node_modules/yallist/yallist.js","../../../../../node_modules/yallist/iterator.js","../../../../../node_modules/semver/classes/range.js","../../../../../node_modules/semver/node_modules/lru-cache/index.js","../../../../../node_modules/semver/classes/comparator.js","../../../../../node_modules/semver/functions/satisfies.js","../../../../../node_modules/semver/ranges/to-comparators.js","../../../../../node_modules/semver/ranges/max-satisfying.js","../../../../../node_modules/semver/ranges/min-satisfying.js","../../../../../node_modules/semver/ranges/min-version.js","../../../../../node_modules/semver/ranges/valid.js","../../../../../node_modules/semver/ranges/outside.js","../../../../../node_modules/semver/ranges/gtr.js","../../../../../node_modules/semver/ranges/ltr.js","../../../../../node_modules/semver/ranges/intersects.js","../../../../../node_modules/semver/ranges/simplify.js","../../../../../node_modules/semver/ranges/subset.js","../../../../../node_modules/semver/index.js","../../../../shared/sdk-server/dist/evaluation/Operations.js","../../../../shared/sdk-server/dist/evaluation/matchClause.js","../../../../shared/sdk-server/dist/evaluation/matchSegmentTargets.js","../../../../shared/sdk-server/dist/evaluation/Evaluator.js","../../../../shared/sdk-server/dist/events/ContextDeduplicator.js","../../../../shared/sdk-server/dist/store/InMemoryFeatureStore.js","../../../../shared/sdk-server/dist/options/Configuration.js","../../../../shared/sdk-server/dist/events/DiagnosticsManager.js","../../../../shared/sdk-server/dist/events/isExperiment.js","../../../../shared/sdk-server/dist/events/EventFactory.js","../../../../shared/sdk-server/dist/events/EventSender.js","../../../../shared/sdk-server/dist/events/NullEventProcessor.js","../../../../shared/sdk-server/dist/FlagsStateBuilder.js","../../../../shared/sdk-server/dist/async/promisify.js","../../../../shared/sdk-server/dist/store/AsyncStoreFacade.js","../../../../shared/sdk-server/dist/LDClientImpl.js","../../../../shared/sdk-server/dist/data_sources/FileLoader.js","../../../../shared/sdk-server/dist/data_sources/FileDataSource.js","../../../../shared/sdk-server/dist/integrations/FileDataSourceFactory.js","../../../../shared/sdk-server/dist/integrations/test_data/booleanVariation.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataRuleBuilder.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataFlagBuilder.js","../../../../shared/sdk-server/dist/integrations/test_data/TestDataSource.js","../../../../shared/sdk-server/dist/integrations/test_data/TestData.js","../../../../shared/sdk-server/dist/integrations/test_data/index.js","../../../../shared/sdk-server/dist/integrations/index.js","../../../../shared/sdk-server/dist/api/data/LDFlagsStateOptions.js","../../../../shared/sdk-server/dist/api/data/LDFlagsState.js","../../../../shared/sdk-server/dist/api/data/index.js","../../../../shared/sdk-server/dist/api/options/LDBigSegmentsOptions.js","../../../../shared/sdk-server/dist/api/options/LDOptions.js","../../../../shared/sdk-server/dist/api/options/LDProxyOptions.js","../../../../shared/sdk-server/dist/api/options/LDTLSOptions.js","../../../../shared/sdk-server/dist/api/options/index.js","../../../../shared/sdk-server/dist/api/LDClient.js","../../../../shared/sdk-server/dist/api/interfaces/DataKind.js","../../../../shared/sdk-server/dist/api/subsystems/LDFeatureStore.js","../../../../shared/sdk-server/dist/api/subsystems/LDStreamProcessor.js","../../../../shared/sdk-server/dist/api/integrations/FileDataSourceOptions.js","../../../../shared/sdk-server/dist/api/integrations/index.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStore.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreMembership.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreMetadata.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreStatus.js","../../../../shared/sdk-server/dist/api/interfaces/DataCollection.js","../../../../shared/sdk-server/dist/api/interfaces/FullDataSet.js","../../../../shared/sdk-server/dist/api/interfaces/KeyedItems.js","../../../../shared/sdk-server/dist/api/interfaces/VersionedData.js","../../../../shared/sdk-server/dist/api/interfaces/BigSegmentStoreStatusProvider.js","../../../../shared/sdk-server/dist/api/interfaces/persistent_store/index.js","../../../../shared/sdk-server/dist/api/interfaces/index.js","../../../../shared/sdk-server/dist/api/subsystems/LDFeatureRequestor.js","../../../../shared/sdk-server/dist/api/subsystems/LDDataSourceUpdates.js","../../../../shared/sdk-server/dist/api/subsystems/index.js","../../../../shared/sdk-server/dist/api/index.js","../../../../shared/sdk-server/dist/cache/TtlCache.js","../../../../shared/sdk-server/dist/store/persistentStoreKinds.js","../../../../shared/sdk-server/dist/store/sortDataSet.js","../../../../shared/sdk-server/dist/store/UpdateQueue.js","../../../../shared/sdk-server/dist/store/PersistentDataStoreWrapper.js","../../../../shared/sdk-server/dist/store/index.js","../../../../shared/sdk-server/dist/events/NullEventSource.js","../../../../shared/sdk-server/dist/events/index.js","../../../../shared/sdk-server/dist/index.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/createCallbacks.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/createOptions.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/validateOptions.js","../../../../shared/akamai-edgeworker-sdk/dist/utils/index.js","../../../../shared/akamai-edgeworker-sdk/dist/api/LDClient.js","../../../../shared/akamai-edgeworker-sdk/dist/featureStore/index.js","../../../../shared/akamai-edgeworker-sdk/dist/featureStore/cacheableStoreProvider.js","../../../../../node_modules/crypto-js/core.js","../../../../../node_modules/crypto-js/x64-core.js","../../../../../node_modules/crypto-js/lib-typedarrays.js","../../../../../node_modules/crypto-js/enc-utf16.js","../../../../../node_modules/crypto-js/enc-base64.js","../../../../../node_modules/crypto-js/enc-base64url.js","../../../../../node_modules/crypto-js/md5.js","../../../../../node_modules/crypto-js/sha1.js","../../../../../node_modules/crypto-js/sha256.js","../../../../../node_modules/crypto-js/sha512.js","../../../../../node_modules/crypto-js/sha3.js","../../../../../node_modules/crypto-js/hmac.js","../../../../../node_modules/crypto-js/evpkdf.js","../../../../../node_modules/crypto-js/cipher-core.js","../../../../../node_modules/crypto-js/mode-cfb.js","../../../../../node_modules/crypto-js/mode-ctr.js","../../../../../node_modules/crypto-js/mode-ctr-gladman.js","../../../../../node_modules/crypto-js/mode-ofb.js","../../../../../node_modules/crypto-js/tripledes.js","../../../../../node_modules/crypto-js/index.js","../../../../../node_modules/crypto-js/sha224.js","../../../../../node_modules/crypto-js/sha384.js","../../../../../node_modules/crypto-js/ripemd160.js","../../../../../node_modules/crypto-js/pbkdf2.js","../../../../../node_modules/crypto-js/mode-ecb.js","../../../../../node_modules/crypto-js/pad-ansix923.js","../../../../../node_modules/crypto-js/pad-iso10126.js","../../../../../node_modules/crypto-js/pad-iso97971.js","../../../../../node_modules/crypto-js/pad-zeropadding.js","../../../../../node_modules/crypto-js/pad-nopadding.js","../../../../../node_modules/crypto-js/format-hex.js","../../../../../node_modules/crypto-js/aes.js","../../../../../node_modules/crypto-js/rc4.js","../../../../../node_modules/crypto-js/rabbit.js","../../../../../node_modules/crypto-js/rabbit-legacy.js","../../../../../node_modules/crypto-js/enc-hex.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/cryptoJSHasher.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/cryptoJSHmac.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/crypto/index.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/requests.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/index.js","../../../../shared/akamai-edgeworker-sdk/dist/platform/info/index.js","../../../../shared/akamai-edgeworker-sdk/dist/index.js","../../../src/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @ignore\n */\nclass BigSegmentStoreStatusProviderImpl {\n constructor(onRequestStatus) {\n this.onRequestStatus = onRequestStatus;\n }\n /**\n * Gets the current status of the store, if known.\n *\n * @returns a {@link BigSegmentStoreStatus}, or `undefined` if the SDK has not yet queried the\n * Big Segment store status\n */\n getStatus() {\n return this.lastStatus;\n }\n /**\n * Gets the current status of the store, querying it if the status has not already been queried.\n *\n * @returns a Promise for the status of the store\n */\n async requireStatus() {\n if (!this.lastStatus) {\n await this.onRequestStatus();\n }\n // Status will be defined at this point.\n return this.lastStatus;\n }\n notify() {\n var _a;\n if (this.lastStatus) {\n (_a = this.listener) === null || _a === void 0 ? void 0 : _a.call(this, this.lastStatus);\n }\n }\n setListener(listener) {\n this.listener = listener;\n }\n setStatus(status) {\n this.lastStatus = status;\n }\n}\nexports.default = BigSegmentStoreStatusProviderImpl;\n//# sourceMappingURL=BigSegmentStatusProviderImpl.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Converts a literal to a ref string.\n * @param value\n * @returns An escaped literal which can be used as a ref.\n */\nfunction toRefString(value) {\n return `/${value.replace(/~/g, '~0').replace(/\\//g, '~1')}`;\n}\n/**\n * Produce a literal from a ref component.\n * @param ref\n * @returns A literal version of the ref.\n */\nfunction unescape(ref) {\n return ref.indexOf('~') ? ref.replace(/~1/g, '/').replace(/~0/g, '~') : ref;\n}\nfunction getComponents(reference) {\n const referenceWithoutPrefix = reference.startsWith('/') ? reference.substring(1) : reference;\n return referenceWithoutPrefix.split('/').map((component) => unescape(component));\n}\nfunction isLiteral(reference) {\n return !reference.startsWith('/');\n}\nfunction validate(reference) {\n return !reference.match(/\\/\\/|(^\\/.*~[^0|^1])|~$/);\n}\nclass AttributeReference {\n /**\n * Take an attribute reference string, or literal string, and produce\n * an attribute reference.\n *\n * Legacy user objects would have been created with names not\n * references. So, in that case, we need to use them as a component\n * without escaping them.\n *\n * e.g. A user could contain a custom attribute of `/a` which would\n * become the literal `a` if treated as a reference. Which would cause\n * it to no longer be redacted.\n * @param refOrLiteral The attribute reference string or literal string.\n * @param literal it true the value should be treated as a literal.\n */\n constructor(refOrLiteral, literal = false) {\n if (!literal) {\n this.redactionName = refOrLiteral;\n if (refOrLiteral === '' || refOrLiteral === '/' || !validate(refOrLiteral)) {\n this.isValid = false;\n this.components = [];\n return;\n }\n if (isLiteral(refOrLiteral)) {\n this.components = [refOrLiteral];\n }\n else if (refOrLiteral.indexOf('/', 1) < 0) {\n this.components = [unescape(refOrLiteral.slice(1))];\n }\n else {\n this.components = getComponents(refOrLiteral);\n }\n // The items inside of '_meta' are not intended to be addressable.\n // Excluding it as a valid reference means that we can make it non-addressable\n // without having to copy all the attributes out of the context object\n // provided by the user.\n if (this.components[0] === '_meta') {\n this.isValid = false;\n }\n else {\n this.isValid = true;\n }\n }\n else {\n const literalVal = refOrLiteral;\n this.components = [literalVal];\n this.isValid = literalVal !== '';\n // Literals which start with '/' need escaped to prevent ambiguity.\n this.redactionName = literalVal.startsWith('/') ? toRefString(literalVal) : literalVal;\n }\n }\n get(target) {\n const { components, isValid } = this;\n if (!isValid) {\n return undefined;\n }\n let current = target;\n // This doesn't use a range based for loops, because those use generators.\n // See `no-restricted-syntax`.\n // It also doesn't use a collection method because this logic is more\n // straightforward with a loop.\n for (let index = 0; index < components.length; index += 1) {\n const component = components[index];\n if (current !== null &&\n current !== undefined &&\n // See https://eslint.org/docs/rules/no-prototype-builtins\n Object.prototype.hasOwnProperty.call(current, component) &&\n typeof current === 'object' &&\n // We do not want to allow indexing into an array.\n !Array.isArray(current)) {\n current = current[component];\n }\n else {\n return undefined;\n }\n }\n return current;\n }\n getComponent(depth) {\n return this.components[depth];\n }\n get depth() {\n return this.components.length;\n }\n get isKind() {\n return this.components.length === 1 && this.components[0] === 'kind';\n }\n compare(other) {\n return (this.depth === other.depth &&\n this.components.every((value, index) => value === other.getComponent(index)));\n }\n}\n/**\n * For use as invalid references when deserializing Flag/Segment data.\n */\nAttributeReference.invalidReference = new AttributeReference('');\nexports.default = AttributeReference;\n//# sourceMappingURL=AttributeReference.js.map","\"use strict\";\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TypeValidators = exports.DateValidator = exports.Function = exports.StringMatchingRegex = exports.NumberWithMinimum = exports.TypeArray = exports.Type = exports.FactoryOrInstance = void 0;\n/**\n * Validate a factory or instance.\n */\nclass FactoryOrInstance {\n is(factoryOrInstance) {\n if (Array.isArray(factoryOrInstance)) {\n return false;\n }\n const anyFactory = factoryOrInstance;\n const typeOfFactory = typeof anyFactory;\n return typeOfFactory === 'function' || typeOfFactory === 'object';\n }\n getType() {\n return 'factory method or object';\n }\n}\nexports.FactoryOrInstance = FactoryOrInstance;\n/**\n * Validate a basic type.\n */\nclass Type {\n constructor(typeName, example) {\n this.typeName = typeName;\n this.typeOf = typeof example;\n }\n is(u) {\n if (Array.isArray(u)) {\n return false;\n }\n return typeof u === this.typeOf;\n }\n getType() {\n return this.typeName;\n }\n}\nexports.Type = Type;\n/**\n * Validate an array of the specified type.\n *\n * This does not validate instances of types. All class instances\n * of classes will simply objects.\n */\nclass TypeArray {\n constructor(typeName, example) {\n this.typeName = typeName;\n this.typeOf = typeof example;\n }\n is(u) {\n if (Array.isArray(u)) {\n if (u.length > 0) {\n return u.every((val) => typeof val === this.typeOf);\n }\n return true;\n }\n return false;\n }\n getType() {\n return this.typeName;\n }\n}\nexports.TypeArray = TypeArray;\n/**\n * Validate a value is a number and is greater or eval than a minimum.\n */\nclass NumberWithMinimum extends Type {\n constructor(min) {\n super(`number with minimum value of ${min}`, 0);\n this.min = min;\n }\n is(u) {\n return typeof u === this.typeOf && u >= this.min;\n }\n}\nexports.NumberWithMinimum = NumberWithMinimum;\n/**\n * Validate a value is a string and it matches the given expression.\n */\nclass StringMatchingRegex extends Type {\n constructor(expression) {\n super(`string matching ${expression}`, '');\n this.expression = expression;\n }\n is(u) {\n return !!u.match(this.expression);\n }\n}\nexports.StringMatchingRegex = StringMatchingRegex;\n/**\n * Validate a value is a function.\n */\nclass Function {\n is(u) {\n // We cannot inspect the parameters and there isn't really\n // a generic function type we can instantiate.\n // So the type guard is here just to make TS comfortable\n // calling something after using this guard.\n return typeof u === 'function';\n }\n getType() {\n return 'function';\n }\n}\nexports.Function = Function;\n// Our reference SDK, Go, parses date/time strings with the time.RFC3339Nano format.\n// This regex should match strings that are valid in that format, and no others.\n// Acceptable:\n// 2019-10-31T23:59:59Z, 2019-10-31T23:59:59.100Z,\n// 2019-10-31T23:59:59-07, 2019-10-31T23:59:59-07:00, etc.\n// Unacceptable: no \"T\", no time zone designation\nconst DATE_REGEX = /^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d*)?(Z|[-+]\\d\\d(:\\d\\d)?)/;\n/**\n * Validate a value is a date. Values which are numbers are treated as dates and any string\n * which if compliant with `time.RFC3339Nano` is a date.\n */\nclass DateValidator {\n is(u) {\n return typeof u === 'number' || (typeof u === 'string' && DATE_REGEX.test(u));\n }\n getType() {\n return 'date';\n }\n}\nexports.DateValidator = DateValidator;\n/**\n * A set of standard type validators.\n */\nclass TypeValidators {\n static numberWithMin(min) {\n return new NumberWithMinimum(min);\n }\n static stringMatchingRegex(expression) {\n return new StringMatchingRegex(expression);\n }\n}\nexports.TypeValidators = TypeValidators;\nTypeValidators.String = new Type('string', '');\nTypeValidators.Number = new Type('number', 0);\nTypeValidators.ObjectOrFactory = new FactoryOrInstance();\nTypeValidators.Object = new Type('object', {});\nTypeValidators.StringArray = new TypeArray('string[]', '');\nTypeValidators.Boolean = new Type('boolean', true);\nTypeValidators.Function = new Function();\nTypeValidators.Date = new DateValidator();\n//# sourceMappingURL=validators.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AttributeReference_1 = require(\"./AttributeReference\");\nconst validators_1 = require(\"./validators\");\n// The general strategy for the context is to transform the passed in context\n// as little as possible. We do convert the legacy users to a single kind\n// context, but we do not translate all passed contexts into a rigid structure.\n// The context will have to be copied for events, but we want to avoid any\n// copying that we can.\n// So we validate that the information we are given is correct, and then we\n// just proxy calls with a nicely typed interface.\n// This is to reduce work on the hot-path. Later, for event processing, deeper\n// cloning of the context will be done.\n// Validates a kind excluding check that it isn't \"kind\".\nconst KindValidator = validators_1.TypeValidators.stringMatchingRegex(/^(\\w|\\.|-)+$/);\n// When no kind is specified, then this kind will be used.\nconst DEFAULT_KIND = 'user';\n// The API allows for calling with an `LDContext` which is\n// `LDUser | LDSingleKindContext | LDMultiKindContext`. When ingesting a context\n// first the type must be determined to allow us to put it into a consistent type.\n/**\n * The partial URL encoding is needed because : is a valid character in context keys.\n *\n * Partial encoding is the replacement of all colon (:) characters with the URL\n * encoded equivalent (%3A) and all percent (%) characters with the URL encoded\n * equivalent (%25).\n * @param key The key to encode.\n * @returns Partially URL encoded key.\n */\nfunction encodeKey(key) {\n if (key.includes('%') || key.includes(':')) {\n return key.replace(/%/g, '%25').replace(/:/g, '%3A');\n }\n return key;\n}\n/**\n * Check if a context is a single kind context.\n * @param context\n * @returns true if the context is a single kind context.\n */\nfunction isSingleKind(context) {\n if ('kind' in context) {\n return validators_1.TypeValidators.String.is(context.kind) && context.kind !== 'multi';\n }\n return false;\n}\n/**\n * Check if a context is a multi-kind context.\n * @param context\n * @returns true if it is a multi-kind context.\n */\nfunction isMultiKind(context) {\n if ('kind' in context) {\n return validators_1.TypeValidators.String.is(context.kind) && context.kind === 'multi';\n }\n return false;\n}\n/**\n * Check if a context is a legacy user context.\n * @param context\n * @returns true if it is a legacy user context.\n */\nfunction isLegacyUser(context) {\n return !('kind' in context) || context.kind === null || context.kind === undefined;\n}\n/**\n * Check if the given value is a LDContextCommon.\n * @param kindOrContext\n * @returns true if it is an LDContextCommon\n *\n * Due to a limitation in the expressiveness of these highly polymorphic types any field\n * in a multi-kind context can either be a context or 'kind'. So we need to re-assure\n * the compiler that it isn't the word multi.\n *\n * Because we do not allow top level values in a multi-kind context we can validate\n * that as well.\n */\nfunction isContextCommon(kindOrContext) {\n return kindOrContext && validators_1.TypeValidators.Object.is(kindOrContext);\n}\n/**\n * Validate a context kind.\n * @param kind\n * @returns true if the kind is valid.\n */\nfunction validKind(kind) {\n return KindValidator.is(kind) && kind !== 'kind';\n}\n/**\n * Validate a context key.\n * @param key\n * @returns true if the key is valid.\n */\nfunction validKey(key) {\n return validators_1.TypeValidators.String.is(key) && key !== '';\n}\nfunction processPrivateAttributes(privateAttributes, literals = false) {\n if (privateAttributes) {\n return privateAttributes.map((privateAttribute) => new AttributeReference_1.default(privateAttribute, literals));\n }\n return [];\n}\nfunction defined(value) {\n return value !== null && value !== undefined;\n}\n/**\n * Convert a legacy user to a single kind context.\n * @param user\n * @returns A single kind context.\n */\nfunction legacyToSingleKind(user) {\n const singleKindContext = Object.assign(Object.assign({}, (user.custom || [])), { kind: 'user', key: String(user.key) });\n // For legacy users we never established a difference between null\n // and undefined for inputs. Because anonymous can be used in evaluations\n // we would want it to not possibly match true/false unless defined.\n // Which is different than coercing a null/undefined anonymous as `false`.\n if (defined(user.anonymous)) {\n const anonymous = !!user.anonymous;\n delete singleKindContext.anonymous;\n singleKindContext.anonymous = anonymous;\n }\n if (user.name !== null && user.name !== undefined) {\n singleKindContext.name = user.name;\n }\n if (user.ip !== null && user.ip !== undefined) {\n singleKindContext.ip = user.ip;\n }\n if (user.firstName !== null && user.firstName !== undefined) {\n singleKindContext.firstName = user.firstName;\n }\n if (user.lastName !== null && user.lastName !== undefined) {\n singleKindContext.lastName = user.lastName;\n }\n if (user.email !== null && user.email !== undefined) {\n singleKindContext.email = user.email;\n }\n if (user.avatar !== null && user.avatar !== undefined) {\n singleKindContext.avatar = user.avatar;\n }\n if (user.country !== null && user.country !== undefined) {\n singleKindContext.country = user.country;\n }\n // We are not pulling private attributes over because we will serialize\n // those from attribute references for events.\n return singleKindContext;\n}\n/**\n * Container for a context/contexts. Because contexts come from external code\n * they must be thoroughly validated and then formed to comply with\n * the type system.\n */\nclass Context {\n /**\n * Contexts should be created using the static factory method {@link Context.fromLDContext}.\n * @param kind The kind of the context.\n *\n * The factory methods are static functions within the class because they access private\n * implementation details, so they cannot be free functions.\n */\n constructor(valid, kind, message) {\n this.isMulti = false;\n this.isUser = false;\n this.wasLegacy = false;\n this.contexts = {};\n this.kind = kind;\n this.valid = valid;\n this.message = message;\n }\n static contextForError(kind, message) {\n return new Context(false, kind, message);\n }\n static getValueFromContext(reference, context) {\n if (!context || !reference.isValid) {\n return undefined;\n }\n if (reference.depth === 1 && reference.getComponent(0) === 'anonymous') {\n return !!(context === null || context === void 0 ? void 0 : context.anonymous);\n }\n return reference.get(context);\n }\n contextForKind(kind) {\n if (this.isMulti) {\n return this.contexts[kind];\n }\n if (this.kind === kind) {\n return this.context;\n }\n return undefined;\n }\n static fromMultiKindContext(context) {\n const kinds = Object.keys(context).filter((key) => key !== 'kind');\n const kindsValid = kinds.every(validKind);\n if (!kinds.length) {\n return Context.contextForError('multi', 'A multi-kind context must contain at least one kind');\n }\n if (!kindsValid) {\n return Context.contextForError('multi', 'Context contains invalid kinds');\n }\n const privateAttributes = {};\n let contextsAreObjects = true;\n const contexts = kinds.reduce((acc, kind) => {\n var _a;\n const singleContext = context[kind];\n if (isContextCommon(singleContext)) {\n acc[kind] = singleContext;\n privateAttributes[kind] = processPrivateAttributes((_a = singleContext._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);\n }\n else {\n // No early break isn't the most efficient, but it is an error condition.\n contextsAreObjects = false;\n }\n return acc;\n }, {});\n if (!contextsAreObjects) {\n return Context.contextForError('multi', 'Context contained contexts that were not objects');\n }\n if (!Object.values(contexts).every((part) => validKey(part.key))) {\n return Context.contextForError('multi', 'Context contained invalid keys');\n }\n // There was only a single kind in the multi-kind context.\n // So we can just translate this to a single-kind context.\n if (kinds.length === 1) {\n const kind = kinds[0];\n const created = new Context(true, kind);\n created.context = contexts[kind];\n created.privateAttributeReferences = privateAttributes;\n created.isUser = kind === 'user';\n return created;\n }\n const created = new Context(true, context.kind);\n created.contexts = contexts;\n created.privateAttributeReferences = privateAttributes;\n created.isMulti = true;\n return created;\n }\n static fromSingleKindContext(context) {\n var _a;\n const { key, kind } = context;\n const kindValid = validKind(kind);\n const keyValid = validKey(key);\n if (!kindValid) {\n return Context.contextForError(kind !== null && kind !== void 0 ? kind : 'unknown', 'The kind was not valid for the context');\n }\n if (!keyValid) {\n return Context.contextForError(kind, 'The key for the context was not valid');\n }\n // The JSON interfaces uses dangling _.\n // eslint-disable-next-line no-underscore-dangle\n const privateAttributeReferences = processPrivateAttributes((_a = context._meta) === null || _a === void 0 ? void 0 : _a.privateAttributes);\n const created = new Context(true, kind);\n created.isUser = kind === 'user';\n created.context = context;\n created.privateAttributeReferences = {\n [kind]: privateAttributeReferences,\n };\n return created;\n }\n static fromLegacyUser(context) {\n const keyValid = context.key !== undefined && context.key !== null;\n // For legacy users we allow empty keys.\n if (!keyValid) {\n return Context.contextForError('user', 'The key for the context was not valid');\n }\n const created = new Context(true, 'user');\n created.isUser = true;\n created.wasLegacy = true;\n created.context = legacyToSingleKind(context);\n created.privateAttributeReferences = {\n user: processPrivateAttributes(context.privateAttributeNames, true),\n };\n return created;\n }\n /**\n * Attempt to create a {@link Context} from an {@link LDContext}.\n * @param context The input context to create a Context from.\n * @returns a {@link Context}, if the context was not valid, then the returned contexts `valid`\n * property will be false.\n */\n static fromLDContext(context) {\n if (!context) {\n return Context.contextForError('unknown', 'No context specified. Returning default value');\n }\n if (isSingleKind(context)) {\n return Context.fromSingleKindContext(context);\n }\n if (isMultiKind(context)) {\n return Context.fromMultiKindContext(context);\n }\n if (isLegacyUser(context)) {\n return Context.fromLegacyUser(context);\n }\n return Context.contextForError('unknown', 'Context was not of a valid kind');\n }\n /**\n * Attempt to get a value for the given context kind using the given reference.\n * @param reference The reference to the value to get.\n * @param kind The kind of the context to get the value for.\n * @returns a value or `undefined` if one is not found.\n */\n valueForKind(reference, kind = DEFAULT_KIND) {\n if (reference.isKind) {\n return this.kinds;\n }\n return Context.getValueFromContext(reference, this.contextForKind(kind));\n }\n /**\n * Attempt to get a key for the specified kind.\n * @param kind The kind to get a key for.\n * @returns The key for the specified kind, or undefined.\n */\n key(kind = DEFAULT_KIND) {\n var _a;\n return (_a = this.contextForKind(kind)) === null || _a === void 0 ? void 0 : _a.key;\n }\n /**\n * True if this is a multi-kind context.\n */\n get isMultiKind() {\n return this.isMulti;\n }\n /**\n * Get the canonical key for this context.\n */\n get canonicalKey() {\n if (this.isUser) {\n return this.context.key;\n }\n if (this.isMulti) {\n return Object.keys(this.contexts)\n .sort()\n .map((key) => `${key}:${encodeKey(this.contexts[key].key)}`)\n .join(':');\n }\n return `${this.kind}:${encodeKey(this.context.key)}`;\n }\n /**\n * Get the kinds of this context.\n */\n get kinds() {\n if (this.isMulti) {\n return Object.keys(this.contexts);\n }\n return [this.kind];\n }\n /**\n * Get the kinds, and their keys, for this context.\n */\n get kindsAndKeys() {\n if (this.isMulti) {\n return Object.entries(this.contexts).reduce((acc, [kind, context]) => {\n acc[kind] = context.key;\n return acc;\n }, {});\n }\n return { [this.kind]: this.context.key };\n }\n /**\n * Get the attribute references.\n *\n * @param kind\n */\n privateAttributes(kind) {\n var _a;\n return ((_a = this.privateAttributeReferences) === null || _a === void 0 ? void 0 : _a[kind]) || [];\n }\n /**\n * Get the underlying context objects from this context.\n *\n * This method is intended to be used in event generation.\n *\n * The returned objects should not be modified.\n */\n getContexts() {\n if (this.isMulti) {\n return Object.entries(this.contexts);\n }\n return [[this.kind, this.context]];\n }\n get legacy() {\n return this.wasLegacy;\n }\n}\nContext.userKind = DEFAULT_KIND;\nexports.default = Context;\n//# sourceMappingURL=Context.js.map","\"use strict\";\n// _meta is part of the specification.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AttributeReference_1 = require(\"./AttributeReference\");\n// These attributes cannot be removed via a private attribute.\nconst protectedAttributes = ['key', 'kind', '_meta', 'anonymous'].map((str) => new AttributeReference_1.default(str, true));\n// Attributes that should be stringified for legacy users.\nconst legacyTopLevelCopyAttributes = [\n 'name',\n 'ip',\n 'firstName',\n 'lastName',\n 'email',\n 'avatar',\n 'country',\n];\nfunction compare(a, b) {\n return a.depth === b.length && b.every((value, index) => value === a.getComponent(index));\n}\nfunction cloneWithRedactions(target, references) {\n const stack = [];\n const cloned = {};\n const excluded = [];\n stack.push(...Object.keys(target).map((key) => ({\n key,\n ptr: [key],\n source: target,\n parent: cloned,\n visited: [target],\n })));\n while (stack.length) {\n const item = stack.pop();\n const redactRef = references.find((ref) => compare(ref, item.ptr));\n if (!redactRef) {\n const value = item.source[item.key];\n // Handle null because it overlaps with object, which we will want to handle later.\n if (value === null) {\n item.parent[item.key] = value;\n }\n else if (Array.isArray(value)) {\n item.parent[item.key] = [...value];\n }\n else if (typeof value === 'object') {\n // Arrays and null must already be handled.\n // Prevent cycles by not visiting the same object\n // with in the same branch. Different branches\n // may contain the same object.\n //\n // Same object visited twice in different branches.\n // A -> B -> D\n // -> C -> D\n // This is fine, which is why it doesn't just check if the object\n // was visited ever.\n if (!item.visited.includes(value)) {\n item.parent[item.key] = {};\n stack.push(...Object.keys(value).map((key) => ({\n key,\n ptr: [...item.ptr, key],\n source: value,\n parent: item.parent[item.key],\n visited: [...item.visited, value],\n })));\n }\n }\n else {\n item.parent[item.key] = value;\n }\n }\n else {\n excluded.push(redactRef.redactionName);\n }\n }\n return { cloned, excluded: excluded.sort() };\n}\nclass ContextFilter {\n constructor(allAttributesPrivate, privateAttributes) {\n this.allAttributesPrivate = allAttributesPrivate;\n this.privateAttributes = privateAttributes;\n }\n filter(context) {\n const contexts = context.getContexts();\n if (contexts.length === 1) {\n return this.filterSingleKind(context, contexts[0][1], contexts[0][0]);\n }\n const filteredMulti = {\n kind: 'multi',\n };\n contexts.forEach(([kind, single]) => {\n filteredMulti[kind] = this.filterSingleKind(context, single, kind);\n });\n return filteredMulti;\n }\n getAttributesToFilter(context, single, kind) {\n return (this.allAttributesPrivate\n ? Object.keys(single).map((k) => new AttributeReference_1.default(k, true))\n : [...this.privateAttributes, ...context.privateAttributes(kind)]).filter((attr) => !protectedAttributes.some((protectedAttr) => protectedAttr.compare(attr)));\n }\n filterSingleKind(context, single, kind) {\n const { cloned, excluded } = cloneWithRedactions(single, this.getAttributesToFilter(context, single, kind));\n if (context.legacy) {\n legacyTopLevelCopyAttributes.forEach((name) => {\n if (name in cloned) {\n cloned[name] = String(cloned[name]);\n }\n });\n }\n if (excluded.length) {\n if (!cloned._meta) {\n cloned._meta = {};\n }\n cloned._meta.redactedAttributes = excluded;\n }\n if (cloned._meta) {\n delete cloned._meta.privateAttributes;\n if (Object.keys(cloned._meta).length === 0) {\n delete cloned._meta;\n }\n }\n return cloned;\n }\n}\nexports.default = ContextFilter;\n//# sourceMappingURL=ContextFilter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContextCommon.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContextMeta.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDMultiKindContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDSingleKindContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDUser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDContext.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDContextCommon\"), exports);\n__exportStar(require(\"./LDContextMeta\"), exports);\n__exportStar(require(\"./LDMultiKindContext\"), exports);\n__exportStar(require(\"./LDSingleKindContext\"), exports);\n__exportStar(require(\"./LDUser\"), exports);\n__exportStar(require(\"./LDContext\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BasicLoggerOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDLogLevel.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BasicLoggerOptions\"), exports);\n__exportStar(require(\"./LDLogger\"), exports);\n__exportStar(require(\"./LDLogLevel\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDEvaluationDetail.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDEvaluationReason.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagValue.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDEvaluationDetail\"), exports);\n__exportStar(require(\"./LDEvaluationReason\"), exports);\n__exportStar(require(\"./LDFlagSet\"), exports);\n__exportStar(require(\"./LDFlagValue\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Lint issue is because there is 1 item currently. We do not want to default export it.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Crypto.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Filesystem.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Info.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Platform.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Requests.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=EventSource.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Crypto\"), exports);\n__exportStar(require(\"./Filesystem\"), exports);\n__exportStar(require(\"./Info\"), exports);\n__exportStar(require(\"./Platform\"), exports);\n__exportStar(require(\"./Requests\"), exports);\n__exportStar(require(\"./EventSource\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LDDeliveryStatus = exports.LDEventType = void 0;\nvar LDEventType;\n(function (LDEventType) {\n LDEventType[LDEventType[\"AnalyticsEvents\"] = 0] = \"AnalyticsEvents\";\n LDEventType[LDEventType[\"DiagnosticEvent\"] = 1] = \"DiagnosticEvent\";\n})(LDEventType || (exports.LDEventType = LDEventType = {}));\nvar LDDeliveryStatus;\n(function (LDDeliveryStatus) {\n LDDeliveryStatus[LDDeliveryStatus[\"Succeeded\"] = 0] = \"Succeeded\";\n LDDeliveryStatus[LDDeliveryStatus[\"Failed\"] = 1] = \"Failed\";\n LDDeliveryStatus[LDDeliveryStatus[\"FailedAndMustShutDown\"] = 2] = \"FailedAndMustShutDown\";\n})(LDDeliveryStatus || (exports.LDDeliveryStatus = LDDeliveryStatus = {}));\n//# sourceMappingURL=LDEventSender.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LDEventType = exports.LDDeliveryStatus = void 0;\nconst LDEventSender_1 = require(\"./LDEventSender\");\nObject.defineProperty(exports, \"LDDeliveryStatus\", { enumerable: true, get: function () { return LDEventSender_1.LDDeliveryStatus; } });\nObject.defineProperty(exports, \"LDEventType\", { enumerable: true, get: function () { return LDEventSender_1.LDEventType; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subsystem = void 0;\n__exportStar(require(\"./context\"), exports);\n__exportStar(require(\"./logging\"), exports);\n__exportStar(require(\"./data\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./platform\"), exports);\nexports.subsystem = require(\"./subsystem\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\n/**\n * Attempt to produce a string representation of a value.\n * The format should be roughly comparable to `util.format`\n * aside from object which will be JSON versus the `util.inspect`\n * format.\n * @param val\n * @returns A string representation of the value if possible.\n */\nfunction tryStringify(val) {\n if (typeof val === 'string') {\n return val;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n if (Object.prototype.hasOwnProperty.call(val, 'toString')) {\n try {\n return val.toString();\n }\n catch (_a) {\n /* Keep going */\n }\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n try {\n return JSON.stringify(val);\n }\n catch (error) {\n if (error instanceof TypeError && error.message.indexOf('circular') >= 0) {\n return '[Circular]';\n }\n return '[Not Stringifiable]';\n }\n}\n/**\n * Attempt to produce a numeric representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The numeric representation or 'NaN' if not numeric.\n */\nfunction toNumber(val) {\n // Symbol has to be treated special because it will\n // throw an exception if an attempt is made to convert it.\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n return String(Number(val));\n}\n/**\n * Attempt to produce an integer representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The integer representation or 'NaN' if not numeric.\n */\nfunction toInt(val) {\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n if (typeof val === 'bigint') {\n return `${val}n`;\n }\n return String(parseInt(val, 10));\n}\n/**\n * Attempt to produce a float representation.\n * BigInts have an `n` suffix.\n * @param val\n * @returns The integer representation or 'NaN' if not numeric.\n */\nfunction toFloat(val) {\n if (typeof val === 'symbol') {\n return 'NaN';\n }\n return String(parseFloat(val));\n}\n// Based on:\n// https://nodejs.org/api/util.html#utilformatformat-args\n// The result will not match node exactly, but it should get the\n// right information through.\nconst escapes = {\n s: (val) => tryStringify(val),\n d: (val) => toNumber(val),\n i: (val) => toInt(val),\n f: (val) => toFloat(val),\n j: (val) => tryStringify(val),\n o: (val) => tryStringify(val),\n O: (val) => tryStringify(val),\n c: () => '',\n};\n/**\n * A basic formatted for use where `util.format` is not available.\n * This will not be as performant, but it will produce formatted\n * messages.\n *\n * @internal\n *\n * @param args\n * @returns Formatted string.\n */\nfunction format(...args) {\n var _a;\n const formatString = args.shift();\n if (validators_1.TypeValidators.String.is(formatString)) {\n let out = '';\n let i = 0;\n while (i < formatString.length) {\n const char = formatString.charAt(i);\n if (char === '%') {\n const nextIndex = i + 1;\n if (nextIndex < formatString.length) {\n const nextChar = formatString.charAt(i + 1);\n if (nextChar in escapes && args.length) {\n const value = args.shift();\n // This rule is for math.\n // eslint-disable-next-line no-unsafe-optional-chaining\n out += (_a = escapes[nextChar]) === null || _a === void 0 ? void 0 : _a.call(escapes, value);\n }\n else if (nextChar === '%') {\n out += '%';\n }\n else {\n out += `%${nextChar}`;\n }\n i += 2;\n }\n }\n else {\n out += char;\n i += 1;\n }\n }\n // If there are any args left after we exhaust the format string\n // then just stick those on the end.\n if (args.length) {\n if (out.length) {\n out += ' ';\n }\n out += args.map(tryStringify).join(' ');\n }\n return out;\n }\n return args.map(tryStringify).join(' ');\n}\nexports.default = format;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst LogPriority = {\n debug: 0,\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\nconst LevelNames = ['debug', 'info', 'warn', 'error', 'none'];\n/**\n * A basic logger which handles filtering by level.\n *\n * With the default options it will write to `console.error`\n * and it will use the formatting provided by `console.error`.\n * If the destination is overwritten, then it will use an included\n * formatter similar to `util.format`.\n *\n * If a formatter is available, then that should be overridden\n * as well for performance.\n */\nclass BasicLogger {\n /**\n * This should only be used as a default fallback and not as a convenient\n * solution. In most cases you should construct a new instance with the\n * appropriate options for your specific needs.\n */\n static get() {\n return new BasicLogger({});\n }\n constructor(options) {\n var _a, _b, _c;\n this.logLevel = (_b = LogPriority[(_a = options.level) !== null && _a !== void 0 ? _a : 'info']) !== null && _b !== void 0 ? _b : LogPriority.info;\n this.name = (_c = options.name) !== null && _c !== void 0 ? _c : 'LaunchDarkly';\n // eslint-disable-next-line no-console\n this.destination = options.destination;\n this.formatter = options.formatter;\n }\n tryFormat(...args) {\n var _a;\n try {\n if (this.formatter) {\n // In case the provided formatter fails.\n return (_a = this.formatter) === null || _a === void 0 ? void 0 : _a.call(this, ...args);\n }\n return (0, format_1.default)(...args);\n }\n catch (_b) {\n return (0, format_1.default)(...args);\n }\n }\n tryWrite(msg) {\n try {\n this.destination(msg);\n }\n catch (_a) {\n // eslint-disable-next-line no-console\n console.error(msg);\n }\n }\n log(level, args) {\n if (level >= this.logLevel) {\n const prefix = `${LevelNames[level]}: [${this.name}]`;\n try {\n if (this.destination) {\n this.tryWrite(`${prefix} ${this.tryFormat(...args)}`);\n }\n else {\n // `console.error` has its own formatter.\n // So we don't need to do anything.\n // eslint-disable-next-line no-console\n console.error(...args);\n }\n }\n catch (_a) {\n // If all else fails do not break.\n // eslint-disable-next-line no-console\n console.error(...args);\n }\n }\n }\n error(...args) {\n this.log(LogPriority.error, args);\n }\n warn(...args) {\n this.log(LogPriority.warn, args);\n }\n info(...args) {\n this.log(LogPriority.info, args);\n }\n debug(...args) {\n this.log(LogPriority.debug, args);\n }\n}\nexports.default = BasicLogger;\n//# sourceMappingURL=BasicLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\nconst loggerRequirements = {\n error: validators_1.TypeValidators.Function,\n warn: validators_1.TypeValidators.Function,\n info: validators_1.TypeValidators.Function,\n debug: validators_1.TypeValidators.Function,\n};\n/**\n * The safeLogger logic exists because we allow the application to pass in a custom logger, but\n * there is no guarantee that the logger works correctly and if it ever throws exceptions there\n * could be serious consequences (e.g. an uncaught exception within an error event handler, due\n * to the SDK trying to log the error, can terminate the application). An exception could result\n * from faulty logic in the logger implementation, or it could be that this is not a logger at\n * all but some other kind of object; the former is handled by a catch block that logs an error\n * message to the SDK's default logger, and we can at least partly guard against the latter by\n * checking for the presence of required methods at configuration time.\n */\nclass SafeLogger {\n /**\n * Construct a safe logger with the specified logger.\n * @param logger The logger to use.\n * @param fallback A fallback logger to use in case an issue is encountered using\n * the provided logger.\n */\n constructor(logger, fallback) {\n Object.entries(loggerRequirements).forEach(([level, validator]) => {\n if (!validator.is(logger[level])) {\n throw new Error(`Provided logger instance must support logger.${level}(...) method`);\n // Note that the SDK normally does not throw exceptions to the application, but that rule\n // does not apply to LDClient.init() which will throw an exception if the parameters are so\n // invalid that we cannot proceed with creating the client. An invalid logger meets those\n // criteria since the SDK calls the logger during nearly all of its operations.\n }\n });\n this.logger = logger;\n this.fallback = fallback;\n }\n log(level, args) {\n try {\n this.logger[level](...args);\n }\n catch (_a) {\n // If all else fails do not break.\n this.fallback[level](...args);\n }\n }\n error(...args) {\n this.log('error', args);\n }\n warn(...args) {\n this.log('warn', args);\n }\n info(...args) {\n this.log('info', args);\n }\n debug(...args) {\n this.log('debug', args);\n }\n}\nexports.default = SafeLogger;\n//# sourceMappingURL=SafeLogger.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SafeLogger = exports.BasicLogger = void 0;\nconst BasicLogger_1 = require(\"./BasicLogger\");\nexports.BasicLogger = BasicLogger_1.default;\nconst SafeLogger_1 = require(\"./SafeLogger\");\nexports.SafeLogger = SafeLogger_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Messages for issues which can be encountered from processing the configuration options.\n */\nclass OptionMessages {\n static deprecated(oldName, newName) {\n return `\"${oldName}\" is deprecated, please use \"${newName}\"`;\n }\n static optionBelowMinimum(name, value, min) {\n return `Config option \"${name}\" had invalid value of ${value}, using minimum of ${min} instead`;\n }\n static unknownOption(name) {\n return `Ignoring unknown config option \"${name}\"`;\n }\n static wrongOptionType(name, expectedType, actualType) {\n return `Config option \"${name}\" should be of type ${expectedType}, got ${actualType}, using default value`;\n }\n static wrongOptionTypeBoolean(name, actualType) {\n return `Config option \"${name}\" should be a boolean, got ${actualType}, converting to boolean`;\n }\n static invalidTagValue(name) {\n return `Config option \"${name}\" must only contain letters, numbers, ., _ or -.`;\n }\n static tagValueTooLong(name) {\n return `Value of \"${name}\" was longer than 64 characters and was discarded.`;\n }\n static partialEndpoint(name) {\n return `You have set custom uris without specifying the ${name} URI; connections may not work properly`;\n }\n}\nexports.default = OptionMessages;\n//# sourceMappingURL=OptionMessages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validators_1 = require(\"../validators\");\nconst OptionMessages_1 = require(\"./OptionMessages\");\n/**\n * Expression to validate characters that are allowed in tag keys and values.\n */\nconst allowedTagCharacters = /^(\\w|\\.|-)+$/;\nconst regexValidator = validators_1.TypeValidators.stringMatchingRegex(allowedTagCharacters);\nconst tagValidator = {\n is: (u, name) => {\n if (regexValidator.is(u)) {\n if (u.length > 64) {\n return { valid: false, message: OptionMessages_1.default.tagValueTooLong(name) };\n }\n return { valid: true };\n }\n return { valid: false, message: OptionMessages_1.default.invalidTagValue(name) };\n },\n};\n/**\n * Class for managing tags.\n */\nclass ApplicationTags {\n constructor(options) {\n var _a, _b;\n const tags = {};\n const application = options === null || options === void 0 ? void 0 : options.application;\n if ((application === null || application === void 0 ? void 0 : application.id) !== null && (application === null || application === void 0 ? void 0 : application.id) !== undefined) {\n const { valid, message } = tagValidator.is(application.id, 'application.id');\n if (!valid) {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(message);\n }\n else {\n tags['application-id'] = [application.id];\n }\n }\n if ((application === null || application === void 0 ? void 0 : application.version) !== null && (application === null || application === void 0 ? void 0 : application.version) !== undefined) {\n const { valid, message } = tagValidator.is(application.version, 'application.version');\n if (!valid) {\n (_b = options.logger) === null || _b === void 0 ? void 0 : _b.warn(message);\n }\n else {\n tags['application-version'] = [application.version];\n }\n }\n const tagKeys = Object.keys(tags);\n if (tagKeys.length) {\n this.value = tagKeys\n .sort()\n .flatMap((key) => tags[key].sort().map((value) => `${key}/${value}`))\n .join(' ');\n }\n }\n}\nexports.default = ApplicationTags;\n//# sourceMappingURL=ApplicationTags.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * The client context provides basic configuration and platform support which are required\n * when building SDK components.\n */\nclass ClientContext {\n constructor(sdkKey, configuration, platform) {\n this.platform = platform;\n this.basicConfiguration = {\n logger: configuration.logger,\n offline: configuration.offline,\n sdkKey,\n serviceEndpoints: configuration.serviceEndpoints,\n };\n }\n}\nexports.default = ClientContext;\n//# sourceMappingURL=ClientContext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction canonicalizeUri(uri) {\n return uri.replace(/\\/+$/, '');\n}\n/**\n * Specifies the base service URIs used by SDK components.\n */\nclass ServiceEndpoints {\n constructor(streaming, polling, events) {\n this.streaming = canonicalizeUri(streaming);\n this.polling = canonicalizeUri(polling);\n this.events = canonicalizeUri(events);\n }\n}\nexports.default = ServiceEndpoints;\n//# sourceMappingURL=ServiceEndpoints.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ClientContext = exports.ServiceEndpoints = exports.OptionMessages = exports.ApplicationTags = void 0;\nconst ApplicationTags_1 = require(\"./ApplicationTags\");\nexports.ApplicationTags = ApplicationTags_1.default;\nconst ClientContext_1 = require(\"./ClientContext\");\nexports.ClientContext = ClientContext_1.default;\nconst OptionMessages_1 = require(\"./OptionMessages\");\nexports.OptionMessages = OptionMessages_1.default;\nconst ServiceEndpoints_1 = require(\"./ServiceEndpoints\");\nexports.ServiceEndpoints = ServiceEndpoints_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = () => { };\n//# sourceMappingURL=noop.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.noop = void 0;\nconst noop_1 = require(\"./noop\");\nexports.noop = noop_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIdentify = exports.isCustom = exports.isFeature = void 0;\nfunction isFeature(u) {\n return u.kind === 'feature';\n}\nexports.isFeature = isFeature;\nfunction isCustom(u) {\n return u.kind === 'custom';\n}\nexports.isCustom = isCustom;\nfunction isIdentify(u) {\n return u.kind === 'identify';\n}\nexports.isIdentify = isIdentify;\n//# sourceMappingURL=guards.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass SummaryCounter {\n constructor(count, key, value, defValue, version, variation) {\n this.count = count;\n this.key = key;\n this.value = value;\n this.version = version;\n this.variation = variation;\n this.default = defValue;\n }\n increment() {\n this.count += 1;\n }\n}\nexports.default = SummaryCounter;\n//# sourceMappingURL=SummaryCounter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst guards_1 = require(\"./guards\");\nconst SummaryCounter_1 = require(\"./SummaryCounter\");\nfunction counterKey(event) {\n return `${event.key}:${event.variation !== null && event.variation !== undefined ? event.variation : ''}:${event.version !== null && event.version !== undefined ? event.version : ''}`;\n}\n/**\n * @internal\n */\nclass EventSummarizer {\n constructor() {\n this.startDate = 0;\n this.endDate = 0;\n this.counters = {};\n this.contextKinds = {};\n }\n summarizeEvent(event) {\n if ((0, guards_1.isFeature)(event)) {\n const countKey = counterKey(event);\n const counter = this.counters[countKey];\n let kinds = this.contextKinds[event.key];\n if (!kinds) {\n kinds = new Set();\n this.contextKinds[event.key] = kinds;\n }\n event.context.kinds.forEach((kind) => kinds.add(kind));\n if (counter) {\n counter.increment();\n }\n else {\n this.counters[countKey] = new SummaryCounter_1.default(1, event.key, event.value, event.default, event.version, event.variation);\n }\n if (this.startDate === 0 || event.creationDate < this.startDate) {\n this.startDate = event.creationDate;\n }\n if (event.creationDate > this.endDate) {\n this.endDate = event.creationDate;\n }\n }\n }\n getSummary() {\n const features = Object.values(this.counters).reduce((acc, counter) => {\n let flagSummary = acc[counter.key];\n if (!flagSummary) {\n flagSummary = {\n default: counter.default,\n counters: [],\n contextKinds: [...this.contextKinds[counter.key]],\n };\n acc[counter.key] = flagSummary;\n }\n const counterOut = {\n value: counter.value,\n count: counter.count,\n };\n if (counter.variation !== undefined && counter.variation !== null) {\n counterOut.variation = counter.variation;\n }\n if (counter.version !== undefined && counter.version !== null) {\n counterOut.version = counter.version;\n }\n else {\n counterOut.unknown = true;\n }\n flagSummary.counters.push(counterOut);\n return acc;\n }, {});\n return {\n startDate: this.startDate,\n endDate: this.endDate,\n features,\n kind: 'summary',\n };\n }\n clearSummary() {\n this.startDate = 0;\n this.endDate = 0;\n this.counters = {};\n this.contextKinds = {};\n }\n}\nexports.default = EventSummarizer;\n//# sourceMappingURL=EventSummarizer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass LDInvalidSDKKeyError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyInvalidSDKKeyError';\n }\n}\nexports.default = LDInvalidSDKKeyError;\n//# sourceMappingURL=LDInvalidSDKKeyError.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LDEventSender_1 = require(\"../../api/subsystem/LDEventSender\");\nconst AttributeReference_1 = require(\"../../AttributeReference\");\nconst ContextFilter_1 = require(\"../../ContextFilter\");\nconst EventSummarizer_1 = require(\"./EventSummarizer\");\nconst guards_1 = require(\"./guards\");\nconst LDInvalidSDKKeyError_1 = require(\"./LDInvalidSDKKeyError\");\nclass EventProcessor {\n constructor(config, clientContext, eventSender, contextDeduplicator, diagnosticsManager) {\n this.eventSender = eventSender;\n this.contextDeduplicator = contextDeduplicator;\n this.diagnosticsManager = diagnosticsManager;\n this.summarizer = new EventSummarizer_1.default();\n this.queue = [];\n this.lastKnownPastTime = 0;\n this.droppedEvents = 0;\n this.deduplicatedUsers = 0;\n this.exceededCapacity = false;\n this.eventsInLastBatch = 0;\n this.shutdown = false;\n this.flushUsersTimer = null;\n this.capacity = config.eventsCapacity;\n this.logger = clientContext.basicConfiguration.logger;\n this.contextFilter = new ContextFilter_1.default(config.allAttributesPrivate, config.privateAttributes.map((ref) => new AttributeReference_1.default(ref)));\n if (this.contextDeduplicator.flushInterval !== undefined) {\n this.flushUsersTimer = setInterval(() => {\n this.contextDeduplicator.flush();\n }, this.contextDeduplicator.flushInterval * 1000);\n }\n this.flushTimer = setInterval(async () => {\n try {\n await this.flush();\n }\n catch (_a) {\n // Eat the errors.\n }\n }, config.flushInterval * 1000);\n if (this.diagnosticsManager) {\n const initEvent = diagnosticsManager.createInitEvent();\n this.postDiagnosticEvent(initEvent);\n this.diagnosticsTimer = setInterval(() => {\n const statsEvent = this.diagnosticsManager.createStatsEventAndReset(this.droppedEvents, this.deduplicatedUsers, this.eventsInLastBatch);\n this.droppedEvents = 0;\n this.deduplicatedUsers = 0;\n this.postDiagnosticEvent(statsEvent);\n }, config.diagnosticRecordingInterval * 1000);\n }\n }\n postDiagnosticEvent(event) {\n this.eventSender.sendEventData(LDEventSender_1.LDEventType.DiagnosticEvent, event);\n }\n close() {\n clearInterval(this.flushTimer);\n if (this.flushUsersTimer) {\n clearInterval(this.flushUsersTimer);\n }\n if (this.diagnosticsTimer) {\n clearInterval(this.diagnosticsTimer);\n }\n }\n async flush() {\n var _a;\n if (this.shutdown) {\n throw new LDInvalidSDKKeyError_1.default('Events cannot be posted because SDK key is invalid');\n }\n const eventsToFlush = this.queue;\n this.queue = [];\n const summary = this.summarizer.getSummary();\n this.summarizer.clearSummary();\n if (Object.keys(summary.features).length) {\n eventsToFlush.push(summary);\n }\n if (!eventsToFlush.length) {\n return;\n }\n this.eventsInLastBatch = eventsToFlush.length;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Flushing %d events', eventsToFlush.length);\n await this.tryPostingEvents(eventsToFlush);\n }\n sendEvent(inputEvent) {\n if (this.shutdown) {\n return;\n }\n this.summarizer.summarizeEvent(inputEvent);\n const isFeatureEvent = (0, guards_1.isFeature)(inputEvent);\n const addFullEvent = (isFeatureEvent && inputEvent.trackEvents) || !isFeatureEvent;\n const addDebugEvent = this.shouldDebugEvent(inputEvent);\n const isIdentifyEvent = (0, guards_1.isIdentify)(inputEvent);\n const shouldNotDeduplicate = this.contextDeduplicator.processContext(inputEvent.context);\n // If there is no cache, then it will never be in the cache.\n if (!shouldNotDeduplicate) {\n if (!isIdentifyEvent) {\n this.deduplicatedUsers += 1;\n }\n }\n const addIndexEvent = shouldNotDeduplicate && !isIdentifyEvent;\n if (addIndexEvent) {\n this.enqueue({\n kind: 'index',\n creationDate: inputEvent.creationDate,\n context: this.contextFilter.filter(inputEvent.context),\n });\n }\n if (addFullEvent) {\n this.enqueue(this.makeOutputEvent(inputEvent, false));\n }\n if (addDebugEvent) {\n this.enqueue(this.makeOutputEvent(inputEvent, true));\n }\n }\n makeOutputEvent(event, debug) {\n switch (event.kind) {\n case 'feature': {\n const out = {\n kind: debug ? 'debug' : 'feature',\n creationDate: event.creationDate,\n key: event.key,\n value: event.value,\n default: event.default,\n prereqOf: event.prereqOf,\n };\n if (event.variation !== undefined) {\n out.variation = event.variation;\n }\n if (event.version !== undefined) {\n out.version = event.version;\n }\n if (event.reason) {\n out.reason = event.reason;\n }\n if (debug) {\n out.context = this.contextFilter.filter(event.context);\n }\n else {\n out.contextKeys = event.context.kindsAndKeys;\n }\n return out;\n }\n case 'identify': {\n return {\n kind: 'identify',\n creationDate: event.creationDate,\n context: this.contextFilter.filter(event.context),\n };\n }\n case 'custom': {\n const out = {\n kind: 'custom',\n creationDate: event.creationDate,\n key: event.key,\n contextKeys: event.context.kindsAndKeys,\n };\n if (event.data !== undefined) {\n out.data = event.data;\n }\n if (event.metricValue !== undefined) {\n out.metricValue = event.metricValue;\n }\n return out;\n }\n default:\n // This would happen during the addition of a new event type to the SDK.\n return event;\n }\n }\n enqueue(event) {\n var _a;\n if (this.queue.length < this.capacity) {\n this.queue.push(event);\n this.exceededCapacity = false;\n }\n else {\n if (!this.exceededCapacity) {\n this.exceededCapacity = true;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('Exceeded event queue capacity. Increase capacity to avoid dropping events.');\n }\n this.droppedEvents += 1;\n }\n }\n shouldDebugEvent(event) {\n return ((0, guards_1.isFeature)(event) &&\n event.debugEventsUntilDate &&\n event.debugEventsUntilDate > this.lastKnownPastTime &&\n event.debugEventsUntilDate > Date.now());\n }\n async tryPostingEvents(events) {\n const res = await this.eventSender.sendEventData(LDEventSender_1.LDEventType.AnalyticsEvents, events);\n if (res.status === LDEventSender_1.LDDeliveryStatus.FailedAndMustShutDown) {\n this.shutdown = true;\n }\n if (res.serverTime) {\n this.lastKnownPastTime = res.serverTime;\n }\n if (res.error) {\n throw res.error;\n }\n }\n}\nexports.default = EventProcessor;\n//# sourceMappingURL=EventProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputCustomEvent {\n constructor(context, key, data, metricValue) {\n this.key = key;\n this.data = data;\n this.metricValue = metricValue;\n this.kind = 'custom';\n this.creationDate = Date.now();\n this.context = context;\n }\n}\nexports.default = InputCustomEvent;\n//# sourceMappingURL=InputCustomEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputEvalEvent {\n constructor(withReasons, context, key, defValue, // default is a reserved keyword in this context.\n detail, version, variation, trackEvents, prereqOf, reason, debugEventsUntilDate) {\n var _a;\n this.key = key;\n this.kind = 'feature';\n this.creationDate = Date.now();\n this.context = context;\n this.default = defValue;\n this.variation = (_a = detail.variationIndex) !== null && _a !== void 0 ? _a : undefined;\n this.value = detail.value;\n if (version !== undefined) {\n this.version = version;\n }\n if (variation !== undefined) {\n this.variation = variation;\n }\n if (trackEvents !== undefined) {\n this.trackEvents = trackEvents;\n }\n if (prereqOf !== undefined) {\n this.prereqOf = prereqOf;\n }\n if (reason !== undefined) {\n this.reason = reason;\n }\n if (debugEventsUntilDate !== undefined) {\n this.debugEventsUntilDate = debugEventsUntilDate;\n }\n }\n}\nexports.default = InputEvalEvent;\n//# sourceMappingURL=InputEvalEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InputIdentifyEvent {\n constructor(context) {\n this.kind = 'identify';\n this.creationDate = Date.now();\n this.context = context;\n }\n}\nexports.default = InputIdentifyEvent;\n//# sourceMappingURL=InputIdentifyEvent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventProcessor = exports.InputIdentifyEvent = exports.InputEvalEvent = exports.InputCustomEvent = void 0;\nconst EventProcessor_1 = require(\"./EventProcessor\");\nexports.EventProcessor = EventProcessor_1.default;\nconst InputCustomEvent_1 = require(\"./InputCustomEvent\");\nexports.InputCustomEvent = InputCustomEvent_1.default;\nconst InputEvalEvent_1 = require(\"./InputEvalEvent\");\nexports.InputEvalEvent = InputEvalEvent_1.default;\nconst InputIdentifyEvent_1 = require(\"./InputIdentifyEvent\");\nexports.InputIdentifyEvent = InputIdentifyEvent_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./events\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ContextFilter = exports.Context = exports.AttributeReference = exports.internal = void 0;\nconst AttributeReference_1 = require(\"./AttributeReference\");\nexports.AttributeReference = AttributeReference_1.default;\nconst Context_1 = require(\"./Context\");\nexports.Context = Context_1.default;\nconst ContextFilter_1 = require(\"./ContextFilter\");\nexports.ContextFilter = ContextFilter_1.default;\n__exportStar(require(\"./api\"), exports);\n__exportStar(require(\"./validators\"), exports);\n__exportStar(require(\"./logging\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./utils\"), exports);\nexports.internal = require(\"./internal\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass LruCache {\n constructor(options) {\n this.keyMap = new Map();\n this.head = 0;\n this.tail = 0;\n this.size = 0;\n const { max } = options;\n this.max = max;\n // This is effectively a struct-of-arrays implementation\n // of a linked list. All the nodes exist statically and then\n // the links between them are changed by updating the previous/next\n // arrays.\n this.values = new Array(max);\n this.keys = new Array(max);\n this.next = new Uint32Array(max);\n this.prev = new Uint32Array(max);\n if (options.maxAge) {\n this.lastUpdated = new Array(max).fill(0);\n this.maxAge = options.maxAge;\n }\n else {\n // To please linting.\n this.lastUpdated = [];\n this.maxAge = 0;\n }\n }\n set(key, val) {\n let index = this.keyMap.get(key);\n if (index === undefined) {\n index = this.index();\n this.keys[index] = key;\n this.keyMap.set(key, index);\n this.next[this.tail] = index;\n this.prev[index] = this.tail;\n this.tail = index;\n this.size += 1;\n }\n else {\n this.setTail(index);\n }\n this.values[index] = val;\n if (this.maxAge) {\n this.lastUpdated[index] = Date.now();\n }\n }\n get(key) {\n const index = this.keyMap.get(key);\n if (index !== undefined) {\n if (this.maxAge) {\n const lastUpdated = this.lastUpdated[index];\n if (Date.now() - lastUpdated > this.maxAge) {\n // The oldest items are always the head, so they get incrementally\n // replaced. This would not be the case if we supported per item TTL.\n return undefined;\n }\n }\n this.setTail(index);\n if (this.maxAge) {\n this.lastUpdated[index] = Date.now();\n }\n return this.values[index];\n }\n return undefined;\n }\n clear() {\n this.head = 0;\n this.tail = 0;\n this.size = 0;\n this.values.fill(undefined);\n this.keys.fill(undefined);\n this.next.fill(0);\n this.prev.fill(0);\n }\n index() {\n if (this.size === 0) {\n return this.tail;\n }\n if (this.size === this.max) {\n return this.evict();\n }\n // The initial list is being populated, so we can just continue increasing size.\n return this.size;\n }\n evict() {\n const { head } = this;\n const k = this.keys[head];\n this.head = this.next[head];\n this.keyMap.delete(k);\n this.size -= 1;\n return head;\n }\n link(p, n) {\n this.prev[n] = p;\n this.next[p] = n;\n }\n setTail(index) {\n // If it is already the tail, then there is nothing to do.\n if (index !== this.tail) {\n // If this is the head, then we change the next item\n // to the head.\n if (index === this.head) {\n this.head = this.next[index];\n }\n else {\n // Link the previous item to the next item, effectively removing\n // the current node.\n this.link(this.prev[index], this.next[index]);\n }\n // Connect the current tail to this node.\n this.link(this.tail, index);\n this.tail = index;\n }\n }\n}\nexports.default = LruCache;\n//# sourceMappingURL=LruCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst BigSegmentStatusProviderImpl_1 = require(\"./BigSegmentStatusProviderImpl\");\nconst LruCache_1 = require(\"./cache/LruCache\");\nconst DEFAULT_STALE_AFTER_SECONDS = 120;\nconst DEFAULT_STATUS_POLL_INTERVAL_SECONDS = 5;\nconst DEFAULT_USER_CACHE_SIZE = 1000;\nconst DEFAULT_USER_CACHE_TIME_SECONDS = 5;\nclass BigSegmentsManager {\n constructor(store, \n // The store will have been created before the manager is instantiated, so we do not need\n // it in the options at this stage.\n config, logger, crypto) {\n this.store = store;\n this.logger = logger;\n this.crypto = crypto;\n this.statusProvider = new BigSegmentStatusProviderImpl_1.default(async () => this.pollStoreAndUpdateStatus());\n this.staleTimeMs =\n (js_sdk_common_1.TypeValidators.Number.is(config.staleAfter) && config.staleAfter > 0\n ? config.staleAfter\n : DEFAULT_STALE_AFTER_SECONDS) * 1000;\n const pollIntervalMs = (js_sdk_common_1.TypeValidators.Number.is(config.statusPollInterval) && config.statusPollInterval > 0\n ? config.statusPollInterval\n : DEFAULT_STATUS_POLL_INTERVAL_SECONDS) * 1000;\n this.pollHandle = store\n ? setInterval(() => this.pollStoreAndUpdateStatus(), pollIntervalMs)\n : null;\n if (store) {\n this.cache = new LruCache_1.default({\n max: config.userCacheSize || DEFAULT_USER_CACHE_SIZE,\n maxAge: (config.userCacheTime || DEFAULT_USER_CACHE_TIME_SECONDS) * 1000,\n });\n }\n }\n close() {\n if (this.pollHandle) {\n clearInterval(this.pollHandle);\n this.pollHandle = undefined;\n }\n if (this.store) {\n this.store.close();\n }\n }\n async getUserMembership(userKey) {\n var _a, _b, _c;\n if (!this.store) {\n return undefined;\n }\n const memberCache = (_a = this.cache) === null || _a === void 0 ? void 0 : _a.get(userKey);\n let membership;\n if (!memberCache) {\n try {\n membership = await this.store.getUserMembership(this.hashForUserKey(userKey));\n const cacheItem = { membership };\n (_b = this.cache) === null || _b === void 0 ? void 0 : _b.set(userKey, cacheItem);\n }\n catch (err) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.error(`Big Segment store membership query returned error: ${err}`);\n return [null, 'STORE_ERROR'];\n }\n }\n else {\n membership = memberCache.membership;\n }\n if (!this.statusProvider.getStatus()) {\n await this.pollStoreAndUpdateStatus();\n }\n // Status will be present, because polling is done earlier in this method if it is not.\n const lastStatus = this.statusProvider.getStatus();\n if (!lastStatus.available) {\n return [membership || null, 'STORE_ERROR'];\n }\n return [membership || null, lastStatus.stale ? 'STALE' : 'HEALTHY'];\n }\n async pollStoreAndUpdateStatus() {\n var _a, _b, _c;\n if (!this.store) {\n this.statusProvider.setStatus({ available: false, stale: false });\n return;\n }\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Querying Big Segment store status');\n let newStatus;\n try {\n const metadata = await this.store.getMetadata();\n newStatus = {\n available: true,\n stale: !metadata || !metadata.lastUpToDate || this.isStale(metadata.lastUpToDate),\n };\n }\n catch (err) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Big Segment store status query returned error: ${err}`);\n newStatus = { available: false, stale: false };\n }\n const lastStatus = this.statusProvider.getStatus();\n if (!lastStatus ||\n lastStatus.available !== newStatus.available ||\n lastStatus.stale !== newStatus.stale) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Big Segment store status changed from %s to %s', JSON.stringify(lastStatus), JSON.stringify(newStatus));\n this.statusProvider.setStatus(newStatus);\n this.statusProvider.notify();\n }\n }\n hashForUserKey(userKey) {\n const hasher = this.crypto.createHash('sha256');\n hasher.update(userKey);\n return hasher.digest('base64');\n }\n isStale(timestamp) {\n return Date.now() - timestamp >= this.staleTimeMs;\n }\n}\nexports.default = BigSegmentsManager;\n//# sourceMappingURL=BigSegmentsManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Messages for issues which can be encountered processing client requests.\n *\n * @internal\n */\nclass ClientMessages {\n}\nClientMessages.missingContextKeyNoEvent = 'Context was unspecified or had no key; event will not be sent';\nexports.default = ClientMessages;\n//# sourceMappingURL=ClientMessages.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass VersionedDataKinds {\n}\nVersionedDataKinds.Features = {\n namespace: 'features',\n streamApiPath: '/flags/',\n requestPath: '/sdk/latest-flags/',\n};\nVersionedDataKinds.Segments = {\n namespace: 'segments',\n streamApiPath: '/segments/',\n requestPath: '/sdk/latest-segments/',\n};\nexports.default = VersionedDataKinds;\n//# sourceMappingURL=VersionedDataKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nclass NamespacedDataSet {\n constructor() {\n this.itemsByNamespace = {};\n }\n get(namespace, key) {\n var _a;\n return (_a = this.itemsByNamespace[namespace]) === null || _a === void 0 ? void 0 : _a[key];\n }\n set(namespace, key, value) {\n if (!(namespace in this.itemsByNamespace)) {\n this.itemsByNamespace[namespace] = {};\n }\n this.itemsByNamespace[namespace][key] = value;\n }\n remove(namespace, key) {\n const items = this.itemsByNamespace[namespace];\n if (items) {\n delete items[key];\n }\n }\n removeAll() {\n this.itemsByNamespace = {};\n }\n enumerate(callback) {\n Object.entries(this.itemsByNamespace).forEach(([namespace, values]) => {\n Object.entries(values).forEach(([key, value]) => {\n callback(namespace, key, value);\n });\n });\n }\n mergeFrom(other) {\n other.enumerate(this.set.bind(this));\n }\n}\nexports.default = NamespacedDataSet;\n//# sourceMappingURL=NamespacedDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst NamespacedDataSet_1 = require(\"./NamespacedDataSet\");\n/**\n * @internal\n */\nclass DependencyTracker {\n constructor() {\n this.dependenciesFrom = new NamespacedDataSet_1.default();\n this.dependenciesTo = new NamespacedDataSet_1.default();\n }\n updateDependenciesFrom(namespace, key, newDependencySet) {\n const oldDependencySet = this.dependenciesFrom.get(namespace, key);\n oldDependencySet === null || oldDependencySet === void 0 ? void 0 : oldDependencySet.enumerate((depNs, depKey) => {\n const depsToThisDep = this.dependenciesTo.get(depNs, depKey);\n depsToThisDep === null || depsToThisDep === void 0 ? void 0 : depsToThisDep.remove(namespace, key);\n });\n this.dependenciesFrom.set(namespace, key, newDependencySet);\n newDependencySet === null || newDependencySet === void 0 ? void 0 : newDependencySet.enumerate((depNs, depKey) => {\n let depsToThisDep = this.dependenciesTo.get(depNs, depKey);\n if (!depsToThisDep) {\n depsToThisDep = new NamespacedDataSet_1.default();\n this.dependenciesTo.set(depNs, depKey, depsToThisDep);\n }\n depsToThisDep.set(namespace, key, true);\n });\n }\n updateModifiedItems(inDependencySet, modifiedNamespace, modifiedKey) {\n if (!inDependencySet.get(modifiedNamespace, modifiedKey)) {\n inDependencySet.set(modifiedNamespace, modifiedKey, true);\n const affectedItems = this.dependenciesTo.get(modifiedNamespace, modifiedKey);\n affectedItems === null || affectedItems === void 0 ? void 0 : affectedItems.enumerate((namespace, key) => {\n this.updateModifiedItems(inDependencySet, namespace, key);\n });\n }\n }\n reset() {\n this.dependenciesFrom.removeAll();\n this.dependenciesTo.removeAll();\n }\n}\nexports.default = DependencyTracker;\n//# sourceMappingURL=DependencyTracker.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst DependencyTracker_1 = require(\"./DependencyTracker\");\nconst NamespacedDataSet_1 = require(\"./NamespacedDataSet\");\nfunction computeDependencies(namespace, item) {\n var _a, _b;\n const ret = new NamespacedDataSet_1.default();\n const isFlag = namespace === VersionedDataKinds_1.default.Features.namespace;\n const isSegment = namespace === VersionedDataKinds_1.default.Segments.namespace;\n if (isFlag) {\n const flag = item;\n (_a = flag === null || flag === void 0 ? void 0 : flag.prerequisites) === null || _a === void 0 ? void 0 : _a.forEach((prereq) => {\n ret.set(namespace, prereq.key, true);\n });\n }\n if (isFlag || isSegment) {\n const itemWithRuleClauses = item;\n (_b = itemWithRuleClauses === null || itemWithRuleClauses === void 0 ? void 0 : itemWithRuleClauses.rules) === null || _b === void 0 ? void 0 : _b.forEach((rule) => {\n var _a;\n (_a = rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause.op === 'segmentMatch') {\n clause.values.forEach((value) => {\n ret.set(VersionedDataKinds_1.default.Segments.namespace, value, true);\n });\n }\n });\n });\n }\n return ret;\n}\n/**\n * @internal\n */\nclass DataSourceUpdates {\n constructor(featureStore, hasEventListeners, onChange) {\n this.featureStore = featureStore;\n this.hasEventListeners = hasEventListeners;\n this.onChange = onChange;\n this.dependencyTracker = new DependencyTracker_1.default();\n }\n init(allData, callback) {\n const checkForChanges = this.hasEventListeners();\n const doInit = (oldData) => {\n this.featureStore.init(allData, () => {\n this.dependencyTracker.reset();\n Object.entries(allData).forEach(([namespace, items]) => {\n Object.keys(items || {}).forEach((key) => {\n const item = items[key];\n this.dependencyTracker.updateDependenciesFrom(namespace, key, computeDependencies(namespace, item));\n });\n });\n if (checkForChanges) {\n const updatedItems = new NamespacedDataSet_1.default();\n Object.keys(allData).forEach((namespace) => {\n const oldDataForKind = (oldData === null || oldData === void 0 ? void 0 : oldData[namespace]) || {};\n const newDataForKind = allData[namespace];\n const mergedData = Object.assign(Object.assign({}, oldDataForKind), newDataForKind);\n Object.keys(mergedData).forEach((key) => {\n this.addIfModified(namespace, key, oldDataForKind && oldDataForKind[key], newDataForKind && newDataForKind[key], updatedItems);\n });\n });\n this.sendChangeEvents(updatedItems);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n });\n };\n if (checkForChanges) {\n this.featureStore.all(VersionedDataKinds_1.default.Features, (oldFlags) => {\n this.featureStore.all(VersionedDataKinds_1.default.Segments, (oldSegments) => {\n const oldData = {\n [VersionedDataKinds_1.default.Features.namespace]: oldFlags,\n [VersionedDataKinds_1.default.Segments.namespace]: oldSegments,\n };\n doInit(oldData);\n });\n });\n }\n else {\n doInit();\n }\n }\n upsert(kind, data, callback) {\n const { key } = data;\n const checkForChanges = this.hasEventListeners();\n const doUpsert = (oldItem) => {\n this.featureStore.upsert(kind, data, () => {\n this.dependencyTracker.updateDependenciesFrom(kind.namespace, key, computeDependencies(kind.namespace, data));\n if (checkForChanges) {\n const updatedItems = new NamespacedDataSet_1.default();\n this.addIfModified(kind.namespace, key, oldItem, data, updatedItems);\n this.sendChangeEvents(updatedItems);\n }\n callback === null || callback === void 0 ? void 0 : callback();\n });\n };\n if (checkForChanges) {\n this.featureStore.get(kind, key, doUpsert);\n }\n else {\n doUpsert();\n }\n }\n addIfModified(namespace, key, oldValue, newValue, toDataSet) {\n if (newValue && oldValue && newValue.version <= oldValue.version) {\n return;\n }\n this.dependencyTracker.updateModifiedItems(toDataSet, namespace, key);\n }\n sendChangeEvents(dataSet) {\n dataSet.enumerate((namespace, key) => {\n if (namespace === VersionedDataKinds_1.default.Features.namespace) {\n this.onChange(key);\n }\n });\n }\n}\nexports.default = DataSourceUpdates;\n//# sourceMappingURL=DataSourceUpdates.js.map","\"use strict\";\n// This is an empty implementation, so it doesn't use this, and it has empty methods, and it\n// has unused variables.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass NullUpdateProcessor {\n start(fn) {\n // Deferring the start callback should allow client construction to complete before we start\n // emitting events. Allowing the client an opportunity to register events.\n setTimeout(() => fn === null || fn === void 0 ? void 0 : fn(), 0);\n }\n stop() { }\n close() { }\n}\nexports.default = NullUpdateProcessor;\n//# sourceMappingURL=NullUpdateProcessor.js.map","\"use strict\";\n// These classes are of trivial complexity. If they become\n// more complex, then they could be independent files.\n/* eslint-disable max-classes-per-file */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isHttpRecoverable = exports.LDClientError = exports.LDUnexpectedResponseError = exports.LDStreamingError = exports.LDPollingError = void 0;\nclass LDPollingError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyPollingError';\n }\n}\nexports.LDPollingError = LDPollingError;\nclass LDStreamingError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n this.name = 'LaunchDarklyStreamingError';\n }\n}\nexports.LDStreamingError = LDStreamingError;\nclass LDUnexpectedResponseError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyUnexpectedResponseError';\n }\n}\nexports.LDUnexpectedResponseError = LDUnexpectedResponseError;\nclass LDClientError extends Error {\n constructor(message) {\n super(message);\n this.name = 'LaunchDarklyClientError';\n }\n}\nexports.LDClientError = LDClientError;\nfunction isHttpRecoverable(status) {\n if (status >= 400 && status < 500) {\n return status === 400 || status === 408 || status === 429;\n }\n return true;\n}\nexports.isHttpRecoverable = isHttpRecoverable;\n//# sourceMappingURL=errors.js.map","\"use strict\";\n// The deserialization will be updating parameter values, so we don't need this\n// warning in this file.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeSegment = exports.serializeSegment = exports.deserializeFlag = exports.serializeFlag = exports.deserializeDelete = exports.deserializePatch = exports.deserializePoll = exports.deserializeAll = exports.processSegment = exports.processFlag = exports.replacer = exports.reviver = void 0;\n/* eslint-disable no-param-reassign */\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst VersionedDataKinds_1 = require(\"./VersionedDataKinds\");\n/**\n * @internal\n */\nfunction reviver(key, value) {\n // Whenever a null is included we want to remove the field.\n // In this way validation checks do not have to consider null, only undefined.\n if (value === null) {\n return undefined;\n }\n return value;\n}\nexports.reviver = reviver;\n/**\n * For use when serializing flags/segments. This will ensure local types\n * are converted to the appropriate JSON representation.\n * @param this The scope containing the key/value.\n * @param key The key of the item being visited.\n * @param value The value of the item being visited.\n * @returns A transformed value for serialization.\n *\n * @internal\n */\nfunction replacer(key, value) {\n if (value instanceof js_sdk_common_1.AttributeReference) {\n return undefined;\n }\n if (Array.isArray(value)) {\n if (value[0] && value[0] instanceof js_sdk_common_1.AttributeReference) {\n return undefined;\n }\n }\n return value;\n}\nexports.replacer = replacer;\nfunction processRollout(rollout) {\n if (rollout && rollout.bucketBy) {\n rollout.bucketByAttributeReference = new js_sdk_common_1.AttributeReference(rollout.bucketBy, !rollout.contextKind);\n }\n}\n/**\n * @internal\n */\nfunction processFlag(flag) {\n var _a;\n if (flag.fallthrough && flag.fallthrough.rollout) {\n const rollout = flag.fallthrough.rollout;\n processRollout(rollout);\n }\n (_a = flag === null || flag === void 0 ? void 0 : flag.rules) === null || _a === void 0 ? void 0 : _a.forEach((rule) => {\n var _a;\n processRollout(rule.rollout);\n (_a = rule === null || rule === void 0 ? void 0 : rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause && clause.attribute) {\n // Clauses before U2C would have had literals for attributes.\n // So use the contextKind to indicate if this is new or old data.\n clause.attributeReference = new js_sdk_common_1.AttributeReference(clause.attribute, !clause.contextKind);\n }\n else if (clause) {\n clause.attributeReference = js_sdk_common_1.AttributeReference.invalidReference;\n }\n });\n });\n}\nexports.processFlag = processFlag;\n/**\n * @internal\n */\nfunction processSegment(segment) {\n var _a;\n (_a = segment === null || segment === void 0 ? void 0 : segment.rules) === null || _a === void 0 ? void 0 : _a.forEach((rule) => {\n var _a;\n if (rule.bucketBy) {\n // Rules before U2C would have had literals for attributes.\n // So use the rolloutContextKind to indicate if this is new or old data.\n rule.bucketByAttributeReference = new js_sdk_common_1.AttributeReference(rule.bucketBy, !rule.rolloutContextKind);\n }\n (_a = rule === null || rule === void 0 ? void 0 : rule.clauses) === null || _a === void 0 ? void 0 : _a.forEach((clause) => {\n if (clause && clause.attribute) {\n // Clauses before U2C would have had literals for attributes.\n // So use the contextKind to indicate if this is new or old data.\n clause.attributeReference = new js_sdk_common_1.AttributeReference(clause.attribute, !clause.contextKind);\n }\n else if (clause) {\n clause.attributeReference = js_sdk_common_1.AttributeReference.invalidReference;\n }\n });\n });\n}\nexports.processSegment = processSegment;\nfunction tryParse(data) {\n try {\n return JSON.parse(data, reviver);\n }\n catch (_a) {\n return undefined;\n }\n}\n/**\n * @internal\n */\nfunction deserializeAll(data) {\n var _a, _b;\n // The reviver lacks the context of where a different key exists, being as it\n // starts at the deepest level and works outward. As a result attributes are\n // translated into references after the initial parsing. That way we can be sure\n // they are the correct ones. For instance if we added 'attribute' as a new field to\n // the schema for something that was NOT an attribute reference, then we wouldn't\n // want to construct an attribute reference out of it.\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n Object.values(((_a = parsed === null || parsed === void 0 ? void 0 : parsed.data) === null || _a === void 0 ? void 0 : _a.flags) || []).forEach((flag) => {\n processFlag(flag);\n });\n Object.values(((_b = parsed === null || parsed === void 0 ? void 0 : parsed.data) === null || _b === void 0 ? void 0 : _b.segments) || []).forEach((segment) => {\n processSegment(segment);\n });\n return parsed;\n}\nexports.deserializeAll = deserializeAll;\n/**\n * This function is intended for usage inside LaunchDarkly SDKs.\n * This function should NOT be used by customer applications.\n * This function may be changed or removed without a major version.\n *\n * @param data String data from launchdarkly.\n * @returns The parsed and processed data.\n */\nfunction deserializePoll(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n Object.values((parsed === null || parsed === void 0 ? void 0 : parsed.flags) || []).forEach((flag) => {\n processFlag(flag);\n });\n Object.values((parsed === null || parsed === void 0 ? void 0 : parsed.segments) || []).forEach((segment) => {\n processSegment(segment);\n });\n return parsed;\n}\nexports.deserializePoll = deserializePoll;\n/**\n * @internal\n */\nfunction deserializePatch(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n if (parsed.path.startsWith(VersionedDataKinds_1.default.Features.streamApiPath)) {\n processFlag(parsed.data);\n parsed.kind = VersionedDataKinds_1.default.Features;\n }\n else if (parsed.path.startsWith(VersionedDataKinds_1.default.Segments.streamApiPath)) {\n processSegment(parsed.data);\n parsed.kind = VersionedDataKinds_1.default.Segments;\n }\n return parsed;\n}\nexports.deserializePatch = deserializePatch;\n/**\n * @internal\n */\nfunction deserializeDelete(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n if (parsed.path.startsWith(VersionedDataKinds_1.default.Features.streamApiPath)) {\n parsed.kind = VersionedDataKinds_1.default.Features;\n }\n else if (parsed.path.startsWith(VersionedDataKinds_1.default.Segments.streamApiPath)) {\n parsed.kind = VersionedDataKinds_1.default.Segments;\n }\n return parsed;\n}\nexports.deserializeDelete = deserializeDelete;\n/**\n * Serialize a single flag. Used for persistent data stores.\n *\n * @internal\n */\nfunction serializeFlag(flag) {\n return JSON.stringify(flag, replacer);\n}\nexports.serializeFlag = serializeFlag;\n/**\n * Deserialize a single flag. Used for persistent data stores.\n *\n * @internal\n */\nfunction deserializeFlag(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n processFlag(parsed);\n return parsed;\n}\nexports.deserializeFlag = deserializeFlag;\n/**\n * Serialize a single segment. Used for persistent data stores.\n *\n * @internal\n */\nfunction serializeSegment(segment) {\n return JSON.stringify(segment, replacer);\n}\nexports.serializeSegment = serializeSegment;\n/**\n * Deserialize a single segment. Used for persistent data stores.\n *\n * @internal\n */\nfunction deserializeSegment(data) {\n const parsed = tryParse(data);\n if (!parsed) {\n return undefined;\n }\n processSegment(parsed);\n return parsed;\n}\nexports.deserializeSegment = deserializeSegment;\n//# sourceMappingURL=serialization.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction httpErrorMessage(err, context, retryMessage) {\n let desc;\n if (err.status) {\n desc = `error ${err.status}${err.status === 401 ? ' (invalid SDK key)' : ''}`;\n }\n else {\n desc = `I/O error (${err.message || err})`;\n }\n const action = retryMessage !== null && retryMessage !== void 0 ? retryMessage : 'giving up permanently';\n return `Received ${desc} for ${context} - ${action}`;\n}\nexports.default = httpErrorMessage;\n//# sourceMappingURL=httpErrorMessage.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst httpErrorMessage_1 = require(\"./httpErrorMessage\");\n/**\n * @internal\n */\nclass PollingProcessor {\n constructor(config, requestor, featureStore) {\n this.requestor = requestor;\n this.featureStore = featureStore;\n this.stopped = false;\n this.logger = config.logger;\n this.pollInterval = config.pollInterval;\n this.featureStore = featureStore;\n }\n poll(fn) {\n var _a;\n if (this.stopped) {\n return;\n }\n const reportJsonError = (data) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Polling received invalid data');\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDPollingError('Malformed JSON data in polling response'));\n };\n const startTime = Date.now();\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Polling LaunchDarkly for feature flag updates');\n this.requestor.requestAllData((err, body) => {\n var _a, _b, _c;\n const elapsed = Date.now() - startTime;\n const sleepFor = Math.max(this.pollInterval * 1000 - elapsed, 0);\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Elapsed: %d ms, sleeping for %d ms', elapsed, sleepFor);\n if (err) {\n if (err.status && !(0, errors_1.isHttpRecoverable)(err.status)) {\n const message = (0, httpErrorMessage_1.default)(err, 'polling request');\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(message);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDPollingError(message));\n // It is not recoverable, return and do not trigger another\n // poll.\n return;\n }\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.warn((0, httpErrorMessage_1.default)(err, 'polling request', 'will retry'));\n }\n else if (body) {\n const parsed = (0, serialization_1.deserializePoll)(body);\n if (!parsed) {\n // We could not parse this JSON. Report the problem and fallthrough to\n // start another poll.\n reportJsonError(body);\n }\n else {\n const initData = {\n [VersionedDataKinds_1.default.Features.namespace]: parsed.flags,\n [VersionedDataKinds_1.default.Segments.namespace]: parsed.segments,\n };\n this.featureStore.init(initData, () => {\n fn === null || fn === void 0 ? void 0 : fn();\n // Triggering the next poll after the init has completed.\n this.timeoutHandle = setTimeout(() => {\n this.poll(fn);\n }, sleepFor);\n });\n // The poll will be triggered by the feature store initialization\n // completing.\n return;\n }\n }\n // Falling through, there was some type of error and we need to trigger\n // a new poll.\n this.timeoutHandle = setTimeout(() => {\n this.poll(fn);\n }, sleepFor);\n });\n }\n start(fn) {\n this.poll(fn);\n }\n stop() {\n if (this.timeoutHandle) {\n clearTimeout(this.timeoutHandle);\n this.timeoutHandle = undefined;\n }\n this.stopped = true;\n }\n close() {\n this.stop();\n }\n}\nexports.default = PollingProcessor;\n//# sourceMappingURL=PollingProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultHeaders(sdkKey, config, info) {\n const sdkData = info.sdkData();\n const headers = {\n authorization: sdkKey,\n 'user-agent': `${sdkData.userAgentBase ? sdkData.userAgentBase : 'NodeJSClient'}/${sdkData.version}`,\n };\n if (sdkData.wrapperName) {\n headers['x-launchdarkly-wrapper'] = sdkData.wrapperVersion\n ? `${sdkData.wrapperName}/${sdkData.wrapperVersion}`\n : sdkData.wrapperName;\n }\n const tags = config.tags.value;\n if (tags) {\n headers['x-launchdarkly-tags'] = tags;\n }\n return headers;\n}\nexports.default = defaultHeaders;\n//# sourceMappingURL=defaultHeaders.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst defaultHeaders_1 = require(\"./defaultHeaders\");\n/**\n * @internal\n */\nclass Requestor {\n constructor(sdkKey, config, info, requests) {\n this.requests = requests;\n this.eTagCache = {};\n this.headers = (0, defaultHeaders_1.default)(sdkKey, config, info);\n this.uri = `${config.serviceEndpoints.polling}/sdk/latest-all`;\n }\n /**\n * Perform a request and utilize the ETag cache. The ETags are cached in the\n * requestor instance.\n */\n async requestWithETagCache(requestUrl, options) {\n const cacheEntry = this.eTagCache[requestUrl];\n const cachedETag = cacheEntry === null || cacheEntry === void 0 ? void 0 : cacheEntry.etag;\n const updatedOptions = cachedETag\n ? Object.assign(Object.assign({}, options), { headers: Object.assign(Object.assign({}, options.headers), { 'if-none-match': cachedETag }) }) : options;\n const res = await this.requests.fetch(requestUrl, updatedOptions);\n if (res.status === 304 && cacheEntry) {\n return { res, body: cacheEntry.body };\n }\n const etag = res.headers.get('etag');\n const body = await res.text();\n if (etag) {\n this.eTagCache[requestUrl] = { etag, body };\n }\n return { res, body };\n }\n async requestAllData(cb) {\n const options = {\n method: 'GET',\n headers: this.headers,\n };\n try {\n const { res, body } = await this.requestWithETagCache(this.uri, options);\n if (res.status !== 200 && res.status !== 304) {\n const err = new errors_1.LDStreamingError(`Unexpected status code: ${res.status}`, res.status);\n return cb(err, undefined);\n }\n return cb(undefined, res.status === 304 ? null : body);\n }\n catch (err) {\n return cb(err, undefined);\n }\n }\n}\nexports.default = Requestor;\n//# sourceMappingURL=Requestor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../errors\");\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst defaultHeaders_1 = require(\"./defaultHeaders\");\nconst httpErrorMessage_1 = require(\"./httpErrorMessage\");\nconst STREAM_READ_TIMEOUT_MS = 5 * 60 * 1000;\nconst RETRY_RESET_INTERVAL_MS = 60 * 1000;\nfunction getKeyFromPath(kind, path) {\n return path.startsWith(kind.streamApiPath)\n ? path.substring(kind.streamApiPath.length)\n : undefined;\n}\n/**\n * @internal\n */\nclass StreamingProcessor {\n constructor(sdkKey, config, requests, info, featureStore, diagnosticsManager) {\n this.featureStore = featureStore;\n this.diagnosticsManager = diagnosticsManager;\n this.headers = (0, defaultHeaders_1.default)(sdkKey, config, info);\n this.logger = config.logger;\n this.streamInitialReconnectDelay = config.streamInitialReconnectDelay;\n this.requests = requests;\n this.streamUri = `${config.serviceEndpoints.streaming}/all`;\n }\n logConnectionStarted() {\n this.connectionAttemptStartTime = Date.now();\n }\n logConnectionResult(success) {\n if (this.connectionAttemptStartTime && this.diagnosticsManager) {\n this.diagnosticsManager.recordStreamInit(this.connectionAttemptStartTime, !success, Date.now() - this.connectionAttemptStartTime);\n }\n this.connectionAttemptStartTime = undefined;\n }\n start(fn) {\n this.logConnectionStarted();\n const errorFilter = (err) => {\n var _a, _b;\n if (err.status && !(0, errors_1.isHttpRecoverable)(err.status)) {\n this.logConnectionResult(false);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError(err.message, err.status));\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error((0, httpErrorMessage_1.default)(err, 'streaming request'));\n return false;\n }\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn((0, httpErrorMessage_1.default)(err, 'streaming request', 'will retry'));\n this.logConnectionResult(false);\n this.logConnectionStarted();\n return true;\n };\n const reportJsonError = (type, data) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error(`Stream received invalid data in \"${type}\" message`);\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Invalid JSON follows: ${data}`);\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Malformed JSON data in event stream'));\n };\n // TLS is handled by the platform implementation.\n const eventSource = this.requests.createEventSource(this.streamUri, {\n headers: this.headers,\n errorFilter,\n initialRetryDelayMillis: 1000 * this.streamInitialReconnectDelay,\n readTimeoutMillis: STREAM_READ_TIMEOUT_MS,\n retryResetIntervalMillis: RETRY_RESET_INTERVAL_MS,\n });\n this.eventSource = eventSource;\n eventSource.onclose = () => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Closed LaunchDarkly stream connection');\n };\n eventSource.onerror = () => {\n // The work is done by `errorFilter`.\n };\n eventSource.onopen = () => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Opened LaunchDarkly stream connection');\n };\n eventSource.onretrying = (e) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(`Will retry stream connection in ${e.delayMillis} milliseconds`);\n };\n eventSource.addEventListener('put', (event) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received put event');\n if (event && event.data) {\n this.logConnectionResult(true);\n const parsed = (0, serialization_1.deserializeAll)(event.data);\n if (!parsed) {\n reportJsonError('put', event.data);\n return;\n }\n const initData = {\n [VersionedDataKinds_1.default.Features.namespace]: parsed.data.flags,\n [VersionedDataKinds_1.default.Segments.namespace]: parsed.data.segments,\n };\n this.featureStore.init(initData, () => fn === null || fn === void 0 ? void 0 : fn());\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n eventSource.addEventListener('patch', (event) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received patch event');\n if (event && event.data) {\n const parsed = (0, serialization_1.deserializePatch)(event.data);\n if (!parsed) {\n reportJsonError('patch', event.data);\n return;\n }\n if (parsed.kind) {\n const key = getKeyFromPath(parsed.kind, parsed.path);\n if (key) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Updating ${key} in ${parsed.kind.namespace}`);\n this.featureStore.upsert(parsed.kind, parsed.data, () => { });\n }\n }\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n eventSource.addEventListener('delete', (event) => {\n var _a, _b;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Received delete event');\n if (event && event.data) {\n const parsed = (0, serialization_1.deserializeDelete)(event.data);\n if (!parsed) {\n reportJsonError('delete', event.data);\n return;\n }\n if (parsed.kind) {\n const key = getKeyFromPath(parsed.kind, parsed.path);\n if (key) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.debug(`Deleting ${key} in ${parsed.kind.namespace}`);\n this.featureStore.upsert(parsed.kind, {\n key,\n version: parsed.version,\n deleted: true,\n }, () => { });\n }\n }\n }\n else {\n fn === null || fn === void 0 ? void 0 : fn(new errors_1.LDStreamingError('Unexpected payload from event stream'));\n }\n });\n }\n stop() {\n var _a;\n (_a = this.eventSource) === null || _a === void 0 ? void 0 : _a.close();\n this.eventSource = undefined;\n }\n close() {\n this.stop();\n }\n}\nexports.default = StreamingProcessor;\n//# sourceMappingURL=StreamingProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.firstSeriesAsync = exports.allSeriesAsync = exports.firstResult = void 0;\n/**\n * Iterate a collection any apply the specified operation. The first operation which\n * returns a value will be returned and iteration will stop.\n *\n * @param collection The collection to enumerate.\n * @param operator The operation to apply to each item.\n * @returns The result of the first successful operation.\n */\nfunction firstResult(collection, operator) {\n let res;\n collection === null || collection === void 0 ? void 0 : collection.some((item, index) => {\n res = operator(item, index);\n return !!res;\n });\n return res;\n}\nexports.firstResult = firstResult;\nasync function seriesAsync(collection, check, all) {\n if (!collection) {\n return false;\n }\n for (let index = 0; index < collection.length; index += 1) {\n // This warning is to encourage starting many operations at once.\n // In this case we only want to evaluate until we encounter something that\n // doesn't match. Versus starting all the evaluations and then letting them\n // all resolve.\n // eslint-disable-next-line no-await-in-loop\n const res = await check(collection[index], index);\n // If we want all checks to pass, then we return on any failed check.\n // If we want only a single result to pass, then we return on a true result.\n if (all) {\n if (!res) {\n return false;\n }\n }\n else if (res) {\n return true;\n }\n }\n // In the case of 'all', getting here means all checks passed.\n // In the case of 'first', this means no checks passed.\n return all;\n}\n/**\n * Iterate a collection in series awaiting each check operation.\n * @param collection The collection to iterate.\n * @param check The check to perform for each item in the container.\n * @returns True if all items pass the check.\n */\nasync function allSeriesAsync(collection, check) {\n return seriesAsync(collection, check, true);\n}\nexports.allSeriesAsync = allSeriesAsync;\n/**\n * Iterate a collection in series awaiting each check operation.\n * @param collection The collection to iterate.\n * @param check The check to perform for each item in the container.\n * @returns True on the first item that passes the check. False if no items\n * pass.\n */\nasync function firstSeriesAsync(collection, check) {\n return seriesAsync(collection, check, false);\n}\nexports.firstSeriesAsync = firstSeriesAsync;\n//# sourceMappingURL=collection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Different kinds of error which may be encountered during evaluation.\n *\n * @internal\n */\nvar ErrorKinds;\n(function (ErrorKinds) {\n ErrorKinds[\"MalformedFlag\"] = \"MALFORMED_FLAG\";\n ErrorKinds[\"UserNotSpecified\"] = \"USER_NOT_SPECIFIED\";\n ErrorKinds[\"FlagNotFound\"] = \"FLAG_NOT_FOUND\";\n ErrorKinds[\"ClientNotReady\"] = \"CLIENT_NOT_READY\";\n})(ErrorKinds || (ErrorKinds = {}));\n/**\n * @internal\n */\nexports.default = ErrorKinds;\n//# sourceMappingURL=ErrorKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A set of static evaluation reasons and methods for creating specific reason instances.\n *\n * @internal\n */\nclass Reasons {\n static prerequisiteFailed(prerequisiteKey) {\n return { kind: 'PREREQUISITE_FAILED', prerequisiteKey };\n }\n static ruleMatch(ruleId, ruleIndex) {\n return { kind: 'RULE_MATCH', ruleId, ruleIndex };\n }\n}\nReasons.Fallthrough = { kind: 'FALLTHROUGH' };\nReasons.Off = { kind: 'OFF' };\nReasons.TargetMatch = { kind: 'TARGET_MATCH' };\nexports.default = Reasons;\n//# sourceMappingURL=Reasons.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reasons_1 = require(\"./Reasons\");\n/**\n * A class which encapsulates the result of an evaluation. It allows for differentiating between\n * successful and error result types.\n *\n * @internal\n */\nclass EvalResult {\n constructor(isError, detail, message) {\n this.isError = isError;\n this.detail = detail;\n this.message = message;\n this.isError = isError;\n this.detail = detail;\n this.message = message;\n }\n get isOff() {\n return this.detail.reason.kind === Reasons_1.default.Off.kind;\n }\n setDefault(def) {\n this.detail.value = def;\n }\n static forError(errorKind, message, def) {\n return new EvalResult(true, {\n value: def !== null && def !== void 0 ? def : null,\n variationIndex: null,\n reason: { kind: 'ERROR', errorKind },\n }, message);\n }\n static forSuccess(value, reason, variationIndex) {\n return new EvalResult(false, {\n value,\n variationIndex: variationIndex === undefined ? null : variationIndex,\n reason,\n });\n }\n}\nexports.default = EvalResult;\n//# sourceMappingURL=EvalResult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Bucketing can be done by string or integer values. The need to be converted to a string\n * for the hashing process.\n * @param value The value to get a bucketable value for.\n * @returns The value as a string, or null if the value cannot be used for bucketing.\n */\nfunction valueForBucketing(value) {\n if (typeof value === 'string') {\n return value;\n }\n if (Number.isInteger(value)) {\n return String(value);\n }\n return null;\n}\nclass Bucketer {\n constructor(crypto) {\n this.crypto = crypto;\n }\n sha1Hex(value) {\n const hash = this.crypto.createHash('sha1');\n hash.update(value);\n return hash.digest('hex');\n }\n /**\n * Bucket the provided context using the provided parameters.\n * @param context The context to bucket. Can be a 'multi' kind context, but\n * the bucketing will be by a specific contained kind.\n * @param key A key to use in hashing. Typically the flag key or the segment key.\n * @param attr The attribute to use for bucketing.\n * @param salt A salt to use in hashing.\n * @param kindForRollout The kind to use for bucketing.\n * @param seed A seed to use in hashing.\n *\n * @returns A tuple where the first value is the bucket, and the second value indicates if there\n * was a context for the value specified by `kindForRollout`. If there was not a context for the\n * specified kind, then the `inExperiment` attribute should be `false`.\n */\n bucket(context, key, attr, salt, kindForRollout = 'user', seed) {\n const value = context.valueForKind(attr, kindForRollout);\n const bucketableValue = valueForBucketing(value);\n // Bucketing cannot be done by the specified attribute value.\n if (bucketableValue === null) {\n // If we got a value, then we know there was a context, but if we didn't get a value, then\n // it could either be there wasn't an attribute, the attribute was undefined/null, or there\n // was not a context. So here check for the context.\n const hadContext = context.kinds.indexOf(kindForRollout) >= 0;\n return [0, hadContext];\n }\n const prefix = seed ? Number(seed) : `${key}.${salt}`;\n const hashKey = `${prefix}.${bucketableValue}`;\n const hashVal = parseInt(this.sha1Hex(hashKey).substring(0, 15), 16);\n // This is how this has worked in previous implementations, but it is not\n // ideal.\n // The maximum safe integer representation in JS is 2^53 - 1.\n // eslint-disable-next-line @typescript-eslint/no-loss-of-precision\n return [hashVal / 0xfffffffffffffff, true];\n }\n}\nexports.default = Bucketer;\n//# sourceMappingURL=Bucketer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBucketBy = exports.getOffVariation = exports.getVariation = void 0;\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst ErrorKinds_1 = require(\"./ErrorKinds\");\nconst EvalResult_1 = require(\"./EvalResult\");\nconst KEY_ATTR_REF = new js_sdk_common_1.AttributeReference('key');\n/**\n * Attempt to get an evaluation result for the specific variation/flag combination.\n * @param flag The flag to get a variation from.\n * @param index The index of the flag.\n * @param reason The initial evaluation reason. If there is a valid variation, then this reason\n * will be returned in the EvalResult.\n * @returns An evaluation result containing the successful evaluation, or an error if there is\n * a problem accessing the variation.\n *\n * @internal\n */\nfunction getVariation(flag, index, reason) {\n if (js_sdk_common_1.TypeValidators.Number.is(index) && index >= 0 && index < flag.variations.length) {\n return EvalResult_1.default.forSuccess(flag.variations[index], reason, index);\n }\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid variation index in flag');\n}\nexports.getVariation = getVariation;\n/**\n * Attempt to get an off result for the specified flag.\n * @param flag The flag to get the off variation for.\n * @param reason The initial reason for the evaluation result.\n * @returns A successful evaluation result, or an error result if there is a problem accessing\n * the off variation. Flags which do not have an off variation specified will get a `null` flag\n * value with an `undefined` variation.\n *\n * @internal\n */\nfunction getOffVariation(flag, reason) {\n if (!js_sdk_common_1.TypeValidators.Number.is(flag.offVariation)) {\n return EvalResult_1.default.forSuccess(null, reason);\n }\n return getVariation(flag, flag.offVariation, reason);\n}\nexports.getOffVariation = getOffVariation;\nfunction getBucketBy(isExperiment, bucketByAttributeReference) {\n var _a;\n return (_a = (isExperiment ? undefined : bucketByAttributeReference)) !== null && _a !== void 0 ? _a : KEY_ATTR_REF;\n}\nexports.getBucketBy = getBucketBy;\n//# sourceMappingURL=variations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst collection_1 = require(\"./collection\");\nconst Reasons_1 = require(\"./Reasons\");\nconst variations_1 = require(\"./variations\");\nfunction evalTarget(flag, target, context) {\n const contextKey = context.key(target.contextKind);\n if (contextKey !== undefined) {\n const found = target.values.indexOf(contextKey) >= 0;\n if (found) {\n return (0, variations_1.getVariation)(flag, target.variation, Reasons_1.default.TargetMatch);\n }\n }\n return undefined;\n}\n/**\n * Evaluate the targets of the specified flag against the given context.\n * @param flag The flag to evaluate targets for.\n * @param context The context to evaluate those targets against.\n * @returns An evaluation result if there is a target match/error or undefined if there is not.\n *\n * @internal\n */\nfunction evalTargets(flag, context) {\n var _a;\n if (!((_a = flag.contextTargets) === null || _a === void 0 ? void 0 : _a.length)) {\n // There are not context targets, so we are going to evaluate the user targets.\n return (0, collection_1.firstResult)(flag.targets, (target) => evalTarget(flag, target, context));\n }\n return (0, collection_1.firstResult)(flag.contextTargets, (target) => {\n if (!target.contextKind || target.contextKind === js_sdk_common_1.Context.userKind) {\n // When a context target is for a user, then use a user target with the same variation.\n const userTarget = (flag.targets || []).find((ut) => ut.variation === target.variation);\n if (userTarget) {\n return evalTarget(flag, userTarget, context);\n }\n return undefined;\n }\n return evalTarget(flag, target, context);\n });\n}\nexports.default = evalTargets;\n//# sourceMappingURL=evalTargets.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nfunction makeBigSegmentRef(segment) {\n // The format of Big Segment references is independent of what store implementation is being\n // used; the store implementation receives only this string and does not know the details of\n // the data model. The Relay Proxy will use the same format when writing to the store.\n return `${segment.key}.g${segment.generation}`;\n}\nexports.default = makeBigSegmentRef;\n//# sourceMappingURL=makeBigSegmentRef.js.map","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCE', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n let next\n while ((next = re[t.COERCERTL].exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n re[t.COERCERTL].lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)\n}\nmodule.exports = coerce\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst semver_1 = require(\"semver\");\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst VERSION_COMPONENTS_REGEX = /^\\d+(\\.\\d+)?(\\.\\d+)?/;\nfunction parseSemver(input) {\n // A leading 'v' is not supported by the standard, but may be by the semver library.\n if (js_sdk_common_1.TypeValidators.String.is(input) && !input.startsWith('v')) {\n // If the input is able to be parsed, then return that.\n const parsed = (0, semver_1.parse)(input);\n if (parsed) {\n return parsed;\n }\n // If not, then we are going to make some exceptions to the format.\n // Specifically semver requires 3 components, but we allow versions with\n // less. For instance we allow '1' to be equivalent to '1.0.0'.\n const components = VERSION_COMPONENTS_REGEX.exec(input);\n if (components) {\n let transformed = components[0];\n // Start after the match.\n for (let i = 1; i < components.length; i += 1) {\n // The regex will return a match followed by each group.\n // Unmatched groups are 'undefined'.\n // So we will always have 3 entries, the match and 2 groups.\n // For each missing group we need to append a '.0' until we have the\n // standard 3.\n if (components[i] === undefined) {\n transformed += '.0';\n }\n }\n // If the original version contains pre-release information like '-beta.1',\n // then this will re-incorporate that into the string.\n transformed += input.substring(components[0].length);\n return (0, semver_1.parse)(transformed);\n }\n }\n return null;\n}\nfunction semVerOperator(fn) {\n return (a, b) => {\n const aVer = parseSemver(a);\n const bVer = parseSemver(b);\n return !!(aVer && bVer && fn(aVer, bVer));\n };\n}\nfunction makeOperator(fn, validator, converter) {\n return (a, b) => {\n if (validator.is(a) && validator.is(b)) {\n if (converter) {\n return fn(converter(a), converter(b));\n }\n return fn(a, b);\n }\n return false;\n };\n}\nfunction parseDate(input) {\n // Before calling this function we know the value is a date in a number\n // or as a string.\n if (typeof input === 'number') {\n return input;\n }\n return Date.parse(input);\n}\nfunction safeRegexMatch(pattern, value) {\n try {\n return new RegExp(pattern).test(value);\n }\n catch (_a) {\n return false;\n }\n}\nconst operators = {\n in: (a, b) => a === b,\n endsWith: makeOperator((a, b) => a.endsWith(b), js_sdk_common_1.TypeValidators.String),\n startsWith: makeOperator((a, b) => a.startsWith(b), js_sdk_common_1.TypeValidators.String),\n matches: makeOperator((value, pattern) => safeRegexMatch(pattern, value), js_sdk_common_1.TypeValidators.String),\n contains: makeOperator((a, b) => a.indexOf(b) > -1, js_sdk_common_1.TypeValidators.String),\n lessThan: makeOperator((a, b) => a < b, js_sdk_common_1.TypeValidators.Number),\n lessThanOrEqual: makeOperator((a, b) => a <= b, js_sdk_common_1.TypeValidators.Number),\n greaterThan: makeOperator((a, b) => a > b, js_sdk_common_1.TypeValidators.Number),\n greaterThanOrEqual: makeOperator((a, b) => a >= b, js_sdk_common_1.TypeValidators.Number),\n before: makeOperator((a, b) => a < b, js_sdk_common_1.TypeValidators.Date, parseDate),\n after: makeOperator((a, b) => a > b, js_sdk_common_1.TypeValidators.Date, parseDate),\n semVerEqual: semVerOperator((a, b) => a.compare(b) === 0),\n semVerLessThan: semVerOperator((a, b) => a.compare(b) < 0),\n semVerGreaterThan: semVerOperator((a, b) => a.compare(b) > 0),\n};\n/**\n * Allows checking if a specific operator is defined and allows execution of an operator on data.\n *\n * @internal\n */\nclass Operators {\n static is(op) {\n return Object.prototype.hasOwnProperty.call(operators, op);\n }\n static execute(op, a, b) {\n var _a, _b;\n return (_b = (_a = operators[op]) === null || _a === void 0 ? void 0 : _a.call(operators, a, b)) !== null && _b !== void 0 ? _b : false;\n }\n}\nexports.default = Operators;\n//# sourceMappingURL=Operations.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.maybeNegate = void 0;\nconst Operations_1 = require(\"./Operations\");\nfunction maybeNegate(clause, value) {\n if (clause.negate) {\n return !value;\n }\n return value;\n}\nexports.maybeNegate = maybeNegate;\nfunction matchAny(op, value, values) {\n return values.some((testValue) => Operations_1.default.execute(op, value, testValue));\n}\n/**\n * Match a clause against a context.\n * @param clause The clause to match against a context.\n * @param context The context to match.\n * @returns True if the clause matches.\n *\n * @internal\n */\nfunction matchClauseWithoutSegmentOperations(clause, context) {\n const contextValue = context.valueForKind(clause.attributeReference, clause.contextKind);\n if (contextValue === null || contextValue === undefined) {\n return false;\n }\n if (Array.isArray(contextValue)) {\n return maybeNegate(clause, contextValue.some((value) => matchAny(clause.op, value, clause.values)));\n }\n return maybeNegate(clause, matchAny(clause.op, contextValue, clause.values));\n}\nexports.default = matchClauseWithoutSegmentOperations;\n//# sourceMappingURL=matchClause.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction segmentSearch(context, contextTargets, userTargets) {\n if (contextTargets) {\n for (let targetIndex = 0; targetIndex < contextTargets.length; targetIndex += 1) {\n const target = contextTargets[targetIndex];\n const key = context.key(target.contextKind);\n if (key && target.values.includes(key)) {\n return true;\n }\n }\n }\n if (userTargets) {\n const userKey = context.key('user');\n if (userKey) {\n if (userTargets.includes(userKey)) {\n return true;\n }\n }\n }\n return false;\n}\nfunction matchSegmentTargets(segment, context) {\n const included = segmentSearch(context, segment.includedContexts, segment.included);\n if (included) {\n return true;\n }\n const excluded = segmentSearch(context, segment.excludedContexts, segment.excluded);\n if (excluded) {\n // The match was an exclusion, so it should be negated.\n return !excluded;\n }\n return undefined;\n}\nexports.default = matchSegmentTargets;\n//# sourceMappingURL=matchSegmentTargets.js.map","\"use strict\";\n/* eslint-disable class-methods-use-this */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Bucketer_1 = require(\"./Bucketer\");\nconst collection_1 = require(\"./collection\");\nconst ErrorKinds_1 = require(\"./ErrorKinds\");\nconst EvalResult_1 = require(\"./EvalResult\");\nconst evalTargets_1 = require(\"./evalTargets\");\nconst makeBigSegmentRef_1 = require(\"./makeBigSegmentRef\");\nconst matchClause_1 = require(\"./matchClause\");\nconst matchSegmentTargets_1 = require(\"./matchSegmentTargets\");\nconst Reasons_1 = require(\"./Reasons\");\nconst variations_1 = require(\"./variations\");\nconst bigSegmentsStatusPriority = {\n HEALTHY: 1,\n STALE: 2,\n STORE_ERROR: 3,\n NOT_CONFIGURED: 4,\n};\nfunction getBigSegmentsStatusPriority(status) {\n if (status !== undefined) {\n return bigSegmentsStatusPriority[status] || 0;\n }\n return 0;\n}\n/**\n * Given two big segment statuses return the one with the higher priority.\n * @returns The status with the higher priority.\n */\nfunction computeUpdatedBigSegmentsStatus(old, latest) {\n if (old !== undefined &&\n getBigSegmentsStatusPriority(old) > getBigSegmentsStatusPriority(latest)) {\n return old;\n }\n return latest;\n}\nclass EvalState {\n}\nclass Match {\n constructor(isMatch) {\n this.isMatch = isMatch;\n this.error = false;\n }\n}\nclass MatchError {\n constructor(result) {\n this.result = result;\n this.error = true;\n this.isMatch = false;\n }\n}\n/**\n * @internal\n */\nclass Evaluator {\n constructor(platform, queries) {\n this.queries = queries;\n this.bucketer = new Bucketer_1.default(platform.crypto);\n }\n async evaluate(flag, context, eventFactory) {\n const state = new EvalState();\n const res = await this.evaluateInternal(flag, context, state, [], eventFactory);\n if (state.bigSegmentsStatus) {\n res.detail.reason = Object.assign(Object.assign({}, res.detail.reason), { bigSegmentsStatus: state.bigSegmentsStatus });\n }\n res.events = state.events;\n return res;\n }\n /**\n * Evaluate the given flag against the given context. This internal method is entered\n * initially from the external evaluation method, but may be recursively executed during\n * prerequisite evaluations.\n * @param flag The flag to evaluate.\n * @param context The context to evaluate the flag against.\n * @param state The current evaluation state.\n * @param visitedFlags The flags that have been visited during this evaluation.\n * This is not part of the state, because it needs to be forked during prerequisite evaluations.\n */\n async evaluateInternal(flag, context, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n state, visitedFlags, eventFactory) {\n if (!flag.on) {\n return (0, variations_1.getOffVariation)(flag, Reasons_1.default.Off);\n }\n const prereqResult = await this.checkPrerequisites(flag, context, state, visitedFlags, eventFactory);\n // If there is a prereq result, then prereqs have failed, or there was\n // an error.\n if (prereqResult) {\n return prereqResult;\n }\n const targetRes = (0, evalTargets_1.default)(flag, context);\n if (targetRes) {\n return targetRes;\n }\n const ruleRes = await this.evaluateRules(flag, context, state);\n if (ruleRes) {\n return ruleRes;\n }\n return this.variationForContext(flag.fallthrough, context, flag, Reasons_1.default.Fallthrough);\n }\n /**\n * Evaluate the prerequisite flags for the given flag.\n * @param flag The flag to evaluate prerequisites for.\n * @param context The context to evaluate the prerequisites against.\n * @param state used to accumulate prerequisite events.\n * @param visitedFlags Used to detect cycles in prerequisite evaluation.\n * @returns An {@link EvalResult} containing an error result or `undefined` if the prerequisites\n * are met.\n */\n async checkPrerequisites(flag, context, state, visitedFlags, eventFactory) {\n let prereqResult;\n if (!flag.prerequisites || !flag.prerequisites.length) {\n return undefined;\n }\n // On any error conditions the prereq result will be set, so we do not need\n // the result of the series evaluation.\n await (0, collection_1.allSeriesAsync)(flag.prerequisites, async (prereq) => {\n var _a;\n if (visitedFlags.indexOf(prereq.key) !== -1) {\n prereqResult = EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, `Prerequisite of ${flag.key} causing a circular reference.` +\n ' This is probably a temporary condition due to an incomplete update.');\n return false;\n }\n const updatedVisitedFlags = [...visitedFlags, prereq.key];\n const prereqFlag = await this.queries.getFlag(prereq.key);\n if (!prereqFlag) {\n prereqResult = (0, variations_1.getOffVariation)(flag, Reasons_1.default.prerequisiteFailed(prereq.key));\n return false;\n }\n const evalResult = await this.evaluateInternal(prereqFlag, context, state, updatedVisitedFlags, eventFactory);\n // eslint-disable-next-line no-param-reassign\n state.events = (_a = state.events) !== null && _a !== void 0 ? _a : [];\n if (eventFactory) {\n state.events.push(eventFactory.evalEvent(prereqFlag, context, evalResult.detail, null, flag));\n }\n if (evalResult.isError) {\n prereqResult = evalResult;\n return false;\n }\n if (evalResult.isOff || evalResult.detail.variationIndex !== prereq.variation) {\n prereqResult = (0, variations_1.getOffVariation)(flag, Reasons_1.default.prerequisiteFailed(prereq.key));\n return false;\n }\n return true;\n });\n if (prereqResult) {\n return prereqResult;\n }\n // There were no prereqResults for errors or failed prerequisites.\n // So they have all passed.\n return undefined;\n }\n /**\n * Evaluate the rules for a flag and return an {@link EvalResult} if there is\n * a match or error.\n * @param flag The flag to evaluate rules for.\n * @param context The context to evaluate the rules against.\n * @param state The current evaluation state.\n * @returns\n */\n async evaluateRules(flag, context, state) {\n let ruleResult;\n await (0, collection_1.firstSeriesAsync)(flag.rules, async (rule, ruleIndex) => {\n ruleResult = await this.ruleMatchContext(flag, rule, ruleIndex, context, state, []);\n return !!ruleResult;\n });\n return ruleResult;\n }\n async clauseMatchContext(clause, context, segmentsVisited, state) {\n let errorResult;\n if (clause.op === 'segmentMatch') {\n const match = await (0, collection_1.firstSeriesAsync)(clause.values, async (value) => {\n const segment = await this.queries.getSegment(value);\n if (segment) {\n if (segmentsVisited.includes(segment.key)) {\n errorResult = EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, `Segment rule referencing segment ${segment.key} caused a circular reference. ` +\n 'This is probably a temporary condition due to an incomplete update');\n // There was an error, so stop checking further segments.\n return true;\n }\n const newVisited = [...segmentsVisited, segment === null || segment === void 0 ? void 0 : segment.key];\n const res = await this.segmentMatchContext(segment, context, state, newVisited);\n if (res.error) {\n errorResult = res.result;\n }\n return res.error || res.isMatch;\n }\n return false;\n });\n if (errorResult) {\n return new MatchError(errorResult);\n }\n return new Match((0, matchClause_1.maybeNegate)(clause, match));\n }\n // This is after segment matching, which does not use the reference.\n if (!clause.attributeReference.isValid) {\n return new MatchError(EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference in clause'));\n }\n return new Match((0, matchClause_1.default)(clause, context));\n }\n /**\n * Evaluate a flag rule against the given context.\n * @param flag The flag the rule is part of.\n * @param rule The rule to match.\n * @param rule The index of the rule.\n * @param context The context to match the rule against.\n * @returns An {@link EvalResult} or `undefined` if there are no matches or errors.\n */\n async ruleMatchContext(flag, rule, ruleIndex, context, state, segmentsVisited) {\n if (!rule.clauses) {\n return undefined;\n }\n let errorResult;\n const match = await (0, collection_1.allSeriesAsync)(rule.clauses, async (clause) => {\n const res = await this.clauseMatchContext(clause, context, segmentsVisited, state);\n errorResult = res.result;\n return res.error || res.isMatch;\n });\n if (errorResult) {\n return errorResult;\n }\n if (match) {\n return this.variationForContext(rule, context, flag, Reasons_1.default.ruleMatch(rule.id, ruleIndex));\n }\n return undefined;\n }\n variationForContext(varOrRollout, context, flag, reason) {\n if (varOrRollout === undefined) {\n // By spec this field should be defined, but better to be overly cautious.\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Fallthrough variation undefined');\n }\n if (varOrRollout.variation !== undefined) {\n // 0 would be false.\n return (0, variations_1.getVariation)(flag, varOrRollout.variation, reason);\n }\n if (varOrRollout.rollout) {\n const { rollout } = varOrRollout;\n const { variations } = rollout;\n const isExperiment = rollout.kind === 'experiment';\n if (variations && variations.length) {\n const bucketBy = (0, variations_1.getBucketBy)(isExperiment, rollout.bucketByAttributeReference);\n if (!bucketBy.isValid) {\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference for bucketBy in rollout');\n }\n const [bucket, hadContext] = this.bucketer.bucket(context, flag.key, bucketBy, flag.salt || '', rollout.contextKind, rollout.seed);\n const updatedReason = Object.assign({}, reason);\n let sum = 0;\n for (let i = 0; i < variations.length; i += 1) {\n const variate = variations[i];\n sum += variate.weight / 100000.0;\n if (bucket < sum) {\n if (isExperiment && hadContext && !variate.untracked) {\n updatedReason.inExperiment = true;\n }\n return (0, variations_1.getVariation)(flag, variate.variation, updatedReason);\n }\n }\n // The context's bucket value was greater than or equal to the end of\n // the last bucket. This could happen due to a rounding error, or due to\n // the fact that we are scaling to 100000 rather than 99999, or the flag\n // data could contain buckets that don't actually add up to 100000.\n // Rather than returning an error in this case (or changing the scaling,\n // which would potentially change the results for *all* users), we will\n // simply put the context in the last bucket.\n const lastVariate = variations[variations.length - 1];\n if (isExperiment && !lastVariate.untracked) {\n updatedReason.inExperiment = true;\n }\n return (0, variations_1.getVariation)(flag, lastVariate.variation, updatedReason);\n }\n }\n return EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Variation/rollout object with no variation or rollout');\n }\n async segmentRuleMatchContext(segment, rule, context, state, segmentsVisited) {\n let errorResult;\n const match = await (0, collection_1.allSeriesAsync)(rule.clauses, async (clause) => {\n const res = await this.clauseMatchContext(clause, context, segmentsVisited, state);\n errorResult = res.result;\n return res.error || res.isMatch;\n });\n if (errorResult) {\n return new MatchError(errorResult);\n }\n if (match) {\n if (rule.weight === undefined) {\n return new Match(match);\n }\n const bucketBy = (0, variations_1.getBucketBy)(false, rule.bucketByAttributeReference);\n if (!bucketBy.isValid) {\n return new MatchError(EvalResult_1.default.forError(ErrorKinds_1.default.MalformedFlag, 'Invalid attribute reference in clause'));\n }\n const [bucket] = this.bucketer.bucket(context, segment.key, bucketBy, segment.salt || '', rule.rolloutContextKind);\n return new Match(bucket < rule.weight / 100000.0);\n }\n return new Match(false);\n }\n // eslint-disable-next-line class-methods-use-this\n async simpleSegmentMatchContext(segment, context, state, segmentsVisited) {\n if (!segment.unbounded) {\n const includeExclude = (0, matchSegmentTargets_1.default)(segment, context);\n if (includeExclude !== undefined) {\n return new Match(includeExclude);\n }\n }\n let evalResult;\n const matched = await (0, collection_1.firstSeriesAsync)(segment.rules, async (rule) => {\n const res = await this.segmentRuleMatchContext(segment, rule, context, state, segmentsVisited);\n evalResult = res.result;\n return res.error || res.isMatch;\n });\n if (evalResult) {\n return new MatchError(evalResult);\n }\n return new Match(matched);\n }\n async segmentMatchContext(segment, context, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n state, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n segmentsVisited) {\n if (!segment.unbounded) {\n return this.simpleSegmentMatchContext(segment, context, state, segmentsVisited);\n }\n const bigSegmentKind = segment.unboundedContextKind || 'user';\n const keyForBigSegment = context.key(bigSegmentKind);\n if (!keyForBigSegment) {\n return new Match(false);\n }\n if (!segment.generation) {\n // Big Segment queries can only be done if the generation is known. If it's unset,\n // that probably means the data store was populated by an older SDK that doesn't know\n // about the generation property and therefore dropped it from the JSON data. We'll treat\n // that as a \"not configured\" condition.\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, 'NOT_CONFIGURED');\n return new Match(false);\n }\n if (state.bigSegmentsMembership && state.bigSegmentsMembership[keyForBigSegment]) {\n // We've already done the query at some point during the flag evaluation and stored\n // the result (if any) in stateOut.bigSegmentsMembership, so we don't need to do it\n // again. Even if multiple Big Segments are being referenced, the membership includes\n // *all* of the user's segment memberships.\n return this.bigSegmentMatchContext(state.bigSegmentsMembership[keyForBigSegment], segment, context, state);\n }\n const result = await this.queries.getBigSegmentsMembership(keyForBigSegment);\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsMembership = state.bigSegmentsMembership || {};\n if (result) {\n const [membership, status] = result;\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsMembership[keyForBigSegment] = membership;\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, status);\n }\n else {\n // eslint-disable-next-line no-param-reassign\n state.bigSegmentsStatus = computeUpdatedBigSegmentsStatus(state.bigSegmentsStatus, 'NOT_CONFIGURED');\n }\n /* eslint-enable no-param-reassign */\n return this.bigSegmentMatchContext(state.bigSegmentsMembership[keyForBigSegment], segment, context, state);\n }\n async bigSegmentMatchContext(membership, segment, context, state) {\n const segmentRef = (0, makeBigSegmentRef_1.default)(segment);\n const included = membership === null || membership === void 0 ? void 0 : membership[segmentRef];\n // Typically null is not checked because we filter it from the data\n // we get in flag updates. Here it is checked because big segment data\n // will be contingent on the store that implements it.\n if (included !== undefined && included !== null) {\n return new Match(included);\n }\n return this.simpleSegmentMatchContext(segment, context, state, []);\n }\n}\nexports.default = Evaluator;\n//# sourceMappingURL=Evaluator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LruCache_1 = require(\"../cache/LruCache\");\nclass ContextDeduplicator {\n constructor(options) {\n this.contextKeysCache = new LruCache_1.default({ max: options.contextKeysCapacity });\n this.flushInterval = options.contextKeysFlushInterval;\n }\n processContext(context) {\n const { canonicalKey } = context;\n const inCache = this.contextKeysCache.get(canonicalKey);\n this.contextKeysCache.set(canonicalKey, true);\n // If it is in the cache, then we do not want to add an event.\n return !inCache;\n }\n flush() {\n this.contextKeysCache.clear();\n }\n}\nexports.default = ContextDeduplicator;\n//# sourceMappingURL=ContextDeduplicator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass InMemoryFeatureStore {\n constructor() {\n this.allData = {};\n this.initCalled = false;\n }\n addItem(kind, key, item) {\n let items = this.allData[kind.namespace];\n if (!items) {\n items = {};\n this.allData[kind.namespace] = items;\n }\n if (Object.hasOwnProperty.call(items, key)) {\n const old = items[key];\n if (!old || old.version < item.version) {\n items[key] = item;\n }\n }\n else {\n items[key] = item;\n }\n }\n get(kind, key, callback) {\n const items = this.allData[kind.namespace];\n if (items) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n const item = items[key];\n if (item && !item.deleted) {\n return callback === null || callback === void 0 ? void 0 : callback(item);\n }\n }\n }\n return callback === null || callback === void 0 ? void 0 : callback(null);\n }\n all(kind, callback) {\n var _a;\n const result = {};\n const items = (_a = this.allData[kind.namespace]) !== null && _a !== void 0 ? _a : {};\n Object.entries(items).forEach(([key, item]) => {\n if (item && !item.deleted) {\n result[key] = item;\n }\n });\n callback === null || callback === void 0 ? void 0 : callback(result);\n }\n init(allData, callback) {\n this.initCalled = true;\n this.allData = allData;\n callback === null || callback === void 0 ? void 0 : callback();\n }\n delete(kind, key, version, callback) {\n const deletedItem = { version, deleted: true };\n this.addItem(kind, key, deletedItem);\n callback === null || callback === void 0 ? void 0 : callback();\n }\n upsert(kind, data, callback) {\n this.addItem(kind, data.key, data);\n callback === null || callback === void 0 ? void 0 : callback();\n }\n initialized(callback) {\n return callback === null || callback === void 0 ? void 0 : callback(this.initCalled);\n }\n /* eslint-disable class-methods-use-this */\n close() {\n // For the memory store this is a no-op.\n }\n getDescription() {\n return 'memory';\n }\n}\nexports.default = InMemoryFeatureStore;\n//# sourceMappingURL=InMemoryFeatureStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultValues = void 0;\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst InMemoryFeatureStore_1 = require(\"../store/InMemoryFeatureStore\");\n// Once things are internal to the implementation of the SDK we can depend on\n// types. Calls to the SDK could contain anything without any regard to typing.\n// So, data we take from external sources must be normalized into something\n// that can be trusted.\n/**\n * These perform cursory validations. Complex objects are implemented with classes\n * and these should allow for conditional construction.\n */\nconst validations = {\n baseUri: js_sdk_common_1.TypeValidators.String,\n streamUri: js_sdk_common_1.TypeValidators.String,\n eventsUri: js_sdk_common_1.TypeValidators.String,\n timeout: js_sdk_common_1.TypeValidators.Number,\n capacity: js_sdk_common_1.TypeValidators.Number,\n logger: js_sdk_common_1.TypeValidators.Object,\n featureStore: js_sdk_common_1.TypeValidators.ObjectOrFactory,\n bigSegments: js_sdk_common_1.TypeValidators.Object,\n updateProcessor: js_sdk_common_1.TypeValidators.ObjectOrFactory,\n flushInterval: js_sdk_common_1.TypeValidators.Number,\n pollInterval: js_sdk_common_1.TypeValidators.numberWithMin(30),\n proxyOptions: js_sdk_common_1.TypeValidators.Object,\n offline: js_sdk_common_1.TypeValidators.Boolean,\n stream: js_sdk_common_1.TypeValidators.Boolean,\n streamInitialReconnectDelay: js_sdk_common_1.TypeValidators.Number,\n useLdd: js_sdk_common_1.TypeValidators.Boolean,\n sendEvents: js_sdk_common_1.TypeValidators.Boolean,\n allAttributesPrivate: js_sdk_common_1.TypeValidators.Boolean,\n privateAttributes: js_sdk_common_1.TypeValidators.StringArray,\n contextKeysCapacity: js_sdk_common_1.TypeValidators.Number,\n contextKeysFlushInterval: js_sdk_common_1.TypeValidators.Number,\n tlsParams: js_sdk_common_1.TypeValidators.Object,\n diagnosticOptOut: js_sdk_common_1.TypeValidators.Boolean,\n diagnosticRecordingInterval: js_sdk_common_1.TypeValidators.numberWithMin(60),\n wrapperName: js_sdk_common_1.TypeValidators.String,\n wrapperVersion: js_sdk_common_1.TypeValidators.String,\n application: js_sdk_common_1.TypeValidators.Object,\n};\n/**\n * @internal\n */\nexports.defaultValues = {\n baseUri: 'https://sdk.launchdarkly.com',\n streamUri: 'https://stream.launchdarkly.com',\n eventsUri: 'https://events.launchdarkly.com',\n stream: true,\n streamInitialReconnectDelay: 1,\n sendEvents: true,\n timeout: 5,\n capacity: 10000,\n flushInterval: 5,\n pollInterval: 30,\n offline: false,\n useLdd: false,\n allAttributesPrivate: false,\n privateAttributes: [],\n contextKeysCapacity: 1000,\n contextKeysFlushInterval: 300,\n diagnosticOptOut: false,\n diagnosticRecordingInterval: 900,\n featureStore: () => new InMemoryFeatureStore_1.default(),\n};\nfunction validateTypesAndNames(options) {\n const errors = [];\n const validatedOptions = Object.assign({}, exports.defaultValues);\n Object.keys(options).forEach((optionName) => {\n var _a;\n // We need to tell typescript it doesn't actually know what options are.\n // If we don't then it complains we are doing crazy things with it.\n const optionValue = options[optionName];\n const validator = validations[optionName];\n if (validator) {\n if (!validator.is(optionValue)) {\n if (validator.getType() === 'boolean') {\n errors.push(js_sdk_common_1.OptionMessages.wrongOptionTypeBoolean(optionName, typeof optionValue));\n validatedOptions[optionName] = !!optionValue;\n }\n else if (validator instanceof js_sdk_common_1.NumberWithMinimum &&\n js_sdk_common_1.TypeValidators.Number.is(optionValue)) {\n const { min } = validator;\n errors.push(js_sdk_common_1.OptionMessages.optionBelowMinimum(optionName, optionValue, min));\n validatedOptions[optionName] = min;\n }\n else {\n errors.push(js_sdk_common_1.OptionMessages.wrongOptionType(optionName, validator.getType(), typeof optionValue));\n validatedOptions[optionName] = exports.defaultValues[optionName];\n }\n }\n else {\n validatedOptions[optionName] = optionValue;\n }\n }\n else {\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.warn(js_sdk_common_1.OptionMessages.unknownOption(optionName));\n }\n });\n return { errors, validatedOptions };\n}\nfunction validateEndpoints(options, validatedOptions) {\n var _a, _b, _c;\n const { baseUri, streamUri, eventsUri } = options;\n const streamingEndpointSpecified = streamUri !== undefined && streamUri !== null;\n const pollingEndpointSpecified = baseUri !== undefined && baseUri !== null;\n const eventEndpointSpecified = eventsUri !== undefined && eventsUri !== null;\n if (streamingEndpointSpecified === pollingEndpointSpecified &&\n streamingEndpointSpecified === eventEndpointSpecified) {\n // Either everything is default, or everything is set.\n return;\n }\n if (!streamingEndpointSpecified && validatedOptions.stream) {\n (_a = validatedOptions.logger) === null || _a === void 0 ? void 0 : _a.warn(js_sdk_common_1.OptionMessages.partialEndpoint('streamUri'));\n }\n if (!pollingEndpointSpecified) {\n (_b = validatedOptions.logger) === null || _b === void 0 ? void 0 : _b.warn(js_sdk_common_1.OptionMessages.partialEndpoint('baseUri'));\n }\n if (!eventEndpointSpecified && validatedOptions.sendEvents) {\n (_c = validatedOptions.logger) === null || _c === void 0 ? void 0 : _c.warn(js_sdk_common_1.OptionMessages.partialEndpoint('eventsUri'));\n }\n}\n/**\n * Configuration options for the LDClient.\n *\n * @internal\n */\nclass Configuration {\n constructor(options = {}) {\n // The default will handle undefined, but not null.\n // Because we can be called from JS we need to be extra defensive.\n // eslint-disable-next-line no-param-reassign\n options = options || {};\n // If there isn't a valid logger from the platform, then logs would go nowhere.\n this.logger = options.logger;\n const { errors, validatedOptions } = validateTypesAndNames(options);\n errors.forEach((error) => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(error);\n });\n validateEndpoints(options, validatedOptions);\n this.serviceEndpoints = new js_sdk_common_1.ServiceEndpoints(validatedOptions.streamUri, validatedOptions.baseUri, validatedOptions.eventsUri);\n this.eventsCapacity = validatedOptions.capacity;\n this.timeout = validatedOptions.timeout;\n this.bigSegments = validatedOptions.bigSegments;\n this.flushInterval = validatedOptions.flushInterval;\n this.pollInterval = validatedOptions.pollInterval;\n this.proxyOptions = validatedOptions.proxyOptions;\n this.offline = validatedOptions.offline;\n this.stream = validatedOptions.stream;\n this.streamInitialReconnectDelay = validatedOptions.streamInitialReconnectDelay;\n this.useLdd = validatedOptions.useLdd;\n this.sendEvents = validatedOptions.sendEvents;\n this.allAttributesPrivate = validatedOptions.allAttributesPrivate;\n this.privateAttributes = validatedOptions.privateAttributes;\n this.contextKeysCapacity = validatedOptions.contextKeysCapacity;\n this.contextKeysFlushInterval = validatedOptions.contextKeysFlushInterval;\n this.tlsParams = validatedOptions.tlsParams;\n this.diagnosticOptOut = validatedOptions.diagnosticOptOut;\n this.wrapperName = validatedOptions.wrapperName;\n this.wrapperVersion = validatedOptions.wrapperVersion;\n this.tags = new js_sdk_common_1.ApplicationTags(validatedOptions);\n this.diagnosticRecordingInterval = validatedOptions.diagnosticRecordingInterval;\n if (js_sdk_common_1.TypeValidators.Function.is(validatedOptions.updateProcessor)) {\n // @ts-ignore\n this.updateProcessorFactory = validatedOptions.updateProcessor;\n }\n else {\n // The processor is already created, just have the method return it.\n // @ts-ignore\n this.updateProcessorFactory = () => validatedOptions.updateProcessor;\n }\n if (js_sdk_common_1.TypeValidators.Function.is(validatedOptions.featureStore)) {\n // @ts-ignore\n this.featureStoreFactory = validatedOptions.featureStore;\n }\n else {\n // The store is already created, just have the method return it.\n // @ts-ignore\n this.featureStoreFactory = () => validatedOptions.featureStore;\n }\n }\n}\nexports.default = Configuration;\n//# sourceMappingURL=Configuration.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Configuration_1 = require(\"../options/Configuration\");\nfunction secondsToMillis(sec) {\n return Math.trunc(sec * 1000);\n}\n/**\n * Maintains information for diagnostic events.\n *\n * @internal\n */\nclass DiagnosticsManager {\n constructor(sdkKey, config, platform, featureStore) {\n this.config = config;\n this.platform = platform;\n this.featureStore = featureStore;\n this.streamInits = [];\n this.startTime = Date.now();\n this.dataSinceDate = this.startTime;\n this.id = {\n diagnosticId: platform.crypto.randomUUID(),\n sdkKeySuffix: sdkKey.length > 6 ? sdkKey.substring(sdkKey.length - 6) : sdkKey,\n };\n }\n /**\n * Creates the initial event that is sent by the event processor when the SDK starts up. This will\n * not be repeated during the lifetime of the SDK client.\n */\n createInitEvent() {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\n const sdkData = this.platform.info.sdkData();\n const platformData = this.platform.info.platformData();\n return {\n kind: 'diagnostic-init',\n id: this.id,\n creationDate: this.startTime,\n sdk: sdkData,\n configuration: {\n customBaseURI: this.config.serviceEndpoints.polling !== Configuration_1.defaultValues.baseUri,\n customStreamURI: this.config.serviceEndpoints.streaming !== Configuration_1.defaultValues.streamUri,\n customEventsURI: this.config.serviceEndpoints.events !== Configuration_1.defaultValues.eventsUri,\n eventsCapacity: this.config.eventsCapacity,\n // Node doesn't distinguish between these two kinds of timeouts. It is unlikely other web\n // based implementations would be able to either.\n connectTimeoutMillis: secondsToMillis(this.config.timeout),\n socketTimeoutMillis: secondsToMillis(this.config.timeout),\n eventsFlushIntervalMillis: secondsToMillis(this.config.flushInterval),\n pollingIntervalMillis: secondsToMillis(this.config.pollInterval),\n reconnectTimeMillis: secondsToMillis(this.config.streamInitialReconnectDelay),\n streamingDisabled: !this.config.stream,\n usingRelayDaemon: this.config.useLdd,\n offline: this.config.offline,\n allAttributesPrivate: this.config.allAttributesPrivate,\n contextKeysCapacity: this.config.contextKeysCapacity,\n contextKeysFlushIntervalMillis: secondsToMillis(this.config.contextKeysFlushInterval),\n usingProxy: !!((_b = (_a = this.platform.requests).usingProxy) === null || _b === void 0 ? void 0 : _b.call(_a)),\n usingProxyAuthenticator: !!((_d = (_c = this.platform.requests).usingProxyAuth) === null || _d === void 0 ? void 0 : _d.call(_c)),\n diagnosticRecordingIntervalMillis: secondsToMillis(this.config.diagnosticRecordingInterval),\n dataStoreType: (_g = (_f = (_e = this.featureStore).getDescription) === null || _f === void 0 ? void 0 : _f.call(_e)) !== null && _g !== void 0 ? _g : 'memory',\n },\n platform: Object.assign({ name: platformData.name, osArch: (_h = platformData.os) === null || _h === void 0 ? void 0 : _h.arch, osName: (_j = platformData.os) === null || _j === void 0 ? void 0 : _j.name, osVersion: (_k = platformData.os) === null || _k === void 0 ? void 0 : _k.version }, (platformData.additional || {})),\n };\n }\n /**\n * Records a stream connection attempt (called by the stream processor).\n *\n * @param timestamp Time of the *beginning* of the connection attempt.\n * @param failed True if the connection failed, or we got a read timeout before receiving a \"put\".\n * @param durationMillis Elapsed time between starting timestamp and when we either gave up/lost\n * the connection or received a successful \"put\".\n */\n recordStreamInit(timestamp, failed, durationMillis) {\n const item = { timestamp, failed, durationMillis };\n this.streamInits.push(item);\n }\n /**\n * Creates a periodic event containing time-dependent stats, and resets the state of the manager\n * with regard to those stats.\n *\n * Note: the reason droppedEvents, deduplicatedUsers, and eventsInLastBatch are passed into this\n * function, instead of being properties of the DiagnosticsManager, is that the event processor is\n * the one who's calling this function and is also the one who's tracking those stats.\n */\n createStatsEventAndReset(droppedEvents, deduplicatedUsers, eventsInLastBatch) {\n const currentTime = Date.now();\n const evt = {\n kind: 'diagnostic',\n id: this.id,\n creationDate: currentTime,\n dataSinceDate: this.dataSinceDate,\n droppedEvents,\n deduplicatedUsers,\n eventsInLastBatch,\n streamInits: this.streamInits,\n };\n this.streamInits = [];\n this.dataSinceDate = currentTime;\n return evt;\n }\n}\nexports.default = DiagnosticsManager;\n//# sourceMappingURL=DiagnosticsManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nfunction isExperiment(flag, reason) {\n if (reason) {\n // If the reason says we're in an experiment, we are. Otherwise, apply\n // the legacy rule exclusion logic.\n if (reason.inExperiment) {\n return true;\n }\n switch (reason.kind) {\n case 'RULE_MATCH': {\n const index = reason.ruleIndex;\n if (index !== undefined) {\n const rules = flag.rules || [];\n return index >= 0 && index < rules.length && !!rules[index].trackEvents;\n }\n break;\n }\n case 'FALLTHROUGH':\n return !!flag.trackEventsFallthrough;\n default:\n // No action needed.\n }\n }\n return false;\n}\nexports.default = isExperiment;\n//# sourceMappingURL=isExperiment.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst isExperiment_1 = require(\"./isExperiment\");\n/**\n * @internal\n */\nclass EventFactory {\n constructor(withReasons) {\n this.withReasons = withReasons;\n }\n evalEvent(flag, context, detail, defaultVal, prereqOfFlag) {\n var _a;\n const addExperimentData = (0, isExperiment_1.default)(flag, detail.reason);\n return new js_sdk_common_1.internal.InputEvalEvent(this.withReasons, context, flag.key, defaultVal, detail, flag.version, \n // Exclude null as a possibility.\n (_a = detail.variationIndex) !== null && _a !== void 0 ? _a : undefined, flag.trackEvents || addExperimentData, prereqOfFlag === null || prereqOfFlag === void 0 ? void 0 : prereqOfFlag.key, this.withReasons || addExperimentData ? detail.reason : undefined, flag.debugEventsUntilDate);\n }\n unknownFlagEvent(key, context, detail) {\n return new js_sdk_common_1.internal.InputEvalEvent(this.withReasons, context, key, detail.value, detail);\n }\n /* eslint-disable-next-line class-methods-use-this */\n identifyEvent(context) {\n return new js_sdk_common_1.internal.InputIdentifyEvent(context);\n }\n /* eslint-disable-next-line class-methods-use-this */\n customEvent(key, context, data, metricValue) {\n return new js_sdk_common_1.internal.InputCustomEvent(context, key, data !== null && data !== void 0 ? data : undefined, metricValue !== null && metricValue !== void 0 ? metricValue : undefined);\n }\n}\nexports.default = EventFactory;\n//# sourceMappingURL=EventFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst defaultHeaders_1 = require(\"../data_sources/defaultHeaders\");\nconst httpErrorMessage_1 = require(\"../data_sources/httpErrorMessage\");\nconst errors_1 = require(\"../errors\");\nclass EventSender {\n constructor(config, clientContext) {\n this.defaultHeaders = Object.assign({}, (0, defaultHeaders_1.default)(clientContext.basicConfiguration.sdkKey, config, clientContext.platform.info));\n this.eventsUri = `${clientContext.basicConfiguration.serviceEndpoints.events}/bulk`;\n this.diagnosticEventsUri = `${clientContext.basicConfiguration.serviceEndpoints.events}/diagnostic`;\n this.requests = clientContext.platform.requests;\n this.crypto = clientContext.platform.crypto;\n }\n async tryPostingEvents(events, uri, payloadId, canRetry) {\n const tryRes = {\n status: js_sdk_common_1.subsystem.LDDeliveryStatus.Succeeded,\n };\n const headers = Object.assign(Object.assign({}, this.defaultHeaders), { 'content-type': 'application/json' });\n if (payloadId) {\n headers['x-launchdarkly-payload-id'] = payloadId;\n headers['x-launchDarkly-event-schema'] = '4';\n }\n let error;\n try {\n const res = await this.requests.fetch(uri, {\n headers,\n body: JSON.stringify(events),\n method: 'POST',\n });\n const serverDate = Date.parse(res.headers.get('date') || '');\n if (serverDate) {\n tryRes.serverTime = serverDate;\n }\n if (res.status <= 204) {\n return tryRes;\n }\n error = new errors_1.LDUnexpectedResponseError((0, httpErrorMessage_1.default)({ status: res.status, message: 'some events were dropped' }, 'event posting'));\n if (!(0, errors_1.isHttpRecoverable)(res.status)) {\n tryRes.status = js_sdk_common_1.subsystem.LDDeliveryStatus.FailedAndMustShutDown;\n tryRes.error = error;\n return tryRes;\n }\n }\n catch (err) {\n error = err;\n }\n if (error && !canRetry) {\n tryRes.status = js_sdk_common_1.subsystem.LDDeliveryStatus.Failed;\n tryRes.error = error;\n return tryRes;\n }\n await new Promise((r) => {\n setTimeout(r, 1000);\n });\n return this.tryPostingEvents(events, this.eventsUri, payloadId, false);\n }\n async sendEventData(type, data) {\n const payloadId = type === js_sdk_common_1.subsystem.LDEventType.AnalyticsEvents ? this.crypto.randomUUID() : undefined;\n const uri = type === js_sdk_common_1.subsystem.LDEventType.AnalyticsEvents ? this.eventsUri : this.diagnosticEventsUri;\n return this.tryPostingEvents(data, uri, payloadId, true);\n }\n}\nexports.default = EventSender;\n//# sourceMappingURL=EventSender.js.map","\"use strict\";\n// This is an empty implementation, so it doesn't use this, and it has empty methods, and it\n// has unused variables.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Empty event processor implementation for when events are not desired.\n *\n * @internal\n */\nclass NullEventProcessor {\n close() { }\n async flush() { }\n sendEvent(inputEvent) { }\n}\nexports.default = NullEventProcessor;\n//# sourceMappingURL=NullEventProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass FlagsStateBuilder {\n constructor(valid, withReasons) {\n this.valid = valid;\n this.withReasons = withReasons;\n this.flagValues = {};\n this.flagMetadata = {};\n }\n addFlag(flag, value, variation, reason, trackEvents, trackReason, detailsOnlyIfTracked) {\n this.flagValues[flag.key] = value;\n const meta = {};\n if (variation !== undefined) {\n meta.variation = variation;\n }\n const omitDetails = detailsOnlyIfTracked &&\n !trackEvents &&\n !trackReason &&\n flag.debugEventsUntilDate === undefined; // 0 probably doesn't matter.\n if (!omitDetails) {\n meta.version = flag.version;\n }\n if (reason && (trackReason || (this.withReasons && !omitDetails))) {\n meta.reason = reason;\n }\n if (trackEvents) {\n meta.trackEvents = true;\n }\n if (trackReason) {\n meta.trackReason = true;\n }\n if (flag.debugEventsUntilDate !== undefined) {\n meta.debugEventsUntilDate = flag.debugEventsUntilDate;\n }\n this.flagMetadata[flag.key] = meta;\n }\n build() {\n const state = this;\n return {\n valid: state.valid,\n allValues: () => state.flagValues,\n getFlagValue: (key) => state.flagValues[key],\n getFlagReason: (key) => { var _a; return (_a = (state.flagMetadata[key] ? state.flagMetadata[key].reason : null)) !== null && _a !== void 0 ? _a : null; },\n toJSON: () => (Object.assign(Object.assign({}, state.flagValues), { $flagsState: state.flagMetadata, $valid: state.valid })),\n };\n }\n}\nexports.default = FlagsStateBuilder;\n//# sourceMappingURL=FlagsStateBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A basic wrapper to make async methods with callbacks into promises.\n *\n * @param method\n * @returns A promisified version of the method.\n */\nfunction promisify(method) {\n return new Promise((resolve) => {\n method((val) => {\n resolve(val);\n });\n });\n}\nexports.default = promisify;\n//# sourceMappingURL=promisify.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst promisify_1 = require(\"../async/promisify\");\n/**\n * Provides an async interface to a feature store.\n *\n * This allows for using a store using async/await instead of callbacks.\n *\n */\nclass AsyncStoreFacade {\n constructor(store) {\n this.store = store;\n }\n async get(kind, key) {\n return (0, promisify_1.default)((cb) => {\n this.store.get(kind, key, cb);\n });\n }\n async all(kind) {\n return (0, promisify_1.default)((cb) => {\n this.store.all(kind, cb);\n });\n }\n async init(allData) {\n return (0, promisify_1.default)((cb) => {\n this.store.init(allData, cb);\n });\n }\n async delete(kind, key, version) {\n return (0, promisify_1.default)((cb) => {\n this.store.delete(kind, key, version, cb);\n });\n }\n async upsert(kind, data) {\n return (0, promisify_1.default)((cb) => {\n this.store.upsert(kind, data, cb);\n });\n }\n async initialized() {\n return (0, promisify_1.default)((cb) => {\n this.store.initialized(cb);\n });\n }\n close() {\n this.store.close();\n }\n}\nexports.default = AsyncStoreFacade;\n//# sourceMappingURL=AsyncStoreFacade.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-unused-vars */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable class-methods-use-this */\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst BigSegmentsManager_1 = require(\"./BigSegmentsManager\");\nconst ClientMessages_1 = require(\"./ClientMessages\");\nconst DataSourceUpdates_1 = require(\"./data_sources/DataSourceUpdates\");\nconst NullUpdateProcessor_1 = require(\"./data_sources/NullUpdateProcessor\");\nconst PollingProcessor_1 = require(\"./data_sources/PollingProcessor\");\nconst Requestor_1 = require(\"./data_sources/Requestor\");\nconst StreamingProcessor_1 = require(\"./data_sources/StreamingProcessor\");\nconst errors_1 = require(\"./errors\");\nconst collection_1 = require(\"./evaluation/collection\");\nconst ErrorKinds_1 = require(\"./evaluation/ErrorKinds\");\nconst EvalResult_1 = require(\"./evaluation/EvalResult\");\nconst Evaluator_1 = require(\"./evaluation/Evaluator\");\nconst ContextDeduplicator_1 = require(\"./events/ContextDeduplicator\");\nconst DiagnosticsManager_1 = require(\"./events/DiagnosticsManager\");\nconst EventFactory_1 = require(\"./events/EventFactory\");\nconst EventSender_1 = require(\"./events/EventSender\");\nconst isExperiment_1 = require(\"./events/isExperiment\");\nconst NullEventProcessor_1 = require(\"./events/NullEventProcessor\");\nconst FlagsStateBuilder_1 = require(\"./FlagsStateBuilder\");\nconst Configuration_1 = require(\"./options/Configuration\");\nconst AsyncStoreFacade_1 = require(\"./store/AsyncStoreFacade\");\nconst VersionedDataKinds_1 = require(\"./store/VersionedDataKinds\");\nvar InitState;\n(function (InitState) {\n InitState[InitState[\"Initializing\"] = 0] = \"Initializing\";\n InitState[InitState[\"Initialized\"] = 1] = \"Initialized\";\n InitState[InitState[\"Failed\"] = 2] = \"Failed\";\n})(InitState || (InitState = {}));\n/**\n * @ignore\n */\nclass LDClientImpl {\n constructor(sdkKey, platform, options, callbacks) {\n var _a, _b, _c, _d, _e;\n this.sdkKey = sdkKey;\n this.platform = platform;\n this.initState = InitState.Initializing;\n this.eventFactoryDefault = new EventFactory_1.default(false);\n this.eventFactoryWithReasons = new EventFactory_1.default(true);\n this.onError = callbacks.onError;\n this.onFailed = callbacks.onFailed;\n this.onReady = callbacks.onReady;\n const { onUpdate, hasEventListeners } = callbacks;\n const config = new Configuration_1.default(options);\n if (!sdkKey && !config.offline) {\n throw new Error('You must configure the client with an SDK key');\n }\n this.config = config;\n this.logger = config.logger;\n const clientContext = new js_sdk_common_1.ClientContext(sdkKey, config, platform);\n const featureStore = config.featureStoreFactory(clientContext);\n const dataSourceUpdates = new DataSourceUpdates_1.default(featureStore, hasEventListeners, onUpdate);\n if (config.sendEvents && !config.offline && !config.diagnosticOptOut) {\n this.diagnosticsManager = new DiagnosticsManager_1.default(sdkKey, config, platform, featureStore);\n }\n const makeDefaultProcessor = () => config.stream\n ? new StreamingProcessor_1.default(sdkKey, config, this.platform.requests, this.platform.info, dataSourceUpdates, this.diagnosticsManager)\n : new PollingProcessor_1.default(config, new Requestor_1.default(sdkKey, config, this.platform.info, this.platform.requests), dataSourceUpdates);\n if (config.offline || config.useLdd) {\n this.updateProcessor = new NullUpdateProcessor_1.default();\n }\n else {\n this.updateProcessor =\n (_b = (_a = config.updateProcessorFactory) === null || _a === void 0 ? void 0 : _a.call(config, clientContext, dataSourceUpdates)) !== null && _b !== void 0 ? _b : makeDefaultProcessor();\n }\n if (!config.sendEvents || config.offline) {\n this.eventProcessor = new NullEventProcessor_1.default();\n }\n else {\n this.eventProcessor = new js_sdk_common_1.internal.EventProcessor(config, clientContext, new EventSender_1.default(config, clientContext), new ContextDeduplicator_1.default(config), this.diagnosticsManager);\n }\n const asyncFacade = new AsyncStoreFacade_1.default(featureStore);\n this.featureStore = asyncFacade;\n const manager = new BigSegmentsManager_1.default((_d = (_c = config.bigSegments) === null || _c === void 0 ? void 0 : _c.store) === null || _d === void 0 ? void 0 : _d.call(_c, clientContext), (_e = config.bigSegments) !== null && _e !== void 0 ? _e : {}, config.logger, this.platform.crypto);\n this.bigSegmentsManager = manager;\n this.bigSegmentStatusProviderInternal = manager.statusProvider;\n const queries = {\n async getFlag(key) {\n var _a;\n return (_a = (await asyncFacade.get(VersionedDataKinds_1.default.Features, key))) !== null && _a !== void 0 ? _a : undefined;\n },\n async getSegment(key) {\n var _a;\n return (_a = (await asyncFacade.get(VersionedDataKinds_1.default.Segments, key))) !== null && _a !== void 0 ? _a : undefined;\n },\n getBigSegmentsMembership(userKey) {\n return manager.getUserMembership(userKey);\n },\n };\n this.evaluator = new Evaluator_1.default(this.platform, queries);\n this.updateProcessor.start((err) => {\n var _a, _b;\n if (err) {\n let error;\n if ((err.status && err.status === 401) || (err.code && err.code === 401)) {\n error = new Error('Authentication failed. Double check your SDK key.');\n }\n else {\n error = err;\n }\n this.onError(error);\n this.onFailed(error);\n (_a = this.initReject) === null || _a === void 0 ? void 0 : _a.call(this, error);\n this.initState = InitState.Failed;\n }\n else if (!this.initialized()) {\n this.initState = InitState.Initialized;\n (_b = this.initResolve) === null || _b === void 0 ? void 0 : _b.call(this, this);\n this.onReady();\n }\n });\n }\n initialized() {\n return this.initState === InitState.Initialized;\n }\n waitForInitialization() {\n if (this.initState === InitState.Initialized) {\n return Promise.resolve(this);\n }\n if (!this.initializedPromise) {\n this.initializedPromise = new Promise((resolve, reject) => {\n this.initResolve = resolve;\n this.initReject = reject;\n });\n }\n return this.initializedPromise;\n }\n async variation(key, context, defaultValue, callback) {\n const res = await this.evaluateIfPossible(key, context, defaultValue, this.eventFactoryDefault);\n if (!callback) {\n return res.detail.value;\n }\n callback(null, res.detail.value);\n return undefined;\n }\n async variationDetail(key, context, defaultValue, callback) {\n const res = await this.evaluateIfPossible(key, context, defaultValue, this.eventFactoryWithReasons);\n callback === null || callback === void 0 ? void 0 : callback(null, res.detail);\n return res.detail;\n }\n async allFlagsState(context, options, callback) {\n var _a, _b, _c, _d, _e;\n if (this.config.offline) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('allFlagsState() called in offline mode. Returning empty state.');\n const allFlagState = new FlagsStateBuilder_1.default(false, false).build();\n callback === null || callback === void 0 ? void 0 : callback(null, allFlagState);\n return allFlagState;\n }\n const evalContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!evalContext.valid) {\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.info(`${(_c = evalContext.message) !== null && _c !== void 0 ? _c : 'Invalid context.'}. Returning empty state.`);\n return new FlagsStateBuilder_1.default(false, false).build();\n }\n let valid = true;\n if (!this.initialized()) {\n const storeInitialized = await this.featureStore.initialized();\n if (storeInitialized) {\n (_d = this.logger) === null || _d === void 0 ? void 0 : _d.warn('Called allFlagsState before client initialization; using last known' +\n ' values from data store');\n }\n else {\n (_e = this.logger) === null || _e === void 0 ? void 0 : _e.warn('Called allFlagsState before client initialization. Data store not available; ' +\n 'returning empty state');\n valid = false;\n }\n }\n const builder = new FlagsStateBuilder_1.default(valid, !!(options === null || options === void 0 ? void 0 : options.withReasons));\n const clientOnly = !!(options === null || options === void 0 ? void 0 : options.clientSideOnly);\n const detailsOnlyIfTracked = !!(options === null || options === void 0 ? void 0 : options.detailsOnlyForTrackedFlags);\n const allFlags = await this.featureStore.all(VersionedDataKinds_1.default.Features);\n await (0, collection_1.allSeriesAsync)(Object.values(allFlags), async (storeItem) => {\n var _a;\n const flag = storeItem;\n if (clientOnly && !flag.clientSide) {\n return true;\n }\n const res = await this.evaluator.evaluate(flag, evalContext);\n if (res.isError) {\n this.onError(new Error(`Error for feature flag \"${flag.key}\" while evaluating all flags: ${res.message}`));\n }\n const requireExperimentData = (0, isExperiment_1.default)(flag, res.detail.reason);\n builder.addFlag(flag, res.detail.value, (_a = res.detail.variationIndex) !== null && _a !== void 0 ? _a : undefined, res.detail.reason, flag.trackEvents || requireExperimentData, requireExperimentData, detailsOnlyIfTracked);\n return true;\n });\n const res = builder.build();\n callback === null || callback === void 0 ? void 0 : callback(null, res);\n return res;\n }\n secureModeHash(context) {\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n const key = checkedContext.valid ? checkedContext.canonicalKey : undefined;\n const hmac = this.platform.crypto.createHmac('sha256', this.sdkKey);\n if (key === undefined) {\n throw new errors_1.LDClientError('Could not generate secure mode hash for invalid context');\n }\n hmac.update(key);\n return hmac.digest('hex');\n }\n close() {\n this.eventProcessor.close();\n this.updateProcessor.close();\n this.featureStore.close();\n this.bigSegmentsManager.close();\n }\n isOffline() {\n return this.config.offline;\n }\n track(key, context, data, metricValue) {\n var _a;\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!checkedContext.valid) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages_1.default.missingContextKeyNoEvent);\n return;\n }\n this.eventProcessor.sendEvent(this.eventFactoryDefault.customEvent(key, checkedContext, data, metricValue));\n }\n identify(context) {\n var _a;\n const checkedContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!checkedContext.valid) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(ClientMessages_1.default.missingContextKeyNoEvent);\n return;\n }\n this.eventProcessor.sendEvent(this.eventFactoryDefault.identifyEvent(checkedContext));\n }\n async flush(callback) {\n try {\n await this.eventProcessor.flush();\n }\n catch (err) {\n callback === null || callback === void 0 ? void 0 : callback(err, false);\n }\n callback === null || callback === void 0 ? void 0 : callback(null, true);\n }\n async variationInternal(flagKey, context, defaultValue, eventFactory) {\n var _a, _b, _c, _d;\n if (this.config.offline) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info('Variation called in offline mode. Returning default value.');\n return EvalResult_1.default.forError(ErrorKinds_1.default.ClientNotReady, undefined, defaultValue);\n }\n const evalContext = js_sdk_common_1.Context.fromLDContext(context);\n if (!evalContext.valid) {\n this.onError(new errors_1.LDClientError(`${(_b = evalContext.message) !== null && _b !== void 0 ? _b : 'Context not valid;'} returning default value.`));\n return EvalResult_1.default.forError(ErrorKinds_1.default.UserNotSpecified, undefined, defaultValue);\n }\n const flag = (await this.featureStore.get(VersionedDataKinds_1.default.Features, flagKey));\n if (!flag) {\n const error = new errors_1.LDClientError(`Unknown feature flag \"${flagKey}\"; returning default value`);\n this.onError(error);\n const result = EvalResult_1.default.forError(ErrorKinds_1.default.FlagNotFound, undefined, defaultValue);\n this.eventProcessor.sendEvent(this.eventFactoryDefault.unknownFlagEvent(flagKey, evalContext, result.detail));\n return result;\n }\n const evalRes = await this.evaluator.evaluate(flag, evalContext, eventFactory);\n if (evalRes.detail.variationIndex === undefined || evalRes.detail.variationIndex === null) {\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Result value is null in variation');\n evalRes.setDefault(defaultValue);\n }\n (_d = evalRes.events) === null || _d === void 0 ? void 0 : _d.forEach((event) => {\n this.eventProcessor.sendEvent(event);\n });\n this.eventProcessor.sendEvent(eventFactory.evalEvent(flag, evalContext, evalRes.detail, defaultValue));\n return evalRes;\n }\n async evaluateIfPossible(flagKey, context, defaultValue, eventFactory) {\n var _a, _b;\n if (!this.initialized()) {\n const storeInitialized = await this.featureStore.initialized();\n if (storeInitialized) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('Variation called before LaunchDarkly client initialization completed' +\n \" (did you wait for the 'ready' event?) - using last known values from feature store\");\n return this.variationInternal(flagKey, context, defaultValue, eventFactory);\n }\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.warn('Variation called before LaunchDarkly client initialization completed (did you wait for the' +\n \"'ready' event?) - using default value\");\n return EvalResult_1.default.forError(ErrorKinds_1.default.ClientNotReady, undefined, defaultValue);\n }\n return this.variationInternal(flagKey, context, defaultValue, eventFactory);\n }\n}\nexports.default = LDClientImpl;\n//# sourceMappingURL=LDClientImpl.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A debounced file load/watcher for use with the {@link FileDataSource}.\n *\n * The file loader will load all files specified and keep the string representations in memory.\n * Whenever a change is made to any of the files, then that file will be reloaded and the in\n * memory version updated.\n *\n * Updates to many files, which occur within 10ms of each other, will be coalesced into\n * a single callback.\n *\n * @internal\n */\nclass FileLoader {\n constructor(filesystem, paths, watch, callback) {\n this.filesystem = filesystem;\n this.paths = paths;\n this.watch = watch;\n this.callback = callback;\n this.watchers = [];\n this.fileData = {};\n this.fileTimestamps = {};\n }\n /**\n * Load all the files and start watching them if watching is enabled.\n */\n async loadAndWatch() {\n const promises = this.paths.map(async (path) => {\n const data = await this.filesystem.readFile(path);\n const timeStamp = await this.filesystem.getFileTimestamp(path);\n return { data, path, timeStamp };\n });\n // This promise could be rejected, let the caller handle it.\n const results = await Promise.all(promises);\n results.forEach((res) => {\n this.fileData[res.path] = res.data;\n this.fileTimestamps[res.path] = res.timeStamp;\n });\n this.callback(results);\n // If we are watching, then setup watchers and notify of any changes.\n if (this.watch) {\n this.paths.forEach((path) => {\n const watcher = this.filesystem.watch(path, async (_, updatePath) => {\n const timeStamp = await this.filesystem.getFileTimestamp(updatePath);\n // The modification time is the same, so we are going to ignore this update.\n // In some implementations watch might be triggered multiple times for a single update.\n if (timeStamp === this.fileTimestamps[updatePath]) {\n return;\n }\n this.fileTimestamps[updatePath] = timeStamp;\n const data = await this.filesystem.readFile(updatePath);\n this.fileData[updatePath] = data;\n this.debounceCallback();\n });\n this.watchers.push(watcher);\n });\n }\n }\n close() {\n this.watchers.forEach((watcher) => watcher.close());\n }\n debounceCallback() {\n // If there is a handle, then we have already started the debounce process.\n if (!this.debounceHandle) {\n this.debounceHandle = setTimeout(() => {\n this.debounceHandle = undefined;\n this.callback(Object.entries(this.fileData).reduce((acc, [path, data]) => {\n acc.push({ path, data });\n return acc;\n }, []));\n }, 10);\n // The 10ms delay above is arbitrary - we just don't want to have the number be zero,\n // because in a case where multiple watch events are fired off one after another,\n // we want the reload to happen only after all of the event handlers have executed.\n }\n }\n}\nexports.default = FileLoader;\n//# sourceMappingURL=FileLoader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst serialization_1 = require(\"../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../store/VersionedDataKinds\");\nconst FileLoader_1 = require(\"./FileLoader\");\nfunction makeFlagWithValue(key, value) {\n return {\n key,\n on: true,\n fallthrough: { variation: 0 },\n variations: [value],\n version: 1,\n };\n}\nclass FileDataSource {\n /**\n * This is internal because we want instances to only be created with the\n * factory.\n * @internal\n */\n constructor(options, filesystem, featureStore) {\n var _a;\n this.featureStore = featureStore;\n this.allData = {};\n this.fileLoader = new FileLoader_1.default(filesystem, options.paths, (_a = options.autoUpdate) !== null && _a !== void 0 ? _a : false, (results) => {\n var _a, _b;\n // Whenever changes are detected we re-process all of the data.\n // The FileLoader will have handled debouncing for us.\n try {\n this.processFileData(results);\n }\n catch (err) {\n // If this was during start, then the initCallback will be present.\n (_a = this.initCallback) === null || _a === void 0 ? void 0 : _a.call(this, err);\n (_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Error processing files: ${err}`);\n }\n });\n this.logger = options.logger;\n this.yamlParser = options.yamlParser;\n }\n start(fn) {\n this.initCallback = fn;\n // Use an immediately invoked function expression to allow handling of the\n // async loading without making start async itself.\n (async () => {\n try {\n await this.fileLoader.loadAndWatch();\n }\n catch (err) {\n // There was an issue loading/watching the files.\n // Report back to the caller.\n fn === null || fn === void 0 ? void 0 : fn(err);\n }\n })();\n }\n stop() {\n this.fileLoader.close();\n }\n close() {\n this.stop();\n }\n addItem(kind, item) {\n if (!this.allData[kind.namespace]) {\n this.allData[kind.namespace] = {};\n }\n if (this.allData[kind.namespace][item.key]) {\n throw new Error(`found duplicate key: \"${item.key}\"`);\n }\n else {\n this.allData[kind.namespace][item.key] = item;\n }\n }\n processFileData(fileData) {\n // Clear any existing data before re-populating it.\n this.allData = {};\n // We let the parsers throw, and the caller can handle the rejection.\n fileData.forEach((fd) => {\n let parsed;\n if (fd.path.endsWith('.yml') || fd.path.endsWith('.yaml')) {\n if (this.yamlParser) {\n parsed = this.yamlParser(fd.data);\n }\n else {\n throw new Error(`Attempted to parse yaml file (${fd.path}) without parser.`);\n }\n }\n else {\n parsed = JSON.parse(fd.data);\n }\n this.processParsedData(parsed);\n });\n this.featureStore.init(this.allData, () => {\n var _a;\n // Call the init callback if present.\n // Then clear the callback so we cannot call it again.\n (_a = this.initCallback) === null || _a === void 0 ? void 0 : _a.call(this);\n this.initCallback = undefined;\n });\n }\n processParsedData(parsed) {\n Object.keys(parsed.flags || {}).forEach((key) => {\n (0, serialization_1.processFlag)(parsed.flags[key]);\n this.addItem(VersionedDataKinds_1.default.Features, parsed.flags[key]);\n });\n Object.keys(parsed.flagValues || {}).forEach((key) => {\n const flag = makeFlagWithValue(key, parsed.flagValues[key]);\n (0, serialization_1.processFlag)(flag);\n this.addItem(VersionedDataKinds_1.default.Features, flag);\n });\n Object.keys(parsed.segments || {}).forEach((key) => {\n (0, serialization_1.processSegment)(parsed.segments[key]);\n this.addItem(VersionedDataKinds_1.default.Segments, parsed.segments[key]);\n });\n }\n}\nexports.default = FileDataSource;\n//# sourceMappingURL=FileDataSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst FileDataSource_1 = require(\"../data_sources/FileDataSource\");\n/**\n * Class for creating file data sources.\n */\nclass FileDataSourceFactory {\n constructor(options) {\n this.options = options;\n }\n /**\n * Method for creating instances of the file data source. This method is intended to be used\n * by the SDK.\n *\n * @param config SDK configuration required by the file data source.\n * @param filesystem Platform abstraction used for filesystem access.\n * @returns a {@link FileDataSource}\n *\n * @internal\n */\n create(ldClientContext, featureStore) {\n const updatedOptions = {\n paths: this.options.paths,\n autoUpdate: this.options.autoUpdate,\n logger: this.options.logger || ldClientContext.basicConfiguration.logger,\n yamlParser: this.options.yamlParser,\n };\n return new FileDataSource_1.default(updatedOptions, ldClientContext.platform.fileSystem, featureStore);\n }\n getFactory() {\n return (ldClientContext, featureStore) => this.create(ldClientContext, featureStore);\n }\n}\nexports.default = FileDataSourceFactory;\n//# sourceMappingURL=FileDataSourceFactory.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variationForBoolean = exports.FALSE_VARIATION_INDEX = exports.TRUE_VARIATION_INDEX = void 0;\nexports.TRUE_VARIATION_INDEX = 0;\nexports.FALSE_VARIATION_INDEX = 1;\n/**\n * @internal\n */\nfunction variationForBoolean(val) {\n return val ? exports.TRUE_VARIATION_INDEX : exports.FALSE_VARIATION_INDEX;\n}\nexports.variationForBoolean = variationForBoolean;\n//# sourceMappingURL=booleanVariation.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst booleanVariation_1 = require(\"./booleanVariation\");\n/**\n * A builder for feature flag rules to be used with {@link TestDataFlagBuilder}.\n *\n * In the LaunchDarkly model, a flag can have any number of rules, and\n * a rule can have any number of clauses. A clause is an individual test\n * such as \"name is 'X'\". A rule matches a user if all of the rule's\n * clauses match the user.\n *\n * To start defining a rule, use one of the flag builder's matching methods\n * such as `ifMatch`. This defines the first clause for the rule. Optionally,\n * you may add more clauses with the rule builder's methods such as `andMatch`.\n * Finally, call `thenReturn` to finish defining the rule.\n */\nclass TestDataRuleBuilder {\n /**\n * @internal\n */\n constructor(flagBuilder, clauses, variation) {\n this.flagBuilder = flagBuilder;\n this.clauses = [];\n if (clauses) {\n this.clauses = [...clauses];\n }\n if (variation !== undefined) {\n this.variation = variation;\n }\n }\n /**\n * Adds another clause using the \"is one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * \"Patsy\" and the country is \"gb\":\n *\n * testData.flag('flag')\n * .ifMatch('name', 'Patsy')\n * .andMatch('country', 'gb')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return the flag rule builder\n */\n andMatch(contextKind, attribute, ...values) {\n this.clauses.push({\n contextKind,\n attribute,\n attributeReference: new js_sdk_common_1.AttributeReference(attribute),\n op: 'in',\n values,\n negate: false,\n });\n return this;\n }\n /**\n * Adds another clause using the \"is not one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * \"Patsy\" and the country is not \"gb\":\n *\n * testData.flag('flag')\n * .ifMatch('name', 'Patsy')\n * .andNotMatch('country', 'gb')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return the flag rule builder\n */\n andNotMatch(contextKind, attribute, ...values) {\n this.clauses.push({\n contextKind,\n attribute,\n attributeReference: new js_sdk_common_1.AttributeReference(attribute),\n op: 'in',\n values,\n negate: true,\n });\n return this;\n }\n /**\n * Finishes defining the rule, specifying the result value as either a boolean or an index\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag rule builder\n */\n thenReturn(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n this.flagBuilder.booleanFlag();\n return this.thenReturn((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.variation = variation;\n this.flagBuilder.addRule(this);\n return this.flagBuilder;\n }\n /**\n * @internal\n */\n build(id) {\n return {\n id: `rule${id}`,\n variation: this.variation,\n clauses: this.clauses,\n };\n }\n /**\n * @internal\n */\n clone() {\n return new TestDataRuleBuilder(this.flagBuilder, this.clauses, this.variation);\n }\n}\nexports.default = TestDataRuleBuilder;\n//# sourceMappingURL=TestDataRuleBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst js_sdk_common_1 = require(\"@launchdarkly/js-sdk-common\");\nconst booleanVariation_1 = require(\"./booleanVariation\");\nconst TestDataRuleBuilder_1 = require(\"./TestDataRuleBuilder\");\n/**\n * A builder for feature flag configurations to be used with {@link TestData}.\n */\nclass TestDataFlagBuilder {\n /**\n * @internal\n */\n constructor(key, data) {\n this.key = key;\n this.data = {\n on: true,\n variations: [],\n };\n if (data) {\n // Not the fastest way to deep copy, but this is a testing mechanism.\n this.data = {\n on: data.on,\n variations: [...data.variations],\n };\n if (data.offVariation !== undefined) {\n this.data.offVariation = data.offVariation;\n }\n if (data.fallthroughVariation !== undefined) {\n this.data.fallthroughVariation = data.fallthroughVariation;\n }\n if (data.targetsByVariation) {\n this.data.targetsByVariation = JSON.parse(JSON.stringify(data.targetsByVariation));\n }\n if (data.rules) {\n this.data.rules = [];\n data.rules.forEach((rule) => {\n var _a;\n (_a = this.data.rules) === null || _a === void 0 ? void 0 : _a.push(rule.clone());\n });\n }\n }\n }\n get isBooleanFlag() {\n return (this.data.variations.length === 2 &&\n this.data.variations[booleanVariation_1.TRUE_VARIATION_INDEX] === true &&\n this.data.variations[booleanVariation_1.FALSE_VARIATION_INDEX] === false);\n }\n /**\n * A shortcut for setting the flag to use the standard boolean configuration.\n *\n * This is the default for all new flags created with {@link TestData.flag}. The\n * flag will have two variations, `true` and `false` (in that order). It\n * will return `false` whenever targeting is off and `true` when targeting\n * is on unless other settings specify otherwise.\n *\n * @return the flag builder\n */\n booleanFlag() {\n if (this.isBooleanFlag) {\n return this;\n }\n // Change this flag into a boolean flag.\n return this.variations(true, false)\n .fallthroughVariation(booleanVariation_1.TRUE_VARIATION_INDEX)\n .offVariation(booleanVariation_1.FALSE_VARIATION_INDEX);\n }\n /**\n * Sets the allowable variation values for the flag.\n *\n * The values may be of any JSON-compatible type: boolean, number, string, array,\n * or object. For instance, a boolean flag normally has `variations(true, false)`;\n * a string-valued flag might have `variations(\"red\", \"green\")`; etc.\n *\n * @param values any number of variation values\n * @return the flag builder\n */\n variations(...values) {\n this.data.variations = [...values];\n return this;\n }\n /**\n * Sets targeting to be on or off for this flag.\n *\n * The effect of this depends on the rest of the flag configuration, just\n * as it does on the real LaunchDarkly dashboard. In the default configuration\n * that you get from calling {@link TestData.flag} with a new flag key, the flag\n * will return `false` whenever targeting is off and `true` when targeting\n * is on.\n *\n * @param targetingOn true if targeting should be on\n * @return the flag builder\n */\n on(targetingOn) {\n this.data.on = targetingOn;\n return this;\n }\n /**\n * Specifies the fallthrough variation for a flag. The fallthrough is\n * the value that is returned if targeting is on and the user was not\n * matched by a more specific target or rule.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param variation\n * either `true` or `false` or the index of the desired fallthrough\n * variation: 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n fallthroughVariation(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().fallthroughVariation((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.data.fallthroughVariation = variation;\n return this;\n }\n /**\n * Specifies the off variation for a flag. This is the variation that is\n * returned whenever targeting is off.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param variation\n * either `true` or `false` or the index of the desired off\n * variation: 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n offVariation(variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().offVariation((0, booleanVariation_1.variationForBoolean)(variation));\n }\n this.data.offVariation = variation;\n return this;\n }\n /**\n * Sets the flag to always return the specified variation for all contexts.\n *\n * Targeting is switched on, any existing targets or rules are removed,\n * and the fallthrough variation is set to the specified value. The off\n * variation is left unchanged.\n *\n * If a boolean is supplied, and the flag was previously configured with\n * other variations, this also changes it to a boolean flag.\n *\n * @param varation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForAll(variation) {\n return this.on(true).clearRules().clearAllTargets().fallthroughVariation(variation);\n }\n /**\n * Sets the flag to always return the specified variation value for all contexts.\n *\n * The value may be of any valid JSON type. This method changes the flag to have\n * only a single variation, which is this value, and to return the same variation\n * regardless of whether targeting is on or off. Any existing targets or rules\n * are removed.\n *\n * @param value The desired value to be returned for all contexts.\n * @return the flag builder\n */\n valueForAll(value) {\n return this.variations(value).variationForAll(0);\n }\n /**\n * Sets the flag to return the specified variation for a specific context key\n * when targeting is on. The context kind for contexts created with this method\n * will be 'user'.\n *\n * This has no effect when targeting is turned off for the flag.\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param contextKey a context key\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForUser(contextKey, variation) {\n return this.variationForContext('user', contextKey, variation);\n }\n /**\n * Sets the flag to return the specified variation for a specific context key\n * when targeting is on.\n *\n * This has no effect when targeting is turned off for the flag.\n *\n * If the variation is a boolean value and the flag was not already a boolean\n * flag, this also changes it to be a boolean flag.\n *\n * If the variation is an integer, it specifies a variation out of whatever\n * variation values have already been defined.\n *\n * @param contextKind a context kind\n * @param contextKey a context key\n * @param variation\n * either `true` or `false` or the index of the desired variation:\n * 0 for the first, 1 for the second, etc.\n * @return the flag builder\n */\n variationForContext(contextKind, contextKey, variation) {\n if (js_sdk_common_1.TypeValidators.Boolean.is(variation)) {\n return this.booleanFlag().variationForContext(contextKind, contextKey, (0, booleanVariation_1.variationForBoolean)(variation));\n }\n if (!this.data.targetsByVariation) {\n this.data.targetsByVariation = {};\n }\n this.data.variations.forEach((_, i) => {\n if (i === variation) {\n // If there is nothing set at the current variation then set it to the empty array\n const targetsForVariation = this.data.targetsByVariation[i] || {};\n if (!(contextKind in targetsForVariation)) {\n targetsForVariation[contextKind] = [];\n }\n const exists = targetsForVariation[contextKind].indexOf(contextKey) !== -1;\n // Add context to current variation set if they aren't already there\n if (!exists) {\n targetsForVariation[contextKind].push(contextKey);\n }\n this.data.targetsByVariation[i] = targetsForVariation;\n }\n else {\n // remove user from other variation set if necessary\n const targetsForVariation = this.data.targetsByVariation[i];\n if (targetsForVariation) {\n const targetsForContextKind = targetsForVariation[contextKind];\n if (targetsForContextKind) {\n const targetIndex = targetsForContextKind.indexOf(contextKey);\n if (targetIndex !== -1) {\n targetsForContextKind.splice(targetIndex, 1);\n if (!targetsForContextKind.length) {\n delete targetsForVariation[contextKind];\n }\n }\n }\n if (!Object.keys(targetsForVariation).length) {\n delete this.data.targetsByVariation[i];\n }\n }\n }\n });\n return this;\n }\n /**\n * Removes any existing rules from the flag. This undoes the effect of methods\n * like {@link ifMatch}.\n *\n * @return the same flag builder\n */\n clearRules() {\n delete this.data.rules;\n return this;\n }\n /**\n * Removes any existing targets from the flag. This undoes the effect of\n * methods like {@link variationForContext}.\n *\n * @return the same flag builder\n */\n clearAllTargets() {\n delete this.data.targetsByVariation;\n return this;\n }\n /**\n * Starts defining a flag rule using the \"is one of\" operator.\n *\n * For example, this creates a rule that returnes `true` if the name is\n * \"Patsy\" or \"Edina\":\n *\n * testData.flag('flag')\n * .ifMatch('user', name', 'Patsy', 'Edina')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the context attribute to match against\n * @param values values to compare to\n * @return\n * a flag rule builder; call `thenReturn` to finish the rule\n * or add more tests with another method like `andMatch`\n */\n ifMatch(contextKind, attribute, ...values) {\n const flagRuleBuilder = new TestDataRuleBuilder_1.default(this);\n return flagRuleBuilder.andMatch(contextKind, attribute, ...values);\n }\n /**\n * Starts defining a flag rule using the \"is not one of\" operator.\n *\n * For example, this creates a rule that returns `true` if the name is\n * neither \"Saffron\" nor \"Bubble\":\n *\n * testData.flag('flag')\n * .ifNotMatch('user', 'name', 'Saffron', 'Bubble')\n * .thenReturn(true)\n *\n * @param contextKind the kind of the context\n * @param attribute the user attribute to match against\n * @param values values to compare to\n * @return\n * a flag rule builder; call `thenReturn` to finish the rule\n * or add more tests with another method like `andNotMatch`\n */\n ifNotMatch(contextKind, attribute, ...values) {\n const flagRuleBuilder = new TestDataRuleBuilder_1.default(this);\n return flagRuleBuilder.andNotMatch(contextKind, attribute, ...values);\n }\n /**\n * @internal\n */\n addRule(flagRuleBuilder) {\n if (!this.data.rules) {\n this.data.rules = [];\n }\n this.data.rules.push(flagRuleBuilder);\n }\n /**\n * @internal\n */\n build(version) {\n const baseFlagObject = {\n key: this.key,\n version,\n on: this.data.on,\n offVariation: this.data.offVariation,\n fallthrough: {\n variation: this.data.fallthroughVariation,\n },\n variations: [...this.data.variations],\n };\n if (this.data.targetsByVariation) {\n const contextTargets = [];\n const userTargets = [];\n Object.entries(this.data.targetsByVariation).forEach(([variation, contextTargetsForVariation]) => {\n Object.entries(contextTargetsForVariation).forEach(([contextKind, values]) => {\n const numberVariation = parseInt(variation, 10);\n contextTargets.push({\n contextKind,\n values: contextKind === 'user' ? [] : values,\n // Iterating the object it will be a string.\n variation: numberVariation,\n });\n if (contextKind === 'user') {\n userTargets.push({ values, variation: numberVariation });\n }\n });\n });\n baseFlagObject.targets = userTargets;\n baseFlagObject.contextTargets = contextTargets;\n }\n if (this.data.rules) {\n baseFlagObject.rules = this.data.rules.map((rule, i) => rule.build(String(i)));\n }\n return baseFlagObject;\n }\n /**\n * @internal\n */\n clone() {\n return new TestDataFlagBuilder(this.key, this.data);\n }\n /**\n * @internal\n */\n getKey() {\n return this.key;\n }\n}\nexports.default = TestDataFlagBuilder;\n//# sourceMappingURL=TestDataFlagBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst VersionedDataKinds_1 = require(\"../../store/VersionedDataKinds\");\n/**\n * @internal\n */\nclass TestDataSource {\n constructor(featureStore, flags, segments, onStop) {\n this.featureStore = featureStore;\n this.flags = flags;\n this.segments = segments;\n this.onStop = onStop;\n }\n async start(fn) {\n await this.featureStore.init({\n [VersionedDataKinds_1.default.Features.namespace]: Object.assign({}, this.flags),\n [VersionedDataKinds_1.default.Segments.namespace]: Object.assign({}, this.segments),\n });\n fn === null || fn === void 0 ? void 0 : fn();\n }\n stop() {\n this.onStop(this);\n }\n close() {\n this.stop();\n }\n async upsert(kind, value) {\n return this.featureStore.upsert(kind, value);\n }\n}\nexports.default = TestDataSource;\n//# sourceMappingURL=TestDataSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AsyncStoreFacade_1 = require(\"../../store/AsyncStoreFacade\");\nconst serialization_1 = require(\"../../store/serialization\");\nconst VersionedDataKinds_1 = require(\"../../store/VersionedDataKinds\");\nconst TestDataFlagBuilder_1 = require(\"./TestDataFlagBuilder\");\nconst TestDataSource_1 = require(\"./TestDataSource\");\n/**\n * A mechanism for providing dynamically updatable feature flag state in a simplified form to an SDK\n * client in test scenarios.\n *\n * Unlike `FileData`, this mechanism does not use any external resources. It provides only the\n * data that the application has put into it using the {@link TestData.update} method.\n *\n * ```\n * // Import TestData from the integrations package of the SDK you are using.\n * // This is a common implementation and may be used in multiple SDKs.\n *\n * const td = TestData();\n * testData.update(td.flag(\"flag-key-1\").booleanFlag().variationForAll(true));\n * // Use the initialization mechanism specified by your SDK.\n * const client = LDClient.init(sdkKey, { updateProcessor: td.getFactory() });\n *\n * // flags can be updated at any time:\n * td.update(td.flag(\"flag-key-2\")\n * .variationForContext(\"user\", \"some-user-key\", true)\n * .fallthroughVariation(false));\n * ```\n *\n * The above example uses a simple boolean flag, but more complex configurations are possible using\n * the methods of the {@link TestDataFlagBuilder} that is returned by {@link TestData.flag}.\n * {@link TestDataFlagBuilder} supports many of the ways a flag can be configured on the\n * LaunchDarkly dashboard, but does not currently support\n * 1. rule operators other than \"in\" and \"not in\", or\n * 2. percentage rollouts.\n *\n * If the same `TestData` instance is used to configure multiple `LDClient` instances,\n * any changes made to the data will propagate to all of the `LDClient`s.\n */\nclass TestData {\n constructor() {\n this.currentFlags = {};\n this.currentSegments = {};\n this.dataSources = [];\n this.flagBuilders = {};\n }\n /**\n * Get a factory for update processors that will be attached to this TestData instance.\n * @returns An update processor factory.\n */\n getFactory() {\n // Provides an arrow function to prevent needed to bind the method to\n // maintain `this`.\n return (\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n clientContext, featureStore) => {\n const newSource = new TestDataSource_1.default(new AsyncStoreFacade_1.default(featureStore), this.currentFlags, this.currentSegments, (tds) => {\n this.dataSources.splice(this.dataSources.indexOf(tds));\n });\n this.dataSources.push(newSource);\n return newSource;\n };\n }\n /**\n * Creates or copies a {@link TestDataFlagBuilder} for building a test flag configuration.\n *\n * If the flag key has already been defined in this `TestData` instance,\n * then the builder starts with the same configuration that was last\n * provided for this flag.\n *\n * Otherwise, it starts with a new default configuration in which the flag\n * has `true` and `false` variations, is `true` for all users when targeting\n * is turned on and `false` otherwise, and currently has targeting turned on.\n * You can change any of those properties and provide more complex behavior\n * using the `TestDataFlagBuilder` methods.\n *\n * Once you have set the desired configuration, pass the builder to\n * {@link TestData.update}.\n *\n * @param key the flag key\n * @returns a flag configuration builder\n *\n */\n flag(key) {\n if (this.flagBuilders[key]) {\n return this.flagBuilders[key].clone();\n }\n return new TestDataFlagBuilder_1.default(key).booleanFlag();\n }\n /**\n * Updates the test data with the specified flag configuration.\n *\n * This has the same effect as if a flag were added or modified in the\n * LaunchDarkly dashboard. It immediately propagates the flag changes to\n * any `LDClient` instance(s) that you have already configured to use\n * this `TestData`. If no `LDClient` has been started yet, it simply adds\n * this flag to the test data which will be provided to any `LDClient`\n * that you subsequently configure.\n *\n * Any subsequent changes to this `TestDataFlagBuilder` instance do not affect\n * the test data unless you call `update` again.\n *\n * @param flagBuilder a flag configuration builder\n * @return a promise that will resolve when the feature stores are updated\n */\n update(flagBuilder) {\n const flagKey = flagBuilder.getKey();\n const oldItem = this.currentFlags[flagKey];\n const oldVersion = oldItem ? oldItem.version : 0;\n const newFlag = flagBuilder.build(oldVersion + 1);\n this.currentFlags[flagKey] = newFlag;\n this.flagBuilders[flagKey] = flagBuilder.clone();\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Features, newFlag)));\n }\n /**\n * Copies a full feature flag data model object into the test data.\n *\n * It immediately propagates the flag change to any `LDClient` instance(s) that you have already\n * configured to use this `TestData`. If no `LDClient` has been started yet, it simply adds this\n * flag to the test data which will be provided to any LDClient that you subsequently configure.\n *\n * Use this method if you need to use advanced flag configuration properties that are not\n * supported by the simplified {@link TestDataFlagBuilder} API. Otherwise it is recommended to use\n * the regular {@link flag}/{@link update} mechanism to avoid dependencies on details of the data\n * model.\n *\n * You cannot make incremental changes with {@link flag}/{@link update} to a flag that has been\n * added in this way; you can only replace it with an entirely new flag configuration.\n *\n * @param flagConfig the flag configuration as a JSON object\n * @return a promise that will resolve when the feature stores are updated\n */\n usePreconfiguredFlag(inConfig) {\n // We need to do things like process attribute reference, and\n // we do not want to modify the passed in value.\n const flagConfig = JSON.parse(JSON.stringify(inConfig));\n const oldItem = this.currentFlags[flagConfig.key];\n const newItem = Object.assign(Object.assign({}, flagConfig), { version: oldItem ? oldItem.version + 1 : flagConfig.version });\n (0, serialization_1.processFlag)(newItem);\n this.currentFlags[flagConfig.key] = newItem;\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Features, newItem)));\n }\n /**\n * Copies a full segment data model object into the test data.\n *\n * It immediately propagates the change to any `LDClient` instance(s) that you have already\n * configured to use this `TestData`. If no `LDClient` has been started yet, it simply adds\n * this segment to the test data which will be provided to any LDClient that you subsequently\n * configure.\n *\n * This method is currently the only way to inject segment data, since there is no builder\n * API for segments. It is mainly intended for the SDK's own tests of segment functionality,\n * since application tests that need to produce a desired evaluation state could do so more easily\n * by just setting flag values.\n *\n * @param segmentConfig the segment configuration as a JSON object\n * @return a promise that will resolve when the feature stores are updated\n */\n usePreconfiguredSegment(inConfig) {\n const segmentConfig = JSON.parse(JSON.stringify(inConfig));\n const oldItem = this.currentSegments[segmentConfig.key];\n const newItem = Object.assign(Object.assign({}, segmentConfig), { version: oldItem ? oldItem.version + 1 : segmentConfig.version });\n (0, serialization_1.processSegment)(newItem);\n this.currentSegments[segmentConfig.key] = newItem;\n return Promise.all(this.dataSources.map((impl) => impl.upsert(VersionedDataKinds_1.default.Segments, newItem)));\n }\n}\nexports.default = TestData;\n//# sourceMappingURL=TestData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TestDataRuleBuilder = exports.TestDataFlagBuilder = exports.TestData = void 0;\nconst TestData_1 = require(\"./TestData\");\nexports.TestData = TestData_1.default;\nconst TestDataFlagBuilder_1 = require(\"./TestDataFlagBuilder\");\nexports.TestDataFlagBuilder = TestDataFlagBuilder_1.default;\nconst TestDataRuleBuilder_1 = require(\"./TestDataRuleBuilder\");\nexports.TestDataRuleBuilder = TestDataRuleBuilder_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FileDataSourceFactory = void 0;\nconst FileDataSourceFactory_1 = require(\"./FileDataSourceFactory\");\nexports.FileDataSourceFactory = FileDataSourceFactory_1.default;\n__exportStar(require(\"./test_data\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagsStateOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFlagsState.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDFlagsStateOptions\"), exports);\n__exportStar(require(\"./LDFlagsState\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDBigSegmentsOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDProxyOptions.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDTLSOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDBigSegmentsOptions\"), exports);\n__exportStar(require(\"./LDOptions\"), exports);\n__exportStar(require(\"./LDProxyOptions\"), exports);\n__exportStar(require(\"./LDTLSOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDClient.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DataKind.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFeatureStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDStreamProcessor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=FileDataSourceOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./FileDataSourceOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStore.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreMembership.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreMetadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreStatus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=DataCollection.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=FullDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=KeyedItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=VersionedData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=BigSegmentStoreStatusProvider.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./BigSegmentStore\"), exports);\n__exportStar(require(\"./BigSegmentStoreMembership\"), exports);\n__exportStar(require(\"./BigSegmentStoreMetadata\"), exports);\n__exportStar(require(\"./BigSegmentStoreStatus\"), exports);\n__exportStar(require(\"./DataCollection\"), exports);\n__exportStar(require(\"./DataKind\"), exports);\n__exportStar(require(\"./FullDataSet\"), exports);\n__exportStar(require(\"./KeyedItems\"), exports);\n__exportStar(require(\"./VersionedData\"), exports);\n__exportStar(require(\"./BigSegmentStoreStatusProvider\"), exports);\n__exportStar(require(\"./persistent_store\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDFeatureRequestor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=LDDataSourceUpdates.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./LDFeatureRequestor\"), exports);\n__exportStar(require(\"./LDFeatureStore\"), exports);\n__exportStar(require(\"./LDStreamProcessor\"), exports);\n__exportStar(require(\"./LDDataSourceUpdates\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.subsystems = exports.interfaces = exports.integrations = void 0;\n__exportStar(require(\"./data\"), exports);\n__exportStar(require(\"./options\"), exports);\n__exportStar(require(\"./LDClient\"), exports);\n__exportStar(require(\"./interfaces/DataKind\"), exports);\n__exportStar(require(\"./subsystems/LDFeatureStore\"), exports);\n__exportStar(require(\"./subsystems/LDStreamProcessor\"), exports);\n// These are items that should be less frequently used, and therefore they\n// are namespaced to reduce clutter amongst the top level exports.\nexports.integrations = require(\"./integrations\");\nexports.interfaces = require(\"./interfaces\");\nexports.subsystems = require(\"./subsystems\");\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction isStale(record) {\n return Date.now() > record.expiration;\n}\n/**\n * A basic TTL cache with configurable TTL and check interval.\n *\n * @internal\n */\nclass TtlCache {\n constructor(options) {\n this.options = options;\n this.storage = new Map();\n this.checkIntervalHandle = setInterval(() => {\n this.purgeStale();\n }, options.checkInterval * 1000);\n }\n /**\n * Get a value from the cache.\n * @param key The key to get a value for.\n * @returns The value for the key, or undefined if the key was not added, or\n * if the value has expired.\n */\n get(key) {\n const record = this.storage.get(key);\n if (record && isStale(record)) {\n this.storage.delete(key);\n return undefined;\n }\n return record === null || record === void 0 ? void 0 : record.value;\n }\n /**\n * Set an item in the cache. It will expire after the TTL specified\n * in the cache configuration.\n * @param key The key for the value.\n * @param value The value to set.\n */\n set(key, value) {\n this.storage.set(key, {\n value,\n expiration: Date.now() + this.options.ttl * 1000,\n });\n }\n /**\n * Delete the item with the specific key. If the item does not exist,\n * then there will be no change to the cache.\n * @param key The key of the value to delete.\n */\n delete(key) {\n this.storage.delete(key);\n }\n /**\n * Clear the items that are in the cache.\n */\n clear() {\n this.storage.clear();\n }\n /**\n * Indicate that you are no longer going to use the cache. The cache will be\n * cleared and it will stop checking for stale items.\n */\n close() {\n this.clear();\n if (this.checkIntervalHandle) {\n clearInterval(this.checkIntervalHandle);\n this.checkIntervalHandle = null;\n }\n }\n purgeStale() {\n this.storage.forEach((record, key) => {\n if (isStale(record)) {\n this.storage.delete(key);\n }\n });\n }\n /**\n * This is for testing.\n * @internal\n */\n get size() {\n return this.storage.size;\n }\n}\nexports.default = TtlCache;\n//# sourceMappingURL=TtlCache.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.persistentStoreKinds = void 0;\nconst serialization_1 = require(\"./serialization\");\nconst VersionedDataKinds_1 = require(\"./VersionedDataKinds\");\n/**\n * Map namespace to a persistent store kind.\n */\nexports.persistentStoreKinds = {\n segments: {\n namespace: VersionedDataKinds_1.default.Segments.namespace,\n deserialize: (data) => {\n const segment = (0, serialization_1.deserializeSegment)(data);\n if (segment) {\n return {\n version: segment.version,\n item: segment,\n };\n }\n return undefined;\n },\n serialize: (data) => {\n const serializedItem = (0, serialization_1.serializeSegment)(data);\n return {\n version: data.version,\n deleted: data.deleted,\n serializedItem,\n };\n },\n priority: 0,\n },\n features: {\n namespace: VersionedDataKinds_1.default.Features.namespace,\n deserialize: (data) => {\n const flag = (0, serialization_1.deserializeFlag)(data);\n if (flag) {\n return {\n version: flag.version,\n item: flag,\n };\n }\n return undefined;\n },\n serialize: (data) => {\n const serializedItem = (0, serialization_1.serializeFlag)(data);\n return {\n version: data.version,\n deleted: data.deleted,\n serializedItem,\n };\n },\n priority: 1,\n },\n};\n//# sourceMappingURL=persistentStoreKinds.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst persistentStoreKinds_1 = require(\"./persistentStoreKinds\");\nfunction getDependencyKeys(flag) {\n if (!flag.prerequisites || !flag.prerequisites.length) {\n return [];\n }\n return flag.prerequisites.map((preReq) => preReq.key);\n}\n/**\n * Do a topological sort using a depth-first search.\n * https://en.wikipedia.org/wiki/Topological_sorting\n */\nfunction topologicalSort(kind, itemsMap) {\n const sortedItems = [];\n const unvisitedItems = new Set(Object.keys(itemsMap));\n const visit = (key) => {\n if (!unvisitedItems.has(key)) {\n return;\n }\n // Typically in a depth-first search this would be done later, and there\n // would be a temporary mark to detect that this was not an directed acylic graph.\n // Removing it here will mean we cannot do that detection, but we also will\n // not infinitely recurse.\n unvisitedItems.delete(key);\n const item = itemsMap[key];\n if (kind.namespace === 'features') {\n getDependencyKeys(item).forEach((prereqKey) => {\n visit(prereqKey);\n });\n }\n sortedItems.push({\n key,\n item: kind.serialize(item),\n });\n };\n while (unvisitedItems.size > 0) {\n // Visit the next item, the order we visit doesn't matter.\n const key = unvisitedItems.values().next().value;\n visit(key);\n }\n return sortedItems;\n}\n/**\n * For non-atomic stores we want to insert items in an order that no items exist\n * in the store before their dependencies. Segments before flags, because flags\n * are dependent on segments. For flags we want to insert them such that no flags are\n * added before the prerequisites of those flags.\n *\n * Segments can also depend on other segments, but a segment will not be accessed\n * if there are no flags.\n */\nfunction sortDataSet(dataMap) {\n // We use a different type for collecting the results so that we have access\n // to the serialization methods and priorities.\n const result = [];\n Object.keys(dataMap).forEach((kindNamespace) => {\n const kind = persistentStoreKinds_1.persistentStoreKinds[kindNamespace];\n result.push({ key: kind, item: topologicalSort(kind, dataMap[kindNamespace]) });\n });\n result.sort((i1, i2) => i1.key.priority - i2.key.priority);\n return result;\n}\nexports.default = sortDataSet;\n//# sourceMappingURL=sortDataSet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass UpdateQueue {\n constructor() {\n this.queue = [];\n }\n enqueue(updateFn, cb) {\n this.queue.push([updateFn, cb]);\n if (this.queue.length === 1) {\n // If this is the only item in the queue, then there is not a series\n // of updates already in progress. So we can start executing those updates.\n this.executePendingUpdates();\n }\n }\n executePendingUpdates() {\n if (this.queue.length > 0) {\n const [fn, cb] = this.queue[0];\n const newCb = () => {\n // We just completed work, so remove it from the queue.\n // Don't remove it before the work is done, because then the\n // count could hit 0, and overlapping execution chains could be started.\n this.queue.shift();\n // There is more work to do, so schedule an update.\n if (this.queue.length > 0) {\n setTimeout(() => this.executePendingUpdates(), 0);\n }\n // Call the original callback.\n cb === null || cb === void 0 ? void 0 : cb();\n };\n fn(newCb);\n }\n }\n}\nexports.default = UpdateQueue;\n//# sourceMappingURL=UpdateQueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst TtlCache_1 = require(\"../cache/TtlCache\");\nconst persistentStoreKinds_1 = require(\"./persistentStoreKinds\");\nconst sortDataSet_1 = require(\"./sortDataSet\");\nconst UpdateQueue_1 = require(\"./UpdateQueue\");\nfunction cacheKey(kind, key) {\n return `${kind.namespace}:${key}`;\n}\nfunction allForKindCacheKey(kind) {\n return `$all:${kind.namespace}`;\n}\n// This key will be set in the cache if we have checked that a store was\n// initialized and found that it was not. If we do not become initialized\n// within the TTL period, then the key will expire, and the next initialization\n// check will pass through to the store. Once we are initialized, then the key\n// will never be checked again.\nconst initializationCheckedKey = '$checkedInit';\n// The interval to check items in the TTL cache to purge expired items.\n// Expired items which are not purged, will be reactively purged when they are\n// accessed.\nconst defaultCheckInterval = 600;\nfunction itemIfNotDeleted(item) {\n return !item || item.item.deleted ? null : item.item;\n}\nfunction deletedDescriptor(version) {\n return {\n version,\n item: { version, deleted: true },\n };\n}\n/**\n * Deserialize a {@link SerializedItemDescriptor}\n * @param kind The persistent store data kind to deserialize.\n * @param descriptor The serialized descriptor we want to deserialize.\n * @returns An item descriptor for the deserialized item.\n */\nfunction deserialize(kind, descriptor) {\n if (descriptor.deleted || !descriptor.serializedItem) {\n return deletedDescriptor(descriptor.version);\n }\n const deserializedItem = kind.deserialize(descriptor.serializedItem);\n if (deserializedItem === undefined) {\n // This would only happen if the JSON is invalid.\n return deletedDescriptor(descriptor.version);\n }\n if (deserializedItem.version === 0 ||\n deserializedItem.version === descriptor.version ||\n deserializedItem.item === undefined) {\n return deserializedItem;\n }\n // There was a mismatch between the version of the serialized descriptor and the deserialized\n // descriptor. So we are going to trust the version of the serialized descriptor.\n return {\n version: descriptor.version,\n item: deserializedItem.item,\n };\n}\n/**\n * Internal implementation of {@link LDFeatureStore} that delegates the basic functionality to an\n * instance of {@link PersistentDataStore}. It provides optional caching behavior and other logic\n * that would otherwise be repeated in every data store implementation. This makes it easier to\n * create new database integrations by implementing only the database-specific logic.\n */\nclass PersistentDataStoreWrapper {\n constructor(core, ttl) {\n this.core = core;\n this.isInitialized = false;\n /**\n * Used to preserve order of operations of async requests.\n */\n this.queue = new UpdateQueue_1.default();\n if (ttl) {\n this.itemCache = new TtlCache_1.default({\n ttl,\n checkInterval: defaultCheckInterval,\n });\n this.allItemsCache = new TtlCache_1.default({\n ttl,\n checkInterval: defaultCheckInterval,\n });\n }\n }\n init(allData, callback) {\n this.queue.enqueue((cb) => {\n const afterStoreInit = () => {\n this.isInitialized = true;\n if (this.itemCache) {\n this.itemCache.clear();\n this.allItemsCache.clear();\n Object.keys(allData).forEach((kindNamespace) => {\n const kind = persistentStoreKinds_1.persistentStoreKinds[kindNamespace];\n const items = allData[kindNamespace];\n this.allItemsCache.set(allForKindCacheKey(kind), items);\n Object.keys(items).forEach((key) => {\n const itemForKey = items[key];\n const itemDescriptor = {\n version: itemForKey.version,\n item: itemForKey,\n };\n this.itemCache.set(cacheKey(kind, key), itemDescriptor);\n });\n });\n }\n cb();\n };\n this.core.init((0, sortDataSet_1.default)(allData), afterStoreInit);\n }, callback);\n }\n get(kind, key, callback) {\n if (this.itemCache) {\n const item = this.itemCache.get(cacheKey(kind, key));\n if (item) {\n callback(itemIfNotDeleted(item));\n return;\n }\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.get(persistKind, key, (descriptor) => {\n var _a;\n if (descriptor && descriptor.serializedItem) {\n const value = deserialize(persistKind, descriptor);\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(cacheKey(kind, key), value);\n callback(itemIfNotDeleted(value));\n }\n callback(null);\n });\n }\n initialized(callback) {\n var _a;\n if (this.isInitialized) {\n callback(true);\n }\n else if ((_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.get(initializationCheckedKey)) {\n callback(false);\n }\n else {\n this.core.initialized((storeInitialized) => {\n var _a;\n this.isInitialized = storeInitialized;\n if (!this.isInitialized) {\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(initializationCheckedKey, true);\n }\n callback(this.isInitialized);\n });\n }\n }\n all(kind, callback) {\n var _a;\n const items = (_a = this.allItemsCache) === null || _a === void 0 ? void 0 : _a.get(allForKindCacheKey(kind));\n if (items) {\n callback(items);\n return;\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.getAll(persistKind, (storeItems) => {\n var _a;\n if (!storeItems) {\n callback({});\n return;\n }\n const filteredItems = {};\n storeItems.forEach(({ key, item }) => {\n const deserializedItem = deserialize(persistKind, item);\n const filteredItem = itemIfNotDeleted(deserializedItem);\n if (filteredItem) {\n filteredItems[key] = filteredItem;\n }\n });\n (_a = this.allItemsCache) === null || _a === void 0 ? void 0 : _a.set(allForKindCacheKey(kind), filteredItems);\n callback(filteredItems);\n });\n }\n upsert(kind, data, callback) {\n this.queue.enqueue((cb) => {\n // Clear the caches which contain all the values of a specific kind.\n if (this.allItemsCache) {\n this.allItemsCache.clear();\n }\n const persistKind = persistentStoreKinds_1.persistentStoreKinds[kind.namespace];\n this.core.upsert(persistKind, data.key, persistKind.serialize(data), (err, updatedDescriptor) => {\n var _a, _b;\n if (!err && updatedDescriptor) {\n if (updatedDescriptor.serializedItem) {\n const value = deserialize(persistKind, updatedDescriptor);\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.set(cacheKey(kind, data.key), value);\n }\n else if (updatedDescriptor.deleted) {\n // Deleted and there was not a serialized representation.\n (_b = this.itemCache) === null || _b === void 0 ? void 0 : _b.set(data.key, {\n key: data.key,\n version: updatedDescriptor.version,\n deleted: true,\n });\n }\n }\n cb();\n });\n }, callback);\n }\n delete(kind, key, version, callback) {\n this.upsert(kind, { key, version, deleted: true }, callback);\n }\n close() {\n var _a, _b;\n (_a = this.itemCache) === null || _a === void 0 ? void 0 : _a.close();\n (_b = this.allItemsCache) === null || _b === void 0 ? void 0 : _b.close();\n this.core.close();\n }\n getDescription() {\n return this.core.getDescription();\n }\n}\nexports.default = PersistentDataStoreWrapper;\n//# sourceMappingURL=PersistentDataStoreWrapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializePoll = exports.PersistentDataStoreWrapper = exports.AsyncStoreFacade = void 0;\nconst AsyncStoreFacade_1 = require(\"./AsyncStoreFacade\");\nexports.AsyncStoreFacade = AsyncStoreFacade_1.default;\nconst PersistentDataStoreWrapper_1 = require(\"./PersistentDataStoreWrapper\");\nexports.PersistentDataStoreWrapper = PersistentDataStoreWrapper_1.default;\nconst serialization_1 = require(\"./serialization\");\nObject.defineProperty(exports, \"deserializePoll\", { enumerable: true, get: function () { return serialization_1.deserializePoll; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass NullEventSource {\n constructor(url, options) {\n this.handlers = {};\n this.closed = false;\n this.url = url;\n this.options = options;\n }\n addEventListener(type, listener) {\n this.handlers[type] = listener;\n }\n close() {\n this.closed = true;\n }\n simulateError(error) {\n const shouldRetry = this.options.errorFilter(error);\n if (!shouldRetry) {\n this.closed = true;\n }\n }\n}\nexports.default = NullEventSource;\n//# sourceMappingURL=NullEventSource.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NullEventSource = void 0;\nconst NullEventSource_1 = require(\"./NullEventSource\");\nexports.NullEventSource = NullEventSource_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BigSegmentStoreStatusProviderImpl = exports.LDClientImpl = exports.platform = exports.integrations = void 0;\nconst BigSegmentStatusProviderImpl_1 = require(\"./BigSegmentStatusProviderImpl\");\nexports.BigSegmentStoreStatusProviderImpl = BigSegmentStatusProviderImpl_1.default;\nconst LDClientImpl_1 = require(\"./LDClientImpl\");\nexports.LDClientImpl = LDClientImpl_1.default;\nexports.integrations = require(\"./integrations\");\nexports.platform = require(\"@launchdarkly/js-sdk-common\");\n__exportStar(require(\"./api\"), exports);\n__exportStar(require(\"./store\"), exports);\n__exportStar(require(\"./events\"), exports);\n__exportStar(require(\"@launchdarkly/js-sdk-common\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCallbacks = void 0;\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line import/prefer-default-export\nconst createCallbacks = () => ({\n onError: (err) => { },\n onFailed: (err) => { },\n onReady: () => { },\n onUpdate: (key) => { },\n hasEventListeners: () => false,\n});\nexports.createCallbacks = createCallbacks;\n//# sourceMappingURL=createCallbacks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createOptions = exports.defaultOptions = void 0;\n// eslint-disable-next-line max-classes-per-file\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nexports.defaultOptions = {\n stream: false,\n sendEvents: false,\n useLdd: true,\n diagnosticOptOut: true,\n logger: js_server_sdk_common_1.BasicLogger.get(),\n};\nconst createOptions = (options) => {\n var _a;\n const finalOptions = Object.assign(Object.assign({}, exports.defaultOptions), options);\n (_a = finalOptions.logger) === null || _a === void 0 ? void 0 : _a.debug(`Using LD options: ${JSON.stringify(finalOptions)}`);\n return finalOptions;\n};\nexports.createOptions = createOptions;\n//# sourceMappingURL=createOptions.js.map","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateOptions = void 0;\nconst validateOptions = (sdkKey, options) => {\n const { featureStore, logger, sendEvents } = options, rest = __rest(options, [\"featureStore\", \"logger\", \"sendEvents\"]);\n if (!sdkKey) {\n throw new Error('You must configure the client with a client key');\n }\n if (!featureStore || typeof featureStore !== 'object' || !featureStore.get) {\n throw new Error('You must configure the client with a feature store');\n }\n if (!logger) {\n throw new Error('You must configure the client with a logger');\n }\n if (JSON.stringify(rest) !== '{}') {\n throw new Error(`Invalid configuration: ${Object.keys(rest).toString()} not supported`);\n }\n return true;\n};\nexports.validateOptions = validateOptions;\n//# sourceMappingURL=validateOptions.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./createCallbacks\"), exports);\n__exportStar(require(\"./createOptions\"), exports);\n__exportStar(require(\"./validateOptions\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// eslint-disable-next-line max-classes-per-file\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nconst utils_1 = require(\"../utils\");\n/**\n * The LaunchDarkly Akamai SDK edge client object.\n */\nclass LDClient extends js_server_sdk_common_1.LDClientImpl {\n // sdkKey is only used to query featureStore, not to initialize with LD servers\n constructor(sdkKey, platform, options, storeProvider) {\n super(sdkKey, platform, (0, utils_1.createOptions)(options), (0, utils_1.createCallbacks)());\n this.cacheableStoreProvider = storeProvider;\n }\n waitForInitialization() {\n // we need to resolve the promise immediately because Akamai's runtime doesnt\n // have a setimeout so everything executes synchronously.\n return Promise.resolve(this);\n }\n async variation(key, context, defaultValue, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.variation(key, context, defaultValue, callback);\n }\n async variationDetail(key, context, defaultValue, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.variationDetail(key, context, defaultValue, callback);\n }\n async allFlagsState(context, options, callback) {\n await this.cacheableStoreProvider.prefetchPayloadFromOriginStore();\n return super.allFlagsState(context, options, callback);\n }\n}\nexports.default = LDClient;\n//# sourceMappingURL=LDClient.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EdgeFeatureStore = exports.buildRootKey = void 0;\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\n/**\n * Builds the root key needed to retrieve environment payload from the feature store\n * @param sdkKey string\n * @returns\n */\nconst buildRootKey = (sdkKey) => `LD-Env-${sdkKey}`;\nexports.buildRootKey = buildRootKey;\nclass EdgeFeatureStore {\n constructor(edgeProvider, sdkKey, description, logger) {\n this.edgeProvider = edgeProvider;\n this.sdkKey = sdkKey;\n this.description = description;\n this.logger = logger;\n // unused\n this.close = js_server_sdk_common_1.noop;\n this.delete = js_server_sdk_common_1.noop;\n this.upsert = js_server_sdk_common_1.noop;\n this.rootKey = (0, exports.buildRootKey)(this.sdkKey);\n }\n async get(kind, dataKey, callback) {\n const { namespace } = kind;\n const kindKey = namespace === 'features' ? 'flags' : namespace;\n this.logger.debug(`Requesting ${dataKey} from ${this.rootKey}.${kindKey}`);\n try {\n const i = await this.edgeProvider.get(this.rootKey);\n if (!i) {\n throw new Error(`${this.rootKey}.${kindKey} is not found in KV.`);\n }\n const item = (0, js_server_sdk_common_1.deserializePoll)(i);\n if (!item) {\n throw new Error(`Error deserializing ${kindKey}`);\n }\n switch (namespace) {\n case 'features':\n callback(item.flags[dataKey]);\n break;\n case 'segments':\n callback(item.segments[dataKey]);\n break;\n default:\n throw new Error(`Unsupported DataKind: ${namespace}`);\n }\n }\n catch (err) {\n this.logger.error(err);\n callback(null);\n }\n }\n async all(kind, callback = js_server_sdk_common_1.noop) {\n const { namespace } = kind;\n const kindKey = namespace === 'features' ? 'flags' : namespace;\n this.logger.debug(`Requesting all from ${this.rootKey}.${kindKey}`);\n try {\n const i = await this.edgeProvider.get(this.rootKey);\n if (!i) {\n throw new Error(`${this.rootKey}.${kindKey} is not found in KV.`);\n }\n const item = (0, js_server_sdk_common_1.deserializePoll)(i);\n if (!item) {\n throw new Error(`Error deserializing ${kindKey}`);\n }\n switch (namespace) {\n case 'features':\n callback(item.flags);\n break;\n case 'segments':\n callback(item.segments);\n break;\n default:\n throw new Error(`Unsupported DataKind: ${namespace}`);\n }\n }\n catch (err) {\n this.logger.error(err);\n callback({});\n }\n }\n async initialized(callback = js_server_sdk_common_1.noop) {\n const config = await this.edgeProvider.get(this.rootKey);\n const result = config !== null;\n this.logger.debug(`Is ${this.rootKey} initialized? ${result}`);\n callback(result);\n }\n init(allData, callback) {\n callback();\n }\n getDescription() {\n return this.description;\n }\n}\nexports.EdgeFeatureStore = EdgeFeatureStore;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Wraps around an edge provider to cache a copy of the sdk payload locally an explicit request is made to refetch data from the origin.\n * The wrapper is neccessary to ensure that we dont make redundant sub-requests from Akamai to fetch an entire environment payload.\n */\nclass CacheableStoreProvider {\n constructor(edgeProvider, rootKey) {\n this.edgeProvider = edgeProvider;\n this.rootKey = rootKey;\n }\n /**\n * Get data from the edge provider feature store.\n * @param rootKey\n * @returns\n */\n async get(rootKey) {\n if (!this.cache) {\n this.cache = await this.edgeProvider.get(rootKey);\n }\n return this.cache;\n }\n /**\n * Invalidates cache and fetch environment payload data from origin. The result of this data is cached in memory.\n * You should only call this function within a feature store to pre-fetch and cache payload data in environments\n * where its expensive to make multiple outbound requests to the origin\n * @param rootKey\n * @returns\n */\n async prefetchPayloadFromOriginStore(rootKey) {\n this.cache = undefined; // clear the cache so that new data can be fetched from the origin\n return this.get(rootKey || this.rootKey);\n }\n}\nexports.default = CacheableStoreProvider;\n//# sourceMappingURL=cacheableStoreProvider.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<<n) | (x>>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Hex;\n\n}));","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_js_1 = require(\"crypto-js\");\nconst enc_base64_1 = require(\"crypto-js/enc-base64\");\nconst enc_hex_1 = require(\"crypto-js/enc-hex\");\nclass CryptoJSHasher {\n constructor(algorithm) {\n let algo;\n switch (algorithm) {\n case 'sha1':\n algo = crypto_js_1.algo.SHA1;\n break;\n case 'sha256':\n algo = crypto_js_1.algo.SHA256;\n break;\n default:\n throw new Error('unsupported hash algorithm. Only sha1 and sha256 are supported.');\n }\n this.cryptoJSHasher = algo.create();\n }\n digest(encoding) {\n const result = this.cryptoJSHasher.finalize();\n let enc;\n switch (encoding) {\n case 'base64':\n enc = enc_base64_1.default;\n break;\n case 'hex':\n enc = enc_hex_1.default;\n break;\n default:\n throw new Error('unsupported output encoding. Only base64 and hex are supported.');\n }\n return result.toString(enc);\n }\n update(data) {\n this.cryptoJSHasher.update(data);\n return this;\n }\n}\nexports.default = CryptoJSHasher;\n//# sourceMappingURL=cryptoJSHasher.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_js_1 = require(\"crypto-js\");\nclass CryptoJSHmac {\n constructor(algorithm, key) {\n let algo;\n switch (algorithm) {\n case 'sha1':\n algo = crypto_js_1.algo.SHA1;\n break;\n case 'sha256':\n algo = crypto_js_1.algo.SHA256;\n break;\n default:\n throw new Error('unsupported hash algorithm. Only sha1 and sha256 are supported.');\n }\n this.CryptoJSHmac = crypto_js_1.algo.HMAC.create(algo, key);\n }\n digest(encoding) {\n const result = this.CryptoJSHmac.finalize();\n if (encoding === 'base64') {\n return result.toString(CryptoJS.enc.Base64);\n }\n if (encoding === 'hex') {\n return result.toString(CryptoJS.enc.Hex);\n }\n throw new Error('unsupported output encoding. Only base64 and hex are supported.');\n }\n update(data) {\n this.CryptoJSHmac.update(data);\n return this;\n }\n}\nexports.default = CryptoJSHmac;\n//# sourceMappingURL=cryptoJSHmac.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// @ts-ignore. // this crypto is provided by Akamai's platform at runtime\nconst crypto_1 = require(\"crypto\");\nconst cryptoJSHasher_1 = require(\"./cryptoJSHasher\");\nconst cryptoJSHmac_1 = require(\"./cryptoJSHmac\");\n/**\n * Uses crypto-js as substitute to node:crypto because the latter\n * is not yet supported in Akamai runtimes.\n * https://cryptojs.gitbook.io/docs/\n */\nclass EdgeCrypto {\n createHash(algorithm) {\n return new cryptoJSHasher_1.default(algorithm);\n }\n createHmac(algorithm, key) {\n return new cryptoJSHmac_1.default(algorithm, key);\n }\n randomUUID() {\n const array = new Uint32Array(1);\n crypto_1.crypto.getRandomValues(array);\n return array.join();\n }\n}\nexports.default = EdgeCrypto;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable max-classes-per-file */\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nclass NoopResponse {\n constructor() {\n this.headers = {};\n this.status = 0;\n }\n /**\n * Read the response and provide it as a string.\n */\n text() {\n return Promise.resolve('');\n }\n /**\n * Read the response and provide it as decoded json.\n */\n json() {\n return Promise.resolve({});\n }\n}\nclass EdgeRequests {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fetch(url, options = {}) {\n return Promise.resolve(new NoopResponse());\n }\n createEventSource(url, eventSourceInitDict) {\n return new js_server_sdk_common_1.NullEventSource(url, eventSourceInitDict);\n }\n}\nexports.default = EdgeRequests;\n//# sourceMappingURL=requests.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst crypto_1 = require(\"./crypto\");\nconst requests_1 = require(\"./requests\");\nclass EdgePlatform {\n constructor(info) {\n this.crypto = new crypto_1.default();\n this.requests = new requests_1.default();\n this.info = info;\n }\n}\nexports.default = EdgePlatform;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass AkamaiPlatformInfo {\n constructor(platformName, sdkName, sdkVersion) {\n this.platformName = platformName;\n this.sdkName = sdkName;\n this.sdkVersion = sdkVersion;\n }\n platformData() {\n return {\n name: this.platformName,\n };\n }\n sdkData() {\n return {\n name: this.sdkName,\n version: this.sdkVersion,\n userAgentBase: 'AkamaiEdgeSDK',\n };\n }\n}\nconst createPlatformInfo = (platformName, sdkName, sdkVersion) => new AkamaiPlatformInfo(platformName, sdkName, sdkVersion);\nexports.default = createPlatformInfo;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.init = exports.EdgeFeatureStore = void 0;\nconst js_server_sdk_common_1 = require(\"@launchdarkly/js-server-sdk-common\");\nconst LDClient_1 = require(\"./api/LDClient\");\nconst featureStore_1 = require(\"./featureStore\");\nObject.defineProperty(exports, \"EdgeFeatureStore\", { enumerable: true, get: function () { return featureStore_1.EdgeFeatureStore; } });\nconst cacheableStoreProvider_1 = require(\"./featureStore/cacheableStoreProvider\");\nconst platform_1 = require(\"./platform\");\nconst info_1 = require(\"./platform/info\");\nconst utils_1 = require(\"./utils\");\n__exportStar(require(\"@launchdarkly/js-server-sdk-common\"), exports);\nconst init = (params) => {\n var _a;\n const { sdkKey, options = {}, featureStoreProvider, platformName, sdkName, sdkVersion } = params;\n const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : js_server_sdk_common_1.BasicLogger.get();\n const cachableStoreProvider = new cacheableStoreProvider_1.default(featureStoreProvider, (0, featureStore_1.buildRootKey)(sdkKey));\n const featureStore = new featureStore_1.EdgeFeatureStore(cachableStoreProvider, sdkKey, 'Akamai', logger);\n const ldOptions = Object.assign({ featureStore,\n logger }, options);\n // this throws if options are invalid\n (0, utils_1.validateOptions)(params.sdkKey, ldOptions);\n const platform = (0, info_1.default)(platformName, sdkName, sdkVersion);\n return new LDClient_1.default(sdkKey, new platform_1.default(platform), ldOptions, cachableStoreProvider);\n};\nexports.init = init;\n//# sourceMappingURL=index.js.map",null],"names":["Object","defineProperty","BigSegmentStatusProviderImpl","value","default","constructor","onRequestStatus","this","getStatus","lastStatus","requireStatus","notify","_a","listener","call","setListener","setStatus","status","unescape","ref","indexOf","replace","AttributeReference_1","AttributeReference","refOrLiteral","literal","literalVal","components","isValid","redactionName","startsWith","match","reference","isLiteral","slice","substring","split","map","component","getComponents","get","target","current","index","length","prototype","hasOwnProperty","Array","isArray","getComponent","depth","isKind","compare","other","every","invalidReference","validators","TypeValidators","DateValidator","Function","NumberWithMinimum","TypeArray","Type","FactoryOrInstance","is","factoryOrInstance","typeOfFactory","getType","typeName","example","typeOf","u","val","min","super","StringMatchingRegex","expression","DATE_REGEX","test","numberWithMin","stringMatchingRegex","String","Number","ObjectOrFactory","StringArray","Boolean","Date","Context_1","require$$0","validators_1","require$$1","KindValidator","DEFAULT_KIND","encodeKey","key","includes","validKind","kind","validKey","processPrivateAttributes","privateAttributes","literals","privateAttribute","Context","valid","message","isMulti","isUser","wasLegacy","contexts","contextForError","getValueFromContext","context","anonymous","contextForKind","fromMultiKindContext","kinds","keys","filter","kindsValid","contextsAreObjects","reduce","acc","singleContext","kindOrContext","_meta","values","part","created","privateAttributeReferences","fromSingleKindContext","kindValid","keyValid","fromLegacyUser","undefined","user","singleKindContext","assign","custom","name","ip","firstName","lastName","email","avatar","country","legacyToSingleKind","privateAttributeNames","fromLDContext","isSingleKind","isMultiKind","isLegacyUser","valueForKind","canonicalKey","sort","join","kindsAndKeys","entries","getContexts","legacy","userKind","ContextFilter_1","protectedAttributes","str","legacyTopLevelCopyAttributes","allAttributesPrivate","filterSingleKind","filteredMulti","forEach","single","getAttributesToFilter","k","attr","some","protectedAttr","cloned","excluded","references","stack","push","ptr","source","parent","visited","item","pop","redactRef","find","a","b","cloneWithRedactions","redactedAttributes","LDContextCommon","LDContextMeta","LDMultiKindContext","LDSingleKindContext","LDUser","LDContext","__createBinding","create","o","m","k2","desc","getOwnPropertyDescriptor","__esModule","writable","configurable","enumerable","__exportStar","exports","p","require$$2","require$$3","require$$4","require$$5","BasicLoggerOptions","LDLogger","LDLogLevel","LDEvaluationDetail","LDEvaluationReason","LDFlagSet","LDFlagValue","options","Crypto","Filesystem","Info","Platform","Requests","EventSource","LDEventType","LDDeliveryStatus","LDEventSender","LDEventSender_1","subsystem","format_1","tryStringify","toString","JSON","stringify","error","TypeError","escapes","s","d","toNumber","i","parseInt","toInt","f","parseFloat","toFloat","j","O","c","args","formatString","shift","out","char","charAt","nextChar","BasicLogger_1","LogPriority","debug","info","warn","none","LevelNames","BasicLogger","_b","_c","logLevel","level","destination","formatter","tryFormat","tryWrite","msg","console","log","prefix","SafeLogger_1","loggerRequirements","logger","fallback","validator","Error","logging","SafeLogger","OptionMessages_1","deprecated","oldName","newName","optionBelowMinimum","unknownOption","wrongOptionType","expectedType","actualType","wrongOptionTypeBoolean","invalidTagValue","tagValueTooLong","partialEndpoint","ApplicationTags_1","regexValidator","tagValidator","tags","application","id","version","tagKeys","flatMap","ClientContext_1","sdkKey","configuration","platform","basicConfiguration","offline","serviceEndpoints","canonicalizeUri","uri","ServiceEndpoints_1","streaming","polling","events","ClientContext","OptionMessages","ApplicationTags","ServiceEndpoints","noop","utils","noop_1","guards","isIdentify","isCustom","isFeature","SummaryCounter_1","count","defValue","variation","increment","EventSummarizer_1","guards_1","startDate","endDate","counters","contextKinds","summarizeEvent","event","countKey","counterKey","counter","Set","add","creationDate","getSummary","features","flagSummary","counterOut","unknown","clearSummary","LDInvalidSDKKeyError_1","LDInvalidSDKKeyError","EventProcessor_1","config","clientContext","eventSender","contextDeduplicator","diagnosticsManager","summarizer","queue","lastKnownPastTime","droppedEvents","deduplicatedUsers","exceededCapacity","eventsInLastBatch","shutdown","flushUsersTimer","capacity","eventsCapacity","contextFilter","flushInterval","flushTimer","initEvent","createInitEvent","postDiagnosticEvent","diagnosticsTimer","diagnosticRecordingInterval","sendEventData","DiagnosticEvent","close","clearInterval","flush","eventsToFlush","summary","tryPostingEvents","sendEvent","inputEvent","isFeatureEvent","addFullEvent","trackEvents","addDebugEvent","shouldDebugEvent","isIdentifyEvent","shouldNotDeduplicate","processContext","enqueue","makeOutputEvent","prereqOf","reason","contextKeys","data","metricValue","debugEventsUntilDate","now","res","AnalyticsEvents","FailedAndMustShutDown","serverTime","InputCustomEvent_1","InputEvalEvent_1","withReasons","detail","variationIndex","InputIdentifyEvent_1","EventProcessor","InputEvalEvent","InputCustomEvent","InputIdentifyEvent","ContextFilter","internal","require$$6","require$$7","require$$8","LruCache_1","keyMap","Map","head","tail","size","max","next","Uint32Array","prev","maxAge","lastUpdated","fill","set","setTail","clear","evict","delete","link","n","BigSegmentsManager_1","js_sdk_common_1","BigSegmentStatusProviderImpl_1","store","crypto","statusProvider","async","pollStoreAndUpdateStatus","staleTimeMs","staleAfter","statusPollInterval","pollHandle","setInterval","cache","userCacheSize","userCacheTime","getUserMembership","userKey","memberCache","membership","hashForUserKey","cacheItem","err","available","stale","newStatus","metadata","getMetadata","lastUpToDate","isStale","hasher","createHash","update","digest","timestamp","ClientMessages_1","ClientMessages","missingContextKeyNoEvent","VersionedDataKinds_1","VersionedDataKinds","Features","namespace","streamApiPath","requestPath","Segments","NamespacedDataSet_1","itemsByNamespace","remove","items","removeAll","enumerate","callback","mergeFrom","bind","DependencyTracker_1","dependenciesFrom","dependenciesTo","updateDependenciesFrom","newDependencySet","oldDependencySet","depNs","depKey","depsToThisDep","updateModifiedItems","inDependencySet","modifiedNamespace","modifiedKey","affectedItems","reset","DataSourceUpdates_1","computeDependencies","ret","isFlag","isSegment","flag","prerequisites","prereq","itemWithRuleClauses","rules","rule","clauses","clause","op","featureStore","hasEventListeners","onChange","dependencyTracker","init","allData","checkForChanges","doInit","oldData","updatedItems","oldDataForKind","newDataForKind","mergedData","addIfModified","sendChangeEvents","all","oldFlags","oldSegments","upsert","doUpsert","oldItem","oldValue","newValue","toDataSet","dataSet","NullUpdateProcessor_1","start","fn","stop","errors","isHttpRecoverable","LDClientError","LDUnexpectedResponseError","LDStreamingError","LDPollingError","code","serialization","deserializeSegment","serializeSegment","deserializeFlag","deserializeDelete","deserializePatch","deserializePoll","deserializeAll","processSegment","processFlag","replacer","reviver","processRollout","rollout","bucketBy","bucketByAttributeReference","contextKind","fallthrough","attribute","attributeReference","segment","rolloutContextKind","tryParse","parse","parsed","flags","segments","path","serializeFlag","httpErrorMessage_1","retryMessage","PollingProcessor_1","errors_1","serialization_1","requestor","stopped","pollInterval","poll","reportJsonError","startTime","requestAllData","body","elapsed","sleepFor","Math","initData","timeoutHandle","clearTimeout","defaultHeaders_1","sdkData","headers","authorization","userAgentBase","wrapperName","wrapperVersion","Requestor_1","requests","eTagCache","requestWithETagCache","requestUrl","cacheEntry","cachedETag","etag","updatedOptions","fetch","text","cb","method","StreamingProcessor_1","getKeyFromPath","streamInitialReconnectDelay","streamUri","logConnectionStarted","connectionAttemptStartTime","logConnectionResult","success","recordStreamInit","type","eventSource","createEventSource","errorFilter","initialRetryDelayMillis","readTimeoutMillis","retryResetIntervalMillis","onclose","onerror","onopen","onretrying","e","delayMillis","addEventListener","deleted","seriesAsync","collection","check","firstSeriesAsync","allSeriesAsync","firstResult","operator","ErrorKinds","ErrorKinds_1","Reasons_1","Reasons","prerequisiteFailed","prerequisiteKey","ruleMatch","ruleId","ruleIndex","Fallthrough","Off","TargetMatch","EvalResult_1","EvalResult","isError","isOff","setDefault","def","forError","errorKind","forSuccess","Bucketer_1","sha1Hex","hash","bucket","salt","kindForRollout","seed","bucketableValue","isInteger","valueForBucketing","hashKey","variations","getBucketBy","getOffVariation","KEY_ATTR_REF","getVariation","MalformedFlag","offVariation","isExperiment","evalTargets_1","collection_1","variations_1","evalTarget","contextKey","contextTargets","userTarget","targets","ut","makeBigSegmentRef_1","generation","constants","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","MAX_SAFE_INTEGER","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","debug_1","process","env","NODE_DEBUG","re","module","safeRe","src","t","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","token","makeSafeRegex","RegExp","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCE","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","looseOption","freeze","loose","emptyOpts","parseOptions_1","numeric","compareIdentifiers","anum","bnum","identifiers","rcompareIdentifiers","parseOptions","semver","SemVer","includePrerelease","trim","LOOSE","FULL","raw","major","minor","patch","prerelease","num","build","format","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","base","isNaN","parse_1","throwErrors","er","valid_1","v","clean_1","inc_1","diff_1","version1","version2","v1","v2","comparison","v1Higher","highVersion","lowVersion","highHasPre","major_1","minor_1","patch_1","prerelease_1","compare_1","rcompare_1","compareLoose_1","compareBuild_1","versionA","versionB","sort_1","list","rsort_1","gt_1","lt_1","eq_1","neq_1","gte_1","lte_1","eq","neq","gt","gte","lt","lte","cmp_1","coerce_1","rtl","COERCERTL","exec","lastIndex","Yallist","self","arguments","l","insert","node","inserted","Node","unshift","yallist","removeNode","unshiftNode","pushNode","thisp","walker","forEachReverse","getReverse","mapReverse","initial","reduceReverse","toArray","arr","toArrayReverse","from","to","sliceReverse","splice","deleteCount","nodes","reverse","iterator","Symbol","Range","range","Comparator","r","parseRange","first","isNullSet","isAny","comps","memoKey","cached","hr","HYPHENRANGELOOSE","HYPHENRANGE","hyphenReplace","COMPARATORTRIM","TILDETRIM","CARETTRIM","rangeList","comp","parseComparator","replaceGTE0","COMPARATORLOOSE","rangeMap","comparators","has","result","intersects","thisComparators","isSatisfiable","rangeComparators","thisComparator","rangeComparator","testSet","LRU","MAX","LENGTH","LENGTH_CALCULATOR","ALLOW_STALE","MAX_AGE","DISPOSE","NO_DISPOSE_ON_SET","LRU_LIST","CACHE","UPDATE_AGE_ON_GET","naiveLength","doUse","hit","del","diff","Entry","forEachStep","lruCache","Infinity","lc","dispose","noDisposeOnSet","updateAgeOnGet","mL","allowStale","mA","lengthCalculator","lC","itemCount","rforEach","dump","h","dumpLru","len","peek","load","expiresAt","prune","remainingComparators","testComparator","otherComparator","replaceCarets","replaceTildes","replaceXRanges","replaceStars","isX","toLowerCase","replaceTilde","TILDELOOSE","TILDE","_","M","pr","replaceCaret","CARETLOOSE","CARET","z","replaceXRange","XRANGELOOSE","XRANGE","gtlt","xM","xm","xp","anyX","STAR","GTE0PRE","GTE0","incPr","$0","fM","fm","fp","fpr","fb","tM","tm","tp","tpr","tb","ANY","allowed","COMPARATOR","cmp","comparator","satisfies_1","toComparators_1","maxSatisfying_1","versions","maxSV","rangeObj","minSatisfying_1","minSV","minVersion_1","minver","setMin","compver","satisfies","outside_1","hilo","gtfn","ltefn","ltfn","ecomp","high","low","outside","gtr_1","ltr_1","intersects_1","r1","r2","minimumVersionWithPreRelease","minimumVersion","simpleSubset","sub","dom","eqSet","gtltComp","higher","lower","hasDomLT","hasDomGT","higherGT","lowerLT","needDomLTPre","needDomGTPre","subset_1","sawNonNull","OUTER","simpleSub","simpleDom","isSub","internalRe","simplifyRange","ranges","simplified","original","clean","require$$9","require$$10","require$$11","require$$12","require$$13","rcompare","require$$14","compareLoose","require$$15","require$$16","require$$17","rsort","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","coerce","require$$26","require$$27","require$$28","require$$29","toComparators","require$$30","maxSatisfying","require$$31","minSatisfying","require$$32","minVersion","require$$33","validRange","require$$34","require$$35","gtr","require$$36","ltr","require$$37","require$$38","subset","require$$40","tokens","Operations","semver_1","VERSION_COMPONENTS_REGEX","parseSemver","input","transformed","semVerOperator","aVer","bVer","makeOperator","converter","parseDate","operators","in","endsWith","matches","pattern","safeRegexMatch","contains","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","before","after","semVerEqual","semVerLessThan","semVerGreaterThan","execute","matchClause","maybeNegate","Operations_1","negate","matchAny","testValue","contextValue","segmentSearch","userTargets","targetIndex","matchSegmentTargets_1","includedContexts","included","excludedContexts","Evaluator_1","matchClause_1","bigSegmentsStatusPriority","HEALTHY","STALE","STORE_ERROR","NOT_CONFIGURED","getBigSegmentsStatusPriority","computeUpdatedBigSegmentsStatus","old","latest","EvalState","Match","isMatch","MatchError","queries","bucketer","evaluate","eventFactory","state","evaluateInternal","bigSegmentsStatus","visitedFlags","on","prereqResult","checkPrerequisites","targetRes","ruleRes","evaluateRules","variationForContext","updatedVisitedFlags","prereqFlag","getFlag","evalResult","evalEvent","ruleResult","ruleMatchContext","clauseMatchContext","segmentsVisited","errorResult","getSegment","newVisited","segmentMatchContext","varOrRollout","hadContext","updatedReason","sum","variate","weight","untracked","inExperiment","lastVariate","segmentRuleMatchContext","simpleSegmentMatchContext","unbounded","includeExclude","matched","bigSegmentKind","unboundedContextKind","keyForBigSegment","bigSegmentsMembership","bigSegmentMatchContext","getBigSegmentsMembership","segmentRef","ContextDeduplicator_1","contextKeysCache","contextKeysCapacity","contextKeysFlushInterval","inCache","InMemoryFeatureStore_1","initCalled","addItem","deletedItem","initialized","getDescription","defaultValues","validations","baseUri","eventsUri","timeout","bigSegments","updateProcessor","proxyOptions","stream","useLdd","sendEvents","tlsParams","diagnosticOptOut","validatedOptions","optionName","optionValue","validateTypesAndNames","streamingEndpointSpecified","pollingEndpointSpecified","eventEndpointSpecified","validateEndpoints","updateProcessorFactory","featureStoreFactory","DiagnosticsManager_1","Configuration_1","secondsToMillis","sec","trunc","streamInits","dataSinceDate","diagnosticId","randomUUID","sdkKeySuffix","_d","_e","_f","_g","_h","_j","_k","platformData","sdk","customBaseURI","customStreamURI","customEventsURI","connectTimeoutMillis","socketTimeoutMillis","eventsFlushIntervalMillis","pollingIntervalMillis","reconnectTimeMillis","streamingDisabled","usingRelayDaemon","contextKeysFlushIntervalMillis","usingProxy","usingProxyAuthenticator","usingProxyAuth","diagnosticRecordingIntervalMillis","dataStoreType","osArch","os","arch","osName","osVersion","additional","failed","durationMillis","createStatsEventAndReset","currentTime","evt","isExperiment_1","trackEventsFallthrough","EventFactory_1","defaultVal","prereqOfFlag","addExperimentData","unknownFlagEvent","identifyEvent","customEvent","EventSender_1","defaultHeaders","diagnosticEventsUri","payloadId","canRetry","tryRes","Succeeded","serverDate","Failed","Promise","NullEventProcessor_1","FlagsStateBuilder_1","flagValues","flagMetadata","addFlag","trackReason","detailsOnlyIfTracked","meta","omitDetails","allValues","getFlagValue","getFlagReason","toJSON","$flagsState","$valid","promisify_1","resolve","AsyncStoreFacade_1","LDClientImpl_1","InitState","callbacks","initState","Initializing","eventFactoryDefault","eventFactoryWithReasons","onError","onFailed","onReady","onUpdate","dataSourceUpdates","makeDefaultProcessor","eventProcessor","asyncFacade","manager","bigSegmentsManager","bigSegmentStatusProviderInternal","evaluator","initReject","Initialized","initResolve","waitForInitialization","initializedPromise","reject","defaultValue","evaluateIfPossible","variationDetail","allFlagsState","allFlagState","evalContext","builder","clientOnly","clientSideOnly","detailsOnlyForTrackedFlags","allFlags","storeItem","clientSide","requireExperimentData","secureModeHash","checkedContext","hmac","createHmac","isOffline","track","identify","variationInternal","flagKey","ClientNotReady","UserNotSpecified","FlagNotFound","evalRes","FileLoader_1","filesystem","paths","watch","watchers","fileData","fileTimestamps","loadAndWatch","promises","readFile","timeStamp","getFileTimestamp","results","watcher","updatePath","debounceCallback","debounceHandle","FileDataSource_1","fileLoader","autoUpdate","processFileData","initCallback","yamlParser","fd","processParsedData","makeFlagWithValue","FileDataSourceFactory_1","ldClientContext","fileSystem","getFactory","variationForBoolean","FALSE_VARIATION_INDEX","TRUE_VARIATION_INDEX","TestDataRuleBuilder_1","booleanVariation_1","TestDataRuleBuilder","flagBuilder","andMatch","andNotMatch","thenReturn","booleanFlag","addRule","clone","TestDataFlagBuilder_1","TestDataFlagBuilder","fallthroughVariation","targetsByVariation","isBooleanFlag","targetingOn","variationForAll","clearRules","clearAllTargets","valueForAll","variationForUser","targetsForVariation","targetsForContextKind","ifMatch","ifNotMatch","flagRuleBuilder","baseFlagObject","contextTargetsForVariation","numberVariation","getKey","TestDataSource_1","onStop","TestData_1","currentFlags","currentSegments","dataSources","flagBuilders","newSource","tds","oldVersion","newFlag","impl","usePreconfiguredFlag","inConfig","flagConfig","newItem","usePreconfiguredSegment","segmentConfig","test_data","TestData","FileDataSourceFactory","LDFlagsStateOptions","LDFlagsState","LDBigSegmentsOptions","LDOptions","LDProxyOptions","LDTLSOptions","LDClient","DataKind","LDFeatureStore","LDStreamProcessor","FileDataSourceOptions","BigSegmentStore","BigSegmentStoreMembership","BigSegmentStoreMetadata","BigSegmentStoreStatus","DataCollection","FullDataSet","KeyedItems","VersionedData","BigSegmentStoreStatusProvider","persistent_store","LDFeatureRequestor","LDDataSourceUpdates","subsystems","interfaces","integrations","record","expiration","TtlCache_1","storage","checkIntervalHandle","checkInterval","ttl","purgeStale","persistentStoreKinds","deserialize","serialize","serializedItem","priority","sortDataSet_1","persistentStoreKinds_1","topologicalSort","itemsMap","sortedItems","unvisitedItems","visit","preReq","prereqKey","dataMap","kindNamespace","i1","i2","UpdateQueue_1","updateFn","executePendingUpdates","PersistentDataStoreWrapper_1","cacheKey","allForKindCacheKey","initializationCheckedKey","itemIfNotDeleted","deletedDescriptor","descriptor","deserializedItem","core","isInitialized","itemCache","allItemsCache","itemForKey","itemDescriptor","persistKind","storeInitialized","getAll","storeItems","filteredItems","filteredItem","updatedDescriptor","PersistentDataStoreWrapper","AsyncStoreFacade","NullEventSource_1","url","handlers","closed","simulateError","NullEventSource","BigSegmentStoreStatusProviderImpl","LDClientImpl","createCallbacks_1","createCallbacks","createOptions","defaultOptions","js_server_sdk_common_1","finalOptions","__rest","getOwnPropertySymbols","propertyIsEnumerable","validateOptions_1","validateOptions","rest","LDClient_1","utils_1","storeProvider","cacheableStoreProvider","prefetchPayloadFromOriginStore","EdgeFeatureStore","buildRootKey","edgeProvider","description","rootKey","dataKey","kindKey","CryptoJS","window","globalThis","msCrypto","global","require","cryptoSecureRandomInt","getRandomValues","randomBytes","readInt32LE","F","obj","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","$super","apply","instance","properties","propertyName","WordArray","words","sigBytes","encoder","Hex","concat","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","random","nBytes","C_enc","enc","hexChars","bite","hexStr","hexStrLength","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","charCodeAt","Utf8","decodeURIComponent","escape","utf8Str","encodeURIComponent","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","processedWords","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","offset","_doProcessBlock","Hasher","cfg","_doReset","messageUpdate","finalize","_doFinalize","_createHelper","_createHmacHelper","C_algo","HMAC","algo","factory","X32WordArray","C_x64","x64","Word","toX32","x64Words","x64WordsLength","x32Words","x64Word","wordsLength","ArrayBuffer","superInit","subInit","typedArray","Uint8Array","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","buffer","byteOffset","byteLength","typedArrayByteLength","swapEndian","word","Utf16","Utf16BE","utf16Chars","codePoint","utf16Str","utf16StrLength","Utf16LE","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","Base64url","urlSafe","_safe_map","T","abs","sin","MD5","_hash","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","FF","GG","HH","II","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","H_i","x","HmacMD5","W","SHA1","HmacSHA1","K","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","pow","SHA256","g","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","t1","HmacSHA256","X64Word","X64WordArray","X64Word_create","SHA512","H0","H1","H2","H3","H4","H5","H6","H7","H0h","H0l","H1h","H1l","H2h","H2l","H3h","H3l","H4h","H4l","H5h","H5l","H6h","H6l","H7h","H7l","ah","al","bh","bl","ch","cl","dh","dl","eh","el","fh","fl","gh","gl","hh","hl","Wil","Wih","Wi","gamma0xh","gamma0xl","gamma0h","gamma0l","gamma1xh","gamma1xl","gamma1h","gamma1l","Wi7","Wi7h","Wi7l","Wi16","Wi16h","Wi16l","t1l","chh","chl","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Ki","Kih","Kil","t1h","t2l","HmacSHA512","RHO_OFFSETS","PI_INDEXES","ROUND_CONSTANTS","y","newY","LFSR","roundConstantMsw","roundConstantLsw","bitPosition","SHA3","outputLength","_state","nBlockSizeLanes","M2i","M2i1","lane","round","tMsw","tLsw","Tx","Tx4","Tx1","Tx1Msw","Tx1Lsw","laneIndex","laneMsw","laneLsw","rhoOffset","TPiLane","T0","state0","TLane","Tx1Lane","Tx2Lane","roundConstant","blockSizeBits","outputLengthBytes","outputLengthLanes","hashWords","HmacSHA3","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","EvpKDF","keySize","iterations","compute","password","block","derivedKey","derivedKeyWords","Cipher","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","xformMode","_xformMode","_key","dataUpdate","ivSize","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","cipher","encrypt","decrypt","ciphertext","StreamCipher","C_mode","mode","BlockCipherMode","iv","Encryptor","Decryptor","_cipher","_iv","CBC","xorBlock","_prevBlock","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","BlockCipher","modeCreator","_mode","__creator","finalProcessedBlocks","CipherParams","cipherParams","OpenSSLFormatter","OpenSSL","openSSLStr","ciphertextWords","encryptor","cipherCfg","algorithm","_parse","OpenSSLKdf","kdf","derivedParams","CFB","generateKeystreamAndEncrypt","keystream","CTR","_counter","CTRGladman","incWord","b1","b2","b3","incCounter","OFB","_keystream","PC1","PC2","BIT_SHIFTS","SBOX_P","SBOX_MASK","DES","keyWords","keyBits","keyBitPos","subKeys","_subKeys","nSubKey","subKey","bitShift","invSubKeys","_invSubKeys","_doCryptBlock","_lBlock","_rBlock","exchangeLR","exchangeRL","lBlock","rBlock","mask","TripleDES","key1","key2","key3","_des1","_des2","_des3","SHA224","HmacSHA224","SHA384","HmacSHA384","_zl","_zr","_sl","_sr","_hl","_hr","RIPEMD160","ar","br","cr","dr","zl","zr","sl","sr","f1","f2","f3","f4","f5","rotl","HmacRIPEMD160","PBKDF2","blockIndex","blockIndexWords","blockWords","blockWordsLength","intermediate","intermediateWords","ECB","AnsiX923","lastBytePos","Ansix923","Iso10126","Iso97971","ZeroPadding","NoPadding","SBOX","INV_SBOX","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","AES","_nRounds","_keyPriorReset","ksRows","keySchedule","_keySchedule","ksRow","invKeySchedule","_invKeySchedule","invKsRow","nRounds","s0","s1","s2","s3","t0","t2","t3","RC4","keySigBytes","S","_S","keyByteIndex","keyByte","_i","generateKeystreamWord","keystreamWord","RC4Drop","drop","C_","G","Rabbit","X","_X","_C","nextState","IV","IV_0","IV_1","i0","i3","gx","ga","gb","RabbitLegacy","cryptoJSHasher","crypto_js_1","enc_base64_1","enc_hex_1","encoding","cryptoJSHmac","CryptoJSHmac","crypto_1","cryptoJSHasher_1","cryptoJSHmac_1","array","NoopResponse","json","eventSourceInitDict","requests_1","AkamaiPlatformInfo","platformName","sdkName","sdkVersion","featureStore_1","cacheableStoreProvider_1","platform_1","info_1","params","featureStoreProvider","cachableStoreProvider","ldOptions","initEdge"],"mappings":"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AY,QAEhB,CACI,EAAK,IACL,QAAU,EACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,QAAU,SACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,MACV,SAAU,EACV,SAAU,IACV,OAAS,SACT,QAAU,SACV,QAAU,EACV,QAAU,SACV,QAAU,SACV,QAAU,MACV,QAAU,MACV,QAAU,IACV,QAAU,EACV,QAAU,IACV,SAAU,SACV,SAAU,MACV,SAAU,MACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAW,SACX,SAAW,MACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,EACX,SAAW,MACX,SAAW,SACX,SAAW,IACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,MACX,SAAW,SACX,SAAW,SACX,SAAW,SACX,SAAW,EACX,SAAW,OAEf,CACI,EAAK,WACL,MAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,QACT,OAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,KACT,OAAS,KACT,OAAS,WACT,MAAQ,WACR,MAAS,GACT,OAAS,WACT,OAAS,WACT,OAAS,QACT,OAAS,WACT,OAAS,EACT,OAAS,WACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,KACT,OAAS,WACT,OAAS,QACT,OAAS,QACT,QAAS,WACT,QAAU,QACV,QAAU,QACV,QAAU,WACV,QAAU,EACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,WACV,QAAU,QACV,QAAU,WACV,QAAU,QACV,QAAU,GACV,QAAU,KACV,QAAU,WACV,QAAU,WACV,QAAU,EACV,QAAU,QACV,QAAU,QACV,QAAU,WACV,Q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","x_google_ignoreList":[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230]}