{"version":3,"file":"js/44-00b7065e60d61a2d36c9.js","mappings":"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","sources":["webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://app/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://app/./node_modules/@popperjs/core/lib/createPopper.js","webpack://app/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://app/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://app/./node_modules/@popperjs/core/lib/enums.js","webpack://app/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://app/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://app/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://app/./node_modules/@popperjs/core/lib/popper.js","webpack://app/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://app/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://app/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://app/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://app/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://app/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://app/./node_modules/@popperjs/core/lib/utils/math.js","webpack://app/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://app/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://app/./node_modules/@popperjs/core/lib/utils/within.js","webpack://app/./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js","webpack://app/./node_modules/component-register/dist/component-register.js","webpack://app/./node_modules/i18n-js/dist/import/Locales.js","webpack://app/./node_modules/i18n-js/dist/import/Pluralization.js","webpack://app/./node_modules/make-plural/plurals.mjs","webpack://app/./node_modules/i18n-js/dist/import/helpers/camelCaseKeys.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/isSet.js","webpack://app/./node_modules/bignumber.js/bignumber.mjs","webpack://app/./node_modules/i18n-js/dist/import/helpers/expandRoundMode.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/roundNumber.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/formatNumber.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/getFullScope.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/inferType.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/interpolate.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/lookup.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/numberToHuman.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/numberToHumanSize.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/parseDate.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/pluralize.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/propertyFlatList.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/strftime.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/timeAgoInWords.js","webpack://app/./node_modules/i18n-js/dist/import/MissingTranslation.js","webpack://app/./node_modules/i18n-js/dist/import/I18n.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/createTranslationOptions.js","webpack://app/./node_modules/i18n-js/dist/import/helpers/numberToDelimited.js","webpack://app/./node_modules/lodash/_DataView.js","webpack://app/./node_modules/lodash/_Hash.js","webpack://app/./node_modules/lodash/_ListCache.js","webpack://app/./node_modules/lodash/_Map.js","webpack://app/./node_modules/lodash/_MapCache.js","webpack://app/./node_modules/lodash/_Promise.js","webpack://app/./node_modules/lodash/_Set.js","webpack://app/./node_modules/lodash/_SetCache.js","webpack://app/./node_modules/lodash/_Stack.js","webpack://app/./node_modules/lodash/_Symbol.js","webpack://app/./node_modules/lodash/_Uint8Array.js","webpack://app/./node_modules/lodash/_WeakMap.js","webpack://app/./node_modules/lodash/_apply.js","webpack://app/./node_modules/lodash/_arrayFilter.js","webpack://app/./node_modules/lodash/_arrayIncludes.js","webpack://app/./node_modules/lodash/_arrayIncludesWith.js","webpack://app/./node_modules/lodash/_arrayLikeKeys.js","webpack://app/./node_modules/lodash/_arrayMap.js","webpack://app/./node_modules/lodash/_arrayPush.js","webpack://app/./node_modules/lodash/_arrayReduce.js","webpack://app/./node_modules/lodash/_arraySome.js","webpack://app/./node_modules/lodash/_asciiToArray.js","webpack://app/./node_modules/lodash/_asciiWords.js","webpack://app/./node_modules/lodash/_assignValue.js","webpack://app/./node_modules/lodash/_assocIndexOf.js","webpack://app/./node_modules/lodash/_baseAssignValue.js","webpack://app/./node_modules/lodash/_baseEach.js","webpack://app/./node_modules/lodash/_baseFindIndex.js","webpack://app/./node_modules/lodash/_baseFlatten.js","webpack://app/./node_modules/lodash/_baseFor.js","webpack://app/./node_modules/lodash/_baseForOwn.js","webpack://app/./node_modules/lodash/_baseGet.js","webpack://app/./node_modules/lodash/_baseGetAllKeys.js","webpack://app/./node_modules/lodash/_baseGetTag.js","webpack://app/./node_modules/lodash/_baseHas.js","webpack://app/./node_modules/lodash/_baseHasIn.js","webpack://app/./node_modules/lodash/_baseIndexOf.js","webpack://app/./node_modules/lodash/_baseIsArguments.js","webpack://app/./node_modules/lodash/_baseIsEqual.js","webpack://app/./node_modules/lodash/_baseIsEqualDeep.js","webpack://app/./node_modules/lodash/_baseIsMatch.js","webpack://app/./node_modules/lodash/_baseIsNaN.js","webpack://app/./node_modules/lodash/_baseIsNative.js","webpack://app/./node_modules/lodash/_baseIsTypedArray.js","webpack://app/./node_modules/lodash/_baseIteratee.js","webpack://app/./node_modules/lodash/_baseKeys.js","webpack://app/./node_modules/lodash/_baseMap.js","webpack://app/./node_modules/lodash/_baseMatches.js","webpack://app/./node_modules/lodash/_baseMatchesProperty.js","webpack://app/./node_modules/lodash/_baseOrderBy.js","webpack://app/./node_modules/lodash/_baseProperty.js","webpack://app/./node_modules/lodash/_basePropertyDeep.js","webpack://app/./node_modules/lodash/_basePropertyOf.js","webpack://app/./node_modules/lodash/_baseRange.js","webpack://app/./node_modules/lodash/_baseRepeat.js","webpack://app/./node_modules/lodash/_baseRest.js","webpack://app/./node_modules/lodash/_baseSet.js","webpack://app/./node_modules/lodash/_baseSetToString.js","webpack://app/./node_modules/lodash/_baseSlice.js","webpack://app/./node_modules/lodash/_baseSortBy.js","webpack://app/./node_modules/lodash/_baseTimes.js","webpack://app/./node_modules/lodash/_baseToString.js","webpack://app/./node_modules/lodash/_baseTrim.js","webpack://app/./node_modules/lodash/_baseUnary.js","webpack://app/./node_modules/lodash/_baseUniq.js","webpack://app/./node_modules/lodash/_baseZipObject.js","webpack://app/./node_modules/lodash/_cacheHas.js","webpack://app/./node_modules/lodash/_castPath.js","webpack://app/./node_modules/lodash/_castSlice.js","webpack://app/./node_modules/lodash/_compareAscending.js","webpack://app/./node_modules/lodash/_compareMultiple.js","webpack://app/./node_modules/lodash/_coreJsData.js","webpack://app/./node_modules/lodash/_createBaseEach.js","webpack://app/./node_modules/lodash/_createBaseFor.js","webpack://app/./node_modules/lodash/_createCaseFirst.js","webpack://app/./node_modules/lodash/_createCompounder.js","webpack://app/./node_modules/lodash/_createRange.js","webpack://app/./node_modules/lodash/_createSet.js","webpack://app/./node_modules/lodash/_deburrLetter.js","webpack://app/./node_modules/lodash/_defineProperty.js","webpack://app/./node_modules/lodash/_equalArrays.js","webpack://app/./node_modules/lodash/_equalByTag.js","webpack://app/./node_modules/lodash/_equalObjects.js","webpack://app/./node_modules/lodash/_freeGlobal.js","webpack://app/./node_modules/lodash/_getAllKeys.js","webpack://app/./node_modules/lodash/_getMapData.js","webpack://app/./node_modules/lodash/_getMatchData.js","webpack://app/./node_modules/lodash/_getNative.js","webpack://app/./node_modules/lodash/_getRawTag.js","webpack://app/./node_modules/lodash/_getSymbols.js","webpack://app/./node_modules/lodash/_getTag.js","webpack://app/./node_modules/lodash/_getValue.js","webpack://app/./node_modules/lodash/_hasPath.js","webpack://app/./node_modules/lodash/_hasUnicode.js","webpack://app/./node_modules/lodash/_hasUnicodeWord.js","webpack://app/./node_modules/lodash/_hashClear.js","webpack://app/./node_modules/lodash/_hashDelete.js","webpack://app/./node_modules/lodash/_hashGet.js","webpack://app/./node_modules/lodash/_hashHas.js","webpack://app/./node_modules/lodash/_hashSet.js","webpack://app/./node_modules/lodash/_isFlattenable.js","webpack://app/./node_modules/lodash/_isIndex.js","webpack://app/./node_modules/lodash/_isIterateeCall.js","webpack://app/./node_modules/lodash/_isKey.js","webpack://app/./node_modules/lodash/_isKeyable.js","webpack://app/./node_modules/lodash/_isMasked.js","webpack://app/./node_modules/lodash/_isPrototype.js","webpack://app/./node_modules/lodash/_isStrictComparable.js","webpack://app/./node_modules/lodash/_listCacheClear.js","webpack://app/./node_modules/lodash/_listCacheDelete.js","webpack://app/./node_modules/lodash/_listCacheGet.js","webpack://app/./node_modules/lodash/_listCacheHas.js","webpack://app/./node_modules/lodash/_listCacheSet.js","webpack://app/./node_modules/lodash/_mapCacheClear.js","webpack://app/./node_modules/lodash/_mapCacheDelete.js","webpack://app/./node_modules/lodash/_mapCacheGet.js","webpack://app/./node_modules/lodash/_mapCacheHas.js","webpack://app/./node_modules/lodash/_mapCacheSet.js","webpack://app/./node_modules/lodash/_mapToArray.js","webpack://app/./node_modules/lodash/_matchesStrictComparable.js","webpack://app/./node_modules/lodash/_memoizeCapped.js","webpack://app/./node_modules/lodash/_nativeCreate.js","webpack://app/./node_modules/lodash/_nativeKeys.js","webpack://app/./node_modules/lodash/_nodeUtil.js","webpack://app/./node_modules/lodash/_objectToString.js","webpack://app/./node_modules/lodash/_overArg.js","webpack://app/./node_modules/lodash/_overRest.js","webpack://app/./node_modules/lodash/_root.js","webpack://app/./node_modules/lodash/_setCacheAdd.js","webpack://app/./node_modules/lodash/_setCacheHas.js","webpack://app/./node_modules/lodash/_setToArray.js","webpack://app/./node_modules/lodash/_setToString.js","webpack://app/./node_modules/lodash/_shortOut.js","webpack://app/./node_modules/lodash/_stackClear.js","webpack://app/./node_modules/lodash/_stackDelete.js","webpack://app/./node_modules/lodash/_stackGet.js","webpack://app/./node_modules/lodash/_stackHas.js","webpack://app/./node_modules/lodash/_stackSet.js","webpack://app/./node_modules/lodash/_strictIndexOf.js","webpack://app/./node_modules/lodash/_stringToArray.js","webpack://app/./node_modules/lodash/_stringToPath.js","webpack://app/./node_modules/lodash/_toKey.js","webpack://app/./node_modules/lodash/_toSource.js","webpack://app/./node_modules/lodash/_trimmedEndIndex.js","webpack://app/./node_modules/lodash/_unicodeToArray.js","webpack://app/./node_modules/lodash/_unicodeWords.js","webpack://app/./node_modules/lodash/camelCase.js","webpack://app/./node_modules/lodash/capitalize.js","webpack://app/./node_modules/lodash/constant.js","webpack://app/./node_modules/lodash/deburr.js","webpack://app/./node_modules/lodash/eq.js","webpack://app/./node_modules/lodash/flattenDeep.js","webpack://app/./node_modules/lodash/get.js","webpack://app/./node_modules/lodash/has.js","webpack://app/./node_modules/lodash/hasIn.js","webpack://app/./node_modules/lodash/identity.js","webpack://app/./node_modules/lodash/isArguments.js","webpack://app/./node_modules/lodash/isArray.js","webpack://app/./node_modules/lodash/isArrayLike.js","webpack://app/./node_modules/lodash/isBuffer.js","webpack://app/./node_modules/lodash/isFunction.js","webpack://app/./node_modules/lodash/isLength.js","webpack://app/./node_modules/lodash/isObject.js","webpack://app/./node_modules/lodash/isObjectLike.js","webpack://app/./node_modules/lodash/isSymbol.js","webpack://app/./node_modules/lodash/isTypedArray.js","webpack://app/./node_modules/lodash/keys.js","webpack://app/./node_modules/lodash/memoize.js","webpack://app/./node_modules/lodash/noop.js","webpack://app/./node_modules/lodash/property.js","webpack://app/./node_modules/lodash/range.js","webpack://app/./node_modules/lodash/repeat.js","webpack://app/./node_modules/lodash/set.js","webpack://app/./node_modules/lodash/sortBy.js","webpack://app/./node_modules/lodash/stubArray.js","webpack://app/./node_modules/lodash/stubFalse.js","webpack://app/./node_modules/lodash/toFinite.js","webpack://app/./node_modules/lodash/toInteger.js","webpack://app/./node_modules/lodash/toNumber.js","webpack://app/./node_modules/lodash/toString.js","webpack://app/./node_modules/lodash/uniq.js","webpack://app/./node_modules/lodash/upperFirst.js","webpack://app/./node_modules/lodash/words.js","webpack://app/./node_modules/lodash/zipObject.js","webpack://app/./node_modules/pdfjs-dist/build/pdf.js","webpack://app/./node_modules/pdfjs-dist/webpack.js","webpack://app/./node_modules/sortablejs/modular/sortable.core.esm.js","webpack://app/./node_modules/solid-element/dist/index.js","webpack://app/./node_modules/solid-js/dist/solid.js","webpack://app/./node_modules/solid-js/store/dist/store.js","webpack://app/./node_modules/solid-js/web/dist/web.js"],"sourcesContent":["import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n var context = this;\n\n (function() {\n (function() {\n this.Rails = {\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n buttonClickSelector: {\n selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n exclude: 'form button'\n },\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n formSubmitSelector: 'form:not([data-turbo=true])',\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n };\n\n }).call(this);\n }).call(context);\n\n var Rails = context.Rails;\n\n (function() {\n (function() {\n var nonce;\n\n nonce = null;\n\n Rails.loadCSPNonce = function() {\n var ref;\n return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n };\n\n Rails.cspNonce = function() {\n return nonce != null ? nonce : Rails.loadCSPNonce();\n };\n\n }).call(this);\n (function() {\n var expando, m;\n\n m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n Rails.matches = function(element, selector) {\n if (selector.exclude != null) {\n return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n } else {\n return m.call(element, selector);\n }\n };\n\n expando = '_ujsData';\n\n Rails.getData = function(element, key) {\n var ref;\n return (ref = element[expando]) != null ? ref[key] : void 0;\n };\n\n Rails.setData = function(element, key, value) {\n if (element[expando] == null) {\n element[expando] = {};\n }\n return element[expando][key] = value;\n };\n\n Rails.isContentEditable = function(element) {\n var isEditable;\n isEditable = false;\n while (true) {\n if (element.isContentEditable) {\n isEditable = true;\n break;\n }\n element = element.parentElement;\n if (!element) {\n break;\n }\n }\n return isEditable;\n };\n\n Rails.$ = function(selector) {\n return Array.prototype.slice.call(document.querySelectorAll(selector));\n };\n\n }).call(this);\n (function() {\n var $, csrfParam, csrfToken;\n\n $ = Rails.$;\n\n csrfToken = Rails.csrfToken = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-token]');\n return meta && meta.content;\n };\n\n csrfParam = Rails.csrfParam = function() {\n var meta;\n meta = document.querySelector('meta[name=csrf-param]');\n return meta && meta.content;\n };\n\n Rails.CSRFProtection = function(xhr) {\n var token;\n token = csrfToken();\n if (token != null) {\n return xhr.setRequestHeader('X-CSRF-Token', token);\n }\n };\n\n Rails.refreshCSRFTokens = function() {\n var param, token;\n token = csrfToken();\n param = csrfParam();\n if ((token != null) && (param != null)) {\n return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n return input.value = token;\n });\n }\n };\n\n }).call(this);\n (function() {\n var CustomEvent, fire, matches, preventDefault;\n\n matches = Rails.matches;\n\n CustomEvent = window.CustomEvent;\n\n if (typeof CustomEvent !== 'function') {\n CustomEvent = function(event, params) {\n var evt;\n evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n CustomEvent.prototype = window.Event.prototype;\n preventDefault = CustomEvent.prototype.preventDefault;\n CustomEvent.prototype.preventDefault = function() {\n var result;\n result = preventDefault.call(this);\n if (this.cancelable && !this.defaultPrevented) {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function() {\n return true;\n }\n });\n }\n return result;\n };\n }\n\n fire = Rails.fire = function(obj, name, data) {\n var event;\n event = new CustomEvent(name, {\n bubbles: true,\n cancelable: true,\n detail: data\n });\n obj.dispatchEvent(event);\n return !event.defaultPrevented;\n };\n\n Rails.stopEverything = function(e) {\n fire(e.target, 'ujs:everythingStopped');\n e.preventDefault();\n e.stopPropagation();\n return e.stopImmediatePropagation();\n };\n\n Rails.delegate = function(element, selector, eventType, handler) {\n return element.addEventListener(eventType, function(e) {\n var target;\n target = e.target;\n while (!(!(target instanceof Element) || matches(target, selector))) {\n target = target.parentNode;\n }\n if (target instanceof Element && handler.call(target, e) === false) {\n e.preventDefault();\n return e.stopPropagation();\n }\n });\n };\n\n }).call(this);\n (function() {\n var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n AcceptHeaders = {\n '*': '*/*',\n text: 'text/plain',\n html: 'text/html',\n xml: 'application/xml, text/xml',\n json: 'application/json, text/javascript',\n script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n };\n\n Rails.ajax = function(options) {\n var xhr;\n options = prepareOptions(options);\n xhr = createXHR(options, function() {\n var ref, response;\n response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n if (Math.floor(xhr.status / 100) === 2) {\n if (typeof options.success === \"function\") {\n options.success(response, xhr.statusText, xhr);\n }\n } else {\n if (typeof options.error === \"function\") {\n options.error(response, xhr.statusText, xhr);\n }\n }\n return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n });\n if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n return false;\n }\n if (xhr.readyState === XMLHttpRequest.OPENED) {\n return xhr.send(options.data);\n }\n };\n\n prepareOptions = function(options) {\n options.url = options.url || location.href;\n options.type = options.type.toUpperCase();\n if (options.type === 'GET' && options.data) {\n if (options.url.indexOf('?') < 0) {\n options.url += '?' + options.data;\n } else {\n options.url += '&' + options.data;\n }\n }\n if (AcceptHeaders[options.dataType] == null) {\n options.dataType = '*';\n }\n options.accept = AcceptHeaders[options.dataType];\n if (options.dataType !== '*') {\n options.accept += ', */*; q=0.01';\n }\n return options;\n };\n\n createXHR = function(options, done) {\n var xhr;\n xhr = new XMLHttpRequest();\n xhr.open(options.type, options.url, true);\n xhr.setRequestHeader('Accept', options.accept);\n if (typeof options.data === 'string') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n }\n if (!options.crossDomain) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n CSRFProtection(xhr);\n }\n xhr.withCredentials = !!options.withCredentials;\n xhr.onreadystatechange = function() {\n if (xhr.readyState === XMLHttpRequest.DONE) {\n return done(xhr);\n }\n };\n return xhr;\n };\n\n processResponse = function(response, type) {\n var parser, script;\n if (typeof response === 'string' && typeof type === 'string') {\n if (type.match(/\\bjson\\b/)) {\n try {\n response = JSON.parse(response);\n } catch (error) {}\n } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n script = document.createElement('script');\n script.setAttribute('nonce', cspNonce());\n script.text = response;\n document.head.appendChild(script).parentNode.removeChild(script);\n } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n parser = new DOMParser();\n type = type.replace(/;.+/, '');\n try {\n response = parser.parseFromString(response, type);\n } catch (error) {}\n }\n }\n return response;\n };\n\n Rails.href = function(element) {\n return element.href;\n };\n\n Rails.isCrossDomain = function(url) {\n var e, originAnchor, urlAnchor;\n originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n urlAnchor = document.createElement('a');\n try {\n urlAnchor.href = url;\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (error) {\n e = error;\n return true;\n }\n };\n\n }).call(this);\n (function() {\n var matches, toArray;\n\n matches = Rails.matches;\n\n toArray = function(e) {\n return Array.prototype.slice.call(e);\n };\n\n Rails.serializeElement = function(element, additionalParam) {\n var inputs, params;\n inputs = [element];\n if (matches(element, 'form')) {\n inputs = toArray(element.elements);\n }\n params = [];\n inputs.forEach(function(input) {\n if (!input.name || input.disabled) {\n return;\n }\n if (matches(input, 'fieldset[disabled] *')) {\n return;\n }\n if (matches(input, 'select')) {\n return toArray(input.options).forEach(function(option) {\n if (option.selected) {\n return params.push({\n name: input.name,\n value: option.value\n });\n }\n });\n } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n return params.push({\n name: input.name,\n value: input.value\n });\n }\n });\n if (additionalParam) {\n params.push(additionalParam);\n }\n return params.map(function(param) {\n if (param.name != null) {\n return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n } else {\n return param;\n }\n }).join('&');\n };\n\n Rails.formElements = function(form, selector) {\n if (matches(form, 'form')) {\n return toArray(form.elements).filter(function(el) {\n return matches(el, selector);\n });\n } else {\n return toArray(form.querySelectorAll(selector));\n }\n };\n\n }).call(this);\n (function() {\n var allowAction, fire, stopEverything;\n\n fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n Rails.handleConfirm = function(e) {\n if (!allowAction(this)) {\n return stopEverything(e);\n }\n };\n\n Rails.confirm = function(message, element) {\n return confirm(message);\n };\n\n allowAction = function(element) {\n var answer, callback, message;\n message = element.getAttribute('data-confirm');\n if (!message) {\n return true;\n }\n answer = false;\n if (fire(element, 'confirm')) {\n try {\n answer = Rails.confirm(message, element);\n } catch (error) {}\n callback = fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n };\n\n }).call(this);\n (function() {\n var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isContentEditable, isXhrRedirect, matches, setData, stopEverything;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements, isContentEditable = Rails.isContentEditable;\n\n Rails.handleDisabledElement = function(e) {\n var element;\n element = this;\n if (element.disabled) {\n return stopEverything(e);\n }\n };\n\n Rails.enableElement = function(e) {\n var element;\n if (e instanceof Event) {\n if (isXhrRedirect(e)) {\n return;\n }\n element = e.target;\n } else {\n element = e;\n }\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return enableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n return enableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return enableFormElements(element);\n }\n };\n\n Rails.disableElement = function(e) {\n var element;\n element = e instanceof Event ? e.target : e;\n if (isContentEditable(element)) {\n return;\n }\n if (matches(element, Rails.linkDisableSelector)) {\n return disableLinkElement(element);\n } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n return disableFormElement(element);\n } else if (matches(element, Rails.formSubmitSelector)) {\n return disableFormElements(element);\n }\n };\n\n disableLinkElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n }\n element.addEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', true);\n };\n\n enableLinkElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n element.innerHTML = originalText;\n setData(element, 'ujs:enable-with', null);\n }\n element.removeEventListener('click', stopEverything);\n return setData(element, 'ujs:disabled', null);\n };\n\n disableFormElements = function(form) {\n return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n };\n\n disableFormElement = function(element) {\n var replacement;\n if (getData(element, 'ujs:disabled')) {\n return;\n }\n replacement = element.getAttribute('data-disable-with');\n if (replacement != null) {\n if (matches(element, 'button')) {\n setData(element, 'ujs:enable-with', element.innerHTML);\n element.innerHTML = replacement;\n } else {\n setData(element, 'ujs:enable-with', element.value);\n element.value = replacement;\n }\n }\n element.disabled = true;\n return setData(element, 'ujs:disabled', true);\n };\n\n enableFormElements = function(form) {\n return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n };\n\n enableFormElement = function(element) {\n var originalText;\n originalText = getData(element, 'ujs:enable-with');\n if (originalText != null) {\n if (matches(element, 'button')) {\n element.innerHTML = originalText;\n } else {\n element.value = originalText;\n }\n setData(element, 'ujs:enable-with', null);\n }\n element.disabled = false;\n return setData(element, 'ujs:disabled', null);\n };\n\n isXhrRedirect = function(event) {\n var ref, xhr;\n xhr = (ref = event.detail) != null ? ref[0] : void 0;\n return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n };\n\n }).call(this);\n (function() {\n var isContentEditable, stopEverything;\n\n stopEverything = Rails.stopEverything;\n\n isContentEditable = Rails.isContentEditable;\n\n Rails.handleMethod = function(e) {\n var csrfParam, csrfToken, form, formContent, href, link, method;\n link = this;\n method = link.getAttribute('data-method');\n if (!method) {\n return;\n }\n if (isContentEditable(this)) {\n return;\n }\n href = Rails.href(link);\n csrfToken = Rails.csrfToken();\n csrfParam = Rails.csrfParam();\n form = document.createElement('form');\n formContent = \"\";\n if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n formContent += \"\";\n }\n formContent += '';\n form.method = 'post';\n form.action = href;\n form.target = link.target;\n form.innerHTML = formContent;\n form.style.display = 'none';\n document.body.appendChild(form);\n form.querySelector('[type=\"submit\"]').click();\n return stopEverything(e);\n };\n\n }).call(this);\n (function() {\n var ajax, fire, getData, isContentEditable, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n slice = [].slice;\n\n matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement, isContentEditable = Rails.isContentEditable;\n\n isRemote = function(element) {\n var value;\n value = element.getAttribute('data-remote');\n return (value != null) && value !== 'false';\n };\n\n Rails.handleRemote = function(e) {\n var button, data, dataType, element, method, url, withCredentials;\n element = this;\n if (!isRemote(element)) {\n return true;\n }\n if (!fire(element, 'ajax:before')) {\n fire(element, 'ajax:stopped');\n return false;\n }\n if (isContentEditable(element)) {\n fire(element, 'ajax:stopped');\n return false;\n }\n withCredentials = element.getAttribute('data-with-credentials');\n dataType = element.getAttribute('data-type') || 'script';\n if (matches(element, Rails.formSubmitSelector)) {\n button = getData(element, 'ujs:submit-button');\n method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n if (method.toUpperCase() === 'GET') {\n url = url.replace(/\\?.*$/, '');\n }\n if (element.enctype === 'multipart/form-data') {\n data = new FormData(element);\n if (button != null) {\n data.append(button.name, button.value);\n }\n } else {\n data = serializeElement(element, button);\n }\n setData(element, 'ujs:submit-button', null);\n setData(element, 'ujs:submit-button-formmethod', null);\n setData(element, 'ujs:submit-button-formaction', null);\n } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n method = element.getAttribute('data-method');\n url = element.getAttribute('data-url');\n data = serializeElement(element, element.getAttribute('data-params'));\n } else {\n method = element.getAttribute('data-method');\n url = Rails.href(element);\n data = element.getAttribute('data-params');\n }\n ajax({\n type: method || 'GET',\n url: url,\n data: data,\n dataType: dataType,\n beforeSend: function(xhr, options) {\n if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n return fire(element, 'ajax:send', [xhr]);\n } else {\n fire(element, 'ajax:stopped');\n return false;\n }\n },\n success: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:success', args);\n },\n error: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:error', args);\n },\n complete: function() {\n var args;\n args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n return fire(element, 'ajax:complete', args);\n },\n crossDomain: isCrossDomain(url),\n withCredentials: (withCredentials != null) && withCredentials !== 'false'\n });\n return stopEverything(e);\n };\n\n Rails.formSubmitButtonClick = function(e) {\n var button, form;\n button = this;\n form = button.form;\n if (!form) {\n return;\n }\n if (button.name) {\n setData(form, 'ujs:submit-button', {\n name: button.name,\n value: button.value\n });\n }\n setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n };\n\n Rails.preventInsignificantClick = function(e) {\n var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n link = this;\n method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n data = link.getAttribute('data-params');\n metaClick = e.metaKey || e.ctrlKey;\n insignificantMetaClick = metaClick && method === 'GET' && !data;\n nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n if (nonPrimaryMouseClick || insignificantMetaClick) {\n return e.stopImmediatePropagation();\n }\n };\n\n }).call(this);\n (function() {\n var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n if (jQuery.rails) {\n throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n }\n jQuery.rails = Rails;\n jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n if (!options.crossDomain) {\n return CSRFProtection(xhr);\n }\n });\n }\n\n Rails.start = function() {\n if (window._rails_loaded) {\n throw new Error('rails-ujs has already been loaded!');\n }\n window.addEventListener('pageshow', function() {\n $(Rails.formEnableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n return $(Rails.linkDisableSelector).forEach(function(el) {\n if (getData(el, 'ujs:disabled')) {\n return enableElement(el);\n }\n });\n });\n delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n delegate(document, Rails.linkClickSelector, 'click', disableElement);\n delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n return setTimeout((function() {\n return disableElement(e);\n }), 13);\n });\n delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n document.addEventListener('DOMContentLoaded', loadCSPNonce);\n return window._rails_loaded = true;\n };\n\n if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n Rails.start();\n }\n\n }).call(this);\n }).call(this);\n\n if (typeof module === \"object\" && module.exports) {\n module.exports = Rails;\n } else if (typeof define === \"function\" && define.amd) {\n define(Rails);\n }\n}).call(this);\n","function cloneProps(props) {\n const propKeys = Object.keys(props);\n return propKeys.reduce((memo, k) => {\n const prop = props[k];\n memo[k] = Object.assign({}, prop);\n if (isObject(prop.value) && !isFunction(prop.value) && !Array.isArray(prop.value)) memo[k].value = Object.assign({}, prop.value);\n if (Array.isArray(prop.value)) memo[k].value = prop.value.slice(0);\n return memo;\n }, {});\n}\n\nfunction normalizePropDefs(props) {\n if (!props) return {};\n const propKeys = Object.keys(props);\n return propKeys.reduce((memo, k) => {\n const v = props[k];\n memo[k] = !(isObject(v) && \"value\" in v) ? {\n value: v\n } : v;\n memo[k].attribute || (memo[k].attribute = toAttribute(k));\n memo[k].parse = \"parse\" in memo[k] ? memo[k].parse : typeof memo[k].value !== \"string\";\n return memo;\n }, {});\n}\nfunction propValues(props) {\n const propKeys = Object.keys(props);\n return propKeys.reduce((memo, k) => {\n memo[k] = props[k].value;\n return memo;\n }, {});\n}\nfunction initializeProps(element, propDefinition) {\n const props = cloneProps(propDefinition),\n propKeys = Object.keys(propDefinition);\n propKeys.forEach(key => {\n const prop = props[key],\n attr = element.getAttribute(prop.attribute),\n value = element[key];\n if (attr) prop.value = prop.parse ? parseAttributeValue(attr) : attr;\n if (value != null) prop.value = Array.isArray(value) ? value.slice(0) : value;\n prop.reflect && reflect(element, prop.attribute, prop.value);\n Object.defineProperty(element, key, {\n get() {\n return prop.value;\n },\n\n set(val) {\n const oldValue = prop.value;\n prop.value = val;\n prop.reflect && reflect(this, prop.attribute, prop.value);\n\n for (let i = 0, l = this.__propertyChangedCallbacks.length; i < l; i++) {\n this.__propertyChangedCallbacks[i](key, val, oldValue);\n }\n },\n\n enumerable: true,\n configurable: true\n });\n });\n return props;\n}\nfunction parseAttributeValue(value) {\n if (!value) return;\n\n try {\n return JSON.parse(value);\n } catch (err) {\n return value;\n }\n}\nfunction reflect(node, attribute, value) {\n if (value == null || value === false) return node.removeAttribute(attribute);\n let reflect = JSON.stringify(value);\n node.__updating[attribute] = true;\n if (reflect === \"true\") reflect = \"\";\n node.setAttribute(attribute, reflect);\n Promise.resolve().then(() => delete node.__updating[attribute]);\n}\nfunction toAttribute(propName) {\n return propName.replace(/\\.?([A-Z]+)/g, (x, y) => \"-\" + y.toLowerCase()).replace(\"_\", \"-\").replace(/^-/, \"\");\n}\nfunction toProperty(attr) {\n return attr.toLowerCase().replace(/(-)([a-z])/g, test => test.toUpperCase().replace(\"-\", \"\"));\n}\nfunction isObject(obj) {\n return obj != null && (typeof obj === \"object\" || typeof obj === \"function\");\n}\nfunction isFunction(val) {\n return Object.prototype.toString.call(val) === \"[object Function]\";\n}\nfunction isConstructor(f) {\n return typeof f === \"function\" && f.toString().indexOf(\"class\") === 0;\n}\nfunction reloadElement(node) {\n let callback = null;\n\n while (callback = node.__releaseCallbacks.pop()) callback(node);\n\n delete node.__initialized;\n node.renderRoot.textContent = \"\";\n node.connectedCallback();\n}\n\nlet currentElement;\nfunction getCurrentElement() {\n return currentElement;\n}\nfunction noShadowDOM() {\n Object.defineProperty(currentElement, \"renderRoot\", {\n value: currentElement\n });\n}\nfunction createElementType(BaseElement, propDefinition) {\n const propKeys = Object.keys(propDefinition);\n return class CustomElement extends BaseElement {\n static get observedAttributes() {\n return propKeys.map(k => propDefinition[k].attribute);\n }\n\n constructor() {\n super();\n this.__initialized = false;\n this.__released = false;\n this.__releaseCallbacks = [];\n this.__propertyChangedCallbacks = [];\n this.__updating = {};\n this.props = {};\n }\n\n connectedCallback() {\n if (this.__initialized) return;\n this.__releaseCallbacks = [];\n this.__propertyChangedCallbacks = [];\n this.__updating = {};\n this.props = initializeProps(this, propDefinition);\n const props = propValues(this.props),\n ComponentType = this.Component,\n outerElement = currentElement;\n\n try {\n currentElement = this;\n this.__initialized = true;\n if (isConstructor(ComponentType)) new ComponentType(props, {\n element: this\n });else ComponentType(props, {\n element: this\n });\n } finally {\n currentElement = outerElement;\n }\n }\n\n async disconnectedCallback() {\n // prevent premature releasing when element is only temporarely removed from DOM\n await Promise.resolve();\n if (this.isConnected) return;\n this.__propertyChangedCallbacks.length = 0;\n let callback = null;\n\n while (callback = this.__releaseCallbacks.pop()) callback(this);\n\n delete this.__initialized;\n this.__released = true;\n }\n\n attributeChangedCallback(name, oldVal, newVal) {\n if (!this.__initialized) return;\n if (this.__updating[name]) return;\n name = this.lookupProp(name);\n\n if (name in propDefinition) {\n if (newVal == null && !this[name]) return;\n this[name] = propDefinition[name].parse ? parseAttributeValue(newVal) : newVal;\n }\n }\n\n lookupProp(attrName) {\n if (!propDefinition) return;\n return propKeys.find(k => attrName === k || attrName === propDefinition[k].attribute);\n }\n\n get renderRoot() {\n return this.shadowRoot || this.attachShadow({\n mode: \"open\"\n });\n }\n\n addReleaseCallback(fn) {\n this.__releaseCallbacks.push(fn);\n }\n\n addPropertyChangedCallback(fn) {\n this.__propertyChangedCallbacks.push(fn);\n }\n\n };\n}\n\nfunction createMixin(mixinFn) {\n return ComponentType => (props, options) => {\n options = mixinFn(options);\n if (isConstructor(ComponentType)) return new ComponentType(props, options);\n return ComponentType(props, options);\n };\n}\nfunction compose(...fns) {\n if (fns.length === 0) return i => i;\n if (fns.length === 1) return fns[0];\n return fns.reduce((a, b) => (...args) => a(b(...args)));\n}\n\nconst EC = Symbol('element-context');\n\nfunction lookupContext(element, context) {\n return element[EC] && element[EC][context.id] || (element.host || element.parentNode) && lookupContext(element.host || element.parentNode, context);\n}\n\nfunction createContext(initFn) {\n return {\n id: Symbol('context'),\n initFn\n };\n} // Direct\n\nfunction provide(context, value, element = getCurrentElement()) {\n element[EC] || (element[EC] = {});\n return element[EC][context.id] = context.initFn ? context.initFn(value) : value;\n}\nfunction consume(context, element = getCurrentElement()) {\n return lookupContext(element, context);\n} // HOCs\n\nfunction withProvider(context, value) {\n return createMixin(options => {\n const {\n element\n } = options;\n provide(context, value, element);\n return options;\n });\n}\nfunction withConsumer(context, key) {\n return createMixin(options => {\n const {\n element\n } = options;\n options = Object.assign({}, options, {\n [key]: lookupContext(element, context)\n });\n return options;\n });\n}\n\nfunction walk(root, call) {\n call(root);\n if (root.shadowRoot) walk(root.shadowRoot, call);\n let child = root.firstChild;\n\n while (child) {\n child.nodeType === 1 && walk(child, call);\n child = child.nextSibling;\n }\n}\n\nfunction hot(module, tagName) {\n if (module.hot) {\n function update(possibleError) {\n if (possibleError && possibleError instanceof Error) {\n console.error(possibleError);\n return;\n }\n\n walk(document.body, node => node.localName === tagName && setTimeout(() => reloadElement(node), 0));\n } // handle both Parcel and Webpack style\n\n\n module.hot.accept(update);\n\n if (module.hot.status && module.hot.status() === 'apply') {\n update();\n }\n }\n}\n\nfunction register(tag, props = {}, options = {}) {\n const {\n BaseElement = HTMLElement,\n extension\n } = options;\n return ComponentType => {\n if (!tag) throw new Error(\"tag is required to register a Component\");\n let ElementType = customElements.get(tag);\n\n if (ElementType) {\n // Consider disabling this in a production mode\n ElementType.prototype.Component = ComponentType;\n return ElementType;\n }\n\n ElementType = createElementType(BaseElement, normalizePropDefs(props));\n ElementType.prototype.Component = ComponentType;\n ElementType.prototype.registeredTag = tag;\n customElements.define(tag, ElementType, extension);\n return ElementType;\n };\n}\n\nexport { compose, consume, createContext, createMixin, getCurrentElement, hot, isConstructor, isFunction, isObject, noShadowDOM, provide, register, reloadElement, toAttribute, toProperty, withConsumer, withProvider };\n","import uniq from \"lodash/uniq\";\nexport const defaultLocaleResolver = (i18n, locale) => {\n const locales = [];\n const list = [];\n locales.push(locale);\n if (!locale) {\n locales.push(i18n.locale);\n }\n if (i18n.enableFallback) {\n locales.push(i18n.defaultLocale);\n }\n locales\n .filter(Boolean)\n .map((entry) => entry.toString())\n .forEach(function (currentLocale) {\n if (!list.includes(currentLocale)) {\n list.push(currentLocale);\n }\n if (!i18n.enableFallback) {\n return;\n }\n const codes = currentLocale.split(\"-\");\n if (codes.length === 3) {\n list.push(`${codes[0]}-${codes[1]}`);\n }\n list.push(codes[0]);\n });\n return uniq(list);\n};\nexport class Locales {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultLocaleResolver);\n }\n register(locale, localeResolver) {\n if (typeof localeResolver !== \"function\") {\n const result = localeResolver;\n localeResolver = (() => result);\n }\n this.registry[locale] = localeResolver;\n }\n get(locale) {\n let locales = this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry.default;\n if (typeof locales === \"function\") {\n locales = locales(this.i18n, locale);\n }\n if (!(locales instanceof Array)) {\n locales = [locales];\n }\n return locales;\n }\n}\n//# sourceMappingURL=Locales.js.map","import { en } from \"make-plural\";\nexport function useMakePlural({ pluralizer, includeZero = true, ordinal = false, }) {\n return function (_i18n, count) {\n return [\n includeZero && count === 0 ? \"zero\" : \"\",\n pluralizer(count, ordinal),\n ].filter(Boolean);\n };\n}\nexport const defaultPluralizer = useMakePlural({\n pluralizer: en,\n includeZero: true,\n});\nexport class Pluralization {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"default\", defaultPluralizer);\n }\n register(locale, pluralizer) {\n this.registry[locale] = pluralizer;\n }\n get(locale) {\n return (this.registry[locale] ||\n this.registry[this.i18n.locale] ||\n this.registry[\"default\"]);\n }\n}\n//# sourceMappingURL=Pluralization.js.map","const a = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one' : 'other';\n};\nconst b = (n, ord) => {\n if (ord) return 'other';\n return (n == 0 || n == 1) ? 'one' : 'other';\n};\nconst c = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nconst d = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nconst e = (n, ord) => 'other';\nconst f = (n, ord) => {\n if (ord) return 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : 'other';\n};\n\nexport const af = a;\nexport const ak = b;\nexport const am = c;\nexport const an = a;\nexport const ar = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 99) ? 'many'\n : 'other';\n};\nexport const ars = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 99) ? 'many'\n : 'other';\n};\nexport const as = (n, ord) => {\n if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const asa = a;\nexport const ast = d;\nexport const az = (n, ord) => {\n const s = String(n).split('.'), i = s[0], i10 = i.slice(-1), i100 = i.slice(-2), i1000 = i.slice(-3);\n if (ord) return (i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8) || (i100 == 20 || i100 == 50 || i100 == 70 || i100 == 80) ? 'one'\n : (i10 == 3 || i10 == 4) || (i1000 == 100 || i1000 == 200 || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700 || i1000 == 800 || i1000 == 900) ? 'few'\n : i == 0 || i10 == 6 || (i100 == 40 || i100 == 60 || i100 == 90) ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const bal = (n, ord) => n == 1 ? 'one' : 'other';\nexport const be = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 2 || n10 == 3) && n100 != 12 && n100 != 13 ? 'few' : 'other';\n return n10 == 1 && n100 != 11 ? 'one'\n : (n10 >= 2 && n10 <= 4) && (n100 < 12 || n100 > 14) ? 'few'\n : t0 && n10 == 0 || (n10 >= 5 && n10 <= 9) || (n100 >= 11 && n100 <= 14) ? 'many'\n : 'other';\n};\nexport const bem = a;\nexport const bez = a;\nexport const bg = a;\nexport const bho = b;\nexport const bm = e;\nexport const bn = (n, ord) => {\n if (ord) return (n == 1 || n == 5 || n == 7 || n == 8 || n == 9 || n == 10) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const bo = e;\nexport const br = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), n1000000 = t0 && s[0].slice(-6);\n if (ord) return 'other';\n return n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91 ? 'one'\n : n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92 ? 'two'\n : ((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10 || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90 || n100 > 99) ? 'few'\n : n != 0 && t0 && n1000000 == 0 ? 'many'\n : 'other';\n};\nexport const brx = a;\nexport const bs = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const ca = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 1 || n == 3) ? 'one'\n : n == 2 ? 'two'\n : n == 4 ? 'few'\n : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const ce = a;\nexport const ceb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const cgg = a;\nexport const chr = a;\nexport const ckb = a;\nexport const cs = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : (i >= 2 && i <= 4) && v0 ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const cy = (n, ord) => {\n if (ord) return (n == 0 || n == 7 || n == 8 || n == 9) ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : (n == 3 || n == 4) ? 'few'\n : (n == 5 || n == 6) ? 'many'\n : 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : n == 2 ? 'two'\n : n == 3 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n};\nexport const da = (n, ord) => {\n const s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n == 1 || !t0 && (i == 0 || i == 1) ? 'one' : 'other';\n};\nexport const de = d;\nexport const doi = c;\nexport const dsb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one'\n : v0 && i100 == 2 || f100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n : 'other';\n};\nexport const dv = a;\nexport const dz = e;\nexport const ee = a;\nexport const el = a;\nexport const en = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return n10 == 1 && n100 != 11 ? 'one'\n : n10 == 2 && n100 != 12 ? 'two'\n : n10 == 3 && n100 != 13 ? 'few'\n : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const eo = a;\nexport const es = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const et = d;\nexport const eu = a;\nexport const fa = c;\nexport const ff = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const fi = d;\nexport const fil = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const fo = a;\nexport const fr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const fur = a;\nexport const fy = d;\nexport const ga = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : (t0 && n >= 3 && n <= 6) ? 'few'\n : (t0 && n >= 7 && n <= 10) ? 'many'\n : 'other';\n};\nexport const gd = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (n == 1 || n == 11) ? 'one'\n : (n == 2 || n == 12) ? 'two'\n : (n == 3 || n == 13) ? 'few'\n : 'other';\n return (n == 1 || n == 11) ? 'one'\n : (n == 2 || n == 12) ? 'two'\n : ((t0 && n >= 3 && n <= 10) || (t0 && n >= 13 && n <= 19)) ? 'few'\n : 'other';\n};\nexport const gl = d;\nexport const gsw = a;\nexport const gu = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const guw = b;\nexport const gv = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 ? 'one'\n : v0 && i10 == 2 ? 'two'\n : v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60 || i100 == 80) ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const ha = a;\nexport const haw = a;\nexport const he = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return i == 1 && v0 || i == 0 && !v0 ? 'one'\n : i == 2 && v0 ? 'two'\n : 'other';\n};\nexport const hi = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n >= 0 && n <= 1 ? 'one' : 'other';\n};\nexport const hnj = e;\nexport const hr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const hsb = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 || f100 == 1 ? 'one'\n : v0 && i100 == 2 || f100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || (f100 == 3 || f100 == 4) ? 'few'\n : 'other';\n};\nexport const hu = (n, ord) => {\n if (ord) return (n == 1 || n == 5) ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const hy = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const ia = d;\nexport const id = e;\nexport const ig = e;\nexport const ii = e;\nexport const io = d;\nexport const is = (n, ord) => {\n const s = String(n).split('.'), i = s[0], t = (s[1] || '').replace(/0+$/, ''), t0 = Number(s[0]) == n, i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return t0 && i10 == 1 && i100 != 11 || t % 10 == 1 && t % 100 != 11 ? 'one' : 'other';\n};\nexport const it = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const iu = f;\nexport const ja = e;\nexport const jbo = e;\nexport const jgo = a;\nexport const jmc = a;\nexport const jv = e;\nexport const jw = e;\nexport const ka = (n, ord) => {\n const s = String(n).split('.'), i = s[0], i100 = i.slice(-2);\n if (ord) return i == 1 ? 'one'\n : i == 0 || ((i100 >= 2 && i100 <= 20) || i100 == 40 || i100 == 60 || i100 == 80) ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kab = (n, ord) => {\n if (ord) return 'other';\n return n >= 0 && n < 2 ? 'one' : 'other';\n};\nexport const kaj = a;\nexport const kcg = a;\nexport const kde = e;\nexport const kea = e;\nexport const kk = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n if (ord) return n10 == 6 || n10 == 9 || t0 && n10 == 0 && n != 0 ? 'many' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const kkj = a;\nexport const kl = a;\nexport const km = e;\nexport const kn = c;\nexport const ko = e;\nexport const ks = a;\nexport const ksb = a;\nexport const ksh = (n, ord) => {\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : 'other';\n};\nexport const ku = a;\nexport const kw = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2), n1000 = t0 && s[0].slice(-3), n100000 = t0 && s[0].slice(-5), n1000000 = t0 && s[0].slice(-6);\n if (ord) return (t0 && n >= 1 && n <= 4) || ((n100 >= 1 && n100 <= 4) || (n100 >= 21 && n100 <= 24) || (n100 >= 41 && n100 <= 44) || (n100 >= 61 && n100 <= 64) || (n100 >= 81 && n100 <= 84)) ? 'one'\n : n == 5 || n100 == 5 ? 'many'\n : 'other';\n return n == 0 ? 'zero'\n : n == 1 ? 'one'\n : (n100 == 2 || n100 == 22 || n100 == 42 || n100 == 62 || n100 == 82) || t0 && n1000 == 0 && ((n100000 >= 1000 && n100000 <= 20000) || n100000 == 40000 || n100000 == 60000 || n100000 == 80000) || n != 0 && n1000000 == 100000 ? 'two'\n : (n100 == 3 || n100 == 23 || n100 == 43 || n100 == 63 || n100 == 83) ? 'few'\n : n != 1 && (n100 == 1 || n100 == 21 || n100 == 41 || n100 == 61 || n100 == 81) ? 'many'\n : 'other';\n};\nexport const ky = a;\nexport const lag = (n, ord) => {\n const s = String(n).split('.'), i = s[0];\n if (ord) return 'other';\n return n == 0 ? 'zero'\n : (i == 0 || i == 1) && n != 0 ? 'one'\n : 'other';\n};\nexport const lb = a;\nexport const lg = a;\nexport const lij = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n;\n if (ord) return (n == 11 || n == 8 || (t0 && n >= 80 && n <= 89) || (t0 && n >= 800 && n <= 899)) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const lkt = e;\nexport const ln = b;\nexport const lo = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const lt = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n10 == 1 && (n100 < 11 || n100 > 19) ? 'one'\n : (n10 >= 2 && n10 <= 9) && (n100 < 11 || n100 > 19) ? 'few'\n : f != 0 ? 'many'\n : 'other';\n};\nexport const lv = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n : 'other';\n};\nexport const mas = a;\nexport const mg = b;\nexport const mgo = a;\nexport const mk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return i10 == 1 && i100 != 11 ? 'one'\n : i10 == 2 && i100 != 12 ? 'two'\n : (i10 == 7 || i10 == 8) && i100 != 17 && i100 != 18 ? 'many'\n : 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one' : 'other';\n};\nexport const ml = a;\nexport const mn = a;\nexport const mo = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one'\n : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n : 'other';\n};\nexport const mr = (n, ord) => {\n if (ord) return n == 1 ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const ms = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const mt = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return n == 1 ? 'one'\n : n == 2 ? 'two'\n : n == 0 || (n100 >= 3 && n100 <= 10) ? 'few'\n : (n100 >= 11 && n100 <= 19) ? 'many'\n : 'other';\n};\nexport const my = e;\nexport const nah = a;\nexport const naq = f;\nexport const nb = a;\nexport const nd = a;\nexport const ne = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (t0 && n >= 1 && n <= 4) ? 'one' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const nl = d;\nexport const nn = a;\nexport const nnh = a;\nexport const no = a;\nexport const nqo = e;\nexport const nr = a;\nexport const nso = b;\nexport const ny = a;\nexport const nyn = a;\nexport const om = a;\nexport const or = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (n == 1 || n == 5 || (t0 && n >= 7 && n <= 9)) ? 'one'\n : (n == 2 || n == 3) ? 'two'\n : n == 4 ? 'few'\n : n == 6 ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const os = a;\nexport const osa = e;\nexport const pa = b;\nexport const pap = a;\nexport const pcm = c;\nexport const pl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i != 1 && (i10 == 0 || i10 == 1) || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 12 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const prg = (n, ord) => {\n const s = String(n).split('.'), f = s[1] || '', v = f.length, t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return t0 && n10 == 0 || (n100 >= 11 && n100 <= 19) || v == 2 && (f100 >= 11 && f100 <= 19) ? 'zero'\n : n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11 || v != 2 && f10 == 1 ? 'one'\n : 'other';\n};\nexport const ps = a;\nexport const pt = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return (i == 0 || i == 1) ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const pt_PT = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const rm = a;\nexport const ro = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one' : 'other';\n return n == 1 && v0 ? 'one'\n : !v0 || n == 0 || n != 1 && (n100 >= 1 && n100 <= 19) ? 'few'\n : 'other';\n};\nexport const rof = a;\nexport const ru = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const rwk = a;\nexport const sah = e;\nexport const saq = a;\nexport const sat = f;\nexport const sc = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const scn = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1];\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sd = a;\nexport const sdh = a;\nexport const se = f;\nexport const seh = a;\nexport const ses = e;\nexport const sg = e;\nexport const sh = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const shi = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return n >= 0 && n <= 1 ? 'one'\n : (t0 && n >= 2 && n <= 10) ? 'few'\n : 'other';\n};\nexport const si = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '';\n if (ord) return 'other';\n return (n == 0 || n == 1) || i == 0 && f == 1 ? 'one' : 'other';\n};\nexport const sk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return n == 1 && v0 ? 'one'\n : (i >= 2 && i <= 4) && v0 ? 'few'\n : !v0 ? 'many'\n : 'other';\n};\nexport const sl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);\n if (ord) return 'other';\n return v0 && i100 == 1 ? 'one'\n : v0 && i100 == 2 ? 'two'\n : v0 && (i100 == 3 || i100 == 4) || !v0 ? 'few'\n : 'other';\n};\nexport const sma = f;\nexport const smi = f;\nexport const smj = f;\nexport const smn = f;\nexport const sms = f;\nexport const sn = a;\nexport const so = a;\nexport const sq = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return n == 1 ? 'one'\n : n10 == 4 && n100 != 14 ? 'many'\n : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const sr = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return v0 && i10 == 1 && i100 != 11 || f10 == 1 && f100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) || (f10 >= 2 && f10 <= 4) && (f100 < 12 || f100 > 14) ? 'few'\n : 'other';\n};\nexport const ss = a;\nexport const ssy = a;\nexport const st = a;\nexport const su = e;\nexport const sv = (n, ord) => {\n const s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 1 || n10 == 2) && n100 != 11 && n100 != 12 ? 'one' : 'other';\n return n == 1 && v0 ? 'one' : 'other';\n};\nexport const sw = d;\nexport const syr = a;\nexport const ta = a;\nexport const te = a;\nexport const teo = a;\nexport const th = e;\nexport const ti = b;\nexport const tig = a;\nexport const tk = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1);\n if (ord) return (n10 == 6 || n10 == 9) || n == 10 ? 'few' : 'other';\n return n == 1 ? 'one' : 'other';\n};\nexport const tl = (n, ord) => {\n const s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1], i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return n == 1 ? 'one' : 'other';\n return v0 && (i == 1 || i == 2 || i == 3) || v0 && i10 != 4 && i10 != 6 && i10 != 9 || !v0 && f10 != 4 && f10 != 6 && f10 != 9 ? 'one' : 'other';\n};\nexport const tn = a;\nexport const to = e;\nexport const tpi = e;\nexport const tr = a;\nexport const ts = a;\nexport const tzm = (n, ord) => {\n const s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return (n == 0 || n == 1) || (t0 && n >= 11 && n <= 99) ? 'one' : 'other';\n};\nexport const ug = a;\nexport const uk = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return n10 == 3 && n100 != 13 ? 'few' : 'other';\n return v0 && i10 == 1 && i100 != 11 ? 'one'\n : v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14) ? 'few'\n : v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9) || v0 && (i100 >= 11 && i100 <= 14) ? 'many'\n : 'other';\n};\nexport const und = e;\nexport const ur = d;\nexport const uz = a;\nexport const ve = a;\nexport const vec = (n, ord) => {\n const s = String(n).split('.'), i = s[0], v0 = !s[1], i1000000 = i.slice(-6);\n if (ord) return (n == 11 || n == 8 || n == 80 || n == 800) ? 'many' : 'other';\n return n == 1 && v0 ? 'one'\n : i != 0 && i1000000 == 0 && v0 ? 'many'\n : 'other';\n};\nexport const vi = (n, ord) => {\n if (ord) return n == 1 ? 'one' : 'other';\n return 'other';\n};\nexport const vo = a;\nexport const vun = a;\nexport const wa = b;\nexport const wae = a;\nexport const wo = e;\nexport const xh = a;\nexport const xog = a;\nexport const yi = d;\nexport const yo = e;\nexport const yue = e;\nexport const zh = e;\nexport const zu = c;\n","import camelCase from \"lodash/camelCase\";\nexport function camelCaseKeys(target) {\n if (!target) {\n return {};\n }\n return Object.keys(target).reduce((buffer, key) => {\n buffer[camelCase(key)] = target[key];\n return buffer;\n }, {});\n}\n//# sourceMappingURL=camelCaseKeys.js.map","export function isSet(value) {\n return value !== undefined && value !== null;\n}\n//# sourceMappingURL=isSet.js.map","/*\r\n * bignumber.js v9.1.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","import BigNumber from \"bignumber.js\";\nvar RoundingModeMap;\n(function (RoundingModeMap) {\n RoundingModeMap[RoundingModeMap[\"up\"] = BigNumber.ROUND_UP] = \"up\";\n RoundingModeMap[RoundingModeMap[\"down\"] = BigNumber.ROUND_DOWN] = \"down\";\n RoundingModeMap[RoundingModeMap[\"truncate\"] = BigNumber.ROUND_DOWN] = \"truncate\";\n RoundingModeMap[RoundingModeMap[\"halfUp\"] = BigNumber.ROUND_HALF_UP] = \"halfUp\";\n RoundingModeMap[RoundingModeMap[\"default\"] = BigNumber.ROUND_HALF_UP] = \"default\";\n RoundingModeMap[RoundingModeMap[\"halfDown\"] = BigNumber.ROUND_HALF_DOWN] = \"halfDown\";\n RoundingModeMap[RoundingModeMap[\"halfEven\"] = BigNumber.ROUND_HALF_EVEN] = \"halfEven\";\n RoundingModeMap[RoundingModeMap[\"banker\"] = BigNumber.ROUND_HALF_EVEN] = \"banker\";\n RoundingModeMap[RoundingModeMap[\"ceiling\"] = BigNumber.ROUND_CEIL] = \"ceiling\";\n RoundingModeMap[RoundingModeMap[\"ceil\"] = BigNumber.ROUND_CEIL] = \"ceil\";\n RoundingModeMap[RoundingModeMap[\"floor\"] = BigNumber.ROUND_FLOOR] = \"floor\";\n})(RoundingModeMap || (RoundingModeMap = {}));\nexport function expandRoundMode(roundMode) {\n var _a;\n return ((_a = RoundingModeMap[roundMode]) !== null && _a !== void 0 ? _a : RoundingModeMap.default);\n}\n//# sourceMappingURL=expandRoundMode.js.map","import BigNumber from \"bignumber.js\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nfunction digitCount(numeric) {\n if (numeric.isZero()) {\n return 1;\n }\n return Math.floor(Math.log10(numeric.abs().toNumber()) + 1);\n}\nfunction getAbsolutePrecision(numeric, { precision, significant }) {\n if (significant && precision !== null && precision > 0) {\n return precision - digitCount(numeric);\n }\n return precision;\n}\nexport function roundNumber(numeric, options) {\n const precision = getAbsolutePrecision(numeric, options);\n if (precision === null) {\n return numeric.toString();\n }\n const roundMode = expandRoundMode(options.roundMode);\n if (precision >= 0) {\n return numeric.toFixed(precision, roundMode);\n }\n const rounder = Math.pow(10, Math.abs(precision));\n numeric = new BigNumber(numeric.div(rounder).toFixed(0, roundMode)).times(rounder);\n return numeric.toString();\n}\n//# sourceMappingURL=roundNumber.js.map","import BigNumber from \"bignumber.js\";\nimport repeat from \"lodash/repeat\";\nimport { roundNumber } from \"./roundNumber\";\nfunction replaceInFormat(format, { formattedNumber, unit }) {\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\nfunction computeSignificand({ significand, whole, precision, }) {\n if (whole === \"0\" || precision === null) {\n return significand;\n }\n const limit = Math.max(0, precision - whole.length);\n return (significand !== null && significand !== void 0 ? significand : \"\").substr(0, limit);\n}\nexport function formatNumber(input, options) {\n var _a, _b, _c;\n const originalNumber = new BigNumber(input);\n if (options.raise && !originalNumber.isFinite()) {\n throw new Error(`\"${input}\" is not a valid numeric value`);\n }\n const roundedNumber = roundNumber(originalNumber, options);\n const numeric = new BigNumber(roundedNumber);\n const isNegative = numeric.lt(0);\n const isZero = numeric.isZero();\n let [whole, significand] = roundedNumber.split(\".\");\n const buffer = [];\n let formattedNumber;\n const positiveFormat = (_a = options.format) !== null && _a !== void 0 ? _a : \"%n\";\n const negativeFormat = (_b = options.negativeFormat) !== null && _b !== void 0 ? _b : `-${positiveFormat}`;\n const format = isNegative && !isZero ? negativeFormat : positiveFormat;\n whole = whole.replace(\"-\", \"\");\n while (whole.length > 0) {\n buffer.unshift(whole.substr(Math.max(0, whole.length - 3), 3));\n whole = whole.substr(0, whole.length - 3);\n }\n whole = buffer.join(\"\");\n formattedNumber = buffer.join(options.delimiter);\n if (options.significant) {\n significand = computeSignificand({\n whole,\n significand,\n precision: options.precision,\n });\n }\n else {\n significand = significand !== null && significand !== void 0 ? significand : repeat(\"0\", (_c = options.precision) !== null && _c !== void 0 ? _c : 0);\n }\n if (options.stripInsignificantZeros && significand) {\n significand = significand.replace(/0+$/, \"\");\n }\n if (originalNumber.isNaN()) {\n formattedNumber = input.toString();\n }\n if (significand && originalNumber.isFinite()) {\n formattedNumber += (options.separator || \".\") + significand;\n }\n return replaceInFormat(format, {\n formattedNumber,\n unit: options.unit,\n });\n}\n//# sourceMappingURL=formatNumber.js.map","export function getFullScope(i18n, scope, options) {\n let result = \"\";\n if (scope instanceof String || typeof scope === \"string\") {\n result = scope;\n }\n if (scope instanceof Array) {\n result = scope.join(i18n.defaultSeparator);\n }\n if (options.scope) {\n result = [options.scope, result].join(i18n.defaultSeparator);\n }\n return result;\n}\n//# sourceMappingURL=getFullScope.js.map","export function inferType(instance) {\n var _a, _b;\n if (instance === null) {\n return \"null\";\n }\n const type = typeof instance;\n if (type !== \"object\") {\n return type;\n }\n return ((_b = (_a = instance === null || instance === void 0 ? void 0 : instance.constructor) === null || _a === void 0 ? void 0 : _a.name) === null || _b === void 0 ? void 0 : _b.toLowerCase()) || \"object\";\n}\n//# sourceMappingURL=inferType.js.map","import { isSet } from \"./isSet\";\nexport function interpolate(i18n, message, options) {\n options = Object.keys(options).reduce((buffer, key) => {\n buffer[i18n.transformKey(key)] = options[key];\n return buffer;\n }, {});\n const matches = message.match(i18n.placeholder);\n if (!matches) {\n return message;\n }\n while (matches.length) {\n let value;\n const placeholder = matches.shift();\n const name = placeholder.replace(i18n.placeholder, \"$1\");\n if (isSet(options[name])) {\n value = options[name].toString().replace(/\\$/gm, \"_#$#_\");\n }\n else if (name in options) {\n value = i18n.nullPlaceholder(i18n, placeholder, message, options);\n }\n else {\n value = i18n.missingPlaceholder(i18n, placeholder, message, options);\n }\n const regex = new RegExp(placeholder.replace(/\\{/gm, \"\\\\{\").replace(/\\}/gm, \"\\\\}\"));\n message = message.replace(regex, value);\n }\n return message.replace(/_#\\$#_/g, \"$\");\n}\n//# sourceMappingURL=interpolate.js.map","import get from \"lodash/get\";\nimport { isSet } from \"./isSet\";\nimport { getFullScope } from \"./getFullScope\";\nimport { inferType } from \"./inferType\";\nexport function lookup(i18n, scope, options = {}) {\n options = Object.assign({}, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const locales = i18n.locales\n .get(localeType === \"string\" ? locale : typeof locale)\n .slice();\n scope = getFullScope(i18n, scope, options)\n .split(i18n.defaultSeparator)\n .map((component) => i18n.transformKey(component))\n .join(\".\");\n const entries = locales.map((locale) => get(i18n.translations, [locale, scope].join(\".\")));\n entries.push(options.defaultValue);\n return entries.find((entry) => isSet(entry));\n}\n//# sourceMappingURL=lookup.js.map","import BigNumber from \"bignumber.js\";\nimport sortBy from \"lodash/sortBy\";\nimport zipObject from \"lodash/zipObject\";\nimport { getFullScope } from \"./getFullScope\";\nimport { lookup } from \"./lookup\";\nimport { roundNumber } from \"./roundNumber\";\nimport { inferType } from \"./inferType\";\nconst DECIMAL_UNITS = {\n \"0\": \"unit\",\n \"1\": \"ten\",\n \"2\": \"hundred\",\n \"3\": \"thousand\",\n \"6\": \"million\",\n \"9\": \"billion\",\n \"12\": \"trillion\",\n \"15\": \"quadrillion\",\n \"-1\": \"deci\",\n \"-2\": \"centi\",\n \"-3\": \"mili\",\n \"-6\": \"micro\",\n \"-9\": \"nano\",\n \"-12\": \"pico\",\n \"-15\": \"femto\",\n};\nconst INVERTED_DECIMAL_UNITS = zipObject(Object.values(DECIMAL_UNITS), Object.keys(DECIMAL_UNITS).map((key) => parseInt(key, 10)));\nexport function numberToHuman(i18n, input, options) {\n const roundOptions = {\n roundMode: options.roundMode,\n precision: options.precision,\n significant: options.significant,\n };\n let units;\n if (inferType(options.units) === \"string\") {\n const scope = options.units;\n units = lookup(i18n, scope);\n if (!units) {\n throw new Error(`The scope \"${i18n.locale}${i18n.defaultSeparator}${getFullScope(i18n, scope, {})}\" couldn't be found`);\n }\n }\n else {\n units = options.units;\n }\n let formattedNumber = roundNumber(new BigNumber(input), roundOptions);\n const unitExponents = (units) => sortBy(Object.keys(units).map((name) => INVERTED_DECIMAL_UNITS[name]), (numeric) => numeric * -1);\n const calculateExponent = (num, units) => {\n const exponent = num.isZero()\n ? 0\n : Math.floor(Math.log10(num.abs().toNumber()));\n return unitExponents(units).find((exp) => exponent >= exp) || 0;\n };\n const determineUnit = (units, exponent) => {\n const expName = DECIMAL_UNITS[exponent.toString()];\n return units[expName] || \"\";\n };\n const exponent = calculateExponent(new BigNumber(formattedNumber), units);\n const unit = determineUnit(units, exponent);\n formattedNumber = roundNumber(new BigNumber(formattedNumber).div(Math.pow(10, exponent)), roundOptions);\n if (options.stripInsignificantZeros) {\n let [whole, significand] = formattedNumber.split(\".\");\n significand = (significand || \"\").replace(/0+$/, \"\");\n formattedNumber = whole;\n if (significand) {\n formattedNumber += `${options.separator}${significand}`;\n }\n }\n return options.format\n .replace(\"%n\", formattedNumber || \"0\")\n .replace(\"%u\", unit)\n .trim();\n}\n//# sourceMappingURL=numberToHuman.js.map","import BigNumber from \"bignumber.js\";\nimport { roundNumber } from \"./roundNumber\";\nimport { expandRoundMode } from \"./expandRoundMode\";\nconst STORAGE_UNITS = [\"byte\", \"kb\", \"mb\", \"gb\", \"tb\", \"pb\", \"eb\"];\nexport function numberToHumanSize(i18n, input, options) {\n const roundMode = expandRoundMode(options.roundMode);\n const base = 1024;\n const num = new BigNumber(input).abs();\n const smallerThanBase = num.lt(base);\n let numberToBeFormatted;\n const computeExponent = (numeric, units) => {\n const max = units.length - 1;\n const exp = new BigNumber(Math.log(numeric.toNumber()))\n .div(Math.log(base))\n .integerValue(BigNumber.ROUND_DOWN)\n .toNumber();\n return Math.min(max, exp);\n };\n const storageUnitKey = (units) => {\n const keyEnd = smallerThanBase ? \"byte\" : units[exponent];\n return `number.human.storage_units.units.${keyEnd}`;\n };\n const exponent = computeExponent(num, STORAGE_UNITS);\n if (smallerThanBase) {\n numberToBeFormatted = num.integerValue();\n }\n else {\n numberToBeFormatted = new BigNumber(roundNumber(num.div(Math.pow(base, exponent)), {\n significant: options.significant,\n precision: options.precision,\n roundMode: options.roundMode,\n }));\n }\n const format = i18n.translate(\"number.human.storage_units.format\", {\n defaultValue: \"%n %u\",\n });\n const unit = i18n.translate(storageUnitKey(STORAGE_UNITS), {\n count: num.integerValue().toNumber(),\n });\n let formattedNumber = numberToBeFormatted.toFixed(options.precision, roundMode);\n if (options.stripInsignificantZeros) {\n formattedNumber = formattedNumber\n .replace(/(\\..*?)0+$/, \"$1\")\n .replace(/\\.$/, \"\");\n }\n return format.replace(\"%n\", formattedNumber).replace(\"%u\", unit);\n}\n//# sourceMappingURL=numberToHumanSize.js.map","export function parseDate(input) {\n if (input instanceof Date) {\n return input;\n }\n if (typeof input === \"number\") {\n const date = new Date();\n date.setTime(input);\n return date;\n }\n const matches = new String(input).match(/(\\d{4})-(\\d{2})-(\\d{2})(?:[ T](\\d{2}):(\\d{2}):(\\d{2})(?:[.,](\\d{1,3}))?)?(Z|\\+00:?00)?/);\n if (matches) {\n const parts = matches.slice(1, 8).map((match) => parseInt(match, 10) || 0);\n parts[1] -= 1;\n const [year, month, day, hour, minute, second, milliseconds] = parts;\n const timezone = matches[8];\n if (timezone) {\n return new Date(Date.UTC(year, month, day, hour, minute, second, milliseconds));\n }\n else {\n return new Date(year, month, day, hour, minute, second, milliseconds);\n }\n }\n if (input.match(/([A-Z][a-z]{2}) ([A-Z][a-z]{2}) (\\d+) (\\d+:\\d+:\\d+) ([+-]\\d+) (\\d+)/)) {\n const date = new Date();\n date.setTime(Date.parse([RegExp.$1, RegExp.$2, RegExp.$3, RegExp.$6, RegExp.$4, RegExp.$5].join(\" \")));\n }\n const date = new Date();\n date.setTime(Date.parse(input));\n return date;\n}\n//# sourceMappingURL=parseDate.js.map","import { isSet } from \"./isSet\";\nimport { lookup } from \"./lookup\";\nexport function pluralize({ i18n, count, scope, options, baseScope, }) {\n options = Object.assign({}, options);\n let translations;\n let message;\n if (typeof scope === \"object\" && scope) {\n translations = scope;\n }\n else {\n translations = lookup(i18n, scope, options);\n }\n if (!translations) {\n return i18n.missingTranslation.get(scope, options);\n }\n const pluralizer = i18n.pluralization.get(options.locale);\n const keys = pluralizer(i18n, count);\n const missingKeys = [];\n while (keys.length) {\n const key = keys.shift();\n if (isSet(translations[key])) {\n message = translations[key];\n break;\n }\n missingKeys.push(key);\n }\n if (!isSet(message)) {\n return i18n.missingTranslation.get(baseScope.split(i18n.defaultSeparator).concat([missingKeys[0]]), options);\n }\n options.count = count;\n return i18n.interpolate(i18n, message, options);\n}\n//# sourceMappingURL=pluralize.js.map","import isArray from \"lodash/isArray\";\nimport isObject from \"lodash/isObject\";\nimport flattenDeep from \"lodash/flattenDeep\";\nclass PropertyFlatList {\n constructor(target) {\n this.target = target;\n }\n call() {\n const keys = flattenDeep(Object.keys(this.target).map((key) => this.compute(this.target[key], key)));\n keys.sort();\n return keys;\n }\n compute(value, path) {\n if (!isArray(value) && isObject(value)) {\n return Object.keys(value).map((key) => this.compute(value[key], `${path}.${key}`));\n }\n else {\n return path;\n }\n }\n}\nexport function propertyFlatList(target) {\n return new PropertyFlatList(target).call();\n}\n//# sourceMappingURL=propertyFlatList.js.map","const DEFAULT_OPTIONS = {\n meridian: { am: \"AM\", pm: \"PM\" },\n dayNames: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n abbrDayNames: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n monthNames: [\n null,\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n abbrMonthNames: [\n null,\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n};\nexport function strftime(date, format, options = {}) {\n const { abbrDayNames, dayNames, abbrMonthNames, monthNames, meridian: AM_PM, } = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);\n if (isNaN(date.getTime())) {\n throw new Error(\"strftime() requires a valid date object, but received an invalid date.\");\n }\n const weekDay = date.getDay();\n const day = date.getDate();\n const year = date.getFullYear();\n const month = date.getMonth() + 1;\n const hour = date.getHours();\n let hour12 = hour;\n const meridian = hour > 11 ? \"pm\" : \"am\";\n const secs = date.getSeconds();\n const mins = date.getMinutes();\n const offset = date.getTimezoneOffset();\n const absOffsetHours = Math.floor(Math.abs(offset / 60));\n const absOffsetMinutes = Math.abs(offset) - absOffsetHours * 60;\n const timezoneoffset = (offset > 0 ? \"-\" : \"+\") +\n (absOffsetHours.toString().length < 2\n ? \"0\" + absOffsetHours\n : absOffsetHours) +\n (absOffsetMinutes.toString().length < 2\n ? \"0\" + absOffsetMinutes\n : absOffsetMinutes);\n if (hour12 > 12) {\n hour12 = hour12 - 12;\n }\n else if (hour12 === 0) {\n hour12 = 12;\n }\n format = format.replace(\"%a\", abbrDayNames[weekDay]);\n format = format.replace(\"%A\", dayNames[weekDay]);\n format = format.replace(\"%b\", abbrMonthNames[month]);\n format = format.replace(\"%B\", monthNames[month]);\n format = format.replace(\"%d\", day.toString().padStart(2, \"0\"));\n format = format.replace(\"%e\", day.toString());\n format = format.replace(\"%-d\", day.toString());\n format = format.replace(\"%H\", hour.toString().padStart(2, \"0\"));\n format = format.replace(\"%-H\", hour.toString());\n format = format.replace(\"%k\", hour.toString());\n format = format.replace(\"%I\", hour12.toString().padStart(2, \"0\"));\n format = format.replace(\"%-I\", hour12.toString());\n format = format.replace(\"%l\", hour12.toString());\n format = format.replace(\"%m\", month.toString().padStart(2, \"0\"));\n format = format.replace(\"%-m\", month.toString());\n format = format.replace(\"%M\", mins.toString().padStart(2, \"0\"));\n format = format.replace(\"%-M\", mins.toString());\n format = format.replace(\"%p\", AM_PM[meridian]);\n format = format.replace(\"%P\", AM_PM[meridian].toLowerCase());\n format = format.replace(\"%S\", secs.toString().padStart(2, \"0\"));\n format = format.replace(\"%-S\", secs.toString());\n format = format.replace(\"%w\", weekDay.toString());\n format = format.replace(\"%y\", year.toString().padStart(2, \"0\").substr(-2));\n format = format.replace(\"%-y\", year.toString().padStart(2, \"0\").substr(-2).replace(/^0+/, \"\"));\n format = format.replace(\"%Y\", year.toString());\n format = format.replace(/%z/i, timezoneoffset);\n return format;\n}\n//# sourceMappingURL=strftime.js.map","import range from \"lodash/range\";\nimport { parseDate } from \"./parseDate\";\nconst within = (start, end, actual) => actual >= start && actual <= end;\nexport function timeAgoInWords(i18n, fromTime, toTime, options = {}) {\n const scope = options.scope || \"datetime.distance_in_words\";\n const t = (name, count = 0) => i18n.t(name, { count, scope });\n fromTime = parseDate(fromTime);\n toTime = parseDate(toTime);\n let fromInSeconds = fromTime.getTime() / 1000;\n let toInSeconds = toTime.getTime() / 1000;\n if (fromInSeconds > toInSeconds) {\n [fromTime, toTime, fromInSeconds, toInSeconds] = [\n toTime,\n fromTime,\n toInSeconds,\n fromInSeconds,\n ];\n }\n const distanceInSeconds = Math.round(toInSeconds - fromInSeconds);\n const distanceInMinutes = Math.round((toInSeconds - fromInSeconds) / 60);\n const distanceInHours = distanceInMinutes / 60;\n const distanceInDays = distanceInHours / 24;\n const distanceInHoursRounded = Math.round(distanceInMinutes / 60);\n const distanceInDaysRounded = Math.round(distanceInDays);\n const distanceInMonthsRounded = Math.round(distanceInDaysRounded / 30);\n if (within(0, 1, distanceInMinutes)) {\n if (!options.includeSeconds) {\n return distanceInMinutes === 0\n ? t(\"less_than_x_minutes\", 1)\n : t(\"x_minutes\", distanceInMinutes);\n }\n if (within(0, 4, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 5);\n }\n if (within(5, 9, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 10);\n }\n if (within(10, 19, distanceInSeconds)) {\n return t(\"less_than_x_seconds\", 20);\n }\n if (within(20, 39, distanceInSeconds)) {\n return t(\"half_a_minute\");\n }\n if (within(40, 59, distanceInSeconds)) {\n return t(\"less_than_x_minutes\", 1);\n }\n return t(\"x_minutes\", 1);\n }\n if (within(2, 44, distanceInMinutes)) {\n return t(\"x_minutes\", distanceInMinutes);\n }\n if (within(45, 89, distanceInMinutes)) {\n return t(\"about_x_hours\", 1);\n }\n if (within(90, 1439, distanceInMinutes)) {\n return t(\"about_x_hours\", distanceInHoursRounded);\n }\n if (within(1440, 2519, distanceInMinutes)) {\n return t(\"x_days\", 1);\n }\n if (within(2520, 43199, distanceInMinutes)) {\n return t(\"x_days\", distanceInDaysRounded);\n }\n if (within(43200, 86399, distanceInMinutes)) {\n return t(\"about_x_months\", Math.round(distanceInMinutes / 43200));\n }\n if (within(86400, 525599, distanceInMinutes)) {\n return t(\"x_months\", distanceInMonthsRounded);\n }\n let fromYear = fromTime.getFullYear();\n if (fromTime.getMonth() + 1 >= 3) {\n fromYear += 1;\n }\n let toYear = toTime.getFullYear();\n if (toTime.getMonth() + 1 < 3) {\n toYear -= 1;\n }\n const leapYears = fromYear > toYear\n ? 0\n : range(fromYear, toYear).filter((year) => new Date(year, 1, 29).getMonth() == 1).length;\n const minutesInYear = 525600;\n const minuteOffsetForLeapYear = leapYears * 1440;\n const minutesWithOffset = distanceInMinutes - minuteOffsetForLeapYear;\n const distanceInYears = Math.trunc(minutesWithOffset / minutesInYear);\n const diff = parseFloat((minutesWithOffset / minutesInYear - distanceInYears).toPrecision(3));\n if (diff < 0.25) {\n return t(\"about_x_years\", distanceInYears);\n }\n if (diff < 0.75) {\n return t(\"over_x_years\", distanceInYears);\n }\n return t(\"almost_x_years\", distanceInYears + 1);\n}\n//# sourceMappingURL=timeAgoInWords.js.map","import { getFullScope, inferType } from \"./helpers\";\nexport const guessStrategy = function (i18n, scope) {\n if (scope instanceof Array) {\n scope = scope.join(i18n.defaultSeparator);\n }\n const message = scope.split(i18n.defaultSeparator).slice(-1)[0];\n return (i18n.missingTranslationPrefix +\n message\n .replace(\"_\", \" \")\n .replace(/([a-z])([A-Z])/g, (_match, p1, p2) => `${p1} ${p2.toLowerCase()}`));\n};\nexport const messageStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const locale = \"locale\" in options ? options.locale : i18n.locale;\n const localeType = inferType(locale);\n const fullScopeWithLocale = [\n localeType == \"string\" ? locale : localeType,\n fullScope,\n ].join(i18n.defaultSeparator);\n return `[missing \"${fullScopeWithLocale}\" translation]`;\n};\nexport const errorStrategy = (i18n, scope, options) => {\n const fullScope = getFullScope(i18n, scope, options);\n const fullScopeWithLocale = [i18n.locale, fullScope].join(i18n.defaultSeparator);\n throw new Error(`Missing translation: ${fullScopeWithLocale}`);\n};\nexport class MissingTranslation {\n constructor(i18n) {\n this.i18n = i18n;\n this.registry = {};\n this.register(\"guess\", guessStrategy);\n this.register(\"message\", messageStrategy);\n this.register(\"error\", errorStrategy);\n }\n register(name, strategy) {\n this.registry[name] = strategy;\n }\n get(scope, options) {\n var _a;\n return this.registry[(_a = options.missingBehavior) !== null && _a !== void 0 ? _a : this.i18n.missingBehavior](this.i18n, scope, options);\n }\n}\n//# sourceMappingURL=MissingTranslation.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport get from \"lodash/get\";\nimport has from \"lodash/has\";\nimport set from \"lodash/set\";\nimport { Locales } from \"./Locales\";\nimport { Pluralization } from \"./Pluralization\";\nimport { MissingTranslation } from \"./MissingTranslation\";\nimport { camelCaseKeys, createTranslationOptions, formatNumber, getFullScope, inferType, interpolate, isSet, lookup, numberToDelimited, numberToHuman, numberToHumanSize, parseDate, pluralize, propertyFlatList, strftime, timeAgoInWords, } from \"./helpers\";\nconst DEFAULT_I18N_OPTIONS = {\n defaultLocale: \"en\",\n availableLocales: [\"en\"],\n locale: \"en\",\n defaultSeparator: \".\",\n placeholder: /(?:\\{\\{|%\\{)(.*?)(?:\\}\\}?)/gm,\n enableFallback: false,\n missingBehavior: \"message\",\n missingTranslationPrefix: \"\",\n missingPlaceholder: (_i18n, placeholder) => `[missing \"${placeholder}\" value]`,\n nullPlaceholder: (i18n, placeholder, message, options) => i18n.missingPlaceholder(i18n, placeholder, message, options),\n transformKey: (key) => key,\n};\nexport class I18n {\n constructor(translations = {}, options = {}) {\n this._locale = DEFAULT_I18N_OPTIONS.locale;\n this._defaultLocale = DEFAULT_I18N_OPTIONS.defaultLocale;\n this._version = 0;\n this.onChangeHandlers = [];\n this.translations = {};\n this.availableLocales = [];\n this.t = this.translate;\n this.p = this.pluralize;\n this.l = this.localize;\n this.distanceOfTimeInWords = this.timeAgoInWords;\n const { locale, enableFallback, missingBehavior, missingTranslationPrefix, missingPlaceholder, nullPlaceholder, defaultLocale, defaultSeparator, placeholder, transformKey, } = Object.assign(Object.assign({}, DEFAULT_I18N_OPTIONS), options);\n this.locale = locale;\n this.defaultLocale = defaultLocale;\n this.defaultSeparator = defaultSeparator;\n this.enableFallback = enableFallback;\n this.locale = locale;\n this.missingBehavior = missingBehavior;\n this.missingTranslationPrefix = missingTranslationPrefix;\n this.missingPlaceholder = missingPlaceholder;\n this.nullPlaceholder = nullPlaceholder;\n this.placeholder = placeholder;\n this.pluralization = new Pluralization(this);\n this.locales = new Locales(this);\n this.missingTranslation = new MissingTranslation(this);\n this.transformKey = transformKey;\n this.interpolate = interpolate;\n this.store(translations);\n }\n store(translations) {\n const map = propertyFlatList(translations);\n map.forEach((path) => set(this.translations, path, get(translations, path)));\n this.hasChanged();\n }\n get locale() {\n return this._locale || this.defaultLocale || \"en\";\n }\n set locale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._locale !== newLocale;\n this._locale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n get defaultLocale() {\n return this._defaultLocale || \"en\";\n }\n set defaultLocale(newLocale) {\n if (typeof newLocale !== \"string\") {\n throw new Error(`Expected newLocale to be a string; got ${inferType(newLocale)}`);\n }\n const changed = this._defaultLocale !== newLocale;\n this._defaultLocale = newLocale;\n if (changed) {\n this.hasChanged();\n }\n }\n translate(scope, options) {\n options = Object.assign({}, options);\n const translationOptions = createTranslationOptions(this, scope, options);\n let translation;\n const hasFoundTranslation = translationOptions.some((translationOption) => {\n if (isSet(translationOption.scope)) {\n translation = lookup(this, translationOption.scope, options);\n }\n else if (isSet(translationOption.message)) {\n translation = translationOption.message;\n }\n return translation !== undefined && translation !== null;\n });\n if (!hasFoundTranslation) {\n return this.missingTranslation.get(scope, options);\n }\n if (typeof translation === \"string\") {\n translation = this.interpolate(this, translation, options);\n }\n else if (typeof translation === \"object\" &&\n translation &&\n isSet(options.count)) {\n translation = pluralize({\n i18n: this,\n count: options.count || 0,\n scope: translation,\n options,\n baseScope: getFullScope(this, scope, options),\n });\n }\n if (options && translation instanceof Array) {\n translation = translation.map((entry) => typeof entry === \"string\"\n ? interpolate(this, entry, options)\n : entry);\n }\n return translation;\n }\n pluralize(count, scope, options) {\n return pluralize({\n i18n: this,\n count,\n scope,\n options: Object.assign({}, options),\n baseScope: getFullScope(this, scope, options !== null && options !== void 0 ? options : {}),\n });\n }\n localize(type, value, options) {\n options = Object.assign({}, options);\n if (value === undefined || value === null) {\n return \"\";\n }\n switch (type) {\n case \"currency\":\n return this.numberToCurrency(value);\n case \"number\":\n return formatNumber(value, Object.assign({ delimiter: \",\", precision: 3, separator: \".\", significant: false, stripInsignificantZeros: false }, lookup(this, \"number.format\")));\n case \"percentage\":\n return this.numberToPercentage(value);\n default: {\n let localizedValue;\n if (type.match(/^(date|time)/)) {\n localizedValue = this.toTime(type, value);\n }\n else {\n localizedValue = value.toString();\n }\n return interpolate(this, localizedValue, options);\n }\n }\n }\n toTime(scope, input) {\n const date = parseDate(input);\n const format = lookup(this, scope);\n if (date.toString().match(/invalid/i)) {\n return date.toString();\n }\n if (!format) {\n return date.toString();\n }\n return this.strftime(date, format);\n }\n numberToCurrency(input, options = {}) {\n return formatNumber(input, Object.assign(Object.assign(Object.assign({ delimiter: \",\", format: \"%u%n\", precision: 2, separator: \".\", significant: false, stripInsignificantZeros: false, unit: \"$\" }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.currency.format\"))), options));\n }\n numberToPercentage(input, options = {}) {\n return formatNumber(input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", format: \"%n%\", precision: 3, stripInsignificantZeros: false, separator: \".\", significant: false }, camelCaseKeys(this.get(\"number.format\"))), camelCaseKeys(this.get(\"number.percentage.format\"))), options));\n }\n numberToHumanSize(input, options = {}) {\n return numberToHumanSize(this, input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", precision: 3, significant: true, stripInsignificantZeros: true, units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n } }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.storage_units\"))), options));\n }\n numberToHuman(input, options = {}) {\n return numberToHuman(this, input, Object.assign(Object.assign(Object.assign({ delimiter: \"\", separator: \".\", precision: 3, significant: true, stripInsignificantZeros: true, format: \"%n %u\", roundMode: \"default\", units: {\n billion: \"Billion\",\n million: \"Million\",\n quadrillion: \"Quadrillion\",\n thousand: \"Thousand\",\n trillion: \"Trillion\",\n unit: \"\",\n } }, camelCaseKeys(this.get(\"number.human.format\"))), camelCaseKeys(this.get(\"number.human.decimal_units\"))), options));\n }\n numberToRounded(input, options) {\n return formatNumber(input, Object.assign({ unit: \"\", precision: 3, significant: false, separator: \".\", delimiter: \"\", stripInsignificantZeros: false }, options));\n }\n numberToDelimited(input, options = {}) {\n return numberToDelimited(input, Object.assign({ delimiterPattern: /(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, delimiter: \",\", separator: \".\" }, options));\n }\n withLocale(locale, callback) {\n return __awaiter(this, void 0, void 0, function* () {\n const originalLocale = this.locale;\n try {\n this.locale = locale;\n yield callback();\n }\n finally {\n this.locale = originalLocale;\n }\n });\n }\n strftime(date, format, options = {}) {\n return strftime(date, format, Object.assign(Object.assign(Object.assign({}, camelCaseKeys(lookup(this, \"date\"))), { meridian: {\n am: lookup(this, \"time.am\") || \"AM\",\n pm: lookup(this, \"time.pm\") || \"PM\",\n } }), options));\n }\n update(path, override, options = { strict: false }) {\n if (options.strict && !has(this.translations, path)) {\n throw new Error(`The path \"${path}\" is not currently defined`);\n }\n const currentNode = get(this.translations, path);\n const currentType = inferType(currentNode);\n const overrideType = inferType(override);\n if (options.strict && currentType !== overrideType) {\n throw new Error(`The current type for \"${path}\" is \"${currentType}\", but you're trying to override it with \"${overrideType}\"`);\n }\n let newNode;\n if (overrideType === \"object\") {\n newNode = Object.assign(Object.assign({}, currentNode), override);\n }\n else {\n newNode = override;\n }\n set(this.translations, path, newNode);\n this.hasChanged();\n }\n toSentence(items, options = {}) {\n const { wordsConnector, twoWordsConnector, lastWordConnector } = Object.assign(Object.assign({ wordsConnector: \", \", twoWordsConnector: \" and \", lastWordConnector: \", and \" }, camelCaseKeys(lookup(this, \"support.array\"))), options);\n const size = items.length;\n switch (size) {\n case 0:\n return \"\";\n case 1:\n return `${items[0]}`;\n case 2:\n return items.join(twoWordsConnector);\n default:\n return [\n items.slice(0, size - 1).join(wordsConnector),\n lastWordConnector,\n items[size - 1],\n ].join(\"\");\n }\n }\n timeAgoInWords(fromTime, toTime, options = {}) {\n return timeAgoInWords(this, fromTime, toTime, options);\n }\n onChange(callback) {\n this.onChangeHandlers.push(callback);\n return () => {\n this.onChangeHandlers.splice(this.onChangeHandlers.indexOf(callback), 1);\n };\n }\n get version() {\n return this._version;\n }\n formatNumber(input, options) {\n return formatNumber(input, options);\n }\n get(scope) {\n return lookup(this, scope);\n }\n runCallbacks() {\n this.onChangeHandlers.forEach((callback) => callback(this));\n }\n hasChanged() {\n this._version += 1;\n this.runCallbacks();\n }\n}\n//# sourceMappingURL=I18n.js.map","import { isSet } from \"./isSet\";\nexport function createTranslationOptions(i18n, scope, options) {\n let translationOptions = [{ scope }];\n if (isSet(options.defaults)) {\n translationOptions = translationOptions.concat(options.defaults);\n }\n if (isSet(options.defaultValue)) {\n const message = typeof options.defaultValue === \"function\"\n ? options.defaultValue(i18n, scope, options)\n : options.defaultValue;\n translationOptions.push({ message });\n delete options.defaultValue;\n }\n return translationOptions;\n}\n//# sourceMappingURL=createTranslationOptions.js.map","import BigNumber from \"bignumber.js\";\nexport function numberToDelimited(input, options) {\n const numeric = new BigNumber(input);\n if (!numeric.isFinite()) {\n return input.toString();\n }\n if (!options.delimiterPattern.global) {\n throw new Error(`options.delimiterPattern must be a global regular expression; received ${options.delimiterPattern}`);\n }\n let [left, right] = numeric.toString().split(\".\");\n left = left.replace(options.delimiterPattern, (digitToDelimiter) => `${digitToDelimiter}${options.delimiter}`);\n return [left, right].filter(Boolean).join(options.separator);\n}\n//# sourceMappingURL=numberToDelimited.js.map","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var arrayMap = require('./_arrayMap'),\n baseGet = require('./_baseGet'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\nfunction baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n}\n\nmodule.exports = baseRange;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeFloor = Math.floor;\n\n/**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\nfunction baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n}\n\nmodule.exports = baseRepeat;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","/**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\nfunction baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n}\n\nmodule.exports = baseZipObject;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var baseRange = require('./_baseRange'),\n isIterateeCall = require('./_isIterateeCall'),\n toFinite = require('./toFinite');\n\n/**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\nfunction createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n}\n\nmodule.exports = createRange;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var createRange = require('./_createRange');\n\n/**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\nvar range = createRange();\n\nmodule.exports = range;\n","var baseRepeat = require('./_baseRepeat'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger'),\n toString = require('./toString');\n\n/**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\nfunction repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n}\n\nmodule.exports = repeat;\n","var baseSet = require('./_baseSet');\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nmodule.exports = set;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var createCaseFirst = require('./_createCaseFirst');\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","var assignValue = require('./_assignValue'),\n baseZipObject = require('./_baseZipObject');\n\n/**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\nfunction zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n}\n\nmodule.exports = zipObject;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(globalThis, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.RenderingIntentFlag = exports.PromiseCapability = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.MAX_IMAGE_SIZE_TO_CACHE = exports.LINE_FACTOR = exports.LINE_DESCENT_FACTOR = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FeatureTest = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.BASELINE_FACTOR = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationEditorType = exports.AnnotationEditorPrefix = exports.AnnotationEditorParamsType = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.normalizeUnicode = normalizeUnicode;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n;\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6;\nexports.MAX_IMAGE_SIZE_TO_CACHE = MAX_IMAGE_SIZE_TO_CACHE;\nconst LINE_FACTOR = 1.35;\nexports.LINE_FACTOR = LINE_FACTOR;\nconst LINE_DESCENT_FACTOR = 0.35;\nexports.LINE_DESCENT_FACTOR = LINE_DESCENT_FACTOR;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nexports.BASELINE_FACTOR = BASELINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nexports.AnnotationEditorPrefix = AnnotationEditorPrefix;\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n INK: 15\n};\nexports.AnnotationEditorType = AnnotationEditorType;\nconst AnnotationEditorParamsType = {\n FREETEXT_SIZE: 1,\n FREETEXT_COLOR: 2,\n FREETEXT_OPACITY: 3,\n INK_COLOR: 11,\n INK_THICKNESS: 12,\n INK_OPACITY: 13\n};\nexports.AnnotationEditorParamsType = AnnotationEditorParamsType;\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91\n};\nexports.OPS = OPS;\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {}\n return null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nexports.BaseException = BaseException;\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nexports.PasswordException = PasswordException;\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nexports.UnknownErrorException = UnknownErrorException;\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nexports.InvalidPDFException = InvalidPDFException;\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\nexports.MissingPDFException = MissingPDFException;\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\nexports.UnexpectedResponseException = UnexpectedResponseException;\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nexports.FormatError = FormatError;\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nexports.AbortException = AbortException;\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch (e) {\n return false;\n }\n}\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator === \"undefined\") {\n return shadow(this, \"platform\", {\n isWin: false,\n isMac: false\n });\n }\n return shadow(this, \"platform\", {\n isWin: navigator.platform.includes(\"Win\"),\n isMac: navigator.platform.includes(\"Mac\")\n });\n }\n}\nexports.FeatureTest = FeatureTest;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n }\n}\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nclass PromiseCapability {\n #settled = false;\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n this.reject = reason => {\n this.#settled = true;\n reject(reason);\n };\n });\n }\n get settled() {\n return this.#settled;\n }\n}\nexports.PromiseCapability = PromiseCapability;\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultFilterFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nexports.getDocument = getDocument;\nexports.version = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _annotation_storage = __w_pdfjs_require__(3);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _font_loader = __w_pdfjs_require__(9);\nvar _canvas = __w_pdfjs_require__(11);\nvar _worker_options = __w_pdfjs_require__(14);\nvar _is_node = __w_pdfjs_require__(10);\nvar _message_handler = __w_pdfjs_require__(15);\nvar _metadata = __w_pdfjs_require__(16);\nvar _optional_content_config = __w_pdfjs_require__(17);\nvar _transport_stream = __w_pdfjs_require__(18);\nvar _xfa_text = __w_pdfjs_require__(19);\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DELAYED_CLEANUP_TIMEOUT = 5000;\nlet DefaultCanvasFactory = _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nlet DefaultCMapReaderFactory = _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nlet DefaultFilterFactory = _display_utils.DOMFilterFactory;\nexports.DefaultFilterFactory = DefaultFilterFactory;\nlet DefaultStandardFontDataFactory = _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\nif (_is_node.isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory\n } = __w_pdfjs_require__(20);\n exports.DefaultCanvasFactory = DefaultCanvasFactory = NodeCanvasFactory;\n exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory = NodeCMapReaderFactory;\n exports.DefaultFilterFactory = DefaultFilterFactory = NodeFilterFactory;\n exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\nlet createPDFNetworkStream;\n{\n if (_is_node.isNodeJS) {\n const {\n PDFNodeStream\n } = __w_pdfjs_require__(21);\n createPDFNetworkStream = params => {\n return new PDFNodeStream(params);\n };\n } else {\n const {\n PDFNetworkStream\n } = __w_pdfjs_require__(24);\n const {\n PDFFetchStream\n } = __w_pdfjs_require__(25);\n createPDFNetworkStream = params => {\n return (0, _display_utils.isValidFetchUrl)(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params);\n };\n }\n}\nfunction getDocument(src) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if ((0, _util.isArrayBuffer)(src)) {\n src = {\n data: src\n };\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !(0, _display_utils.isDataScheme)(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !_is_node.isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : _is_node.isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !_is_node.isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === _display_utils.DOMCMapReaderFactory && StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory && (0, _display_utils.isValidFetchUrl)(cMapUrl, document.baseURI) && (0, _display_utils.isValidFetchUrl)(standardFontDataUrl, document.baseURI);\n const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n ownerDocument\n });\n const filterFactory = src.filterFactory || new DefaultFilterFactory({\n docId,\n ownerDocument\n });\n const styleElement = null;\n (0, _util.setVerbosityLevel)(verbosity);\n const transportFactory = {\n canvasFactory,\n filterFactory\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n });\n }\n if (!worker) {\n const workerParams = {\n verbosity,\n port: _worker_options.GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const fetchDocParams = {\n docId,\n apiVersion: '3.7.107',\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n }\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new _transport_stream.PDFDataTransportStream({\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename: rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream\n }, rangeTransport);\n } else if (!data) {\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n resolve(networkStream);\n });\n return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", source, source.data ? [source.data.buffer] : null);\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n try {\n return new URL(val, window.location).href;\n } catch (ex) {\n if (_is_node.isNodeJS && typeof val === \"string\") {\n return val;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (_is_node.isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n (0, _display_utils.deprecated)(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n return new Uint8Array(val);\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return (0, _util.stringToBytes)(val);\n }\n if (typeof val === \"object\" && !isNaN(val?.length) || (0, _util.isArrayBuffer)(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = new _util.PromiseCapability();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new _util.PromiseCapability();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nexports.PDFDocumentProxy = PDFDocumentProxy;\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new _display_utils.PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get isPureXfa() {\n return (0, _util.shadow)(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null\n }) {\n if (arguments[0]?.canvasFactory) {\n throw new Error(\"render no longer accepts the `canvasFactory`-option, \" + \"please pass it to the `getDocument`-function instead.\");\n }\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new _util.PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(!intentPrint);\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.#pendingCleanup) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = _util.AnnotationMode.ENABLE,\n printAnnotationStorage = null\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new _util.PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => {\n return _xfa_text.XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null)\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(false);\n if (resetStats && success) {\n this._stats &&= new _display_utils.StatTimer();\n }\n return success;\n }\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n if (!this.#pendingCleanup) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(false);\n }, DELAYED_CLEANUP_TIMEOUT);\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(true);\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageMap\n }) {\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: annotationStorageMap\n });\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(true);\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof _display_utils.RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nexports.PDFPageProxy = PDFPageProxy;\nclass LoopbackPort {\n #listeners = new Set();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n terminate() {\n this.#listeners.clear();\n }\n}\nexports.LoopbackPort = LoopbackPort;\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0\n};\nexports.PDFWorkerUtil = PDFWorkerUtil;\n{\n if (_is_node.isNodeJS && typeof require === \"function\") {\n PDFWorkerUtil.isWorkerDisabled = true;\n PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n }\n }\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false;\n }\n } catch (e) {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n PDFWorkerUtil.createCDNWrapper = function (url) {\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\nclass PDFWorker {\n static #workerPorts = new WeakMap();\n constructor({\n name = null,\n port = null,\n verbosity = (0, _util.getVerbosityLevel)()\n } = {}) {\n if (port && PDFWorker.#workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = new _util.PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n PDFWorker.#workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n _initialize() {\n if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc);\n const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const onWorkerError = () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch (e) {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch (e) {\n (0, _util.info)(\"The worker has been disabled.\");\n }\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n (0, _util.warn)(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this.#workerPorts.has(params.port)) {\n return this.#workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (_worker_options.GlobalWorkerOptions.workerSrc) {\n return _worker_options.GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!_is_node.isNodeJS) {\n (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n if (mainWorkerMessageHandler) {\n return mainWorkerMessageHandler;\n }\n if (_is_node.isNodeJS && typeof require === \"function\") {\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await (0, _display_utils.loadScript)(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nexports.PDFWorker = PDFWorker;\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new _font_loader.FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new _util.PromiseCapability();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n let renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n let annotationMap = null;\n switch (intent) {\n case \"any\":\n renderingIntent = _util.RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = _util.RenderingIntentFlag.PRINT;\n break;\n default:\n (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n }\n switch (annotationMode) {\n case _util.AnnotationMode.DISABLE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case _util.AnnotationMode.ENABLE:\n break;\n case _util.AnnotationMode.ENABLE_FORMS:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case _util.AnnotationMode.ENABLE_STORAGE:\n renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n const annotationStorage = renderingIntent & _util.RenderingIntentFlag.PRINT && printAnnotationStorage instanceof _annotation_storage.PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n annotationMap = annotationStorage.serializable;\n break;\n default:\n (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isOpList) {\n renderingIntent += _util.RenderingIntentFlag.OPLIST;\n }\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${_annotation_storage.AnnotationStorage.getHash(annotationMap)}`,\n annotationStorageMap: annotationMap\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = new _util.PromiseCapability();\n if (this._passwordCapability) {\n this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n }\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n }\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0, _util.assert)(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = new _util.PromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength\n });\n }, headersCapability.reject);\n return headersCapability.promise;\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n (0, _util.assert)(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new _util.PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new _util.InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new _util.MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new _util.UnknownErrorException(ex.message, ex.details);\n break;\n default:\n (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = new _util.PromiseCapability();\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({\n password\n });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n }\n return this._passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return;\n }\n if (this.commonObjs.has(id)) {\n return;\n }\n switch (type) {\n case \"Font\":\n const params = this._params;\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n (0, _util.warn)(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new _font_loader.FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont\n });\n this.fontLoader.bind(font).catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", {\n id\n });\n }).finally(() => {\n if (!params.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const {\n width,\n height\n } = imageData;\n length = width * height * 4;\n } else {\n length = imageData.data?.length || 0;\n }\n if (length > _util.MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.cMapReaderFactory.fetch(data);\n });\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n (0, _util.warn)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null\n }).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (typeof ref !== \"object\" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig() {\n return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n return new _optional_content_config.OptionalContentConfig(results);\n });\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n };\n });\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n }\n get loadingParams() {\n const {\n disableAutoFetch,\n enableXfa\n } = this._params;\n return (0, _util.shadow)(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa\n });\n }\n}\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return this.#objs[objId] = {\n capability: new _util.PromiseCapability(),\n data: null\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n this.onContinue = null;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nexports.RenderTask = RenderTask;\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = new _util.PromiseCapability();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\", extraDelay));\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing(this.pageColors);\n if (this._canvas) {\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\nconst version = '3.7.107';\nexports.version = version;\nconst build = '036f855dc';\nexports.build = build;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PrintAnnotationStorage = exports.AnnotationStorage = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _murmurhash = __w_pdfjs_require__(8);\nclass AnnotationStorage {\n #modified = false;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof _editor.AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof _editor.AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? (0, _util.objectFromMap)(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return null;\n }\n const clone = new Map();\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof _editor.AnnotationEditor ? val.serialize() : val;\n if (serialized) {\n clone.set(key, serialized);\n }\n }\n return clone;\n }\n static getHash(map) {\n if (!map) {\n return \"\";\n }\n const hash = new _murmurhash.MurmurHash3_64();\n for (const [key, val] of map) {\n hash.update(`${key}:${JSON.stringify(val)}`);\n }\n return hash.hexdigest();\n }\n}\nexports.AnnotationStorage = AnnotationStorage;\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable = null;\n constructor(parent) {\n super();\n this.#serializable = structuredClone(parent.serializable);\n }\n get print() {\n (0, _util.unreachable)(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n}\nexports.PrintAnnotationStorage = PrintAnnotationStorage;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditor = void 0;\nvar _tools = __w_pdfjs_require__(5);\nvar _util = __w_pdfjs_require__(1);\nclass AnnotationEditor {\n #boundFocusin = this.focusin.bind(this);\n #boundFocusout = this.focusout.bind(this);\n #hasBeenSelected = false;\n #isEditing = false;\n #isInEditMode = false;\n _uiManager = null;\n #zIndex = AnnotationEditor._zIndex++;\n static _colorManager = new _tools.ColorManager();\n static _zIndex = 1;\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n (0, _util.unreachable)(\"Cannot initialize AnnotationEditor.\");\n }\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n }\n static get _defaultLineColor() {\n return (0, _util.shadow)(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this.#hasBeenSelected) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenSelected = false;\n }\n }\n focusout(event) {\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n dragstart(event) {\n const rect = this.parent.div.getBoundingClientRect();\n this.startX = event.clientX - rect.x;\n this.startY = event.clientY - rect.y;\n event.dataTransfer.setData(\"text/plain\", this.id);\n event.dataTransfer.effectAllowed = \"move\";\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n translate(x, y) {\n const [width, height] = this.parentDimensions;\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this.div.style.left = `${100 * this.x}%`;\n this.div.style.top = `${100 * this.y}%`;\n }\n screenToPageTranslation(x, y) {\n switch (this.parentRotation) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n realScale\n } = this._uiManager.viewParameters;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [pageWidth * realScale, pageHeight * realScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${100 * width / parentWidth}%`;\n this.div.style.height = `${100 * height / parentHeight}%`;\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${100 * parseFloat(width) / parentWidth}%`;\n }\n if (!heightPercent) {\n style.height = `${100 * parseFloat(height) / parentHeight}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n this.setInForeground();\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n (0, _tools.bindEvents)(this, this.div, [\"dragstart\", \"pointerdown\"]);\n return this.div;\n }\n pointerdown(event) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n this.#hasBeenSelected = true;\n }\n getRect(tx, ty) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (this.rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded() {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return false;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n }\n serialize() {\n (0, _util.unreachable)(\"An editor must be serializable\");\n }\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n if (!this.isEmpty()) {\n this.commit();\n }\n this.parent.remove(this);\n }\n select() {\n this.div?.classList.add(\"selectedEditor\");\n }\n unselect() {\n this.div?.classList.remove(\"selectedEditor\");\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n get propertiesToUpdate() {\n return {};\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n}\nexports.AnnotationEditor = AnnotationEditor;\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.KeyboardManager = exports.CommandManager = exports.ColorManager = exports.AnnotationEditorUIManager = void 0;\nexports.bindEvents = bindEvents;\nexports.opacityToHex = opacityToHex;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n}\nclass IdManager {\n #id = 0;\n getId() {\n return `${_util.AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nexports.CommandManager = CommandManager;\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = _util.FeatureTest.platform;\n for (const [keys, callback] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, callback);\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const callback = this.callbacks.get(this.#serialize(event));\n if (!callback) {\n return;\n }\n callback.bind(self)();\n event.stopPropagation();\n event.preventDefault();\n }\n}\nexports.KeyboardManager = KeyboardManager;\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n (0, _display_utils.getColorValues)(colors);\n return (0, _util.shadow)(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = (0, _display_utils.getRGB)(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return _util.Util.makeHexColor(...rgb);\n }\n}\nexports.ColorManager = ColorManager;\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #annotationStorage = null;\n #commandManager = new CommandManager();\n #currentPageIndex = 0;\n #editorTypes = null;\n #editorsToRescale = new Set();\n #eventBus = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #mode = _util.AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #boundCopy = this.copy.bind(this);\n #boundCut = this.cut.bind(this);\n #boundPaste = this.paste.bind(this);\n #boundKeydown = this.keydown.bind(this);\n #boundOnEditingAction = this.onEditingAction.bind(this);\n #boundOnPageChanging = this.onPageChanging.bind(this);\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false\n };\n #container = null;\n static _keyboardManager = new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], AnnotationEditorUIManager.prototype.selectAll], [[\"ctrl+z\", \"mac+meta+z\"], AnnotationEditorUIManager.prototype.undo], [[\"ctrl+y\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], AnnotationEditorUIManager.prototype.redo], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\"], AnnotationEditorUIManager.prototype.delete], [[\"Escape\", \"mac+Escape\"], AnnotationEditorUIManager.prototype.unselectAll]]);\n constructor(container, eventBus, annotationStorage) {\n this.#container = container;\n this.#eventBus = eventBus;\n this.#eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this.#eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this.#eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this.#eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#annotationStorage = annotationStorage;\n this.viewParameters = {\n realScale: _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n }\n destroy() {\n this.#removeKeyboardManager();\n this.#eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this.#eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this.#eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this.#eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #addKeyboardManager() {\n this.#container.addEventListener(\"keydown\", this.#boundKeydown);\n }\n #removeKeyboardManager() {\n this.#container.removeEventListener(\"keydown\", this.#boundKeydown);\n }\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n copy(event) {\n event.preventDefault();\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n if (!editor.isEmpty()) {\n editors.push(editor.serialize());\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n paste(event) {\n event.preventDefault();\n let data = event.clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n (0, _util.warn)(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.#allLayers.get(this.#currentPageIndex);\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n (0, _util.warn)(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.getActive()?.shouldGetKeyboardEvents()) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this.#eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n }\n }\n #dispatchUpdateUI(details) {\n this.#eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== _util.AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.getId();\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n updateMode(mode) {\n this.#mode = mode;\n if (mode === _util.AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n } else {\n this.setEditingState(true);\n this.#enableAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this.#eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n this.#annotationStorage?.remove(editor.id);\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n #selectEditors(editors) {\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n return;\n }\n if (this.#selectedEditors.size === 0) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n}\nexports.AnnotationEditorUIManager = AnnotationEditorUIManager;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMFilterFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = exports.AnnotationPrefix = void 0;\nexports.deprecated = deprecated;\nexports.getColorValues = getColorValues;\nexports.getCurrentTransform = getCurrentTransform;\nexports.getCurrentTransformInverse = getCurrentTransformInverse;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getRGB = getRGB;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\nexports.setLayerDimensions = setLayerDimensions;\nvar _base_factory = __w_pdfjs_require__(7);\nvar _util = __w_pdfjs_require__(1);\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nexports.AnnotationPrefix = AnnotationPrefix;\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nexports.PixelsPerInch = PixelsPerInch;\nclass DOMFilterFactory extends _base_factory.BaseFilterFactory {\n #_cache;\n #_defs;\n #docId;\n #document;\n #hcmFilter;\n #hcmKey;\n #hcmUrl;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n let tableR, tableG, tableB, key;\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#document.createElementNS(SVG_NS, \"filter\", SVG_NS);\n filter.setAttribute(\"id\", id);\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", tableR);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", tableG);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", tableB);\n this.#defs.append(filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n if (this.#hcmKey === key) {\n return this.#hcmUrl;\n }\n this.#hcmKey = key;\n this.#hcmUrl = \"none\";\n this.#hcmFilter?.remove();\n if (!fgColor || !bgColor) {\n return this.#hcmUrl;\n }\n this.#defs.style.color = fgColor;\n fgColor = getComputedStyle(this.#defs).getPropertyValue(\"color\");\n const fgRGB = getRGB(fgColor);\n fgColor = _util.Util.makeHexColor(...fgRGB);\n this.#defs.style.color = bgColor;\n bgColor = getComputedStyle(this.#defs).getPropertyValue(\"color\");\n const bgRGB = getRGB(bgColor);\n bgColor = _util.Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return this.#hcmUrl;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = this.#hcmFilter = this.#document.createElementNS(SVG_NS, \"filter\", SVG_NS);\n filter.setAttribute(\"id\", id);\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n let feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", table);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", table);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", table);\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", getSteps(0, 5));\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", getSteps(1, 5));\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", getSteps(2, 5));\n this.#defs.append(filter);\n this.#hcmUrl = `url(#${id})`;\n return this.#hcmUrl;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#hcmUrl) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n}\nexports.DOMFilterFactory = DOMFilterFactory;\nclass DOMCanvasFactory extends _base_factory.BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document\n } = {}) {\n super();\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\nexports.DOMCanvasFactory = DOMCanvasFactory;\nasync function fetchData(url, asTypedArray = false) {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = (0, _util.stringToBytes)(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, this.isCompressed).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n}\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\nclass DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, true);\n }\n}\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\nclass DOMSVGFactory extends _base_factory.BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\nexports.DOMSVGFactory = DOMSVGFactory;\nclass PageViewport {\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const {\n viewBox\n } = this;\n return (0, _util.shadow)(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return _util.Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return _util.Util.applyInverseTransform([x, y], this.transform);\n }\n}\nexports.PageViewport = PageViewport;\nclass RenderingCancelledException extends _util.BaseException {\n constructor(msg, type, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n this.extraDelay = extraDelay;\n }\n}\nexports.RenderingCancelledException = RenderingCancelledException;\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n (0, _util.warn)(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n (0, _util.warn)(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nexports.StatTimer = StatTimer;\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const {\n protocol\n } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false;\n }\n}\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).append(script);\n });\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nlet pdfDateStringRegex;\nclass PDFDateString {\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nexports.PDFDateString = PDFDateString;\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n (0, _util.warn)(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const widthStr = `calc(var(--scale-factor) * ${pageWidth}px)`;\n const heightStr = `calc(var(--scale-factor) * ${pageHeight}px)`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseFilterFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\nvar _util = __w_pdfjs_require__(1);\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nexports.BaseFilterFactory = BaseFilterFactory;\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\")\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n }\n}\nexports.BaseCanvasFactory = BaseCanvasFactory;\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n if (this.constructor === BaseCMapReaderFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n _fetchData(url, compressionType) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n _fetchData(url) {\n (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n }\n}\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n }\n}\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MurmurHash3_64 = void 0;\nvar _util = __w_pdfjs_require__(1);\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if ((0, _util.isArrayBuffer)(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _is_node = __w_pdfjs_require__(10);\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont(info) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n (0, _util.assert)(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n } catch {\n (0, _util.warn)(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n (0, _util.unreachable)(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font.systemFontInfo);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (_is_node.isNodeJS) {\n supported = true;\n } else if (typeof navigator !== \"undefined\" && /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)) {\n supported = true;\n }\n return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return (0, _util.shadow)(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n (0, _util.warn)(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nexports.FontLoader = FontLoader;\nclass FontFaceObject {\n constructor(translatedData, {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null\n }) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = (0, _util.bytesToString)(this.data);\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n return this.compiledGlyphs[character] = function (c, size) {};\n }\n if (this.isEvalSupported && _util.FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n }\n return this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n}\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.CanvasGraphics = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _pattern_helper = __w_pdfjs_require__(12);\nvar _image_utils = __w_pdfjs_require__(13);\nvar _is_node = __w_pdfjs_require__(10);\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = (0, _display_utils.getCurrentTransform)(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = _util.Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = _util.Util.applyTransform(rect, transform);\n const p2 = _util.Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n _util.Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === _pattern_helper.PathType.STROKE) {\n if (!transform) {\n (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n }\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = (0, _image_utils.convertBlackAndWhiteToRGBA)({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!_is_node.isNodeJS) {\n ctx.filter = \"none\";\n }\n}\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n }\n }\n}\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = layerData[i] * alpha * scale | 0;\n }\n}\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n }\n}\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = _util.Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n if (interpolate !== undefined) {\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n return true;\n }\n return false;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...(0, _display_utils.getCurrentTransform)(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== _util.OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = _util.Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, (0, _display_utils.getCurrentTransformInverse)(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = _util.Util.transform((0, _display_utils.getCurrentTransformInverse)(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...(0, _display_utils.getCurrentTransform)(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case _util.OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case _util.OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case _util.OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case _util.OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = _util.IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: (0, _display_utils.getCurrentTransform)(ctx),\n x,\n y,\n fontSize,\n addToPath\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL);\n patternTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n }\n }\n }\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || (0, _display_utils.getCurrentTransform)(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n });\n }\n };\n pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n const color = _util.Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n setFillRGBColor(r, g, b) {\n const color = _util.Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = (0, _pattern_helper.getShadingPattern)(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.SHADING);\n const inv = (0, _display_utils.getCurrentTransformInverse)(ctx);\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n const bl = _util.Util.applyTransform([0, 0], inv);\n const br = _util.Util.applyTransform([0, height], inv);\n const ul = _util.Util.applyTransform([width, 0], inv);\n const ur = _util.Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n (0, _util.unreachable)(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n (0, _util.unreachable)(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n this.baseTransform = (0, _display_utils.getCurrentTransform)(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n (0, _util.info)(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n (0, _util.warn)(\"Knockout groups not supported.\");\n }\n const currentTransform = (0, _display_utils.getCurrentTransform)(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, (0, _display_utils.getCurrentTransform)(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = (0, _display_utils.getCurrentTransform)(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = (0, _display_utils.getCurrentTransform)(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = _util.Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, (0, _display_utils.getCurrentTransformInverse)(ctx), _pattern_helper.PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!_is_node.isNodeJS) {\n ctx.filter = \"none\";\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, (0, _display_utils.getCurrentTransformInverse)(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled((0, _display_utils.getCurrentTransform)(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = (0, _display_utils.getCurrentTransform)(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nexports.CanvasGraphics = CanvasGraphics;\nfor (const op in _util.OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nexports.PathType = PathType;\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n getPattern() {\n (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, (0, _display_utils.getCurrentTransform)(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = _util.Util.singularValueDecompose2dScale((0, _display_utils.getCurrentTransform)(ctx));\n } else {\n scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n (0, _util.info)(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n graphics.baseTransform = (0, _display_utils.getCurrentTransform)(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n step = Math.abs(step);\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax((0, _display_utils.getCurrentTransform)(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = _util.Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = _util.Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.convertBlackAndWhiteToRGBA = convertBlackAndWhiteToRGBA;\nexports.convertToRGBA = convertToRGBA;\nexports.grayToRGBA = grayToRGBA;\nvar _util = __w_pdfjs_require__(1);\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case _util.ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = _util.FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (_util.FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (_util.FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.MessageHandler = void 0;\nvar _util = __w_pdfjs_require__(1);\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction wrapReason(reason) {\n if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (reason.name) {\n case \"AbortException\":\n return new _util.AbortException(reason.message);\n case \"MissingPDFException\":\n return new _util.MissingPDFException(reason.message);\n case \"PasswordException\":\n return new _util.PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new _util.UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new _util.UnknownErrorException(reason.message, reason.details);\n default:\n return new _util.UnknownErrorException(reason.message, reason.toString());\n }\n}\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = new _util.PromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = new _util.PromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = new _util.PromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = new _util.PromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new _util.PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: new _util.PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n (0, _util.assert)(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n (0, _util.assert)(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.Metadata = void 0;\nvar _util = __w_pdfjs_require__(1);\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return (0, _util.objectFromMap)(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.OptionalContentConfig = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _murmurhash = __w_pdfjs_require__(8);\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #visible = true;\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n get visible() {\n return this.#visible;\n }\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n (0, _util.unreachable)(\"Internal method `_setVisible` called.\");\n }\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data) {\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n (0, _util.warn)(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n (0, _util.warn)(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n (0, _util.warn)(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n (0, _util.warn)(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n (0, _util.warn)(`Optional content group not found: ${id}`);\n return;\n }\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? (0, _util.objectFromMap)(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new _murmurhash.MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFDataTransportStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nclass PDFDataTransportStream {\n constructor({\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null,\n disableRange = false,\n disableStream = false\n }, pdfDataRangeTransport) {\n (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n this._pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nexports.PDFDataTransportStream = PDFDataTransportStream;\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaText = void 0;\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeFilterFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\nvar _base_factory = __w_pdfjs_require__(7);\n;\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = require(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\nclass NodeFilterFactory extends _base_factory.BaseFilterFactory {}\nexports.NodeFilterFactory = NodeFilterFactory;\nclass NodeCanvasFactory extends _base_factory.BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = require(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\nexports.NodeCanvasFactory = NodeCanvasFactory;\nclass NodeCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return {\n cMapData: data,\n compressionType\n };\n });\n }\n}\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\nclass NodeStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n}\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNodeStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(22);\n;\nconst fs = require(\"fs\");\nconst http = require(\"http\");\nconst https = require(\"https\");\nconst url = require(\"url\");\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFNodeStream = PDFNodeStream;\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = new _util.PromiseCapability();\n this._headersCapability = new _util.PromiseCapability();\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new _util.PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new _util.AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new _util.PromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new _util.PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers\n };\n}\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n const getResponseHeader = name => {\n return this._readableStream.headers[name.toLowerCase()];\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n } else {\n this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n }\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n let path = decodeURIComponent(this._url.path);\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n this._setReadableStream(fs.createReadStream(path, {\n start,\n end: end - 1\n }));\n }\n}\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\nvar _util = __w_pdfjs_require__(1);\nvar _content_disposition = __w_pdfjs_require__(23);\nvar _display_utils = __w_pdfjs_require__(6);\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if ((0, _display_utils.isPdfFile)(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseStatusError(status, url) {\n if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\nvar _util = __w_pdfjs_require__(1);\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = (0, _util.stringToBytes)(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFNetworkStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(22);\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return (0, _util.stringToBytes)(data).buffer;\n}\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n requestFull(listeners) {\n return this.request(listeners);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFNetworkStream = PDFNetworkStream;\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = new _util.PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersReceivedCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = new _util.PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.PDFFetchStream = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _network_utils = __w_pdfjs_require__(22);\n;\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n (0, _util.warn)(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = this.isHttp && source.httpHeaders || {};\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nexports.PDFFetchStream = PDFFetchStream;\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = new _util.PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._headers = createHeaders(this._stream.httpHeaders);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const {\n allowRangeRequests,\n suggestedLength\n } = (0, _network_utils.validateRangeRequestCapabilities)({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = new _util.PromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n throw (0, _network_utils.createResponseStatusError)(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.TextLayerRenderTask = void 0;\nexports.renderTextLayer = renderTextLayer;\nexports.updateTextLayer = updateTextLayer;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nfunction getCtx(size, isOffscreenCanvasSupported) {\n let ctx;\n if (isOffscreenCanvasSupported && _util.FeatureTest.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(size, size).getContext(\"2d\", {\n alpha: false\n });\n } else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n }\n return ctx;\n}\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n ctx.canvas.width = ctx.canvas.height = 0;\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\nfunction appendText(task, geom, styles) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n task._textDivs.push(textDiv);\n const tx = _util.Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, task._isOffscreenCanvasSupported);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n if (task._container === task._rootContainer) {\n divStyle.left = `${(100 * left / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / task._pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = style.fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\nfunction layout(params) {\n const {\n div,\n scale,\n properties,\n ctx,\n prevFontSize,\n prevFontFamily\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * scale / width})`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n}\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n isOffscreenCanvasSupported\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = new _util.PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, isOffscreenCanvasSupported)\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n (0, _display_utils.setLayerDimensions)(container, viewport);\n this._capability.promise.finally(() => {\n this._layoutTextParams = null;\n }).catch(() => {});\n }\n get promise() {\n return this._capability.promise;\n }\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n this._reader = null;\n }\n this._capability.reject(new _util.AbortException(\"TextLayer task cancelled.\"));\n }\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this._container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this._container);\n } else if (item.type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n _layoutText(textDiv) {\n const textDivProperties = this._layoutTextParams.properties = this._textDivProperties.get(textDiv);\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.append(br);\n }\n }\n _render() {\n const capability = new _util.PromiseCapability();\n let styleCache = Object.create(null);\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n capability.resolve();\n return;\n }\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const {\n items,\n styles\n } = this._textContentSource;\n this._processItems(items, styles);\n capability.resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n capability.promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\nexports.TextLayerRenderTask = TextLayerRenderTask;\nfunction renderTextLayer(params) {\n if (!params.textContentSource && (params.textContent || params.textContentStream)) {\n (0, _display_utils.deprecated)(\"The TextLayerRender `textContent`/`textContentStream` parameters \" + \"will be removed in the future, please use `textContentSource` instead.\");\n params.textContentSource = params.textContent || params.textContentStream;\n }\n const {\n container,\n viewport\n } = params;\n const style = getComputedStyle(container);\n const visibility = style.getPropertyValue(\"visibility\");\n const scaleFactor = parseFloat(style.getPropertyValue(\"--scale-factor\"));\n if (visibility === \"visible\" && (!scaleFactor || Math.abs(scaleFactor - viewport.scale) > 1e-5)) {\n console.error(\"The `--scale-factor` CSS-variable must be set, \" + \"to the same value as `viewport.scale`, \" + \"either on the `container`-element itself or higher up in the DOM.\");\n }\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n isOffscreenCanvasSupported,\n mustRotate = true,\n mustRescale = true\n}) {\n if (mustRotate) {\n (0, _display_utils.setLayerDimensions)(container, {\n rotation: viewport.rotation\n });\n }\n if (mustRescale) {\n const ctx = getCtx(0, isOffscreenCanvasSupported);\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationEditorLayer = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _tools = __w_pdfjs_require__(5);\nvar _freetext = __w_pdfjs_require__(28);\nvar _ink = __w_pdfjs_require__(29);\nvar _display_utils = __w_pdfjs_require__(6);\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #boundPointerup = this.pointerup.bind(this);\n #boundPointerdown = this.pointerdown.bind(this);\n #editors = new Map();\n #hadPointerDown = false;\n #isCleaningUp = false;\n #uiManager;\n static _initialized = false;\n constructor(options) {\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n _freetext.FreeTextEditor.initialize(options.l10n);\n _ink.InkEditor.initialize(options.l10n);\n }\n options.uiManager.registerEditorTypes([_freetext.FreeTextEditor, _ink.InkEditor]);\n this.#uiManager = options.uiManager;\n this.pageIndex = options.pageIndex;\n this.div = options.div;\n this.#accessibilityManager = options.accessibilityManager;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n if (mode === _util.AnnotationEditorType.INK) {\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n this.#uiManager.unselectAll();\n if (mode !== _util.AnnotationEditorType.NONE) {\n this.div.classList.toggle(\"freeTextEditing\", mode === _util.AnnotationEditorType.FREETEXT);\n this.div.classList.toggle(\"inkEditing\", mode === _util.AnnotationEditorType.INK);\n this.div.hidden = false;\n }\n }\n addInkEditorIfNeeded(isCommitting) {\n if (!isCommitting && this.#uiManager.getMode() !== _util.AnnotationEditorType.INK) {\n return;\n }\n if (!isCommitting) {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n const editor = this.#createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n });\n editor.setInBackground();\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n enable() {\n this.div.style.pointerEvents = \"auto\";\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n }\n }\n disable() {\n this.div.style.pointerEvents = \"none\";\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n }\n remove(editor) {\n this.#uiManager.removeEditor(editor);\n this.detach(editor);\n editor.div.style.display = \"none\";\n setTimeout(() => {\n editor.div.style.display = \"\";\n editor.div.remove();\n editor.isAttachedToDOM = false;\n if (document.activeElement === document.body) {\n this.#uiManager.focusMainContainer();\n }\n }, 0);\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(false);\n }\n }\n #changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n this.#changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n this.moveEditorInDOM(editor);\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n }\n moveEditorInDOM(editor) {\n this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n addANewEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n addUndoableEditor(editor) {\n const cmd = () => {\n this.addOrRebuild(editor);\n };\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n #createNewEditor(params) {\n switch (this.#uiManager.getMode()) {\n case _util.AnnotationEditorType.FREETEXT:\n return new _freetext.FreeTextEditor(params);\n case _util.AnnotationEditorType.INK:\n return new _ink.InkEditor(params);\n }\n return null;\n }\n deserialize(data) {\n switch (data.annotationType) {\n case _util.AnnotationEditorType.FREETEXT:\n return _freetext.FreeTextEditor.deserialize(data, this, this.#uiManager);\n case _util.AnnotationEditorType.INK:\n return _ink.InkEditor.deserialize(data, this, this.#uiManager);\n }\n return null;\n }\n #createAndAddNewEditor(event) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n this.#createAndAddNewEditor(event);\n }\n pointerdown(event) {\n const {\n isMac\n } = _util.FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n drop(event) {\n const id = event.dataTransfer.getData(\"text/plain\");\n const editor = this.#uiManager.getEditor(id);\n if (!editor) {\n return;\n }\n event.preventDefault();\n event.dataTransfer.dropEffect = \"move\";\n this.#changeParent(editor);\n const rect = this.div.getBoundingClientRect();\n const endX = event.clientX - rect.x;\n const endY = event.clientY - rect.y;\n editor.translate(endX - editor.startX, endY - editor.startY);\n this.moveEditorInDOM(editor);\n editor.div.focus();\n }\n dragover(event) {\n event.preventDefault();\n }\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.setActiveEditor(null);\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n (0, _display_utils.setLayerDimensions)(this.div, viewport);\n (0, _tools.bindEvents)(this, this.div, [\"dragover\", \"drop\"]);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.viewport = viewport;\n (0, _display_utils.setLayerDimensions)(this.div, {\n rotation: viewport.rotation\n });\n this.updateMode();\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n}\nexports.AnnotationEditorLayer = AnnotationEditorLayer;\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.FreeTextEditor = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _tools = __w_pdfjs_require__(5);\nvar _editor = __w_pdfjs_require__(4);\nclass FreeTextEditor extends _editor.AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n #boundEditorDivInput = this.editorDivInput.bind(this);\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #hasAlreadyBeenCommitted = false;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _l10nPromise;\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static _keyboardManager = new _tools.KeyboardManager([[[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], FreeTextEditor.prototype.commitOrRemove]]);\n static _type = \"freetext\";\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n) {\n this._l10nPromise = new Map([\"free_text2_default_content\", \"editor_free_text2_aria_label\"].map(str => [str, l10n.get(str)]));\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case _util.AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [_util.AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const savedColor = this.#color;\n this.addCommands({\n cmd: () => {\n this.#color = this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(_util.AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this.div.draggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this.div.draggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freeTextEditing\");\n }\n focusin(event) {\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded() {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freeTextEditing\");\n super.remove();\n }\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n const buffer = [];\n for (const div of divs) {\n buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n if (!this.#hasAlreadyBeenCommitted) {\n this.#hasAlreadyBeenCommitted = true;\n this.parent.addUndoableEditor(this);\n }\n this.disableEditMode();\n this.#content = this.#extractText().trimEnd();\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n dblclick(event) {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freeTextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.enableEditing();\n FreeTextEditor._l10nPromise.get(\"editor_free_text2_aria_label\").then(msg => this.editorDiv?.setAttribute(\"aria-label\", msg));\n FreeTextEditor._l10nPromise.get(\"free_text2_default_content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n (0, _tools.bindEvents)(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n this.div.draggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this.div.draggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = _util.Util.makeHexColor(...data.color);\n editor.#content = data.value;\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = _editor.AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n return {\n annotationType: _util.AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n}\nexports.FreeTextEditor = FreeTextEditor;\n\n/***/ }),\n/* 29 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.InkEditor = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _editor = __w_pdfjs_require__(4);\nvar _tools = __w_pdfjs_require__(5);\nconst RESIZER_SIZE = 16;\nclass InkEditor extends _editor.AnnotationEditor {\n #aspectRatio = 0;\n #baseHeight = 0;\n #baseWidth = 0;\n #boundCanvasContextMenu = this.canvasContextMenu.bind(this);\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n #currentPath2D = new Path2D();\n #disableEditing = false;\n #hasSomethingToDraw = false;\n #isCanvasInitialized = false;\n #observer = null;\n #realWidth = 0;\n #realHeight = 0;\n #requestFrameCallback = null;\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 1;\n static _l10nPromise;\n static _type = \"ink\";\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n }\n static initialize(l10n) {\n this._l10nPromise = new Map([\"editor_ink_canvas_aria_label\", \"editor_ink2_aria_label\"].map(str => [str, l10n.get(str)]));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case _util.AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case _util.AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case _util.AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case _util.AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n }\n get propertiesToUpdate() {\n return [[_util.AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [_util.AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor], [_util.AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n }\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const savedColor = this.color;\n this.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: _util.AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n rebuild() {\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n remove() {\n if (this.canvas === null) {\n return;\n }\n if (!this.isEmpty()) {\n this.commit();\n }\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n this.#observer.disconnect();\n this.#observer = null;\n super.remove();\n }\n setParent(parent) {\n if (!this.parent && parent) {\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n super.enableEditMode();\n this.div.draggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n super.disableEditMode();\n this.div.draggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n onceAdded() {\n this.div.draggable = !this.isEmpty();\n }\n isEmpty() {\n return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n }\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height]\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n #setStroke() {\n const {\n ctx,\n color,\n opacity,\n thickness,\n parentScale,\n scaleFactor\n } = this;\n ctx.lineWidth = thickness * parentScale / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${(0, _tools.opacityToHex)(opacity)}`;\n }\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", this.#boundCanvasContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||= InkEditor._defaultColor || _editor.AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n }\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n this.#draw(x, y);\n this.#endPath();\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n const {\n ctx\n } = this;\n ctx.save();\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n ctx.restore();\n }\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) / 3, prevY + 2 * (y1 - prevY) / 3, x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3, x3, y3);\n }\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x3 + 2 * (x1 - x3) / 3, y3 + 2 * (y1 - y3) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n [x0, y0] = [x3, y3];\n }\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const control1 = [x0 + 2 * (x1 - x0) / 3, y0 + 2 * (y1 - y0) / 3];\n const control2 = [x2 + 2 * (x1 - x2) / 3, y2 + 2 * (y1 - y2) / 3];\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n const {\n canvas,\n ctx\n } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n commit() {\n if (this.#disableEditing) {\n return;\n }\n super.commit();\n this.isEditing = false;\n this.disableEditMode();\n this.setInForeground();\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n this.#fitToContent(true);\n this.parent.addInkEditorIfNeeded(true);\n this.parent.moveEditorInDOM(this);\n this.div.focus({\n preventScroll: true\n });\n }\n focusin(event) {\n super.focusin(event);\n this.enableEditMode();\n }\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n this.setInForeground();\n event.preventDefault();\n if (event.type !== \"mouse\") {\n this.div.focus();\n }\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n canvasContextMenu(event) {\n event.preventDefault();\n }\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n #endDrawing(event) {\n this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n setTimeout(() => {\n this.canvas.removeEventListener(\"contextmenu\", this.#boundCanvasContextMenu);\n }, 10);\n this.#stopDrawing(event.offsetX, event.offsetY);\n this.addToAnnotationStorage();\n this.setInBackground();\n }\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n InkEditor._l10nPromise.get(\"editor_ink_canvas_aria_label\").then(msg => this.canvas?.setAttribute(\"aria-label\", msg));\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n InkEditor._l10nPromise.get(\"editor_ink2_aria_label\").then(msg => this.div?.setAttribute(\"aria-label\", msg));\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n this.#createCanvas();\n if (this.width) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.#setMinDims();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n this.#createObserver();\n return this.div;\n }\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n return;\n }\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n this.canvas.style.visibility = \"hidden\";\n if (this.#aspectRatio && Math.abs(this.#aspectRatio - width / height) > 1e-2) {\n height = Math.ceil(width / this.#aspectRatio);\n this.setDims(width, height);\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n this.#setCanvasDims();\n this.#redraw();\n this.canvas.style.visibility = \"visible\";\n this.fixDims();\n }\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n }\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n }\n return path2D;\n }\n #serializePaths(s, tx, ty, h) {\n const NUMBER_OF_POINTS_ON_BEZIER_CURVE = 4;\n const paths = [];\n const padding = this.thickness / 2;\n let buffer, points;\n for (const bezier of this.paths) {\n buffer = [];\n points = [];\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n const p10 = s * (first[0] + tx) + padding;\n const p11 = h - s * (first[1] + ty) - padding;\n const p20 = s * (control1[0] + tx) + padding;\n const p21 = h - s * (control1[1] + ty) - padding;\n const p30 = s * (control2[0] + tx) + padding;\n const p31 = h - s * (control2[1] + ty) - padding;\n const p40 = s * (second[0] + tx) + padding;\n const p41 = h - s * (second[1] + ty) - padding;\n if (i === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n this.#extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, NUMBER_OF_POINTS_ON_BEZIER_CURVE, points);\n }\n paths.push({\n bezier: buffer,\n points\n });\n }\n return paths;\n }\n #extractPointsOnBezier(p10, p11, p20, p21, p30, p31, p40, p41, n, points) {\n if (this.#isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41)) {\n points.push(p40, p41);\n return;\n }\n for (let i = 1; i < n - 1; i++) {\n const t = i / n;\n const mt = 1 - t;\n let q10 = t * p10 + mt * p20;\n let q11 = t * p11 + mt * p21;\n let q20 = t * p20 + mt * p30;\n let q21 = t * p21 + mt * p31;\n const q30 = t * p30 + mt * p40;\n const q31 = t * p31 + mt * p41;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n q20 = t * q20 + mt * q30;\n q21 = t * q21 + mt * q31;\n q10 = t * q10 + mt * q20;\n q11 = t * q11 + mt * q21;\n points.push(q10, q11);\n }\n points.push(p40, p41);\n }\n #isAlmostFlat(p10, p11, p20, p21, p30, p31, p40, p41) {\n const tol = 10;\n const ax = (3 * p20 - 2 * p10 - p40) ** 2;\n const ay = (3 * p21 - 2 * p11 - p41) ** 2;\n const bx = (3 * p30 - p10 - 2 * p40) ** 2;\n const by = (3 * p31 - p11 - 2 * p41) ** 2;\n return Math.max(ax, bx) + Math.max(ay, by) <= tol;\n }\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = _util.Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n return [xMin, yMin, xMax, yMax];\n }\n #getPadding() {\n return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n }\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.#aspectRatio = width / height;\n this.#setMinDims();\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n this.#realWidth = width;\n this.#realHeight = height;\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n }\n #setMinDims() {\n const {\n style\n } = this.div;\n if (this.#aspectRatio >= 1) {\n style.minHeight = `${RESIZER_SIZE}px`;\n style.minWidth = `${Math.round(this.#aspectRatio * RESIZER_SIZE)}px`;\n } else {\n style.minWidth = `${RESIZER_SIZE}px`;\n style.minHeight = `${Math.round(RESIZER_SIZE / this.#aspectRatio)}px`;\n }\n }\n static deserialize(data, parent, uiManager) {\n const editor = super.deserialize(data, parent, uiManager);\n editor.thickness = data.thickness;\n editor.color = _util.Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n editor.#aspectRatio = width / height;\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n for (const {\n bezier\n } of data.paths) {\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (height - bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (height - bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (height - bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (height - bezier[i + 5] - padding);\n path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(RESIZER_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(RESIZER_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n return editor;\n }\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n const rect = this.getRect(0, 0);\n const height = this.rotation % 180 === 0 ? rect[3] - rect[1] : rect[2] - rect[0];\n const color = _editor.AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n return {\n annotationType: _util.AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(this.scaleFactor / this.parentScale, this.translationX, this.translationY, height),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation\n };\n }\n}\nexports.InkEditor = InkEditor;\n\n/***/ }),\n/* 30 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.AnnotationLayer = void 0;\nvar _util = __w_pdfjs_require__(1);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _annotation_storage = __w_pdfjs_require__(3);\nvar _scripting_utils = __w_pdfjs_require__(31);\nvar _xfa_layer = __w_pdfjs_require__(32);\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n}\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case _util.AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case _util.AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case _util.AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case _util.AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case _util.AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case _util.AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case _util.AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case _util.AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case _util.AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case _util.AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case _util.AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case _util.AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case _util.AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case _util.AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case _util.AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case _util.AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case _util.AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case _util.AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n _createContainer(ignoreBorder = false) {\n const {\n data,\n page,\n viewport\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case _util.AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n case _util.AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n case _util.AnnotationBorderStyleType.BEVELED:\n (0, _util.warn)(\"Unimplemented border style: beveled\");\n break;\n case _util.AnnotationBorderStyleType.INSET:\n (0, _util.warn)(\"Unimplemented border style: inset\");\n break;\n case _util.AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n container.style.borderColor = _util.Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n container.style.borderWidth = 0;\n }\n }\n container.style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n container.style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n const {\n width,\n height\n } = getRectDims(this.data.rect);\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = 100 * width / pageWidth;\n elementHeight = 100 * height / pageHeight;\n } else {\n elementWidth = 100 * height / pageWidth;\n elementHeight = 100 * width / pageHeight;\n }\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));\n };\n return (0, _util.shadow)(this, \"_commonActions\", {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print\n });\n },\n hidden: event => {\n this.container.style.visibility = event.detail.hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger ||= this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.classList.add(\"popupTriggerArea\");\n container.append(trigger);\n }\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true\n });\n const popup = popupElement.render();\n popup.style.left = \"100%\";\n container.append(popup);\n }\n _renderQuadrilaterals(className) {\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.classList.add(className);\n }\n return this.quadrilaterals;\n }\n render() {\n (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this._bindAttachment(link, data.attachment);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map((quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.append(linkElement);\n return quadrilateral;\n });\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindAttachment(link, attachment) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(this.container, attachment.content, attachment.filename);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n (0, _util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n (0, _util.warn)(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({\n type: this.data.name\n });\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n const {\n isWin,\n isMac\n } = _util.FeatureTest.platform;\n return isWin && event.ctrlKey || isMac && event.metaKey;\n }\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (_util.LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / _util.LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / _util.LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!event.relatedTarget) {\n return;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return {\n displayValue: option.textContent,\n exportValue: option.value\n };\n });\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n static IGNORE_TYPES = new Set([\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"]);\n constructor(parameters) {\n const {\n data\n } = parameters;\n const isRenderable = !PopupAnnotationElement.IGNORE_TYPES.has(data.parentType) && !!(data.titleObj?.str || data.contentsObj?.str || data.richText?.str);\n super(parameters, {\n isRenderable\n });\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const parentElements = this.layer.querySelectorAll(`[data-annotation-id=\"${this.data.parentId}\"]`);\n if (parentElements.length === 0) {\n return this.container;\n }\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText\n });\n const page = this.page;\n const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);\n const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = this.viewport.rawDims;\n this.container.style.left = `${100 * (popupLeft - pageX) / pageWidth}%`;\n this.container.style.top = `${100 * (popupTop - pageY) / pageHeight}%`;\n this.container.append(popup.render());\n return this.container;\n }\n}\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n this.pinned = false;\n }\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n const wrapper = document.createElement(\"div\");\n wrapper.classList.add(\"popupWrapper\");\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n const popup = document.createElement(\"div\");\n popup.classList.add(\"popup\");\n const color = this.color;\n if (color) {\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.append(title);\n const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString()\n });\n popup.append(modificationDate);\n }\n if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) {\n _xfa_layer.XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.append(contents);\n }\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n wrapper.append(popup);\n return wrapper;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex = parseInt(this.container.style.zIndex) + 1000;\n }\n }\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex = parseInt(this.container.style.zIndex) - 1000;\n }\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n this._createPopup(line, data);\n return this.container;\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n this._createPopup(square, data);\n return this.container;\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n this._createPopup(circle, data);\n return this.container;\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n this._createPopup(polyline, data);\n return this.container;\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const data = this.data;\n const {\n width,\n height\n } = getRectDims(data.rect);\n const svg = this.svgFactory.create(width, height, true);\n for (const inkList of data.inkLists) {\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n this._createPopup(polyline, data);\n svg.append(polyline);\n }\n this.container.append(svg);\n return this.container;\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n super(parameters, {\n isRenderable,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n filename,\n content\n } = this.data.file;\n this.filename = (0, _display_utils.getFilenameFromUrl)(filename, true);\n this.content = content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n let trigger;\n if (this.data.hasAppearance) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(this.data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n }\n trigger.classList.add(\"popupTriggerArea\");\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) {\n this._createPopup(trigger, this.data);\n }\n this.container.append(trigger);\n return this.container;\n }\n _download() {\n this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n static #appendElement(element, id, div, accessibilityManager) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${_display_utils.AnnotationPrefix}${id}`;\n div.append(element);\n accessibilityManager?.moveElementInDOM(div, element, contentElement, false);\n }\n static render(params) {\n const {\n annotations,\n div,\n viewport,\n accessibilityManager\n } = params;\n (0, _display_utils.setLayerDimensions)(div, viewport);\n const elementParams = {\n data: null,\n layer: div,\n page: params.page,\n viewport,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new _display_utils.DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new _annotation_storage.AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects\n };\n let zIndex = 0;\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n if (data.annotationType !== _util.AnnotationType.POPUP) {\n const {\n width,\n height\n } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue;\n }\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n renderedElement.style.zIndex = zIndex++;\n AnnotationLayer.#appendElement(renderedElement, data.id, div, accessibilityManager);\n }\n } else {\n rendered.style.zIndex = zIndex++;\n if (element instanceof PopupAnnotationElement) {\n div.prepend(rendered);\n } else {\n AnnotationLayer.#appendElement(rendered, data.id, div, accessibilityManager);\n }\n }\n }\n this.#setAnnotationCanvasMap(div, params.annotationCanvasMap);\n }\n static update(params) {\n const {\n annotationCanvasMap,\n div,\n viewport\n } = params;\n (0, _display_utils.setLayerDimensions)(div, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n annotationCanvasMap.clear();\n }\n}\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 31 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.ColorConverters = void 0;\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_HTML([r, g, b]) {\n const R = makeColorComp(r);\n const G = makeColorComp(g);\n const B = makeColorComp(b);\n return `#${R}${G}${B}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 32 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.XfaLayer = void 0;\nvar _xfa_text = __w_pdfjs_require__(19);\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const stack = [[root, -1, rootHtml]];\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (_xfa_text.XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 33 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SVGGraphics = void 0;\nvar _display_utils = __w_pdfjs_require__(6);\nvar _util = __w_pdfjs_require__(1);\nvar _is_node = __w_pdfjs_require__(10);\nlet SVGGraphics = class {\n constructor() {\n (0, _util.unreachable)(\"Not implemented: SVGGraphics\");\n }\n};\nexports.SVGGraphics = SVGGraphics;\n{\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\"\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n const createObjectURL = function (data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], {\n type: contentType\n }));\n }\n const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = (b1 & 3) << 4 | b2 >> 4;\n const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n const convertImgDataToPng = function () {\n const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n const CHUNK_WRAPPER_SIZE = 12;\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n } else {\n c = c >> 1 & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = crc >>> 8 ^ b;\n }\n return crc ^ -1;\n }\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n data.set(body, p);\n p += body.length;\n const crc = crc32(data, offset + 4, p);\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return b << 16 | a;\n }\n function deflateSync(literals) {\n if (!_is_node.isNodeJS) {\n return deflateSyncUncompressed(literals);\n }\n try {\n let input;\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n input = Buffer.from(literals);\n }\n const output = require(\"zlib\").deflateSync(input, {\n level: 9\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n }\n return deflateSyncUncompressed(literals);\n }\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78;\n idat[pi++] = 0x9c;\n let pos = 0;\n while (len > maxBlockLength) {\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n const adler = adler32(literals, 0, literals.length);\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n switch (kind) {\n case _util.ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = width + 7 >> 3;\n break;\n case _util.ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case _util.ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0;\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++;\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n const idat = deflateSync(literals);\n const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n }();\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n this.textMatrix = _util.IDENTITY_MATRIX;\n this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = _util.TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n this.dashArray = [];\n this.dashPhase = 0;\n this.dependencies = [];\n this.activeClipUrl = null;\n this.clipGroup = null;\n this.maskId = \"\";\n }\n clone() {\n return Object.create(this);\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({\n fnId: 92,\n fn: \"group\",\n items: []\n });\n tmp.push(opTree);\n opTree = opTree.at(-1).items;\n continue;\n }\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = Math.acos(m[0]) * 180 / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n }\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n exports.SVGGraphics = SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n (0, _display_utils.deprecated)(\"The SVG back-end is no longer maintained and *may* be removed in the future.\");\n this.svgFactory = new _display_utils.DOMSVGFactory();\n this.current = new SVGExtraState();\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n this._operatorIdMapping = [];\n for (const op in _util.OPS) {\n this._operatorIdMapping[_util.OPS[op]] = op;\n }\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== _util.OPS.dependency) {\n continue;\n }\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n this.tgrp = null;\n }\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = _util.IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i]\n });\n }\n return opListToTree(opList);\n }\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n switch (fnId | 0) {\n case _util.OPS.beginText:\n this.beginText();\n break;\n case _util.OPS.dependency:\n break;\n case _util.OPS.setLeading:\n this.setLeading(args);\n break;\n case _util.OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case _util.OPS.setFont:\n this.setFont(args);\n break;\n case _util.OPS.showText:\n this.showText(args[0]);\n break;\n case _util.OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case _util.OPS.endText:\n this.endText();\n break;\n case _util.OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case _util.OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case _util.OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case _util.OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case _util.OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n case _util.OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case _util.OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case _util.OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case _util.OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case _util.OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case _util.OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case _util.OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case _util.OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case _util.OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case _util.OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case _util.OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case _util.OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case _util.OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case _util.OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case _util.OPS.setGState:\n this.setGState(args[0]);\n break;\n case _util.OPS.fill:\n this.fill();\n break;\n case _util.OPS.eoFill:\n this.eoFill();\n break;\n case _util.OPS.stroke:\n this.stroke();\n break;\n case _util.OPS.fillStroke:\n this.fillStroke();\n break;\n case _util.OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case _util.OPS.clip:\n this.clip(\"nonzero\");\n break;\n case _util.OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case _util.OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case _util.OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case _util.OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case _util.OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case _util.OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case _util.OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case _util.OPS.closePath:\n this.closePath();\n break;\n case _util.OPS.closeStroke:\n this.closeStroke();\n break;\n case _util.OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case _util.OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case _util.OPS.nextLine:\n this.nextLine();\n break;\n case _util.OPS.transform:\n this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n break;\n case _util.OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case _util.OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n (0, _util.warn)(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.append(current.tspan);\n }\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = _util.IDENTITY_MATRIX;\n current.lineMatrix = _util.IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n x += fontDirection * wordSpacing;\n continue;\n } else if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {}\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n }\n current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n if (vertical) {\n current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.append(current.tspan);\n current.txtgrp.append(current.txtElement);\n this._ensureTransformGroup().append(current.txtElement);\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.append(this.cssStyle);\n }\n const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n }\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n endText() {\n const current = this.current;\n if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n }\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n setFillRGBColor(r, g, b) {\n this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = _util.Util.inverseTransform(this.transformMatrix);\n const bl = _util.Util.applyTransform([0, 0], inv);\n const br = _util.Util.applyTransform([0, height], inv);\n const ul = _util.Util.applyTransform([width, 0], inv);\n const ur = _util.Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().append(rect);\n }\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || _util.IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);\n const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = _util.Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n tiling.append(bbox.childNodes[0]);\n this.defs.append(tiling);\n return `url(#${tilingId})`;\n }\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.append(stop);\n }\n this.defs.append(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n (0, _util.warn)(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n for (const op of ops) {\n switch (op | 0) {\n case _util.OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n break;\n case _util.OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case _util.OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case _util.OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case _util.OPS.curveTo2:\n d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case _util.OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n j += 4;\n break;\n case _util.OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n d = d.join(\" \");\n if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().append(current.path);\n }\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n endPath() {\n const current = this.current;\n current.path = null;\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.append(clipElement);\n this.defs.append(clipPath);\n if (current.activeClipUrl) {\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n this.tgrp = null;\n }\n clip(type) {\n this.pendingClip = type;\n }\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n }\n eoFill() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fill();\n }\n fillStroke() {\n this.stroke();\n this.fill();\n }\n eoFillStroke() {\n this.current.element?.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n this.fillStroke();\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n this._ensureTransformGroup().append(rect);\n }\n paintImageXObject(objId) {\n const imgData = this.getObject(objId);\n if (!imgData) {\n (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n if (mask) {\n mask.append(imgEl);\n } else {\n this._ensureTransformGroup().append(imgEl);\n }\n }\n paintImageMaskXObject(img) {\n const imgData = this.getObject(img.data, img);\n if (imgData.bitmap) {\n (0, _util.warn)(\"paintImageMaskXObject: ImageBitmap support is not implemented, \" + \"ensure that the `isOffscreenCanvasSupported` API parameter is disabled.\");\n return;\n }\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n this.defs.append(mask);\n this._ensureTransformGroup().append(rect);\n this.paintInlineImageXObject(imgData, mask);\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n }\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n paintFormXObjectEnd() {}\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.append(definitions);\n this.defs = definitions;\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.append(rootGroup);\n this.svg = rootGroup;\n return svg;\n }\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.append(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().append(this.tgrp);\n } else {\n this.svg.append(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AbortException\", ({\n enumerable: true,\n get: function () {\n return _util.AbortException;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_editor_layer.AnnotationEditorLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorParamsType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorParamsType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorType\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationEditorType;\n }\n}));\nObject.defineProperty(exports, \"AnnotationEditorUIManager\", ({\n enumerable: true,\n get: function () {\n return _tools.AnnotationEditorUIManager;\n }\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n enumerable: true,\n get: function () {\n return _annotation_layer.AnnotationLayer;\n }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n enumerable: true,\n get: function () {\n return _util.AnnotationMode;\n }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n enumerable: true,\n get: function () {\n return _util.CMapCompressionType;\n }\n}));\nObject.defineProperty(exports, \"FeatureTest\", ({\n enumerable: true,\n get: function () {\n return _util.FeatureTest;\n }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n enumerable: true,\n get: function () {\n return _worker_options.GlobalWorkerOptions;\n }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.InvalidPDFException;\n }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n enumerable: true,\n get: function () {\n return _util.MissingPDFException;\n }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n enumerable: true,\n get: function () {\n return _util.OPS;\n }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n enumerable: true,\n get: function () {\n return _api.PDFDataRangeTransport;\n }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PDFDateString;\n }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n enumerable: true,\n get: function () {\n return _api.PDFWorker;\n }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n enumerable: true,\n get: function () {\n return _util.PasswordResponses;\n }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n enumerable: true,\n get: function () {\n return _util.PermissionFlag;\n }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n enumerable: true,\n get: function () {\n return _display_utils.PixelsPerInch;\n }\n}));\nObject.defineProperty(exports, \"PromiseCapability\", ({\n enumerable: true,\n get: function () {\n return _util.PromiseCapability;\n }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n enumerable: true,\n get: function () {\n return _display_utils.RenderingCancelledException;\n }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n enumerable: true,\n get: function () {\n return _svg.SVGGraphics;\n }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n enumerable: true,\n get: function () {\n return _util.UnexpectedResponseException;\n }\n}));\nObject.defineProperty(exports, \"Util\", ({\n enumerable: true,\n get: function () {\n return _util.Util;\n }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n enumerable: true,\n get: function () {\n return _util.VerbosityLevel;\n }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n enumerable: true,\n get: function () {\n return _xfa_layer.XfaLayer;\n }\n}));\nObject.defineProperty(exports, \"build\", ({\n enumerable: true,\n get: function () {\n return _api.build;\n }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n enumerable: true,\n get: function () {\n return _util.createValidAbsoluteUrl;\n }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n enumerable: true,\n get: function () {\n return _api.getDocument;\n }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getPdfFilenameFromUrl;\n }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n enumerable: true,\n get: function () {\n return _display_utils.getXfaPageViewport;\n }\n}));\nObject.defineProperty(exports, \"isDataScheme\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isDataScheme;\n }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n enumerable: true,\n get: function () {\n return _display_utils.isPdfFile;\n }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n enumerable: true,\n get: function () {\n return _display_utils.loadScript;\n }\n}));\nObject.defineProperty(exports, \"normalizeUnicode\", ({\n enumerable: true,\n get: function () {\n return _util.normalizeUnicode;\n }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.renderTextLayer;\n }\n}));\nObject.defineProperty(exports, \"setLayerDimensions\", ({\n enumerable: true,\n get: function () {\n return _display_utils.setLayerDimensions;\n }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n enumerable: true,\n get: function () {\n return _util.shadow;\n }\n}));\nObject.defineProperty(exports, \"updateTextLayer\", ({\n enumerable: true,\n get: function () {\n return _text_layer.updateTextLayer;\n }\n}));\nObject.defineProperty(exports, \"version\", ({\n enumerable: true,\n get: function () {\n return _api.version;\n }\n}));\nvar _util = __w_pdfjs_require__(1);\nvar _api = __w_pdfjs_require__(2);\nvar _display_utils = __w_pdfjs_require__(6);\nvar _text_layer = __w_pdfjs_require__(26);\nvar _annotation_editor_layer = __w_pdfjs_require__(27);\nvar _tools = __w_pdfjs_require__(5);\nvar _annotation_layer = __w_pdfjs_require__(30);\nvar _worker_options = __w_pdfjs_require__(14);\nvar _svg = __w_pdfjs_require__(33);\nvar _xfa_layer = __w_pdfjs_require__(32);\nconst pdfjsVersion = '3.7.107';\nconst pdfjsBuild = '036f855dc';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\"use strict\";\n\nconst pdfjs = require(\"./build/pdf.js\");\n\nif (typeof window !== \"undefined\" && \"Worker\" in window) {\n pdfjs.GlobalWorkerOptions.workerPort = new Worker(\n new URL(\"./build/pdf.worker.js\", import.meta.url)\n );\n}\n\nmodule.exports = pdfjs;\n","/**!\n * Sortable 1.15.0\n * @author\tRubaXa \n * @author\towenm \n * @license MIT\n */\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar version = \"1.15.0\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !! /*@__PURE__*/navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\n * Returns the \"bounding client rect\" of given element\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\n * @param {[HTMLElement]} container The parent the element will be placed in\n * @return {Object} The boundingClientRect of el, with specified adjustments\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el.parentNode && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\n * Checks if a side of an element is scrolled past a side of its parents\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\n * and non-draggable elements\n * @param {HTMLElement} el The parent element\n * @param {Number} childNum The index of the child\n * @param {Object} options Parent Sortable's options\n * @return {HTMLElement} The child at index childNum, or null if not found\n */\n\n\nfunction getChild(el, childNum, options, includeDragEl) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && (includeDragEl || children[i] !== Sortable.dragged) && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\n * @param {HTMLElement} el Parent element\n * @param {selector} selector Any other elements that should be ignored\n * @return {HTMLElement} The last child, ignoring ghostEl\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\n * Returns the index of an element within its parent for a selected set of\n * elements\n * @param {HTMLElement} el\n * @param {selector} selector\n * @return {number}\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\n * The value is returned in real pixels.\n * @param {HTMLElement} el\n * @return {Array} Offsets in the format of [left, top]\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\n * Returns the index of the object within the given array\n * @param {Array} arr Array that may or may not hold the object\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\n * @return {Number} The index of the object in the array, or -1\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread2({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n this.forRepaintDummy = repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.forEach(function (p) {\n if (p.pluginName === plugin.pluginName) {\n throw \"Sortable: Cannot mount plugin \".concat(plugin.pluginName, \" more than once\");\n }\n });\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread2({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread2({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread2(_objectSpread2({}, extraEventProperties), PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar _excluded = [\"evt\"];\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, _excluded);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread2({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread2({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\r\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\r\n * @param {Number} x X position\r\n * @param {Number} y Y position\r\n * @return {HTMLElement} Element of the first found nearest Sortable\r\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n var threshold = sortable[expando].options.emptyInsertThreshold;\n if (!threshold || lastChild(sortable)) return;\n var rect = getRect(sortable),\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists && !ChromeForAndroid) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\r\n * @class Sortable\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window && !Safari,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n } // Safari ignores further event handling after mousedown\n\n\n if (!this.nativeDraggable && Safari && target && target.tagName.toUpperCase() === 'SELECT') {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.removeAttribute(\"id\");\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread2({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = parentEl !== rootEl) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // Insert to end of list\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // if there is a last element, it is the target\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n\n if (elLastChild && elLastChild.nextSibling) {\n // the last draggable element is not the last node\n el.insertBefore(dragEl, elLastChild.nextSibling);\n } else {\n el.appendChild(dragEl);\n }\n\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (elLastChild && _ghostIsFirst(evt, vertical, this)) {\n // Insert to start of list\n var firstChild = getChild(el, 0, options, true);\n\n if (firstChild === dragEl) {\n return completed(false);\n }\n\n target = firstChild;\n targetRect = getRect(target);\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, false) !== false) {\n capture();\n el.insertBefore(dragEl, firstChild);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\r\n * Serializes the item into an array of string.\r\n * @returns {String[]}\r\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\r\n * Sorts the elements according to the array.\r\n * @param {String[]} order order of the items\r\n */\n sort: function sort(order, useAnimation) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n useAnimation && this.captureAnimationState();\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n useAnimation && this.animateAll();\n },\n\n /**\r\n * Save the current sorting\r\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\r\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n * @param {HTMLElement} el\r\n * @param {String} [selector] default: `options.draggable`\r\n * @returns {HTMLElement|null}\r\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\r\n * Set/get option\r\n * @param {string} name\r\n * @param {*} [value]\r\n * @returns {*}\r\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\r\n * Destroy\r\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (dragEl.parentNode == rootEl && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsFirst(evt, vertical, sortable) {\n var rect = getRect(getChild(sortable.el, 0, sortable.options, true));\n var spacer = 10;\n return vertical ? evt.clientX < rect.left - spacer || evt.clientY < rect.top && evt.clientX < rect.right : evt.clientY < rect.top - spacer || evt.clientY < rect.bottom && evt.clientX < rect.left;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\r\n * Gets the direction dragEl must be swapped relative to target in order to make it\r\n * seem that dragEl has been \"inserted\" into that element's position\r\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\r\n * @return {Number} Direction dragEl must be swapped\r\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\r\n * Generate id\r\n * @param {HTMLElement} el\r\n * @returns {String}\r\n * @private\r\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\r\n * Get the Sortable instance of an element\r\n * @param {HTMLElement} element The element\r\n * @return {Sortable|undefined} The instance of Sortable\r\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\r\n * Mount a plugin to Sortable\r\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\r\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread2(_objectSpread2({}, Sortable.utils), plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\r\n * Create sortable instance\r\n * @param {HTMLElement} el\r\n * @param {Object} [options]\r\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n forceAutoScrollFallback: false,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || this.options.forceAutoScrollFallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar OnSpill = [Remove, Revert];\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (!sortable.options.avoidImplicitDeselect) {\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n avoidImplicitDeselect: false,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvent: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvent: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvent: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n folding = false; // Do not \"unfold\" after around dragEl if reverted\n\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvent: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nexport default Sortable;\nexport { AutoScrollPlugin as AutoScroll, MultiDragPlugin as MultiDrag, OnSpill, Sortable, SwapPlugin as Swap };\n","import { register } from \"component-register\";\nexport { hot, getCurrentElement, noShadowDOM } from \"component-register\";\nimport { createRoot, createSignal } from \"solid-js\";\nimport { insert } from \"solid-js/web\";\nfunction createProps(raw) {\n const keys = Object.keys(raw);\n const props = {};\n for (let i = 0; i < keys.length; i++) {\n const [get, set] = createSignal(raw[keys[i]]);\n Object.defineProperty(props, keys[i], {\n get,\n set(v) {\n set(() => v);\n }\n });\n }\n return props;\n}\nfunction lookupContext(el) {\n if (el.assignedSlot && el.assignedSlot._$owner)\n return el.assignedSlot._$owner;\n let next = el.parentNode;\n while (next &&\n !next._$owner &&\n !(next.assignedSlot && next.assignedSlot._$owner))\n next = next.parentNode;\n return next && next.assignedSlot\n ? next.assignedSlot._$owner\n : el._$owner;\n}\nfunction withSolid(ComponentType) {\n return (rawProps, options) => {\n const { element } = options;\n return createRoot((dispose) => {\n const props = createProps(rawProps);\n element.addPropertyChangedCallback((key, val) => (props[key] = val));\n element.addReleaseCallback(() => {\n element.renderRoot.textContent = \"\";\n dispose();\n });\n const comp = ComponentType(props, options);\n return insert(element.renderRoot, comp);\n }, lookupContext(element));\n };\n}\nfunction customElement(tag, props, ComponentType) {\n if (arguments.length === 2) {\n ComponentType = props;\n props = {};\n }\n return register(tag, props)(withSolid(ComponentType));\n}\nexport { withSolid, customElement };\n","let taskIdCounter = 1,\n isCallbackScheduled = false,\n isPerformingWork = false,\n taskQueue = [],\n currentTask = null,\n shouldYieldToHost = null,\n yieldInterval = 5,\n deadline = 0,\n maxYieldInterval = 300,\n scheduleCallback = null,\n scheduledCallback = null;\nconst maxSigned31BitInt = 1073741823;\nfunction setupScheduler() {\n const channel = new MessageChannel(),\n port = channel.port2;\n scheduleCallback = () => port.postMessage(null);\n channel.port1.onmessage = () => {\n if (scheduledCallback !== null) {\n const currentTime = performance.now();\n deadline = currentTime + yieldInterval;\n const hasTimeRemaining = true;\n try {\n const hasMoreWork = scheduledCallback(hasTimeRemaining, currentTime);\n if (!hasMoreWork) {\n scheduledCallback = null;\n } else port.postMessage(null);\n } catch (error) {\n port.postMessage(null);\n throw error;\n }\n }\n };\n if (navigator && navigator.scheduling && navigator.scheduling.isInputPending) {\n const scheduling = navigator.scheduling;\n shouldYieldToHost = () => {\n const currentTime = performance.now();\n if (currentTime >= deadline) {\n if (scheduling.isInputPending()) {\n return true;\n }\n return currentTime >= maxYieldInterval;\n } else {\n return false;\n }\n };\n } else {\n shouldYieldToHost = () => performance.now() >= deadline;\n }\n}\nfunction enqueue(taskQueue, task) {\n function findIndex() {\n let m = 0;\n let n = taskQueue.length - 1;\n while (m <= n) {\n const k = n + m >> 1;\n const cmp = task.expirationTime - taskQueue[k].expirationTime;\n if (cmp > 0) m = k + 1;else if (cmp < 0) n = k - 1;else return k;\n }\n return m;\n }\n taskQueue.splice(findIndex(), 0, task);\n}\nfunction requestCallback(fn, options) {\n if (!scheduleCallback) setupScheduler();\n let startTime = performance.now(),\n timeout = maxSigned31BitInt;\n if (options && options.timeout) timeout = options.timeout;\n const newTask = {\n id: taskIdCounter++,\n fn,\n startTime,\n expirationTime: startTime + timeout\n };\n enqueue(taskQueue, newTask);\n if (!isCallbackScheduled && !isPerformingWork) {\n isCallbackScheduled = true;\n scheduledCallback = flushWork;\n scheduleCallback();\n }\n return newTask;\n}\nfunction cancelCallback(task) {\n task.fn = null;\n}\nfunction flushWork(hasTimeRemaining, initialTime) {\n isCallbackScheduled = false;\n isPerformingWork = true;\n try {\n return workLoop(hasTimeRemaining, initialTime);\n } finally {\n currentTask = null;\n isPerformingWork = false;\n }\n}\nfunction workLoop(hasTimeRemaining, initialTime) {\n let currentTime = initialTime;\n currentTask = taskQueue[0] || null;\n while (currentTask !== null) {\n if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n break;\n }\n const callback = currentTask.fn;\n if (callback !== null) {\n currentTask.fn = null;\n const didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n callback(didUserCallbackTimeout);\n currentTime = performance.now();\n if (currentTask === taskQueue[0]) {\n taskQueue.shift();\n }\n } else taskQueue.shift();\n currentTask = taskQueue[0] || null;\n }\n return currentTask !== null;\n}\n\nconst sharedConfig = {\n context: undefined,\n registry: undefined\n};\nfunction setHydrateContext(context) {\n sharedConfig.context = context;\n}\nfunction nextHydrateContext() {\n return {\n ...sharedConfig.context,\n id: `${sharedConfig.context.id}${sharedConfig.context.count++}-`,\n count: 0\n };\n}\n\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst $DEVCOMP = Symbol(\"solid-dev-component\");\nconst signalOptions = {\n equals: equalFn\n};\nlet ERROR = null;\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nconst NO_INIT = {};\nvar Owner = null;\nlet Transition = null;\nlet Scheduler = null;\nlet ExternalSourceFactory = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nconst [transPending, setTransPending] = /*@__PURE__*/createSignal(false);\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n root = unowned ? UNOWNED : {\n owned: null,\n cleanups: null,\n context: null,\n owner: detachedOwner === undefined ? owner : detachedOwner\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n if (Transition && Transition.running && Transition.sources.has(s)) value = value(s.tValue);else value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n if (!options || !options.render) c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createReaction(onInvalidate, options) {\n let fn;\n const c = createComputation(() => {\n fn ? fn() : untrack(onInvalidate);\n fn = undefined;\n }, undefined, false, 0),\n s = SuspenseContext && lookup(Owner, SuspenseContext.id);\n if (s) c.suspense = s;\n c.user = true;\n return tracking => {\n fn = tracking;\n updateComputation(c);\n };\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n if (Scheduler && Transition && Transition.running) {\n c.tState = STALE;\n Updates.push(c);\n } else updateComputation(c);\n return readSignal.bind(c);\n}\nfunction createResource(pSource, pFetcher, pOptions) {\n let source;\n let fetcher;\n let options;\n if (arguments.length === 2 && typeof pFetcher === \"object\" || arguments.length === 1) {\n source = true;\n fetcher = pSource;\n options = pFetcher || {};\n } else {\n source = pSource;\n fetcher = pFetcher;\n options = pOptions || {};\n }\n let pr = null,\n initP = NO_INIT,\n id = null,\n loadedUnderTransition = false,\n scheduled = false,\n resolved = (\"initialValue\" in options),\n dynamic = typeof source === \"function\" && createMemo(source);\n const contexts = new Set(),\n [value, setValue] = (options.storage || createSignal)(options.initialValue),\n [error, setError] = createSignal(undefined),\n [track, trigger] = createSignal(undefined, {\n equals: false\n }),\n [state, setState] = createSignal(resolved ? \"ready\" : \"unresolved\");\n if (sharedConfig.context) {\n id = `${sharedConfig.context.id}${sharedConfig.context.count++}`;\n let v;\n if (options.ssrLoadFrom === \"initial\") initP = options.initialValue;else if (sharedConfig.load && (v = sharedConfig.load(id))) initP = v[0];\n }\n function loadEnd(p, v, error, key) {\n if (pr === p) {\n pr = null;\n key !== undefined && (resolved = true);\n if ((p === initP || v === initP) && options.onHydrated) queueMicrotask(() => options.onHydrated(key, {\n value: v\n }));\n initP = NO_INIT;\n if (Transition && p && loadedUnderTransition) {\n Transition.promises.delete(p);\n loadedUnderTransition = false;\n runUpdates(() => {\n Transition.running = true;\n completeLoad(v, error);\n }, false);\n } else completeLoad(v, error);\n }\n return v;\n }\n function completeLoad(v, err) {\n runUpdates(() => {\n if (err === undefined) setValue(() => v);\n setState(err !== undefined ? \"errored\" : resolved ? \"ready\" : \"unresolved\");\n setError(err);\n for (const c of contexts.keys()) c.decrement();\n contexts.clear();\n }, false);\n }\n function read() {\n const c = SuspenseContext && lookup(Owner, SuspenseContext.id),\n v = value(),\n err = error();\n if (err !== undefined && !pr) throw err;\n if (Listener && !Listener.user && c) {\n createComputed(() => {\n track();\n if (pr) {\n if (c.resolved && Transition && loadedUnderTransition) Transition.promises.add(pr);else if (!contexts.has(c)) {\n c.increment();\n contexts.add(c);\n }\n }\n });\n }\n return v;\n }\n function load(refetching = true) {\n if (refetching !== false && scheduled) return;\n scheduled = false;\n const lookup = dynamic ? dynamic() : source;\n loadedUnderTransition = Transition && Transition.running;\n if (lookup == null || lookup === false) {\n loadEnd(pr, untrack(value));\n return;\n }\n if (Transition && pr) Transition.promises.delete(pr);\n const p = initP !== NO_INIT ? initP : untrack(() => fetcher(lookup, {\n value: value(),\n refetching\n }));\n if (typeof p !== \"object\" || !(p && \"then\" in p)) {\n loadEnd(pr, p, undefined, lookup);\n return p;\n }\n pr = p;\n scheduled = true;\n queueMicrotask(() => scheduled = false);\n runUpdates(() => {\n setState(resolved ? \"refreshing\" : \"pending\");\n trigger();\n }, false);\n return p.then(v => loadEnd(p, v, undefined, lookup), e => loadEnd(p, undefined, castError(e), lookup));\n }\n Object.defineProperties(read, {\n state: {\n get: () => state()\n },\n error: {\n get: () => error()\n },\n loading: {\n get() {\n const s = state();\n return s === \"pending\" || s === \"refreshing\";\n }\n },\n latest: {\n get() {\n if (!resolved) return read();\n const err = error();\n if (err && !pr) throw err;\n return value();\n }\n }\n });\n if (dynamic) createComputed(() => load(false));else load(false);\n return [read, {\n refetch: load,\n mutate: setValue\n }];\n}\nfunction createDeferred(source, options) {\n let t,\n timeout = options ? options.timeoutMs : undefined;\n const node = createComputation(() => {\n if (!t || !t.fn) t = requestCallback(() => setDeferred(() => node.value), timeout !== undefined ? {\n timeout\n } : undefined);\n return source();\n }, undefined, true);\n const [deferred, setDeferred] = createSignal(node.value, options);\n updateComputation(node);\n setDeferred(() => node.value);\n return deferred;\n}\nfunction createSelector(source, fn = equalFn, options) {\n const subs = new Map();\n const node = createComputation(p => {\n const v = source();\n for (const [key, val] of subs.entries()) if (fn(key, v) !== fn(key, p)) {\n for (const c of val.values()) {\n c.state = STALE;\n if (c.pure) Updates.push(c);else Effects.push(c);\n }\n }\n return v;\n }, undefined, true, STALE);\n updateComputation(node);\n return key => {\n const listener = Listener;\n if (listener) {\n let l;\n if (l = subs.get(key)) l.add(listener);else subs.set(key, l = new Set([listener]));\n onCleanup(() => {\n l.delete(listener);\n !l.size && subs.delete(key);\n });\n }\n return fn(key, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value);\n };\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction on(deps, fn, options) {\n const isArray = Array.isArray(deps);\n let prevInput;\n let defer = options && options.defer;\n return prevValue => {\n let input;\n if (isArray) {\n input = Array(deps.length);\n for (let i = 0; i < deps.length; i++) input[i] = deps[i]();\n } else input = deps();\n if (defer) {\n defer = false;\n return undefined;\n }\n const result = untrack(() => fn(input, prevInput, prevValue));\n prevInput = input;\n return result;\n };\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null) ;else if (Owner.cleanups === null) Owner.cleanups = [fn];else Owner.cleanups.push(fn);\n return fn;\n}\nfunction catchError(fn, handler) {\n ERROR || (ERROR = Symbol(\"error\"));\n Owner = createComputation(undefined, undefined, true);\n Owner.context = {\n [ERROR]: [handler]\n };\n if (Transition && Transition.running) Transition.sources.add(Owner);\n try {\n return fn();\n } catch (err) {\n handleError(err);\n } finally {\n Owner = Owner.owner;\n }\n}\nfunction onError(fn) {\n ERROR || (ERROR = Symbol(\"error\"));\n if (Owner === null) ;else if (Owner.context === null) Owner.context = {\n [ERROR]: [fn]\n };else if (!Owner.context[ERROR]) Owner.context[ERROR] = [fn];else Owner.context[ERROR].push(fn);\n}\nfunction getListener() {\n return Listener;\n}\nfunction getOwner() {\n return Owner;\n}\nfunction runWithOwner(o, fn) {\n const prev = Owner;\n const prevListener = Listener;\n Owner = o;\n Listener = null;\n try {\n return runUpdates(fn, true);\n } catch (err) {\n handleError(err);\n } finally {\n Owner = prev;\n Listener = prevListener;\n }\n}\nfunction enableScheduling(scheduler = requestCallback) {\n Scheduler = scheduler;\n}\nfunction startTransition(fn) {\n if (Transition && Transition.running) {\n fn();\n return Transition.done;\n }\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n if (Scheduler || SuspenseContext) {\n t = Transition || (Transition = {\n sources: new Set(),\n effects: [],\n promises: new Set(),\n disposed: new Set(),\n queue: new Set(),\n running: true\n });\n t.done || (t.done = new Promise(res => t.resolve = res));\n t.running = true;\n }\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction resumeEffects(e) {\n Effects.push.apply(Effects, e);\n e.length = 0;\n}\nfunction createContext(defaultValue, options) {\n const id = Symbol(\"context\");\n return {\n id,\n Provider: createProvider(id),\n defaultValue\n };\n}\nfunction useContext(context) {\n let ctx;\n return (ctx = lookup(Owner, context.id)) !== undefined ? ctx : context.defaultValue;\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nlet SuspenseContext;\nfunction getSuspenseContext() {\n return SuspenseContext || (SuspenseContext = createContext({}));\n}\nfunction enableExternalSource(factory) {\n if (ExternalSourceFactory) {\n const oldFactory = ExternalSourceFactory;\n ExternalSourceFactory = (fn, trigger) => {\n const oldSource = oldFactory(fn, trigger);\n const source = factory(x => oldSource.track(x), trigger);\n return {\n track: x => source.track(x),\n dispose() {\n source.dispose();\n oldSource.dispose();\n }\n };\n };\n } else {\n ExternalSourceFactory = factory;\n }\n}\nfunction readSignal() {\n const runningTransition = Transition && Transition.running;\n if (this.sources && (runningTransition ? this.tState : this.state)) {\n if ((runningTransition ? this.tState : this.state) === STALE) updateComputation(this);else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n if (runningTransition && Transition.sources.has(this)) return this.tValue;\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current = Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n if (Transition) {\n const TransitionRunning = Transition.running;\n if (TransitionRunning || !isComp && Transition.sources.has(node)) {\n Transition.sources.add(node);\n node.tValue = value;\n }\n if (!TransitionRunning) node.value = value;\n } else node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition && Transition.running;\n if (TransitionRunning && Transition.disposed.has(o)) continue;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;else o.tState = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (false) ;\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const owner = Owner,\n listener = Listener,\n time = ExecCount;\n Listener = Owner = node;\n runComputation(node, Transition && Transition.running && Transition.sources.has(node) ? node.tValue : node.value, time);\n if (Transition && !Transition.running && Transition.sources.has(node)) {\n queueMicrotask(() => {\n runUpdates(() => {\n Transition && (Transition.running = true);\n Listener = Owner = node;\n runComputation(node, node.tValue, time);\n Listener = Owner = null;\n }, false);\n });\n }\n Listener = listener;\n Owner = owner;\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n if (Transition && Transition.running) {\n node.tState = STALE;\n node.tOwned && node.tOwned.forEach(cleanNode);\n node.tOwned = undefined;\n } else {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue, true);\n } else if (Transition && Transition.running && node.pure) {\n Transition.sources.add(node);\n node.tValue = nextValue;\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: null,\n pure\n };\n if (Transition && Transition.running) {\n c.state = 0;\n c.tState = state;\n }\n if (Owner === null) ;else if (Owner !== UNOWNED) {\n if (Transition && Transition.running && Owner.pure) {\n if (!Owner.tOwned) Owner.tOwned = [c];else Owner.tOwned.push(c);\n } else {\n if (!Owner.owned) Owner.owned = [c];else Owner.owned.push(c);\n }\n }\n if (ExternalSourceFactory) {\n const [track, trigger] = createSignal(undefined, {\n equals: false\n });\n const ordinary = ExternalSourceFactory(c.fn, trigger);\n onCleanup(() => ordinary.dispose());\n const triggerInTransition = () => startTransition(trigger).then(() => inTransition.dispose());\n const inTransition = ExternalSourceFactory(c.fn, triggerInTransition);\n c.fn = x => {\n track();\n return Transition && Transition.running ? inTransition.track(x) : ordinary.track(x);\n };\n }\n return c;\n}\nfunction runTop(node) {\n const runningTransition = Transition && Transition.running;\n if ((runningTransition ? node.tState : node.state) === 0) return;\n if ((runningTransition ? node.tState : node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (runningTransition && Transition.disposed.has(node)) return;\n if (runningTransition ? node.tState : node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if (runningTransition) {\n let top = node,\n prev = ancestors[i + 1];\n while ((top = top.owner) && top !== prev) {\n if (Transition.disposed.has(top)) return;\n }\n }\n if ((runningTransition ? node.tState : node.state) === STALE) {\n updateComputation(node);\n } else if ((runningTransition ? node.tState : node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n if (Scheduler && Transition && Transition.running) scheduleQueue(Updates);else runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n let res;\n if (Transition) {\n if (!Transition.promises.size && !Transition.queue.size) {\n const sources = Transition.sources;\n const disposed = Transition.disposed;\n Effects.push.apply(Effects, Transition.effects);\n res = Transition.resolve;\n for (const e of Effects) {\n \"tState\" in e && (e.state = e.tState);\n delete e.tState;\n }\n Transition = null;\n runUpdates(() => {\n for (const d of disposed) cleanNode(d);\n for (const v of sources) {\n v.value = v.tValue;\n if (v.owned) {\n for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);\n }\n if (v.tOwned) v.owned = v.tOwned;\n delete v.tValue;\n delete v.tOwned;\n v.tState = 0;\n }\n setTransPending(false);\n }, false);\n } else if (Transition.running) {\n Transition.running = false;\n Transition.effects.push.apply(Transition.effects, Effects);\n Effects = null;\n setTransPending(true);\n return;\n }\n }\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n if (res) res();\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction scheduleQueue(queue) {\n for (let i = 0; i < queue.length; i++) {\n const item = queue[i];\n const tasks = Transition.queue;\n if (!tasks.has(item)) {\n tasks.add(item);\n Scheduler(() => {\n tasks.delete(item);\n runUpdates(() => {\n Transition.running = true;\n runTop(item);\n }, false);\n Transition && (Transition.running = false);\n });\n }\n }\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);else queue[userLength++] = e;\n }\n if (sharedConfig.context) setHydrateContext();\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n const runningTransition = Transition && Transition.running;\n if (runningTransition) node.tState = 0;else node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = runningTransition ? source.tState : source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount)) runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n const runningTransition = Transition && Transition.running;\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (runningTransition ? !o.tState : !o.state) {\n if (runningTransition) o.tState = PENDING;else o.state = PENDING;\n if (o.pure) Updates.push(o);else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (Transition && Transition.running && node.pure) {\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n reset(node, true);\n } else if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n if (Transition && Transition.running) node.tState = 0;else node.state = 0;\n node.context = null;\n}\nfunction reset(node, top) {\n if (!top) {\n node.tState = 0;\n Transition.disposed.add(node);\n }\n if (node.owned) {\n for (let i = 0; i < node.owned.length; i++) reset(node.owned[i]);\n }\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction runErrors(fns, err) {\n for (const f of fns) f(err);\n}\nfunction handleError(err) {\n const fns = ERROR && lookup(Owner, ERROR);\n if (!fns) throw err;\n const error = castError(err);\n if (Effects) Effects.push({\n fn() {\n runErrors(fns, error);\n },\n state: STALE\n });else runErrors(fns, error);\n}\nfunction lookup(owner, key) {\n return owner ? owner.context && owner.context[key] !== undefined ? owner.context[key] : lookup(owner.owner, key) : undefined;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\nfunction createProvider(id, options) {\n return function provider(props) {\n let res;\n createRenderEffect(() => res = untrack(() => {\n Owner.context = {\n [id]: props.value\n };\n return children(() => props.children);\n }), undefined);\n return res;\n };\n}\n\nfunction observable(input) {\n return {\n subscribe(observer) {\n if (!(observer instanceof Object) || observer == null) {\n throw new TypeError(\"Expected the observer to be an object.\");\n }\n const handler = typeof observer === \"function\" ? observer : observer.next && observer.next.bind(observer);\n if (!handler) {\n return {\n unsubscribe() {}\n };\n }\n const dispose = createRoot(disposer => {\n createEffect(() => {\n const v = input();\n untrack(() => handler(v));\n });\n return disposer;\n });\n if (getOwner()) onCleanup(dispose);\n return {\n unsubscribe() {\n dispose();\n }\n };\n },\n [Symbol.observable || \"@@observable\"]() {\n return this;\n }\n };\n}\nfunction from(producer) {\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n if (\"subscribe\" in producer) {\n const unsub = producer.subscribe(v => set(() => v));\n onCleanup(() => \"unsubscribe\" in unsub ? unsub.unsubscribe() : unsub());\n } else {\n const clean = producer(set);\n onCleanup(clean);\n }\n return s;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newLen = newItems.length,\n newIndices,\n newIndicesNext,\n temp,\n tempdisposers,\n tempIndexes,\n start,\n end,\n newEnd,\n item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n }\n else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (start = 0, end = Math.min(len, newLen); start < end && items[start] === newItems[start]; start++);\n for (end = len - 1, newEnd = newLen - 1; end >= start && newEnd >= start && items[end] === newItems[newEnd]; end--, newEnd--) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, len = newLen);\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction indexArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n signals = [],\n len = 0,\n i;\n onCleanup(() => dispose(disposers));\n return () => {\n const newItems = list() || [];\n newItems[$TRACK];\n return untrack(() => {\n if (newItems.length === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n signals = [];\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n return mapped;\n }\n if (items[0] === FALLBACK) {\n disposers[0]();\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n }\n for (i = 0; i < newItems.length; i++) {\n if (i < items.length && items[i] !== newItems[i]) {\n signals[i](() => newItems[i]);\n } else if (i >= items.length) {\n mapped[i] = createRoot(mapper);\n }\n }\n for (; i < items.length; i++) {\n disposers[i]();\n }\n len = signals.length = disposers.length = newItems.length;\n items = newItems.slice(0);\n return mapped = mapped.slice(0, len);\n });\n function mapper(disposer) {\n disposers[i] = disposer;\n const [s, set] = createSignal(newItems[i]);\n signals[i] = set;\n return mapFn(s, i);\n }\n };\n}\n\nlet hydrationEnabled = false;\nfunction enableHydration() {\n hydrationEnabled = true;\n}\nfunction createComponent(Comp, props) {\n if (hydrationEnabled) {\n if (sharedConfig.context) {\n const c = sharedConfig.context;\n setHydrateContext(nextHydrateContext());\n const r = untrack(() => Comp(props || {}));\n setHydrateContext(c);\n return r;\n }\n }\n return untrack(() => Comp(props || {}));\n}\nfunction trueFn() {\n return true;\n}\nconst propTraps = {\n get(_, property, receiver) {\n if (property === $PROXY) return receiver;\n return _.get(property);\n },\n has(_, property) {\n if (property === $PROXY) return true;\n return _.has(property);\n },\n set: trueFn,\n deleteProperty: trueFn,\n getOwnPropertyDescriptor(_, property) {\n return {\n configurable: true,\n enumerable: true,\n get() {\n return _.get(property);\n },\n set: trueFn,\n deleteProperty: trueFn\n };\n },\n ownKeys(_) {\n return _.keys();\n }\n};\nfunction resolveSource(s) {\n return !(s = typeof s === \"function\" ? s() : s) ? {} : s;\n}\nfunction resolveSources() {\n for (let i = 0, length = this.length; i < length; ++i) {\n const v = this[i]();\n if (v !== undefined) return v;\n }\n}\nfunction mergeProps(...sources) {\n let proxy = false;\n for (let i = 0; i < sources.length; i++) {\n const s = sources[i];\n proxy = proxy || !!s && $PROXY in s;\n sources[i] = typeof s === \"function\" ? (proxy = true, createMemo(s)) : s;\n }\n if (proxy) {\n return new Proxy({\n get(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n const v = resolveSource(sources[i])[property];\n if (v !== undefined) return v;\n }\n },\n has(property) {\n for (let i = sources.length - 1; i >= 0; i--) {\n if (property in resolveSource(sources[i])) return true;\n }\n return false;\n },\n keys() {\n const keys = [];\n for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));\n return [...new Set(keys)];\n }\n }, propTraps);\n }\n const target = {};\n const sourcesMap = {};\n let someNonTargetKey = false;\n for (let i = sources.length - 1; i >= 0; i--) {\n const source = sources[i];\n if (!source) continue;\n const sourceKeys = Object.getOwnPropertyNames(source);\n someNonTargetKey = someNonTargetKey || i !== 0 && !!sourceKeys.length;\n for (let i = 0, length = sourceKeys.length; i < length; i++) {\n const key = sourceKeys[i];\n if (key === \"__proto__\" || key === \"constructor\") {\n continue;\n } else if (!(key in target)) {\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (desc.get) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n get: resolveSources.bind(sourcesMap[key] = [desc.get.bind(source)])\n });\n } else target[key] = desc.value;\n } else {\n const sources = sourcesMap[key];\n const desc = Object.getOwnPropertyDescriptor(source, key);\n if (sources) {\n if (desc.get) {\n sources.push(desc.get.bind(source));\n } else if (desc.value !== undefined) {\n sources.push(() => desc.value);\n }\n } else if (target[key] === undefined) target[key] = desc.value;\n }\n }\n }\n return target;\n}\nfunction splitProps(props, ...keys) {\n if ($PROXY in props) {\n const blocked = new Set(keys.length > 1 ? keys.flat() : keys[0]);\n const res = keys.map(k => {\n return new Proxy({\n get(property) {\n return k.includes(property) ? props[property] : undefined;\n },\n has(property) {\n return k.includes(property) && property in props;\n },\n keys() {\n return k.filter(property => property in props);\n }\n }, propTraps);\n });\n res.push(new Proxy({\n get(property) {\n return blocked.has(property) ? undefined : props[property];\n },\n has(property) {\n return blocked.has(property) ? false : property in props;\n },\n keys() {\n return Object.keys(props).filter(k => !blocked.has(k));\n }\n }, propTraps));\n return res;\n }\n const otherObject = {};\n const objects = keys.map(() => ({}));\n for (const propName of Object.getOwnPropertyNames(props)) {\n const desc = Object.getOwnPropertyDescriptor(props, propName);\n const isDefaultDesc = !desc.get && !desc.set && desc.enumerable && desc.writable && desc.configurable;\n let blocked = false;\n let objectIndex = 0;\n for (const k of keys) {\n if (k.includes(propName)) {\n blocked = true;\n isDefaultDesc ? objects[objectIndex][propName] = desc.value : Object.defineProperty(objects[objectIndex], propName, desc);\n }\n ++objectIndex;\n }\n if (!blocked) {\n isDefaultDesc ? otherObject[propName] = desc.value : Object.defineProperty(otherObject, propName, desc);\n }\n }\n return [...objects, otherObject];\n}\nfunction lazy(fn) {\n let comp;\n let p;\n const wrap = props => {\n const ctx = sharedConfig.context;\n if (ctx) {\n const [s, set] = createSignal();\n (p || (p = fn())).then(mod => {\n setHydrateContext(ctx);\n set(() => mod.default);\n setHydrateContext();\n });\n comp = s;\n } else if (!comp) {\n const [s] = createResource(() => (p || (p = fn())).then(mod => mod.default));\n comp = s;\n }\n let Comp;\n return createMemo(() => (Comp = comp()) && untrack(() => {\n if (false) ;\n if (!ctx) return Comp(props);\n const c = sharedConfig.context;\n setHydrateContext(ctx);\n const r = Comp(props);\n setHydrateContext(c);\n return r;\n }));\n };\n wrap.preload = () => p || ((p = fn()).then(mod => comp = () => mod.default), p);\n return wrap;\n}\nlet counter = 0;\nfunction createUniqueId() {\n const ctx = sharedConfig.context;\n return ctx ? `${ctx.id}${ctx.count++}` : `cl-${counter++}`;\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Index(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(indexArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const condition = createMemo(() => props.when, undefined, {\n equals: (a, b) => keyed ? a === b : !a === !b\n });\n return createMemo(() => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn ? untrack(() => child(keyed ? c : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return props.when;\n })) : child;\n }\n return props.fallback;\n }, undefined, undefined);\n}\nfunction Switch(props) {\n let keyed = false;\n const equals = (a, b) => a[0] === b[0] && (keyed ? a[1] === b[1] : !a[1] === !b[1]) && a[2] === b[2];\n const conditions = children(() => props.children),\n evalConditions = createMemo(() => {\n let conds = conditions();\n if (!Array.isArray(conds)) conds = [conds];\n for (let i = 0; i < conds.length; i++) {\n const c = conds[i].when;\n if (c) {\n keyed = !!conds[i].keyed;\n return [i, c, conds[i]];\n }\n }\n return [-1];\n }, undefined, {\n equals\n });\n return createMemo(() => {\n const [index, when, cond] = evalConditions();\n if (index < 0) return props.fallback;\n const c = cond.children;\n const fn = typeof c === \"function\" && c.length > 0;\n return fn ? untrack(() => c(keyed ? when : () => {\n if (untrack(evalConditions)[0] !== index) throw narrowedError(\"Match\");\n return cond.when;\n })) : c;\n }, undefined, undefined);\n}\nfunction Match(props) {\n return props;\n}\nlet Errors;\nfunction resetErrorBoundaries() {\n Errors && [...Errors].forEach(fn => fn());\n}\nfunction ErrorBoundary(props) {\n let err;\n let v;\n if (sharedConfig.context && sharedConfig.load && (v = sharedConfig.load(sharedConfig.context.id + sharedConfig.context.count))) err = v[0];\n const [errored, setErrored] = createSignal(err, undefined);\n Errors || (Errors = new Set());\n Errors.add(setErrored);\n onCleanup(() => Errors.delete(setErrored));\n return createMemo(() => {\n let e;\n if (e = errored()) {\n const f = props.fallback;\n return typeof f === \"function\" && f.length ? untrack(() => f(e, () => setErrored())) : f;\n }\n return catchError(() => props.children, setErrored);\n }, undefined, undefined);\n}\n\nconst suspenseListEquals = (a, b) => a.showContent === b.showContent && a.showFallback === b.showFallback;\nconst SuspenseListContext = createContext();\nfunction SuspenseList(props) {\n let [wrapper, setWrapper] = createSignal(() => ({\n inFallback: false\n })),\n show;\n const listContext = useContext(SuspenseListContext);\n const [registry, setRegistry] = createSignal([]);\n if (listContext) {\n show = listContext.register(createMemo(() => wrapper()().inFallback));\n }\n const resolved = createMemo(prev => {\n const reveal = props.revealOrder,\n tail = props.tail,\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {},\n reg = registry(),\n reverse = reveal === \"backwards\";\n if (reveal === \"together\") {\n const all = reg.every(inFallback => !inFallback());\n const res = reg.map(() => ({\n showContent: all && showContent,\n showFallback\n }));\n res.inFallback = !all;\n return res;\n }\n let stop = false;\n let inFallback = prev.inFallback;\n const res = [];\n for (let i = 0, len = reg.length; i < len; i++) {\n const n = reverse ? len - i - 1 : i,\n s = reg[n]();\n if (!stop && !s) {\n res[n] = {\n showContent,\n showFallback\n };\n } else {\n const next = !stop;\n if (next) inFallback = true;\n res[n] = {\n showContent: next,\n showFallback: !tail || next && tail === \"collapsed\" ? showFallback : false\n };\n stop = true;\n }\n }\n if (!stop) inFallback = false;\n res.inFallback = inFallback;\n return res;\n }, {\n inFallback: false\n });\n setWrapper(() => resolved);\n return createComponent(SuspenseListContext.Provider, {\n value: {\n register: inFallback => {\n let index;\n setRegistry(registry => {\n index = registry.length;\n return [...registry, inFallback];\n });\n return createMemo(() => resolved()[index], undefined, {\n equals: suspenseListEquals\n });\n }\n },\n get children() {\n return props.children;\n }\n });\n}\nfunction Suspense(props) {\n let counter = 0,\n show,\n ctx,\n p,\n flicker,\n error;\n const [inFallback, setFallback] = createSignal(false),\n SuspenseContext = getSuspenseContext(),\n store = {\n increment: () => {\n if (++counter === 1) setFallback(true);\n },\n decrement: () => {\n if (--counter === 0) setFallback(false);\n },\n inFallback,\n effects: [],\n resolved: false\n },\n owner = getOwner();\n if (sharedConfig.context && sharedConfig.load) {\n const key = sharedConfig.context.id + sharedConfig.context.count;\n let ref = sharedConfig.load(key);\n if (ref && (p = ref[0]) && p !== \"$$f\") {\n if (typeof p !== \"object\" || !(\"then\" in p)) p = Promise.resolve(p);\n const [s, set] = createSignal(undefined, {\n equals: false\n });\n flicker = s;\n p.then(err => {\n if (err || sharedConfig.done) {\n err && (error = err);\n return set();\n }\n sharedConfig.gather(key);\n setHydrateContext(ctx);\n set();\n setHydrateContext();\n });\n }\n }\n const listContext = useContext(SuspenseListContext);\n if (listContext) show = listContext.register(store.inFallback);\n let dispose;\n onCleanup(() => dispose && dispose());\n return createComponent(SuspenseContext.Provider, {\n value: store,\n get children() {\n return createMemo(() => {\n if (error) throw error;\n ctx = sharedConfig.context;\n if (flicker) {\n flicker();\n return flicker = undefined;\n }\n if (ctx && p === \"$$f\") setHydrateContext();\n const rendered = createMemo(() => props.children);\n return createMemo(prev => {\n const inFallback = store.inFallback(),\n {\n showContent = true,\n showFallback = true\n } = show ? show() : {};\n if ((!inFallback || p && p !== \"$$f\") && showContent) {\n store.resolved = true;\n dispose && dispose();\n dispose = ctx = p = undefined;\n resumeEffects(store.effects);\n return rendered();\n }\n if (!showFallback) return;\n if (dispose) return prev;\n return createRoot(disposer => {\n dispose = disposer;\n if (ctx) {\n setHydrateContext({\n id: ctx.id + \"f\",\n count: 0\n });\n ctx = undefined;\n }\n return props.fallback;\n }, owner);\n });\n });\n }\n });\n}\n\nconst DEV = undefined;\n\nexport { $DEVCOMP, $PROXY, $TRACK, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, batch, cancelCallback, catchError, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createReaction, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableExternalSource, enableHydration, enableScheduling, equalFn, from, getListener, getOwner, indexArray, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, resetErrorBoundaries, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };\n","import { $PROXY, $TRACK, getListener, batch, createSignal } from 'solid-js';\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\");\nfunction wrap$1(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps$1)\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return obj != null && typeof obj === \"object\" && (obj[$PROXY] || !(proto = Object.getPrototypeOf(obj)) || proto === Object.prototype || Array.isArray(obj));\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if (result = item != null && item[$RAW]) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getDataNodes(target) {\n let nodes = target[$NODE];\n if (!nodes) Object.defineProperty(target, $NODE, {\n value: nodes = Object.create(null)\n });\n return nodes;\n}\nfunction getDataNode(nodes, property, value) {\n return nodes[property] || (nodes[property] = createDataNode(value));\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n if (getListener()) {\n const nodes = getDataNodes(target);\n (nodes._ || (nodes._ = createDataNode()))();\n }\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nfunction createDataNode(value) {\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return s;\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (getListener() && (typeof value !== \"function\" || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) delete state[property];else state[property] = value;\n let nodes = getDataNodes(state),\n node;\n if (node = getDataNode(nodes, property, prev)) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) {\n for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();\n (node = getDataNode(nodes, \"length\", len)) && node.$(state.length);\n }\n (node = nodes._) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const {\n from = 0,\n to = current.length - 1,\n by = 1\n } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || isWrappable(prev) && isWrappable(value) && !Array.isArray(value)) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1 ? updateArray(unwrappedStore, args[0]) : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nfunction proxyDescriptor(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || desc.set || !desc.configurable || property === $PROXY || property === $NODE) return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n desc.set = v => target[$PROXY][property] = v;\n return desc;\n}\nconst proxyTraps = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getDataNodes(target);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n const isFunction = typeof value === \"function\";\n if (getListener() && (!isFunction || target.hasOwnProperty(property)) && !(desc && desc.get)) value = getDataNode(nodes, property, value)();else if (value != null && isFunction && value === Array.prototype[property]) {\n return (...args) => batch(() => Array.prototype[property].apply(receiver, args));\n }\n }\n return isWrappable(value) ? wrap(value) : value;\n },\n has(target, property) {\n if (property === $RAW || property === $PROXY || property === $TRACK || property === $NODE || property === \"__proto__\") return true;\n this.get(target, property, target);\n return property in target;\n },\n set(target, property, value) {\n batch(() => setProperty(target, property, unwrap(value)));\n return true;\n },\n deleteProperty(target, property) {\n batch(() => setProperty(target, property, undefined, true));\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor\n};\nfunction wrap(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: p = new Proxy(value, proxyTraps)\n });\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n const get = desc[prop].get.bind(p);\n Object.defineProperty(value, prop, {\n get\n });\n }\n if (desc[prop].set) {\n const og = desc[prop].set,\n set = v => batch(() => og.call(p, v));\n Object.defineProperty(value, prop, {\n set\n });\n }\n }\n }\n return p;\n}\nfunction createMutable(state, options) {\n const unwrappedStore = unwrap(state || {});\n const wrappedStore = wrap(unwrappedStore);\n return wrappedStore;\n}\nfunction modifyMutable(state, modifier) {\n batch(() => modifier(unwrap(state)));\n}\n\nconst $ROOT = Symbol(\"store-root\");\nfunction applyState(target, parent, property, merge, key) {\n const previous = parent[property];\n if (target === previous) return;\n if (property !== $ROOT && (!isWrappable(target) || !isWrappable(previous) || key && target[key] !== previous[key])) {\n setProperty(parent, property, target);\n return;\n }\n if (Array.isArray(target)) {\n if (target.length && previous.length && (!merge || key && target[0] && target[0][key] != null)) {\n let i, j, start, end, newEnd, item, newIndicesNext, keyVal;\n for (start = 0, end = Math.min(previous.length, target.length); start < end && (previous[start] === target[start] || key && previous[start] && target[start] && previous[start][key] === target[start][key]); start++) {\n applyState(target[start], previous, start, merge, key);\n }\n const temp = new Array(target.length),\n newIndices = new Map();\n for (end = previous.length - 1, newEnd = target.length - 1; end >= start && newEnd >= start && (previous[end] === target[newEnd] || key && previous[start] && target[start] && previous[end][key] === target[newEnd][key]); end--, newEnd--) {\n temp[newEnd] = previous[end];\n }\n if (start > newEnd || start > end) {\n for (j = start; j <= newEnd; j++) setProperty(previous, j, target[j]);\n for (; j < target.length; j++) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = target[j];\n keyVal = key && item ? item[key] : item;\n i = newIndices.get(keyVal);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(keyVal, j);\n }\n for (i = start; i <= end; i++) {\n item = previous[i];\n keyVal = key && item ? item[key] : item;\n j = newIndices.get(keyVal);\n if (j !== undefined && j !== -1) {\n temp[j] = previous[i];\n j = newIndicesNext[j];\n newIndices.set(keyVal, j);\n }\n }\n for (j = start; j < target.length; j++) {\n if (j in temp) {\n setProperty(previous, j, temp[j]);\n applyState(target[j], previous, j, merge, key);\n } else setProperty(previous, j, target[j]);\n }\n } else {\n for (let i = 0, len = target.length; i < len; i++) {\n applyState(target[i], previous, i, merge, key);\n }\n }\n if (previous.length > target.length) setProperty(previous, \"length\", target.length);\n return;\n }\n const targetKeys = Object.keys(target);\n for (let i = 0, len = targetKeys.length; i < len; i++) {\n applyState(target[targetKeys[i]], previous, targetKeys[i], merge, key);\n }\n const previousKeys = Object.keys(previous);\n for (let i = 0, len = previousKeys.length; i < len; i++) {\n if (target[previousKeys[i]] === undefined) setProperty(previous, previousKeys[i], undefined);\n }\n}\nfunction reconcile(value, options = {}) {\n const {\n merge,\n key = \"id\"\n } = options,\n v = unwrap(value);\n return state => {\n if (!isWrappable(state) || !isWrappable(v)) return v;\n const res = applyState(v, {\n [$ROOT]: state\n }, $ROOT, merge, key);\n return res === undefined ? state : res;\n };\n}\nconst producers = new WeakMap();\nconst setterTraps = {\n get(target, property) {\n if (property === $RAW) return target;\n const value = target[property];\n let proxy;\n return isWrappable(value) ? producers.get(value) || (producers.set(value, proxy = new Proxy(value, setterTraps)), proxy) : value;\n },\n set(target, property, value) {\n setProperty(target, property, unwrap(value));\n return true;\n },\n deleteProperty(target, property) {\n setProperty(target, property, undefined, true);\n return true;\n }\n};\nfunction produce(fn) {\n return state => {\n if (isWrappable(state)) {\n let proxy;\n if (!(proxy = producers.get(state))) {\n producers.set(state, proxy = new Proxy(state, setterTraps));\n }\n fn(proxy);\n }\n return state;\n };\n}\n\nconst DEV = undefined;\n\nexport { $RAW, DEV, createMutable, createStore, modifyMutable, produce, reconcile, unwrap };\n","import { createRoot, createRenderEffect, sharedConfig, untrack, enableHydration, getOwner, createEffect, runWithOwner, createSignal, onCleanup, splitProps, createMemo, $DEVCOMP } from 'solid-js';\nexport { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';\n\nconst booleans = [\"allowfullscreen\", \"async\", \"autofocus\", \"autoplay\", \"checked\", \"controls\", \"default\", \"disabled\", \"formnovalidate\", \"hidden\", \"indeterminate\", \"ismap\", \"loop\", \"multiple\", \"muted\", \"nomodule\", \"novalidate\", \"open\", \"playsinline\", \"readonly\", \"required\", \"reversed\", \"seamless\", \"selected\"];\nconst Properties = /*#__PURE__*/new Set([\"className\", \"value\", \"readOnly\", \"formNoValidate\", \"isMap\", \"noModule\", \"playsInline\", ...booleans]);\nconst ChildProperties = /*#__PURE__*/new Set([\"innerHTML\", \"textContent\", \"innerText\", \"children\"]);\nconst Aliases = /*#__PURE__*/Object.assign(Object.create(null), {\n className: \"class\",\n htmlFor: \"for\"\n});\nconst PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {\n class: \"className\",\n formnovalidate: {\n $: \"formNoValidate\",\n BUTTON: 1,\n INPUT: 1\n },\n ismap: {\n $: \"isMap\",\n IMG: 1\n },\n nomodule: {\n $: \"noModule\",\n SCRIPT: 1\n },\n playsinline: {\n $: \"playsInline\",\n VIDEO: 1\n },\n readonly: {\n $: \"readOnly\",\n INPUT: 1,\n TEXTAREA: 1\n }\n});\nfunction getPropAlias(prop, tagName) {\n const a = PropAliases[prop];\n return typeof a === \"object\" ? a[tagName] ? a[\"$\"] : undefined : a;\n}\nconst DelegatedEvents = /*#__PURE__*/new Set([\"beforeinput\", \"click\", \"dblclick\", \"contextmenu\", \"focusin\", \"focusout\", \"input\", \"keydown\", \"keyup\", \"mousedown\", \"mousemove\", \"mouseout\", \"mouseover\", \"mouseup\", \"pointerdown\", \"pointermove\", \"pointerout\", \"pointerover\", \"pointerup\", \"touchend\", \"touchmove\", \"touchstart\"]);\nconst SVGElements = /*#__PURE__*/new Set([\n\"altGlyph\", \"altGlyphDef\", \"altGlyphItem\", \"animate\", \"animateColor\", \"animateMotion\", \"animateTransform\", \"circle\", \"clipPath\", \"color-profile\", \"cursor\", \"defs\", \"desc\", \"ellipse\", \"feBlend\", \"feColorMatrix\", \"feComponentTransfer\", \"feComposite\", \"feConvolveMatrix\", \"feDiffuseLighting\", \"feDisplacementMap\", \"feDistantLight\", \"feFlood\", \"feFuncA\", \"feFuncB\", \"feFuncG\", \"feFuncR\", \"feGaussianBlur\", \"feImage\", \"feMerge\", \"feMergeNode\", \"feMorphology\", \"feOffset\", \"fePointLight\", \"feSpecularLighting\", \"feSpotLight\", \"feTile\", \"feTurbulence\", \"filter\", \"font\", \"font-face\", \"font-face-format\", \"font-face-name\", \"font-face-src\", \"font-face-uri\", \"foreignObject\", \"g\", \"glyph\", \"glyphRef\", \"hkern\", \"image\", \"line\", \"linearGradient\", \"marker\", \"mask\", \"metadata\", \"missing-glyph\", \"mpath\", \"path\", \"pattern\", \"polygon\", \"polyline\", \"radialGradient\", \"rect\",\n\"set\", \"stop\",\n\"svg\", \"switch\", \"symbol\", \"text\", \"textPath\",\n\"tref\", \"tspan\", \"use\", \"view\", \"vkern\"]);\nconst SVGNamespace = {\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\"\n};\nconst DOMElements = /*#__PURE__*/new Set([\"html\", \"base\", \"head\", \"link\", \"meta\", \"style\", \"title\", \"body\", \"address\", \"article\", \"aside\", \"footer\", \"header\", \"main\", \"nav\", \"section\", \"body\", \"blockquote\", \"dd\", \"div\", \"dl\", \"dt\", \"figcaption\", \"figure\", \"hr\", \"li\", \"ol\", \"p\", \"pre\", \"ul\", \"a\", \"abbr\", \"b\", \"bdi\", \"bdo\", \"br\", \"cite\", \"code\", \"data\", \"dfn\", \"em\", \"i\", \"kbd\", \"mark\", \"q\", \"rp\", \"rt\", \"ruby\", \"s\", \"samp\", \"small\", \"span\", \"strong\", \"sub\", \"sup\", \"time\", \"u\", \"var\", \"wbr\", \"area\", \"audio\", \"img\", \"map\", \"track\", \"video\", \"embed\", \"iframe\", \"object\", \"param\", \"picture\", \"portal\", \"source\", \"svg\", \"math\", \"canvas\", \"noscript\", \"script\", \"del\", \"ins\", \"caption\", \"col\", \"colgroup\", \"table\", \"tbody\", \"td\", \"tfoot\", \"th\", \"thead\", \"tr\", \"button\", \"datalist\", \"fieldset\", \"form\", \"input\", \"label\", \"legend\", \"meter\", \"optgroup\", \"option\", \"output\", \"progress\", \"select\", \"textarea\", \"details\", \"dialog\", \"menu\", \"summary\", \"details\", \"slot\", \"template\", \"acronym\", \"applet\", \"basefont\", \"bgsound\", \"big\", \"blink\", \"center\", \"content\", \"dir\", \"font\", \"frame\", \"frameset\", \"hgroup\", \"image\", \"keygen\", \"marquee\", \"menuitem\", \"nobr\", \"noembed\", \"noframes\", \"plaintext\", \"rb\", \"rtc\", \"shadow\", \"spacer\", \"strike\", \"tt\", \"xmp\", \"a\", \"abbr\", \"acronym\", \"address\", \"applet\", \"area\", \"article\", \"aside\", \"audio\", \"b\", \"base\", \"basefont\", \"bdi\", \"bdo\", \"bgsound\", \"big\", \"blink\", \"blockquote\", \"body\", \"br\", \"button\", \"canvas\", \"caption\", \"center\", \"cite\", \"code\", \"col\", \"colgroup\", \"content\", \"data\", \"datalist\", \"dd\", \"del\", \"details\", \"dfn\", \"dialog\", \"dir\", \"div\", \"dl\", \"dt\", \"em\", \"embed\", \"fieldset\", \"figcaption\", \"figure\", \"font\", \"footer\", \"form\", \"frame\", \"frameset\", \"head\", \"header\", \"hgroup\", \"hr\", \"html\", \"i\", \"iframe\", \"image\", \"img\", \"input\", \"ins\", \"kbd\", \"keygen\", \"label\", \"legend\", \"li\", \"link\", \"main\", \"map\", \"mark\", \"marquee\", \"menu\", \"menuitem\", \"meta\", \"meter\", \"nav\", \"nobr\", \"noembed\", \"noframes\", \"noscript\", \"object\", \"ol\", \"optgroup\", \"option\", \"output\", \"p\", \"param\", \"picture\", \"plaintext\", \"portal\", \"pre\", \"progress\", \"q\", \"rb\", \"rp\", \"rt\", \"rtc\", \"ruby\", \"s\", \"samp\", \"script\", \"section\", \"select\", \"shadow\", \"slot\", \"small\", \"source\", \"spacer\", \"span\", \"strike\", \"strong\", \"style\", \"sub\", \"summary\", \"sup\", \"table\", \"tbody\", \"td\", \"template\", \"textarea\", \"tfoot\", \"th\", \"thead\", \"time\", \"title\", \"tr\", \"track\", \"tt\", \"u\", \"ul\", \"var\", \"video\", \"wbr\", \"xmp\", \"input\", \"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"]);\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isCE, isSVG) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;\n };\n const fn = isCE ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction clearDelegatedEvents(document = window.document) {\n if (document[$$EVENTS]) {\n for (let name of document[$$EVENTS].keys()) document.removeEventListener(name, eventHandler);\n delete document[$$EVENTS];\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);\n}\nfunction setAttributeNS(node, namespace, name, value) {\n if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n if (delegate) {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n } else if (Array.isArray(handler)) {\n const handlerFn = handler[0];\n node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));\n } else node.addEventListener(name, handler);\n}\nfunction classList(node, value, prev = {}) {\n const classKeys = Object.keys(value || {}),\n prevKeys = Object.keys(prev);\n let i, len;\n for (i = 0, len = prevKeys.length; i < len; i++) {\n const key = prevKeys[i];\n if (!key || key === \"undefined\" || value[key]) continue;\n toggleClassKey(node, key, false);\n delete prev[key];\n }\n for (i = 0, len = classKeys.length; i < len; i++) {\n const key = classKeys[i],\n classValue = !!value[key];\n if (!key || key === \"undefined\" || prev[key] === classValue || !classValue) continue;\n toggleClassKey(node, key, true);\n prev[key] = classValue;\n }\n return prev;\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return nodeStyle.cssText = value;\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction spread(node, props = {}, isSVG, skipChildren) {\n const prevProps = {};\n if (!skipChildren) {\n createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));\n }\n createRenderEffect(() => props.ref && props.ref(node));\n createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));\n return prevProps;\n}\nfunction dynamicProperty(props, key) {\n const src = props[key];\n Object.defineProperty(props, key, {\n get() {\n return src();\n },\n enumerable: true\n });\n return props;\n}\nfunction innerHTML(parent, content) {\n !sharedConfig.context && (parent.innerHTML = content);\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {\n props || (props = {});\n for (const prop in prevProps) {\n if (!(prop in props)) {\n if (prop === \"children\") continue;\n prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);\n }\n }\n for (const prop in props) {\n if (prop === \"children\") {\n if (!skipChildren) insertExpression(node, props.children);\n continue;\n }\n const value = props[prop];\n prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);\n }\n}\nfunction hydrate$1(code, element, options = {}) {\n sharedConfig.completed = globalThis._$HY.completed;\n sharedConfig.events = globalThis._$HY.events;\n sharedConfig.load = globalThis._$HY.load;\n sharedConfig.gather = root => gatherHydratable(element, root);\n sharedConfig.registry = new Map();\n sharedConfig.context = {\n id: options.renderId || \"\",\n count: 0\n };\n gatherHydratable(element, options.renderId);\n const dispose = render(code, element, [...element.childNodes], options);\n sharedConfig.context = null;\n return dispose;\n}\nfunction getNextElement(template) {\n let node, key;\n if (!sharedConfig.context || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {\n if (sharedConfig.context) console.warn(\"Unable to find DOM nodes for hydration key:\", key);\n if (!template) throw new Error(\"Unrecoverable Hydration Mismatch. No template for key: \" + key);\n return template();\n }\n if (sharedConfig.completed) sharedConfig.completed.add(node);\n sharedConfig.registry.delete(key);\n return node;\n}\nfunction getNextMatch(el, nodeName) {\n while (el && el.localName !== nodeName) el = el.nextSibling;\n return el;\n}\nfunction getNextMarker(start) {\n let end = start,\n count = 0,\n current = [];\n if (sharedConfig.context) {\n while (end) {\n if (end.nodeType === 8) {\n const v = end.nodeValue;\n if (v === \"#\") count++;else if (v === \"/\") {\n if (count === 0) return [end, current];\n count--;\n }\n }\n current.push(end);\n end = end.nextSibling;\n }\n }\n return [end, current];\n}\nfunction runHydrationEvents() {\n if (sharedConfig.events && !sharedConfig.events.queued) {\n queueMicrotask(() => {\n const {\n completed,\n events\n } = sharedConfig;\n events.queued = false;\n while (events.length) {\n const [el, e] = events[0];\n if (!completed.has(el)) return;\n eventHandler(e);\n events.shift();\n }\n });\n sharedConfig.events.queued = true;\n }\n}\nfunction toPropertyName(name) {\n return name.toLowerCase().replace(/-([a-z])/g, (_, w) => w.toUpperCase());\n}\nfunction toggleClassKey(node, key, value) {\n const classNames = key.trim().split(/\\s+/);\n for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);\n}\nfunction assignProp(node, prop, value, prev, isSVG, skipRef) {\n let isCE, isProp, isChildProp, propAlias, forceProp;\n if (prop === \"style\") return style(node, value, prev);\n if (prop === \"classList\") return classList(node, value, prev);\n if (value === prev) return prev;\n if (prop === \"ref\") {\n if (!skipRef) value(node);\n } else if (prop.slice(0, 3) === \"on:\") {\n const e = prop.slice(3);\n prev && node.removeEventListener(e, prev);\n value && node.addEventListener(e, value);\n } else if (prop.slice(0, 10) === \"oncapture:\") {\n const e = prop.slice(10);\n prev && node.removeEventListener(e, prev, true);\n value && node.addEventListener(e, value, true);\n } else if (prop.slice(0, 2) === \"on\") {\n const name = prop.slice(2).toLowerCase();\n const delegate = DelegatedEvents.has(name);\n if (!delegate && prev) {\n const h = Array.isArray(prev) ? prev[0] : prev;\n node.removeEventListener(name, h);\n }\n if (delegate || value) {\n addEventListener(node, name, value, delegate);\n delegate && delegateEvents([name]);\n }\n } else if (prop.slice(0, 5) === \"attr:\") {\n setAttribute(node, prop.slice(5), value);\n } else if ((forceProp = prop.slice(0, 5) === \"prop:\") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes(\"-\"))) {\n if (forceProp) {\n prop = prop.slice(5);\n isProp = true;\n }\n if (prop === \"class\" || prop === \"className\") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;\n } else {\n const ns = isSVG && prop.indexOf(\":\") > -1 && SVGNamespace[prop.split(\":\")[0]];\n if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);\n }\n return value;\n}\nfunction eventHandler(e) {\n const key = `$$${e.type}`;\n let node = e.composedPath && e.composedPath()[0] || e.target;\n if (e.target !== node) {\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value: node\n });\n }\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;\n while (node) {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node = node._$host || node.parentNode || node.host;\n }\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n if (sharedConfig.context) {\n !current && (current = [...parent.childNodes]);\n let cleaned = [];\n for (let i = 0; i < current.length; i++) {\n const node = current[i];\n if (node.nodeType === 8 && node.data.slice(0, 2) === \"!$\") node.remove();else cleaned.push(node);\n }\n current = cleaned;\n }\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = multi && current[0] && current[0].parentNode || parent;\n if (t === \"string\" || t === \"number\") {\n if (sharedConfig.context) return current;\n if (t === \"number\") value = value.toString();\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data = value;\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n if (sharedConfig.context) return current;\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));\n return () => current;\n }\n if (sharedConfig.context) {\n if (!array.length) return current;\n for (let i = 0; i < array.length; i++) {\n if (array[i].parentNode) return current = array;\n }\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (sharedConfig.context && value.parentNode) return current = multi ? [value] : value;\n if (Array.isArray(current)) {\n if (multi) return current = cleanChildren(parent, current, marker, value);\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else console.warn(`Unrecognized value. Skipped inserting`, value);\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[i],\n t;\n if (item == null || item === true || item === false) ; else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return parent.textContent = \"\";\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\nfunction gatherHydratable(element, root) {\n const templates = element.querySelectorAll(`*[data-hk]`);\n for (let i = 0; i < templates.length; i++) {\n const node = templates[i];\n const key = node.getAttribute(\"data-hk\");\n if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);\n }\n}\nfunction getHydrationKey() {\n const hydrate = sharedConfig.context;\n return `${hydrate.id}${hydrate.count++}`;\n}\nfunction NoHydration(props) {\n return sharedConfig.context ? undefined : props.children;\n}\nfunction Hydration(props) {\n return props.children;\n}\nfunction voidFn() {}\n\nfunction throwInBrowser(func) {\n const err = new Error(`${func.name} is not supported in the browser, returning undefined`);\n console.error(err);\n}\nfunction renderToString(fn, options) {\n throwInBrowser(renderToString);\n}\nfunction renderToStringAsync(fn, options) {\n throwInBrowser(renderToStringAsync);\n}\nfunction renderToStream(fn, options) {\n throwInBrowser(renderToStream);\n}\nfunction ssr(template, ...nodes) {}\nfunction ssrElement(name, props, children, needsId) {}\nfunction ssrClassList(value) {}\nfunction ssrStyle(value) {}\nfunction ssrAttribute(key, value) {}\nfunction ssrHydrationKey() {}\nfunction resolveSSRNode(node) {}\nfunction escape(html) {}\nfunction ssrSpread(props, isSVG, skipChildren) {}\n\nconst isServer = false;\nconst isDev = false;\nconst SVG_NAMESPACE = \"http://www.w3.org/2000/svg\";\nfunction createElement(tagName, isSVG = false) {\n return isSVG ? document.createElementNS(SVG_NAMESPACE, tagName) : document.createElement(tagName);\n}\nconst hydrate = (...args) => {\n enableHydration();\n return hydrate$1(...args);\n};\nfunction Portal(props) {\n const {\n useShadow\n } = props,\n marker = document.createTextNode(\"\"),\n mount = () => props.mount || document.body,\n owner = getOwner();\n let content;\n let hydrating = !!sharedConfig.context;\n createEffect(() => {\n if (hydrating) getOwner().user = hydrating = false;\n content || (content = runWithOwner(owner, () => props.children));\n const el = mount();\n if (el instanceof HTMLHeadElement) {\n const [clean, setClean] = createSignal(false);\n const cleanup = () => setClean(true);\n createRoot(dispose => insert(el, () => !clean() ? content : dispose(), null));\n onCleanup(cleanup);\n } else {\n const container = createElement(props.isSVG ? \"g\" : \"div\", props.isSVG),\n renderRoot = useShadow && container.attachShadow ? container.attachShadow({\n mode: \"open\"\n }) : container;\n Object.defineProperty(container, \"_$host\", {\n get() {\n return marker.parentNode;\n },\n configurable: true\n });\n insert(renderRoot, content);\n el.appendChild(container);\n props.ref && props.ref(container);\n onCleanup(() => el.removeChild(container));\n }\n }, undefined, {\n render: !hydrating\n });\n return marker;\n}\nfunction Dynamic(props) {\n const [p, others] = splitProps(props, [\"component\"]);\n const cached = createMemo(() => p.component);\n return createMemo(() => {\n const component = cached();\n switch (typeof component) {\n case \"function\":\n Object.assign(component, {\n [$DEVCOMP]: true\n });\n return untrack(() => component(others));\n case \"string\":\n const isSvg = SVGElements.has(component);\n const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);\n spread(el, others, isSvg);\n return el;\n }\n });\n}\n\nexport { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, hydrate, innerHTML, insert, isDev, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };\n"],"names":["getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","node","element","isOffsetParentAnElement","offsetParentIsScaled","rect","getBoundingClientRect","scaleX","width","offsetWidth","scaleY","height","offsetHeight","isElementScaled","documentElement","getDocumentElement","scroll","scrollLeft","scrollTop","offsets","x","y","getNodeName","isScrollParent","getWindow","getWindowScroll","clientLeft","clientTop","getWindowScrollBarX","left","top","order","modifiers","map","Map","visited","Set","result","sort","modifier","add","name","concat","requires","requiresIfExists","forEach","dep","has","depModifier","get","push","set","DEFAULT_OPTIONS","placement","strategy","areValidElements","_len","arguments","length","args","Array","_key","some","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","popper","options","fn","pending","state","orderedModifiers","Object","assign","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","listScrollParents","contextElement","merged","reduce","acc","phase","filter","orderModifiers","current","existing","data","keys","key","m","enabled","_ref","_ref$options","effect","cleanupFn","noopFn","update","forceUpdate","_state$elements","rects","getOffsetParent","getLayoutRect","reset","index","_state$orderedModifie","_state$orderedModifie2","_options","Promise","resolve","then","undefined","destroy","onFirstUpdate","createPopper","contains","parent","child","rootNode","getRootNode","next","isSameNode","parentNode","host","includeScale","isFixedStrategy","clientRect","visualViewport","window","addVisualOffsets","offsetLeft","offsetTop","right","bottom","getComputedStyle","ownerDocument","document","Math","abs","nodeName","toLowerCase","isTableElement","indexOf","getTrueOffsetParent","position","isFirefox","test","currentNode","getParentNode","css","transform","perspective","contain","willChange","getContainingBlock","assignedSlot","toString","defaultView","win","pageXOffset","pageYOffset","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","isLayoutViewport","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","list","_element$ownerDocumen","scrollParent","isBody","target","updatedList","auto","basePlacements","start","end","clippingParents","viewport","variationPlacements","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","eventListeners","popperOffsets","computeStyles","applyStyles","style","value","removeAttribute","setAttribute","_ref2","initialStyles","margin","arrow","hasOwnProperty","property","attribute","_state$modifiersData$","arrowElement","basePlacement","axis","len","paddingObject","padding","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","min","max","center","offset","axisProp","centerOffset","_options$element","querySelector","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","passive","_options$scroll","_options$resize","resize","addEventListener","removeEventListener","hash","getOppositePlacement","replace","matched","getOppositeVariationPlacement","_skip","_options$mainAxis","mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","boundary","rootBoundary","altBoundary","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","getBasePlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","getVariation","allowedPlacements","overflows","detectOverflow","a","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","i","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","slice","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","preventOverflow","referenceOverflow","elementContext","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","getMainAxisFromPlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","getFreshSideObject","arrowPaddingMin","arrowPaddingMax","arrowLen","within","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","math","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","computeOffsets","commonX","commonY","rectToClientRect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","_options$altBoundary","_options$padding","mergePaddingObject","expandToHashMap","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","hashMap","split","round","getUAString","uaData","navigator","userAgentData","brands","isArray","item","brand","version","join","userAgent","withinMaxClamp","v","this","Rails","linkClickSelector","buttonClickSelector","selector","exclude","inputChangeSelector","formSubmitSelector","formInputClickSelector","formDisableSelector","formEnableSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","call","nonce","loadCSPNonce","ref","content","cspNonce","expando","prototype","matches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","getData","setData","isContentEditable","isEditable","parentElement","$","querySelectorAll","csrfParam","csrfToken","meta","CSRFProtection","xhr","token","setRequestHeader","refreshCSRFTokens","param","input","CustomEvent","fire","preventDefault","event","params","evt","createEvent","initCustomEvent","bubbles","cancelable","detail","Event","defaultPrevented","defineProperty","obj","dispatchEvent","stopEverything","e","stopPropagation","stopImmediatePropagation","delegate","eventType","handler","AcceptHeaders","createXHR","prepareOptions","processResponse","text","xml","json","script","ajax","response","responseText","getResponseHeader","floor","status","success","statusText","error","complete","beforeSend","readyState","XMLHttpRequest","OPENED","send","url","location","href","type","toUpperCase","dataType","accept","done","open","crossDomain","withCredentials","onreadystatechange","DONE","parser","match","JSON","parse","createElement","head","appendChild","removeChild","DOMParser","parseFromString","isCrossDomain","originAnchor","urlAnchor","protocol","toArray","serializeElement","additionalParam","inputs","disabled","option","selected","checked","encodeURIComponent","formElements","form","el","allowAction","handleConfirm","confirm","message","answer","callback","getAttribute","disableFormElement","disableFormElements","disableLinkElement","enableFormElement","enableFormElements","enableLinkElement","isXhrRedirect","handleDisabledElement","enableElement","disableElement","replacement","innerHTML","originalText","handleMethod","formContent","link","method","action","display","click","isRemote","handleRemote","button","enctype","FormData","append","formSubmitButtonClick","formNoValidate","preventInsignificantClick","insignificantMetaClick","metaKey","ctrlKey","jQuery","rails","Error","ajaxPrefilter","originalOptions","_rails_loaded","setTimeout","module","exports","cloneProps","props","memo","k","prop","val","isObject","parseAttributeValue","err","reflect","stringify","__updating","isConstructor","f","currentElement","createElementType","BaseElement","propDefinition","propKeys","observedAttributes","constructor","super","__initialized","__released","__releaseCallbacks","__propertyChangedCallbacks","connectedCallback","attr","oldValue","l","enumerable","configurable","initializeProps","propValues","ComponentType","Component","outerElement","async","isConnected","pop","attributeChangedCallback","oldVal","newVal","lookupProp","attrName","renderRoot","shadowRoot","attachShadow","mode","addReleaseCallback","addPropertyChangedCallback","compose","fns","Symbol","register","tag","extension","ElementType","customElements","normalizePropDefs","registeredTag","define","defaultLocaleResolver","i18n","locale","locales","enableFallback","defaultLocale","Boolean","entry","currentLocale","includes","codes","Locales","registry","localeResolver","default","defaultPluralizer","pluralizer","includeZero","ordinal","_i18n","count","useMakePlural","n","ord","s","String","v0","t0","Number","n10","n100","Pluralization","camelCaseKeys","buffer","isSet","isNumeric","mathceil","ceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","z","j","r","charCodeAt","compare","xc","c","yc","intCheck","isOdd","toExponential","str","charAt","toFixedPoint","zs","RoundingModeMap","BigNumber","clone","configObject","div","convertBase","parseNumeric","pow2_53","random53bitInt","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","P","valueOf","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","prefix","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","alphabetHasNormalDecimalDigits","alphabet","caseChanged","isNum","_isBigNumber","search","substring","DEBUG","format","rm","id","c0","ne","maxOrMin","normalise","sd","d","ni","rd","pows10","out","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","p","crypto","getRandomValues","randomBytes","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","random","dp","rand","Uint32Array","copy","splice","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","arr","reverse","sign","callerIsToString","pow","base","temp","xlo","xhi","carry","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","q","qc","rem","remL","rem0","xi","xL","yc0","yL","yz","NaN","isNaN","p1","p2","absoluteValue","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","times","integerValue","isEqualTo","eq","isFinite","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","t","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","substr","RegExp","toFraction","md","d0","d1","d2","exp","n0","n1","toNumber","toPrecision","toJSON","toStringTag","for","expandRoundMode","roundMode","_a","getAbsolutePrecision","numeric","significant","log10","digitCount","roundNumber","rounder","formatNumber","_b","_c","originalNumber","raise","roundedNumber","whole","significand","formattedNumber","positiveFormat","negativeFormat","unshift","delimiter","limit","computeSignificand","stripInsignificantZeros","separator","unit","replaceInFormat","getFullScope","scope","defaultSeparator","inferType","interpolate","transformKey","placeholder","shift","nullPlaceholder","missingPlaceholder","regex","lookup","localeType","component","entries","translations","defaultValue","DECIMAL_UNITS","INVERTED_DECIMAL_UNITS","values","parseInt","numberToHuman","roundOptions","units","exponent","num","unitExponents","calculateExponent","determineUnit","trim","STORAGE_UNITS","parseDate","Date","date","setTime","parts","year","month","day","hour","minute","second","milliseconds","UTC","$1","$2","$3","$6","$4","$5","pluralize","baseScope","missingTranslation","pluralization","missingKeys","PropertyFlatList","compute","path","meridian","am","pm","dayNames","abbrDayNames","monthNames","abbrMonthNames","actual","guessStrategy","missingTranslationPrefix","_match","messageStrategy","fullScope","errorStrategy","fullScopeWithLocale","MissingTranslation","missingBehavior","__awaiter","thisArg","_arguments","generator","reject","fulfilled","step","rejected","apply","DEFAULT_I18N_OPTIONS","availableLocales","I18n","_locale","_defaultLocale","_version","onChangeHandlers","translate","localize","distanceOfTimeInWords","timeAgoInWords","store","hasChanged","newLocale","changed","translationOptions","defaults","createTranslationOptions","translation","translationOption","numberToCurrency","numberToPercentage","localizedValue","toTime","strftime","numberToHumanSize","smallerThanBase","numberToBeFormatted","log","computeExponent","billion","million","quadrillion","thousand","trillion","numberToRounded","numberToDelimited","delimiterPattern","global","digitToDelimiter","withLocale","originalLocale","AM_PM","getTime","weekDay","getDay","getDate","getFullYear","getMonth","getHours","hour12","secs","getSeconds","mins","getMinutes","getTimezoneOffset","absOffsetHours","absOffsetMinutes","timezoneoffset","padStart","override","strict","currentType","overrideType","newNode","toSentence","items","wordsConnector","twoWordsConnector","lastWordConnector","size","fromTime","fromInSeconds","toInSeconds","distanceInSeconds","distanceInMinutes","distanceInDays","distanceInHoursRounded","distanceInDaysRounded","distanceInMonthsRounded","includeSeconds","fromYear","toYear","minutesInYear","minutesWithOffset","distanceInYears","trunc","diff","parseFloat","onChange","runCallbacks","DataView","getNative","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","clear","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","setCacheAdd","setCacheHas","SetCache","__data__","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","Uint8Array","WeakMap","func","array","predicate","resIndex","baseIndexOf","comparator","baseTimes","isArguments","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","accumulator","initAccum","string","reAsciiWord","baseAssignValue","object","objValue","baseForOwn","baseEach","createBaseEach","fromIndex","fromRight","arrayPush","isFlattenable","baseFlatten","depth","isStrict","baseFor","createBaseFor","castPath","toKey","keysFunc","symbolsFunc","getRawTag","objectToString","symToStringTag","baseFindIndex","baseIsNaN","strictIndexOf","baseGetTag","isObjectLike","baseIsEqualDeep","baseIsEqual","other","bitmask","customizer","stack","equalArrays","equalByTag","equalObjects","getTag","argsTag","arrayTag","objectTag","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","source","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isFunction","isMasked","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","reIsNative","isLength","typedArrayTags","baseMatches","baseMatchesProperty","identity","isPrototype","nativeKeys","isArrayLike","collection","baseIsMatch","getMatchData","matchesStrictComparable","hasIn","isKey","isStrictComparable","arrayMap","baseGet","baseIteratee","baseMap","baseSortBy","baseUnary","compareMultiple","iteratees","orders","nativeCeil","nativeMax","nativeFloor","overRest","setToString","assignValue","lastIndex","nested","newValue","constant","baseSetToString","comparer","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","isCommon","seen","outer","computed","seenIndex","assignFunc","valsLength","cache","stringToPath","baseSlice","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","compareAscending","objCriteria","criteria","othCriteria","ordersLength","coreJsData","eachFunc","iterable","castSlice","hasUnicode","stringToArray","methodName","strSymbols","chr","trailing","arrayReduce","deburr","words","reApos","baseRange","isIterateeCall","toFinite","noop","deburrLetter","basePropertyOf","arraySome","isPartial","arrLength","othLength","arrStacked","othStacked","arrValue","othValue","compared","othIndex","mapToArray","symbolValueOf","byteLength","byteOffset","convert","stacked","getAllKeys","objProps","objLength","objStacked","skipCtor","objCtor","othCtor","freeGlobal","g","baseGetAllKeys","getSymbols","isKeyable","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","arrayFilter","stubArray","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","symbol","mapTag","promiseTag","setTag","weakMapTag","dataViewTag","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","ArrayBuffer","Ctor","ctorString","hasFunc","reHasUnicode","reHasUnicodeWord","nativeCreate","spreadableSymbol","isConcatSpreadable","reIsUint","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","exec","IE_PROTO","assocIndexOf","getMapData","memoize","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","types","require","binding","arg","otherArgs","freeSelf","self","root","shortOut","nativeNow","now","lastCalled","stamp","remaining","pairs","LARGE_ARRAY_SIZE","asciiToArray","unicodeToArray","memoizeCapped","rePropName","reEscapeChar","number","quote","subString","reWhitespace","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","rsDingbatRange","rsLowerRange","rsUpperRange","rsBreakRange","rsMathOpRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsModifier","rsEmoji","reUnicodeWord","capitalize","camelCase","createCompounder","word","upperFirst","reLatin","reComboMark","baseHas","hasPath","baseHasIn","baseIsArguments","stubFalse","Buffer","baseIsTypedArray","nodeIsTypedArray","arrayLikeKeys","baseKeys","resolver","TypeError","memoized","Cache","baseProperty","basePropertyDeep","range","createRange","baseRepeat","toInteger","guard","baseSet","baseOrderBy","baseRest","sortBy","INFINITY","remainder","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","isBinary","baseUniq","createCaseFirst","asciiWords","hasUnicodeWord","unicodeWords","pattern","baseZipObject","factory","globalThis","__webpack_modules__","__unused_webpack_module","VerbosityLevel","Util","UnknownErrorException","UnexpectedResponseException","TextRenderingMode","RenderingIntentFlag","PromiseCapability","PermissionFlag","PasswordResponses","PasswordException","PageActionEventType","OPS","MissingPDFException","MAX_IMAGE_SIZE_TO_CACHE","LINE_FACTOR","LINE_DESCENT_FACTOR","InvalidPDFException","ImageKind","IDENTITY_MATRIX","FormatError","FeatureTest","FONT_IDENTITY_MATRIX","DocumentActionEventType","CMapCompressionType","BaseException","BASELINE_FACTOR","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMode","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationEditorType","AnnotationEditorPrefix","AnnotationEditorParamsType","AnnotationBorderStyleType","AnnotationActionEventType","AbortException","assert","cond","msg","unreachable","bytesToString","bytes","MAX_ARGUMENT_COUNT","fromCharCode","strBuf","chunkEnd","chunk","subarray","createValidAbsoluteUrl","baseUrl","addDefaultProtocol","startsWith","dots","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","URL","_isValidProtocol","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getVerbosityLevel","verbosity","info","INFOS","console","isArrayBuffer","isArrayEqual","arr1","arr2","ii","normalizeUnicode","NormalizeRegex","NormalizationMap","replaceAll","_","normalize","objectFromMap","create","objectSize","setVerbosityLevel","level","shadow","string32","stringToBytes","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","warn","code","PDFStringTranslateTable","utf8StringToString","unescape","ANY","DISPLAY","PRINT","SAVE","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","NONE","FREETEXT","INK","FREETEXT_SIZE","FREETEXT_COLOR","FREETEXT_OPACITY","INK_COLOR","INK_THICKNESS","INK_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","WC","WS","DS","WP","DP","O","ERRORS","WARNINGS","BINARY","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotation","endAnnotation","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","NEED_PASSWORD","INCORRECT_PASSWORD","nonSerializable","writable","details","isLittleEndian","buffer8","isEvalSupported","isOffscreenCanvasSupported","OffscreenCanvas","platform","isWin","isMac","hexNumbers","static","minMax","m1","m2","applyTransform","p3","p4","transpose","first","sx","sy","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t1","t2","b2ac","sqrtb2ac","mt","jlen","decodeURIComponent","escape","promise","reason","settled","__w_pdfjs_require__","build","RenderTask","PDFWorkerUtil","PDFWorker","PDFPageProxy","PDFDocumentProxy","PDFDocumentLoadingTask","PDFDataRangeTransport","LoopbackPort","DefaultStandardFontDataFactory","DefaultFilterFactory","DefaultCanvasFactory","DefaultCMapReaderFactory","getDocument","_util","_annotation_storage","_display_utils","_font_loader","_canvas","_worker_options","_is_node","_message_handler","_metadata","_optional_content_config","_transport_stream","_xfa_text","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DOMCanvasFactory","DOMCMapReaderFactory","DOMFilterFactory","DOMStandardFontDataFactory","createPDFNetworkStream","isNodeJS","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","PDFNodeStream","PDFNetworkStream","PDFFetchStream","isValidFetchUrl","src","task","docId","getUrlProp","getDataProp","httpHeaders","password","rangeTransport","rangeChunkSize","worker","docBaseUrl","isDataScheme","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","disableRange","disableStream","disableAutoFetch","pdfBug","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","transportFactory","cMapReaderFactory","isCompressed","standardFontDataFactory","workerParams","port","GlobalWorkerOptions","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","styleElement","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","catch","_capability","sendWithPromise","deprecated","onPassword","onProgress","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","pdfInfo","_pdfInfo","annotationStorage","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","hasJSActions","getCalculationOrderIds","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","children","render","canvasContext","annotationMode","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","printAnnotationStorage","time","intentState","cacheKey","streamReaderCancelTimeout","clearTimeout","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","renderTasks","delete","internalRenderTask","capability","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListTask","opListReadCapability","streamTextContent","includeMarkedContent","disableNormalization","sendWithStream","highWaterMark","textContent","getTextContent","getXfa","xfa","XfaText","readableStream","reader","getReader","pump","getStructTree","_destroy","waitOn","force","completed","cancel","resetStats","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageMap","streamReader","RenderingCancelledException","delay","extraDelay","curCacheKey","curIntentState","stats","postMessage","transfer","structuredClone","terminate","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","pdfjsFilePath","currentScript","isSameOrigin","otherUrl","origin","createCDNWrapper","wrapper","createObjectURL","Blob","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","_mainThreadWorkerMessageHandler","workerSrc","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","fontLoader","FontLoader","_params","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cachedPromise","AnnotationStorage","isOpList","annotationMap","PrintAnnotationStorage","serializable","getHash","page","resetModified","terminated","cancelAllRequests","sink","getFullReader","onPull","close","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","inspectFont","FontInspector","font","fontAdded","FontFaceObject","bind","finally","imageData","pageProxy","bitmap","fetch","filename","gen","results","OptionalContentConfig","metadata","Metadata","objId","onContinue","canvas","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","_editor","_murmurhash","onSetModified","onResetModified","onAnnotationEditor","getRawValue","remove","AnnotationEditor","setValue","modified","_type","getAll","setAll","print","serialized","serialize","MurmurHash3_64","hexdigest","_tools","focusin","focusout","_uiManager","_zIndex","ColorManager","parameters","uiManager","rawDims","pageWidth","pageHeight","pageX","pageY","pageRotation","viewParameters","pageDimensions","pageTranslation","parentDimensions","isAttachedToDOM","_defaultLineColor","_colorManager","getHexCode","addCommands","currentLayer","setInBackground","zIndex","setInForeground","setParent","setSelected","relatedTarget","closest","isMultipleSelection","commitOrRemove","isEmpty","commit","addToAnnotationStorage","dragstart","startX","clientX","startY","clientY","dataTransfer","effectAllowed","setAt","tx","ty","screenToPageTranslation","parentRotation","parentScale","realScale","setDims","parentWidth","parentHeight","fixDims","widthPercent","endsWith","heightPercent","getInitialTranslation","className","bindEvents","pointerdown","shiftKey","toggleSelected","getRect","shiftX","shiftY","getRectInCurrentCoords","onceAdded","enableEditMode","disableEditMode","isInEditMode","shouldGetKeyboardEvents","needsToBeRebuilt","rebuild","editor","getNextId","select","classList","unselect","updateParams","disableEditing","enableEditing","propertiesToUpdate","contentDiv","isEditing","setActiveEditor","KeyboardManager","CommandManager","AnnotationEditorUIManager","names","opacityToHex","opacity","IdManager","getId","maxSize","cmd","undo","mustExec","overwriteIfSameType","keepUndo","redo","hasSomethingToUndo","hasSomethingToRedo","callbacks","allKeys","isMacKey","at","altKey","_colors","colors","getColorValues","color","rgb","getRGB","matchMedia","RGB","_colorsMapping","makeHexColor","cut","paste","keydown","onEditingAction","onPageChanging","onScaleChanging","onRotationChanging","hasSelectedEditor","selectAll","unselectAll","container","eventBus","_on","PixelsPerInch","PDF_TO_CSS_UNITS","_off","layer","focusMainContainer","focus","addShouldRescale","removeShouldRescale","pagesRotation","hasSelection","editors","clipboardData","newEditors","deserializedEditor","deserialize","getActive","_keyboardManager","dispatch","setEditingState","registerEditorTypes","editorType","defaultPropertiesToUpdate","currentPageIndex","addLayer","enable","disable","removeLayer","updateMode","updateToolbar","updateDefaultParams","getEditors","getEditor","addEditor","removeEditor","addOrRebuild","ed","isSelected","isActive","getMode","PDFDateString","DOMSVGFactory","AnnotationPrefix","span","visibility","computedColor","getCurrentTransform","ctx","getTransform","getCurrentTransformInverse","invertSelf","getFilenameFromUrl","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reFilename","splitURI","suggestedFilename","getXfaPageViewport","xfaPage","isPdfFile","removeScriptElement","onload","onerror","setLayerDimensions","mustFlip","mustRotate","widthStr","heightStr","_base_factory","SVG_NS","CSS","PDF","BaseFilterFactory","svg","createElementNS","feComponentTransfer","table","feFunc","addFilter","maps","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","addHCMFilter","fgColor","bgColor","fgRGB","getPropertyValue","bgRGB","feColorMatrix","getSteps","keepHCM","BaseCanvasFactory","_document","_createCanvas","fetchData","asTypedArray","ok","arrayBuffer","request","responseType","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","BaseSVGFactory","_createSVG","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","pdfDateStringRegex","colorRGB","started","outBuf","longest","padEnd","universalTimeRelation","offsetHour","offsetMinute","context","getContext","canvasAndContext","skipDimensions","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","loadedName","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","missingFile","systemFontInfo","loadSystemFont","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","otherRequest","_loadTestFont","testFont","atob","int32","spliceString","insert","called","XXXX_VALUE","checksum","btoa","fontFamily","isFontReady","fillText","getImageData","translatedData","compiledGlyphs","_inspectFont","cssFontInfo","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","versions","nw","electron","_pattern_helper","_image_utils","MAX_GROUP_SIZE","FULL_CHUNK_HEIGHT","CachedCanvases","getCanvas","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","setTransform","drawImage","hypot","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","scaleMinMax","updateCurvePathMinMax","box","bezierBoundingBox","getPathBoundingBox","pathType","PathType","singularValueDecompose2dScale","xStrokePad","yStrokePad","updateClipFromPath","intersect","isEmptyClip","Infinity","getClippedPathBoundingBox","putBinaryImageData","imgData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","destPos","srcPos","dest","thisChunkHeight","elemsInThisChunk","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","mask","srcByte","putBinaryImageMask","convertBlackAndWhiteToRGBA","nonBlackColor","copyCtxState","sourceCtx","destCtx","properties","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","composeSMask","smask","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","chunkSize","row","chunkHeight","genericComposeSMask","getImageSmoothingEnabled","fround","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","steps","fnId","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","hcmFilterId","foreground","savedFilter","_scaleImage","img","inverseTransform","tmpCanvas","tmpCtx","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","cord1","cord2","normalizeRect","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","inverse","getPattern","dashArray","dashPhase","flatness","states","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","angle","cp1x","cp1y","cp2x","cp2y","mirrorContextOperations","dirtyBox","old","ops","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","typeface","fallbackName","bold","italic","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","charWidth","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","spacingLength","charProcOperatorList","operatorListId","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","group","currentCtx","isolated","knockout","getAxialAlignedBoundingBox","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","savedCtx","compiled","POINT_TYPES","width1","j0","points","lineSize","pos","elem","Int32Array","Path2D","p0","pp","compileType3Glyph","skewX","skewY","positions","trans","images","image","w","h","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","visible","isVisible","isContentVisible","absDet","normX","normY","getScaleForStroking","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","RadialAxialShadingPattern","MeshShadingPattern","DummyShadingPattern","applyBoundingBox","region","BaseShadingPattern","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","_coords","_figures","_bounds","_background","_createMeshCanvas","combinedScale","backgroundColor","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","matrixScale","temporaryPatternCanvas","PaintType","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","MAX_PATTERN_SIZE","bboxWidth","bboxHeight","cssColor","convertToRGBA","len32","src32","s1","s2","s3","jj","convertRGBToRGBA","grayToRGBA","inverseDecode","zeroMapping","oneMapping","widthInSource","widthRemainder","CallbackKind","StreamKind","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","cbSourceName","cbTargetName","actionName","ah","transfers","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","allSettled","parsedData","rawData","getRaw","INTERNAL","OptionalContentGroup","_setVisible","internal","creator","groups","baseState","off","operator","expression","policy","ids","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","_begin","_progressiveDataLength","_loaded","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","output","walk","shouldBuildText","readFile","createCanvas","_network_utils","fs","http","https","fileUriRegex","sourceUrl","parsedUrl","parseUrl","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","handleResponse","statusCode","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","createResponseStatusError","contentDisposition","_content_disposition","getFilenameFromContentDispositionHeader","returnValues","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","contentDispositionStr","iter","quot","part","rfc2231getparam","attributePattern","flags","textdecode","quotindex","extvalue","encodingend","charset","hex","NetworkManager","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhrId","pendingRequest","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","getArrayBuffer","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStreamReader","PDFFetchStreamRangeReader","_reader","_withCredentials","_abortController","AbortController","_headers","TextLayerRenderTask","renderTextLayer","textContentSource","textContentStream","scaleFactor","_render","updateTextLayer","textDivs","textDivProperties","mustRescale","getCtx","prevFontSize","prevFontFamily","layout","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","appendText","geom","textDiv","hasText","hasEOL","_textDivs","_transform","atan2","fontName","fontHeight","fontAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","getAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dir","_fontInspectorEnabled","dataset","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","textContentItemsStr","_textContentSource","_textContentItemsStr","_canceled","_layoutTextParams","_processItems","styleCache","AnnotationEditorLayer","_freetext","_ink","pointerup","_initialized","FreeTextEditor","initialize","l10n","InkEditor","accessibilityManager","addInkEditorIfNeeded","disableClick","enableClick","toggle","hidden","isCommitting","pointerEvents","attach","detach","removePointerInTextLayer","activeElement","moveEditorInDOM","moveElementInDOM","addANewEditor","addUndoableEditor","annotationType","drop","dropEffect","endX","endY","dragover","editorDivBlur","editorDivFocus","editorDivInput","editorDivKeydown","_defaultColor","_defaultFontSize","_l10nPromise","_internalPadding","setFontsize","editorDiv","savedFontsize","savedColor","overlayDiv","contentEditable","draggable","preventScroll","innerText","divs","savedDisplay","trimEnd","dblclick","baseX","baseY","line","createTextNode","RESIZER_SIZE","canvasContextMenu","canvasPointermove","canvasPointerleave","canvasPointerup","canvasPointerdown","thickness","bezierPath2D","allRawPaths","currentPath","translationX","translationY","_defaultThickness","_defaultOpacity","savedThickness","savedOpacity","disconnect","setDimensions","lastX","lastY","path2D","lastPoint","bezier","xy","lastPoints","prevX","prevY","bezierPoints","control1","control2","ResizeObserver","contentRect","observe","roundedWidth","roundedHeight","scaleFactorW","scaleFactorH","p10","p11","p20","p21","p30","p31","p40","p41","q10","q11","q20","q21","ax","ay","bx","by","xMin","xMax","yMin","yMax","firstTime","prevTranslationX","prevTranslationY","unscaledPadding","minHeight","minWidth","AnnotationLayer","_scripting_utils","_xfa_layer","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_createContainer","quadrilaterals","_createQuadrilaterals","noRotate","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","setRotation","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","ColorConverters","userName","title","readonly","required","_setRequired","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","quadPoints","savedRect","quadPoint","_createPopup","trigger","popup","PopupElement","titleObj","modificationDate","contentsObj","richText","hideWrapper","_renderQuadrilaterals","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementsByName","isTooltipOnly","isBound","addLinkAttributes","newWindow","_bindNamedAction","attachment","_bindAttachment","setOCGState","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","executeSetOCGState","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","hasPopup","alt","l10nId","l10nArgs","alternativeText","showElementAndHideCanvas","previousSibling","_getKeyModifier","_setEventListener","baseName","eventName","valueGetter","_setEventListeners","getter","_setBackgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","computedFontSize","roundToOneDecimal","multiLine","lineHeight","textAlignment","textAlign","isRequired","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","charLimit","fieldFormattedValues","formattedValue","comb","elementData","userValue","lastCommittedValue","commitKey","doNotScroll","readOnly","tabIndex","maxLength","defaultFieldValue","blurListener","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","change","combWidth","letterSpacing","verticalAlign","checkbox","curChecked","buttonValue","radio","pdfButtonValue","lastChild","selectElement","addAnEmptyEntry","combo","multiSelect","multiple","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","isExport","selectedIndex","selectedValues","getItems","multipleSelection","findIndex","selectChild","before","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","parentElements","parentId","from","parentRect","popupLeft","popupTop","pinned","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","contents","_formatContents","XfaLayer","xfaHtml","_toggle","_show","_hide","lines","pin","unpin","lineSpan","lineCoordinates","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","file","_download","contentElement","firstChild","annotations","elementParams","noHTML","rendered","renderedElement","replaceWith","makeColorComp","G","components","CMYK_RGB","RGB_HTML","xfaOn","xfaOff","isHTMLAnchorElement","HTMLAnchorElement","dataId","setupStorage","rootHtml","setAttributes","rootDiv","childHtml","xmlns","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","convertImgDataToPng","PNG_HEADER","crcTable","writePngChunk","crc","crc32","deflateSyncUncompressed","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","deflateSync","pngLength","CHUNK_WRAPPER_SIZE","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","pf","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","prev","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","__webpack_module_cache__","moduleId","cachedModule","_annotation_editor_layer","_annotation_layer","_api","_svg","_text_layer","pdfjs","ownKeys","enumerableOnly","symbols","sym","getOwnPropertyDescriptor","_objectSpread2","_defineProperty","getOwnPropertyDescriptors","defineProperties","_typeof","iterator","_extends","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","getParentOrHost","includeCTX","_throttleTimeout","R_SPACE","toggleClass","currentStyle","selfOnly","appliedTransforms","matrixFn","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","tagName","getWindowScrollingElement","scrollingElement","relativeToContainingBlock","relativeToNonStaticParent","undoScale","elRect","innerHeight","innerWidth","containerRect","elMatrix","isScrolledPast","elSide","parentSide","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","includeDragEl","currentChild","Sortable","ghost","dragged","last","lastElementChild","previousElementSibling","getRelativeScrollOffset","winScroller","includeSelf","gotSelf","elemCSS","isRectEqual","throttle","ms","scrollBy","Polymer","Zepto","dom","AnimationStateManager","animationCallbackId","animationStates","captureAnimationState","animation","fromRect","thisAnimationDuration","childMatrix","addAnimationState","removeAnimationState","indexOfObject","animateAll","_this","animating","animationTime","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","calculateRealTime","animate","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","forRepaintDummy","repaint","easing","animated","plugins","initializeByDefault","PluginManager","mount","plugin","pluginName","pluginEvent","sortable","eventCanceled","eventNameGlobal","initializePlugins","initialized","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","rootEl","targetEl","cloneEl","toEl","fromEl","oldIndex","newIndex","oldDraggableIndex","newDraggableIndex","originalEvent","putSortable","extraEventProperties","onName","initEvent","to","pullMode","lastPutMode","allEventProperties","_excluded","dragEl","parentEl","ghostEl","nextEl","lastDownEl","cloneHidden","dragStarted","moved","activeSortable","active","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","supportCssPointerEvents","cssText","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","touchingSideChild2","_prepareGroup","toFn","sameGroup","otherGroup","originalGroup","checkPull","checkPut","put","revertClone","nearestEmptyInsertDetectEvent","touches","nearest","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","handle","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","dropBubble","dragoverBubble","dataIdAttr","delayOnTouchOnly","touchStartThreshold","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","_nextTick","_cancelNextTick","_getDirection","touch","pointerType","originalTarget","composedPath","idx","_saveInputCheckedState","_prepareDragStart","dragStartFn","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","_dragStarted","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","cssMatrix","_hideClone","cloneId","insertBefore","_loopId","setInterval","_dragStartId","revert","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","elLastChild","spacer","_ghostIsLast","_ghostIsFirst","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","handleEvent","_globalDragOver","useAnimation","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","scrollEl","scrollRootEl","touchEvt$1","autoScrolls","clearAutoScrolls","autoScroll","pid","isFallback","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","scrollOffsetY","scrollOffsetX","bubbleScroll","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","parentSortable","withSolid","rawProps","dispose","raw","createProps","comp","_$owner","lookupContext","sharedConfig","setHydrateContext","equalFn","$PROXY","$TRACK","signalOptions","equals","ERROR","runEffects","runQueue","STALE","PENDING","UNOWNED","owned","cleanups","NO_INIT","Owner","Transition","Scheduler","ExternalSourceFactory","Listener","Updates","Effects","ExecCount","transPending","setTransPending","createSignal","createRoot","detachedOwner","unowned","updateFn","untrack","cleanNode","runUpdates","observers","observerSlots","readSignal","sources","tValue","writeSignal","createComputed","createComputation","updateComputation","createRenderEffect","createEffect","runUserEffects","SuspenseContext","suspense","user","createMemo","tState","createResource","pSource","pFetcher","pOptions","fetcher","pr","initP","loadedUnderTransition","scheduled","resolved","dynamic","contexts","initialValue","setError","track","setState","ssrLoadFrom","loadEnd","onHydrated","queueMicrotask","promises","completeLoad","decrement","increment","refetching","castError","loading","latest","refetch","mutate","batch","onMount","onCleanup","getListener","getOwner","runWithOwner","o","prevListener","handleError","startTransition","effects","disposed","queue","createContext","Provider","createProvider","useContext","resolveChildren","runningTransition","updates","lookUpstream","sSlot","sourceSlots","isComp","TransitionRunning","pure","markDownstream","runComputation","nextValue","tOwned","updatedAt","ordinary","triggerInTransition","inTransition","runTop","inFallback","ancestors","wait","tasks","scheduleQueue","completeUpdates","userLength","obs","cause","runErrors","FALLBACK","hydrationEnabled","createComponent","Comp","trueFn","propTraps","receiver","deleteProperty","resolveSource","resolveSources","mergeProps","proxy","Proxy","sourcesMap","someNonTargetKey","getOwnPropertyNames","desc","narrowedError","For","mapFn","mapped","disposers","indexes","newItems","newIndices","newIndicesNext","tempdisposers","tempIndexes","newEnd","newLen","disposer","mapper","mapArray","each","Index","signals","indexArray","Show","keyed","condition","when","$RAW","$NODE","wrap$1","proxyTraps$1","isWrappable","proto","getPrototypeOf","unwrap","unwrapped","isFrozen","getDataNodes","nodes","getDataNode","createDataNode","trackSelf","Reflect","tracked","setProperty","deleting","mergeStoreNode","updatePath","traversed","partType","createStore","unwrappedStore","updateArray","Properties","ChildProperties","Aliases","htmlFor","PropAliases","class","formnovalidate","BUTTON","INPUT","ismap","IMG","nomodule","SCRIPT","playsinline","VIDEO","TEXTAREA","DelegatedEvents","SVGNamespace","xlink","$$EVENTS","template","isCE","isSVG","importNode","delegateEvents","eventNames","eventHandler","nodeStyle","removeProperty","spread","skipChildren","prevProps","insertExpression","skipRef","assignProp","use","accessor","marker","initial","toggleClassKey","classNames","nameLen","isProp","isChildProp","propAlias","forceProp","classKeys","prevKeys","classValue","handlerFn","getPropAlias","ns","namespace","removeAttributeNS","_$HY","cancelBubble","_$host","unwrapArray","cleaned","multi","cleanChildren","currentArray","normalizeIncomingArray","appendNodes","bLength","aEnd","bEnd","aStart","bStart","sequence","replaceChild","reconcileArrays","normalized","inserted","isParent","isServer","SVG_NAMESPACE","Portal","useShadow","hydrating","HTMLHeadElement","clean","setClean"],"sourceRoot":""}